Juan 10/07/2015: phasage MNH-514
authorJuan Escobar <juan.escobar@aero.obs-mip.fr>
Fri, 10 Jul 2015 15:22:16 +0000 (15:22 +0000)
committerPhilippe WAUTELET <philippe.wautelet@aero.obs-mip.fr>
Thu, 19 May 2016 14:44:49 +0000 (16:44 +0200)
59 files changed:
MY_RUN/KTEST/007_16janvier/Makefile
MY_RUN/KTEST/009_ICARTT/006_ncl/run_ncl
src/LIB/RAD/ECMWF_RAD/parkind1.f90
src/LIB/SURCOUCHE/src/fmread_ll.f90
src/LIB/SURCOUCHE/src/fmwrit_ll.f90
src/LIB/SURCOUCHE/src/mode_util.f90
src/MNH/advection_metsv.f90
src/MNH/aircraft_balloon_evol.f90
src/MNH/boundaries.f90
src/MNH/calcsound.f90
src/MNH/drag_veg.f90
src/MNH/gravity.f90
src/MNH/gravity_impl.f90
src/MNH/ini_budget.f90
src/MNH/ini_modeln.f90
src/MNH/ini_prog_var.f90
src/MNH/ini_radar.f90
src/MNH/mnh2lpdm_ech.f90
src/MNH/mnh2lpdm_ini.f90
src/MNH/mnhget_surf_paramn.f90
src/MNH/modd_mnh2lpdm.f90
src/MNH/mode_fscatter.f90
src/MNH/modeln.f90
src/MNH/read_field.f90
src/MNH/set_rsou.f90
src/MNH/write_lfin.f90
src/Makefile
src/Rules.LXifort.mk
src/SURFEX/allocate_physio.F90
src/SURFEX/convert_patch_isba.F90
src/SURFEX/mode_read_cdf.F90
src/SURFEX/mode_read_extern.F90
src/SURFEX/pack_isba_patch_get_sizen.F90
src/SURFEX/pack_isba_patchn.F90
src/SURFEX/pgd_cover.F90
src/SURFEX/pgd_isba_par.F90
src/SURFEX/sso_z0_frictionn.F90
src/configure
src/job_make_examples_BG
src/job_make_examples_BGQ
src/job_make_examples_BullX
src/job_make_examples_BullX_eos
src/job_make_examples_CRAY_cca
src/job_make_examples_IBM_ada
src/job_make_examples_IBM_sp6_vargas
src/job_make_examples_NEC_SX8
src/job_make_examples_SX8
src/job_make_examples_cxa
src/job_make_mesonh_BG
src/job_make_mesonh_BGQ
src/job_make_mesonh_BullX
src/job_make_mesonh_CRAY_cca
src/job_make_mesonh_IBM_ada
src/job_make_mesonh_IBM_sp6_vargas
src/job_make_mesonh_MFSX8
src/job_make_mesonh_NEC_SX8
src/job_make_mesonh_cxa
src/job_make_mesonh_user_BullX
src/job_make_mesonh_user_MFSX8

index e90d525..38bd2e4 100644 (file)
@@ -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
index 4d36137..a6136d0 100755 (executable)
@@ -7,4 +7,4 @@ set -e
 
 rm -f *.ps 
 ncl plot_ICARTT_SEG1.ncl
-gv zsection_1000.ps
+gs zsection_1000.ps
index b63d2f7..6f01e32 100644 (file)
@@ -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
index 694e101..5ef3a57 100644 (file)
@@ -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)
index 89ae95a..66ef116 100644 (file)
@@ -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
index e011748..cedede6 100644 (file)
@@ -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
index 3537865..8523366 100644 (file)
@@ -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
 !
index 0b2aa62..e4c5267 100644 (file)
@@ -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)))
index 09452c2..cf439c4 100644 (file)
@@ -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
 !
index f0fbbe5..a0b1c5f 100644 (file)
@@ -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
index 699d552..7de0e66 100644 (file)
@@ -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  
index 90c6c3c..91ec276 100644 (file)
@@ -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
 !
index f42d600..19241d0 100644 (file)
@@ -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')
 !
 !-------------------------------------------------------------------------------
 !
