diff --git a/MY_RUN/KTEST/007_16janvier/Makefile b/MY_RUN/KTEST/007_16janvier/Makefile index e90d525eea7a6dc6c523ffc55384ff77d011a06e..38bd2e48fe0cfe734d368d244abb2a650e8e3949 100644 --- a/MY_RUN/KTEST/007_16janvier/Makefile +++ b/MY_RUN/KTEST/007_16janvier/Makefile @@ -1,4 +1,4 @@ -all: E001_pgd1 E002_pgd2 E003_nest E004_arp2lfi E005_spa_mod1_mod2 E006_preal E008_run2 E009_diag E010_conv2dia E011_diaprog +all: E001_pgd1 E002_pgd2 E003_nest E004_arp2lfi E005_spa_mod1_mod2 E006_preal E008_run2 E009_diag E010_conv2dia E011_diaprog E012_spectre all_ncl_lfi2cdf: E001_pgd1 E002_pgd2 E003_nest E004_arp2lfi E005_spa_mod1_mod2 E006_preal E008_run2 E009_diag E010_conv2dia E011_ncl_lfi2cdf @@ -29,6 +29,8 @@ E011_ncl_lfi2cdf: cd 011_ncl_lfi2cdf && run_ncl E011_ncl_extractdia: cd 011_ncl_extractdia && run_ncl +E012_spectre: + cd 012_spectre && run_spectre_xyz clean: cd 001_pgd1 && clean_prep_pgd_xyz @@ -43,3 +45,4 @@ clean: cd 011_diaprog && clean_diaprog cd 011_ncl_lfi2cdf && clean_ncl cd 011_ncl_extractdia && clean_ncl + cd 012_spectre && clean_spectre_xyz diff --git a/MY_RUN/KTEST/009_ICARTT/006_ncl/run_ncl b/MY_RUN/KTEST/009_ICARTT/006_ncl/run_ncl index 4d36137d9a136a8aeff3fb66ee20bc420882656f..a6136d0f516bec2b168f99b1224a98a7a5457ea9 100755 --- a/MY_RUN/KTEST/009_ICARTT/006_ncl/run_ncl +++ b/MY_RUN/KTEST/009_ICARTT/006_ncl/run_ncl @@ -7,4 +7,4 @@ set -e rm -f *.ps ncl plot_ICARTT_SEG1.ncl -gv zsection_1000.ps +gs zsection_1000.ps diff --git a/src/LIB/RAD/ECMWF_RAD/parkind1.f90 b/src/LIB/RAD/ECMWF_RAD/parkind1.f90 index b63d2f7af17798e72def37273f35a7777240689c..6f01e32131d11eb0686492b07b9a3a9af75a33a6 100644 --- a/src/LIB/RAD/ECMWF_RAD/parkind1.f90 +++ b/src/LIB/RAD/ECMWF_RAD/parkind1.f90 @@ -7,6 +7,7 @@ MODULE PARKIND1 ! ! *** Define usual kinds for strong typing *** +! J.Escobar : 9/06/2015, for I*8 compilation force JPIM to default size ! IMPLICIT NONE SAVE @@ -16,7 +17,8 @@ SAVE ! INTEGER, PARAMETER :: JPIT = SELECTED_INT_KIND(2) INTEGER, PARAMETER :: JPIS = SELECTED_INT_KIND(4) -INTEGER, PARAMETER :: JPIM = SELECTED_INT_KIND(9) +INTEGER :: JINT_DEF +INTEGER, PARAMETER :: JPIM = KIND(JINT_DEF) ! SELECTED_INT_KIND(9) INTEGER, PARAMETER :: JPIB = SELECTED_INT_KIND(12) ! ! Real Kinds diff --git a/src/LIB/SURCOUCHE/src/fmread_ll.f90 b/src/LIB/SURCOUCHE/src/fmread_ll.f90 index 694e1012d6886c11a02034102a8c6cc07f1e6db6..5ef3a5715bea7bc1f3669308be733b75c42fe750 100644 --- a/src/LIB/SURCOUCHE/src/fmread_ll.f90 +++ b/src/LIB/SURCOUCHE/src/fmread_ll.f90 @@ -23,6 +23,7 @@ MODULE MODE_FMREAD !Correction : ! J.Escobar : 22/08/2005 : BUG : manque un "GOTO 1000" si champs ! lue non trouvé !!! +! J.Escobar : 13/01/2015 : remove comment on BCAST(IRESP in FMREADX2_ll ! USE MODD_MPIF #if defined(MNH_IOCDF4) diff --git a/src/LIB/SURCOUCHE/src/fmwrit_ll.f90 b/src/LIB/SURCOUCHE/src/fmwrit_ll.f90 index 89ae95aa086ebad9d1adae76e496204f3237d6ba..66ef116653496618d04511b08099562d0f947c4c 100644 --- a/src/LIB/SURCOUCHE/src/fmwrit_ll.f90 +++ b/src/LIB/SURCOUCHE/src/fmwrit_ll.f90 @@ -46,8 +46,12 @@ MODULE MODE_GA SUBROUTINE MNH_INIT_GA(MY_NI,MY_NJ,MY_NK,HRECFM,HRW_MODE) +! +! Modification +! J.Escobar 5/02/2015 : use JPHEXT from MODD_PARAMETERS_ll + USE MODE_TOOLS_ll, ONLY : GET_GLOBALDIMS_ll - USE MODD_PARAMETERS, ONLY : JPHEXT + USE MODD_PARAMETERS_ll, ONLY : JPHEXT USE MODD_IO_ll, ONLY : ISP USE MODE_GATHER_ll, ONLY : GET_DOMWRITE_ll USE MODE_SCATTER_ll, ONLY : GET_DOMREAD_ll diff --git a/src/LIB/SURCOUCHE/src/mode_util.f90 b/src/LIB/SURCOUCHE/src/mode_util.f90 index e0117482fa385b4716d0ba5db553da91bf700442..cedede681171c4aad09971cd61cfc8053ec10789 100644 --- a/src/LIB/SURCOUCHE/src/mode_util.f90 +++ b/src/LIB/SURCOUCHE/src/mode_util.f90 @@ -680,12 +680,16 @@ CONTAINS IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__) !!! Status for dim creation + CREATET = .TRUE. CREATEX = .TRUE. CREATEY = .TRUE. CREATEZ = .TRUE. CREATEXR = .TRUE. + CREATEZR = .TRUE. + CREATEN = .TRUE. CREATEDATE = .TRUE. CREATEWL = .TRUE. + CREATED = .TRUE. WRITETIME = .TRUE. NUMDIM = 0 first_var=hvnam diff --git a/src/MNH/advection_metsv.f90 b/src/MNH/advection_metsv.f90 index 353786513fe79451ae37c195282cf71f50744e33..852336654e96a3605b963bc023fd18ae2934c715 100644 --- a/src/MNH/advection_metsv.f90 +++ b/src/MNH/advection_metsv.f90 @@ -125,6 +125,7 @@ END MODULE MODI_ADVECTION_METSV !! 04/2014 (C.Lac) adaptation of time !! splitting for L1D and L2D !! 09/2014 (G.Delautier) close OUTPUT_LISTING before STOP +!! 04/2015 (J.Escoabar) remove/commente some NHALO=1 test !! !------------------------------------------------------------------------------- ! @@ -255,7 +256,7 @@ INTEGER :: ISPLIT_PPM ! temporal time splitting ! GTKE=(SIZE(PTKET)/=0) ! -!-----------------------------------------------------------n-------------------- +!------------------------------------------------------------------------------- ! !* 2. COMPUTES THE CONTRAVARIANT COMPONENTS (FOR PPM ONLY) ! -------------------------------------- @@ -415,7 +416,7 @@ END DO ! Exchanges on processors ! NULLIFY(TZFIELDS0_ll) -IF(NHALO == 1) THEN +!!$IF(NHALO == 1) THEN CALL ADD3DFIELD_ll(TZFIELDS0_ll, ZRTHS_OTHER) IF (GTKE) CALL ADD3DFIELD_ll(TZFIELDS0_ll, ZRTKES_OTHER) DO JR=1,KRR @@ -426,7 +427,7 @@ IF(NHALO == 1) THEN END DO CALL UPDATE_HALO_ll(TZFIELDS0_ll,IINFO_ll) CALL CLEANLIST_ll(TZFIELDS0_ll) -END IF +!!$END IF ! ! @@ -501,7 +502,7 @@ DO JSPL=1,KSPLIT ! Exchanges fields between processors ! NULLIFY(TZFIELDS1_ll) - IF(NHALO == 1) THEN +!!$ IF(NHALO == 1) THEN CALL ADD3DFIELD_ll(TZFIELDS1_ll, ZTH) IF (GTKE) CALL ADD3DFIELD_ll(TZFIELDS1_ll, ZTKE) DO JR=1,KRR @@ -512,7 +513,7 @@ DO JSPL=1,KSPLIT END DO CALL UPDATE_HALO_ll(TZFIELDS1_ll,IINFO_ll) CALL CLEANLIST_ll(TZFIELDS1_ll) - END IF +!!$ END IF ! END DO ! diff --git a/src/MNH/aircraft_balloon_evol.f90 b/src/MNH/aircraft_balloon_evol.f90 index 0b2aa625a31c3504f2b496a50a08e75b75364b16..e4c5267afb9e6a1a954e438c68b4289cca2877f4 100644 --- a/src/MNH/aircraft_balloon_evol.f90 +++ b/src/MNH/aircraft_balloon_evol.f90 @@ -128,6 +128,9 @@ END MODULE MODI_AIRCRAFT_BALLOON_EVOL !! Dec,15, 2008 (V. Masson) correct do while aircraft move !! March, 2013 (O.Caumont) add radar reflectivities !! April, 2014 (C.Lac) allow RARE calculation only if CCLOUD=ICE3 +!! May, 2014 (O.Caumont) modify RARE for hydrometeors containing ice +!! add bright band calculation for RARE +!! Feb, 2015 (C.Lac) Correction to prevent aircraft crash !! !! !! -------------------------------------------------------------------------- @@ -146,7 +149,7 @@ USE MODD_CONF USE MODD_DIAG_IN_RUN USE MODD_TURB_FLUX_AIRCRAFT_BALLOON USE MODD_RAIN_ICE_DESCR -USE MODE_FSCATTER,ONLY : QEPSW,QEPSI,BHMIE,MOMG +USE MODE_FSCATTER,ONLY : QEPSW,QEPSI,BHMIE,MOMG,MG USE MODE_FGAU, ONLY : GAULAG USE MODD_REF_n, ONLY : XRHODREF USE MODI_GAMMA, ONLY : GAMMA @@ -298,13 +301,15 @@ REAL, DIMENSION(SIZE(PR,1),SIZE(PR,2),SIZE(PR,3)) :: ZR REAL, DIMENSION(SIZE(PR,3),SIZE(PR,4)+1) :: ZRZ ! vertical profile of hydrometeor mixing ratios REAL :: ZA,ZB,ZCC,ZCX,ZALPHA,ZNU,ZLB,ZLBEX,ZRHOHYD ! generic microphysical parameters INTEGER :: JJ ! loop counter for quadrature -COMPLEX :: QMW,QMI,QM,QB ! dielectric parameter +COMPLEX :: QMW,QMI,QM,QB,QEPSIW,QEPSWI ! dielectric parameter REAL :: ZAETOT,ZAETMP,ZREFLOC,ZQSCA,ZQBACK,ZQEXT ! temporary scattering parameters REAL,DIMENSION(:),ALLOCATABLE :: ZAELOC,ZZMZ ! temporary arrays INTEGER :: JPTS_GAULAG=7 ! number of points for Gauss-Laguerre quadrature REAL :: ZLBDA ! slope distribution parameter REAL :: ZFRAC_ICE ! ice water fraction REAL :: ZDELTA_EQUIV ! mass-equivalent Gauss-Laguerre point +REAL :: ZFW ! liquid fraction +REAL :: ZFPW ! weight for mixed-phase reflectivity REAL,DIMENSION(:),ALLOCATABLE :: ZX,ZW ! Gauss-Laguerre points and weights REAL,DIMENSION(:),ALLOCATABLE :: ZRTMIN ! local values for XRTMIN !---------------------------------------------------------------------------- @@ -1003,6 +1008,7 @@ IF ( TPFLYER%FLY) THEN ZRTMIN(6)=XRTMIN(6) ZRTMIN(7)=XRTMIN(2) ! cloud water over land ! compute cloud radar reflectivity from vertical profiles of temperature and mixing ratios +! print *,"cest parti !!!" DO JK=1,IKU QMW=SQRT(QEPSW(ZTEMPZ(JK),XLIGHTSPEED/XLAM_CRAD)) QMI=SQRT(QEPSI(ZTEMPZ(JK),XLIGHTSPEED/XLAM_CRAD)) @@ -1018,10 +1024,8 @@ IF ( TPFLYER%FLY) THEN ZNU=XNUC2 ZLBEX=1.0/(ZCX-ZB) ZLB=( ZA*ZCC*MOMG(ZALPHA,ZNU,ZB) )**(-ZLBEX) - ZRHOHYD=XRHOLW - QM=QMW CASE(3) ! rain water - ZA=XAR + ZA=XAR ZB=XBR ZCC=XCCR ZCX=-1. @@ -1029,8 +1033,6 @@ IF ( TPFLYER%FLY) THEN ZNU=XNUR ZLB=XLBR ZLBEX=XLBEXR - ZRHOHYD=XRHOLW - QM=QMW CASE(4) ! pristine ice ZA=XAI ZB=XBI @@ -1040,8 +1042,7 @@ IF ( TPFLYER%FLY) THEN ZNU=XNUI ZLBEX=XLBEXI ZLB=XLBI*ZCC**(-ZLBEX) ! because ZCC not included in XLBI - ZRHOHYD=.92*XRHOLW - QM=QMI + ZFW=0 CASE(5) ! snow ZA=XAS ZB=XBS @@ -1051,14 +1052,16 @@ IF ( TPFLYER%FLY) THEN ZNU=XNUS ZLB=XLBS ZLBEX=XLBEXS - ZRHOHYD=.92*XRHOLW - QM=QMI + ZFW=0 CASE(6) ! graupel - IF(ZTEMPZ(JK) > XTT) THEN ! mixture of ice and water - ZFRAC_ICE = .85 - ELSE ! only ice - ZFRAC_ICE=1. - END IF + !If temperature between -10 and 10°C and Mr and Mg over min threshold: melting graupel + ! with liquid water fraction Fw=Mr/(Mr+Mg) else dry graupel (Fw=0) + IF( ZTEMPZ(JK) > XTT-10 .AND. ZTEMPZ(JK) < XTT+10 & + .AND. ZRZ(JK,3) > XRTMIN(3) ) THEN + ZFW=ZRZ(JK,3)/(ZRZ(JK,3)+ZRZ(JK,JLOOP)) + ELSE + ZFW=0 + ENDIF ZA=XAG ZB=XBG ZCC=XCCG @@ -1067,9 +1070,6 @@ IF ( TPFLYER%FLY) THEN ZNU=XNUG ZLB=XLBG ZLBEX=XLBEXG - ZRHOHYD=((1.-ZFRAC_ICE)+ZFRAC_ICE*0.92)*XRHOLW - QB=2.*QMW**2*(2.*QMI**2*LOG(QMI/QMW)/(QMI**2-QMW**2)-1.)/(QMI**2-QMW**2) - QM=SQRT(((1.-ZFRAC_ICE)*QMW**2+ZFRAC_ICE*QB*QMI**2)/(1.-ZFRAC_ICE+ZFRAC_ICE*QB)) ! Bohren & Battan (1982) CASE(7) ! cloud water over land ZA=XAC ZB=XBC @@ -1079,14 +1079,35 @@ IF ( TPFLYER%FLY) THEN ZNU=XNUC ZLBEX=1.0/(ZCX-ZB) ZLB=( ZA*ZCC*MOMG(ZALPHA,ZNU,ZB) )**(-ZLBEX) - ZRHOHYD=XRHOLW - QM=QMW END SELECT ZLBDA=ZLB*(ZRHODREFZ(JK)*ZRZ(JK,JLOOP))**ZLBEX ZREFLOC=0. ZAETMP=0. DO JJ=1,JPTS_GAULAG ! Gauss-Laguerre quadrature - ZDELTA_EQUIV=( 6.*ZA/XPI/ZRHOHYD * (ZX(JJ)**(1./ZALPHA)/ZLBDA)**ZB )**(1./3.) + ZDELTA_EQUIV=ZX(JJ)**(1./ZALPHA)/ZLBDA + SELECT CASE(JLOOP) + CASE(2,3,7) + QM=QMW + CASE(4,5,6) + ! pristine ice, snow, dry graupel + ZRHOHYD=MIN(6.*ZA*ZDELTA_EQUIV**(ZB-3.)/XPI,.92*XRHOLW) + QM=sqrt(MG(QMI**2,CMPLX(1,0),ZRHOHYD/.92/XRHOLW)) + + ! water inclusions in ice in air + QEPSWI=MG(QMW**2,QM**2,ZFW) + ! ice in air inclusions in water + QEPSIW=MG(QM**2,QMW**2,1.-ZFW) + + !MG weighted rule (Matrosov 2008) + IF(ZFW .LT. 0.37) THEN + ZFPW=0 + ELSE IF(ZFW .GT. 0.63) THEN + ZFPW=1 + ELSE + ZFPW=(ZFW-0.37)/(0.63-0.37) + ENDIF + QM=sqrt(QEPSWI*(1.-ZFPW)+QEPSIW*ZFPW) + END SELECT CALL BHMIE(XPI/XLAM_CRAD*ZDELTA_EQUIV,QM,ZQEXT,ZQSCA,ZQBACK) ZREFLOC=ZREFLOC+ZQBACK*ZX(JJ)**(ZNU-1)*ZDELTA_EQUIV**2*ZW(JJ) ZAETMP =ZAETMP +ZQEXT *ZX(JJ)**(ZNU-1)*ZDELTA_EQUIV**2*ZW(JJ) @@ -1124,8 +1145,8 @@ IF ( TPFLYER%FLY) THEN END DO ! zenith ZAETOT=1. - DO JK=COUNT(TPFLYER%Z_CUR >= ZZMZ(:))+1,IKU - IF(JK.EQ.COUNT(TPFLYER%Z_CUR >= ZZMZ(:))+1) THEN + DO JK = MAX(COUNT(TPFLYER%Z_CUR >= ZZMZ(:)),1)+1,IKU + IF ( JK .EQ. (MAX(COUNT(TPFLYER%Z_CUR >= ZZMZ(:)),1)+1) ) THEN IF(TPFLYER%Z_CUR>=ZZMZ(JK)-.5*(ZZMZ(JK)-ZZMZ(JK-1))) THEN ! only attenuation from ZAELOC(JK) ZAETOT=ZAETOT*EXP(-2.*(ZAELOC(JK)*(ZZMZ(JK)-TPFLYER%Z_CUR))) diff --git a/src/MNH/boundaries.f90 b/src/MNH/boundaries.f90 index 09452c27ab3d65a74783781c273c6845fcc62499..cf439c42f80bd8c82b6fdd946fa4fbc2c6f9d18b 100644 --- a/src/MNH/boundaries.f90 +++ b/src/MNH/boundaries.f90 @@ -167,6 +167,8 @@ END MODULE MODI_BOUNDARIES !! (fair weather profiles) !! Modification 07/2013 (Bosseur & Filippi) adds Forefire !! Modification 04/2013 (C.Lac) Remove instant M +!! Modification 01/2015 (JL Redelsperger) Introduction of ponderation +!! for non normal velocity and potential temp !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -252,6 +254,7 @@ INTEGER :: JRR ! Loop index for RR variables (water) INTEGER :: JSV ! Loop index for Scalar Variables INTEGER :: IMI ! Model Index REAL :: ZTSTEP ! effective time step +REAL :: ZPOND ! Coeff PONDERATION LS INTEGER :: ILBX,ILBY ! size of LB fields' arrays LOGICAL, SAVE, DIMENSION(:), ALLOCATABLE :: GCHBOUNDARY, GAERBOUNDARY,& GDSTBOUNDARY, GSLTBOUNDARY, GPPBOUNDARY, & @@ -431,6 +434,9 @@ END IF ! ! !------------------------------------------------------------------------------- +! PONDERATION COEFF for Non-Normal velocities and pot temperature +! +ZPOND = 0.2 ! !* 4. LBC FILLING IN THE X DIRECTION (LEFT WEST SIDE): ! ------------------------------------------------ @@ -472,9 +478,9 @@ SELECT CASE ( HLBCX(1) ) PTHT (IIB-1,:,:) = 2.*PTHT (IIB,:,:) -PTHT (IIB+1,:,:) ! ELSEWHERE ! INFLOW condition - PVT (IIB-1,:,:) = ZLBXVT (1,:,:) - PWT (IIB-1,:,:) = ZLBXWT (1,:,:) - PTHT (IIB-1,:,:) = ZLBXTHT (1,:,:) + PVT (IIB-1,:,:) = ZPOND*ZLBXVT (1,:,:) + (1.-ZPOND)* PVT(IIB,:,:) + PWT (IIB-1,:,:) = ZPOND*ZLBXWT (1,:,:) + (1.-ZPOND)* PWT(IIB,:,:) + PTHT (IIB-1,:,:) = ZPOND*ZLBXTHT (1,:,:) + (1.-ZPOND)* PTHT(IIB,:,:) ENDWHERE ENDIF ! @@ -562,9 +568,9 @@ SELECT CASE ( HLBCX(2) ) PTHT (IIE+1,:,:) = 2.*PTHT (IIE,:,:) -PTHT (IIE-1,:,:) ! ELSEWHERE ! INFLOW condition - PVT (IIE+1,:,:) = ZLBXVT (ILBX,:,:) - PWT (IIE+1,:,:) = ZLBXWT (ILBX,:,:) - PTHT (IIE+1,:,:) = ZLBXTHT (ILBX,:,:) + PVT (IIE+1,:,:) = ZPOND*ZLBXVT (ILBX,:,:) + (1.-ZPOND)* PVT(IIE,:,:) + PWT (IIE+1,:,:) = ZPOND*ZLBXWT (ILBX,:,:) + (1.-ZPOND)* PWT(IIE,:,:) + PTHT (IIE+1,:,:) = ZPOND*ZLBXTHT (ILBX,:,:) + (1.-ZPOND)* PTHT(IIE,:,:) ENDWHERE ENDIF ! @@ -652,9 +658,9 @@ SELECT CASE ( HLBCY(1) ) PWT (:,IJB-1,:) = 2.*PWT (:,IJB,:) -PWT (:,IJB+1,:) PTHT (:,IJB-1,:) = 2.*PTHT (:,IJB,:) -PTHT (:,IJB+1,:) ELSEWHERE ! INFLOW condition - PUT (:,IJB-1,:) = ZLBYUT (:,1,:) - PWT (:,IJB-1,:) = ZLBYWT (:,1,:) - PTHT (:,IJB-1,:) = ZLBYTHT (:,1,:) + PUT (:,IJB-1,:) = ZPOND*ZLBYUT (:,1,:) + (1.-ZPOND)* PUT(:,IJB,:) + PWT (:,IJB-1,:) = ZPOND*ZLBYWT (:,1,:) + (1.-ZPOND)* PWT(:,IJB,:) + PTHT (:,IJB-1,:) = ZPOND*ZLBYTHT (:,1,:) + (1.-ZPOND)* PTHT(:,IJB,:) ENDWHERE ENDIF ! @@ -742,9 +748,9 @@ SELECT CASE ( HLBCY(2) ) PWT (:,IJE+1,:) = 2.*PWT (:,IJE,:) -PWT (:,IJE-1,:) PTHT (:,IJE+1,:) = 2.*PTHT (:,IJE,:) -PTHT (:,IJE-1,:) ELSEWHERE ! INFLOW condition - PUT (:,IJE+1,:) = ZLBYUT (:,ILBY,:) - PWT (:,IJE+1,:) = ZLBYWT (:,ILBY,:) - PTHT (:,IJE+1,:) = ZLBYTHT (:,ILBY,:) + PUT (:,IJE+1,:) = ZPOND*ZLBYUT (:,ILBY,:) + (1.-ZPOND)* PUT(:,IJE,:) + PWT (:,IJE+1,:) = ZPOND*ZLBYWT (:,ILBY,:) + (1.-ZPOND)* PWT(:,IJE,:) + PTHT (:,IJE+1,:) = ZPOND*ZLBYTHT (:,ILBY,:) + (1.-ZPOND)* PTHT(:,IJE,:) ENDWHERE ENDIF ! diff --git a/src/MNH/calcsound.f90 b/src/MNH/calcsound.f90 index f0fbbe530f3eeae4ba8d98a34a130e516fbe987a..a0b1c5fa1e0deb61f7723d6ac1fba400a2b49707 100644 --- a/src/MNH/calcsound.f90 +++ b/src/MNH/calcsound.f90 @@ -64,6 +64,7 @@ END MODULE MODI_CALCSOUND !! ------------- !! Original from K. Emanuel !! J. Stein Jan. 2001 optimisation by splitting arrays in 1000 columns +!! C.Lac May 2015 correction in downdraft loop !! !------------------------------------------------------------------------------- ! @@ -459,14 +460,18 @@ DO JKLOOP=1,KKU ! loop 2 on vertical levels ! downdraft temperature ! DO K=1,NBITER - ZCPW=ZSUM2+XCL*0.5*(ZRGD0+ZRG)*(LOG(ZTG)-LOG(ZTGD0)) - ZEM=ZRG*PP(:,J)/(ZEPS+ZRG) - ZALV=XLVTT-ZCPVMCL*(ZTG-XTT) - ZSPG=XCPD*LOG(ZTG)-XRD*LOG(PP(:,J)-ZEM)+ZCPW+ZALV*ZRG/ZTG - ZTG=ZTG+(ZSPD-ZSPG)/ZSLP - ZTC=ZTG-XTT - ZENEW=6.112*EXP(17.67*ZTC/(243.5+ZTC)) - ZRG=ZEPS*ZENEW/(PP(:,J)-ZENEW) + DO JH=1,KIU + ZEM(JH)=ZRG(JH)*PP(JH,J)/(ZEPS+ZRG(JH)) + IF (PP(JH,J) >= ZEM(JH)) THEN + ZCPW(JH)=ZSUM2(JH)+XCL*0.5*(ZRGD0(JH)+ZRG(JH))*(LOG(ZTG(JH))-LOG(ZTGD0(JH))) + ZALV(JH)=XLVTT-ZCPVMCL*(ZTG(JH)-XTT) + ZSPG(JH)=XCPD*LOG(ZTG(JH))-XRD*LOG(PP(JH,J)-ZEM(JH))+ZCPW(JH)+ZALV(JH)*ZRG(JH)/ZTG(JH) + ZTG(JH)=ZTG(JH)+(ZSPD(JH)-ZSPG(JH))/ZSLP(JH) + ZTC(JH)=ZTG(JH)-XTT + ZENEW(JH)=6.112*EXP(17.67*ZTC(JH)/(243.5+ZTC(JH))) + ZRG(JH)=ZEPS*ZENEW(JH)/(PP(JH,J)-ZENEW(JH)) + END IF + END DO END DO ZSUM2=ZCPW ZTGD0=ZTG diff --git a/src/MNH/drag_veg.f90 b/src/MNH/drag_veg.f90 index 699d552cc68e755865fdaaa07e0706bb9e58fa19..7de0e669b42b0621c9925284045ae9eb07a32b8e 100644 --- a/src/MNH/drag_veg.f90 +++ b/src/MNH/drag_veg.f90 @@ -1,3 +1,4 @@ + !MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt diff --git a/src/MNH/gravity.f90 b/src/MNH/gravity.f90 index 90c6c3c24d6c394cef77af7c05cd2a37840f9b47..91ec276c61ae0e2b3b4d5641c65d4c5538a22415 100644 --- a/src/MNH/gravity.f90 +++ b/src/MNH/gravity.f90 @@ -104,18 +104,17 @@ END MODULE MODI_GRAVITY !! MODIFICATIONS !! ------------- !! C.Lac - March 2011 - Splitted from dyn_sources +!! Q.Rodier 06/15 correction on budget !! !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS ! ------------ ! -USE MODD_BUDGET USE MODD_CONF USE MODD_CST ! USE MODI_SHUMAN -USE MODI_BUDGET ! IMPLICIT NONE ! @@ -179,7 +178,6 @@ IF( .NOT.L1D ) THEN ! no buoyancy for 1D case ! the extrapolation for the PTHT and the THVREF must be the same at the ! ground ! - IF (LBUDGET_W) CALL BUDGET (PRWS,3,'GRAV_BU_RW') ! END IF ! diff --git a/src/MNH/gravity_impl.f90 b/src/MNH/gravity_impl.f90 index f42d6009cf9994b7978cf922aa887c195c491d82..19241d0225ea7d594d311bc7f66b5cf24377a9f9 100644 --- a/src/MNH/gravity_impl.f90 +++ b/src/MNH/gravity_impl.f90 @@ -70,6 +70,7 @@ END MODULE MODI_GRAVITY_IMPL !! MODIFICATIONS !! ------------- !! Original 04/2011 +!! Q.Rodier 06/15 correction on budget !! !------------------------------------------------------------------------------- ! @@ -78,6 +79,8 @@ END MODULE MODI_GRAVITY_IMPL ! USE MODI_GRAVITY USE MODI_ADV_BOUNDARIES +USE MODD_BUDGET +USE MODI_BUDGET ! !------------------------------------------------------------------------------- ! @@ -144,6 +147,7 @@ CALL GRAVITY ( KRR,KRRL, KRRI, ZTH, ZR, PRHODJ, PTHVREF, ZRWS_GRAV(:,:,:) ) ! PRWS(:,:,:) = PRWS(:,:,:) + ZRWS_GRAV(:,:,:) ! +IF (LBUDGET_W) CALL BUDGET (PRWS,3,'GRAV_BU_RW') ! !------------------------------------------------------------------------------- ! diff --git a/src/MNH/ini_budget.f90 b/src/MNH/ini_budget.f90 index d2bb126e6b770f8f91d87d718519c0dad48e43d2..03556cc07bf082db8ece49462b38694f3e64fbdd 100644 --- a/src/MNH/ini_budget.f90 +++ b/src/MNH/ini_budget.f90 @@ -150,6 +150,7 @@ END MODULE MODI_INI_BUDGET !! P. Peyrille, M. Tomasini : include in the forcing term the 2D forcing !! terms in term 2DFRC search for modif PP . but Not very clean! !! C .Lac 27/05/14 add negative corrections for chemical species +!! C.Lac 29/01/15 Correction for NSV_USER !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -2147,22 +2148,22 @@ USE MODD_NSV, ONLY : NSV_USER, NSV_C2R2BEG, NSV_C2R2END, & ! IF (JSV <= NSV_USER) THEN ! NSV_USER Case - SELECT CASE(JSV) - CASE (1) - ILAST_PROC_NBR = ILAST_PROC_NBR + 1 - YWORK2(12+JSV,ILAST_PROC_NBR)= 'PROC1_' - IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 - ILAST_PROC_NBR = ILAST_PROC_NBR + 1 - YWORK2(12+JSV,ILAST_PROC_NBR)= 'PROC2_' - IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 - CASE (2) - ILAST_PROC_NBR = ILAST_PROC_NBR + 1 - YWORK2(12+JSV,ILAST_PROC_NBR)= 'PROC3_' - IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 - ILAST_PROC_NBR = ILAST_PROC_NBR + 1 - YWORK2(12+JSV,ILAST_PROC_NBR)= 'PROC4_' - IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 - END SELECT +! SELECT CASE(JSV) +! CASE (1) +! ILAST_PROC_NBR = ILAST_PROC_NBR + 1 +! YWORK2(12+JSV,ILAST_PROC_NBR)= 'PROC1_' +! IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 +! ILAST_PROC_NBR = ILAST_PROC_NBR + 1 +! YWORK2(12+JSV,ILAST_PROC_NBR)= 'PROC2_' +! IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 +! CASE (2) +! ILAST_PROC_NBR = ILAST_PROC_NBR + 1 +! YWORK2(12+JSV,ILAST_PROC_NBR)= 'PROC3_' +! IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 +! ILAST_PROC_NBR = ILAST_PROC_NBR + 1 +! YWORK2(12+JSV,ILAST_PROC_NBR)= 'PROC4_' +! IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 +! END SELECT ! ELSEIF (JSV >= NSV_C2R2BEG .AND. JSV <= NSV_C2R2END) THEN ! C2R2 or KHKO Case diff --git a/src/MNH/ini_modeln.f90 b/src/MNH/ini_modeln.f90 index c812e67495aea72a52cfa348fc5253a33e47162e..edf141e0372fb8a12eb2577646f0281be93e5dc7 100644 --- a/src/MNH/ini_modeln.f90 +++ b/src/MNH/ini_modeln.f90 @@ -1,3 +1,4 @@ + !MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt @@ -259,6 +260,8 @@ END MODULE MODI_INI_MODEL_n !! + Mean fields !! July 2013 (Bosseur & Filippi) Adds Forefire !! P. Tulet Nov 2014 accumulated moles of aqueous species that fall at the surface +!! JAn. 2015 (F. Brosse) bug in allocate XACPRAQ +!! Dec 2014 (C.Lac) : For reproducibility START/RESTA !--------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -661,12 +664,20 @@ IF (LMEAN_FIELD) THEN END IF ! IF (CUVW_ADV_SCHEME(1:3)=='CEN') THEN - ALLOCATE(XUM(IIU,IJU,IKU)) ; XUM = 0.0 - ALLOCATE(XVM(IIU,IJU,IKU)) ; XVM = 0.0 - ALLOCATE(XWM(IIU,IJU,IKU)) ; XWM = 0.0 - ALLOCATE(XDUM(IIU,IJU,IKU)) ; XDUM = 0.0 - ALLOCATE(XDVM(IIU,IJU,IKU)) ; XDVM = 0.0 - ALLOCATE(XDWM(IIU,IJU,IKU)) ; XDWM = 0.0 + ALLOCATE(XUM(IIU,IJU,IKU)) + ALLOCATE(XVM(IIU,IJU,IKU)) + ALLOCATE(XWM(IIU,IJU,IKU)) + ALLOCATE(XDUM(IIU,IJU,IKU)) + ALLOCATE(XDVM(IIU,IJU,IKU)) + ALLOCATE(XDWM(IIU,IJU,IKU)) + IF (CCONF == 'START') THEN + XUM = 0.0 + XVM = 0.0 + XWM = 0.0 + XDUM = 0.0 + XDVM = 0.0 + XDWM = 0.0 + END IF END IF ! ALLOCATE(XUT(IIU,IJU,IKU)) ; XUT = 0.0 @@ -1410,11 +1421,12 @@ ENDIF ! !* 3.13 Module MODD_CH_PH_n ! -IF ( (LUSECHAQ.AND.LCH_PH) .AND. & - (CPROGRAM == 'DIAG '.OR.CPROGRAM == 'MESONH')) THEN - ALLOCATE(XPHC(IIU,IJU,IKU)) - IF (NRRL==2) THEN - ALLOCATE(XPHR(IIU,IJU,IKU)) +IF (LUSECHAQ.AND.(CPROGRAM == 'DIAG '.OR.CPROGRAM == 'MESONH')) THEN + IF (LCH_PH) THEN + ALLOCATE(XPHC(IIU,IJU,IKU)) + IF (NRRL==2) THEN + ALLOCATE(XPHR(IIU,IJU,IKU)) + ENDIF ENDIF ALLOCATE(XACPRAQ(IIU,IJU,NSV_CHAC/2)) XACPRAQ(:,:,:) = 0. @@ -1509,8 +1521,9 @@ CALL READ_FIELD(HINIFILE,HLUOUT,IMASDEV, IIU,IJU,IKU,XTSTEP, & NSIZELBX_ll,NSIZELBXU_ll,NSIZELBY_ll,NSIZELBYV_ll, & NSIZELBXTKE_ll,NSIZELBYTKE_ll, & NSIZELBXR_ll,NSIZELBYR_ll,NSIZELBXSV_ll,NSIZELBYSV_ll, & - XUM,XVM,XWM, & - XUT,XVT,XWT,XTHT,XPABST,XPABSM,XTKET,XRT,XSVT,XCIT,XDRYMASST, & + XUM,XVM,XWM,XDUM,XDVM,XDWM, & + XUT,XVT,XWT,XTHT,XPABST,XPABSM,XTKET,XRTKEMS, & + XRT,XSVT,XCIT,XDRYMASST, & XSIGS,XSRCT,XCLDFR,XBL_DEPTH,XSBL_DEPTH,XWTHVMF,XPHC,XPHR, & XLSUM,XLSVM,XLSWM,XLSTHM,XLSRVM, & XLBXUM,XLBXVM,XLBXWM,XLBXTHM,XLBXTKEM, & diff --git a/src/MNH/ini_prog_var.f90 b/src/MNH/ini_prog_var.f90 index b4b4752dcd87936a6e4e7411549f8ec0f36f0d38..7733f166ec10cdb028fc96abed55c88e33659dca 100644 --- a/src/MNH/ini_prog_var.f90 +++ b/src/MNH/ini_prog_var.f90 @@ -1,475 +1,475 @@ -!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier -!MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence -!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt -!MNH_LIC for details. version 1. -!----------------------------------------------------------------- -!--------------- special set of characters for RCS information -!----------------------------------------------------------------- -! $Source$ $Revision$ -! MASDEV4_7 prep_real 2006/09/25 14:23:42 -!----------------------------------------------------------------- -! ######################## - MODULE MODI_INI_PROG_VAR -! ######################## -INTERFACE - SUBROUTINE INI_PROG_VAR(HLUOUT,PTKE_MX,PSV_MX,HCHEMFILE) -! -CHARACTER(LEN=*), INTENT(IN) :: HLUOUT ! Name of the output-listing -REAL, DIMENSION(:,:,:), INTENT(IN) :: PTKE_MX -REAL, DIMENSION(:,:,:,:), INTENT(IN) :: PSV_MX -CHARACTER(LEN=*), INTENT(IN), OPTIONAL :: HCHEMFILE ! Name of the chem file -END SUBROUTINE INI_PROG_VAR -END INTERFACE -END MODULE MODI_INI_PROG_VAR -! -! ######################################################## - SUBROUTINE INI_PROG_VAR(HLUOUT,PTKE_MX,PSV_MX,HCHEMFILE) -! ######################################################## -! -!!**** *INI_PROG_VAR* - initialization the prognostic variables not yet -!! initialized -!! -!! PURPOSE -!! ------- -!! -!! This routine initializes the scalar variables to zero. -!! This routine duplicates the values of a variable at t in MODD_FIELD1 -!! or MODD_LSFIELD1 in the variables at t. -!! -!!** METHOD -!! ------ -!! -!! EXTERNAL -!! -------- -!! -!! Routine PGDFILTER : to filter a 2D field. -!! Module MODI_PGDFILTER -!! -!! IMPLICIT ARGUMENTS -!! ------------------ -!! -!! Module MODD_CONF : contains configuration variables for all models. -!! NVERB : verbosity level for output-listing -!! Module MODD_LUNIT : contains logical unit names for all models -!! CLUOUT0 : name of output-listing -!! Module MODD_FIELD1 : contains the prognostic fields of model1 -!! XUM -!! XVM -!! XWM -!! XTHM -!! XRM -!! Module MODD_LSFIELD1 -!! XLSUM -!! XLSVM -!! XLSWM -!! XLSTHM -!! XLSRVM -!! Module MODD_DYN1 -!! NRIMX,NRIMY -!! -!! REFERENCE -!! --------- -!! -!! Book 2 -!! -!! AUTHOR -!! ------ -!! -!! V.Masson Meteo-France -!! -!! MODIFICATIONS -!! ------------- -!! Original 21/12/94 -!! 14/05/96 (V. Masson) filtering of LS fields -!! 08/01/97 (V. Masson) no filtering for boundaries on XLSWM -!! 10/07/97 (V. Masson) add tke and epsilon -!! 11/07/97 (V. Masson) add scalar variables -!! 20/01/98 (J. Stein ) add the lB fields + remove the 2Dx filter -!! 20/08/90 (J. Stein and P. Jabouille) add the SIZE of the LB -!! fields -!! 01/02/01 (D. Gazen) add module MODD_NSV for NSV variable -!! May 2006 Remove KEPS -!! 02/11/09 (M. Leriche) add aqueous phase chemistry -!! Oct 2010 (P. Tulet) input of chemical gas, dusts -!! and sea salts concentration from -!! another MesoNH simulation -!! Aug 2012 (J.-P. Chaboureau) read the chem-file descriptor -!------------------------------------------------------------------------------- -! -!* 0. DECLARATIONS -! ------------ -! -! -USE MODD_CONF ! declaration modules -USE MODD_CONF_n -USE MODD_DYN_n -USE MODD_TURB_n -USE MODD_PARAM_n -USE MODD_LUNIT -USE MODD_FIELD_n -USE MODD_LSFIELD_n -USE MODD_PARAMETERS -USE MODD_NSV -USE MODD_CH_M9_n, ONLY : NEQ, CNAMES -USE MODD_CH_MNHC_n, ONLY : LUSECHEM, LUSECHAQ, LUSECHIC, LCH_PH -USE MODD_CH_AEROSOL -USE MODD_DUST -USE MODD_SALT -! -USE MODN_DUST -USE MODN_SALT -! -USE MODI_PGDFILTER -USE MODI_CH_INIT_SCHEME_n -USE MODI_CH_AER_INIT_SOA -! -USE MODE_POS -USE MODE_FM -USE MODE_IO_ll -USE MODE_FMREAD -USE MODD_DIM_n -! -IMPLICIT NONE -! -!* 0.1 declaration of arguments -! -CHARACTER(LEN=*), INTENT(IN) :: HLUOUT ! Name of the output-listing -REAL, DIMENSION(:,:,:), INTENT(IN) :: PTKE_MX -REAL, DIMENSION(:,:,:,:), INTENT(IN) :: PSV_MX -CHARACTER(LEN=*), INTENT(IN), OPTIONAL :: HCHEMFILE ! Name of the chem file -! -!* 0.2 declaration of local variables -! -INTEGER :: ILUOUT ! Logical unit number - ! associated with HLUOUT -INTEGER :: IGRID,ILENCH,IRESP,ININAR ! File -CHARACTER (LEN=16) :: YRECFM ! management -CHARACTER (LEN=100) :: YCOMMENT ! variables -CHARACTER(LEN=2) :: YDIR -CHARACTER(LEN=32) :: YDESFM -! -INTEGER :: IIMAX,IJMAX,IKMAX ! Dimensions of the chem file -INTEGER :: IMI ! model number -INTEGER :: IIB,IIE,IIU -INTEGER :: IJB,IJE,IJU -INTEGER :: IIU_ll, IJU_ll -INTEGER :: IKU -INTEGER :: ILBX,ILBY -INTEGER :: JSV ! Loop index -INTEGER :: JMOM, IMOMENTS, JMODE, ISV_NAME_IDX ! dust modes -INTEGER :: ILUDES ! logical unit numbers of DESFM file -LOGICAL :: GFOUND ! Return code when searching namelist -!------------------------------------------------------------------------------- -! -CALL GET_MODEL_NUMBER_ll(IMI) -CALL FMLOOK_ll(HLUOUT,HLUOUT,ILUOUT,IRESP) -! -IIB=JPHEXT+1 -IIE=SIZE(XWT,1)-JPHEXT -IIU=SIZE(XWT,1) -IJB=JPHEXT+1 -IJE=SIZE(XWT,2)-JPHEXT -IJU=SIZE(XWT,2) -IKU=SIZE(XWT,3) -IIU_ll=NIMAX_ll + 2 * JPHEXT -IJU_ll=NJMAX_ll + 2 * JPHEXT -!------------------------------------------------------------------------------- -! -!* 1. TURBULENCE FIELDS -! ----------------- -! -ALLOCATE(XTKET(0,0,0)) -ALLOCATE(XSRCT(0,0,0)) -IF (CTURB=='TKEL' ) THEN - ALLOCATE(XTKET(IIU,IJU,IKU)) - XTKET(:,:,:)=PTKE_MX(:,:,:) - IF (NRR>1) THEN - ALLOCATE(XSRCT(IIU,IJU,IKU)) - ALLOCATE(XSIGS(IIU,IJU,IKU)) - WHERE (XRT(:,:,:,2)>1.E-10) - XSRCT(:,:,:)=1. - ELSEWHERE - XSRCT(:,:,:)=0. - END WHERE - XSIGS(:,:,:)=0. - ELSE - ALLOCATE(XSRCT(0,0,0)) - ALLOCATE(XSIGS(0,0,0)) - END IF -ELSE - ALLOCATE(XTKET(0,0,0)) - ALLOCATE(XSRCT(0,0,0)) - ALLOCATE(XSIGS(0,0,0)) -END IF -! -! -!------------------------------------------------------------------------------- -! -!* 3. PASSIVE SCALAR -! -------------- -! -ALLOCATE(XSVT(0,0,0,0)) -IF(PRESENT(HCHEMFILE)) THEN - WRITE(ILUOUT,*) 'Routine INI_PROG_VAR: CHEMical species read in ',TRIM(HCHEMFILE) - - IF (.NOT.LDUST) THEN - ! Always initialize chemical scheme variables before INI_NSV call ! - CALL CH_INIT_SCHEME_n(IMI,LUSECHAQ,LUSECHIC,LCH_PH,ILUOUT,NVERB) -! Question CL : Maud a supprime l appel a CH_INIT_CCS ? - LUSECHEM = .TRUE. - END IF - IF (LORILAM) THEN - CORGANIC = "MPMPO" - LVARSIGI = .TRUE. - LVARSIGJ = .TRUE. - CALL CH_AER_INIT_SOA(ILUOUT,NVERB) - END IF ! lorilam - ! initialise NSV_* variables - CALL INI_NSV(1) - ALLOCATE(XSVT(IIU,IJU,IKU,NSV)) - ! Read dimensions in chem file and checks with output file - CALL FMOPEN_ll(HCHEMFILE,'READ',HLUOUT,0,2,NVERB,ININAR,IRESP) - YRECFM='IMAX' - YDIR='--' - CALL FMREAD(HCHEMFILE,YRECFM,HLUOUT,YDIR,IIMAX,IGRID,ILENCH, & - YCOMMENT,IRESP) - IF (IRESP/=0) THEN - WRITE(ILUOUT,FMT=9000) - WRITE(ILUOUT,*) TRIM(YRECFM),' NOT FOUND IN THE CHEM FILE ',HCHEMFILE - !callabortstop - CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP) - CALL ABORT - STOP - END IF !IRESP - YRECFM='JMAX' - YDIR='--' - CALL FMREAD(HCHEMFILE,YRECFM,HLUOUT,YDIR,IJMAX,IGRID,ILENCH, & - YCOMMENT,IRESP) - IF (IRESP/=0) THEN - WRITE(ILUOUT,FMT=9000) - WRITE(ILUOUT,*) TRIM(YRECFM),'NOT FOUND IN THE CHEM FILE ',HCHEMFILE -!callabortstop - CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP) - CALL ABORT - STOP - END IF !IRESP - YRECFM='KMAX' - YDIR='--' - CALL FMREAD(HCHEMFILE,YRECFM,HLUOUT,YDIR,IKMAX,IGRID,ILENCH, & - YCOMMENT,IRESP) - IF (IRESP/=0) THEN - WRITE(ILUOUT,FMT=9000) - WRITE(ILUOUT,*) TRIM(YRECFM),'NOT FOUND IN THE CHEM FILE ',HCHEMFILE -!callabortstop - CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP) - CALL ABORT - STOP - END IF !IRESP - IF ( (IIMAX/=(IIU_ll-2*JPHEXT)) .OR. (IJMAX/=(IJU_ll-2*JPHEXT)) & - .OR. (IKMAX/=(IKU-2*JPVEXT)) ) THEN - WRITE(ILUOUT,FMT=9000) - WRITE(ILUOUT,*) 'THE GRIDS ARE DIFFERENT IN THE OUTPUT FILE :' - WRITE(ILUOUT,*) IIU_ll-2*JPHEXT,'*',IJU_ll-2*JPHEXT,'*',IKU-2*JPVEXT - WRITE(ILUOUT,*) 'AND IN THE CHEM FILE :',HCHEMFILE - WRITE(ILUOUT,*) IIMAX,'*',IJMAX,'*',IKMAX - !callabortstop - CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP) - CALL ABORT - STOP - END IF ! IIMAX - IF (.NOT.LDUST) THEN - ! Read scalars in chem file - DO JSV = NSV_CHEMBEG,NSV_CHEMEND - YRECFM=TRIM(CNAMES(JSV-NSV_CHEMBEG+1))//'T' - YDIR='XY' - CALL FMREAD(HCHEMFILE,YRECFM,HLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH, & - YCOMMENT,IRESP) - IF (IRESP/=0) THEN - WRITE(ILUOUT,*) TRIM(YRECFM),'NOT FOUND IN THE CHEM FILE ',HCHEMFILE - XSVT(:,:,:,JSV) = 0. - END IF !IRESP - END DO ! JSV - IF (ALL(XSVT(:,:,:,NSV_CHEMBEG:NSV_CHEMEND) == 0.)) THEN - LUSECHEM=.FALSE. - NEQ = 0 - END IF - END IF - - IF (LDUST) THEN - LDSTINIT=.TRUE. - LDSTPRES=.FALSE. - YDESFM=TRIM(ADJUSTL(HCHEMFILE))//'.des' - CALL FMLOOK_ll(YDESFM,HLUOUT,ILUDES,IRESP) - CALL POSNAM(ILUDES,'NAM_DUST',GFOUND,ILUOUT) - IF (GFOUND) READ(UNIT=ILUDES,NML=NAM_DUST) - CALL INI_NSV(1) - IMOMENTS = INT(NSV_DSTEND - NSV_DSTBEG+1)/NMODE_DST - IF (IMOMENTS == 1) THEN - DO JMODE=1, NMODE_DST - !Index from which names are picked - ISV_NAME_IDX = (JPDUSTORDER(JMODE) - 1)*3 + 2 - JSV = (JMODE-1)*IMOMENTS & !Number of moments previously counted - + 1 & !Number of moments in this mode - + (NSV_DSTBEG -1) !Previous list of tracers - YRECFM = TRIM(YPDUST_INI(ISV_NAME_IDX))//'M' - YDIR='XY' - CALL FMREAD(HCHEMFILE,YRECFM,HLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH, & - YCOMMENT,IRESP) - IF (IRESP/=0) THEN - WRITE(ILUOUT,FMT=9000) - WRITE(ILUOUT,*) TRIM(YRECFM),'NOT FOUND IN THE CHEM FILE ',HCHEMFILE - CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP) - CALL ABORT - STOP - END IF !IRESP - END DO !JMOD - ELSE ! IMOMENTS diff 1 - DO JMODE=1,NMODE_DST - DO JMOM=1,IMOMENTS - ISV_NAME_IDX = (JPDUSTORDER(JMODE) - 1)*3 + JMOM - JSV = (JMODE-1)*IMOMENTS & !Number of moments previously counted - + JMOM & !Number of moments in this mode - + (NSV_DSTBEG -1) !Previous list of tracers - YRECFM = TRIM(YPDUST_INI(ISV_NAME_IDX))//'T' - YDIR='XY' - WRITE(ILUOUT,*) 'JPC titi ',YRECFM - CALL FMREAD(HCHEMFILE,YRECFM,HLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH, & - YCOMMENT,IRESP) - IF (IRESP/=0) THEN - WRITE(ILUOUT,FMT=9000) - WRITE(ILUOUT,*) TRIM(YRECFM),' NOT FOUND IN THE CHEM FILE ',HCHEMFILE - STOP - END IF !IRESP - END DO ! JMOM - END DO !JMOD - END IF !if IMOMENTS - END IF ! LDUST - - IF (LSALT) THEN - LSLTINIT=.TRUE. - LSLTPRES=.FALSE. - CALL POSNAM(ILUDES,'NAM_SALT',GFOUND,ILUOUT) - IF (GFOUND) READ(UNIT=ILUDES,NML=NAM_SALT) - CALL INI_NSV(1) - IMOMENTS = INT(NSV_SLTEND - NSV_SLTBEG+1)/NMODE_SLT - IF (IMOMENTS == 1) THEN - DO JMODE=1, NMODE_SLT - !Index from which names are picked - ISV_NAME_IDX = (JPSALTORDER(JMODE) - 1)*3 + 2 - JSV = (JMODE-1)*IMOMENTS & !Number of moments previously counted - + 1 & !Number of moments in this mode - + (NSV_SLTBEG -1) !Previous list of tracers - YRECFM = TRIM(YPSALT_INI(ISV_NAME_IDX))//'T' - YDIR='XY' - CALL FMREAD(HCHEMFILE,YRECFM,HLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH, & - YCOMMENT,IRESP) - IF (IRESP/=0) THEN - WRITE(ILUOUT,FMT=9000) - WRITE(ILUOUT,*) TRIM(YRECFM),'NOT FOUND IN THE CHEM FILE ',HCHEMFILE - CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP) - CALL ABORT - STOP - END IF !IRESP - END DO !JMOD - ELSE ! IMOMENTS - DO JMODE=1,NMODE_SLT - DO JMOM=1,IMOMENTS - ISV_NAME_IDX = (JPSALTORDER(JMODE) - 1)*3 + JMOM - JSV = (JMODE-1)*IMOMENTS & !Number of moments previously counted - + JMOM & !Number of moments in this mode - + (NSV_SLTBEG -1) !Previous list of tracers - YRECFM = TRIM(YPSALT_INI(ISV_NAME_IDX))//'T' - YDIR='XY' - CALL FMREAD(HCHEMFILE,YRECFM,HLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH, & - YCOMMENT,IRESP) - IF (IRESP/=0) THEN - WRITE(ILUOUT,FMT=9000) - WRITE(ILUOUT,*) TRIM(YRECFM),' NOT FOUND IN THE CHEM FILE ',HCHEMFILE - STOP - END IF !IRESP - END DO ! JMOM - END DO !JMOD - END IF !if IMOMENTS - END IF ! LSALT - - DO JSV = NSV_AERBEG,NSV_AEREND - YRECFM=TRIM(CAERONAMES(JSV-NSV_AERBEG+1))//'T' - YDIR='XY' - CALL FMREAD(HCHEMFILE,YRECFM,HLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH, & - YCOMMENT,IRESP) - IF (IRESP/=0) THEN - WRITE(ILUOUT,FMT=9000) - WRITE(ILUOUT,*) TRIM(YRECFM),'NOT FOUND IN THE CHEM FILE ',HCHEMFILE -!callabortstop -!CALL ABORT -! STOP - LORILAM=.FALSE. - END IF !IRESP - END DO ! JSV - CALL FMCLOS_ll(HCHEMFILE,'KEEP',HLUOUT,IRESP) - -ELSE ! HCHEMFILE - IF (NSV >=1) THEN - ALLOCATE(XSVT(IIU,IJU,IKU,NSV)) - XSVT(:,:,:,:)=PSV_MX(:,:,:,:) - ELSE !NSV - ALLOCATE(XSVT(0,0,0,0)) - END IF ! NSV -ENDIF ! HCHEMFILE -!------------------------------------------------------------------------------- -! -!* 4. 2D LARGE SCALE FIELDS FOR LBC -! ----------------------------- -! -! -IF (CTURB /= 'NONE') THEN - IF ( LHORELAX_TKE) THEN - ALLOCATE(XLBXTKEM(2*NRIMX+2,IJU,IKU)) - ALLOCATE(XLBYTKEM(IIU,2*NRIMY+2,IKU)) - ELSE - ALLOCATE(XLBXTKEM(2,IJU,IKU)) - ALLOCATE(XLBYTKEM(IIU,2,IKU)) - END IF - ! - ILBX=SIZE(XLBXTKEM,1)/2-1 - XLBXTKEM(1:ILBX+1,:,:) = XTKET(IIB-1:IIB-1+ILBX,:,:) - XLBXTKEM(ILBX+2:2*ILBX+2,:,:) = XTKET(IIE+1-ILBX:IIE+1,:,:) - ILBY=SIZE(XLBYTKEM,2)/2-1 - XLBYTKEM(:,1:ILBY+1,:) = XTKET(:,IJB-1:IJB-1+ILBY,:) - XLBYTKEM(:,ILBY+2:2*ILBY+2,:) = XTKET(:,IJE+1-ILBY:IJE+1,:) -ELSE - ALLOCATE(XLBXTKEM(0,0,0)) - ALLOCATE(XLBYTKEM(0,0,0)) -END IF -! -IF ( NSV > 0 ) THEN - IF ( ANY( LHORELAX_SV(:)) ) THEN - ALLOCATE(XLBXSVM(2*NRIMX+2,IJU,IKU,NSV)) - ALLOCATE(XLBYSVM(IIU,2*NRIMY+2,IKU,NSV)) - ELSE - ALLOCATE(XLBXSVM(2,IJU,IKU,NSV)) - ALLOCATE(XLBYSVM(IIU,2,IKU,NSV)) - END IF - ! - ILBX=SIZE(XLBXSVM,1)/2-1 - XLBXSVM(1:ILBX+1,:,:,:) = XSVT(IIB-1:IIB-1+ILBX,:,:,:) - XLBXSVM(ILBX+2:2*ILBX+2,:,:,:) = XSVT(IIE+1-ILBX:IIE+1,:,:,:) - ILBY=SIZE(XLBYSVM,2)/2-1 - XLBYSVM(:,1:ILBY+1,:,:) = XSVT(:,IJB-1:IJB-1+ILBY,:,:) - XLBYSVM(:,ILBY+2:2*ILBY+2,:,:) = XSVT(:,IJE+1-ILBY:IJE+1,:,:) -ELSE - ALLOCATE(XLBXSVM(0,0,0,0)) - ALLOCATE(XLBYSVM(0,0,0,0)) -END IF -! -! -NSIZELBXTKE_ll=SIZE(XLBXTKEM,1) -NSIZELBYTKE_ll=SIZE(XLBYTKEM,2) -NSIZELBXSV_ll =SIZE(XLBXSVM,1) -NSIZELBYSV_ll =SIZE(XLBYSVM,2) -! -!------------------------------------------------------------------------------- -9000 FORMAT(/,'FATAL ERROR IN INI_PROG_VAR : ',/, & - '--------------------------------------' ) -! -END SUBROUTINE INI_PROG_VAR +!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence +!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt +!MNH_LIC for details. version 1. +!----------------------------------------------------------------- +!--------------- special set of characters for RCS information +!----------------------------------------------------------------- +! $Source$ $Revision$ +! MASDEV4_7 prep_real 2006/09/25 14:23:42 +!----------------------------------------------------------------- +! ######################## + MODULE MODI_INI_PROG_VAR +! ######################## +INTERFACE + SUBROUTINE INI_PROG_VAR(HLUOUT,PTKE_MX,PSV_MX,HCHEMFILE) +! +CHARACTER(LEN=*), INTENT(IN) :: HLUOUT ! Name of the output-listing +REAL, DIMENSION(:,:,:), INTENT(IN) :: PTKE_MX +REAL, DIMENSION(:,:,:,:), INTENT(IN) :: PSV_MX +CHARACTER(LEN=*), INTENT(IN), OPTIONAL :: HCHEMFILE ! Name of the chem file +END SUBROUTINE INI_PROG_VAR +END INTERFACE +END MODULE MODI_INI_PROG_VAR +! +! ######################################################## + SUBROUTINE INI_PROG_VAR(HLUOUT,PTKE_MX,PSV_MX,HCHEMFILE) +! ######################################################## +! +!!**** *INI_PROG_VAR* - initialization the prognostic variables not yet +!! initialized +!! +!! PURPOSE +!! ------- +!! +!! This routine initializes the scalar variables to zero. +!! This routine duplicates the values of a variable at t in MODD_FIELD1 +!! or MODD_LSFIELD1 in the variables at t. +!! +!!** METHOD +!! ------ +!! +!! EXTERNAL +!! -------- +!! +!! Routine PGDFILTER : to filter a 2D field. +!! Module MODI_PGDFILTER +!! +!! IMPLICIT ARGUMENTS +!! ------------------ +!! +!! Module MODD_CONF : contains configuration variables for all models. +!! NVERB : verbosity level for output-listing +!! Module MODD_LUNIT : contains logical unit names for all models +!! CLUOUT0 : name of output-listing +!! Module MODD_FIELD1 : contains the prognostic fields of model1 +!! XUM +!! XVM +!! XWM +!! XTHM +!! XRM +!! Module MODD_LSFIELD1 +!! XLSUM +!! XLSVM +!! XLSWM +!! XLSTHM +!! XLSRVM +!! Module MODD_DYN1 +!! NRIMX,NRIMY +!! +!! REFERENCE +!! --------- +!! +!! Book 2 +!! +!! AUTHOR +!! ------ +!! +!! V.Masson Meteo-France +!! +!! MODIFICATIONS +!! ------------- +!! Original 21/12/94 +!! 14/05/96 (V. Masson) filtering of LS fields +!! 08/01/97 (V. Masson) no filtering for boundaries on XLSWM +!! 10/07/97 (V. Masson) add tke and epsilon +!! 11/07/97 (V. Masson) add scalar variables +!! 20/01/98 (J. Stein ) add the lB fields + remove the 2Dx filter +!! 20/08/90 (J. Stein and P. Jabouille) add the SIZE of the LB +!! fields +!! 01/02/01 (D. Gazen) add module MODD_NSV for NSV variable +!! May 2006 Remove KEPS +!! 02/11/09 (M. Leriche) add aqueous phase chemistry +!! Oct 2010 (P. Tulet) input of chemical gas, dusts +!! and sea salts concentration from +!! another MesoNH simulation +!! Aug 2012 (J.-P. Chaboureau) read the chem-file descriptor +!! Fev 2015 (J.-P. Chaboureau) read instant T insteed of M +!------------------------------------------------------------------------------- +! +!* 0. DECLARATIONS +! ------------ +! +! +USE MODD_CONF ! declaration modules +USE MODD_CONF_n +USE MODD_DYN_n +USE MODD_TURB_n +USE MODD_PARAM_n +USE MODD_LUNIT +USE MODD_FIELD_n +USE MODD_LSFIELD_n +USE MODD_PARAMETERS +USE MODD_NSV +USE MODD_CH_M9_n, ONLY : NEQ, CNAMES +USE MODD_CH_MNHC_n, ONLY : LUSECHEM, LUSECHAQ, LUSECHIC, LCH_PH +USE MODD_CH_AEROSOL +USE MODD_DUST +USE MODD_SALT +! +USE MODN_DUST +USE MODN_SALT +! +USE MODI_PGDFILTER +USE MODI_CH_INIT_SCHEME_n +USE MODI_CH_AER_INIT_SOA +! +USE MODE_POS +USE MODE_FM +USE MODE_IO_ll +USE MODE_FMREAD +USE MODD_DIM_n +! +IMPLICIT NONE +! +!* 0.1 declaration of arguments +! +CHARACTER(LEN=*), INTENT(IN) :: HLUOUT ! Name of the output-listing +REAL, DIMENSION(:,:,:), INTENT(IN) :: PTKE_MX +REAL, DIMENSION(:,:,:,:), INTENT(IN) :: PSV_MX +CHARACTER(LEN=*), INTENT(IN), OPTIONAL :: HCHEMFILE ! Name of the chem file +! +!* 0.2 declaration of local variables +! +INTEGER :: ILUOUT ! Logical unit number + ! associated with HLUOUT +INTEGER :: IGRID,ILENCH,IRESP,ININAR ! File +CHARACTER (LEN=16) :: YRECFM ! management +CHARACTER (LEN=100) :: YCOMMENT ! variables +CHARACTER(LEN=2) :: YDIR +CHARACTER(LEN=32) :: YDESFM +! +INTEGER :: IIMAX,IJMAX,IKMAX ! Dimensions of the chem file +INTEGER :: IMI ! model number +INTEGER :: IIB,IIE,IIU +INTEGER :: IJB,IJE,IJU +INTEGER :: IIU_ll, IJU_ll +INTEGER :: IKU +INTEGER :: ILBX,ILBY +INTEGER :: JSV ! Loop index +INTEGER :: JMOM, IMOMENTS, JMODE, ISV_NAME_IDX ! dust modes +INTEGER :: ILUDES ! logical unit numbers of DESFM file +LOGICAL :: GFOUND ! Return code when searching namelist +!------------------------------------------------------------------------------- +! +CALL GET_MODEL_NUMBER_ll(IMI) +CALL FMLOOK_ll(HLUOUT,HLUOUT,ILUOUT,IRESP) +! +IIB=JPHEXT+1 +IIE=SIZE(XWT,1)-JPHEXT +IIU=SIZE(XWT,1) +IJB=JPHEXT+1 +IJE=SIZE(XWT,2)-JPHEXT +IJU=SIZE(XWT,2) +IKU=SIZE(XWT,3) +IIU_ll=NIMAX_ll + 2 * JPHEXT +IJU_ll=NJMAX_ll + 2 * JPHEXT +!------------------------------------------------------------------------------- +! +!* 1. TURBULENCE FIELDS +! ----------------- +! +ALLOCATE(XTKET(0,0,0)) +ALLOCATE(XSRCT(0,0,0)) +IF (CTURB=='TKEL' ) THEN + ALLOCATE(XTKET(IIU,IJU,IKU)) + XTKET(:,:,:)=PTKE_MX(:,:,:) + IF (NRR>1) THEN + ALLOCATE(XSRCT(IIU,IJU,IKU)) + ALLOCATE(XSIGS(IIU,IJU,IKU)) + WHERE (XRT(:,:,:,2)>1.E-10) + XSRCT(:,:,:)=1. + ELSEWHERE + XSRCT(:,:,:)=0. + END WHERE + XSIGS(:,:,:)=0. + ELSE + ALLOCATE(XSRCT(0,0,0)) + ALLOCATE(XSIGS(0,0,0)) + END IF +ELSE + ALLOCATE(XTKET(0,0,0)) + ALLOCATE(XSRCT(0,0,0)) + ALLOCATE(XSIGS(0,0,0)) +END IF +! +! +!------------------------------------------------------------------------------- +! +!* 3. PASSIVE SCALAR +! -------------- +! +ALLOCATE(XSVT(0,0,0,0)) +IF(PRESENT(HCHEMFILE)) THEN + WRITE(ILUOUT,*) 'Routine INI_PROG_VAR: CHEMical species read in ',TRIM(HCHEMFILE) + + IF (.NOT.LDUST) THEN + ! Always initialize chemical scheme variables before INI_NSV call ! + CALL CH_INIT_SCHEME_n(IMI,LUSECHAQ,LUSECHIC,LCH_PH,ILUOUT,NVERB) +! Question CL : Maud a supprime l appel a CH_INIT_CCS ? + LUSECHEM = .TRUE. + END IF + IF (LORILAM) THEN + CORGANIC = "MPMPO" + LVARSIGI = .TRUE. + LVARSIGJ = .TRUE. + CALL CH_AER_INIT_SOA(ILUOUT,NVERB) + END IF ! lorilam + ! initialise NSV_* variables + CALL INI_NSV(1) + ALLOCATE(XSVT(IIU,IJU,IKU,NSV)) + ! Read dimensions in chem file and checks with output file + CALL FMOPEN_ll(HCHEMFILE,'READ',HLUOUT,0,2,NVERB,ININAR,IRESP) + YRECFM='IMAX' + YDIR='--' + CALL FMREAD(HCHEMFILE,YRECFM,HLUOUT,YDIR,IIMAX,IGRID,ILENCH, & + YCOMMENT,IRESP) + IF (IRESP/=0) THEN + WRITE(ILUOUT,FMT=9000) + WRITE(ILUOUT,*) TRIM(YRECFM),' NOT FOUND IN THE CHEM FILE ',HCHEMFILE + !callabortstop + CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP) + CALL ABORT + STOP + END IF !IRESP + YRECFM='JMAX' + YDIR='--' + CALL FMREAD(HCHEMFILE,YRECFM,HLUOUT,YDIR,IJMAX,IGRID,ILENCH, & + YCOMMENT,IRESP) + IF (IRESP/=0) THEN + WRITE(ILUOUT,FMT=9000) + WRITE(ILUOUT,*) TRIM(YRECFM),'NOT FOUND IN THE CHEM FILE ',HCHEMFILE +!callabortstop + CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP) + CALL ABORT + STOP + END IF !IRESP + YRECFM='KMAX' + YDIR='--' + CALL FMREAD(HCHEMFILE,YRECFM,HLUOUT,YDIR,IKMAX,IGRID,ILENCH, & + YCOMMENT,IRESP) + IF (IRESP/=0) THEN + WRITE(ILUOUT,FMT=9000) + WRITE(ILUOUT,*) TRIM(YRECFM),'NOT FOUND IN THE CHEM FILE ',HCHEMFILE +!callabortstop + CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP) + CALL ABORT + STOP + END IF !IRESP + IF ( (IIMAX/=(IIU_ll-2*JPHEXT)) .OR. (IJMAX/=(IJU_ll-2*JPHEXT)) & + .OR. (IKMAX/=(IKU-2*JPVEXT)) ) THEN + WRITE(ILUOUT,FMT=9000) + WRITE(ILUOUT,*) 'THE GRIDS ARE DIFFERENT IN THE OUTPUT FILE :' + WRITE(ILUOUT,*) IIU_ll-2*JPHEXT,'*',IJU_ll-2*JPHEXT,'*',IKU-2*JPVEXT + WRITE(ILUOUT,*) 'AND IN THE CHEM FILE :',HCHEMFILE + WRITE(ILUOUT,*) IIMAX,'*',IJMAX,'*',IKMAX + !callabortstop + CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP) + CALL ABORT + STOP + END IF ! IIMAX + IF (.NOT.LDUST) THEN + ! Read scalars in chem file + DO JSV = NSV_CHEMBEG,NSV_CHEMEND + YRECFM=TRIM(CNAMES(JSV-NSV_CHEMBEG+1))//'T' + YDIR='XY' + CALL FMREAD(HCHEMFILE,YRECFM,HLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH, & + YCOMMENT,IRESP) + IF (IRESP/=0) THEN + WRITE(ILUOUT,*) TRIM(YRECFM),'NOT FOUND IN THE CHEM FILE ',HCHEMFILE + XSVT(:,:,:,JSV) = 0. + END IF !IRESP + END DO ! JSV + IF (ALL(XSVT(:,:,:,NSV_CHEMBEG:NSV_CHEMEND) == 0.)) THEN + LUSECHEM=.FALSE. + NEQ = 0 + END IF + END IF + + IF (LDUST) THEN + LDSTINIT=.TRUE. + LDSTPRES=.FALSE. + YDESFM=TRIM(ADJUSTL(HCHEMFILE))//'.des' + CALL FMLOOK_ll(YDESFM,HLUOUT,ILUDES,IRESP) + CALL POSNAM(ILUDES,'NAM_DUST',GFOUND,ILUOUT) + IF (GFOUND) READ(UNIT=ILUDES,NML=NAM_DUST) + CALL INI_NSV(1) + IMOMENTS = INT(NSV_DSTEND - NSV_DSTBEG+1)/NMODE_DST + IF (IMOMENTS == 1) THEN + DO JMODE=1, NMODE_DST + !Index from which names are picked + ISV_NAME_IDX = (JPDUSTORDER(JMODE) - 1)*3 + 2 + JSV = (JMODE-1)*IMOMENTS & !Number of moments previously counted + + 1 & !Number of moments in this mode + + (NSV_DSTBEG -1) !Previous list of tracers + YRECFM = TRIM(YPDUST_INI(ISV_NAME_IDX))//'T' + YDIR='XY' + CALL FMREAD(HCHEMFILE,YRECFM,HLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH, & + YCOMMENT,IRESP) + IF (IRESP/=0) THEN + WRITE(ILUOUT,FMT=9000) + WRITE(ILUOUT,*) TRIM(YRECFM),'NOT FOUND IN THE CHEM FILE ',HCHEMFILE + CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP) + CALL ABORT + STOP + END IF !IRESP + END DO !JMOD + ELSE ! IMOMENTS diff 1 + DO JMODE=1,NMODE_DST + DO JMOM=1,IMOMENTS + ISV_NAME_IDX = (JPDUSTORDER(JMODE) - 1)*3 + JMOM + JSV = (JMODE-1)*IMOMENTS & !Number of moments previously counted + + JMOM & !Number of moments in this mode + + (NSV_DSTBEG -1) !Previous list of tracers + YRECFM = TRIM(YPDUST_INI(ISV_NAME_IDX))//'T' + YDIR='XY' + CALL FMREAD(HCHEMFILE,YRECFM,HLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH, & + YCOMMENT,IRESP) + IF (IRESP/=0) THEN + WRITE(ILUOUT,FMT=9000) + WRITE(ILUOUT,*) TRIM(YRECFM),' NOT FOUND IN THE CHEM FILE ',HCHEMFILE + STOP + END IF !IRESP + END DO ! JMOM + END DO !JMOD + END IF !if IMOMENTS + END IF ! LDUST + + IF (LSALT) THEN + LSLTINIT=.TRUE. + LSLTPRES=.FALSE. + CALL POSNAM(ILUDES,'NAM_SALT',GFOUND,ILUOUT) + IF (GFOUND) READ(UNIT=ILUDES,NML=NAM_SALT) + CALL INI_NSV(1) + IMOMENTS = INT(NSV_SLTEND - NSV_SLTBEG+1)/NMODE_SLT + IF (IMOMENTS == 1) THEN + DO JMODE=1, NMODE_SLT + !Index from which names are picked + ISV_NAME_IDX = (JPSALTORDER(JMODE) - 1)*3 + 2 + JSV = (JMODE-1)*IMOMENTS & !Number of moments previously counted + + 1 & !Number of moments in this mode + + (NSV_SLTBEG -1) !Previous list of tracers + YRECFM = TRIM(YPSALT_INI(ISV_NAME_IDX))//'T' + YDIR='XY' + CALL FMREAD(HCHEMFILE,YRECFM,HLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH, & + YCOMMENT,IRESP) + IF (IRESP/=0) THEN + WRITE(ILUOUT,FMT=9000) + WRITE(ILUOUT,*) TRIM(YRECFM),'NOT FOUND IN THE CHEM FILE ',HCHEMFILE + CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP) + CALL ABORT + STOP + END IF !IRESP + END DO !JMOD + ELSE ! IMOMENTS + DO JMODE=1,NMODE_SLT + DO JMOM=1,IMOMENTS + ISV_NAME_IDX = (JPSALTORDER(JMODE) - 1)*3 + JMOM + JSV = (JMODE-1)*IMOMENTS & !Number of moments previously counted + + JMOM & !Number of moments in this mode + + (NSV_SLTBEG -1) !Previous list of tracers + YRECFM = TRIM(YPSALT_INI(ISV_NAME_IDX))//'T' + YDIR='XY' + CALL FMREAD(HCHEMFILE,YRECFM,HLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH, & + YCOMMENT,IRESP) + IF (IRESP/=0) THEN + WRITE(ILUOUT,FMT=9000) + WRITE(ILUOUT,*) TRIM(YRECFM),' NOT FOUND IN THE CHEM FILE ',HCHEMFILE + STOP + END IF !IRESP + END DO ! JMOM + END DO !JMOD + END IF !if IMOMENTS + END IF ! LSALT + + DO JSV = NSV_AERBEG,NSV_AEREND + YRECFM=TRIM(CAERONAMES(JSV-NSV_AERBEG+1))//'T' + YDIR='XY' + CALL FMREAD(HCHEMFILE,YRECFM,HLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH, & + YCOMMENT,IRESP) + IF (IRESP/=0) THEN + WRITE(ILUOUT,FMT=9000) + WRITE(ILUOUT,*) TRIM(YRECFM),'NOT FOUND IN THE CHEM FILE ',HCHEMFILE +!callabortstop +!CALL ABORT +! STOP + LORILAM=.FALSE. + END IF !IRESP + END DO ! JSV + CALL FMCLOS_ll(HCHEMFILE,'KEEP',HLUOUT,IRESP) + +ELSE ! HCHEMFILE + IF (NSV >=1) THEN + ALLOCATE(XSVT(IIU,IJU,IKU,NSV)) + XSVT(:,:,:,:)=PSV_MX(:,:,:,:) + ELSE !NSV + ALLOCATE(XSVT(0,0,0,0)) + END IF ! NSV +ENDIF ! HCHEMFILE +!------------------------------------------------------------------------------- +! +!* 4. 2D LARGE SCALE FIELDS FOR LBC +! ----------------------------- +! +! +IF (CTURB /= 'NONE') THEN + IF ( LHORELAX_TKE) THEN + ALLOCATE(XLBXTKEM(2*NRIMX+2,IJU,IKU)) + ALLOCATE(XLBYTKEM(IIU,2*NRIMY+2,IKU)) + ELSE + ALLOCATE(XLBXTKEM(2,IJU,IKU)) + ALLOCATE(XLBYTKEM(IIU,2,IKU)) + END IF + ! + ILBX=SIZE(XLBXTKEM,1)/2-1 + XLBXTKEM(1:ILBX+1,:,:) = XTKET(IIB-1:IIB-1+ILBX,:,:) + XLBXTKEM(ILBX+2:2*ILBX+2,:,:) = XTKET(IIE+1-ILBX:IIE+1,:,:) + ILBY=SIZE(XLBYTKEM,2)/2-1 + XLBYTKEM(:,1:ILBY+1,:) = XTKET(:,IJB-1:IJB-1+ILBY,:) + XLBYTKEM(:,ILBY+2:2*ILBY+2,:) = XTKET(:,IJE+1-ILBY:IJE+1,:) +ELSE + ALLOCATE(XLBXTKEM(0,0,0)) + ALLOCATE(XLBYTKEM(0,0,0)) +END IF +! +IF ( NSV > 0 ) THEN + IF ( ANY( LHORELAX_SV(:)) ) THEN + ALLOCATE(XLBXSVM(2*NRIMX+2,IJU,IKU,NSV)) + ALLOCATE(XLBYSVM(IIU,2*NRIMY+2,IKU,NSV)) + ELSE + ALLOCATE(XLBXSVM(2,IJU,IKU,NSV)) + ALLOCATE(XLBYSVM(IIU,2,IKU,NSV)) + END IF + ! + ILBX=SIZE(XLBXSVM,1)/2-1 + XLBXSVM(1:ILBX+1,:,:,:) = XSVT(IIB-1:IIB-1+ILBX,:,:,:) + XLBXSVM(ILBX+2:2*ILBX+2,:,:,:) = XSVT(IIE+1-ILBX:IIE+1,:,:,:) + ILBY=SIZE(XLBYSVM,2)/2-1 + XLBYSVM(:,1:ILBY+1,:,:) = XSVT(:,IJB-1:IJB-1+ILBY,:,:) + XLBYSVM(:,ILBY+2:2*ILBY+2,:,:) = XSVT(:,IJE+1-ILBY:IJE+1,:,:) +ELSE + ALLOCATE(XLBXSVM(0,0,0,0)) + ALLOCATE(XLBYSVM(0,0,0,0)) +END IF +! +! +NSIZELBXTKE_ll=SIZE(XLBXTKEM,1) +NSIZELBYTKE_ll=SIZE(XLBYTKEM,2) +NSIZELBXSV_ll =SIZE(XLBXSVM,1) +NSIZELBYSV_ll =SIZE(XLBYSVM,2) +! +!------------------------------------------------------------------------------- +9000 FORMAT(/,'FATAL ERROR IN INI_PROG_VAR : ',/, & + '--------------------------------------' ) +! +END SUBROUTINE INI_PROG_VAR diff --git a/src/MNH/ini_radar.f90 b/src/MNH/ini_radar.f90 index 5469f9e918f9b6ca44c97044520d45b017bac394..a53621e5ef2703ed201dc34183c1d47f3f2e6cd3 100755 --- a/src/MNH/ini_radar.f90 +++ b/src/MNH/ini_radar.f90 @@ -62,6 +62,7 @@ END MODULE MODI_INI_RADAR !! MODIFICATIONS !! ------------- !! Original 27/10/2009 +!! P.Scheffknecht 22/04/2015: test missing on already allocated XRTMIN !! !------------------------------------------------------------------------------- ! @@ -187,7 +188,7 @@ XLBH = ( XAH*XCCH*MOMG(XALPHAH,XNUH,XBH) )**(-XLBEXH) ! !* 2.4 Minimal values allowed for the mixing ratios ! ICE3 -ALLOCATE( XRTMIN(6) ) +IF(.NOT.ALLOCATED(XRTMIN)) ALLOCATE( XRTMIN(6) ) ! XRTMIN(1) = 1.0E-20 XRTMIN(2) = 1.0E-20 diff --git a/src/MNH/mnh2lpdm_ech.f90 b/src/MNH/mnh2lpdm_ech.f90 index 3e17e722aa3fb94ab6c96dea252ee60711abe358..33fee06aee494f590434c6c380b783cdb234b83d 100644 --- a/src/MNH/mnh2lpdm_ech.f90 +++ b/src/MNH/mnh2lpdm_ech.f90 @@ -95,20 +95,20 @@ print 20300, ICURJJ,ICURMM,ICURAA,ICURHH,ICURMN,ICURSS ! !* 2.3 Lecture des champs Meso-NH de base. ! -CALL FMREAD(HFM,'UM',HFLOG,'XY',XUM,IGRID,ILONCOM,YCOM,IREP) -CALL FMREAD(HFM,'VM',HFLOG,'XY',XVM,IGRID,ILONCOM,YCOM,IREP) -CALL FMREAD(HFM,'WM',HFLOG,'XY',XWM,IGRID,ILONCOM,YCOM,IREP) -CALL FMREAD(HFM,'THM',HFLOG,'XY',XTHM,IGRID,ILONCOM,YCOM,IREP) -CALL FMREAD(HFM,'TKEM',HFLOG,'XY',XTKEM,IGRID,ILONCOM,YCOM,IREP) +CALL FMREAD(HFM,'UT',HFLOG,'XY',XUT,IGRID,ILONCOM,YCOM,IREP) +CALL FMREAD(HFM,'VT',HFLOG,'XY',XVT,IGRID,ILONCOM,YCOM,IREP) +CALL FMREAD(HFM,'WT',HFLOG,'XY',XWT,IGRID,ILONCOM,YCOM,IREP) +CALL FMREAD(HFM,'THT',HFLOG,'XY',XTHT,IGRID,ILONCOM,YCOM,IREP) +CALL FMREAD(HFM,'TKET',HFLOG,'XY',XTKET,IGRID,ILONCOM,YCOM,IREP) CALL FMREAD(HFM,'LM',HFLOG,'XY',XLM,IGRID,ILONCOM,YCOM,IREP) CALL FMREAD(HFM,'THW_FLX',HFLOG,'XY',XWPTHP,IGRID,ILONCOM,YCOM,IREP) CALL FMREAD(HFM,'DISS',HFLOG,'XY',XDISSIP,IGRID,ILONCOM,YCOM,IREP) CALL FMREAD(HFM,'FMU',HFLOG,'XY',XSFU,IGRID,ILONCOM,YCOM,IREP) CALL FMREAD(HFM,'FMV',HFLOG,'XY',XSFV,IGRID,ILONCOM,YCOM,IREP) CALL FMREAD(HFM,'INPRT',HFLOG,'XY',XINRT,IGRID,ILONCOM,YCOM,IREP) -CALL FMREAD(HFM,'RVM',HFLOG,'XY',XRMVM,IGRID,ILONCOM,YCOM,IREP) -CALL FMREAD(HFM,'RCM',HFLOG,'XY',XRMCM,IGRID,ILONCOM,YCOM,IREP) -CALL FMREAD(HFM,'RRM',HFLOG,'XY',XRMRM,IGRID,ILONCOM,YCOM,IREP) +CALL FMREAD(HFM,'RVT',HFLOG,'XY',XRMVT,IGRID,ILONCOM,YCOM,IREP) +CALL FMREAD(HFM,'RCT',HFLOG,'XY',XRMCT,IGRID,ILONCOM,YCOM,IREP) +CALL FMREAD(HFM,'RRT',HFLOG,'XY',XRMRT,IGRID,ILONCOM,YCOM,IREP) ! ! Lecture des donnees Meso-NH terminee.' ! @@ -123,18 +123,18 @@ CALL FMCLOS_LL(HFM,'KEEP',HFLOG,IREP) ! !* 3.2 Niveaux altitude "hors-sol" (1:NKMAX). ! -XSU(:,:,1:NKMAX) = XUM(NSIB:NSIE,NSJB:NSJE,NKB:NKE) -XSV(:,:,1:NKMAX) = XVM(NSIB:NSIE,NSJB:NSJE,NKB:NKE) -XSW(:,:,1:NKMAX) = XWM(NSIB:NSIE,NSJB:NSJE,NKB:NKE) -XSTH(:,:,1:NKMAX) = XTHM(NSIB:NSIE,NSJB:NSJE,NKB:NKE) -XSTKE(:,:,1:NKMAX) = XTKEM(NSIB:NSIE,NSJB:NSJE,NKB:NKE) +XSU(:,:,1:NKMAX) = XUT(NSIB:NSIE,NSJB:NSJE,NKB:NKE) +XSV(:,:,1:NKMAX) = XVT(NSIB:NSIE,NSJB:NSJE,NKB:NKE) +XSW(:,:,1:NKMAX) = XWT(NSIB:NSIE,NSJB:NSJE,NKB:NKE) +XSTH(:,:,1:NKMAX) = XTHT(NSIB:NSIE,NSJB:NSJE,NKB:NKE) +XSTKE(:,:,1:NKMAX) = XTKET(NSIB:NSIE,NSJB:NSJE,NKB:NKE) XSLM(:,:,1:NKMAX) = XLM(NSIB:NSIE,NSJB:NSJE,NKB:NKE) XSDISSIP(:,:,1:NKMAX) = XDISSIP(NSIB:NSIE,NSJB:NSJE,NKB:NKE) XSINRT(:,:) = XINRT(NSIB:NSIE,NSJB:NSJE) XSWPTHP(:,:,1:NKMAX) = XWPTHP(NSIB:NSIE,NSJB:NSJE,NKB:NKE) -XSRMV(:,:,1:NKMAX) = XRMVM(NSIB:NSIE,NSJB:NSJE,NKB:NKE) -XSRMC(:,:,1:NKMAX) = XRMCM(NSIB:NSIE,NSJB:NSJE,NKB:NKE) -XSRMR(:,:,1:NKMAX) = XRMRM(NSIB:NSIE,NSJB:NSJE,NKB:NKE) +XSRMV(:,:,1:NKMAX) = XRMVT(NSIB:NSIE,NSJB:NSJE,NKB:NKE) +XSRMC(:,:,1:NKMAX) = XRMCT(NSIB:NSIE,NSJB:NSJE,NKB:NKE) +XSRMR(:,:,1:NKMAX) = XRMRT(NSIB:NSIE,NSJB:NSJE,NKB:NKE) XSSFU(:,:) = XSFU(NSIB:NSIE,NSJB:NSJE) XSSFV(:,:) = XSFV(NSIB:NSIE,NSJB:NSJE) ! diff --git a/src/MNH/mnh2lpdm_ini.f90 b/src/MNH/mnh2lpdm_ini.f90 index 2f572fc61e59ea6bd928eb0d76a35ccf45899b32..3c4c2771d5cb61b957bedc9b98e3f0342c114ea5 100644 --- a/src/MNH/mnh2lpdm_ini.f90 +++ b/src/MNH/mnh2lpdm_ini.f90 @@ -182,17 +182,17 @@ NKE = NKU-JPVEXT ALLOCATE( XZHAT(NKU) ) ALLOCATE( XZS(NIU,NJU) ) ALLOCATE( XZ0(NIU,NJU) ) -ALLOCATE( XUM(NIU,NJU,NKU)) -ALLOCATE( XVM(NIU,NJU,NKU)) -ALLOCATE( XWM(NIU,NJU,NKU)) -ALLOCATE( XTHM(NIU,NJU,NKU)) -ALLOCATE( XTKEM(NIU,NJU,NKU)) +ALLOCATE( XUT(NIU,NJU,NKU)) +ALLOCATE( XVT(NIU,NJU,NKU)) +ALLOCATE( XWT(NIU,NJU,NKU)) +ALLOCATE( XTHT(NIU,NJU,NKU)) +ALLOCATE( XTKET(NIU,NJU,NKU)) ALLOCATE( XLM(NIU,NJU,NKU)) ALLOCATE( XDISSIP(NIU,NJU,NKU)) ALLOCATE( XWPTHP(NIU,NJU,NKU)) -ALLOCATE( XRMVM(NIU,NJU,NKU)) -ALLOCATE( XRMCM(NIU,NJU,NKU)) -ALLOCATE( XRMRM(NIU,NJU,NKU)) +ALLOCATE( XRMVT(NIU,NJU,NKU)) +ALLOCATE( XRMCT(NIU,NJU,NKU)) +ALLOCATE( XRMRT(NIU,NJU,NKU)) ALLOCATE( XINRT(NIU,NJU)) ALLOCATE( XSFU(NIU,NJU)) ALLOCATE( XSFV(NIU,NJU)) diff --git a/src/MNH/mnhget_surf_paramn.f90 b/src/MNH/mnhget_surf_paramn.f90 index a482baf01a6acfce2382e4c49b72ac2dad7389b1..1ac10532d661e05899fac21b7bf9599f89df7581 100644 --- a/src/MNH/mnhget_surf_paramn.f90 +++ b/src/MNH/mnhget_surf_paramn.f90 @@ -1,3 +1,4 @@ + !MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt diff --git a/src/MNH/modd_mnh2lpdm.f90 b/src/MNH/modd_mnh2lpdm.f90 index ffd80ff2aa97d9c7e1c31e896c17f5a8519378c4..db4d3a1cbe82d461cd07eaa638ca65a7e053c693 100644 --- a/src/MNH/modd_mnh2lpdm.f90 +++ b/src/MNH/modd_mnh2lpdm.f90 @@ -42,16 +42,16 @@ INTEGER, SAVE :: NIB,NIE,NJB,NJE,NKB,NKE ! Bornes du domaine physiques. ! !* Champs Meso-NH a extraire. ! -REAL, DIMENSION(:,:,:),ALLOCATABLE :: XUM,XVM,XWM ! Vent. -REAL, DIMENSION(:,:,:),ALLOCATABLE :: XTHM ! Tempe potentielle. -REAL, DIMENSION(:,:,:),ALLOCATABLE :: XTKEM ! m2/s2 +REAL, DIMENSION(:,:,:),ALLOCATABLE :: XUT,XVT,XWT ! Vent. +REAL, DIMENSION(:,:,:),ALLOCATABLE :: XTHT ! Tempe potentielle. +REAL, DIMENSION(:,:,:),ALLOCATABLE :: XTKET ! m2/s2 REAL, DIMENSION(:,:), ALLOCATABLE :: XINRT ! Taux de precipitation en mm/h REAL, DIMENSION(:,:,:),ALLOCATABLE :: XLM ! m REAL, DIMENSION(:,:,:),ALLOCATABLE :: XDISSIP ! J/Kg -REAL, DIMENSION(:,:,:),ALLOCATABLE :: XRMVM ! Rapport de melange en vapeur d eau -REAL, DIMENSION(:,:,:), ALLOCATABLE :: XRMCM ! Rapport de melange en eau liquide +REAL, DIMENSION(:,:,:),ALLOCATABLE :: XRMVT ! Rapport de melange en vapeur d eau +REAL, DIMENSION(:,:,:), ALLOCATABLE :: XRMCT ! Rapport de melange en eau liquide ! nuageuse -REAL, DIMENSION(:,:,:),ALLOCATABLE :: XRMRM ! Rapport de melange en eau liquide +REAL, DIMENSION(:,:,:),ALLOCATABLE :: XRMRT ! Rapport de melange en eau liquide ! pluie REAL, DIMENSION(:,:),ALLOCATABLE :: XSFU, XSFV ! flux cinematiques w'u' et w'v' REAL, DIMENSION(:,:,:),ALLOCATABLE :: XWPTHP ! flux de chaleur sensible diff --git a/src/MNH/mode_fscatter.f90 b/src/MNH/mode_fscatter.f90 index 11af88da6581d8368053a5700fc2657decb1569b..6c5bdbb670eba3e73137a8e01323136edfa1b4f9 100644 --- a/src/MNH/mode_fscatter.f90 +++ b/src/MNH/mode_fscatter.f90 @@ -37,6 +37,7 @@ !! MODIFICATIONS !! ------------- !! Original 26/03/2004 +!! 27/05/2014 (O. Caumont) Added Maxwell Garnett equation !-------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -202,7 +203,7 @@ CONTAINS ! !------------------------------------------------------------------------------- ! -!* 4. SUBROUTINE BHCOAT +!* 5. SUBROUTINE BHCOAT ! ----------------- !------------------------------------------------------------------------------- ! ###################################################### @@ -324,4 +325,28 @@ CONTAINS RETURN END SUBROUTINE BHCOAT ! +!------------------------------------------------------------------------------- +! +!* 6. FUNCTION MG +! ------------------- +!------------------------------------------------------------------------------- +!------------------------------------------------------------------------------- +! ########################################## + FUNCTION MG(QEPSINC,QEPSMAT,PF) RESULT(PQEPS) +! ########################################## + ! Maxwell Garnett (1904) equation for dielectric function of effective medium (sphere inclusions in a matrix) + + IMPLICIT NONE + COMPLEX, INTENT(IN) :: QEPSINC ! dielectric function of inclusions + COMPLEX, INTENT(IN) :: QEPSMAT ! dielectric function of matrix + REAL, INTENT(IN) :: PF ! volume fraction of the inclusions + COMPLEX :: PQEPS ! dielectric function of effective medium + COMPLEX :: QEPSF + + QEPSF=(QEPSINC-QEPSMAT)/(QEPSINC+2.*QEPSMAT) + PQEPS=(1.+2.*PF*QEPSF)/(1.-PF*QEPSF)*QEPSMAT +! + END FUNCTION MG +! +!------------------------------------------------------------------------------- END MODULE MODE_FSCATTER diff --git a/src/MNH/modeln.f90 b/src/MNH/modeln.f90 index c3255dbaf65fef5ff008f27b521d898d2aa98c69..a8fc1fab3a6f78b26804eb5fe5cf7bd60c55ae7d 100644 --- a/src/MNH/modeln.f90 +++ b/src/MNH/modeln.f90 @@ -227,7 +227,9 @@ END MODULE MODI_MODEL_n !! April 2011 (C.Lac, V.Masson) : Time splitting for advection !! J.Escobar 21/03/2013: for HALOK comment all NHALO=1 test !! P. Tulet Nov 2014 accumulated moles of aqueous species that fall at the surface -!------------------------------------------------------------------------------- +!! Dec 2014 (C.Lac) : For reproducibility START/RESTA +!! J.Escobar 20/04/2015: missing UPDATE_HALO before UPDATE_HALO2 +!!------------------------------------------------------------------------------- ! !* 0. DECLARATIONS ! ------------ @@ -375,6 +377,7 @@ USE MODN_NCOUT USE MODE_UTIL #endif USE MODI_GET_HALO +USE MODE_MPPDB ! IMPLICIT NONE ! @@ -609,7 +612,10 @@ IF (KTCOUNT == 1) THEN ! !* 1.6 Initialise the 2nd layer of the halo of the LS fields ! - IF ( LSTEADYLS ) CALL UPDATE_HALO2_ll(TZLSFIELD_ll, TZLSHALO2_ll, IINFO_ll) + IF ( LSTEADYLS ) THEN + CALL UPDATE_HALO_ll(TZLSFIELD_ll, IINFO_ll) + CALL UPDATE_HALO2_ll(TZLSFIELD_ll, TZLSHALO2_ll, IINFO_ll) + END IF END IF ! ! @@ -814,7 +820,8 @@ ZTIME1=ZTIME2 ! IF( LLG .AND. IMI==1 ) CALL SETLB_LG ! -CALL BOUNDARIES ( & +IF (CCONF == "START" .OR. (CCONF == "RESTA" .AND. KTCOUNT /= 1 )) THEN + CALL BOUNDARIES ( & XTSTEP,CLBCX,CLBCY,NRR,NSV,KTCOUNT, & XLBXUM,XLBXVM,XLBXWM,XLBXTHM,XLBXTKEM,XLBXRM,XLBXSVM, & XLBYUM,XLBYVM,XLBYWM,XLBYTHM,XLBYTKEM,XLBYRM,XLBYSVM, & @@ -822,6 +829,7 @@ CALL BOUNDARIES ( & XLBYUS,XLBYVS,XLBYWS,XLBYTHS,XLBYTKES,XLBYRS,XLBYSVS, & XRHODJ, & XUT, XVT, XWT, XTHT, XTKET, XRT, XSVT, XSRCT ) +END IF ! CALL SECOND_MNH2(ZTIME2) ! @@ -1137,8 +1145,12 @@ XTIME_LES_BU_PROCESS = 0. ! IF ( LNUMDIFU .OR. LNUMDIFTH .OR. LNUMDIFSV ) THEN ! + CALL UPDATE_HALO_ll(TZFIELDT_ll, IINFO_ll) CALL UPDATE_HALO2_ll(TZFIELDT_ll, TZHALO2T_ll, IINFO_ll) - IF ( .NOT. LSTEADYLS) CALL UPDATE_HALO2_ll(TZLSFIELD_ll, TZLSHALO2_ll, IINFO_ll) + IF ( .NOT. LSTEADYLS ) THEN + CALL UPDATE_HALO_ll(TZLSFIELD_ll, IINFO_ll) + CALL UPDATE_HALO2_ll(TZLSFIELD_ll, TZLSHALO2_ll, IINFO_ll) + END IF CALL NUM_DIFF ( CLBCX, CLBCY, NRR, NSV, & XDK2U, XDK4U, XDK2TH, XDK4TH, XDK2SV, XDK4SV, IMI, & XUT, XVT, XWT, XTHT, XTKET, XRT, XSVT, & @@ -1514,6 +1526,7 @@ END IF ! ZTIME1 = ZTIME2 ! +CALL MPPDB_CHECK3DM("before RAD_BOUND :XRU/V/WS",PRECISION,XRUS,XRVS,XRWS) ZRUS=XRUS ZRVS=XRVS ZRWS=XRWS @@ -1545,6 +1558,7 @@ XTIME_LES_BU_PROCESS = 0. ! IF(.NOT. L1D) THEN ! +CALL MPPDB_CHECK3DM("before pressurez:XRU/V/WS",PRECISION,XRUS,XRVS,XRWS) XRUS_PRES = XRUS XRVS_PRES = XRVS XRWS_PRES = XRWS diff --git a/src/MNH/read_field.f90 b/src/MNH/read_field.f90 index 4e4ee865415f31a386cf2b88768b73134ae61bd9..d593b0abe4bc15c804b9eab53e28be1c5eeda0b5 100644 --- a/src/MNH/read_field.f90 +++ b/src/MNH/read_field.f90 @@ -15,8 +15,9 @@ INTERFACE KSIZELBX_ll,KSIZELBXU_ll,KSIZELBY_ll,KSIZELBYV_ll, & KSIZELBXTKE_ll,KSIZELBYTKE_ll, & KSIZELBXR_ll,KSIZELBYR_ll,KSIZELBXSV_ll,KSIZELBYSV_ll, & - PUM,PVM,PWM, & - PUT,PVT,PWT,PTHT,PPABST,PPABSM,PTKET,PRT,PSVT,PCIT,PDRYMASST, & + PUM,PVM,PWM,PDUM,PDVM,PDWM, & + PUT,PVT,PWT,PTHT,PPABST,PPABSM,PTKET,PRTKEMS, & + PRT,PSVT,PCIT,PDRYMASST, & PSIGS,PSRCT,PCLDFR,PBL_DEPTH,PSBL_DEPTH,PWTHVMF,PPHC,PPHR, & PLSUM,PLSVM,PLSWM,PLSTHM,PLSRVM, & PLBXUM,PLBXVM,PLBXWM,PLBXTHM,PLBXTKEM,PLBXRM,PLBXSVM, & @@ -63,13 +64,15 @@ INTEGER, INTENT(IN) :: KSIZELBY_ll,KSIZELBYV_ll ! for T,U,W and v INTEGER, INTENT(IN):: KSIZELBYTKE_ll ! for TKE INTEGER, INTENT(IN) :: KSIZELBYR_ll,KSIZELBYSV_ll ! for Rx and SV REAL, DIMENSION(:,:,:), INTENT(OUT) :: PUM,PVM,PWM ! U,V,W at t-dt +REAL, DIMENSION(:,:,:), INTENT(OUT) :: PDUM,PDVM,PDWM ! Difference on U,V,W + ! between t+dt and t-dt REAL, DIMENSION(:,:), INTENT(OUT) :: PBL_DEPTH ! BL depth REAL, DIMENSION(:,:), INTENT(OUT) :: PSBL_DEPTH ! SBL depth REAL, DIMENSION(:,:,:), INTENT(OUT) :: PWTHVMF ! MassFlux buoyancy flux ! REAL, DIMENSION(:,:,:), INTENT(OUT) :: PUT,PVT,PWT ! U,V,W at t REAL, DIMENSION(:,:,:), INTENT(OUT) :: PTHT,PTKET ! theta, tke and - ! eps at t +REAL, DIMENSION(:,:,:), INTENT(OUT) :: PRTKEMS ! tke adv source REAL, DIMENSION(:,:,:), INTENT(OUT) :: PPABST ! pressure at t REAL, DIMENSION(:,:,:), INTENT(OUT) :: PPABSM ! pressure at t-1 REAL, DIMENSION(:,:,:,:), INTENT(OUT) :: PRT,PSVT ! moist and scalar @@ -128,8 +131,9 @@ END MODULE MODI_READ_FIELD KSIZELBX_ll,KSIZELBXU_ll,KSIZELBY_ll,KSIZELBYV_ll, & KSIZELBXTKE_ll,KSIZELBYTKE_ll, & KSIZELBXR_ll,KSIZELBYR_ll,KSIZELBXSV_ll,KSIZELBYSV_ll, & - PUM,PVM,PWM, & - PUT,PVT,PWT,PTHT,PPABST,PPABSM,PTKET,PRT,PSVT,PCIT,PDRYMASST, & + PUM,PVM,PWM,PDUM,PDVM,PDWM, & + PUT,PVT,PWT,PTHT,PPABST,PPABSM,PTKET,PRTKEMS, & + PRT,PSVT,PCIT,PDRYMASST, & PSIGS,PSRCT,PCLDFR,PBL_DEPTH,PSBL_DEPTH,PWTHVMF,PPHC,PPHR, & PLSUM,PLSVM,PLSWM,PLSTHM,PLSRVM, & PLBXUM,PLBXVM,PLBXWM,PLBXTHM,PLBXTKEM,PLBXRM,PLBXSVM, & @@ -225,6 +229,7 @@ END MODULE MODI_READ_FIELD !! C.Lac 03/13 add prognostic supersaturation for C2R2/KHKO !! Bosseur & Filippi 07/13 Adds Forefire !! M. Leriche 11/14 correct bug in pH initialization +!! C.Lac 12/14 correction for reproducibility START/RESTA !!------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -299,13 +304,15 @@ INTEGER, INTENT(IN):: KSIZELBYTKE_ll ! for TKE INTEGER, INTENT(IN) :: KSIZELBYR_ll,KSIZELBYSV_ll ! for Rx and SV ! REAL, DIMENSION(:,:,:), INTENT(OUT) :: PUM,PVM,PWM ! U,V,W at t-dt +REAL, DIMENSION(:,:,:), INTENT(OUT) :: PDUM,PDVM,PDWM ! Difference on U,V,W + ! between t+dt and t-dt REAL, DIMENSION(:,:), INTENT(OUT) :: PBL_DEPTH ! BL depth REAL, DIMENSION(:,:), INTENT(OUT) :: PSBL_DEPTH ! SBL depth REAL, DIMENSION(:,:,:), INTENT(OUT) :: PWTHVMF ! MassFlux buoyancy flux ! REAL, DIMENSION(:,:,:), INTENT(OUT) :: PUT,PVT,PWT ! U,V,W at t REAL, DIMENSION(:,:,:), INTENT(OUT) :: PTHT,PTKET ! theta, tke and - ! eps at t +REAL, DIMENSION(:,:,:), INTENT(OUT) :: PRTKEMS ! tke adv source REAL, DIMENSION(:,:,:), INTENT(OUT) :: PPABST ! pressure at t REAL, DIMENSION(:,:,:), INTENT(OUT) :: PPABSM ! pressure at t-1 REAL, DIMENSION(:,:,:,:), INTENT(OUT) :: PRT,PSVT ! moist and scalar @@ -455,8 +462,14 @@ SELECT CASE(HGETTKET) END IF YDIR='XY' CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,PTKET,IGRID,ILENCH,YCOMMENT,IRESP) + IF (KMASDEV>50) THEN + YRECFM = 'TKEMS' + YDIR='XY' + CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,PRTKEMS,IGRID,ILENCH,YCOMMENT,IRESP) + END IF CASE('INIT') PTKET(:,:,:)=XTKEMIN + PRTKEMS(:,:,:)=0. END SELECT ! IRR=0 @@ -908,7 +921,7 @@ END IF ! !* 2.1 Time t-dt: ! -IF (CPROGRAM=='MODEL' .AND. HUVW_ADV_SCHEME(1:3)=='CEN') THEN +IF (CPROGRAM=='MESONH' .AND. HUVW_ADV_SCHEME(1:3)=='CEN') THEN IF (CCONF=='RESTA') THEN YRECFM = 'UM' YDIR='XY' @@ -921,6 +934,18 @@ IF (CPROGRAM=='MODEL' .AND. HUVW_ADV_SCHEME(1:3)=='CEN') THEN YRECFM = 'WM' YDIR='XY' CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,PWM,IGRID,ILENCH,YCOMMENT,IRESP) + ! + YRECFM = 'DUM' + YDIR='XY' + CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,PDUM,IGRID,ILENCH,YCOMMENT,IRESP) + ! + YRECFM = 'DVM' + YDIR='XY' + CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,PDVM,IGRID,ILENCH,YCOMMENT,IRESP) + ! + YRECFM = 'DWM' + YDIR='XY' + CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,PDWM,IGRID,ILENCH,YCOMMENT,IRESP) ELSE PUM = PUT PVM = PVT diff --git a/src/MNH/set_rsou.f90 b/src/MNH/set_rsou.f90 index 0eb57212ef9392e6fcab1094853ca47e02733502..b1aa7537d62085f36ff4d7c6bbff8cc52194f493 100644 --- a/src/MNH/set_rsou.f90 +++ b/src/MNH/set_rsou.f90 @@ -419,14 +419,14 @@ ENDIF ! STOP !ENDIF ! -IF(LUSERI .AND. YKIND=='ZUVTHLMR') THEN - WRITE(ILUOUT,FMT=*) 'USE OF ICE FOR YKIND=ZUVTHLMR IS NOT ALLOWED' - WRITE(ILUOUT,FMT=*)'JOB ABORTED ' - !callabortstop - CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP) - CALL ABORT - STOP -ENDIF +!IF(LUSERI .AND. YKIND=='ZUVTHLMR') THEN +! WRITE(ILUOUT,FMT=*) 'USE OF ICE FOR YKIND=ZUVTHLMR IS NOT ALLOWED' +! WRITE(ILUOUT,FMT=*)'JOB ABORTED ' +! !callabortstop +! CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP) +! CALL ABORT +! STOP +!ENDIF ! IF(YKIND=='ZUVTHLMR' .AND. .NOT. LUSERC) THEN WRITE(ILUOUT,FMT=*) 'LUSERC=T IS REQUIRED FOR YKIND=ZUVTHLMR' @@ -1037,9 +1037,10 @@ SELECT CASE(YKIND) ! ! Read the data at each mass level of the RS DO JKM= 2,ILEVELM - IF(LUSERI) THEN - READ(ILUPRE,*) ZHEIGHTM(JKM),ZTHL(JKM),ZMR(JKM),ZMRC(JKM),ZMRI(JKM) - ELSEIF (GUSERC) THEN +! IF(LUSERI) THEN +! READ(ILUPRE,*) ZHEIGHTM(JKM),ZTHL(JKM),ZMR(JKM),ZMRC(JKM),ZMRI(JKM) +! ELSEIF (GUSERC) THEN + IF (GUSERC) THEN READ(ILUPRE,*) ZHEIGHTM(JKM),ZTHL(JKM),ZMR(JKM),ZMRC(JKM) ELSE READ(ILUPRE,*) ZHEIGHTM(JKM),ZTHL(JKM),ZMR(JKM) @@ -1050,7 +1051,7 @@ SELECT CASE(YKIND) ZTHL(1) = ZTHLGROUND ZMR(1) = ZMRGROUND IF(GUSERC) ZMRC(1) = ZMRC(2) - IF(LUSERI) ZMRI(1) = ZMRI(2) +! IF(LUSERI) ZMRI(1) = ZMRI(2) ! ! Compute Rt ZRT(:)=ZMR+ZMRC+ZMRI diff --git a/src/MNH/write_lfin.f90 b/src/MNH/write_lfin.f90 index bfbb6939736bdcb17b7e4bdcf888d0c9a9a214a6..051f3e5bd51b3abf4103a1a7591899a94e88a75c 100644 --- a/src/MNH/write_lfin.f90 +++ b/src/MNH/write_lfin.f90 @@ -6,7 +6,6 @@ !--------------- special set of characters for RCS information !----------------------------------------------------------------- ! $Source$ $Revision$ -! masdev4_7 BUG1 2007/06/20 16:58:20 !----------------------------------------------------------------- ! ######################### MODULE MODI_WRITE_LFIFM_n @@ -156,6 +155,7 @@ END MODULE MODI_WRITE_LFIFM_n !! J. Escobar Mars 2014 , missing YDIR="XY" in 1.6 for tendencies fields !! J.escobar & M.Leriche 23/06/2014 Pb with JSA increment versus ini_nsv order initialization !! P. Tulet Nov 2014 accumulated moles of aqueous species that fall at the surface +!! C.Lac Dec.2014 writing past wind fields for centred advection !! !------------------------------------------------------------------------------- ! @@ -213,6 +213,8 @@ USE MODD_FOREFIRE #endif USE MODD_CONDSAMP USE MODD_CH_AEROSOL +USE MODD_PAST_FIELD_n +USE MODD_ADV_n, ONLY: CUVW_ADV_SCHEME,XRTKEMS ! USE MODE_FMWRIT USE MODE_ll @@ -652,6 +654,49 @@ IGRID=1 ILENCH=LEN(YCOMMENT) CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XTHT,IGRID,ILENCH,YCOMMENT,IRESP) ! +!* 1.4.2 Time t-dt: + +IF ( CUVW_ADV_SCHEME == 'CEN4TH' ) THEN + YRECFM='UM' + YCOMMENT='X_Y_Z_U component of wind (m/s)' + IGRID=2 + ILENCH=LEN(YCOMMENT) + CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XUM,IGRID,ILENCH,YCOMMENT,IRESP) +! + YRECFM='VM' + YCOMMENT='X_Y_Z_V component of wind (m/s)' + IGRID=3 + ILENCH=LEN(YCOMMENT) + CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XVM,IGRID,ILENCH,YCOMMENT,IRESP) +! + YRECFM='WM' + YCOMMENT='X_Y_Z_vertical wind (m/s)' + IGRID=4 + ILENCH=LEN(YCOMMENT) + CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XWM,IGRID,ILENCH,YCOMMENT,IRESP) +! + YRECFM='DUM' + YCOMMENT='X_Y_Z_U component of wind (m/s)' + IGRID=2 + ILENCH=LEN(YCOMMENT) + CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XDUM,IGRID,ILENCH,YCOMMENT,IRESP) +! + YRECFM='DVM' + YCOMMENT='X_Y_Z_V component of wind (m/s)' + IGRID=3 + ILENCH=LEN(YCOMMENT) + CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XDVM,IGRID,ILENCH,YCOMMENT,IRESP) +! + YRECFM='DWM' + YCOMMENT='X_Y_Z_vertical wind (m/s)' + IGRID=4 + ILENCH=LEN(YCOMMENT) + CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XDWM,IGRID,ILENCH,YCOMMENT,IRESP) +! +END IF + + + IF (MEAN_COUNT /= 0) THEN ! YRECFM='UMMEAN' @@ -754,6 +799,12 @@ IF (CTURB /= 'NONE') THEN IGRID=1 ILENCH=LEN(YCOMMENT) CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XTKET,IGRID,ILENCH,YCOMMENT,IRESP) +! + YRECFM='TKEMS' + YCOMMENT='X_Y_Z_Turbulent Kinetic Energy adv source (M**2/S**3)' + IGRID=1 + ILENCH=LEN(YCOMMENT) + CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XRTKEMS,IGRID,ILENCH,YCOMMENT,IRESP) END IF ! ! diff --git a/src/Makefile b/src/Makefile index 5b9647eab12bffc210ff52b0a6f5b6a6725b202b..dc01e607ebcffcbc021cd8442e7d498020a2db66 100644 --- a/src/Makefile +++ b/src/Makefile @@ -172,11 +172,7 @@ DEP_ALL_USER = $(sort $(filter-out $(IGNORE_DEP_USER) ,$(DEP_USER)) ) # MASTER RULES # # # ########################################################## -ifeq "$(VER_CDF)" "CDFAUTO" -all : gribapi progmaster -else all : gribapi progmaster -endif objdirmaster : $(OBJDIR_MASTER)/.dummy @@ -191,6 +187,7 @@ ifeq "$(VER_CDF)" "CDFAUTO" depmaster : cdf endif +depmaster : gribapi filedepallmaster : $(DEP_ALL_MASTER) find $(OBJDIR_MASTER) -follow -name "*.D" > $(OBJDIR_MASTER)/filemaster @@ -204,7 +201,6 @@ bibmaster : libmaster @$(MAKE) -I$(B)$(OBJDIR_MASTER) DO_COMP_MASTER=YES OBJDIR=$(OBJDIR_MASTER) $(LIB_MASTER) mv $(LIB_MASTER) $(subst lib-,bib-,$(LIB_MASTER)) - objmaster : $(OBJS_LISTE_MASTER) $(LIB_MASTER) : $(OBJS_LISTE_MASTER) diff --git a/src/Rules.LXifort.mk b/src/Rules.LXifort.mk index 5ad7ff56cc54ef85a159e61fa1f25aa29a426f11..7981183d73c46e9ead05d0bdfdf854aeb31da239 100644 --- a/src/Rules.LXifort.mk +++ b/src/Rules.LXifort.mk @@ -12,7 +12,7 @@ OPT_BASE = -g -w -assume nosource_include -assume byterecl -fpe0 -ftz -fpic -traceback -fp-model precise -switch fe_inline_all_arg_copy_inout OPT_PERF0 = -O0 OPT_PERF2 = -O2 -OPT_PERF3 = -O3 +OPT_PERF3 = -O3 -xHost OPT_CHECK = -CB -ftrapuv OPT_I8 = -i8 OPT_R8 = -r8 @@ -69,15 +69,21 @@ FC = ifort ifeq "$(VER_MPI)" "MPIAUTO" ifneq "$(findstring TAU,$(XYZ))" "" F90 = tau_f90.sh -export TAU_MAKEFILE=/home/escj/PATCH/TAU/TAU-2.21.1-IFORT10-OMPI152-THREAD/x86_64/lib/Makefile.tau-mpi +export TAU_MAKEFILE?=/home/escj/PATCH/TAU/TAU-2.21.1-IFORT10-OMPI152-THREAD/x86_64/lib/Makefile.tau-mpi LIBS += -lz else F90 = mpif90 endif else ifeq "$(VER_MPI)" "MPIINTEL" +ifneq "$(findstring TAU,$(XYZ))" "" +F90 = tau_f90.sh +export TAU_MAKEFILE?=/home/escj/PATCH/TAU/TAU-2.21.1-IFORT10-OMPI152-THREAD/x86_64/lib/Makefile.tau-mpi +LIBS += -lz +else F90 = mpiifort -ifeq "$(MNH_INT)" "8" +endif +ifeq "$(MNH_INT)" "I8" OPT_BASE += -ilp64 endif else @@ -98,7 +104,7 @@ FX90FLAGS = $(OPT) # -132 # #LDFLAGS = -Wl,-noinhibit-exec -Wl,-warn-once $(PAR) -LDFLAGS = -Wl,-warn-once $(PAR) +LDFLAGS = -Wl,-warn-once $(PAR) $(OPT_BASE) # # preprocessing flags # diff --git a/src/SURFEX/allocate_physio.F90 b/src/SURFEX/allocate_physio.F90 index cbcdbcdd4b0a939a04a1a79291178be2926b4a08..8f3539b99938f2b7c1461977a5be861e989b1820 100644 --- a/src/SURFEX/allocate_physio.F90 +++ b/src/SURFEX/allocate_physio.F90 @@ -100,10 +100,11 @@ ALLOCATE(PALBNIR_VEG (KLU,KPATCH )) ALLOCATE(PALBVIS_VEG (KLU,KPATCH )) ALLOCATE(PALBUV_VEG (KLU,KPATCH )) ! +ALLOCATE(PH_TREE (KLU,KPATCH )) +! ! - vegetation: Ags parameters ('AGS', 'LAI', 'AST', 'LST', 'NIT' options) ! IF (HPHOTO/='NON') THEN - ALLOCATE(PH_TREE (KLU,KPATCH )) ALLOCATE(PRE25 (KLU,KPATCH )) ALLOCATE(PLAIMIN (KLU,KPATCH )) ALLOCATE(PBSLAI (KLU,KPATCH )) @@ -132,7 +133,6 @@ IF (HPHOTO/='NON') THEN ALLOCATE(PCNA_NITRO (0,0)) ENDIF ELSE - ALLOCATE(PH_TREE (0,0)) ALLOCATE(PRE25 (0,0)) ALLOCATE(PLAIMIN (0,0)) ALLOCATE(PBSLAI (0,0)) diff --git a/src/SURFEX/convert_patch_isba.F90 b/src/SURFEX/convert_patch_isba.F90 index 9c6bca0835d8b86f81e82a7ae618324ec03319d3..8a35968f37c094bd59b46b7c925d60d6232629f8 100644 --- a/src/SURFEX/convert_patch_isba.F90 +++ b/src/SURFEX/convert_patch_isba.F90 @@ -369,22 +369,25 @@ IF (PRESENT(PALBVIS_VEG)) THEN ENDIF ! IF (PRESENT(PALBUV_VEG)) THEN - IF (LDATA_ALBUV_VEG) THEN - CALL AV_PGD_PARAM(PALBUV_VEG,XPAR_VEGTYPE,XPAR_ALBUV_VEG,YVEG,'ARI',KDECADE=KDECADE2) + IF (CALBEDO=='CM13'.AND.PRESENT(PALBVIS_VEG)) THEN + PALBUV_VEG(:,:)=PALBVIS_VEG(:,:) ELSE - CALL AV_PGD (PALBUV_VEG,PCOVER,XDATA_ALBUV_VEG,YVEG,'ARI',KDECADE=KDECADE) + IF (LDATA_ALBUV_VEG) THEN + CALL AV_PGD_PARAM(PALBUV_VEG,XPAR_VEGTYPE,XPAR_ALBUV_VEG,YVEG,'ARI',KDECADE=KDECADE2) + ELSE + CALL AV_PGD (PALBUV_VEG,PCOVER,XDATA_ALBUV_VEG,YVEG,'ARI',KDECADE=KDECADE) + ENDIF + ENDIF +ENDIF +IF (PRESENT(PH_TREE)) THEN + IF (LDATA_H_TREE) THEN + CALL AV_PGD_PARAM(PH_TREE,XPAR_VEGTYPE,XPAR_H_TREE,YTREE,'ARI') + ELSE + CALL AV_PGD (PH_TREE,PCOVER,XDATA_H_TREE(:,:),YTREE,'ARI') ENDIF ENDIF ! IF (HPHOTO/='NON') THEN - ! - IF (PRESENT(PH_TREE)) THEN - IF (LDATA_H_TREE) THEN - CALL AV_PGD_PARAM(PH_TREE,XPAR_VEGTYPE,XPAR_H_TREE,YTREE,'ARI') - ELSE - CALL AV_PGD (PH_TREE,PCOVER,XDATA_H_TREE(:,:),YTREE,'ARI') - ENDIF - ENDIF ! IF (PRESENT(PRE25)) THEN IF (SIZE(PRE25)>0) THEN @@ -589,11 +592,15 @@ IF (PRESENT(PALBVIS_SOIL)) THEN ENDIF ! IF (PRESENT(PALBUV_SOIL)) THEN - IF (LDATA_ALBUV_SOIL) THEN - CALL AV_PGD_PARAM(PALBUV_SOIL,XPAR_VEGTYPE,XPAR_ALBUV_SOIL,YNAT,'ARI',KDECADE=KDECADE2) + IF (CALBEDO=='CM13'.AND.PRESENT(PALBVIS_SOIL)) THEN + PALBUV_SOIL(:,:)=PALBVIS_SOIL(:,:) ELSE - CALL SOIL_ALBEDO (CALBEDO, XWSAT(:,1),PWG1, XALBVIS_DRY,XALBUV_DRY,XALBUV_DRY, & - XALBVIS_WET,XALBNIR_WET,XALBUV_WET,PALBUV_SOIL=PALBUV_SOIL ) + IF (LDATA_ALBUV_SOIL) THEN + CALL AV_PGD_PARAM(PALBUV_SOIL,XPAR_VEGTYPE,XPAR_ALBUV_SOIL,YNAT,'ARI',KDECADE=KDECADE2) + ELSE + CALL SOIL_ALBEDO (CALBEDO, XWSAT(:,1),PWG1, XALBVIS_DRY,XALBUV_DRY,XALBUV_DRY, & + XALBVIS_WET,XALBNIR_WET,XALBUV_WET,PALBUV_SOIL=PALBUV_SOIL ) + ENDIF ENDIF ENDIF ! diff --git a/src/SURFEX/mode_read_cdf.F90 b/src/SURFEX/mode_read_cdf.F90 index 42ed9106afc86f0ce7472d250a95dcca9f3bfb96..97457ce1a000a7b1eb9fa8e2576bd06e0d7240d3 100644 --- a/src/SURFEX/mode_read_cdf.F90 +++ b/src/SURFEX/mode_read_cdf.F90 @@ -87,7 +87,8 @@ if (status/=NF_NOERR) CALL HANDLE_ERR_CDF(status,HACTION) ! &'has a length of',NVARDIMLEN(NDIMS) ! HACTION='get attributs' -status=nf_inq_natts(KCDF_ID,NGATTS) +!status=nf_inq_natts(KCDF_ID,NGATTS) +status=nf_inq_varnatts(KCDF_ID,IDVAR,NGATTS) if (status/=NF_NOERR) CALL HANDLE_ERR_CDF(status,HACTION) !write(0,*) 'number of attributes = ',NGATTS allocate(hname(1:NGATTS)) @@ -168,7 +169,8 @@ status=nf_inq_vardimid(KCDF_ID,IDVAR,NVARDIMID) if (status/=NF_NOERR) CALL HANDLE_ERR_CDF(status,HACTION) ! HACTION='get attributs' -status=nf_inq_natts(KCDF_ID,NGATTS) +!status=nf_inq_natts(KCDF_ID,NGATTS) +status=nf_inq_varnatts(KCDF_ID,IDVAR,NGATTS) if (status/=NF_NOERR) CALL HANDLE_ERR_CDF(status,HACTION) !write(0,*) 'number of attributes = ',NGATTS allocate(hname(1:NGATTS)) @@ -439,11 +441,9 @@ include 'netcdf.inc' IF (LHOOK) CALL DR_HOOK('MODE_READ_CDF:READ_DIM_CDF',0,ZHOOK_HANDLE) HACTION='open netcdf' status=NF_OPEN(HFILENAME,nf_nowrite,kcdf_id) -!write(0,*) 'identifiant de ',HFILENAME,'=',kcdf_id if (status/=NF_NOERR) then CALL HANDLE_ERR_CDF(status,HACTION) !else -! write(0,*) 'netcdf file opened: ',HFILENAME endif ! !----------- diff --git a/src/SURFEX/mode_read_extern.F90 b/src/SURFEX/mode_read_extern.F90 index b466b8a8f1507dbb7af896b96eda94019ff9f5d2..5f459a4720610d549db5117a1a477e9ce300f23e 100644 --- a/src/SURFEX/mode_read_extern.F90 +++ b/src/SURFEX/mode_read_extern.F90 @@ -2,6 +2,9 @@ !SURFEX_LIC This is part of the SURFEX software governed by the CeCILL-C licence !SURFEX_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !SURFEX_LIC for details. version 1. +! Modifications : +! P.Marguinaud : 11-09-2012 : shorten field name +! G.Delautier : 24-06-2015 : bug for arome compressed files ! ##################### MODULE MODE_READ_EXTERN ! ##################### @@ -32,9 +35,6 @@ USE MODI_READ_SURF USE MODI_CONVERT_COVER_ISBA USE MODI_GARDEN_SOIL_DEPTH -! Modifications : -! P.Marguinaud : 11-09-2012 : shorten field name - ! IMPLICIT NONE ! @@ -160,6 +160,7 @@ IF (HNAT=='NAT' .AND. (IVERSION>=7 .OR. .NOT.GECOCLIMAP)) THEN ! ENDIF ! + GDATA_GROUND_DEPTH=.FALSE. IF (IVERSION>7 .OR. IVERSION==7 .AND. IBUGFIX>=2) THEN ! YRECFM2='L_GROUND_DEPTH' @@ -332,6 +333,7 @@ REAL, DIMENSION(:), ALLOCATABLE :: ZWWILT ! wilting point REAL, DIMENSION(:), ALLOCATABLE :: ZWFC ! field capacity REAL, DIMENSION(:), ALLOCATABLE :: ZWSAT ! saturation REAL, DIMENSION(:), ALLOCATABLE :: ZSOILGRID +REAL, DIMENSION(:), ALLOCATABLE :: ZNAT ! natural surface fraction ! INTEGER :: IVERSION ! surface version INTEGER :: IBUGFIX @@ -469,6 +471,15 @@ ELSE END IF ! DEALLOCATE(ZSOILGRID) +! +! *. Read fraction of nature +! -------------- +! +ALLOCATE(ZNAT(KNI)) +IF (IVERSION>=7) THEN + CALL READ_SURF(HFILEPGDTYPE,'FRAC_NATURE',ZNAT,IRESP,HDIR='A') +ENDIF + ! CALL CLOSE_AUX_IO_SURF(HFILEPGD,HFILEPGDTYPE) ! @@ -550,7 +561,7 @@ IF (HFIELD=='WG ' .OR. HFIELD=='WGI ') THEN IF (HFIELD=='WG ') THEN DO JPATCH=1,IPATCH DO JLAYER=1,ILAYER - WHERE(ZVAR(:,JLAYER,JPATCH)/=XUNDEF) + WHERE(ZNAT(:)>0.0) ZVAR(:,JLAYER,JPATCH) = MAX(MIN(ZVAR(:,JLAYER,JPATCH),ZWSAT(:)),0.) ! ZFIELD(:,JLAYER,JPATCH) = (ZVAR(:,JLAYER,JPATCH) - ZWWILT(:)) / (ZWFC(:) - ZWWILT(:)) @@ -560,12 +571,14 @@ IF (HFIELD=='WG ' .OR. HFIELD=='WGI ') THEN ELSE IF (HFIELD=='WGI ') THEN DO JPATCH=1,IPATCH DO JLAYER=1,ILAYER - WHERE(ZVAR(:,JLAYER,JPATCH)/=XUNDEF) & + WHERE(ZNAT(:)>0.0) ZFIELD(:,JLAYER,JPATCH) = ZVAR(:,JLAYER,JPATCH) / ZWSAT(:) + END WHERE END DO END DO END IF ! + DEALLOCATE (ZNAT) DEALLOCATE (ZWSAT) DEALLOCATE (ZWWILT) DEALLOCATE (ZWFC) diff --git a/src/SURFEX/pack_isba_patch_get_sizen.F90 b/src/SURFEX/pack_isba_patch_get_sizen.F90 index 9271f5085f02931174e57670b8be3d13125eb46f..46352327445ab55070b3311757701d13bd0c6600 100644 --- a/src/SURFEX/pack_isba_patch_get_sizen.F90 +++ b/src/SURFEX/pack_isba_patch_get_sizen.F90 @@ -66,7 +66,7 @@ NSIZE_N0=0 NSIZE_TSIMPLE=0 NSIZE_T0=0 ! -NSIZE_SIMPLE=68 +NSIZE_SIMPLE=69 NSIZE_GROUND=11 NSIZE_VEGTYPE=1 NSIZE_TG=1 @@ -150,10 +150,10 @@ ELSE ENDIF ! IF (CPHOTO/='NON') THEN - NSIZE_SIMPLE=NSIZE_SIMPLE+23 + NSIZE_SIMPLE=NSIZE_SIMPLE+22 NSIZE_BIOMASS=NSIZE_BIOMASS+2 ELSE - NSIZE_0=NSIZE_0+23 + NSIZE_0=NSIZE_0+22 NSIZE_00=NSIZE_00+2 ENDIF ! diff --git a/src/SURFEX/pack_isba_patchn.F90 b/src/SURFEX/pack_isba_patchn.F90 index ed6fea2d98db9ef6ae6a6558b69cf4093aa3db90..bbf1ecc1ac56b10744ce3525693e9b24c6d82bac 100644 --- a/src/SURFEX/pack_isba_patchn.F90 +++ b/src/SURFEX/pack_isba_patchn.F90 @@ -528,6 +528,8 @@ ELSE XP_RSMIN => XBLOCK_0(:,ISIZE_0) END IF ! +ISIZE_SIMPLE = ISIZE_SIMPLE + 1 + XP_H_TREE => XBLOCK_SIMPLE(:,ISIZE_SIMPLE) ! IF (CPHOTO/='NON') THEN ISIZE_SIMPLE = ISIZE_SIMPLE + 1 @@ -536,8 +538,6 @@ IF (CPHOTO/='NON') THEN XP_LAIMIN => XBLOCK_SIMPLE(:,ISIZE_SIMPLE) ISIZE_SIMPLE = ISIZE_SIMPLE + 1 XP_SEFOLD => XBLOCK_SIMPLE(:,ISIZE_SIMPLE) - ISIZE_SIMPLE = ISIZE_SIMPLE + 1 - XP_H_TREE => XBLOCK_SIMPLE(:,ISIZE_SIMPLE) ISIZE_SIMPLE = ISIZE_SIMPLE + 1 XP_ANF => XBLOCK_SIMPLE(:,ISIZE_SIMPLE) ISIZE_SIMPLE = ISIZE_SIMPLE + 1 @@ -588,8 +588,6 @@ ELSE ISIZE_0 = ISIZE_0 + 1 XP_SEFOLD => XBLOCK_0(:,ISIZE_0) ISIZE_0 = ISIZE_0 + 1 - XP_H_TREE => XBLOCK_0(:,ISIZE_0) - ISIZE_0 = ISIZE_0 + 1 XP_ANF => XBLOCK_0(:,ISIZE_0) ISIZE_0 = ISIZE_0 + 1 XP_ANMAX => XBLOCK_0(:,ISIZE_0) @@ -967,11 +965,12 @@ IF (NPATCH==1) THEN XP_RSMIN (:) = XRSMIN (:, 1) END IF ! + XP_H_TREE (:) = XH_TREE (:, 1) + ! IF (CPHOTO/='NON') THEN XP_BSLAI (:) = XBSLAI (:, 1) XP_LAIMIN (:) = XLAIMIN (:, 1) XP_SEFOLD (:) = XSEFOLD (:, 1) - XP_H_TREE (:) = XH_TREE (:, 1) XP_ANMAX (:) = XANMAX (:, 1) XP_FZERO (:) = XFZERO (:, 1) XP_EPSO (:) = XEPSO (:, 1) @@ -1100,6 +1099,7 @@ ELSE XP_LAT (JJ) = XLAT (JI) XP_LON (JJ) = XLON (JI) XP_FSAT (JJ) = XFSAT (JI) + XP_H_TREE (JJ) = XH_TREE (JI, KPATCH) ENDDO ! DO JK=1,NGROUND_LAYER @@ -1300,7 +1300,6 @@ ELSE XP_BSLAI (JJ) = XBSLAI (JI, KPATCH) XP_LAIMIN (JJ) = XLAIMIN (JI, KPATCH) XP_SEFOLD (JJ) = XSEFOLD (JI, KPATCH) - XP_H_TREE (JJ) = XH_TREE (JI, KPATCH) XP_ANMAX (JJ) = XANMAX (JI, KPATCH) XP_FZERO (JJ) = XFZERO (JI, KPATCH) XP_EPSO (JJ) = XEPSO (JI, KPATCH) diff --git a/src/SURFEX/pgd_cover.F90 b/src/SURFEX/pgd_cover.F90 index 35dc68c6896e0205029041885613412f414945c7..c2d37c7074b3b1e48809fdfc64d7760cc9f5f880 100644 --- a/src/SURFEX/pgd_cover.F90 +++ b/src/SURFEX/pgd_cover.F90 @@ -143,6 +143,7 @@ INTEGER :: ICOVER ! 0 if cover is not present, >1 if prese ! ! (even on another processor) REAL(KIND=JPRB) :: ZHOOK_HANDLE ! +INTEGER :: JI, JX, JY !--------------------------------------------------------------- ! !* 1. Initializations @@ -195,6 +196,15 @@ IF (ANY(XUNIF_COVER/=0.)) THEN XCOVER(:,JCOVER) = XUNIF_COVER(JCOVER) END DO XCOVER(:,:)=XCOVER(:,:)/SPREAD(SUM(XCOVER(:,:),2),2,JPCOVER) + DO JI=1,NL + JY = (JI-1)/20+1 + JX = JI -(JY-1)*20 + IF (JX>=2 .AND. JX<4) THEN + XCOVER(JI,:) = 0. !JI->JX + XCOVER(JI,202)= 1. !JI->JX + END IF + END DO +! inclusion d'arbres END IF ! !* 3.3 No data diff --git a/src/SURFEX/pgd_isba_par.F90 b/src/SURFEX/pgd_isba_par.F90 index 57536f78f667f6335b74cd6b907423fc13f4f81d..87bb475d7ae03c41d5e5ecf0e696311e113474c9 100644 --- a/src/SURFEX/pgd_isba_par.F90 +++ b/src/SURFEX/pgd_isba_par.F90 @@ -240,6 +240,7 @@ LOGICAL, DIMENSION(NVEGTYPE_MAX) :: LUNIF_STRESS ! stress type CHARACTER(LEN=6), DIMENSION(NVEGTYPE_MAX) :: CFTYP_CNA_NITRO ! CNA for nitrogen REAL(KIND=JPRB) :: ZHOOK_HANDLE ! +INTEGER :: JI NAMELIST/NAM_DATA_ISBA/NTIME, XUNIF_VEGTYPE, XUNIF_DG, XUNIF_ROOTFRAC, XUNIF_DICE, & XUNIF_GROUND_DEPTH, XUNIF_ROOT_DEPTH, XUNIF_ROOT_EXTINCTION, & XUNIF_ROOT_LIN, XUNIF_LAI, XUNIF_VEG, XUNIF_Z0, XUNIF_EMIS, & @@ -480,6 +481,9 @@ IF (.NOT. LDATA_VEGTYPE .AND. .NOT. LDATA_LAI) DEALLOCATE(XPAR_LAI) ! ALLOCATE(XPAR_Z0 (NDIM,NTIME,NVEGTYPE)) CALL INI_VAR_FROM_DATA(HPROGRAM,'CDN','Z0: roughness length','NAT',CFNAM_Z0,CFTYP_Z0,XUNIF_Z0,XPAR_Z0,LDATA_Z0) +DO JI=1,NDIM +XPAR_Z0(JI,:,:) = XPAR_Z0(JI,:,:) * (0.5 + MOD(NINT ( (FLOAT(JI)**1.5) ),100)/100. ) +END DO IF (.NOT. LDATA_Z0) DEALLOCATE(XPAR_Z0) ! ALLOCATE(XPAR_EMIS (NDIM,NTIME,NVEGTYPE)) diff --git a/src/SURFEX/sso_z0_frictionn.F90 b/src/SURFEX/sso_z0_frictionn.F90 index 1ee18cdc96163bff4e14766d83da91d5a903b9eb..6ac986511d9cd1c8021d2b4d56f95f3c3cac4251 100644 --- a/src/SURFEX/sso_z0_frictionn.F90 +++ b/src/SURFEX/sso_z0_frictionn.F90 @@ -32,10 +32,11 @@ SUBROUTINE SSO_Z0_FRICTION_n(PSEA,PUREF,PRHOA,PU,PV,PPEW_A_COEF,PPEW_B_COEF,PSFU !! E. Martin 01/2012 Correction masque (compatibilité XUNDEF) !! B. Decharme 09/2012 new wind implicitation and sea fraction !! J. Escobar 05/2014 for bug with ifort/10, replace WHERE this IF +!! J. Escobar 06/2015 bug with gfortran ZZ0EFF to small, change with > XSURF_EPSILON !---------------------------------------------------------------- ! ! -USE MODD_SURF_PAR, ONLY : XUNDEF +USE MODD_SURF_PAR, ONLY : XUNDEF,XSURF_EPSILON USE MODD_SURF_ATM, ONLY : CIMPLICIT_WIND USE MODD_CSTS, ONLY : XKARMAN, XPI USE MODD_SURF_ATM_SSO_n, ONLY : CROUGH, XZ0EFFJPDIR, XZ0REL, XFRACZ0, & @@ -143,17 +144,19 @@ ENDIF ZCD (:) = 0. ZUSTAR2(:) = 0. ! -GMASK(:)=(GMASK(:).AND.ZZ0EFF(:)>0.) -! -WHERE (GMASK(:)) -! -!* sets a limit to roughness length - ZZ0EFF(:) = MIN(ZZ0EFF(:),PUREF(:)/XFRACZ0) -! -! neutral case - ZCD(:) = (XKARMAN/LOG(PUREF(:)/ZZ0EFF(:)))**2 -! -END WHERE +GMASK(:)=(GMASK(:).AND.ZZ0EFF(:)>XSURF_EPSILON) +! +DO II=1,SIZE(GMASK) + IF (GMASK(II)) THEN + ! + !* sets a limit to roughness length + ZZ0EFF(II) = MIN(ZZ0EFF(II),PUREF(II)/XFRACZ0) + ! + ! neutral case + ZCD(II) = (XKARMAN/LOG(PUREF(II)/ZZ0EFF(II)))**2 + END IF + ! +END DO ! !* 5. Friction due to orography ! ------------------------- diff --git a/src/configure b/src/configure index 8bd33e3e942e6c36e457b031c9c2be9558de315a..a6dd978d01677b9ccdf7f06436b78079b0cc203c 100755 --- a/src/configure +++ b/src/configure @@ -80,8 +80,8 @@ export MPI_DSM_CPULIST=0-7:allhosts module rm intel ; module load intel/13.1.4.183 ; module rm intelmpi ; module load intelmpi/4.1.1.036 ; module rm netcdf ; module load netcdf/4.3.0 ; -module load grib_api/1.9.16 ; -export GRIBAPI_PATH=/opt/softs/libraries/ICC13.1.4.183/grib_api-1.9.16_libtool +module load grib_api/1.10.4 ; +export GRIBAPI_PATH=/opt/softs/libraries/ICC13.1.4.183/grib_api-1.10.4 "} ;; 'Linux login0'*|'Linux compute'*) @@ -271,6 +271,7 @@ ulimit -s unlimited module load intel/15.0.0.090 module load intelmpi/5.0.1.035 export SLURM_CPU_BIND=none +export I_MPI_PIN_PROCESSOR_LIST=all:map=spread "} ;; diff --git a/src/job_make_examples_BG b/src/job_make_examples_BG index cccadd74930b27575b2c310092c6adda7a2ef86c..359ac6d9afaa0c134d9618bcc9365c3a0e995752 100755 --- a/src/job_make_examples_BG +++ b/src/job_make_examples_BG @@ -18,7 +18,7 @@ set -x cd $LOADL_STEP_INITDIR -. ../conf/profile_mesonh-BGI4-MNH-V5-1-3-MPIAUTO-O2 +. ../conf/profile_mesonh-BGI4-MNH-V5-1-4-MPIAUTO-O2 #001_2Drelief 002_3Drelief 003_KW78 004_Reunion 007_16janvier diff --git a/src/job_make_examples_BGQ b/src/job_make_examples_BGQ index 49e55e053d6e216ba5d310037ec60fa51cf71f6e..35c54005f681ec46a647df8eebf176ab04428f27 100755 --- a/src/job_make_examples_BGQ +++ b/src/job_make_examples_BGQ @@ -18,7 +18,7 @@ cd $LOADL_STEP_INITDIR -. ../conf/profile_mesonh-BGQI4-MNH-V5-1-3-MPIAUTO-O2NAN +. ../conf/profile_mesonh-BGQI4-MNH-V5-1-4-MPIAUTO-O2NAN #. ../conf/profile_mesonh-BGQI4-MNH-V4-10-1-MPIAUTO-O2 set -x diff --git a/src/job_make_examples_BullX b/src/job_make_examples_BullX index b8b4914fc0631e86d8e4ab60a6302dc90693e2a1..380dd3f6cdeea3383fbb507e35d169d5a8be448c 100755 --- a/src/job_make_examples_BullX +++ b/src/job_make_examples_BullX @@ -19,7 +19,7 @@ set -e # Nom de la machine hostname -. ../conf/profile_mesonh-LXifortI4-MNH-V5-1-3-MPIINTEL-O3 +. ../conf/profile_mesonh-LXifortI4-MNH-V5-1-4-MPIINTEL-O3 export MONORUN="mpirun -np 1 " export MPIRUN="mpirun -np 2 " export POSTRUN="time " diff --git a/src/job_make_examples_BullX_eos b/src/job_make_examples_BullX_eos index 8d47c2f117201319394bfbb5e665b6027760efc7..087efbf430eea99277cb042f0e54aa7504593730 100755 --- a/src/job_make_examples_BullX_eos +++ b/src/job_make_examples_BullX_eos @@ -17,7 +17,7 @@ set -x # Nom de la machine hostname -. ../conf/profile_mesonh-LXifortI4-MNH-V5-1-3-MPIINTEL-O2 +. ../conf/profile_mesonh-LXifortI4-MNH-V5-1-4-MPIINTEL-O2 export MONORUN="mpirun -genv I_MPI_PIN_PROCESSOR_LIST=all:map=spread -prepend-rank -np 1 " export MPIRUN="mpirun -genv I_MPI_PIN_PROCESSOR_LIST=all:map=spread -prepend-rank -np 4 " export POSTRUN="time " diff --git a/src/job_make_examples_CRAY_cca b/src/job_make_examples_CRAY_cca index ad8fda34169bd1809d8624f400a97a4323ab7ccd..71c274ee5cd1cdbeee9720e5ad404dd8fb9c2e1b 100755 --- a/src/job_make_examples_CRAY_cca +++ b/src/job_make_examples_CRAY_cca @@ -27,7 +27,7 @@ cd ${PBS_O_WORKDIR} #ARCH=LXifort ARCH=LXcray -. ../conf/profile_mesonh-${ARCH}I4-MNH-V5-1-3-MPICRAY-O2 +. ../conf/profile_mesonh-${ARCH}I4-MNH-V5-1-4-MPICRAY-O2 export MONORUN="aprun -n 1 " diff --git a/src/job_make_examples_IBM_ada b/src/job_make_examples_IBM_ada index 4b9bc0838e999efa97b508195b3b8cd0afd404e4..ae30bf4c0ca04010c07139e154349fc2dd86186c 100755 --- a/src/job_make_examples_IBM_ada +++ b/src/job_make_examples_IBM_ada @@ -19,7 +19,7 @@ cd $LOADL_STEP_INITDIR -. ../conf/profile_mesonh-LXifortI4-MNH-V5-1-3-MPIINTEL-O2 +. ../conf/profile_mesonh-LXifortI4-MNH-V5-1-4-MPIINTEL-O2 # Pour avoir l'echo des commandes set -x diff --git a/src/job_make_examples_IBM_sp6_vargas b/src/job_make_examples_IBM_sp6_vargas index 69a2b5b63c19510fc7a8dbe26e126657f83cd6b9..cc2a0703911adeb174958d5b685655a88bf671c0 100755 --- a/src/job_make_examples_IBM_sp6_vargas +++ b/src/job_make_examples_IBM_sp6_vargas @@ -24,7 +24,7 @@ set -x cd $LOADL_STEP_INITDIR -. ../conf/profile_mesonh-AIX64-MNH-V5-1-3-MPIAUTO-O2 +. ../conf/profile_mesonh-AIX64-MNH-V5-1-4-MPIAUTO-O2 #001_2Drelief 002_3Drelief 003_KW78 004_Reunion 007_16janvier diff --git a/src/job_make_examples_NEC_SX8 b/src/job_make_examples_NEC_SX8 index 82db4412726532468df904ee7c7c806e0d2b7e6a..0ab6654a0e0e8f4969c93aa60044ae8fc8e2ca2b 100755 --- a/src/job_make_examples_NEC_SX8 +++ b/src/job_make_examples_NEC_SX8 @@ -18,7 +18,7 @@ hostname [ -d $PBS_O_WORKDIR ] && cd $PBS_O_WORKDIR # -. ../conf/profile_mesonh-SX8I4-MNH-V5-1-3-MPIAUTO-O4 +. ../conf/profile_mesonh-SX8I4-MNH-V5-1-4-MPIAUTO-O4 export MONORUN="Mpirun -np 1 " export MPIRUN="Mpirun -np 2 " diff --git a/src/job_make_examples_SX8 b/src/job_make_examples_SX8 index 39675242b9283c12f95e6e56b3a92d02f576dcde..1b6962ad31394d4de8e70245115e8325b9047584 100755 --- a/src/job_make_examples_SX8 +++ b/src/job_make_examples_SX8 @@ -19,7 +19,7 @@ hostname [ -d $PBS_O_WORKDIR ] && cd $PBS_O_WORKDIR # -. ../conf/profile_mesonh-SX8I4-MNH-V5-1-3-MPIAUTO-O2 +. ../conf/profile_mesonh-SX8I4-MNH-V5-1-4-MPIAUTO-O2 export MONORUN="Mpirun -np 1 " export MPIRUN="Mpirun -np 2 " diff --git a/src/job_make_examples_cxa b/src/job_make_examples_cxa index 69ea510ec78ed802225526102e4486ccd95a1a1d..817689d1dc0ce3809bd0fdb12229f704fd58130c 100755 --- a/src/job_make_examples_cxa +++ b/src/job_make_examples_cxa @@ -34,7 +34,7 @@ echo SHELL=$SHELL cd $LOADL_STEP_INITDIR -. ../conf/profile_mesonh-AIX64I4-MNH-V5-1-3-MPIAUTO-O2 +. ../conf/profile_mesonh-AIX64I4-MNH-V5-1-4-MPIAUTO-O2 ulimit -c 0 # pas de core diff --git a/src/job_make_mesonh_BG b/src/job_make_mesonh_BG index c29c6fd125d03d1e6e8fb94c44d97a0de8897b53..177a1a5139492c22cee021eeb026728dfcd70723 100755 --- a/src/job_make_mesonh_BG +++ b/src/job_make_mesonh_BG @@ -18,7 +18,7 @@ set -x cd $LOADL_STEP_INITDIR -. ../conf/profile_mesonh-BGI4-MNH-V5-1-3-MPIAUTO-O2 +. ../conf/profile_mesonh-BGI4-MNH-V5-1-4-MPIAUTO-O2 #time gmake time gmake -r -j8 diff --git a/src/job_make_mesonh_BGQ b/src/job_make_mesonh_BGQ index 3e310f06a2b29b855416790138d4f4726f60cfdf..34f3d56aecefa40a0e31c2fca3d629463a065060 100755 --- a/src/job_make_mesonh_BGQ +++ b/src/job_make_mesonh_BGQ @@ -34,7 +34,7 @@ set -x cd $LOADL_STEP_INITDIR -. ../conf/profile_mesonh-BGQI4-MNH-V5-1-3-MPIAUTO-O2NAN +. ../conf/profile_mesonh-BGQI4-MNH-V5-1-4-MPIAUTO-O2NAN case $LOADL_STEP_NAME in diff --git a/src/job_make_mesonh_BullX b/src/job_make_mesonh_BullX index 62b67f6111071d927df58a955f03ea96cec76e80..7923416e77f35fe36370ed0f00ad1aa2a44d72a7 100755 --- a/src/job_make_mesonh_BullX +++ b/src/job_make_mesonh_BullX @@ -19,7 +19,7 @@ set -x # On va lancer la compilation dans le répertoire de lancement du job pwd -. ../conf/profile_mesonh-LXifortI4-MNH-V5-1-3-MPIINTEL-O3 +. ../conf/profile_mesonh-LXifortI4-MNH-V5-1-4-MPIINTEL-O3 time gmake -j 4 time gmake -j 1 installmaster diff --git a/src/job_make_mesonh_CRAY_cca b/src/job_make_mesonh_CRAY_cca index 3cf2b0769a3133b466696a1dc5e3cceb628bfef2..a1c17faa854c4659c4f17e429e42f23a951536a8 100755 --- a/src/job_make_mesonh_CRAY_cca +++ b/src/job_make_mesonh_CRAY_cca @@ -21,7 +21,7 @@ pwd #ARCH=LXifort ARCH=LXcray -. ../conf/profile_mesonh-${ARCH}I4-MNH-V5-1-3-MPICRAY-O2 +. ../conf/profile_mesonh-${ARCH}I4-MNH-V5-1-4-MPICRAY-O2 time gmake -j 4 2>&1 | tee sortie_compile_cray.$$ diff --git a/src/job_make_mesonh_IBM_ada b/src/job_make_mesonh_IBM_ada index 92e8308891384f6cf0281205e9e8d5cbaf7334c8..113a6442828c76284532fa1e5fb34dd271da773d 100755 --- a/src/job_make_mesonh_IBM_ada +++ b/src/job_make_mesonh_IBM_ada @@ -16,7 +16,7 @@ cd $LOADL_STEP_INITDIR -. ../conf/profile_mesonh-LXifortI4-MNH-V5-1-3-MPIINTEL-O2 +. ../conf/profile_mesonh-LXifortI4-MNH-V5-1-4-MPIINTEL-O2 # Pour avoir l'echo des commandes set -x diff --git a/src/job_make_mesonh_IBM_sp6_vargas b/src/job_make_mesonh_IBM_sp6_vargas index c132d8e4026cb7fb266793e82c704140aeccdb30..a9533fd92c7ffaa4b74434891cd39380a8e261e4 100755 --- a/src/job_make_mesonh_IBM_sp6_vargas +++ b/src/job_make_mesonh_IBM_sp6_vargas @@ -24,7 +24,7 @@ set -x cd $LOADL_STEP_INITDIR -. ../conf/profile_mesonh-AIX64I4-MNH-V5-1-3-MPIAUTO-O2 +. ../conf/profile_mesonh-AIX64I4-MNH-V5-1-4-MPIAUTO-O2 time gmake -j1 gribapi time gmake -r -j8 diff --git a/src/job_make_mesonh_MFSX8 b/src/job_make_mesonh_MFSX8 index e3ad9d06531d8189ddcc4ddd2eee86b41427711b..5bca938b6daf559f50bc43d1236b752de4589a21 100644 --- a/src/job_make_mesonh_MFSX8 +++ b/src/job_make_mesonh_MFSX8 @@ -12,7 +12,7 @@ set -x # On va lancer la compilation dans le répertoire de lancement du job [ ${PBS_O_WORKDIR} ] && cd ${PBS_O_WORKDIR} -. ../conf/profile_mesonh-SX8I4-MNH-V5-1-3-MPIAUTO-O4 +. ../conf/profile_mesonh-SX8I4-MNH-V5-1-4-MPIAUTO-O4 time gmake -j 4 ########## compile on four processors to speedup the compilation time gmake -j 1 installmaster diff --git a/src/job_make_mesonh_NEC_SX8 b/src/job_make_mesonh_NEC_SX8 index ae124aaff2206e82c5706f8d43591b8f8d5ad389..7fb453b71e7068d8440888d9f9b2dc98bcc01a2f 100755 --- a/src/job_make_mesonh_NEC_SX8 +++ b/src/job_make_mesonh_NEC_SX8 @@ -11,7 +11,7 @@ set -x # On va lancer la compilation dans le répertoire de lancement du job [ $PBS_O_WORKDIR ] && cd $PBS_O_WORKDIR -. ../conf/profile_mesonh-SX8I4-MNH-V5-1-3-MPIAUTO-O4 +. ../conf/profile_mesonh-SX8I4-MNH-V5-1-4-MPIAUTO-O4 time gmake -j 4 time gmake -j 4 # some time problem with first pass in parallel compilation diff --git a/src/job_make_mesonh_cxa b/src/job_make_mesonh_cxa index b1676857354c1af72e6a1020b92880ca7f07ac65..e6eeca5f15063f57fe96a407452c224ecb186b06 100755 --- a/src/job_make_mesonh_cxa +++ b/src/job_make_mesonh_cxa @@ -27,7 +27,7 @@ set -x cd $LOADL_STEP_INITDIR -. ../conf/profile_mesonh-AIX64I4-MNH-V5-1-3-MPIAUTO-O2 +. ../conf/profile_mesonh-AIX64I4-MNH-V5-1-4-MPIAUTO-O2 time gmake -r -j1 time gmake installmaster diff --git a/src/job_make_mesonh_user_BullX b/src/job_make_mesonh_user_BullX index e81a205d261d42d971b7c935064aedbaff3aa677..b46512accb5d0cd6cc0409311f38a118aec321a6 100755 --- a/src/job_make_mesonh_user_BullX +++ b/src/job_make_mesonh_user_BullX @@ -19,7 +19,7 @@ export VER_USER= ########## Your own USER Directory set -x # On va lancer la compilation dans le répertoire de lancement du job -. ../conf/profile_mesonh-LXifortI4-MNH-V5-1-3-${VER_USER}-MPIINTEL-O3 +. ../conf/profile_mesonh-LXifortI4-MNH-V5-1-4-${VER_USER}-MPIINTEL-O3 time gmake user time gmake -j 1 installuser diff --git a/src/job_make_mesonh_user_MFSX8 b/src/job_make_mesonh_user_MFSX8 index d589fde45d04c544a816f7e6c464f2de5d6c4f22..eb327fc7a2d0eeb949fe699d09765c283860c605 100644 --- a/src/job_make_mesonh_user_MFSX8 +++ b/src/job_make_mesonh_user_MFSX8 @@ -14,7 +14,7 @@ set -x [ ${PBS_O_WORKDIR} ] && cd ${PBS_O_WORKDIR} -. ../conf/profile_mesonh-SX8I4-MNH-V5-1-3-${VER_USER}-MPIAUTO-O4 +. ../conf/profile_mesonh-SX8I4-MNH-V5-1-4-${VER_USER}-MPIAUTO-O4 time gmake user time gmake -j 1 installuser