index d2bb126..03556cc 100644 (file)
@@ -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
index c812e67..edf141e 100644 (file)
@@ -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,                        &
index b4b4752..7733f16 100644 (file)
-!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\r
+!MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence\r
+!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  \r
+!MNH_LIC for details. version 1.\r
+!-----------------------------------------------------------------\r
+!--------------- special set of characters for RCS information\r
+!-----------------------------------------------------------------\r
+! $Source$ $Revision$\r
+! MASDEV4_7 prep_real 2006/09/25 14:23:42\r
+!-----------------------------------------------------------------\r
+!     ########################\r
+      MODULE MODI_INI_PROG_VAR\r
+!     ########################\r
+INTERFACE\r
+      SUBROUTINE INI_PROG_VAR(HLUOUT,PTKE_MX,PSV_MX,HCHEMFILE)\r
+!\r
+CHARACTER(LEN=*), INTENT(IN)       :: HLUOUT      ! Name of the output-listing\r
+REAL, DIMENSION(:,:,:),   INTENT(IN) :: PTKE_MX\r
+REAL, DIMENSION(:,:,:,:), INTENT(IN) :: PSV_MX\r
+CHARACTER(LEN=*), INTENT(IN), OPTIONAL  :: HCHEMFILE  ! Name of the chem file\r
+END SUBROUTINE INI_PROG_VAR\r
+END INTERFACE\r
+END MODULE MODI_INI_PROG_VAR\r
+!\r
+!     ########################################################\r
+      SUBROUTINE INI_PROG_VAR(HLUOUT,PTKE_MX,PSV_MX,HCHEMFILE)\r
+!     ########################################################\r
+!\r
+!!****  *INI_PROG_VAR* - initialization the prognostic variables not yet \r
+!!                       initialized\r
+!!\r
+!!    PURPOSE\r
+!!    -------\r
+!!\r
+!!    This routine initializes the scalar variables to zero.\r
+!!    This routine duplicates the values of a variable at t in MODD_FIELD1\r
+!!    or MODD_LSFIELD1 in the variables at t.\r
+!!\r
+!!**  METHOD\r
+!!    ------\r
+!!\r
+!!    EXTERNAL\r
+!!    --------\r
+!!\r
+!!      Routine PGDFILTER      : to filter a 2D field.\r
+!!      Module  MODI_PGDFILTER\r
+!!\r
+!!    IMPLICIT ARGUMENTS\r
+!!    ------------------\r
+!!\r
+!!      Module MODD_CONF      : contains configuration variables for all models.\r
+!!         NVERB   : verbosity level for output-listing\r
+!!      Module MODD_LUNIT     :  contains logical unit names for all models\r
+!!         CLUOUT0 : name of output-listing\r
+!!      Module MODD_FIELD1    : contains the prognostic fields of model1\r
+!!         XUM\r
+!!         XVM\r
+!!         XWM\r
+!!         XTHM\r
+!!         XRM\r
+!!      Module MODD_LSFIELD1\r
+!!         XLSUM\r
+!!         XLSVM\r
+!!         XLSWM\r
+!!         XLSTHM\r
+!!         XLSRVM\r
+!!      Module MODD_DYN1\r
+!!         NRIMX,NRIMY\r
+!!   \r
+!!    REFERENCE\r
+!!    ---------\r
+!!\r
+!!      Book 2\r
+!!\r
+!!    AUTHOR\r
+!!    ------\r
+!!     \r
+!!      V.Masson  Meteo-France\r
+!!\r
+!!    MODIFICATIONS\r
+!!    -------------\r
+!!      Original    21/12/94\r
+!!                  14/05/96 (V. Masson) filtering of LS fields\r
+!!                  08/01/97 (V. Masson) no filtering for boundaries on XLSWM\r
+!!                  10/07/97 (V. Masson) add tke and epsilon\r
+!!                  11/07/97 (V. Masson) add scalar variables\r
+!!                  20/01/98 (J. Stein ) add the lB fields + remove the 2Dx filter\r
+!!                  20/08/90 (J. Stein and P. Jabouille) add the SIZE of the LB\r
+!!                           fields\r
+!!                  01/02/01 (D. Gazen) add module MODD_NSV for NSV variable\r
+!!                  May 2006    Remove KEPS\r
+!!                  02/11/09 (M. Leriche) add aqueous phase chemistry\r
+!!                  Oct 2010 (P. Tulet) input of chemical gas, dusts \r
+!!                                      and sea salts concentration from \r
+!!                                      another MesoNH simulation\r
+!!                  Aug 2012 (J.-P. Chaboureau) read the chem-file descriptor\r
+!!                  Fev 2015  (J.-P. Chaboureau) read instant T insteed of M\r
+!-------------------------------------------------------------------------------\r
+!\r
+!*       0.    DECLARATIONS\r
+!              ------------\r
+!\r
+!\r
+USE MODD_CONF  ! declaration modules\r
+USE MODD_CONF_n\r
+USE MODD_DYN_n\r
+USE MODD_TURB_n\r
+USE MODD_PARAM_n\r
+USE MODD_LUNIT\r
+USE MODD_FIELD_n\r
+USE MODD_LSFIELD_n\r
+USE MODD_PARAMETERS\r
+USE MODD_NSV\r
+USE MODD_CH_M9_n, ONLY : NEQ, CNAMES\r
+USE MODD_CH_MNHC_n, ONLY : LUSECHEM, LUSECHAQ, LUSECHIC, LCH_PH \r
+USE MODD_CH_AEROSOL\r
+USE MODD_DUST\r
+USE MODD_SALT\r
+!\r
+USE MODN_DUST\r
+USE MODN_SALT\r
+!\r
+USE MODI_PGDFILTER\r
+USE MODI_CH_INIT_SCHEME_n\r
+USE MODI_CH_AER_INIT_SOA\r
+!\r
+USE MODE_POS\r
+USE MODE_FM\r
+USE MODE_IO_ll\r
+USE MODE_FMREAD\r
+USE MODD_DIM_n\r
+!\r
+IMPLICIT NONE\r
+!\r
+!*       0.1   declaration of arguments\r
+!\r
+CHARACTER(LEN=*), INTENT(IN)       :: HLUOUT      ! Name of the output-listing\r
+REAL, DIMENSION(:,:,:),   INTENT(IN) :: PTKE_MX\r
+REAL, DIMENSION(:,:,:,:), INTENT(IN) :: PSV_MX\r
+CHARACTER(LEN=*), INTENT(IN), OPTIONAL  :: HCHEMFILE  ! Name of the chem file\r
+!\r
+!*       0.2   declaration of local variables\r
+!\r
+INTEGER                :: ILUOUT                     !  Logical unit number\r
+                                                     ! associated with HLUOUT \r
+INTEGER                :: IGRID,ILENCH,IRESP,ININAR      !  File \r
+CHARACTER (LEN=16)     :: YRECFM                               ! management\r
+CHARACTER (LEN=100)    :: YCOMMENT                             ! variables \r
+CHARACTER(LEN=2)       :: YDIR \r
+CHARACTER(LEN=32)      :: YDESFM\r
+!\r
+INTEGER                :: IIMAX,IJMAX,IKMAX       !  Dimensions of the chem file\r
+INTEGER :: IMI ! model number\r
+INTEGER :: IIB,IIE,IIU\r
+INTEGER :: IJB,IJE,IJU\r
+INTEGER :: IIU_ll, IJU_ll\r
+INTEGER :: IKU\r
+INTEGER :: ILBX,ILBY\r
+INTEGER :: JSV   ! Loop index\r
+INTEGER :: JMOM, IMOMENTS, JMODE, ISV_NAME_IDX  ! dust modes\r
+INTEGER :: ILUDES                         !  logical unit numbers of DESFM file\r
+LOGICAL :: GFOUND                         ! Return code when searching namelist\r
+!-------------------------------------------------------------------------------\r
+!\r
+CALL GET_MODEL_NUMBER_ll(IMI)\r
+CALL FMLOOK_ll(HLUOUT,HLUOUT,ILUOUT,IRESP)\r
+!\r
+IIB=JPHEXT+1\r
+IIE=SIZE(XWT,1)-JPHEXT\r
+IIU=SIZE(XWT,1)\r
+IJB=JPHEXT+1\r
+IJE=SIZE(XWT,2)-JPHEXT\r
+IJU=SIZE(XWT,2)\r
+IKU=SIZE(XWT,3)\r
+IIU_ll=NIMAX_ll + 2 * JPHEXT\r
+IJU_ll=NJMAX_ll + 2 * JPHEXT\r
+!-------------------------------------------------------------------------------\r
+!\r
+!*       1.    TURBULENCE FIELDS\r
+!              -----------------\r
+!\r
+ALLOCATE(XTKET(0,0,0))\r
+ALLOCATE(XSRCT(0,0,0))\r
+IF (CTURB=='TKEL' ) THEN\r
+  ALLOCATE(XTKET(IIU,IJU,IKU))\r
+  XTKET(:,:,:)=PTKE_MX(:,:,:)\r
+  IF (NRR>1) THEN\r
+    ALLOCATE(XSRCT(IIU,IJU,IKU))\r
+    ALLOCATE(XSIGS(IIU,IJU,IKU))\r
+    WHERE (XRT(:,:,:,2)>1.E-10)\r
+      XSRCT(:,:,:)=1.\r
+    ELSEWHERE\r
+      XSRCT(:,:,:)=0.\r
+    END WHERE\r
+    XSIGS(:,:,:)=0.\r
+  ELSE\r
+    ALLOCATE(XSRCT(0,0,0))\r
+    ALLOCATE(XSIGS(0,0,0))\r
+  END IF\r
+ELSE\r
+  ALLOCATE(XTKET(0,0,0))\r
+  ALLOCATE(XSRCT(0,0,0))\r
+  ALLOCATE(XSIGS(0,0,0))\r
+END IF\r
+!\r
+!\r
+!-------------------------------------------------------------------------------\r
+!\r
+!*       3.    PASSIVE SCALAR\r
+!              --------------\r
+!\r
+ALLOCATE(XSVT(0,0,0,0))\r
+IF(PRESENT(HCHEMFILE)) THEN\r
+  WRITE(ILUOUT,*) 'Routine INI_PROG_VAR: CHEMical species read in ',TRIM(HCHEMFILE)\r
+\r
+  IF (.NOT.LDUST) THEN\r
+  ! Always initialize chemical scheme variables before INI_NSV call !\r
+    CALL CH_INIT_SCHEME_n(IMI,LUSECHAQ,LUSECHIC,LCH_PH,ILUOUT,NVERB)\r
+! Question CL : Maud a supprime l appel a CH_INIT_CCS ?\r
+    LUSECHEM = .TRUE.\r
+  END IF\r
+  IF (LORILAM) THEN\r
+    CORGANIC = "MPMPO"\r
+    LVARSIGI = .TRUE.\r
+    LVARSIGJ = .TRUE.\r
+    CALL CH_AER_INIT_SOA(ILUOUT,NVERB)\r
+  END IF ! lorilam\r
+  ! initialise NSV_* variables\r
+  CALL INI_NSV(1)\r
+  ALLOCATE(XSVT(IIU,IJU,IKU,NSV))\r
+  ! Read dimensions in chem file and checks with output file\r
+  CALL FMOPEN_ll(HCHEMFILE,'READ',HLUOUT,0,2,NVERB,ININAR,IRESP)\r
+  YRECFM='IMAX'\r
+  YDIR='--'\r
+  CALL FMREAD(HCHEMFILE,YRECFM,HLUOUT,YDIR,IIMAX,IGRID,ILENCH,         &\r
+              YCOMMENT,IRESP)\r
+  IF (IRESP/=0) THEN\r
+    WRITE(ILUOUT,FMT=9000) \r
+    WRITE(ILUOUT,*) TRIM(YRECFM),' NOT FOUND IN THE CHEM FILE ',HCHEMFILE\r
+   !callabortstop\r
+    CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)\r
+    CALL ABORT\r
+    STOP\r
+  END IF !IRESP\r
+  YRECFM='JMAX'\r
+  YDIR='--'\r
+  CALL FMREAD(HCHEMFILE,YRECFM,HLUOUT,YDIR,IJMAX,IGRID,ILENCH,         &\r
+              YCOMMENT,IRESP)\r
+  IF (IRESP/=0) THEN\r
+    WRITE(ILUOUT,FMT=9000) \r
+    WRITE(ILUOUT,*) TRIM(YRECFM),'NOT FOUND IN THE CHEM FILE ',HCHEMFILE\r
+!callabortstop\r
+    CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)\r
+    CALL ABORT\r
+    STOP\r
+  END IF !IRESP\r
+  YRECFM='KMAX'\r
+  YDIR='--'\r
+  CALL FMREAD(HCHEMFILE,YRECFM,HLUOUT,YDIR,IKMAX,IGRID,ILENCH,         &\r
+              YCOMMENT,IRESP)\r
+  IF (IRESP/=0) THEN\r
+    WRITE(ILUOUT,FMT=9000) \r
+    WRITE(ILUOUT,*) TRIM(YRECFM),'NOT FOUND IN THE CHEM FILE ',HCHEMFILE\r
+!callabortstop\r
+    CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)\r
+    CALL ABORT\r
+    STOP\r
+  END IF !IRESP\r
+  IF ( (IIMAX/=(IIU_ll-2*JPHEXT)) .OR. (IJMAX/=(IJU_ll-2*JPHEXT))      &\r
+                                  .OR. (IKMAX/=(IKU-2*JPVEXT)) ) THEN\r
+    WRITE(ILUOUT,FMT=9000) \r
+    WRITE(ILUOUT,*) 'THE GRIDS ARE DIFFERENT IN THE OUTPUT FILE :'\r
+    WRITE(ILUOUT,*) IIU_ll-2*JPHEXT,'*',IJU_ll-2*JPHEXT,'*',IKU-2*JPVEXT\r
+    WRITE(ILUOUT,*) 'AND IN THE CHEM FILE :',HCHEMFILE\r
+    WRITE(ILUOUT,*) IIMAX,'*',IJMAX,'*',IKMAX\r
+    !callabortstop\r
+    CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)\r
+    CALL ABORT\r
+    STOP\r
+  END IF ! IIMAX\r
+  IF (.NOT.LDUST) THEN\r
+  ! Read scalars in chem file \r
+    DO JSV = NSV_CHEMBEG,NSV_CHEMEND\r
+      YRECFM=TRIM(CNAMES(JSV-NSV_CHEMBEG+1))//'T'\r
+      YDIR='XY'\r
+      CALL FMREAD(HCHEMFILE,YRECFM,HLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH,  &\r
+                  YCOMMENT,IRESP)\r
+      IF (IRESP/=0) THEN\r
+        WRITE(ILUOUT,*) TRIM(YRECFM),'NOT FOUND IN THE CHEM FILE ',HCHEMFILE\r
+        XSVT(:,:,:,JSV) = 0.\r
+      END IF !IRESP\r
+    END DO ! JSV\r
+    IF (ALL(XSVT(:,:,:,NSV_CHEMBEG:NSV_CHEMEND) == 0.)) THEN \r
+      LUSECHEM=.FALSE.\r
+      NEQ = 0\r
+    END IF\r
+  END IF\r
+\r
+  IF (LDUST) THEN\r
+    LDSTINIT=.TRUE.\r
+    LDSTPRES=.FALSE.\r
+    YDESFM=TRIM(ADJUSTL(HCHEMFILE))//'.des'\r
+    CALL FMLOOK_ll(YDESFM,HLUOUT,ILUDES,IRESP)\r
+    CALL POSNAM(ILUDES,'NAM_DUST',GFOUND,ILUOUT)\r
+    IF (GFOUND) READ(UNIT=ILUDES,NML=NAM_DUST)\r
+    CALL INI_NSV(1)\r
+    IMOMENTS = INT(NSV_DSTEND - NSV_DSTBEG+1)/NMODE_DST\r
+    IF (IMOMENTS == 1) THEN\r
+      DO JMODE=1, NMODE_DST\r
+        !Index from which names are picked\r
+        ISV_NAME_IDX = (JPDUSTORDER(JMODE) - 1)*3 + 2\r
+        JSV = (JMODE-1)*IMOMENTS  & !Number of moments previously counted\r
+             +  1                 & !Number of moments in this mode\r
+             + (NSV_DSTBEG -1)      !Previous list of tracers  \r
+        YRECFM = TRIM(YPDUST_INI(ISV_NAME_IDX))//'T'\r
+        YDIR='XY'\r
+        CALL FMREAD(HCHEMFILE,YRECFM,HLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH,  &\r
+                    YCOMMENT,IRESP)\r
+        IF (IRESP/=0) THEN\r
+          WRITE(ILUOUT,FMT=9000) \r
+          WRITE(ILUOUT,*) TRIM(YRECFM),'NOT FOUND IN THE CHEM FILE ',HCHEMFILE\r
+          CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)\r
+          CALL ABORT\r
+          STOP\r
+        END IF !IRESP\r
+      END DO !JMOD\r
+    ELSE  ! IMOMENTS diff 1\r
+      DO JMODE=1,NMODE_DST\r
+        DO JMOM=1,IMOMENTS\r
+          ISV_NAME_IDX = (JPDUSTORDER(JMODE) - 1)*3 + JMOM\r
+          JSV = (JMODE-1)*IMOMENTS  & !Number of moments previously counted\r
+               + JMOM               & !Number of moments in this mode\r
+               + (NSV_DSTBEG -1)      !Previous list of tracers\r
+          YRECFM = TRIM(YPDUST_INI(ISV_NAME_IDX))//'T'\r
+          YDIR='XY'\r
+          CALL FMREAD(HCHEMFILE,YRECFM,HLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH,  &\r
+                      YCOMMENT,IRESP)\r
+          IF (IRESP/=0) THEN\r
+            WRITE(ILUOUT,FMT=9000) \r
+            WRITE(ILUOUT,*) TRIM(YRECFM),' NOT FOUND IN THE CHEM FILE ',HCHEMFILE\r
+            STOP\r
+          END IF !IRESP\r
+        END DO ! JMOM\r
+      END DO !JMOD\r
+    END IF !if IMOMENTS    \r
+  END IF  ! LDUST\r
+\r
+  IF (LSALT) THEN\r
+    LSLTINIT=.TRUE.\r
+    LSLTPRES=.FALSE.\r
+    CALL POSNAM(ILUDES,'NAM_SALT',GFOUND,ILUOUT)\r
+    IF (GFOUND) READ(UNIT=ILUDES,NML=NAM_SALT)\r
+    CALL INI_NSV(1)\r
+    IMOMENTS = INT(NSV_SLTEND - NSV_SLTBEG+1)/NMODE_SLT\r
+    IF (IMOMENTS == 1) THEN\r
+      DO JMODE=1, NMODE_SLT\r
+        !Index from which names are picked\r
+        ISV_NAME_IDX = (JPSALTORDER(JMODE) - 1)*3 + 2\r
+        JSV = (JMODE-1)*IMOMENTS  & !Number of moments previously counted\r
+             +  1                 & !Number of moments in this mode\r
+             + (NSV_SLTBEG -1)      !Previous list of tracers  \r
+        YRECFM = TRIM(YPSALT_INI(ISV_NAME_IDX))//'T'\r
+        YDIR='XY'\r
+        CALL FMREAD(HCHEMFILE,YRECFM,HLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH,  &\r
+                    YCOMMENT,IRESP)\r
+        IF (IRESP/=0) THEN\r
+          WRITE(ILUOUT,FMT=9000) \r
+          WRITE(ILUOUT,*) TRIM(YRECFM),'NOT FOUND IN THE CHEM FILE ',HCHEMFILE\r
+          CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)\r
+          CALL ABORT\r
+          STOP\r
+        END IF !IRESP\r
+      END DO !JMOD\r
+    ELSE  ! IMOMENTS\r
+      DO JMODE=1,NMODE_SLT\r
+        DO JMOM=1,IMOMENTS\r
+          ISV_NAME_IDX = (JPSALTORDER(JMODE) - 1)*3 + JMOM\r
+          JSV = (JMODE-1)*IMOMENTS  & !Number of moments previously counted\r
+               + JMOM               & !Number of moments in this mode\r
+               + (NSV_SLTBEG -1)      !Previous list of tracers\r
+          YRECFM = TRIM(YPSALT_INI(ISV_NAME_IDX))//'T'\r
+          YDIR='XY'\r
+          CALL FMREAD(HCHEMFILE,YRECFM,HLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH,  &\r
+                      YCOMMENT,IRESP)\r
+          IF (IRESP/=0) THEN\r
+            WRITE(ILUOUT,FMT=9000) \r
+            WRITE(ILUOUT,*) TRIM(YRECFM),' NOT FOUND IN THE CHEM FILE ',HCHEMFILE\r
+            STOP\r
+          END IF !IRESP\r
+        END DO ! JMOM\r
+      END DO !JMOD\r
+    END IF !if IMOMENTS    \r
+  END IF  ! LSALT\r
+\r
+  DO JSV = NSV_AERBEG,NSV_AEREND\r
+    YRECFM=TRIM(CAERONAMES(JSV-NSV_AERBEG+1))//'T'\r
+    YDIR='XY'\r
+    CALL FMREAD(HCHEMFILE,YRECFM,HLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH,  &\r
+                YCOMMENT,IRESP)\r
+    IF (IRESP/=0) THEN\r
+      WRITE(ILUOUT,FMT=9000) \r
+      WRITE(ILUOUT,*) TRIM(YRECFM),'NOT FOUND IN THE CHEM FILE ',HCHEMFILE\r
+!callabortstop\r
+!CALL ABORT\r
+!      STOP\r
+      LORILAM=.FALSE.\r
+    END IF !IRESP\r
+  END DO ! JSV\r
+  CALL FMCLOS_ll(HCHEMFILE,'KEEP',HLUOUT,IRESP)\r
+\r
+ELSE ! HCHEMFILE\r
+  IF (NSV >=1) THEN\r
+    ALLOCATE(XSVT(IIU,IJU,IKU,NSV))\r
+    XSVT(:,:,:,:)=PSV_MX(:,:,:,:)\r
+  ELSE !NSV\r
+    ALLOCATE(XSVT(0,0,0,0))\r
+  END IF ! NSV\r
+ENDIF ! HCHEMFILE\r
+!-------------------------------------------------------------------------------\r
+!\r
+!*       4.    2D LARGE SCALE FIELDS FOR LBC\r
+!              -----------------------------\r
+!\r
+!\r
+IF (CTURB /= 'NONE') THEN\r
+  IF ( LHORELAX_TKE) THEN\r
+    ALLOCATE(XLBXTKEM(2*NRIMX+2,IJU,IKU))\r
+    ALLOCATE(XLBYTKEM(IIU,2*NRIMY+2,IKU))\r
+  ELSE\r
+    ALLOCATE(XLBXTKEM(2,IJU,IKU))\r
+    ALLOCATE(XLBYTKEM(IIU,2,IKU))\r
+  END IF \r
+  !       \r
+  ILBX=SIZE(XLBXTKEM,1)/2-1     \r
+  XLBXTKEM(1:ILBX+1,:,:)         = XTKET(IIB-1:IIB-1+ILBX,:,:)\r
+  XLBXTKEM(ILBX+2:2*ILBX+2,:,:)  = XTKET(IIE+1-ILBX:IIE+1,:,:)\r
+  ILBY=SIZE(XLBYTKEM,2)/2-1\r
+  XLBYTKEM(:,1:ILBY+1,:)        = XTKET(:,IJB-1:IJB-1+ILBY,:)\r
+  XLBYTKEM(:,ILBY+2:2*ILBY+2,:) = XTKET(:,IJE+1-ILBY:IJE+1,:)\r
+ELSE\r
+  ALLOCATE(XLBXTKEM(0,0,0))\r
+  ALLOCATE(XLBYTKEM(0,0,0))\r
+END IF  \r
+!\r
+IF ( NSV > 0 ) THEN \r
+  IF ( ANY( LHORELAX_SV(:)) ) THEN\r
+    ALLOCATE(XLBXSVM(2*NRIMX+2,IJU,IKU,NSV))\r
+    ALLOCATE(XLBYSVM(IIU,2*NRIMY+2,IKU,NSV))\r
+  ELSE\r
+    ALLOCATE(XLBXSVM(2,IJU,IKU,NSV))\r
+    ALLOCATE(XLBYSVM(IIU,2,IKU,NSV))\r
+  END IF\r
+  !       \r
+  ILBX=SIZE(XLBXSVM,1)/2-1     \r
+  XLBXSVM(1:ILBX+1,:,:,:)         = XSVT(IIB-1:IIB-1+ILBX,:,:,:)\r
+  XLBXSVM(ILBX+2:2*ILBX+2,:,:,:)  = XSVT(IIE+1-ILBX:IIE+1,:,:,:)\r
+  ILBY=SIZE(XLBYSVM,2)/2-1\r
+  XLBYSVM(:,1:ILBY+1,:,:)        = XSVT(:,IJB-1:IJB-1+ILBY,:,:)\r
+  XLBYSVM(:,ILBY+2:2*ILBY+2,:,:) = XSVT(:,IJE+1-ILBY:IJE+1,:,:)\r
+ELSE\r
+  ALLOCATE(XLBXSVM(0,0,0,0))\r
+  ALLOCATE(XLBYSVM(0,0,0,0))\r
+END IF\r
+!\r
+!\r
+NSIZELBXTKE_ll=SIZE(XLBXTKEM,1)\r
+NSIZELBYTKE_ll=SIZE(XLBYTKEM,2)\r
+NSIZELBXSV_ll =SIZE(XLBXSVM,1)\r
+NSIZELBYSV_ll =SIZE(XLBYSVM,2)\r
+!\r
+!-------------------------------------------------------------------------------\r
+9000  FORMAT(/,'FATAL ERROR IN INI_PROG_VAR : ',/, &\r
+             '--------------------------------------' )\r
+!\r
+END SUBROUTINE INI_PROG_VAR\r
index 5469f9e..a53621e 100755 (executable)
@@ -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
index 3e17e72..33fee06 100644 (file)
@@ -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)
 !
index 2f572fc..3c4c277 100644 (file)
@@ -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))
index a482baf..1ac1053 100644 (file)
@@ -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  
index ffd80ff..db4d3a1 100644 (file)
@@ -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 
index 11af88d..6c5bdbb 100644 (file)
@@ -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
index c3255db..a8fc1fa 100644 (file)
@@ -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
index 4e4ee86..d593b0a 100644 (file)
@@ -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
index 0eb5721..b1aa753 100644 (file)
@@ -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
index bfbb693..051f3e5 100644 (file)
@@ -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
 !
 !
index 5b9647e..dc01e60 100644 (file)
@@ -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)
index 5ad7ff5..7981183 100644 (file)
@@ -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 
 #
index cbcdbcd..8f3539b 100644 (file)
@@ -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))  
index 9c6bca0..8a35968 100644 (file)
@@ -369,23 +369,26 @@ 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
       IF (LDATA_RE25) 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
 !
index 42ed910..97457ce 100644 (file)
@@ -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
 !
 !-----------
index b466b8a..5f459a4 100644 (file)
@@ -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
@@ -470,6 +472,15 @@ 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)
 !
 !* Allocate soil variable profile
@@ -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)
index 9271f50..4635232 100644 (file)
@@ -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
 !
index ed6fea2..bbf1ecc 100644 (file)
@@ -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
@@ -537,8 +539,6 @@ IF (CPHOTO/='NON') THEN
   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
    XP_ANMAX      => XBLOCK_SIMPLE(:,ISIZE_SIMPLE)
@@ -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)
index 35dc68c..c2d37c7 100644 (file)
@@ -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
index 57536f7..87bb475 100644 (file)
@@ -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))
index 1ee18cd..6ac9865 100644 (file)
@@ -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
 !              -------------------------
index 8bd33e3..a6dd978 100755 (executable)
@@ -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
 "}
               ;;
 
index cccadd7..359ac6d 100755 (executable)
@@ -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
index 49e55e0..35c5400 100755 (executable)
@@ -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
index b8b4914..380dd3f 100755 (executable)
@@ -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 "
index 8d47c2f..087efbf 100755 (executable)
@@ -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 "
index ad8fda3..71c274e 100755 (executable)
@@ -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 "
index 4b9bc08..ae30bf4 100755 (executable)
@@ -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
index 69a2b5b..cc2a070 100755 (executable)
@@ -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
index 82db441..0ab6654 100755 (executable)
@@ -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 "
index 3967524..1b6962a 100755 (executable)
@@ -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 "
index 69ea510..817689d 100755 (executable)
@@ -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
 
index c29c6fd..177a1a5 100755 (executable)
@@ -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
index 3e310f0..34f3d56 100755 (executable)
@@ -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
 
index 62b67f6..7923416 100755 (executable)
@@ -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
index 3cf2b07..a1c17fa 100755 (executable)
@@ -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.$$
index 92e8308..113a644 100755 (executable)
@@ -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
index c132d8e..a9533fd 100755 (executable)
@@ -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
index e3ad9d0..5bca938 100644 (file)
@@ -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
index ae124aa..7fb453b 100755 (executable)
@@ -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
index b167685..e6eeca5 100755 (executable)
@@ -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
index e81a205..b46512a 100755 (executable)
@@ -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
index d589fde..eb327fc 100644 (file)
@@ -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