Juan 15/09/2015: WENO5 & JPHEXT<>1 variable
authorJuan Escobar <juan.escobar@aero.obs-mip.fr>
Wed, 16 Sep 2015 14:33:15 +0000 (14:33 +0000)
committerPhilippe WAUTELET <philippe.wautelet@aero.obs-mip.fr>
Thu, 19 May 2016 14:44:49 +0000 (16:44 +0200)
156 files changed:
MY_RUN/KTEST/001_2Drelief/001_prep_ideal_case/PRE_IDEA1.nam
MY_RUN/KTEST/001_2Drelief/002_mesonh/EXSEG1.nam
MY_RUN/KTEST/002_3Drelief/001_prep_ideal_case/PRE_IDEA1.nam
MY_RUN/KTEST/002_3Drelief/002_mesonh/EXSEG1.nam
MY_RUN/KTEST/003_KW78/001_prep_ideal_case/PRE_IDEA1.nam
MY_RUN/KTEST/003_KW78/002_mesonh/EXSEG1.nam
MY_RUN/KTEST/004_Reunion/001_prep_pgd/PRE_PGD1.nam
MY_RUN/KTEST/004_Reunion/002_prep_ideal_case/PRE_IDEA1.nam
MY_RUN/KTEST/004_Reunion/003_mesonh/EXSEG1.nam
MY_RUN/KTEST/007_16janvier/001_pgd1/PRE_PGD1.nam
MY_RUN/KTEST/007_16janvier/002_pgd2/PRE_PGD1.nam
MY_RUN/KTEST/007_16janvier/003_nest/PRE_NEST_PGD1.nam
MY_RUN/KTEST/007_16janvier/004_arp2lfi/PRE_REAL1.nam
MY_RUN/KTEST/007_16janvier/006_preal/PRE_REAL1.nam
MY_RUN/KTEST/007_16janvier/008_run2/EXSEG1.nam.src
MY_RUN/KTEST/012_dust/001_pgd1/PRE_PGD1.nam
MY_RUN/KTEST/012_dust/002_ecmwf2lfi/PRE_REAL1.nam.20000924.00
MY_RUN/KTEST/012_dust/002_ecmwf2lfi/PRE_REAL1.nam.20000924.12
MY_RUN/KTEST/012_dust/002_ecmwf2lfi/PRE_REAL1.nam.20000925.00
MY_RUN/KTEST/012_dust/002_ecmwf2lfi/run_ecmwf2lfi_xyz
MY_RUN/KTEST/012_dust/003_run/EXSEG1.nam
src/LIB/SURCOUCHE/src/fmread_ll.f90
src/LIB/SURCOUCHE/src/fmwrit_ll.f90
src/LIB/SURCOUCHE/src/mode_distriblb.f90
src/LIB/SURCOUCHE/src/mode_double_double.f90
src/LIB/SURCOUCHE/src/mode_exchange2_ll.f90
src/LIB/SURCOUCHE/src/mode_exchange_ll.f90
src/LIB/SURCOUCHE/src/mode_mppdb.f90
src/LIB/SURCOUCHE/src/mode_nest_ll.f90
src/LIB/SURCOUCHE/src/mode_sum_ll.f90
src/LIB/SURCOUCHE/src/mode_tools_ll.f90
src/MNH/adv_boundaries.f90
src/MNH/advec_3rd_order_aux.f90
src/MNH/advecmet_4th.f90
src/MNH/advecscalar_4th.f90
src/MNH/advection_metsv.f90
src/MNH/advection_uvw.f90
src/MNH/advecuvw_rk.f90
src/MNH/advecuvw_weno_k.f90
src/MNH/anel_balancen.f90
src/MNH/bikhardt.f90
src/MNH/boundaries.f90
src/MNH/budget.f90
src/MNH/call_rttov.f90
src/MNH/ch_aqueous_sedim1mom.f90
src/MNH/ch_aqueous_sedimc2r2.f90
src/MNH/ch_aqueous_sedimkhko.f90
src/MNH/ch_aqueous_tmicc2r2.f90
src/MNH/ch_aqueous_tmicice.f90
src/MNH/ch_aqueous_tmickess.f90
src/MNH/ch_aqueous_tmickhko.f90
src/MNH/change_gribex_var.f90
src/MNH/check_zs.f90
src/MNH/convection.f90
src/MNH/define_maskn.f90
src/MNH/dflux_corr.f90
src/MNH/diag.f90
src/MNH/dyn_sources.f90
src/MNH/elec_trid.f90
src/MNH/endstep.f90
src/MNH/extract_vortex.f90
src/MNH/fast_terms.f90
src/MNH/fill_sonfieldn.f90
src/MNH/flash_geom_elec.f90
src/MNH/get_sizex_lb.f90
src/MNH/get_sizey_lb.f90
src/MNH/gradient_m.f90
src/MNH/gravity.f90
src/MNH/ice_adjust.f90
src/MNH/ice_adjust_elec.f90
src/MNH/ini_lb.f90
src/MNH/ini_les_cart_maskn.f90
src/MNH/ini_modeln.f90
src/MNH/ini_one_wayn.f90
src/MNH/ini_prog_var.f90
src/MNH/ini_segn.f90
src/MNH/ini_size_spawn.f90
src/MNH/ini_sizen.f90
src/MNH/ini_spawn_lsn.f90
src/MNH/interp3d.f90
src/MNH/ion_attach_elec.f90
src/MNH/ion_bound4drift.f90
src/MNH/ion_drift.f90
src/MNH/khko_notadjust.f90
src/MNH/lidar.f90
src/MNH/mesonh.f90
src/MNH/mnhopen_aux_io_surf.f90
src/MNH/modd_conf.f90
src/MNH/modd_parameters.f90
src/MNH/mode_gridcart.f90
src/MNH/mode_interpol_beam.f90
src/MNH/modeln.f90
src/MNH/modn_conf.f90
src/MNH/num_diff.f90
src/MNH/one_wayn.f90
src/MNH/open_nestpgd_files.f90
src/MNH/pgdfilter.f90
src/MNH/polar_calc.f90
src/MNH/polar_mean.f90
src/MNH/prep_ideal_case.f90
src/MNH/prep_nest_pgd.f90
src/MNH/prep_pgd.f90
src/MNH/prep_real_case.f90
src/MNH/pressure_in_prep.f90
src/MNH/pressurez.f90
src/MNH/qlap.f90
src/MNH/rad_bound.f90
src/MNH/radar_simulator.f90
src/MNH/radtr_satel.f90
src/MNH/rain_c2r2_khko.f90
src/MNH/rain_ice.f90
src/MNH/rain_ice_elec.f90
src/MNH/read_exsegn.f90
src/MNH/read_hgridn.f90
src/MNH/read_prc_fmfile.f90
src/MNH/relaxation.f90
src/MNH/resolved_cloud.f90
src/MNH/resolved_elecn.f90
src/MNH/retrieve2_nest_infon.f90
src/MNH/series_cloud_elec.f90
src/MNH/set_advfrc.f90
src/MNH/set_cstn.f90
src/MNH/set_dircos.f90
src/MNH/set_mass.f90
src/MNH/set_msk.f90
src/MNH/set_perturb.f90
src/MNH/set_relfrc.f90
src/MNH/set_rsou.f90
src/MNH/shuman.f90
src/MNH/slow_terms.f90
src/MNH/spawn_grid2.f90
src/MNH/spawn_model2.f90
src/MNH/spawn_zs.f90
src/MNH/spawning.f90
src/MNH/tke_eps_sources.f90
src/MNH/tridz.f90
src/MNH/turb_hor_dyn_corr.f90
src/MNH/turb_hor_splt.f90
src/MNH/turb_ver_dyn_flux.f90
src/MNH/two_wayn.f90
src/MNH/update_lm.f90
src/MNH/update_metrics.f90
src/MNH/ver_dyn.f90
src/MNH/ver_int_thermo.f90
src/MNH/ver_interp_to_mixed_grid.f90
src/MNH/ver_prep_mesonh_case.f90
src/MNH/ver_thermo.f90
src/MNH/vert_coord.f90
src/MNH/write_lbn.f90
src/MNH/write_lfifm1_for_diag_supp.f90
src/MNH/write_lfifmn_fordiachron.f90
src/MNH/write_lfin.f90
src/MNH/write_seriesn.f90
src/MNH/write_surf_mnh.f90
src/MNH/zsect.f90
src/MNH/zsmt_pgd.f90

index 07695c0..dc7ea35 100644 (file)
@@ -3,7 +3,9 @@
 &NAM_VER_GRID NKMAX=48 ZDZGRD=40., ZDZTOP=500.,
               ZZMAX_STRGRD=5000. , ZSTRGRD=10. , ZSTRTOP= 10. /
 &NAM_CONF_PRE LCARTESIAN=.TRUE., LBOUSS=.FALSE., NVERB=5,
-              CIDEAL='RSOU', CZS='BELL',LSHIFT=F /
+              CIDEAL='RSOU', CZS='BELL',LSHIFT=F 
+              !JPHEXT = 3 , NHALO = 3 
+              /
 &NAM_CONFn LUSERV=.TRUE. /
 &NAM_GRID_PRE XLAT0=43.29 /
 &NAM_GRIDH_PRE XDELTAX=5.E3, XDELTAY=5.E3,
index c516f48..7bd4ee0 100644 (file)
@@ -11,7 +11,9 @@
 &NAM_TURBn XIMPL = 1., CTURBLEN = "DELT", CTURBDIM = "3DIM", 
           LTURB_DIAG = T, LTURB_FLX = T /
 &NAM_CONF CCONF = "START", LFLAT = F, NMODEL = 1, NVERB = 5, 
-          CEXP = "EXPER", CSEG = "HYD2D" /
+          CEXP = "EXPER", CSEG = "HYD2D" 
+          !JPHEXT=3 NHALO=3
+          /
 &NAM_DYN XSEGLEN =1080., XASSELIN = 0.2, LCORIO = F, 
          XALKTOP = 0.005, XALZBOT = 12570., LNUMDIFU =.T. /
 &NAM_FMOUT XFMOUT(1,1) = 360., XFMOUT(1,2) = 720., XFMOUT(1,3) = 1080. /
index 5bd73e3..d11657a 100644 (file)
@@ -8,7 +8,9 @@
                           CEQNSYS='LHE'
                           CZS='BELL'
                           CIDEAL='CSTN'
-                          NVERB=1 /
+                          NVERB=1 
+                          !JPHEXT = 3 , NHALO = 3 
+                          /
 &NAM_CONFn LUSERV=.FALSE. LUSERC=.FALSE. LUSERR=.FALSE.
            LUSERI=.FALSE. LUSERS=.FALSE. LUSERG=.FALSE. LUSERH=.FALSE. /
 &NAM_GRID_PRE XLAT0=43.29 /
index 1dde7f0..289c484 100644 (file)
@@ -12,8 +12,9 @@
 &NAM_LBCn  CLBCX = 2*"OPEN", CLBCY = 2*"OPEN" /
 &NAM_CONF  CCONF = "START", NMODEL = 1,
            CSPLIT='BSPLITTING' ,
-           NVERB = 5, CEXP = "REL3D", CSEG = "EXP01" ,
-             /
+           NVERB = 5, CEXP = "REL3D", CSEG = "EXP01"  
+           !JPHEXT=3 NHALO=3
+           /
 &NAM_DYN  XSEGLEN = 1000., XASSELIN = 0.2, LCORIO = F,
           XALKTOP = 0.005, XALZBOT = 12570.,
           LNUMDIFU =.F. /
index 3653563..811e8fa 100644 (file)
@@ -7,7 +7,9 @@
              CIDEAL='RSOU' CZS='FLAT' 
               LBOUSS=.FALSE.  LPERTURB=.TRUE. 
              CEQNSYS='LHE',LSHIFT=.TRUE.,
-             NVERB=5 /
+             NVERB=5 
+              !JPHEXT = 3 , NHALO = 3 
+              /
 &NAM_PERT_PRE CPERT_KIND= 'TH' , XAMPLITH= 1.5 ,
               LSET_RHU= .FALSE. , XAMPLIRV= 0. ,
               XCENTERZ= 1692.31
index 675c5be..2866252 100644 (file)
@@ -16,7 +16,9 @@
 &NAM_CONF  CCONF = "START", NMODEL = 1,
            LFLAT = T, NVERB = 5,
            CEXP = "KWRAI", CSEG = "SG520" ,
-           CSPLIT='BSPLITTING' /
+           CSPLIT='BSPLITTING' 
+           !JPHEXT=3 NHALO=3
+           /
 &NAM_DYN  XSEGLEN = 1800.,
           XASSELIN = 0.2, LCORIO = F,
           LNUMDIFU = T /
index fd71d77..1316b5c 100644 (file)
@@ -1,4 +1,7 @@
 &NAM_CONFIO  LCDF4=T, LLFIOUT=T, LLFIREAD=F /
+&NAM_CONF_PGD
+ !JPHEXT = 3 , NHALO_MNH = 3
+/
 &NAM_CONFZ 
  ! NZ_VERB=5 , NB_PROCIO_W=8 
 /
index 5932469..fecdb79 100644 (file)
@@ -7,7 +7,9 @@
 &NAM_CONF_PRE LCARTESIAN= F
               LBOUSS= F  CEQNSYS='LHE'
               CIDEAL='CSTN'
-              NVERB=5 /
+              NVERB=5 
+              !JPHEXT = 3 , NHALO = 3 
+              /
 &NAM_CONFn LUSERV=T /
 &NAM_LUNITn CINIFILE = 'REUNION_IDEA_520',CINIFILEPGD = 'REUNION_PGD_1km5_520' /
 &NAM_DYNn_PRE 
index 76ae1d3..91cd055 100644 (file)
@@ -19,7 +19,9 @@
              NBJSLICE=1 NJSLICEL(1)=30 NJSLICEH(1)=35 /
 &NAM_CONF  CCONF = "START", NMODEL = 1,
            NVERB = 5, CEXP = "REUNI", CSEG = "00A20" ,
-           CSPLIT="BSPLITTING" /
+           CSPLIT="BSPLITTING" 
+           !JPHEXT =3 , NHALO = 3 
+           /
 &NAM_DYN  XSEGLEN = 40.,
           LCORIO = F, LNUMDIFU = F,
           XALKTOP = 0.01, XALZBOT = 14000. /
index e13f005..1dfcd78 100644 (file)
@@ -1,4 +1,7 @@
 &NAM_CONFIO  LCDF4=T, LLFIOUT=T, LLFIREAD=F /
+&NAM_CONF_PGD  
+    !JPHEXT = 3 , NHALO_MNH = 3 
+    /
 &NAM_PGDFILE CPGDFILE='16JAN98_36km' /
 &NAM_CONF_PROJ XLAT0=50., XLON0=-2.8, XRPK=0.58, XBETA=0. /
 &NAM_CONF_PROJ_GRID XLATCEN=48.,  XLONCEN=-1.,
index cb72d17..13c2bc4 100644 (file)
@@ -1,4 +1,7 @@
 &NAM_CONFIO  LCDF4=T, LLFIOUT=T, LLFIREAD=F /
+&NAM_CONF_PGD 
+   ! JPHEXT = 3 , NHALO_MNH = 3 
+   /
 &NAM_PGDFILE CPGDFILE='16JAN98_9km' /
 &NAM_PGD_GRID YINIFILE='16JAN98_36km' YFILETYPE='MESONH' /
 &NAM_INIFILE_CONF_PROJ IXOR=10, IYOR=10, IXSIZE=10, IYSIZE=10, IDXRATIO=4, IDYRATIO=4 /
index 0d51439..c19fd59 100644 (file)
@@ -1,4 +1,7 @@
 &NAM_CONFIO  LCDF4=T, LLFIOUT=T, LLFIREAD=F /
+&NAM_CONF_NEST 
+    !JPHEXT =3 , NHALO_MNH = 3 
+    /
 &NAM_PGD1 YPGD1 = '16JAN98_36km' /
 &NAM_PGD2 YPGD2 = '16JAN98_9km', IDAD = 1 /
 &NAM_NEST_PGD YNEST = 'e1' /
index bd6b5b9..681314c 100644 (file)
@@ -2,6 +2,9 @@
 &NAM_CONFZ
   ! NZ_VERB=5 , NZ_PROC=0 , NB_PROCIO_R=1 , NB_PROCIO_W=1
 /
+&NAM_REAL_CONF NVERB=5 , CPRESOPT='ZRESI' 
+               !JPHEXT=3 , NHALO=3 
+               /
 &NAM_FILE_NAMES HATMFILE ='arpifs.AN.19980116.06' , HATMFILETYPE='GRIBEX',
                 HPGDFILE ='16JAN98_36km.neste1' , CINIFILE='16JAN_06_MNH' /
 &NAM_VER_GRID NKMAX=50, YZGRID_TYPE='FUNCTN',
index d48201b..963196c 100644 (file)
@@ -1,7 +1,9 @@
 &NAM_CONFIO  LCDF4=T, LLFIOUT=T, LLFIREAD=F /
 &NAM_FILE_NAMES HATMFILE ='16JAN_06_MNH.spa04' , HATMFILETYPE='MESONH',
                 HPGDFILE ='16JAN98_9km.neste1' , CINIFILE='16JAN_06_MNH2' /
-&NAM_REAL_CONF NVERB=5 /
+&NAM_REAL_CONF NVERB=5 
+              !JPHEXT=3 , NHALO=3 
+              /
 &NAM_VER_GRID NKMAX=50, YZGRID_TYPE='FUNCTN',
        ZDZGRD=60., ZDZTOP=700.,
        ZZMAX_STRGRD=2500., ZSTRGRD=9., ZSTRTOP=7. /
index 04a583e..0907427 100644 (file)
 &NAM_LBCn  CLBCX = 2*"OPEN", CLBCY = 2*"OPEN" /
 &NAM_TURBn  CTURBLEN = "BL89", CTURBDIM = "1DIM", LSUBG_COND = F /
 &NAM_CH_MNHCn LUSECHEM = F /
-&NAM_CONF  CCONF = "START", NVERB=5, NMODEL = 2,
+&NAM_CONF  CCONF = "START", NVERB=5, NMODEL = 2, 
             CEXP = "16JAN", CSEG = "12B18" ,
-            CSPLIT='BSPLITTING' /
+            CSPLIT='BSPLITTING' 
+            !NHALO=3 JPHEXT=3 
+            /
 &NAM_DYN  XSEGLEN = 300., LCORIO = T, LNUMDIFU = T,
            XALKTOP = 0.001, XALZBOT = 14500. /
 &NAM_NESTING NDAD(2) = 1, NDTRATIO(2) = 4, XWAY(2) = 2. /
index 5e0cdd9..f088430 100644 (file)
@@ -1,5 +1,9 @@
 &NAM_CONFIO  LCDF4=T, LLFIOUT=T, LLFIREAD=F /
 &NAM_PGDFILE CPGDFILE='pgd_dust_30km' /
+&NAM_CONF_PGD
+   JPHEXT = 3   
+   NHALO_MNH = 3
+/
 &NAM_CONF_PROJ
  XRPK=1.,
  XBETA=0.,
index 79d93a7..b162feb 100644 (file)
@@ -5,7 +5,8 @@
 &NAM_AERO_CONF  LORILAM=.FALSE., LDUST=.TRUE. /
 &NAM_REAL_CONF  NVERB=5,
                CEQNSYS='DUR',
-               CPRESOPT='RICHA' /
+               CPRESOPT='RICHA' 
+                JPHEXT=3 , NHALO=3 /
 &NAM_VER_GRID   NKMAX=30,
                 YZGRID_TYPE='FUNCTN',
                 ZDZGRD=100.,
index 5699a36..0eb65d7 100644 (file)
@@ -5,7 +5,8 @@
 &NAM_AERO_CONF  LORILAM=.FALSE., LDUST=.TRUE. /
 &NAM_REAL_CONF  NVERB=5,
                CEQNSYS='DUR',
-               CPRESOPT='RICHA' /
+               CPRESOPT='RICHA' 
+                JPHEXT=3 , NHALO=3 /
 &NAM_VER_GRID   NKMAX=30,
                 YZGRID_TYPE='FUNCTN',
                 ZDZGRD=100.,
index 2ba0e78..2cb7fb4 100644 (file)
@@ -5,7 +5,8 @@
 &NAM_AERO_CONF  LORILAM=.FALSE., LDUST=.TRUE. /
 &NAM_REAL_CONF  NVERB=5,
                CEQNSYS='DUR',
-               CPRESOPT='RICHA' /
+               CPRESOPT='RICHA' 
+                JPHEXT=3 , NHALO=3 /
 &NAM_VER_GRID   NKMAX=30,
                 YZGRID_TYPE='FUNCTN',
                 ZDZGRD=100.,
index 9ce39fc..d3251c3 100755 (executable)
@@ -23,6 +23,8 @@ cp PRE_REAL1.nam.20000924.00 PRE_REAL1.nam
 time ${MONORUN} PREP_REAL_CASE${XYZ}
 mv OUTPUT_LISTING0 OUTPUT_LISTING0_2400
 
+#exit 
+
 cp PRE_REAL1.nam.20000924.12 PRE_REAL1.nam
 time ${MONORUN} PREP_REAL_CASE${XYZ}
 mv OUTPUT_LISTING0 OUTPUT_LISTING0_2412
index 9d2b6ca..f836380 100644 (file)
@@ -1,8 +1,9 @@
 &NAM_CONFIO  LCDF4=T, LLFIOUT=T, LLFIREAD=F /
 &NAM_LUNITn 
             CINIFILE = "S7020000924.00",
-            CINIFILEPGD = "pgd_dust_30km",
-            CCPLFILE(1) = "S7020000924.12" /
+            CINIFILEPGD = "pgd_dust_30km" 
+            CCPLFILE(1) = "S7020000924.12" 
+            /
 &NAM_DYNn   
             XTSTEP = 40.,
             CPRESOPT = "CRESI",
@@ -53,7 +54,8 @@
             NMODEL = 1, 
             NVERB = 5,
             CEXP = "DUST7",
-            CSEG = "SEG01" /
+            CSEG = "SEG01" 
+            JPHEXT=3 , NHALO=3 /
 &NAM_DYN 
             XSEGLEN = 43200,
             XASSELIN = 0.2,
index 5ef3a57..dcac539 100644 (file)
@@ -24,6 +24,7 @@ MODULE MODE_FMREAD
 !  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
+!  J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 
 !
 USE MODD_MPIF
 #if defined(MNH_IOCDF4)
@@ -1858,8 +1859,8 @@ IF (ASSOCIATED(TZFD)) THEN
             CALL FM_READ_ll(TZFD%FLU,HRECFM,.TRUE.,SIZE(Z3D),Z3D,TZFMH,IRESP)
          END IF
       END IF
-      PLB(1:KRIM+1,:,:)          = Z3D(1:KRIM+1,:,:)
-      PLB(KRIM+2:2*(KRIM+1),:,:) = Z3D(KL3D-KRIM:KL3D,:,:)
+      PLB(1:KRIM+JPHEXT,:,:)          = Z3D(1:KRIM+JPHEXT,:,:)
+      PLB(KRIM+JPHEXT+1:2*(KRIM+JPHEXT),:,:) = Z3D(KL3D-KRIM-JPHEXT+1:KL3D,:,:)
     ELSE !(HLBTYPE == 'LBY' .OR. HLBTYPE == 'LBYV') 
       ALLOCATE(Z3D(SIZE(PLB,1),KL3D,SIZE(PLB,3)))
       Z3D = 0.0
@@ -1895,7 +1896,7 @@ IF (ASSOCIATED(TZFD)) THEN
            END IF
         END IF
         ! erase gap in LB field
-        Z3D(KRIM+2:2*(KRIM+1),:,:) = Z3D(KL3D-KRIM:KL3D,:,:)
+        Z3D(KRIM+JPHEXT+1:2*(KRIM+JPHEXT),:,:) = Z3D(KL3D-KRIM-JPHEXT+1:KL3D,:,:)
       ELSE !(HLBTYPE == 'LBY' .OR. HLBTYPE == 'LBYV') 
         ALLOCATE(Z3D(IIMAX_ll+2*JPHEXT,KL3D,SIZE(PLB,3)))
         Z3D = 0.0
@@ -1905,7 +1906,7 @@ IF (ASSOCIATED(TZFD)) THEN
            CALL FM_READ_ll(TZFD%FLU,HRECFM,.TRUE.,SIZE(Z3D),Z3D,TZFMH,IRESP)
         END IF
         ! erase gap in LB field
-        Z3D(:,KRIM+2:2*(KRIM+1),:) = Z3D(:,KL3D-KRIM:KL3D,:)
+        Z3D(:,KRIM+JPHEXT+1:2*(KRIM+JPHEXT),:) = Z3D(:,KL3D-KRIM-JPHEXT+1:KL3D,:)
       END IF
       CALL SECOND_MNH2(T1)
       TIMEZ%T_READLB_READ=TIMEZ%T_READLB_READ + T1 - T0
index 66ef116..219632a 100644 (file)
@@ -10,6 +10,8 @@
 ! $Revision$ 
 ! $Date$
 !-----------------------------------------------------------------
+!Correction :
+!  J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 
 !-----------------------------------------------------------------
 
 #ifdef MNH_MPI_DOUBLE_PRECISION
@@ -2544,7 +2546,7 @@ CONTAINS
     IRESP = 0
     YFNLFI=TRIM(ADJUSTL(HFILEM))//'.lfi'
     !print * , ' Writing Article LB ' , HRECFM
-    IF (KL3D /= 2*(KRIM+1)) THEN
+    IF (KL3D /= 2*(KRIM+JPHEXT)) THEN
        IRESP = -30
        GOTO 1000
     END IF
@@ -2557,7 +2559,7 @@ CONTAINS
           TZFMH%COMLEN=KLENCH
           TZFMH%COMMENT=HCOMMENT
           IF (LPACK .AND. L2D) THEN
-             TX3DP=>PLB(:,2:2,:)
+             TX3DP=>PLB(:,JPHEXT+1:JPHEXT+1,:)
 #ifdef MNH_NCWRIT
                IF ( DEF_NC .AND. LLFIFM ) THEN
              CALL FM_WRIT_ll(TZFD%FLU,HRECFM,.TRUE.,SIZE(TX3DP),TX3DP,TZFMH,IRESP)
@@ -2581,9 +2583,9 @@ CONTAINS
              ! I/O proc case
              CALL GET_GLOBALDIMS_ll(IIMAX_ll,IJMAX_ll)
              IF (HLBTYPE == 'LBX' .OR. HLBTYPE == 'LBXU') THEN 
-                ALLOCATE(Z3D((KRIM+1)*2,IJMAX_ll+2*JPHEXT,SIZE(PLB,3)))
+                ALLOCATE(Z3D((KRIM+JPHEXT)*2,IJMAX_ll+2*JPHEXT,SIZE(PLB,3)))
              ELSE ! HLBTYPE == 'LBY' .OR. HLBTYPE == 'LBYV' 
-                ALLOCATE(Z3D(IIMAX_ll+2*JPHEXT,(KRIM+1)*2,SIZE(PLB,3)))
+                ALLOCATE(Z3D(IIMAX_ll+2*JPHEXT,(KRIM+JPHEXT)*2,SIZE(PLB,3)))
              END IF
              DO JI = 1,ISNPROC
                 CALL GET_DISTRIB_LB(HLBTYPE,JI,'FM','WRITE',KRIM,IIB,IIE,IJB,IJE)
index 8509ab6..e3d13ec 100644 (file)
@@ -10,6 +10,8 @@
 ! $Revision$ 
 ! $Date$
 !-----------------------------------------------------------------
+!Correction :
+!  J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 
 !-----------------------------------------------------------------
 
 !     #############################
@@ -171,20 +173,20 @@ IF (KRIMX /=0) THEN
   IF (OLU) THEN
 ! full LB zone for u grid point  : 2:NRIMX+2,1:NJMAX_ll+ 2 * JPHEXT
     IXOR=2
-    IXEND=KRIMX+2
+    IXEND=KRIMX+JPHEXT+1 ! +2
     IYOR=1 
     IYEND=IJMAX_ll+ 2 * JPHEXT
   ELSE
 ! full LB zone, mass point  : 1:NRIMX+1,1:NJMAX_ll+ 2 * JPHEXT
     IXOR=1
-    IXEND=KRIMX+1
+    IXEND=KRIMX+JPHEXT  ! +1
     IYOR=1 
     IYEND=IJMAX_ll+ 2 * JPHEXT
   ENDIF
 ELSE
 ! 1 point LB zone : 1:1,1:NJMAX_ll+ 2 * JPHEXT
   IXOR=1
-  IXEND=1
+  IXEND=JPHEXT ! 1
   IYOR=1
   IYEND=IJMAX_ll+ 2 * JPHEXT
 ENDIF
@@ -228,14 +230,14 @@ END IF
 !     
 IF (KRIMX /=0) THEN 
 !  full LB zone : NIMAX_ll+JPHEXT-NRIMX +1:NIMAX_ll+ 2 *JPHEXT,1:NJMAX_ll+2 *JPHEXT
-  IXOR =IIMAX_ll+ 2 * JPHEXT - KRIMX
+  IXOR =IIMAX_ll+ 2 * JPHEXT - KRIMX-JPHEXT +1 ! -KRIMX
   IXEND=IIMAX_ll+ 2 * JPHEXT
   IYOR=1
   IYEND=IJMAX_ll+ 2 * JPHEXT
 ELSE
 !    1 point LB zone : NIMAX_ll+ 2 * JPHEXT:NIMAX_ll+ 2 *JPHEXT,1:NJMAX_ll+2 *JPHEXT
-  IXOR=IIMAX_ll + 2 * JPHEXT 
-  IXEND=IIMAX_ll + 2 * JPHEXT
+  IXOR=IIMAX_ll + 2 * JPHEXT  -JPHEXT +1      ! + 2 * JPHEXT
+  IXEND=IIMAX_ll + 2 * JPHEXT -JPHEXT +JPHEXT ! + 2 * JPHEXT
   IYOR=1
   IYEND=IJMAX_ll+ 2 * JPHEXT
 ENDIF
@@ -251,7 +253,7 @@ IF (IINFO /=1) THEN
     IXOR3DX = TZSPLIT%NXORE
     IYOR3DX = TZSPLIT%NYORE
 !
-    IL3DX = 2*(KRIMX+1)
+    IL3DX = 2*(KRIMX+JPHEXT) ! +1
     
     IF (KIB == 0) KIB = IL3DX - (IIMAX_ll+2*JPHEXT - IXORI - IXOR3DX  +1)
     KIE=IL3DX - (IIMAX_ll + 2 *JPHEXT - IXENDI- IXOR3DX  +1)
@@ -378,20 +380,20 @@ IF (KRIMY /=0) THEN
     IXOR=1
     IXEND=IIMAX_ll+ 2 * JPHEXT
     IYOR=2 
-    IYEND=KRIMY+2
+    IYEND=KRIMY+JPHEXT+1   !+2
   ELSE
 ! full LB zone, mass point  : 1:NIMAX_ll+ 2 * JPHEXT,1:NRIMY+1
     IXOR=1
     IXEND=IIMAX_ll+ 2 * JPHEXT
     IYOR=1 
-    IYEND=KRIMY+1
+    IYEND=KRIMY+JPHEXT  !+1 
   ENDIF
 ELSE
 ! 1 point LB zone : 1:NIMAX_ll+ 2 * JPHEXT,1:1
   IXOR=1
   IXEND=IIMAX_ll+ 2 * JPHEXT
   IYOR=1
-  IYEND=1
+  IYEND=JPHEXT !1
 ENDIF
 CALL GET_INTERSECTION_ll(IXOR,IYOR,IXEND,IYEND,IXORI,IYORI,IXENDI,IYENDI,YMODE,IINFO,KIP)
 IF (IINFO /= 1) THEN  ! no empty intersection
@@ -430,14 +432,14 @@ IF (KRIMY /=0) THEN
 !  full LB zone :1:NIMAX_ll+2 *JPHEXT, NJMAX_ll+JPHEXT-NRIMY +1:NJMAX_ll+ 2 *JPHEXT,
   IXOR =1
   IXEND=IIMAX_ll+ 2 * JPHEXT
-  IYOR = IJMAX_ll+ 2 * JPHEXT - KRIMY
+  IYOR = IJMAX_ll+ 2 * JPHEXT -KRIMY-JPHEXT +1 ! - KRIMY
   IYEND=IJMAX_ll+ 2 * JPHEXT
 ELSE
 !    1 point LB zone : 1:NJMAX_ll+2 *JPHEXT,NJMAX_ll+ 2 * JPHEXT:NJMAX_ll+ 2 *JPHEXT
   IXOR=1
   IXEND=IIMAX_ll+ 2 * JPHEXT
-  IYOR=IJMAX_ll + 2 * JPHEXT 
-  IYEND=IJMAX_ll + 2 * JPHEXT
+  IYOR=IJMAX_ll + 2 * JPHEXT  - JPHEXT + 1       ! + 2 * JPHEXT 
+  IYEND=IJMAX_ll + 2 * JPHEXT - JPHEXT + JPHEXT  ! + 2 * JPHEXT 
 ENDIF
 CALL GET_INTERSECTION_ll(IXOR,IYOR,IXEND,IYEND,IXORI,IYORI,IXENDI,IYENDI,YMODE,IINFO,KIP)
 IF (IINFO /=1) THEN
@@ -451,7 +453,7 @@ IF (IINFO /=1) THEN
     IXOR3DY = TZSPLIT%NXORE
     IYOR3DY = TZSPLIT%NYORE
 !
-    IL3DY = 2*(KRIMY+1)
+    IL3DY = 2*(KRIMY+JPHEXT ) ! +1
     KIB=IXORI  + IXOR3DY -1
     KIE=IXENDI + IXOR3DY -1
     IF (KJB == 0) KJB = IL3DY - (IJMAX_ll + 2 *JPHEXT - IYORI - IYOR3DY  +1)
index 34dd51d..8512fb6 100644 (file)
@@ -2,6 +2,10 @@
 !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.
+!-----------------------------------------------------------------
+!Correction :
+!  J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 
+!-----------------------------------------------------------------
 MODULE modd_repro_sum
   TYPE DOUBLE_DOUBLE
      SEQUENCE
@@ -177,56 +181,56 @@ CONTAINS
     ddb%R = 0.0
     ddb%E = 0.0
 
-    ddc(1:nx)%R = dda(1:nx)%R
-    ddc(1:nx)%E = dda(1:nx)%E
-    !
-    ! copie directly the contribution corresponding
-    ! to ddd(i) = dda(i) + 0 when not a power of 2 size
-    !
-    ipas  = 2**(lnxb2-1)
-    ipasm = nx - ipas
-    ddd(ipasm+1:ipas)%R = dda(ipasm+1:ipas)%R
-    ddd(ipasm+1:ipas)%E = dda(ipasm+1:ipas)%E
-    DO j=lnxb2-1,0,-1
-       ! 
-       ! test for nx not power of 2 
-       ! 
-       ipas  = 2**j
-       ipasm = min(ipas,nx-ipas) 
-
-       DO i = 1, ipasm
-          !
-          !   Compute dda + ddb using Knuth's trick.
-          !
-          t1(i) = ddc(i)%R + ddc(i+ipas)%R
-          e(i)  = t1(i) - ddc(i)%R
-          t2(i) = ((ddc(i+ipas)%R - e(i)) + (ddc(i)%R - (t1(i) - e(i)))) &
-               + ddc(i)%E + ddc(i+ipas)%E
-          !
-          !   The result is t1 + t2, after normalization.
-          !
-          ddd(i)%R = t1(i) + t2(i)
-          ddd(i)%E = t2(i) - ((t1(i) + t2(i)) - t1(i)) 
-       ENDDO
-       ddc(1:ipas)%R = ddd(1:ipas)%R
-       ddc(1:ipas)%E = ddd(1:ipas)%E
-    END DO
-    ddb = ddc(1)
+!!$    ddc(1:nx)%R = dda(1:nx)%R
+!!$    ddc(1:nx)%E = dda(1:nx)%E
+!!$    !
+!!$    ! copie directly the contribution corresponding
+!!$    ! to ddd(i) = dda(i) + 0 when not a power of 2 size
+!!$    !
+!!$    ipas  = 2**(lnxb2-1)
+!!$    ipasm = nx - ipas
+!!$    ddd(ipasm+1:ipas)%R = dda(ipasm+1:ipas)%R
+!!$    ddd(ipasm+1:ipas)%E = dda(ipasm+1:ipas)%E
+!!$    DO j=lnxb2-1,0,-1
+!!$       ! 
+!!$       ! test for nx not power of 2 
+!!$       ! 
+!!$       ipas  = 2**j
+!!$       ipasm = min(ipas,nx-ipas) 
+!!$
+!!$       DO i = 1, ipasm
+!!$          !
+!!$          !   Compute dda + ddb using Knuth's trick.
+!!$          !
+!!$          t1(i) = ddc(i)%R + ddc(i+ipas)%R
+!!$          e(i)  = t1(i) - ddc(i)%R
+!!$          t2(i) = ((ddc(i+ipas)%R - e(i)) + (ddc(i)%R - (t1(i) - e(i)))) &
+!!$               + ddc(i)%E + ddc(i+ipas)%E
+!!$          !
+!!$          !   The result is t1 + t2, after normalization.
+!!$          !
+!!$          ddd(i)%R = t1(i) + t2(i)
+!!$          ddd(i)%E = t2(i) - ((t1(i) + t2(i)) - t1(i)) 
+!!$       ENDDO
+!!$       ddc(1:ipas)%R = ddd(1:ipas)%R
+!!$       ddc(1:ipas)%E = ddd(1:ipas)%E
+!!$    END DO
+!!$    ddb = ddc(1)
 
-!!$    DO i = 1, SIZE(dda,1)
-!!$       !
-!!$       !   Compute dda + ddb using Knuth's trick.
-!!$       !
-!!$       t1(i) = dda(i)%R + ddb%R
-!!$       e(i)  = t1(i) - dda(i)%R
-!!$       t2(i) = ((ddb%R - e(i)) + (dda(i)%R - (t1(i) - e(i)))) &
-!!$            + dda(i)%E + ddb%E
-!!$       !
-!!$       !   The result is t1 + t2, after normalization.
-!!$       !
-!!$       ddb%R = t1(i) + t2(i)
-!!$       ddb%E = t2(i) - ((t1(i) + t2(i)) - t1(i)) 
-!!$    ENDDO
+    DO i = 1, SIZE(dda,1)
+       !
+       !   Compute dda + ddb using Knuth's trick.
+       !
+       t1(i) = dda(i)%R + ddb%R
+       e(i)  = t1(i) - dda(i)%R
+       t2(i) = ((ddb%R - e(i)) + (dda(i)%R - (t1(i) - e(i)))) &
+            + dda(i)%E + ddb%E
+       !
+       !   The result is t1 + t2, after normalization.
+       !
+       ddb%R = t1(i) + t2(i)
+       ddb%E = t2(i) - ((t1(i) + t2(i)) - t1(i)) 
+    ENDDO
 
   END FUNCTION SUM_DD_DD1
 
index bae778a..4f7309a 100644 (file)
@@ -10,6 +10,8 @@
 ! $Revision$ 
 ! $Date$
 !-----------------------------------------------------------------
+!Correction :
+!  J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 
 !-----------------------------------------------------------------
 
 !     ########################
 !
   TYPE(LIST_ll), POINTER :: TZFIELD
 !
+  INTEGER                :: ICOUNT
+  CHARACTER*2            :: YCOUNT
+!
 !-------------------------------------------------------------------------------
 !
 !*       1.   SEND / RECV THE INTERNAL HALO TO/FROM THE NEIGHBORING PROCESSORS
 !
    IF (MPPDB_INITIALIZED) THEN
       TZFIELD => TPLIST
+      ICOUNT=0
       DO WHILE (ASSOCIATED(TZFIELD))
+         ICOUNT=ICOUNT+1
+         WRITE(YCOUNT,'(I2)') ICOUNT
          IF (TZFIELD%L2D) THEN
-            CALL MPPDB_CHECK2D(TZFIELD%ARRAY2D,"UPDATE_HALO2_ll",PRECISION)
+            CALL MPPDB_CHECK2D(TZFIELD%ARRAY2D,"UPDATE_HALO2_ll::TAB2D("//YCOUNT//")",PRECISION)
          ELSEIF(TZFIELD%L3D) THEN
-            CALL MPPDB_CHECK3D(TZFIELD%ARRAY3D,"UPDATE_HALO2_ll",PRECISION)
+            CALL MPPDB_CHECK3D(TZFIELD%ARRAY3D,"UPDATE_HALO2_ll::TAB2D("//YCOUNT//")",PRECISION)
          END IF
          TZFIELD => TZFIELD%NEXT
       END DO
index 67d1be6..7597fca 100644 (file)
@@ -10,6 +10,8 @@
 ! $Revision$ 
 ! $Date$
 !-----------------------------------------------------------------
+!Correction :
+!  J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 
 !-----------------------------------------------------------------
 
 !     ########################
 !*       0.2   declarations of local variables
   TYPE(LIST_ll), POINTER :: TZFIELD
 !
+  INTEGER                :: ICOUNT
+  CHARACTER*2            :: YCOUNT
+!
 !-------------------------------------------------------------------------------
 !
 !*       1.     UPDATE THE ZONES NOT SENT OR RECEIVED BY THE PROCESSOR ITSELF 
 !
   IF (MPPDB_INITIALIZED) THEN
      TZFIELD => TPLIST
+     ICOUNT=0
      DO WHILE (ASSOCIATED(TZFIELD))
+        ICOUNT=ICOUNT+1
+        WRITE(YCOUNT,'(I2)') ICOUNT
         IF (TZFIELD%L2D) THEN
-           CALL MPPDB_CHECK2D(TZFIELD%ARRAY2D,"UPDATE_HALO_ll",PRECISION)
+           CALL MPPDB_CHECK2D(TZFIELD%ARRAY2D,"UPDATE_HALO_ll::TAB2D("//YCOUNT//")",PRECISION)
         ELSEIF(TZFIELD%L3D) THEN
-           CALL MPPDB_CHECK3D(TZFIELD%ARRAY3D,"UPDATE_HALO_ll",PRECISION)
+           CALL MPPDB_CHECK3D(TZFIELD%ARRAY3D,"UPDATE_HALO_ll::TAB3D("//YCOUNT//")",PRECISION)
         END IF
         TZFIELD => TZFIELD%NEXT
      END DO
index 43d5767..1d3ed82 100644 (file)
@@ -6,6 +6,7 @@ MODULE MODE_MPPDB
 !
 !       Modifs :
 !!      J.Escobar 23/10/2012: correct CHECK_LB & format print output 
+!  J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 
 !
   IMPLICIT NONE
 
@@ -254,13 +255,14 @@ CONTAINS
 
   SUBROUTINE MPPDB_CHECK3D(PTAB,MESSAGE,PRECISION)
 
-    USE MODD_PARAMETERS, ONLY : JPHEXT
+    USE MODD_PARAMETERS_ll, ONLY : JPHEXT
     USE MODI_GATHER_ll
     USE MODD_VAR_ll    , ONLY : MPI_PRECISION
-
+    USE MODD_MPIF      , ONLY : MPI_INTEGER, MPI_STATUS_IGNORE
 
     IMPLICIT NONE
 
+
     REAL, DIMENSION(:,:,:)               :: PTAB
     CHARACTER(len=*)                     :: MESSAGE
     REAL                                 :: PRECISION
@@ -273,15 +275,19 @@ CONTAINS
     INTEGER                              :: IIU,IJU,IIU_ll,IJU_ll,IKU_ll
     INTEGER                              :: IINFO_ll
 
-    INTEGER,PARAMETER                    :: ITAG = 12345
+    INTEGER,PARAMETER                    :: ITAG1  = 12345 , ITAG2 = 123456
 
-    INTEGER                              :: I_FIRST_SON, IRECVSTATUS
+    INTEGER                              :: I_FIRST_SON
     INTEGER                              :: I_FIRST_FATHER
     REAL                                 :: MAX_DIFF , MAX_VAL
     INTEGER                              :: IIB_ll,IIE_ll,IJB_ll,IJE_ll
 
     REAL,POINTER, DIMENSION(:,:,:)   :: TAB_INTERIOR_ll ! for easy debug
 
+    INTEGER                              :: IIU_SON_ll,IJU_SON_ll,IKU_SON_ll
+    INTEGER                              :: IIB_SON_ll,IIE_SON_ll,IJB_SON_ll,IJE_SON_ll
+    INTEGER                              :: IHEXT_SON_ll , IDIFF_HEXT
+
 #ifdef MNH_SP4
     !pas de mpi_spawn sur IBM-SP ni MPI_ARGV_NULL etc ...
     RETURN           
@@ -306,29 +312,51 @@ CONTAINS
           !
           ! I'm the first FATHER => recieve the correct globale ARRAY from first son
           !
-          ALLOCATE(TAB_SON_ll(IIU_ll,IJU_ll,IKU_ll))
           !
           ! the first son , is the next processus after this 'world' so
           !
-          I_FIRST_SON = MPPDB_NBPROC_WORLD
+          I_FIRST_SON = MPPDB_NBPROC_WORLD         
+          !
+          ! recieve JPHEXT from son if different
+          !
+          CALL MPI_RECV(IHEXT_SON_ll,1,MPI_INTEGER,I_FIRST_SON, &
+               ITAG1, MPPDB_INTRA_COMM,MPI_STATUS_IGNORE, IINFO_ll)
+
+          !IHEXT_SON_ll = JPHEXT
+
+          IIU_SON_ll = IIMAX_ll+2*IHEXT_SON_ll
+          IJU_SON_ll = IJMAX_ll+2*IHEXT_SON_ll
+          IKU_SON_ll = SIZE(PTAB,3)
+    
+          ALLOCATE(TAB_SON_ll(IIU_SON_ll,IJU_SON_ll,IKU_SON_ll))
           !
           CALL MPI_RECV(TAB_SON_ll,SIZE(TAB_SON_ll),MPI_PRECISION,I_FIRST_SON, &
-               ITAG, MPPDB_INTRA_COMM, IRECVSTATUS, IINFO_ll)
+               ITAG2, MPPDB_INTRA_COMM,MPI_STATUS_IGNORE, IINFO_ll)
           !
-          TAB_SAVE_ll = TAB_ll
-          TAB_ll      = ABS ( TAB_ll - TAB_SON_ll )
+
           !
+
           IF (MPPDB_CHECK_LB) THEN
-             IIB_ll   = 1      ; IJB_ll = 1 
-             IIE_ll   = IIU_ll ; IJE_ll = IJU_ll
+             IDIFF_HEXT = MIN(JPHEXT,IHEXT_SON_ll)
           ELSE
-             IIB_ll   = 1 + JPHEXT    ; IJB_ll = 1 + JPHEXT
-             IIE_ll   = IIU_ll-JPHEXT ; IJE_ll = IJU_ll-JPHEXT
-          END IF
+             IDIFF_HEXT = 0
+          ENDIF
+          IIB_ll   = 1 + JPHEXT    ; IJB_ll = 1 + JPHEXT
+          IIE_ll   = IIU_ll-JPHEXT ; IJE_ll = IJU_ll-JPHEXT
+          
+          IIB_SON_ll   = 1 + IHEXT_SON_ll    ; IJB_SON_ll = 1 + IHEXT_SON_ll
+          IIE_SON_ll   = IIU_SON_ll-IHEXT_SON_ll ; IJE_SON_ll = IJU_SON_ll-IHEXT_SON_ll
+          !
+          TAB_SAVE_ll = TAB_ll
+          TAB_ll      = 0.0
+          TAB_ll(IIB_ll-IDIFF_HEXT:IIE_ll+IDIFF_HEXT,IIB_ll-IDIFF_HEXT:IJE_ll+IDIFF_HEXT,1:IKU_ll)   &
+            = ABS ( TAB_SAVE_ll(IIB_ll-IDIFF_HEXT:IIE_ll+IDIFF_HEXT,IIB_ll-IDIFF_HEXT:IJE_ll+IDIFF_HEXT,1:IKU_ll) & 
+            -       TAB_SON_ll(IIB_SON_ll-IDIFF_HEXT:IIE_SON_ll+IDIFF_HEXT,IIB_SON_ll-IDIFF_HEXT:IJE_SON_ll+IDIFF_HEXT,1:IKU_SON_ll) )
+
           MAX_VAL  = MAXVAL( ABS (TAB_SON_ll) )
           IF ( MAX_VAL .EQ. 0.0 ) MAX_VAL = 1.0
-          MAX_DIFF = MAXVAL( TAB_ll(IIB_ll:IIE_ll,IIB_ll:IJE_ll,1:IKU_ll) / MAX_VAL)
-          TAB_INTERIOR_ll =>  TAB_ll(IIB_ll:IIE_ll,IIB_ll:IJE_ll,1:IKU_ll)
+          MAX_DIFF = MAXVAL( TAB_ll(IIB_ll-IDIFF_HEXT:IIE_ll+IDIFF_HEXT,IIB_ll-IDIFF_HEXT:IJE_ll+IDIFF_HEXT,1:IKU_ll) / MAX_VAL)
+          TAB_INTERIOR_ll =>  TAB_ll(IIB_ll-IDIFF_HEXT:IIE_ll+IDIFF_HEXT,IIB_ll-IDIFF_HEXT:IJE_ll+IDIFF_HEXT,1:IKU_ll)
           !
           IF (MAX_DIFF > PRECISION ) THEN
              write(6, '(" MPPDB_CHECK3D :: PB MPPDB_CHECK3D =",A40," ERROR=",e15.8," MAXVAL=",e15.8)' ) MESSAGE,MAX_DIFF , MAX_VAL
@@ -358,10 +386,13 @@ CONTAINS
           ! first son --> send the good array to the first father
           !
           I_FIRST_FATHER = 0
+          IHEXT_SON_ll = JPHEXT
+          CALL MPI_BSEND(IHEXT_SON_ll,1,MPI_INTEGER,I_FIRST_FATHER, &
+               ITAG1, MPPDB_INTRA_COMM, IINFO_ll)
+
           CALL MPI_BSEND(TAB_ll,SIZE(TAB_ll),MPI_PRECISION,I_FIRST_FATHER, &
-               ITAG, MPPDB_INTRA_COMM, IINFO_ll)
-          !CALL MPI_BSEND(PTAB,SIZE(PTAB),MPI_PRECISION,I_FIRST_FATHER, &
-          !     ITAG, MPPDB_INTRA_COMM, IINFO_ll)
+               ITAG2, MPPDB_INTRA_COMM, IINFO_ll)
        END IF
     END IF
 
@@ -377,7 +408,7 @@ CONTAINS
                            ,PTAB11,PTAB12,PTAB13,PTAB14,PTAB15,PTAB16,PTAB17,PTAB18,PTAB19,PTAB20 &
                            )
 
-    USE MODD_PARAMETERS, ONLY : JPHEXT
+    USE MODD_PARAMETERS_ll, ONLY : JPHEXT
     USE MODI_GATHER_ll
     USE MODD_VAR_ll    , ONLY : MPI_PRECISION
 
@@ -416,10 +447,10 @@ CONTAINS
 
   SUBROUTINE MPPDB_CHECK2D(PTAB,MESSAGE,PRECISION)
 
-    USE MODD_PARAMETERS, ONLY : JPHEXT
+    USE MODD_PARAMETERS_ll, ONLY : JPHEXT
     USE MODI_GATHER_ll
     USE MODD_VAR_ll    , ONLY : MPI_PRECISION
-
+    USE MODD_MPIF      , ONLY : MPI_INTEGER, MPI_STATUS_IGNORE
 
     IMPLICIT NONE
 
@@ -430,20 +461,24 @@ CONTAINS
     !
     ! local var
     !
-    REAL,ALLOCATABLE,TARGET, DIMENSION(:,:)     :: TAB_ll,TAB_SON_ll
+    REAL,ALLOCATABLE,TARGET, DIMENSION(:,:)     :: TAB_ll,TAB_SON_ll,TAB_SAVE_ll
     INTEGER                              :: IIMAX_ll,IJMAX_ll
     INTEGER                              :: IIU,IJU,IIU_ll,IJU_ll
     INTEGER                              :: IINFO_ll
 
     INTEGER,PARAMETER                    :: ITAG = 12345
 
-    INTEGER                              :: I_FIRST_SON, IRECVSTATUS
+    INTEGER                              :: I_FIRST_SON
     INTEGER                              :: I_FIRST_FATHER
     REAL                                 :: MAX_DIFF , MAX_VAL
     INTEGER                              :: IIB_ll,IIE_ll,IJB_ll,IJE_ll
 
     REAL,POINTER, DIMENSION(:,:)   :: TAB_INTERIOR_ll ! for easy debug
 
+    INTEGER                              :: IIU_SON_ll,IJU_SON_ll
+    INTEGER                              :: IIB_SON_ll,IIE_SON_ll,IJB_SON_ll,IJE_SON_ll
+    INTEGER                              :: IHEXT_SON_ll , IDIFF_HEXT
+
 #ifdef MNH_SP4
     !pas de mpi_spawn sur IBM-SP ni MPI_ARGV_NULL etc ...
     RETURN           
@@ -460,34 +495,55 @@ CONTAINS
        IIU_ll = IIMAX_ll+2*JPHEXT
        IJU_ll = IJMAX_ll+2*JPHEXT
        ALLOCATE(TAB_ll(IIU_ll,IJU_ll))
+       ALLOCATE(TAB_SAVE_ll(IIU_ll,IJU_ll))
        CALL GATHERALL_FIELD_ll('XY',PTAB,TAB_ll,IINFO_ll)
 
        IF (MPPDB_IRANK_WORLD.EQ.0) THEN
           !
           ! I'm the first FATHER => recieve the correct globale ARRAY from first son
           !
-          ALLOCATE(TAB_SON_ll(IIU_ll,IJU_ll))
           !
           ! the first son , is the next processus after this 'world' so
           !
           I_FIRST_SON = MPPDB_NBPROC_WORLD
           !
-          CALL MPI_RECV(TAB_SON_ll,SIZE(TAB_SON_ll),MPI_PRECISION,I_FIRST_SON, &
-               ITAG, MPPDB_INTRA_COMM, IRECVSTATUS, IINFO_ll)
+          ! recieve JPHEXT from son if different
           !
-          TAB_ll = ABS(TAB_ll - TAB_SON_ll)
+          CALL MPI_RECV(IHEXT_SON_ll,1,MPI_INTEGER,I_FIRST_SON, &
+               ITAG, MPPDB_INTRA_COMM,MPI_STATUS_IGNORE, IINFO_ll)
+
+          IIU_SON_ll = IIMAX_ll+2*IHEXT_SON_ll
+          IJU_SON_ll = IJMAX_ll+2*IHEXT_SON_ll
+          
+          ALLOCATE(TAB_SON_ll(IIU_SON_ll,IJU_SON_ll))
+
+          !
+          CALL MPI_RECV(TAB_SON_ll,SIZE(TAB_SON_ll),MPI_PRECISION,I_FIRST_SON, &
+               ITAG, MPPDB_INTRA_COMM,MPI_STATUS_IGNORE, IINFO_ll)
           !
           IF (MPPDB_CHECK_LB) THEN
-             IIB_ll   = 1      ; IJB_ll = 1 
-             IIE_ll   = IIU_ll ; IJE_ll = IJU_ll
+             IDIFF_HEXT = MIN(JPHEXT,IHEXT_SON_ll)
           ELSE
-             IIB_ll   = 1 + JPHEXT    ; IJB_ll = 1 + JPHEXT
-             IIE_ll   = IIU_ll-JPHEXT ; IJE_ll = IJU_ll-JPHEXT
-          END IF
+             IDIFF_HEXT = 0
+          ENDIF
+
+          IIB_ll   = 1 + JPHEXT    ; IJB_ll = 1 + JPHEXT
+          IIE_ll   = IIU_ll-JPHEXT ; IJE_ll = IJU_ll-JPHEXT
+          IIB_SON_ll   = 1 + IHEXT_SON_ll    ; IJB_SON_ll = 1 + IHEXT_SON_ll
+          IIE_SON_ll   = IIU_SON_ll-IHEXT_SON_ll ; IJE_SON_ll = IJU_SON_ll-IHEXT_SON_ll
+       
+          !
+          TAB_SAVE_ll = TAB_ll
+          TAB_ll      = 0.0
+          TAB_ll(IIB_ll-IDIFF_HEXT:IIE_ll+IDIFF_HEXT,IIB_ll-IDIFF_HEXT:IJE_ll+IDIFF_HEXT)   &
+            = ABS ( TAB_SAVE_ll(IIB_ll-IDIFF_HEXT:IIE_ll+IDIFF_HEXT,IIB_ll-IDIFF_HEXT:IJE_ll+IDIFF_HEXT) & 
+            -       TAB_SON_ll(IIB_SON_ll-IDIFF_HEXT:IIE_SON_ll+IDIFF_HEXT,IIB_SON_ll-IDIFF_HEXT:IJE_SON_ll+IDIFF_HEXT) )         
+
           MAX_VAL  = MAXVAL( ABS (TAB_SON_ll) )
           IF ( MAX_VAL .EQ. 0.0 ) MAX_VAL = 1.0
-          MAX_DIFF = MAXVAL( TAB_ll(IIB_ll:IIE_ll,IIB_ll:IJE_ll) / MAX_VAL )
-          TAB_INTERIOR_ll => TAB_ll(IIB_ll:IIE_ll,IIB_ll:IJE_ll)
+          MAX_DIFF = MAXVAL( TAB_ll(IIB_ll-IDIFF_HEXT:IIE_ll+IDIFF_HEXT,IIB_ll-IDIFF_HEXT:IJE_ll+IDIFF_HEXT) / MAX_VAL )
+          TAB_INTERIOR_ll => TAB_ll(IIB_ll-IDIFF_HEXT:IIE_ll+IDIFF_HEXT,IIB_ll-IDIFF_HEXT:IJE_ll+IDIFF_HEXT)
           IF (MAX_DIFF > PRECISION ) THEN
              write(6, '(" MPPDB_CHECK2D :: PB MPPDB_CHECK2D =",A40," ERROR=",e15.8," MAXVAL=",e15.8)' ) MESSAGE,MAX_DIFF , MAX_VAL
           ELSE
@@ -516,10 +572,11 @@ CONTAINS
           ! first son --> send the good array to the first father
           !
           I_FIRST_FATHER = 0
+          CALL MPI_BSEND(JPHEXT,1,MPI_INTEGER,I_FIRST_FATHER, &
+               ITAG, MPPDB_INTRA_COMM, IINFO_ll)
           CALL MPI_BSEND(TAB_ll,SIZE(TAB_ll),MPI_PRECISION,I_FIRST_FATHER, &
                ITAG, MPPDB_INTRA_COMM, IINFO_ll)
-          !CALL MPI_BSEND(PTAB,SIZE(PTAB),MPI_PRECISION,I_FIRST_FATHER, &
-          !     ITAG, MPPDB_INTRA_COMM, IINFO_ll)
+
        END IF
     END IF
 
@@ -534,11 +591,11 @@ CONTAINS
 
   SUBROUTINE MPPDB_CHECKLB(PLB,MESSAGE,PRECISION,HLBTYPE,KRIM)
 
-    USE MODD_PARAMETERS, ONLY : JPHEXT
+    USE MODD_PARAMETERS_ll, ONLY : JPHEXT
     USE MODI_GATHER_ll
     USE MODD_VAR_ll    , ONLY : MPI_PRECISION ,  NMNH_COMM_WORLD
     USE MODD_IO_ll,        ONLY : ISP,ISNPROC,GSMONOPROC,LPACK,L2D
-    USE MODD_MPIF
+    USE MODD_MPIF      , ONLY   : MPI_INTEGER, MPI_STATUS_IGNORE
 
     USE MODE_DISTRIB_LB
     USE MODE_TOOLS_ll,     ONLY : GET_GLOBALDIMS_ll
@@ -562,13 +619,12 @@ CONTAINS
 
     INTEGER,PARAMETER                    :: ITAG = 12345
 
-    INTEGER                              :: I_FIRST_SON, IRECVSTATUS
+    INTEGER                              :: I_FIRST_SON
     INTEGER                              :: I_FIRST_FATHER
     REAL                                 :: MAX_DIFF , MAX_VAL
     INTEGER                              :: IIB_ll,IIE_ll,IJB_ll,IJE_ll
     INTEGER                                  :: JI
     INTEGER :: IIB,IIE,IJB,IJE
-    INTEGER, DIMENSION(MPI_STATUS_SIZE)      :: STATUS
 
 #ifdef MNH_SP4
     !pas de mpi_spawn sur IBM-SP ni MPI_ARGV_NULL etc ...
@@ -600,7 +656,8 @@ CONTAINS
              IF (IIB /= 0) THEN
                 TX3DP=>Z3D(IIB:IIE,IJB:IJE,:)
                 IF (ISP /= JI) THEN
-                   CALL MPI_RECV(TX3DP,SIZE(TX3DP),MPI_PRECISION,JI-1,99,NMNH_COMM_WORLD,STATUS,IINFO_ll) 
+                   CALL MPI_RECV(TX3DP,SIZE(TX3DP),MPI_PRECISION,JI-1 &
+                        ,99,NMNH_COMM_WORLD,MPI_STATUS_IGNORE,IINFO_ll) 
                 ELSE
                    CALL GET_DISTRIB_LB(HLBTYPE,JI,'LOC','WRITE',KRIM,IIB,IIE,IJB,IJE)
                    TX3DP = PLB(IIB:IIE,IJB:IJE,:)
@@ -631,7 +688,7 @@ CONTAINS
           I_FIRST_SON = MPPDB_NBPROC_WORLD
           !
           CALL MPI_RECV(TAB_SON_ll,SIZE(TAB_SON_ll),MPI_PRECISION,I_FIRST_SON, &
-               ITAG, MPPDB_INTRA_COMM, IRECVSTATUS, IINFO_ll)
+               ITAG, MPPDB_INTRA_COMM,MPI_STATUS_IGNORE, IINFO_ll)
           !
 
           ALLOCATE(TAB_SAVE_ll(SIZE(Z3D,1),SIZE(Z3D,2),SIZE(Z3D,3)))
index 9d2d678..cb4c8dc 100644 (file)
@@ -10,6 +10,8 @@
 ! $Revision$ 
 ! $Date$
 !-----------------------------------------------------------------
+!Correction :
+!  J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 
 !-----------------------------------------------------------------
 
 !     ###################
   LOGICAL :: LPREM
   INTEGER :: P1,P2
 !JUAN Z_SPLITTING
-
+ INTEGER :: IXSIZE,IYSIZE,IXSIZE_COARSE,IYSIZE_COARSE ! size of child without halo
 !
 !-------------------------------------------------------------------------------
 !
 !
 !        1.3   Dimensions of the child model
 !
-  DIMX = NDXRATIO_ALL(K) * (NXEND_ALL(K)-NXOR_ALL(K) - 1) + 2*JPHEXT
-  DIMY = NDYRATIO_ALL(K) * (NYEND_ALL(K)-NYOR_ALL(K) - 1) + 2*JPHEXT
+  IXSIZE_COARSE=NXEND_ALL(K)-NXOR_ALL(K) -2*JPHEXT +1
+  IYSIZE_COARSE=NYEND_ALL(K)-NYOR_ALL(K) -2*JPHEXT +1
+  IXSIZE = NDXRATIO_ALL(K) * IXSIZE_COARSE
+  IYSIZE = NDYRATIO_ALL(K) * IYSIZE_COARSE
+  DIMX = IXSIZE + 2*JPHEXT
+  DIMY = IYSIZE + 2*JPHEXT
 !JUAN Z_SPLITTING
   DIMZ = NKMAX_ll + 2*JPVEXT
 !JUAN Z_SPLITTING
     !
     ! find the B splitting, dimension without halo for FFT
     !
-    CALL DEF_SPLITTING2(JX_DOMAINS,JY_DOMAINS,DIMX-2*JPHEXT,DIMY-2*JPHEXT,NPROC,LPREM)
+    CALL DEF_SPLITTING2(JX_DOMAINS,JY_DOMAINS,IXSIZE,IYSIZE,NPROC,LPREM)
     !
     P1 = MIN(DIMZ,JX_DOMAINS)
     !JUAN PATCH NESTING DIFFERENT SHAPE
     !
     ! find Z splitting wihout halo in X&Y , with halo in Z
     !
+    CALL SPLIT2(IXSIZE_COARSE,IYSIZE_COARSE, NKMAX_ll, NPROC,TZCOARSE, YSPLITTING,P1,P2)
 
-    CALL SPLIT2(NXEND_ALL(K)-NXOR_ALL(K)-1, NYEND_ALL(K)-NYOR_ALL(K)-1, NKMAX_ll, NPROC,TZCOARSE, YSPLITTING,P1,P2)
-
-    CALL SPLITZ(NXEND_ALL(K)-NXOR_ALL(K)-1,NYEND_ALL(K)-NYOR_ALL(K)-1,DIMZ,NPROC,TZDZP_SXP1_YP2_Z,'P1P2SPLITT', 1 ,P1,P2)
-    CALL SPLITZ(NXEND_ALL(K)-NXOR_ALL(K)-1,NYEND_ALL(K)-NYOR_ALL(K)-1,DIMZ,NPROC,TZDZP_SX_YP2_ZP1,'YSPLITTING', P1,P1,P2)
-    CALL SPLITZ(NXEND_ALL(K)-NXOR_ALL(K)-1,NYEND_ALL(K)-NYOR_ALL(K)-1,DIMZ,NPROC,TZDZP_SXP2_Y_ZP1,'XSPLITTING', P1,P1,P2)
-    CALL SPLITZ(NXEND_ALL(K)-NXOR_ALL(K)-1,NYEND_ALL(K)-NYOR_ALL(K)-1,DIMZ,NPROC,TZDZP_SXP2_YP1_Z,'P2P1SPLITT', 1 ,P1,P2)
+    CALL SPLITZ(IXSIZE_COARSE,IYSIZE_COARSE,DIMZ,NPROC,TZDZP_SXP1_YP2_Z,'P1P2SPLITT', 1 ,P1,P2)
+    CALL SPLITZ(IXSIZE_COARSE,IYSIZE_COARSE,DIMZ,NPROC,TZDZP_SX_YP2_ZP1,'YSPLITTING', P1,P1,P2)
+    CALL SPLITZ(IXSIZE_COARSE,IYSIZE_COARSE,DIMZ,NPROC,TZDZP_SXP2_Y_ZP1,'XSPLITTING', P1,P1,P2)
+    CALL SPLITZ(IXSIZE_COARSE,IYSIZE_COARSE,DIMZ,NPROC,TZDZP_SXP2_YP1_Z,'P2P1SPLITT', 1 ,P1,P2)
 
     CALL COARSE_TO_FINE(TZDZP_SXP1_YP2_Z)
     CALL COARSE_TO_FINE(TZDZP_SX_YP2_ZP1)
   DO J = 1, NPROC
 !
     TZFINE(J)%NUMBER = TZCOARSE(J)%NUMBER
-    TZFINE(J)%NXOR = (TZCOARSE(J)%NXOR - 2) * NDXRATIO_ALL(K) + 2
-    TZFINE(J)%NYOR = (TZCOARSE(J)%NYOR - 2) * NDYRATIO_ALL(K) + 2
-    TZFINE(J)%NXEND = (TZCOARSE(J)%NXEND - 1) * NDXRATIO_ALL(K) + 1
-    TZFINE(J)%NYEND = (TZCOARSE(J)%NYEND - 1) * NDYRATIO_ALL(K) + 1
+
+    TZFINE(J)%NXOR  = (TZCOARSE(J)%NXOR  - JPHEXT -1 ) * NDXRATIO_ALL(K) + JPHEXT +1
+    TZFINE(J)%NYOR  = (TZCOARSE(J)%NYOR  - JPHEXT -1 ) * NDYRATIO_ALL(K) + JPHEXT +1
+    TZFINE(J)%NXEND = (TZCOARSE(J)%NXEND - JPHEXT    ) * NDXRATIO_ALL(K) + JPHEXT
+    TZFINE(J)%NYEND = (TZCOARSE(J)%NYEND - JPHEXT    ) * NDYRATIO_ALL(K) + JPHEXT
+
+!!$    TZFINE(J)%NXOR = (TZCOARSE(J)%NXOR - 2) * NDXRATIO_ALL(K) + 2
+!!$    TZFINE(J)%NYOR = (TZCOARSE(J)%NYOR - 2) * NDYRATIO_ALL(K) + 2
+!!$    TZFINE(J)%NXEND = (TZCOARSE(J)%NXEND - 1) * NDXRATIO_ALL(K) + 1
+!!$    TZFINE(J)%NYEND = (TZCOARSE(J)%NYEND - 1) * NDYRATIO_ALL(K) + 1
+
 !JUAN Z_SPLITTING
     TZFINE(J)%NZOR  = TZCOARSE(J)%NZOR
     TZFINE(J)%NZEND = TZCOARSE(J)%NZEND
   DO J = 1, NPROC
 !
     TZSEND(J)%NUMBER = TZCOARSE(J)%NUMBER
-    TZSEND(J)%NXOR = NXOR_ALL(K) + TZCOARSE(J)%NXOR - 3
-    TZSEND(J)%NYOR = NYOR_ALL(K) + TZCOARSE(J)%NYOR - 3
-    TZSEND(J)%NXEND = NXOR_ALL(K) + TZCOARSE(J)%NXEND + 1
-    TZSEND(J)%NYEND = NYOR_ALL(K) + TZCOARSE(J)%NYEND + 1
+
+    TZSEND(J)%NXOR = NXOR_ALL(K) + TZCOARSE(J)%NXOR    -1  -JPHEXT -1 ! - 3
+    TZSEND(J)%NYOR = NYOR_ALL(K) + TZCOARSE(J)%NYOR    -1  -JPHEXT -1 ! - 3
+    TZSEND(J)%NXEND = NXOR_ALL(K) + TZCOARSE(J)%NXEND  -1  +JPHEXT +1 ! + 1
+    TZSEND(J)%NYEND = NYOR_ALL(K) + TZCOARSE(J)%NYEND  -1  +JPHEXT +1 ! + 1
+!!$
+!!$    TZSEND(J)%NXOR = NXOR_ALL(K) + TZCOARSE(J)%NXOR - 3
+!!$    TZSEND(J)%NYOR = NYOR_ALL(K) + TZCOARSE(J)%NYOR - 3
+!!$    TZSEND(J)%NXEND = NXOR_ALL(K) + TZCOARSE(J)%NXEND + 1
+!!$    TZSEND(J)%NYEND = NYOR_ALL(K) + TZCOARSE(J)%NYEND + 1
 !
   ENDDO
 !
-  TZCHILD_COMDATA%NLSDIMX = TZCOARSE(IP)%NXEND - TZCOARSE(IP)%NXOR + 5
-  TZCHILD_COMDATA%NLSDIMY = TZCOARSE(IP)%NYEND - TZCOARSE(IP)%NYOR + 5
+  TZCHILD_COMDATA%NLSDIMX = TZCOARSE(IP)%NXEND - TZCOARSE(IP)%NXOR + 1 +2*(JPHEXT+1) ! + 5
+  TZCHILD_COMDATA%NLSDIMY = TZCOARSE(IP)%NYEND - TZCOARSE(IP)%NYOR + 1 +2*(JPHEXT+1) ! + 5
+!!$
+!!$  TZCHILD_COMDATA%NLSDIMX = TZCOARSE(IP)%NXEND - TZCOARSE(IP)%NXOR + 5
+!!$  TZCHILD_COMDATA%NLSDIMY = TZCOARSE(IP)%NYEND - TZCOARSE(IP)%NYOR + 5
 !
 !        2.5   TZRECV points of the coarse grid to be received from the child
 !              for each processor
@@ -1643,10 +1664,17 @@ CONTAINS
     DO J = 1, NPROC
        !
        TZ(J)%NUMBER = TZ(J)%NUMBER
-       TZ(J)%NXOR = (TZ(J)%NXOR - 2) * NDXRATIO_ALL(K) + 2
-       TZ(J)%NYOR = (TZ(J)%NYOR - 2) * NDYRATIO_ALL(K) + 2
-       TZ(J)%NXEND = (TZ(J)%NXEND - 1) * NDXRATIO_ALL(K) + 1
-       TZ(J)%NYEND = (TZ(J)%NYEND - 1) * NDYRATIO_ALL(K) + 1
+
+       TZ(J)%NXOR = (TZ(J)%NXOR - JPHEXT -1) * NDXRATIO_ALL(K) + JPHEXT +1 ! -/+2
+       TZ(J)%NYOR = (TZ(J)%NYOR - JPHEXT -1) * NDYRATIO_ALL(K) + JPHEXT +1 ! -/+2
+       TZ(J)%NXEND = (TZ(J)%NXEND - JPHEXT) * NDXRATIO_ALL(K) + JPHEXT       ! -/+1
+       TZ(J)%NYEND = (TZ(J)%NYEND - JPHEXT) * NDYRATIO_ALL(K) + JPHEXT       ! -/+1
+!!$
+!!$       TZ(J)%NXOR = (TZ(J)%NXOR - 2) * NDXRATIO_ALL(K) + 2
+!!$       TZ(J)%NYOR = (TZ(J)%NYOR - 2) * NDYRATIO_ALL(K) + 2
+!!$       TZ(J)%NXEND = (TZ(J)%NXEND - 1) * NDXRATIO_ALL(K) + 1
+!!$       TZ(J)%NYEND = (TZ(J)%NYEND - 1) * NDYRATIO_ALL(K) + 1
+
        !JUAN Z_SPLITTING
        TZ(J)%NZOR  = TZ(J)%NZOR
        TZ(J)%NZEND = TZ(J)%NZEND
index d508d72..0fb2981 100644 (file)
@@ -10,6 +10,8 @@
 ! $Revision$ 
 ! $Date$
 !-----------------------------------------------------------------
+!Correction :
+!  J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 
 !-----------------------------------------------------------------
 
 !     ##################
@@ -2077,6 +2079,175 @@ REAL, DIMENSION(:,:), ALLOCATABLE :: ZSUM_ll
       END SUBROUTINE SUM_DIM2_ll
 !
 !     #####################################################
+      SUBROUTINE SUM_DIM1_DD_ll(PFIELD, PRES, KDIM, KINFO)
+!     #####################################################
+!
+!!****  *SUM_DIM1_DD_ll*-
+!
+!!    Purpose
+!!    -------
+!     The PFIELD argument is a local 1D array according the y-direction,
+!     result of local summations in x-direction.
+!     The purpose of this routine is to merge all the local sum arrays in a
+!     global one PRES.
+! 
+!!    Method
+!!    ------
+!     Each processor fills its part of PRES array in an intermediate buffer
+!     ZBUF with its local PFIELD, then we reduce the buffer in the result PRES.
+! 
+!!    External
+!!    --------
+!
+!     Module MODE_TOOLS_ll
+!       LEAST_ll, LWEST_ll, LNORTH_ll, LSOUTH_ll
+!
+!!    Implicit Arguments
+!!    ------------------
+!
+!     Module MODD_STRUCTURE_ll
+!       type MODELSPLITTING_ll
+!
+!     Module MODD_VAR_ll
+!       TCRRT_COMDATA - Current communication data structure for current model
+!                       and local processor
+!       TCRRT_PROCONF - Current configuration for current model
+!       IP -
+!       MPI_PRECISION -
+!       JPHALO -
+!
+!!    Author
+!!    ------
+!     Ph. Kloos      * CNRM - CERFACS *
+!
+!!    Modifications
+!!    -------------
+!     Original 27/06/98
+!              05/99 : P. Jabouille - N. Gicquel
+!
+!-------------------------------------------------------------------------------
+!
+!*        0.    DECLARATIONS
+!
+  USE MODD_STRUCTURE_ll, ONLY : MODELSPLITTING_ll
+!
+  USE MODD_VAR_ll, ONLY : IP, TCRRT_COMDATA, TCRRT_PROCONF, JPHALO, &
+                          MPI_PRECISION
+!
+  USE MODE_TOOLS_ll, ONLY : LWEST_ll, LEAST_ll, LNORTH_ll, LSOUTH_ll
+!
+ USE MODE_REPRO_SUM
+!
+!*       0.    DECLARATIONS
+!              ------------
+!
+  IMPLICIT NONE
+!
+!
+!*       0.    DECLARATIONS
+!              ------------
+!
+!
+!*       0.1   Declarations of dummy arguments :
+!
+  REAL, DIMENSION(:,:), INTENT(IN)   :: PFIELD
+  REAL, DIMENSION(:), INTENT(OUT)    :: PRES
+  INTEGER              , INTENT(IN)  :: KDIM
+!
+  INTEGER, INTENT(OUT) :: KINFO ! MPI return status
+!
+!*       0.2   Declarations of local variables :
+!
+  INTEGER :: IXB, IXE, IXBG, IXEG, IJB, IJE, IJBG, IJEG ! local and global displacements
+!
+   TYPE(DOUBLE_DOUBLE), DIMENSION(SIZE(PFIELD,1),SIZE(PFIELD,2)) :: ZBUF
+   TYPE(DOUBLE_DOUBLE), DIMENSION(SIZE(PRES))                    :: ZBUF1D_ll
+!
+  TYPE(MODELSPLITTING_ll), POINTER :: TZSPLIT ! Intermediate model splitting
+!
+  INTEGER :: JI,JJ
+!
+!-----------------------------------------------------------------
+!
+!*       1.    Get the current splitting configuration and compute displacements
+!
+  TZSPLIT => TCRRT_PROCONF%TSPLITS_B(IP)
+!
+  ZBUF%R      = 0.0   ; ZBUF%E      = 0.0
+  ZBUF1D_ll%R = 0.0   ; ZBUF1D_ll%E = 0.0
+!
+  IF (KDIM.EQ.1) THEN
+     IF (LSOUTH_ll()) THEN
+        IJB  = 1
+        IJBG = TZSPLIT%NYORE
+     ELSE
+        IJB  = 1+JPHALO
+        IJBG = TZSPLIT%NYORP
+     ENDIF
+!
+     IF (LNORTH_ll()) THEN
+        IJE  = SIZE(PFIELD, 2)
+        IJEG = TZSPLIT%NYENDE
+     ELSE
+        IJE  = SIZE(PFIELD, 2)-JPHALO
+        IJEG = TZSPLIT%NYENDP
+     ENDIF
+!
+!-----------------------------------------------------------------
+!
+!*       2.    Fill the intermediate buffer
+!
+     ZBUF(:,IJB:IJE)%R = PFIELD(:,IJB:IJE)
+     DO JJ=IJBG,IJEG
+        ZBUF1D_ll(JJ) = SUM_DD_DD1 (ZBUF(:,JJ-IJBG+IJB))
+     END DO
+!
+!-----------------------------------------------------------------
+!
+!*       3.    Merge local sums
+!
+    CALL  REDUCE_SUM_1DD_ll(ZBUF1D_ll, KINFO)
+    PRES = ZBUF1D_ll%R
+!
+!-----------------------------------------------------------------
+  ELSE
+     IF (KDIM.EQ.2) THEN
+        IF (LWEST_ll()) THEN
+           IXB  = 1
+           IXBG = TZSPLIT%NXORE
+        ELSE
+           IXB  = 1+JPHALO
+           IXBG = TZSPLIT%NXORP
+        ENDIF
+!
+        IF (LEAST_ll()) THEN
+           IXE  = SIZE(PFIELD, 1)
+           IXEG = TZSPLIT%NXENDE
+        ELSE
+           IXE  = SIZE(PFIELD, 1)-JPHALO
+           IXEG = TZSPLIT%NXENDP
+        ENDIF
+!
+!-----------------------------------------------------------------
+!
+!*       2.    Fill the intermediate buffer
+!
+        ZBUF(IXB:IXE,:)%R = PFIELD(IXB:IXE,:)
+        DO JI=IXBG,IXEG
+           ZBUF1D_ll(JI) = SUM_DD_DD1 (ZBUF(JI-IXBG+IXB,:))
+        END DO
+!
+!-----------------------------------------------------------------
+!
+!*       2.    Merge local sums
+!
+        CALL  REDUCE_SUM_1DD_ll(ZBUF1D_ll, KINFO)     
+        PRES = ZBUF1D_ll%R
+     ENDIF
+  ENDIF
+  
+      END SUBROUTINE SUM_DIM1_DD_ll
+!     #####################################################
       SUBROUTINE SUM_DIM1_ll(PFIELD, PRES, KINFO)
 !     #####################################################
 !
@@ -2294,7 +2465,8 @@ REAL, DIMENSION(:,:), ALLOCATABLE :: ZSUM_ll
 !           ------------------------------
 !
   IF (FIRST_CALL_DD) CALL INIT_DD(KINFO)
-  CALL MPI_ALLREDUCE(PRES%R, ZRES%R, 1, MNH_DOUBLE_DOUBLE , &
+  ZRES%R = 0.0 ;  ZRES%E = 0.0
+  CALL MPI_ALLREDUCE(PRES, ZRES, 1, MNH_DOUBLE_DOUBLE , &
                      MNH_SUM_DD, NMNH_COMM_WORLD, KINFO)
 
   PRES = ZRES
@@ -2410,7 +2582,8 @@ END SUBROUTINE REDUCE_SUM_0DD_ll
 !           ------------------------------
 !
   IF (FIRST_CALL_DD) CALL INIT_DD(KINFO)
-  CALL MPI_ALLREDUCE(PRES%R, ZRES%R, SIZE(PRES), MNH_DOUBLE_DOUBLE , &
+  ZRES%R = 0.0 ;  ZRES%E = 0.0
+  CALL MPI_ALLREDUCE(PRES, ZRES, SIZE(PRES), MNH_DOUBLE_DOUBLE , &
                      MNH_SUM_DD, NMNH_COMM_WORLD, KINFO)
 PRES = ZRES
 !
index b606fd4..441b525 100644 (file)
@@ -10,6 +10,8 @@
 ! $Revision$ 
 ! $Date$
 !-----------------------------------------------------------------
+!Correction :
+!  J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 
 !-----------------------------------------------------------------
 
 !     ####################
                           NXOR_ALL, NYOR_ALL,         &
                           NXEND_ALL, NYEND_ALL
   USE MODD_VAR_ll, ONLY : TCRRT_PROCONF
+
+  USE MODD_PARAMETERS_ll, ONLY : JPHEXT
 !
   IMPLICIT NONE
 !
 !
 !*       2.    Compute the dimensions of the model
 !
-  KIMAX = NDXRATIO_ALL(IMODEL) * (NXEND_ALL(IMODEL)-NXOR_ALL(IMODEL) - 1)
-  KJMAX = NDYRATIO_ALL(IMODEL) * (NYEND_ALL(IMODEL)-NYOR_ALL(IMODEL) - 1)
+  KIMAX = NDXRATIO_ALL(IMODEL) * (NXEND_ALL(IMODEL)-NXOR_ALL(IMODEL) -2*JPHEXT + 1)
+  KJMAX = NDYRATIO_ALL(IMODEL) * (NYEND_ALL(IMODEL)-NYOR_ALL(IMODEL) -2*JPHEXT + 1)
 !
 !-------------------------------------------------------------------------------
 !
 !
 !*       1.1   Get current splitting
 !
-  IF (LWEST_ll())  IWEST=-1
-  IF (LEAST_ll())  IEAST=1
-  IF (LNORTH_ll()) INORTH=1
-  IF (LSOUTH_ll()) ISOUTH=-1
+  IF (LWEST_ll())  IWEST=-JPHEXT      ! -1
+  IF (LEAST_ll())  IEAST=JPHEXT       ! 1
+  IF (LNORTH_ll()) INORTH=JPHEXT      ! 1
+  IF (LSOUTH_ll()) ISOUTH=-JPHEXT     ! -1
   TZSPLIT => TCRRT_PROCONF%TSPLITS_B(IP)
   IOR(1)  = TZSPLIT%NXORP+IWEST
   IOR(2)  = TZSPLIT%NYORP+ISOUTH 
index d2553be..63f9001 100644 (file)
@@ -32,8 +32,9 @@ END MODULE MODI_ADV_BOUNDARIES
 !!
 !!    AUTHOR
 !!    ------
-!!     
 !!
+!! Correction :        
+!!   J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -58,11 +59,13 @@ CHARACTER(LEN=1),         INTENT(IN), OPTIONAL  :: HFIELD  ! Field type
 INTEGER             :: IKB       ! indice K Beginning in z direction
 INTEGER             :: IKE       ! indice K End       in z direction 
 INTEGER             :: IIU, IJU  ! Index End in X and Y directions
+INTEGER             :: IIB,IIE,IJB,IJE ! interior domaine bound
 !
 !-------------------------------------------------------------------------------
 !
 !*       1.    COMPUTE DIMENSIONS OF ARRAYS AND OTHER INDICES:
 !              ----------------------------------------------
+CALL GET_INDICE_ll (IIB,IJB,IIE,IJE)
 IKB = 1 + JPVEXT
 IKE = SIZE(PFIELD,3) - JPVEXT
 IIU=SIZE(PFIELD,1)
@@ -95,24 +98,24 @@ IF (SIZE(PFIELD)==0) RETURN
 !
 IF( PRESENT(PFIELDI) )  THEN
   IF (HLBCX(1)=='OPEN' .AND. LWEST_ll()) THEN
-     PFIELD(1,:,:) = PFIELDI(1,:,:)
+     PFIELD(:IIB-1,:,:) = PFIELDI(:IIB-1,:,:) ! 1
      IF (PRESENT(HFIELD)) THEN
        IF (HFIELD=='U') &
-       PFIELD(2,:,:) = PFIELDI(2,:,:)
+       PFIELD(:IIB,:,:) = PFIELDI(:IIB,:,:)   ! 2
      END IF
   END IF
   IF (HLBCX(2)=='OPEN' .AND. LEAST_ll()) THEN
-     PFIELD(IIU,:,:) = PFIELDI(IIU,:,:)
+     PFIELD(IIE+1:,:,:) = PFIELDI(IIE+1:,:,:) ! IIU
   END IF
   IF (HLBCY(1)=='OPEN' .AND. LSOUTH_ll()) THEN
-     PFIELD(:,1,:) = PFIELDI(:,1,:)
+     PFIELD(:,:IJB-1,:) = PFIELDI(:,:IJB-1,:) ! 1
      IF (PRESENT(HFIELD)) THEN
        IF (HFIELD=='V') &
-       PFIELD(:,2,:) = PFIELDI(:,2,:)
+       PFIELD(:,:IJB,:) = PFIELDI(:,:IJB,:) ! 2
      END IF
   END IF
   IF (HLBCY(2)=='OPEN' .AND. LNORTH_ll()) THEN
-     PFIELD(:,IJU,:) = PFIELDI(:,IJU,:)
+     PFIELD(:,IJE+1:,:) = PFIELDI(:,IJE+1:,:) ! IJU
   END IF
 END IF
 !
index 1be4845..f74f3eb 100644 (file)
@@ -5,6 +5,12 @@
 !     ###############################
       MODULE MODI_ADVEC_3RD_ORDER_AUX
 !     ###############################
+!!    AUTHOR
+!!    ------
+!!
+!! Correction :        
+!!   J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 
+!-------------------------------------------------------------------------------
 !
 INTERFACE
 !
@@ -183,16 +189,16 @@ SELECT CASE ( HLBCX(1) ) ! X direction LBC type: (1) for left side
 !
 CASE ('CYCL')          ! In that case one must have HLBCX(1) == HLBCX(2)
 !
-  IF(NHALO == 1) THEN
+!!$  IF(NHALO == 1) THEN
     IW=IIB+1
     IE=IIE
-  ELSE
-    CALL FMLOOK_ll(CLUOUT0,CLUOUT0,ILUOUT,IRESP)
-    WRITE(ILUOUT,*) 'ERROR : 3rd order advection in CYCLic case '
-    WRITE(ILUOUT,*) 'cannot be used with NHALO=2'
-    CALL ABORT
-    STOP
-  END IF  
+!!$  ELSE
+!!$    CALL FMLOOK_ll(CLUOUT0,CLUOUT0,ILUOUT,IRESP)
+!!$    WRITE(ILUOUT,*) 'ERROR : 3rd order advection in CYCLic case '
+!!$    WRITE(ILUOUT,*) 'cannot be used with NHALO=2'
+!!$    CALL ABORT
+!!$    STOP
+!!$  END IF  
 !
   IWF=IW-1
   IEF=IE-1
@@ -221,13 +227,14 @@ CASE ('OPEN','WALL','NEST')
   IF (LWEST_ll()) THEN
       IW=IIB+2          ! special case of C grid
   ELSE
-    IF(NHALO == 1) THEN
+!!$    IF(NHALO == 1) THEN
       IW=IIB+1
-    ELSE
-      IW=IIB
-    ENDIF
+!!$    ELSE
+!!$      IW=IIB
+!!$    ENDIF
   ENDIF
-  IF (LEAST_ll() .OR. NHALO == 1) THEN
+!!$  IF (LEAST_ll() .OR. NHALO == 1) THEN
+  IF (LEAST_ll()) THEN
     IE=IIE
   ELSE
     IE=IIE
@@ -239,7 +246,8 @@ CASE ('OPEN','WALL','NEST')
   IF(LWEST_ll()) THEN
     PR(IWF-1,:,:) = PSRC(IW-2,:,:) * (0.5+SIGN(0.5,PRUCT(IW-2,:,:))) &
                   + PSRC(IW-1,:,:) * (0.5-SIGN(0.5,PRUCT(IW-2,:,:)))
-  ELSEIF (NHALO == 1) THEN
+!!$  ELSEIF (NHALO == 1) THEN
+  ELSE
     PR(IWF-1,:,:) = 1./6. * ( (2.*PSRC(IW-1,:,:) + 5.*PSRC(IW-2,:,:) -         &
                           TPHALO2%WEST(:,:)) * (0.5+SIGN(0.5,PRUCT(IW-2,:,:))) &
                           + (5.*PSRC(IW-1,:,:) + 2.*PSRC(IW-2,:,:) -           &
@@ -249,7 +257,8 @@ CASE ('OPEN','WALL','NEST')
   IF(LEAST_ll()) THEN
     PR(IEF+1,:,:) = PSRC(IE,:,:)   * (0.5+SIGN(0.5,PRUCT(IE,:,:))) &
                   + PSRC(IE+1,:,:) * (0.5-SIGN(0.5,PRUCT(IE,:,:)))
-  ELSEIF (NHALO == 1) THEN
+!!$  ELSEIF (NHALO == 1) THEN
+  ELSE
     PR(IEF+1,:,:) = 1./6. * ( (2.*PSRC(IE+1,:,:) + 5.*PSRC(IE,:,:) -           &
                                PSRC(IE-1,:,:)) * (0.5+SIGN(0.5,PRUCT(IE,:,:))) &
                           + (5.*PSRC(IE+1,:,:) + 2.*PSRC(IE,:,:) -             &
@@ -336,16 +345,16 @@ SELECT CASE ( HLBCX(1) ) ! X direction LBC type: (1) for left side
 !
 CASE ('CYCL')          ! In that case one must have HLBCX(1) == HLBCX(2)
 !
-  IF(NHALO == 1) THEN
+!!$  IF(NHALO == 1) THEN
     IW=IIB+1
     IE=IIE
-  ELSE
-    CALL FMLOOK_ll(CLUOUT0,CLUOUT0,ILUOUT,IRESP)
-    WRITE(ILUOUT,*) 'ERROR : 3rd order advection in CYCLic case '
-    WRITE(ILUOUT,*) 'cannot be used with NHALO=2'
-    CALL ABORT
-    STOP
-  END IF  
+!!$  ELSE
+!!$    CALL FMLOOK_ll(CLUOUT0,CLUOUT0,ILUOUT,IRESP)
+!!$    WRITE(ILUOUT,*) 'ERROR : 3rd order advection in CYCLic case '
+!!$    WRITE(ILUOUT,*) 'cannot be used with NHALO=2'
+!!$    CALL ABORT
+!!$    STOP
+!!$  END IF  
 !
   IWF=IW
   IEF=IE
@@ -374,13 +383,14 @@ CASE ('OPEN','WALL','NEST')
   IF (LWEST_ll()) THEN
     IW=IIB+1
   ELSE
-    IF(NHALO == 1) THEN
+!!$    IF(NHALO == 1) THEN
       IW=IIB+1
-    ELSE
-      IW=IIB
-    ENDIF
+!!$    ELSE
+!!$      IW=IIB
+!!$    ENDIF
   ENDIF
-  IF (LEAST_ll() .OR. NHALO == 1) THEN
+!!$  IF (LEAST_ll() .OR. NHALO == 1) THEN
+  IF (LEAST_ll()) THEN
     IE=IIE
   ELSE
     IE=IIE
@@ -392,7 +402,8 @@ CASE ('OPEN','WALL','NEST')
   IF(LWEST_ll()) THEN
     PR(IWF-1,:,:) = PSRC(IW-2,:,:) * (0.5+SIGN(0.5,PRUCT(IW-1,:,:))) &
                   + PSRC(IW-1,:,:) * (0.5-SIGN(0.5,PRUCT(IW-1,:,:)))
-  ELSEIF (NHALO == 1) THEN
+!!$  ELSEIF (NHALO == 1) THEN
+  ELSE
     PR(IWF-1,:,:) = 1./6. * ( (2.*PSRC(IW-1,:,:) + 5.*PSRC(IW-2,:,:) -         &
                           TPHALO2%WEST(:,:)) * (0.5+SIGN(0.5,PRUCT(IW-1,:,:))) &
                           + (5.*PSRC(IW-1,:,:) + 2.*PSRC(IW-2,:,:) -           &
@@ -402,7 +413,8 @@ CASE ('OPEN','WALL','NEST')
   IF(LEAST_ll()) THEN
     PR(IEF+1,:,:) = PSRC(IE,:,:)   * (0.5+SIGN(0.5,PRUCT(IE+1,:,:))) &
                   + PSRC(IE+1,:,:) * (0.5-SIGN(0.5,PRUCT(IE+1,:,:)))
-  ELSEIF (NHALO == 1) THEN
+!!$  ELSEIF (NHALO == 1) THEN
+  ELSE
     PR(IEF+1,:,:) = 1./6. * ( (2.*PSRC(IE+1,:,:) + 5.*PSRC(IE,:,:) -           &
                              PSRC(IE-1,:,:)) * (0.5+SIGN(0.5,PRUCT(IE+1,:,:))) &
                           + (5.*PSRC(IE+1,:,:) + 2.*PSRC(IE,:,:) -             &
@@ -488,16 +500,16 @@ SELECT CASE ( HLBCY(1) ) !
 !
 CASE ('CYCL')          ! In that case one must have HLBCY(1) == HLBCY(2)
 !
-  IF(NHALO == 1) THEN
+!!$  IF(NHALO == 1) THEN
     IS=IJB+1
     IN=IJE
-  ELSE
-    CALL FMLOOK_ll(CLUOUT0,CLUOUT0,ILUOUT,IRESP)
-    WRITE(ILUOUT,*) 'ERROR : 4th order advection in CYCLic case '
-    WRITE(ILUOUT,*) 'cannot be used with NHALO=2'
-    CALL ABORT
-    STOP
-  END IF
+!!$  ELSE
+!!$    CALL FMLOOK_ll(CLUOUT0,CLUOUT0,ILUOUT,IRESP)
+!!$    WRITE(ILUOUT,*) 'ERROR : 4th order advection in CYCLic case '
+!!$    WRITE(ILUOUT,*) 'cannot be used with NHALO=2'
+!!$    CALL ABORT
+!!$    STOP
+!!$  END IF
 !
   ISF=IS-1
   INF=IN-1
@@ -526,13 +538,14 @@ CASE ('OPEN','WALL','NEST')
   IF (LSOUTH_ll()) THEN
     IS=IJB+2
   ELSE
-    IF(NHALO == 1) THEN
+!!$    IF(NHALO == 1) THEN
       IS=IJB+1
-    ELSE
-      IS=IJB
-    ENDIF
+!!$    ELSE
+!!$      IS=IJB
+!!$    ENDIF
   ENDIF
-  IF (LNORTH_ll() .OR. NHALO == 1) THEN
+!!$  IF (LNORTH_ll() .OR. NHALO == 1) THEN
+  IF (LNORTH_ll()) THEN
     IN=IJE
   ELSE
     IN=IJE
@@ -544,7 +557,8 @@ CASE ('OPEN','WALL','NEST')
   IF(LSOUTH_ll()) THEN
     PR(:,ISF-1,:) = PSRC(:,IS-2,:) * (0.5+SIGN(0.5,PRVCT(:,IS-2,:))) &
                   + PSRC(:,IS-1,:) * (0.5-SIGN(0.5,PRVCT(:,IS-2,:)))
-  ELSEIF (NHALO == 1) THEN
+!!$  ELSEIF (NHALO == 1) THEN
+  ELSE
     PR(:,ISF-1,:) = 1./6. * ( (2.*PSRC(:,IS-1,:) + 5.*PSRC(:,IS-2,:) -         &
                          TPHALO2%SOUTH(:,:)) * (0.5+SIGN(0.5,PRVCT(:,IS-2,:))) &
                           + (5.*PSRC(:,IS-1,:) + 2.*PSRC(:,IS-2,:) -           &
@@ -554,7 +568,8 @@ CASE ('OPEN','WALL','NEST')
   IF(LNORTH_ll()) THEN
     PR(:,INF+1,:) = PSRC(:,IN,:)   * (0.5+SIGN(0.5,PRVCT(:,IN,:))) &
                   + PSRC(:,IN+1,:) * (0.5-SIGN(0.5,PRVCT(:,IN,:)))
-  ELSEIF (NHALO == 1) THEN
+!!$  ELSEIF (NHALO == 1) THEN
+  ELSE
     PR(:,INF+1,:) = 1./6. * ( (2.*PSRC(:,IN+1,:) + 5.*PSRC(:,IN,:) -           &
                                PSRC(:,IN-1,:)) * (0.5+SIGN(0.5,PRVCT(:,IN,:))) &
                           + (5.*PSRC(:,IN+1,:) + 2.*PSRC(:,IN,:) -             &
@@ -641,16 +656,16 @@ SELECT CASE ( HLBCY(1) ) ! Y direction LBC type: (1) for left side
 !
 CASE ('CYCL')          ! In that case one must have HLBCX(1) == HLBCX(2)
 !
-  IF(NHALO == 1) THEN
+!!$  IF(NHALO == 1) THEN
     IS=IJB+1
     IN=IJE
-  ELSE
-    CALL FMLOOK_ll(CLUOUT0,CLUOUT0,ILUOUT,IRESP)
-    WRITE(ILUOUT,*) 'ERROR : 4th order advection in CYCLic case '
-    WRITE(ILUOUT,*) 'cannot be used with NHALO=2'
-    CALL ABORT
-    STOP
-  END IF
+!!$  ELSE
+!!$    CALL FMLOOK_ll(CLUOUT0,CLUOUT0,ILUOUT,IRESP)
+!!$    WRITE(ILUOUT,*) 'ERROR : 4th order advection in CYCLic case '
+!!$    WRITE(ILUOUT,*) 'cannot be used with NHALO=2'
+!!$    CALL ABORT
+!!$    STOP
+!!$  END IF
 !
   ISF=IS
   INF=IN
@@ -679,13 +694,14 @@ CASE ('OPEN','WALL','NEST')
   IF (LSOUTH_ll()) THEN
     IS=IJB+1
   ELSE
-    IF(NHALO == 1) THEN
+!!$    IF(NHALO == 1) THEN
       IS=IJB+1
-    ELSE
-      IS=IJB
-    ENDIF
+!!$    ELSE
+!!$      IS=IJB
+!!$    ENDIF
   ENDIF
-  IF (LNORTH_ll() .OR. NHALO == 1) THEN
+!!$  IF (LNORTH_ll() .OR. NHALO == 1) THEN
+  IF (LNORTH_ll()) THEN
     IN=IJE
   ELSE
     IN=IJE
@@ -697,7 +713,8 @@ CASE ('OPEN','WALL','NEST')
   IF(LSOUTH_ll()) THEN
     PR(:,ISF-1,:) = PSRC(:,IS-2,:) * (0.5+SIGN(0.5,PRVCT(:,IS-1,:))) &
                   + PSRC(:,IS-1,:) * (0.5-SIGN(0.5,PRVCT(:,IS-1,:)))
-  ELSEIF (NHALO == 1) THEN
+!!$  ELSEIF (NHALO == 1) THEN
+  ELSE
     PR(:,ISF-1,:) = 1./6. * ( (2.*PSRC(:,IS-1,:) + 5.*PSRC(:,IS-2,:) -         &
                          TPHALO2%SOUTH(:,:)) * (0.5+SIGN(0.5,PRVCT(:,IS-1,:))) &
                           + (5.*PSRC(:,IS-1,:) + 2.*PSRC(:,IS-2,:) -           &
@@ -707,7 +724,8 @@ CASE ('OPEN','WALL','NEST')
   IF(LNORTH_ll()) THEN
     PR(:,INF+1,:) = PSRC(:,IN,:)   * (0.5+SIGN(0.5,PRVCT(:,IN+1,:))) &
                   + PSRC(:,IN+1,:) * (0.5-SIGN(0.5,PRVCT(:,IN+1,:)))
-  ELSEIF (NHALO == 1) THEN
+!!$  ELSEIF (NHALO == 1) THEN
+  ELSE
     PR(:,INF+1,:) = 1./6. * ( (2.*PSRC(:,IN+1,:) + 5.*PSRC(:,IN,:) -           &
                              PSRC(:,IN-1,:)) * (0.5+SIGN(0.5,PRVCT(:,IN+1,:))) &
                           + (5.*PSRC(:,IN+1,:) + 2.*PSRC(:,IN,:) -             &
index 892d146..b708b8c 100644 (file)
@@ -150,6 +150,9 @@ END MODULE MODI_ADVECMET_4TH
 !!    -------------
 !!      Original   25/10/05
 !!
+!! Correction :        
+!!   J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 
+!!
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -222,13 +225,13 @@ IKU=SIZE(XZHAT)
 !
 IGRID = 1
 !
-IF (NHALO == 1) THEN
+!!$IF (NHALO == 1) THEN
    TZHALO2LIST => TPHALO2LIST
    CALL ADVEC_4TH_ORDER_ALGO(HLBCX, HLBCY, PTHT, IGRID, ZMEANX, ZMEANY, &
                              TZHALO2LIST%HALO2 )
-ELSE
-   CALL ADVEC_4TH_ORDER_ALGO(HLBCX, HLBCY, PTHT, IGRID, ZMEANX, ZMEANY)
-ENDIF
+!!$ELSE
+!!$   CALL ADVEC_4TH_ORDER_ALGO(HLBCX, HLBCY, PTHT, IGRID, ZMEANX, ZMEANY)
+!!$ENDIF
 !
 ! Thermodynamical variable
 !
@@ -247,13 +250,13 @@ IF (LBUDGET_TH) CALL BUDGET (PRTHS,4,'ADVZ_BU_RTH')
 ! Turbulence variables
 !
 IF ( GTKEALLOC ) THEN
-  IF(NHALO == 1) THEN
+!!$  IF(NHALO == 1) THEN
     TZHALO2LIST => TZHALO2LIST%NEXT
     CALL ADVEC_4TH_ORDER_ALGO(HLBCX, HLBCY, PTKET, IGRID, &
                             ZMEANX, ZMEANY, TPHALO2=TZHALO2LIST%HALO2)
-  ELSE
-    CALL ADVEC_4TH_ORDER_ALGO(HLBCX, HLBCY, PTKET, IGRID, ZMEANX, ZMEANY)
-  ENDIF
+!!$  ELSE
+!!$    CALL ADVEC_4TH_ORDER_ALGO(HLBCX, HLBCY, PTKET, IGRID, ZMEANX, ZMEANY)
+!!$  ENDIF
 !
   PRTKES(:,:,:) = PRTKES(:,:,:)                    &
                  -DXF( PRUCT(:,:,:) * ZMEANX(:,:,:) ) 
@@ -272,13 +275,13 @@ ENDIF
 ! Case with KRR moist variables
 !
 DO JRR=1, KRR
-  IF(NHALO == 1) THEN 
+!!$  IF(NHALO == 1) THEN 
     TZHALO2LIST => TZHALO2LIST%NEXT
     CALL ADVEC_4TH_ORDER_ALGO(HLBCX, HLBCY, PRT(:,:,:,JRR), IGRID, &
                               ZMEANX, ZMEANY,TPHALO2=TZHALO2LIST%HALO2 )
-  ELSE
-    CALL ADVEC_4TH_ORDER_ALGO(HLBCX, HLBCY, PRT(:,:,:,JRR), IGRID, ZMEANX, ZMEANY)
-  ENDIF
+!!$  ELSE
+!!$    CALL ADVEC_4TH_ORDER_ALGO(HLBCX, HLBCY, PRT(:,:,:,JRR), IGRID, ZMEANX, ZMEANY)
+!!$  ENDIF
 !
   PRRS(:,:,:,JRR) = PRRS(:,:,:,JRR)                            &
                      -DXF( PRUCT(:,:,:) * ZMEANX(:,:,:) ) 
index a270b92..1cf2335 100644 (file)
@@ -109,6 +109,9 @@ END MODULE MODI_ADVECSCALAR_4TH
 !!    -------------
 !!      Original   25/10/05
 !!
+!! Correction :        
+!!   J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 
+!!
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -180,13 +183,13 @@ IGRID = 1
 !
 DO JSV=1,KSV
 !
-  IF(NHALO == 1) THEN
+!!$  IF(NHALO == 1) THEN
      TZHALO2LIST => TPHALO2LIST     
      CALL ADVEC_4TH_ORDER_ALGO(HLBCX, HLBCY, PSVT(:,:,:,JSV), IGRID, &
                                ZMEANX, ZMEANY,TZHALO2LIST%HALO2 )
-  ELSE
-     CALL ADVEC_4TH_ORDER_ALGO(HLBCX, HLBCY, PSVT(:,:,:,JSV), IGRID, ZMEANX, ZMEANY)
-  ENDIF
+!!$  ELSE
+!!$     CALL ADVEC_4TH_ORDER_ALGO(HLBCX, HLBCY, PSVT(:,:,:,JSV), IGRID, ZMEANX, ZMEANY)
+!!$  ENDIF
 !
   PRSVS(:,:,:,JSV) = PRSVS(:,:,:,JSV)                            &
                     -DXF( PRUCT(:,:,:) * ZMEANX(:,:,:) )
index 8523366..01f9a90 100644 (file)
@@ -125,7 +125,8 @@ 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
+!!                  04/2015  (J.Escobar) remove/commente some NHALO=1 test
+!!                  J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 
 !!
 !-------------------------------------------------------------------------------
 !
@@ -248,11 +249,13 @@ CHARACTER (LEN=100) :: YCOMMENT     ! comment string in LFIFM file
 CHARACTER (LEN=16)  :: YRECFM       ! Name of the desired field in LFIFM file
 INTEGER             :: ILUOUT       ! logical unit
 INTEGER             :: ISPLIT_PPM   ! temporal time splitting 
+INTEGER         :: IIB, IIE, IJB, IJE
 !-------------------------------------------------------------------------------
 !
 !*       0.     INITIALIZATION                        
 !              --------------
 !
+CALL GET_INDICE_ll(IIB,IJB,IIE,IJE)
 !
 GTKE=(SIZE(PTKET)/=0)
 !
@@ -273,9 +276,10 @@ END IF
 !*       2.2 computes CFL numbers
 !
 IF (.NOT. L1D) THEN
-  ZCFLU = ABS(ZRUCPPM * PTSTEP)
-  ZCFLV = ABS(ZRVCPPM * PTSTEP)
-  ZCFLW = ABS(ZRWCPPM * PTSTEP)
+  ZCFLU = 0.0 ; ZCFLV = 0.0 ;  ZCFLW = 0.0
+  ZCFLU(IIB:IIE,IJB:IJE,:) = ABS(ZRUCPPM(IIB:IIE,IJB:IJE,:) * PTSTEP)
+  ZCFLV(IIB:IIE,IJB:IJE,:) = ABS(ZRVCPPM(IIB:IIE,IJB:IJE,:) * PTSTEP)
+  ZCFLW(IIB:IIE,IJB:IJE,:) = ABS(ZRWCPPM(IIB:IIE,IJB:IJE,:) * PTSTEP)
   IF (.NOT. L2D) THEN
     ZCFL  = SQRT(ZCFLU**2+ZCFLV**2+ZCFLW**2)
   ELSE
index 845038e..cc947f1 100644 (file)
@@ -89,6 +89,7 @@ END MODULE MODI_ADVECTION_UVW
 !!                  04/2011  (V. Masson & C. Lac)    splits the routine and adds
 !!                                                   time splitting
 !!                  J.Escobar 21/03/2013: for HALOK comment all NHALO=1 test
+!!                  J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 
 !!
 !-------------------------------------------------------------------------------
 !
@@ -100,6 +101,7 @@ USE MODD_ARGSLIST_ll, ONLY : LIST_ll, HALO2LIST_ll
 USE MODD_PARAMETERS,  ONLY : JPVEXT
 USE MODD_CONF,        ONLY : NHALO
 USE MODD_BUDGET
+USE MODD_BLANK,       ONLY : NDUMMY1
 !
 USE MODI_SHUMAN
 USE MODI_CONTRAV
@@ -254,8 +256,8 @@ NULLIFY(TZFIELDS0_ll)
 !
 !-------------------------------------------------------------------------------
 !
-ISPLIT = 2 * KSPLIT_PPM
-ZTSTEP     = PTSTEP / REAL(ISPLIT)
+ISPLIT = 1 + NDUMMY1
+ZTSTEP = PTSTEP / REAL(ISPLIT)
 !
 !-------------------------------------------------------------------------------
 !
index df64c1f..9e9dfe3 100644 (file)
@@ -31,8 +31,7 @@ REAL,                     INTENT(IN)    :: PTSTEP
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PU , PV  , PW
                                                   ! Variables to advect
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PUT, PVT , PWT
-                                                  ! Variables for boundary
-                                                  ! conditions
+                                                  ! Variables at t
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PMXM_RHODJ
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PMYM_RHODJ
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PMZM_RHODJ
@@ -101,6 +100,7 @@ END MODULE MODI_ADVECUVW_RK
 !!                  04/2011  (V. Masson & C. Lac)    splits the routine and adds
 !!                                                   time splitting
 !!                  J.Escobar 21/03/2013: for HALOK comment all NHALO=1 test
+!!                  J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 
 !!
 !-------------------------------------------------------------------------------
 !
@@ -116,6 +116,7 @@ USE MODI_SHUMAN
 USE MODI_ADVECUVW_WENO_K
 USE MODI_ADV_BOUNDARIES
 USE MODI_GET_HALO
+USE MODE_MPPDB
 !
 !-------------------------------------------------------------------------------
 !
@@ -136,8 +137,7 @@ REAL,                     INTENT(IN)    :: PTSTEP
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PU , PV  , PW
                                                   ! Variables to advect
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PUT, PVT , PWT
-                                                  ! Variables for boundary
-                                                  ! conditions
+                                                  ! Variables at t
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PMXM_RHODJ
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PMYM_RHODJ
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PMZM_RHODJ
@@ -203,35 +203,111 @@ SELECT CASE (HTEMP_SCHEME)
   ISPL = 1
  CASE('RK21')
   ISPL = 2
+ CASE('NP32')
+  ISPL = 3
+ CASE('SP32')
+  ISPL = 3
  CASE('RK33')
   ISPL = 3
+ CASE('RKC4')
+  ISPL = 4
+ CASE('RK4B')
+  ISPL = 4
  CASE('RK53')
   ISPL = 5
+ CASE('RK62')
+  ISPL = 6
+ CASE('RK65')
+  ISPL = 6
 END SELECT
 !
 !
 ALLOCATE(ZBUT(ISPL-1,ISPL-1))
 ALLOCATE(ZBUTS(ISPL))
 !
-IF (ISPL == 1 ) ZBUTS = (/ 1. /)
-IF (ISPL == 2 ) THEN
-   ZBUTS     = (/ 0. , 1. /)
-   ZBUT(1,1)   = 3./4.
-END IF
-IF (ISPL == 3 ) THEN
-   ZBUTS     = (/ 1./6. , 1./6. , 2./3. /)
-   ZBUT(1,1) = 1.
-   ZBUT(1,2) = 0.
-   ZBUT(2,:) = 1./4.
-END IF
-IF (ISPL == 5 ) THEN
-   ZBUTS     = (/ 1./4. , 0., 0., 0., 3./4. /)
-   ZBUT      = 0.
-   ZBUT(1,1) = 1./7.
-   ZBUT(2,2) = 3./16.
-   ZBUT(3,3) = 1./3.
-   ZBUT(4,4) = 2./3.
-END IF
+SELECT CASE (HTEMP_SCHEME)
+  CASE('RK11')
+    ZBUTS = (/ 1. /)
+  CASE('RK21')
+    ZBUTS     = (/ 0. , 1. /)
+    ZBUT(1,1)   = 3./4.
+  CASE('RK33')
+    ZBUTS     = (/ 1./6. , 1./6. , 2./3. /)
+    ZBUT(1,1) = 1.
+    ZBUT(1,2) = 0.
+    ZBUT(2,1) = 1./4.
+    ZBUT(2,2) = 1./4.
+  CASE('NP32')
+    ZBUTS     = (/ 1./2. , 0., 1./2. /)
+    ZBUT(1,1) = 1./3.
+    ZBUT(1,2) = 0.
+    ZBUT(2,1) = 0.
+    ZBUT(2,2) = 1.
+  CASE('SP32')
+    ZBUTS     = (/ 1./3. , 1./3. , 1./3. /)
+    ZBUT(1,1) = 1./2.
+    ZBUT(1,2) = 0.
+    ZBUT(2,1) = 1./2.
+    ZBUT(2,2) = 1./2.
+  CASE('RKC4')
+    ZBUTS     = (/ 1./6. , 1./3. , 1./3. , 1./6./)
+    ZBUT      = 0.
+    ZBUT(1,1) = 1./2.
+    ZBUT(2,2) = 1./2.
+    ZBUT(3,3) = 1.
+  CASE('RK4B')
+    ZBUTS     = (/ 1./8. , 3./8. , 3./8. , 1./8./)
+    ZBUT      = 0.
+    ZBUT(1,1) = 1./3.
+    ZBUT(2,1) = -1./3.
+    ZBUT(2,2) = 1.
+    ZBUT(3,1) = 1.
+    ZBUT(3,2) = -1.
+    ZBUT(3,3) = 1.
+  CASE('RK53')
+    ZBUTS     = (/ 1./4. , 0. , 0. , 0. , 3./4. /)
+    ZBUT      = 0.
+    ZBUT(1,1) = 1./7.
+    ZBUT(2,2) = 3./16.
+    ZBUT(3,3) = 1./3.
+    ZBUT(4,4) = 2./3.
+  CASE('RK62')
+    ZBUTS     = (/ 1./6. , 1./6. , 1./6. , 1./6. , 1./6. , 1./6. /)
+    ZBUT      = 0.
+    ZBUT(1,1) = 1./5.
+    ZBUT(2,1) = 1./5.
+    ZBUT(2,2) = 1./5.
+    ZBUT(3,1) = 1./5.
+    ZBUT(3,2) = 1./5.
+    ZBUT(3,3) = 1./5.
+    ZBUT(4,1) = 1./5.
+    ZBUT(4,2) = 1./5.
+    ZBUT(4,3) = 1./5.
+    ZBUT(4,4) = 1./5.
+    ZBUT(5,1) = 1./5.
+    ZBUT(5,2) = 1./5.
+    ZBUT(5,3) = 1./5.
+    ZBUT(5,4) = 1./5.
+    ZBUT(5,5) = 1./5.
+CASE('RK65')
+    ZBUTS= (/ 7./90. , 0. , 16./45. , 2./15. , 16./45. , 7./90. /)
+    ZBUT= 0.
+    ZBUT(1,1) = 1./4.
+    ZBUT(2,1) = 1./8.
+    ZBUT(2,2) = 1./8.
+    ZBUT(3,1) = 0
+    ZBUT(3,2) = -1./2.
+    ZBUT(3,3) = 1
+    ZBUT(4,1) = 3./16.
+    ZBUT(4,2) = 0
+    ZBUT(4,3) = 0
+    ZBUT(4,4) = 9./16.
+    ZBUT(5,1) = -3./7.
+    ZBUT(5,2) = 2./7.
+    ZBUT(5,3) = 12./7.
+    ZBUT(5,4) = -12./7.
+    ZBUT(5,5) = 8./7.
+END SELECT
 !
 ALLOCATE(ZRUS(SIZE(PUT,1),SIZE(PUT,2),SIZE(PWT,3),ISPL))
 ALLOCATE(ZRVS(SIZE(PUT,1),SIZE(PUT,2),SIZE(PWT,3),ISPL))
@@ -259,18 +335,12 @@ ZU = PU
 ZV = PV
 ZW = PW
 !
-NULLIFY(TZFIELDMT_ll)
-!!$IF( NHALO==1 ) THEN      
-!
-   CALL ADD3DFIELD_ll(TZFIELDMT_ll, ZUT)
-   CALL ADD3DFIELD_ll(TZFIELDMT_ll, ZVT)
-   CALL ADD3DFIELD_ll(TZFIELDMT_ll, ZWT)
-!
-   INBVAR = 3
-!!$   IF( NHALO==1 ) 
-   CALL INIT_HALO2_ll(TZHALO2MT_ll,INBVAR,SIZE(PUT,1),SIZE(PUT,2),SIZE(PWT,3))
-!
-!!$ END IF
+NULLIFY(TZFIELDMT_ll)    
+CALL ADD3DFIELD_ll(TZFIELDMT_ll, ZUT)
+CALL ADD3DFIELD_ll(TZFIELDMT_ll, ZVT)
+CALL ADD3DFIELD_ll(TZFIELDMT_ll, ZWT)
+INBVAR = 3
+CALL INIT_HALO2_ll(TZHALO2MT_ll,INBVAR,SIZE(PUT,1),SIZE(PUT,2),SIZE(PWT,3))
 !
 ZRUS = 0.
 ZRVS = 0.
@@ -281,71 +351,65 @@ ZRWS = 0.
 !              -----------------------------
 !
  DO JS = 1, ISPL
-!
-!
-      CALL ADV_BOUNDARIES (HLBCX, HLBCY, ZUT, PUT, 'U' )    
-      CALL ADV_BOUNDARIES (HLBCX, HLBCY, ZVT, PVT, 'V' )    
-      CALL ADV_BOUNDARIES (HLBCX, HLBCY, ZWT, PWT, 'W' )
-      ZW (:,:,IKE+1 ) = 0.
-     !JUAN
-!!$     IF ( NHALO == 1 ) THEN   
-        CALL UPDATE_HALO_ll(TZFIELDMT_ll,IINFO_ll)        
-        CALL UPDATE_HALO2_ll(TZFIELDMT_ll, TZHALO2MT_ll, IINFO_ll)
-!!$     ENDIF
-     !JUAN
+!              
+    CALL ADV_BOUNDARIES (HLBCX, HLBCY, ZUT, PUT, 'U' )    
+    CALL ADV_BOUNDARIES (HLBCX, HLBCY, ZVT, PVT, 'V' )    
+    CALL ADV_BOUNDARIES (HLBCX, HLBCY, ZWT, PWT, 'W' )
+!    
+    ZW (:,:,IKE+1 ) = 0.
+! 
+    CALL UPDATE_HALO_ll(TZFIELDMT_ll,IINFO_ll)        
+    CALL UPDATE_HALO2_ll(TZFIELDMT_ll, TZHALO2MT_ll, IINFO_ll)
 !
 !*       4.     Advection with WENO
 !              -------------------
 !
-     CALL ADVECUVW_WENO_K (HLBCX, HLBCY, KWENO_ORDER, ZUT, ZVT, ZWT,      &
-                          PRUCT, PRVCT, PRWCT,                            &
-                          ZRUS(:,:,:,JS), ZRVS(:,:,:,JS), ZRWS(:,:,:,JS), &
-                          TZHALO2MT_ll                                    )
-!
-!
-! ==> verifier si c'est utile !
-!
+    CALL ADVECUVW_WENO_K (HLBCX, HLBCY, KWENO_ORDER, ZUT, ZVT, ZWT,     &
+                        PRUCT, PRVCT, PRWCT,                            &
+                        ZRUS(:,:,:,JS), ZRVS(:,:,:,JS), ZRWS(:,:,:,JS), &
+                        TZHALO2MT_ll                                    )
+!                      
      NULLIFY(TZFIELDS4_ll)
-!!$     IF(NHALO == 1) THEN
-          CALL ADD3DFIELD_ll(TZFIELDS4_ll, ZRUS(:,:,:,JS))
-          CALL ADD3DFIELD_ll(TZFIELDS4_ll, ZRVS(:,:,:,JS))
-          CALL ADD3DFIELD_ll(TZFIELDS4_ll, ZRWS(:,:,:,JS))
-          CALL UPDATE_HALO_ll(TZFIELDS4_ll,IINFO_ll)
-          CALL CLEANLIST_ll(TZFIELDS4_ll)
-!!$     END IF
-
-    IF ( JS /= ISPL ) THEN
 !
+    CALL ADD3DFIELD_ll(TZFIELDS4_ll, ZRUS(:,:,:,JS))
+    CALL ADD3DFIELD_ll(TZFIELDS4_ll, ZRVS(:,:,:,JS))
+    CALL ADD3DFIELD_ll(TZFIELDS4_ll, ZRWS(:,:,:,JS))
+    CALL UPDATE_HALO_ll(TZFIELDS4_ll,IINFO_ll)
+    CALL CLEANLIST_ll(TZFIELDS4_ll)
+!              
+  IF ( JS /= ISPL ) THEN
+!
+   DO JI = 1, JS
 
-     DO JI = 1, JS
-
+      ZUT = ZU
+      ZVT = ZV
+      ZWT = ZW
 !
 ! Intermediate guesses inside the RK loop
 !
-        ZUT(:,:,:) = ZU(:,:,:) + ZBUT(JS,JI) *  PTSTEP *  &
-         ( ZRUS(:,:,:,JI) + PRUS_OTHER(:,:,:) ) / PMXM_RHODJ
-        ZVT(:,:,:) = ZV(:,:,:) + ZBUT(JS,JI) *  PTSTEP *  &
-         ( ZRVS(:,:,:,JI) + PRVS_OTHER(:,:,:) ) / PMYM_RHODJ
-        ZWT(:,:,:) = ZW(:,:,:) + ZBUT(JS,JI) *  PTSTEP *  &
-         ( ZRWS(:,:,:,JI) + PRWS_OTHER(:,:,:) ) / PMZM_RHODJ
+      ZUT(:,:,:) = ZUT(:,:,:) + ZBUT(JS,JI) *  PTSTEP *  &
+       ( ZRUS(:,:,:,JI) + PRUS_OTHER(:,:,:) ) / PMXM_RHODJ
+      ZVT(:,:,:) = ZVT(:,:,:) + ZBUT(JS,JI) *  PTSTEP *  &
+       ( ZRVS(:,:,:,JI) + PRVS_OTHER(:,:,:) ) / PMYM_RHODJ
+      ZWT(:,:,:) = ZWT(:,:,:) + ZBUT(JS,JI) *  PTSTEP *  &
+       ( ZRWS(:,:,:,JI) + PRWS_OTHER(:,:,:) ) / PMZM_RHODJ
 !
-      END DO
+    END DO
 !
-    ELSE  
+  ELSE  
 !
 ! Guesses at the end of the RK loop
 !
-      DO JI = 1, ISPL
-       PRUS_ADV(:,:,:) = PRUS_ADV(:,:,:) + ZBUTS(JI) * ZRUS(:,:,:,JI) 
-       PRVS_ADV(:,:,:) = PRVS_ADV(:,:,:) + ZBUTS(JI) * ZRVS(:,:,:,JI) 
-       PRWS_ADV(:,:,:) = PRWS_ADV(:,:,:) + ZBUTS(JI) * ZRWS(:,:,:,JI) 
-      END DO
+    DO JI = 1, ISPL
+     PRUS_ADV(:,:,:) = PRUS_ADV(:,:,:) + ZBUTS(JI) * ZRUS(:,:,:,JI) 
+     PRVS_ADV(:,:,:) = PRVS_ADV(:,:,:) + ZBUTS(JI) * ZRVS(:,:,:,JI) 
+     PRWS_ADV(:,:,:) = PRWS_ADV(:,:,:) + ZBUTS(JI) * ZRWS(:,:,:,JI) 
+    END DO
 !
-    END IF
+  END IF
 !
 ! End of the RK loop
  END DO
-
 !
 !
 DEALLOCATE(ZBUT, ZBUTS, ZRUS, ZRVS, ZRWS)
index edd6951..a28258d 100644 (file)
@@ -45,7 +45,10 @@ END MODULE MODI_ADVECUVW_WENO_K
 !!
 !!    MODIFICATIONS
 !!    ------------- 
-!!      J.Escobar 21/03/2013: for HALOK comment all NHALO=1 test
+!!      J.Escobar 21/03/2013: for HALOK comment all NHALO=1 tests
+!!               T.Lunet               02/10/2014: add get_halo for WENO 5
+!!                                     suppress comment of NHALO=1 tests
+!!      J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 
 !!
 !-------------------------------------------------------------------------------
 !
@@ -64,6 +67,8 @@ USE MODI_ADVEC_WENO_K_2_AUX
 USE MODI_ADVEC_WENO_K_3_AUX
 !
 USE MODD_CONF,        ONLY : NHALO
+USE MODE_MPPDB
+USE MODI_GET_HALO
 !
 IMPLICIT NONE
 !
@@ -78,7 +83,7 @@ REAL, DIMENSION(:,:,:),   INTENT(IN) :: PRUCT  ! contravariant
 REAL, DIMENSION(:,:,:),   INTENT(IN) :: PRVCT  !  components
 REAL, DIMENSION(:,:,:),   INTENT(IN) :: PRWCT  ! of momentum
 !
-REAL, DIMENSION(:,:,:),   INTENT(IN) :: PUT, PVT, PWT        ! Variables at t
+REAL, DIMENSION(:,:,:),   INTENT(IN) :: PUT, PVT, PWT     ! Variables at t
 !
 REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PRUS, PRVS, PRWS     ! Source terms
 !
@@ -87,11 +92,15 @@ TYPE(HALO2LIST_ll), POINTER :: TPHALO2LIST ! list for diffusion
 !*       0.2   Declarations of local variables :
 !
 TYPE(HALO2LIST_ll), POINTER :: TZHALO2_UT,TZHALO2_VT,TZHALO2_WT
+
+TYPE(LIST_ll), POINTER :: TZHALO2_ZMEAN
+INTEGER                     :: IINFO_ll    ! return code of parallel routine
 !
-REAL, DIMENSION(SIZE(PUT,1), SIZE(PUT,2), SIZE(PUT,3)) :: ZMEAN, ZWORK
+REAL, DIMENSION(SIZE(PUT,1), SIZE(PUT,2), SIZE(PUT,3)) :: ZMEAN, ZWORK, DYM_ZMEAN
 !
 INTEGER :: K_SCHEME
 INTEGER :: IKU
+INTEGER :: IWORK
 !
 !------------------------- ADVECTION OF MOMENTUM ------------------------------
 !
@@ -101,11 +110,13 @@ TZHALO2_VT => TPHALO2LIST%NEXT              ! 2nd  add3dfield in model_n
 TZHALO2_WT => TPHALO2LIST%NEXT%NEXT         ! 3rst add3dfield in model_n
 !
 IKU=SIZE(PUT,3)
+ZMEAN = 0.0
+ZWORK=0.0
 !      -------------------------------------------------------
 !
 SELECT CASE(KWENO_ORDER)
 !
-CASE(1)
+CASE(1) ! WENO 1
 !
 !  U component
 !
@@ -132,26 +143,18 @@ CASE(1)
   PRWS = PRWS - DZM(1,IKU,1,UP_WZ(PWT,MZF(1,IKU,1,PRWCT)))
 !
 !
-CASE(3)
+CASE(3) ! WENO 3
 !
 ! U component
 !
   ZWORK = MXF(PRUCT)
-!!$  IF(NHALO == 1) THEN
-    CALL ADVEC_WENO_K_2_UX(HLBCX, PUT, ZWORK, ZMEAN, TZHALO2_UT%HALO2)
-!!$  ELSE
-!!$    CALL ADVEC_WENO_K_2_UX(HLBCX, PUT, ZWORK, ZMEAN)
-!!$  ENDIF
+  CALL ADVEC_WENO_K_2_UX(HLBCX, PUT, ZWORK, ZMEAN, TZHALO2_UT%HALO2)
   PRUS = PRUS - DXM(ZMEAN)
   
 !   
   IF (.NOT.L2D) THEN
     ZWORK = MXM(PRVCT)
-!!$    IF(NHALO == 1) THEN
-      CALL ADVEC_WENO_K_2_MY(HLBCY, PUT, ZWORK, ZMEAN, TZHALO2_UT%HALO2)
-!!$    ELSE
-!!$      CALL ADVEC_WENO_K_2_MY(HLBCY, PUT, ZWORK, ZMEAN)
-!!$    ENDIF
+    CALL ADVEC_WENO_K_2_MY(HLBCY, PUT, ZWORK, ZMEAN, TZHALO2_UT%HALO2)
     PRUS = PRUS - DYF(ZMEAN)
   END IF
 !
@@ -161,19 +164,11 @@ CASE(3)
 !
   IF (.NOT.L2D) THEN
     ZWORK = MYM(PRUCT)
-!!$    IF(NHALO == 1) THEN
-      CALL ADVEC_WENO_K_2_MX(HLBCX, PVT, ZWORK, ZMEAN, TZHALO2_VT%HALO2)
-!!$    ELSE
-!!$      CALL ADVEC_WENO_K_2_MX(HLBCX, PVT, ZWORK, ZMEAN)
-!!$    ENDIF
+    CALL ADVEC_WENO_K_2_MX(HLBCX, PVT, ZWORK, ZMEAN, TZHALO2_VT%HALO2)
     PRVS = PRVS - DXF(ZMEAN)
 !   
     ZWORK = MYF(PRVCT)
-!!$    IF(NHALO == 1) THEN
-      CALL ADVEC_WENO_K_2_VY(HLBCY, PVT, ZWORK, ZMEAN, TZHALO2_VT%HALO2)
-!!$    ELSE
-!!$      CALL ADVEC_WENO_K_2_VY(HLBCY, PVT, ZWORK, ZMEAN)
-!!$    ENDIF
+    CALL ADVEC_WENO_K_2_VY(HLBCY, PVT, ZWORK, ZMEAN, TZHALO2_VT%HALO2)
     PRVS = PRVS - DYM(ZMEAN)
 !
     PRVS = PRVS - DZF(1,IKU,1,WENO_K_2_MZ(PVT, MYM(PRWCT)))
@@ -182,93 +177,75 @@ CASE(3)
 ! W component
 !
   ZWORK = MZM(1,IKU,1,PRUCT)
-!!$  IF(NHALO == 1) THEN
-    CALL ADVEC_WENO_K_2_MX(HLBCX, PWT, ZWORK, ZMEAN, TZHALO2_WT%HALO2)
-!!$  ELSE
-!!$    CALL ADVEC_WENO_K_2_MX(HLBCX, PWT, ZWORK, ZMEAN)
-!!$  ENDIF
+  CALL ADVEC_WENO_K_2_MX(HLBCX, PWT, ZWORK, ZMEAN, TZHALO2_WT%HALO2)
   PRWS = PRWS - DXF(ZMEAN)
 !
   IF (.NOT.L2D) THEN
     ZWORK = MZM(1,IKU,1,PRVCT)
-!!$    IF(NHALO == 1) THEN
-      CALL ADVEC_WENO_K_2_MY(HLBCY, PWT, ZWORK, ZMEAN, TZHALO2_WT%HALO2)
-!!$    ELSE
-!!$      CALL ADVEC_WENO_K_2_MY(HLBCY, PWT, ZWORK, ZMEAN)
-!!$    ENDIF
+    CALL ADVEC_WENO_K_2_MY(HLBCY, PWT, ZWORK, ZMEAN, TZHALO2_WT%HALO2)
     PRWS = PRWS - DYF(ZMEAN)
   END IF
 !
   PRWS = PRWS - DZM(1,IKU,1,WENO_K_2_WZ(PWT,MZF(1,IKU,1,PRWCT)))
 !
 !
-CASE(5)
+CASE(5) ! WENO 5
 !
 ! U component
 !
   ZWORK = MXF(PRUCT)
-!!$  IF(NHALO == 1) THEN
-    CALL ADVEC_WENO_K_3_UX(HLBCX, PUT, ZWORK, ZMEAN, TZHALO2_UT%HALO2)
-!!$  ELSE
-!!$    CALL ADVEC_WENO_K_3_UX(HLBCX, PUT, ZWORK, ZMEAN)
-!!$  ENDIF
+  CALL ADVEC_WENO_K_3_UX(HLBCX, PUT, ZWORK, ZMEAN) 
+  CALL GET_HALO(ZMEAN)! Update HALO 
   PRUS = PRUS - DXM(ZMEAN)
-!   
-  IF (.NOT.L2D) THEN
-    ZWORK = MXM(PRVCT)
-!!$    IF(NHALO == 1) THEN
-      CALL ADVEC_WENO_K_3_MY(HLBCY, PUT, ZWORK, ZMEAN, TZHALO2_UT%HALO2)
-!!$    ELSE
-!!$      CALL ADVEC_WENO_K_3_MY(HLBCY, PUT, ZWORK, ZMEAN)
-!!$    ENDIF
-    PRUS = PRUS - DYM(ZMEAN)
+!
+  IF (.NOT.L2D) THEN! 3D Case
+   ZWORK = MXM(PRVCT)     
+   CALL ADVEC_WENO_K_3_MY(HLBCY, PUT, ZWORK, ZMEAN)
+   CALL GET_HALO(ZMEAN)! Update HALO 
+   PRUS = PRUS - DYF(ZMEAN)
   END IF
 !
-  PRUS = PRUS - DZF(1,IKU,1,WENO_K_3_MZ(PUT, MXM(PRWCT)))
+  ZMEAN = WENO_K_3_MZ(PUT, MXM(PRWCT))
+  CALL GET_HALO(ZMEAN)! Update HALO - maybe not necessary (T.Lunet)
+  PRUS = PRUS - DZF(1,IKU,1,ZMEAN) 
 !
-! V component
+! V component, only called in 3D case
 !
   IF (.NOT.L2D) THEN
+!
     ZWORK = MYM(PRUCT)
-!!$    IF(NHALO == 1) THEN
-      CALL ADVEC_WENO_K_3_MX(HLBCX, PVT, ZWORK, ZMEAN, TZHALO2_VT%HALO2)
-!!$    ELSE
-!!$      CALL ADVEC_WENO_K_3_MX(HLBCX, PVT, ZWORK, ZMEAN)
-!!$    ENDIF
+    CALL ADVEC_WENO_K_3_MX(HLBCX, PVT, ZWORK, ZMEAN) 
+    CALL GET_HALO(ZMEAN)! Update HALO 
     PRVS = PRVS - DXF(ZMEAN)
-!   
+!
     ZWORK = MYF(PRVCT)
-!!$    IF(NHALO == 1) THEN
-      CALL ADVEC_WENO_K_3_VY(HLBCY, PVT, ZWORK, ZMEAN, TZHALO2_VT%HALO2)
-!!$    ELSE
-!!$      CALL ADVEC_WENO_K_3_VY(HLBCY, PVT, ZWORK, ZMEAN)
-!!$    ENDIF
+    CALL ADVEC_WENO_K_3_VY(HLBCY, PVT, ZWORK, ZMEAN)
+    CALL GET_HALO(ZMEAN)! Update HALO 
     PRVS = PRVS - DYM(ZMEAN)
 !
-    PRVS = PRVS - DZF(1,IKU,1,WENO_K_3_MZ(PVT, MYM(PRWCT)))
+    ZMEAN = WENO_K_3_MZ(PVT, MYM(PRWCT))
+    CALL GET_HALO(ZMEAN)! Update HALO - maybe not necessary (T.Lunet)
+    PRVS = PRVS - DZF(1,IKU,1,ZMEAN) 
+!
   END IF
 !
 ! W component
 !
   ZWORK = MZM(1,IKU,1,PRUCT)
-!!$  IF(NHALO == 1) THEN
-    CALL ADVEC_WENO_K_3_MX(HLBCX, PWT, ZWORK, ZMEAN, TZHALO2_WT%HALO2)
-!!$  ELSE
-!!$    CALL ADVEC_WENO_K_3_MX(HLBCX, PWT, ZWORK, ZMEAN)
-!!$  ENDIF
+  CALL ADVEC_WENO_K_3_MX(HLBCX, PWT, ZWORK, ZMEAN)
+  CALL GET_HALO(ZMEAN)! Update HALO
   PRWS = PRWS - DXF(ZMEAN)
 !
-  IF (.NOT.L2D) THEN
+  IF (.NOT.L2D) THEN! 3D Case
     ZWORK = MZM(1,IKU,1,PRVCT)
-!!$    IF(NHALO == 1) THEN
-      CALL ADVEC_WENO_K_3_MY(HLBCY, PWT, ZWORK, ZMEAN, TZHALO2_WT%HALO2)
-!!$    ELSE
-!!$      CALL ADVEC_WENO_K_3_MY(HLBCY, PWT, ZWORK, ZMEAN)
-!!$    ENDIF
+    CALL ADVEC_WENO_K_3_MY(HLBCY, PWT, ZWORK, ZMEAN)
+    CALL GET_HALO(ZMEAN)! Update HALO
     PRWS = PRWS - DYF(ZMEAN)
   END IF
 !
-  PRWS = PRWS - DZM(1,IKU,1,WENO_K_3_WZ(PWT,MZF(1,IKU,1,PRWCT)))
+  ZMEAN = WENO_K_3_WZ(PWT,MZF(1,IKU,1,PRWCT))
+  CALL GET_HALO(ZMEAN)! Update HALO - maybe not necessary (T.Lunet)
+  PRWS = PRWS - DZM(1,IKU,1,ZMEAN)
 !
 !
 END SELECT
index 6a5af2d..8f5101d 100644 (file)
@@ -106,6 +106,7 @@ END MODULE MODI_ANEL_BALANCE_n
 !!      J.Stein and J.P. lafore 17/04/96 new version including the way to choose
 !!            the model number and the instant where the projection is performed
 !!      Stein,Lafore 14/01/97 new anelastic equations
+!!      J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -214,8 +215,6 @@ ALLOCATE(ZBF_SXP2_YP1_Z(IIU_SXP2_YP1_Z_ll,IJU_SXP2_YP1_Z_ll,IKU_SXP2_YP1_Z_ll))
 !
 
 !
-!!$CALL TRID(CLUOUT0,CLBCX,CLBCY,XMAP,XDXHAT,XDYHAT,ZDXHATM,ZDYHATM,ZRHOM,  &
-!!$          ZAF,ZCF,ZTRIGSX,ZTRIGSY,IIFAXX,IIFAXY,XRHODJ,XTHVREF,XZZ,ZBFY )
 CALL TRIDZ(CLUOUT0,CLBCX,CLBCY,XMAP,XDXHAT,XDYHAT,ZDXHATM,ZDYHATM,ZRHOM,  &
           ZAF,ZCF,ZTRIGSX,ZTRIGSY,IIFAXX,IIFAXY,XRHODJ,XTHVREF,XZZ,ZBFY,&
           ZBFB,ZBF_SXP2_YP1_Z) 
index 96f6db5..599f521 100644 (file)
@@ -170,6 +170,7 @@ END MODULE MODI_BIKHARDT4D
 !!      J.P. Lafore  22/10/96  interpolation coefficients added to the arguments
 !!                             list to avoid duplication. 
 !!     V. Masson and F. Gheusi (10/10/97) bug in cyclic case
+!!     J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 
 !-------------------------------------------------------------------------------
 !
 !*       0.     DECLARATIONS
@@ -212,8 +213,8 @@ REAL :: ZBFY1,ZBFY2,ZBFY3,ZBFY4     ! at Flux points in Y-direc.
 ! 
 INTEGER             :: IIU       ! Upper dimension in x direction (inner model)
 INTEGER             :: IJU       ! Upper dimension in y direction (inner model)
-INTEGER             :: IIB
-INTEGER             :: IJB
+INTEGER             :: IIB, IIE
+INTEGER             :: IJB, IJE
 INTEGER             :: IIU1      ! Upper dimension in x direction (outer model)
 INTEGER             :: IJU1      ! Upper dimension in y direction (outer model)
 INTEGER             :: IIS,IJS   ! indices I and J in x and y dir. for scalars
@@ -231,8 +232,7 @@ IIU = SIZE(PFIELD2,1)
 IJU = SIZE(PFIELD2,2)
 IIU1= SIZE(PFIELD1,1)
 IJU1= SIZE(PFIELD1,2)
-IIB = 1+JPHEXT
-IJB = 1+JPHEXT
+CALL GET_INDICE_ll (IIB,IJB,IIE,IJE)
 !
 !*       1.2   extrapolates field of outer model
 !
@@ -268,6 +268,7 @@ IF ( HLBCY(1) == 'CYCL' ) THEN
 END IF
 !-------------------------------------------------------------------------------
 !
+PFIELD2 = 0.0
 SELECT CASE (KGRID)
 !
 !*      2.1    Mass points
@@ -285,11 +286,11 @@ SELECT CASE (KGRID)
       ZBMY3 = PBMY3(JEPSY)
       ZBMY4 = PBMY4(JEPSY)
       DO JI = KXOR,KXEND
-        IIF = IIB+JEPSX-1           +(JI-KXOR-1)*KDXRATIO
-        IIS = IIB+JEPSX-1+KDXRATIO/2+(JI-KXOR-1)*KDXRATIO
+!!$        IIF = IIB+JEPSX-1           +(JI-KXOR-JPHEXT)*KDXRATIO
+        IIS = IIB+JEPSX-1+KDXRATIO/2+(JI-KXOR-JPHEXT)*KDXRATIO
         DO JJ = KYOR,KYEND
-          IJF = IJB+JEPSY-1           +(JJ-KYOR-1)*KDYRATIO
-          IJS = IJB+JEPSY-1+KDYRATIO/2+(JJ-KYOR-1)*KDYRATIO
+!!$          IJF = IJB+JEPSY-1           +(JJ-KYOR-JPHEXT)*KDYRATIO
+          IJS = IJB+JEPSY-1+KDYRATIO/2+(JJ-KYOR-JPHEXT)*KDYRATIO
 !
           IF (1 <= IIS .AND. IIS <= IIU .AND. 1 <= IJS .AND. IJS <= IJU) THEN
 !
@@ -326,9 +327,9 @@ SELECT CASE (KGRID)
       ZBMY3 = PBMY3(JEPSY)
       ZBMY4 = PBMY4(JEPSY)
       DO JI = KXOR,KXEND
-        IIF = IIB+JEPSX-1           +(JI-KXOR-1)*KDXRATIO
+        IIF = IIB+JEPSX-1           +(JI-KXOR-JPHEXT)*KDXRATIO
         DO JJ = KYOR,KYEND
-          IJS = IJB+JEPSY-1+KDYRATIO/2+(JJ-KYOR-1)*KDYRATIO
+          IJS = IJB+JEPSY-1+KDYRATIO/2+(JJ-KYOR-JPHEXT)*KDYRATIO
 
           IF (1 <= IIF .AND. IIF <= IIU .AND. 1 <= IJS .AND. IJS <= IJU) THEN 
 !
@@ -365,9 +366,9 @@ SELECT CASE (KGRID)
       ZBFY3 = PBFY3(JEPSY)
       ZBFY4 = PBFY4(JEPSY)
       DO JI = KXOR,KXEND
-        IIS = IIB+JEPSX-1+KDXRATIO/2+(JI-KXOR-1)*KDXRATIO
+        IIS = IIB+JEPSX-1+KDXRATIO/2+(JI-KXOR-JPHEXT)*KDXRATIO
         DO JJ = KYOR,KYEND
-          IJF = IJB+JEPSY-1           +(JJ-KYOR-1)*KDYRATIO
+          IJF = IJB+JEPSY-1           +(JJ-KYOR-JPHEXT)*KDYRATIO
 
           IF (1 <= IIS .AND. IIS <= IIU .AND. 1 <= IJF .AND. IJF <= IJU) THEN 
 !
@@ -405,9 +406,9 @@ SELECT CASE (KGRID)
       ZBFY3 = PBFY3(JEPSY)
       ZBFY4 = PBFY4(JEPSY)
       DO JI = KXOR,KXEND
-        IIF = IIB+JEPSX-1           +(JI-KXOR-1)*KDXRATIO
+        IIF = IIB+JEPSX-1           +(JI-KXOR-JPHEXT)*KDXRATIO
         DO JJ = KYOR,KYEND
-          IJF = IJB+JEPSY-1           +(JJ-KYOR-1)*KDYRATIO
+          IJF = IJB+JEPSY-1           +(JJ-KYOR-JPHEXT)*KDYRATIO
 
           IF (1 <= IIF .AND. IIF <= IIU .AND. 1 <= IJF .AND. IJF <= IJU) THEN 
 !
index cf439c4..0bfc56d 100644 (file)
@@ -169,6 +169,7 @@ END MODULE MODI_BOUNDARIES
 !!      Modification    04/2013  (C.Lac)    Remove instant M               
 !!      Modification    01/2015  (JL Redelsperger) Introduction of ponderation
 !!                                 for non normal velocity and potential temp
+!!      J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -292,6 +293,8 @@ LOGICAL, SAVE        :: GFIRSTCALLFF = .TRUE.
 LOGICAL              :: GFFTMP
 #endif
 !
+INTEGER              :: JI,JJ
+!
 !-------------------------------------------------------------------------------
 !
 !*       1.    COMPUTE DIMENSIONS OF ARRAYS AND OTHER INDICES:
@@ -471,26 +474,30 @@ SELECT CASE ( HLBCX(1) )
   CASE ('OPEN')
 !
     IF(SIZE(PUT) /= 0) THEN
-      PUT(IIB-JPHEXT,:,:)=0.
-      WHERE ( PUT(IIB,:,:) <= 0. )               !  OUTFLOW condition
-        PVT  (IIB-1,:,:) = 2.*PVT  (IIB,:,:)   -PVT  (IIB+1,:,:)
-        PWT  (IIB-1,:,:) = 2.*PWT  (IIB,:,:)   -PWT  (IIB+1,:,:)
-        PTHT (IIB-1,:,:) = 2.*PTHT (IIB,:,:)   -PTHT (IIB+1,:,:)
-!
-      ELSEWHERE                                   !  INFLOW  condition
-        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
+       DO JI=JPHEXT,1,-1
+          PUT(JI,:,:)=0.
+          WHERE ( PUT(IIB,:,:) <= 0. )               !  OUTFLOW condition
+             PVT  (JI,:,:) = 2.*PVT  (JI+1,:,:)  -PVT  (JI+2,:,:)
+             PWT  (JI,:,:) = 2.*PWT  (JI+1,:,:)  -PWT  (JI+2,:,:)
+             PTHT (JI,:,:) = 2.*PTHT (JI+1,:,:)  -PTHT (JI+2,:,:)
+             !
+          ELSEWHERE                                   !  INFLOW  condition
+             PVT  (JI,:,:) = ZPOND*ZLBXVT   (JI,:,:) + (1.-ZPOND)* PVT(JI+1,:,:) ! 1 
+             PWT  (JI,:,:) = ZPOND*ZLBXWT   (JI,:,:) + (1.-ZPOND)* PWT(JI+1,:,:) ! 1
+             PTHT (JI,:,:) = ZPOND*ZLBXTHT  (JI,:,:) + (1.-ZPOND)* PTHT(JI+1,:,:)! 1
+          ENDWHERE
+       ENDDO
     ENDIF
 !
 !
   IF(SIZE(PTKET) /= 0) THEN
-    WHERE ( PUT(IIB,:,:) <= 0. )               !  OUTFLOW condition
-      PTKET(IIB-1,:,:) = MAX(XTKEMIN, 2.*PTKET(IIB,:,:)-PTKET(IIB+1,:,:))  
-    ELSEWHERE                                  !  INFLOW  condition
-      PTKET(IIB-1,:,:) = MAX(XTKEMIN,ZLBXTKET(1,:,:))  
-    ENDWHERE
+     DO JI=JPHEXT,1,-1
+        WHERE ( PUT(IIB,:,:) <= 0. )               !  OUTFLOW condition
+           PTKET(JI,:,:) = MAX(XTKEMIN, 2.*PTKET(JI+1,:,:)-PTKET(JI+2,:,:))  
+        ELSEWHERE                                  !  INFLOW  condition
+           PTKET(JI,:,:) = MAX(XTKEMIN,ZLBXTKET(JI,:,:))  ! 1
+        ENDWHERE
+     ENDDO
   END IF
     !
 !                      Case with KRR moist variables 
@@ -498,27 +505,35 @@ SELECT CASE ( HLBCX(1) )
 ! 
 !
   DO JRR =1 ,KRR
-    IF(SIZE(PUT) /= 0) THEN
-      WHERE ( PUT(IIB,:,:) <= 0. )         !  OUTFLOW condition
-        PRT(IIB-1,:,:,JRR) = MAX(0.,2.*PRT(IIB,:,:,JRR) -PRT(IIB+1,:,:,JRR))
-      ELSEWHERE                            !  INFLOW  condition
-        PRT(IIB-1,:,:,JRR) = MAX(0.,ZLBXRT(1,:,:,JRR))
-      END WHERE
-    END IF
-    !
+     IF(SIZE(PUT) /= 0) THEN
+        DO JI=JPHEXT,1,-1
+           WHERE ( PUT(IIB,:,:) <= 0. )         !  OUTFLOW condition
+              PRT(JI,:,:,JRR) = MAX(0.,2.*PRT(JI+1,:,:,JRR) -PRT(JI+2,:,:,JRR))
+           ELSEWHERE                            !  INFLOW  condition
+              PRT(JI,:,:,JRR) = MAX(0.,ZLBXRT(JI,:,:,JRR)) ! 1
+           END WHERE
+        END DO
+     END IF
+     !
   END DO
 !
-  IF(SIZE(PSRCT) /= 0) PSRCT (IIB-1,:,:)   = PSRCT (IIB,:,:)
+  IF(SIZE(PSRCT) /= 0) THEN
+     DO JI=JPHEXT,1,-1
+        PSRCT (JI,:,:)   = PSRCT (JI+1,:,:)
+     END DO
+  END IF
 !
 !                       Case with KSV scalar variables  
   DO JSV=1 ,KSV
     IF(SIZE(PUT) /= 0) THEN
-      WHERE ( PUT(IIB,:,:) <= 0. )         !  OUTFLOW condition
-        PSVT(IIB-1,:,:,JSV) = MAX(XSVMIN(JSV),2.*PSVT(IIB,:,:,JSV) - &
-                                               PSVT(IIB+1,:,:,JSV))
-      ELSEWHERE                            !  INFLOW  condition
-        PSVT(IIB-1,:,:,JSV) = MAX(XSVMIN(JSV),ZLBXSVT(1,:,:,JSV))
-      END WHERE
+       DO JI=JPHEXT,1,-1
+          WHERE ( PUT(IIB,:,:) <= 0. )         !  OUTFLOW condition
+             PSVT(JI,:,:,JSV) = MAX(XSVMIN(JSV),2.*PSVT(JI+1,:,:,JSV) - &
+                  PSVT(JI+2,:,:,JSV))
+          ELSEWHERE                            !  INFLOW  condition
+             PSVT(JI,:,:,JSV) = MAX(XSVMIN(JSV),ZLBXSVT(JI,:,:,JSV)) ! 1
+          END WHERE
+       END DO
     END IF
     !
   END DO
@@ -560,28 +575,32 @@ SELECT CASE ( HLBCX(2) )
 !
   CASE ('OPEN')
 !
-    ILBX = SIZE(PLBXVM,1)
-    IF(SIZE(PUT) /= 0) THEN
-      WHERE ( PUT(IIE+1,:,:) >= 0. )               !  OUTFLOW condition
-        PVT  (IIE+1,:,:) = 2.*PVT  (IIE,:,:)   -PVT  (IIE-1,:,:)
-        PWT  (IIE+1,:,:) = 2.*PWT  (IIE,:,:)   -PWT  (IIE-1,:,:)
-        PTHT (IIE+1,:,:) = 2.*PTHT (IIE,:,:)   -PTHT (IIE-1,:,:)
-!
-      ELSEWHERE                                   !  INFLOW  condition
-        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
-!
-  IF(SIZE(PTKET) /= 0) THEN
-    ILBX = SIZE(PLBXTKEM,1)
-    WHERE ( PUT(IIE+1,:,:) >= 0. )             !  OUTFLOW condition
-      PTKET(IIE+1,:,:) = MAX(XTKEMIN, 2.*PTKET(IIE,:,:)-PTKET(IIE-1,:,:))  
-    ELSEWHERE                                  !  INFLOW  condition
-      PTKET(IIE+1,:,:) = MAX(XTKEMIN,ZLBXTKET(ILBX,:,:))  
-    ENDWHERE
-  END IF
+     ILBX = SIZE(PLBXVM,1)
+     IF(SIZE(PUT) /= 0) THEN
+        DO JI=1,JPHEXT
+           WHERE ( PUT(IIE+1,:,:) >= 0. )               !  OUTFLOW condition
+              PVT  (IIE+JI,:,:) = 2.*PVT  (IIE+JI-1,:,:)   -PVT  (IIE+JI-2,:,:)
+              PWT  (IIE+JI,:,:) = 2.*PWT  (IIE+JI-1,:,:)   -PWT  (IIE+JI-2,:,:)
+              PTHT (IIE+JI,:,:) = 2.*PTHT (IIE+JI-1,:,:)   -PTHT (IIE+JI-2,:,:)
+              !
+           ELSEWHERE                                   !  INFLOW  condition
+              PVT  (IIE+JI,:,:) = ZPOND*ZLBXVT   (ILBX-JPHEXT+JI,:,:) + (1.-ZPOND)* PVT(IIE+JI-1,:,:)
+              PWT  (IIE+JI,:,:) = ZPOND*ZLBXWT   (ILBX-JPHEXT+JI,:,:) + (1.-ZPOND)* PWT(IIE+JI-1,:,:)
+              PTHT (IIE+JI,:,:) = ZPOND*ZLBXTHT  (ILBX-JPHEXT+JI,:,:) + (1.-ZPOND)* PTHT(IIE+JI-1,:,:)
+           ENDWHERE
+        END DO
+     ENDIF
+     !
+     IF(SIZE(PTKET) /= 0) THEN
+        ILBX = SIZE(PLBXTKEM,1)
+        DO JI=1,JPHEXT
+           WHERE ( PUT(IIE+1,:,:) >= 0. )             !  OUTFLOW condition
+              PTKET(IIE+JI,:,:) = MAX(XTKEMIN, 2.*PTKET(IIE+JI-1,:,:)-PTKET(IIE+JI-2,:,:))  
+           ELSEWHERE                                  !  INFLOW  condition
+              PTKET(IIE+JI,:,:) = MAX(XTKEMIN,ZLBXTKET(ILBX-JPHEXT+JI,:,:))  
+           ENDWHERE
+        END DO
+     END IF
     !
 !
 !                      Case with KRR moist variables 
@@ -591,26 +610,34 @@ SELECT CASE ( HLBCX(2) )
     ILBX=SIZE(PLBXRM,1)
     !
     IF(SIZE(PUT) /= 0) THEN
-      WHERE ( PUT(IIE+1,:,:) >= 0. )       !  OUTFLOW condition
-        PRT(IIE+1,:,:,JRR) = MAX(0.,2.*PRT(IIE,:,:,JRR) -PRT(IIE-1,:,:,JRR))
-      ELSEWHERE                            !  INFLOW  condition
-        PRT(IIE+1,:,:,JRR) = MAX(0.,ZLBXRT(ILBX,:,:,JRR))
-      END WHERE
+       DO JI=1,JPHEXT  
+          WHERE ( PUT(IIE+1,:,:) >= 0. )       !  OUTFLOW condition
+             PRT(IIE+JI,:,:,JRR) = MAX(0.,2.*PRT(IIE+JI-1,:,:,JRR) -PRT(IIE+JI-2,:,:,JRR))
+          ELSEWHERE                            !  INFLOW  condition
+             PRT(IIE+JI,:,:,JRR) = MAX(0.,ZLBXRT(ILBX-JPHEXT+JI,:,:,JRR))
+          END WHERE
+       END DO
     END IF
     !
   END DO
 !
-  IF(SIZE(PSRCT) /= 0) PSRCT (IIE+1,:,:)   = PSRCT (IIE,:,:)
+  IF(SIZE(PSRCT) /= 0) THEN
+     DO JI=1,JPHEXT 
+        PSRCT (IIE+JI,:,:)   = PSRCT (IIE+JI-1,:,:)
+     END DO
+  END IF
 !                       Case with KSV scalar variables  
   DO JSV=1 ,KSV
     ILBX=SIZE(PLBXSVM,1)
     IF(SIZE(PUT) /= 0) THEN
-      WHERE ( PUT(IIE+1,:,:) >= 0. )       !  OUTFLOW condition
-        PSVT(IIE+1,:,:,JSV) = MAX(XSVMIN(JSV),2.*PSVT(IIE,:,:,JSV) - &
-                                               PSVT(IIE-1,:,:,JSV))
-      ELSEWHERE                            !  INFLOW  condition
-        PSVT(IIE+1,:,:,JSV) = MAX(XSVMIN(JSV),ZLBXSVT(ILBX,:,:,JSV))
-      END WHERE
+       DO JI=1,JPHEXT 
+          WHERE ( PUT(IIE+1,:,:) >= 0. )       !  OUTFLOW condition
+             PSVT(IIE+JI,:,:,JSV) = MAX(XSVMIN(JSV),2.*PSVT(IIE+JI-1,:,:,JSV) - &
+                  PSVT(IIE+JI-2,:,:,JSV))
+          ELSEWHERE                            !  INFLOW  condition
+             PSVT(IIE+JI,:,:,JSV) = MAX(XSVMIN(JSV),ZLBXSVT(ILBX-JPHEXT+JI,:,:,JSV))
+          END WHERE
+       END DO
     END IF
     !
   END DO
@@ -652,24 +679,28 @@ SELECT CASE ( HLBCY(1) )
   CASE ('OPEN')
 !
     IF(SIZE(PVT) /= 0) THEN
-      PVT(:,IJB-JPHEXT,:)=0.
-      WHERE ( PVT(:,IJB,:) <= 0. )               !  OUTFLOW condition
-        PUT  (:,IJB-1,:) = 2.*PUT  (:,IJB,:)   -PUT  (:,IJB+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,:) = 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
+       DO JJ=JPHEXT,1,-1
+          PVT(:,JJ,:)=0.
+          WHERE ( PVT(:,IJB,:) <= 0. )               !  OUTFLOW condition
+             PUT  (:,JJ,:) = 2.*PUT  (:,JJ+1,:)   -PUT  (:,JJ+2,:)
+             PWT  (:,JJ,:) = 2.*PWT  (:,JJ+1,:)   -PWT  (:,JJ+2,:)
+             PTHT (:,JJ,:) = 2.*PTHT (:,JJ+1,:)   -PTHT (:,JJ+2,:)
+          ELSEWHERE                                   !  INFLOW  condition
+             PUT  (:,JJ,:) = ZPOND*ZLBYUT   (:,JJ,:) + (1.-ZPOND)* PUT(:,JJ+1,:)
+             PWT  (:,JJ,:) = ZPOND*ZLBYWT   (:,JJ,:) + (1.-ZPOND)* PWT(:,JJ+1,:)
+             PTHT (:,JJ,:) = ZPOND*ZLBYTHT  (:,JJ,:) + (1.-ZPOND)* PTHT(:,JJ+1,:)
+          ENDWHERE
+       END DO
     ENDIF
 !
   IF(SIZE(PTKET) /= 0) THEN
-    WHERE ( PVT(:,IJB,:) <= 0. )             !  OUTFLOW condition
-      PTKET(:,IJB-1,:) = MAX(XTKEMIN, 2.*PTKET(:,IJB,:)-PTKET(:,IJB+1,:))  
-    ELSEWHERE                                !  INFLOW  condition
-      PTKET(:,IJB-1,:) = MAX(XTKEMIN,ZLBYTKET(:,1,:))  
-    ENDWHERE
+     DO JJ=JPHEXT,1,-1
+        WHERE ( PVT(:,IJB,:) <= 0. )             !  OUTFLOW condition
+           PTKET(:,JJ,:) = MAX(XTKEMIN, 2.*PTKET(:,JJ+1,:)-PTKET(:,JJ+2,:))  
+        ELSEWHERE                                !  INFLOW  condition
+           PTKET(:,JJ,:) = MAX(XTKEMIN,ZLBYTKET(:,JJ,:))  
+        ENDWHERE
+     END DO
   END IF
     !
 !
@@ -678,27 +709,35 @@ SELECT CASE ( HLBCY(1) )
 ! 
   DO JRR =1 ,KRR
     IF(SIZE(PVT) /= 0) THEN
-      WHERE ( PVT(:,IJB,:) <= 0. )         !  OUTFLOW condition
-        PRT(:,IJB-1,:,JRR) = MAX(0.,2.*PRT(:,IJB,:,JRR) -PRT(:,IJB+1,:,JRR))
-      ELSEWHERE                            !  INFLOW  condition
-        PRT(:,IJB-1,:,JRR) = MAX(0.,ZLBYRT(:,1,:,JRR))
-      END WHERE
+       DO JJ=JPHEXT,1,-1
+          WHERE ( PVT(:,IJB,:) <= 0. )         !  OUTFLOW condition
+             PRT(:,JJ,:,JRR) = MAX(0.,2.*PRT(:,JJ+1,:,JRR) -PRT(:,JJ+2,:,JRR))
+          ELSEWHERE                            !  INFLOW  condition
+             PRT(:,JJ,:,JRR) = MAX(0.,ZLBYRT(:,JJ,:,JRR))
+          END WHERE
+       END DO
     END IF
     !
   END DO
 !
-  IF(SIZE(PSRCT) /= 0) PSRCT(:,IJB-1,:)   = PSRCT(:,IJB,:)
+  IF(SIZE(PSRCT) /= 0) THEN
+     DO JJ=JPHEXT,1,-1
+        PSRCT(:,JJ,:)   = PSRCT(:,JJ+1,:)
+     END DO
+  END IF
 !
 !                       Case with KSV scalar variables  
 !
   DO JSV=1 ,KSV
     IF(SIZE(PVT) /= 0) THEN
-      WHERE ( PVT(:,IJB,:) <= 0. )         !  OUTFLOW condition
-        PSVT(:,IJB-1,:,JSV) = MAX(XSVMIN(JSV),2.*PSVT(:,IJB,:,JSV) - &
-                                               PSVT(:,IJB+1,:,JSV))
-      ELSEWHERE                            !  INFLOW  condition
-        PSVT(:,IJB-1,:,JSV) = MAX(XSVMIN(JSV),ZLBYSVT(:,1,:,JSV))
-      END WHERE
+       DO JJ=JPHEXT,1,-1
+          WHERE ( PVT(:,IJB,:) <= 0. )         !  OUTFLOW condition
+             PSVT(:,JJ,:,JSV) = MAX(XSVMIN(JSV),2.*PSVT(:,JJ+1,:,JSV) - &
+                  PSVT(:,JJ+2,:,JSV))
+          ELSEWHERE                            !  INFLOW  condition
+             PSVT(:,JJ,:,JSV) = MAX(XSVMIN(JSV),ZLBYSVT(:,JJ,:,JSV))
+          END WHERE
+       END DO
     END IF
     !
   END DO
@@ -743,24 +782,28 @@ SELECT CASE ( HLBCY(2) )
 !
     ILBY=SIZE(PLBYUM,2)
     IF(SIZE(PVT) /= 0) THEN
-      WHERE ( PVT(:,IJE+1,:) >= 0. )               !  OUTFLOW condition
-        PUT  (:,IJE+1,:) = 2.*PUT  (:,IJE,:)   -PUT  (:,IJE-1,:)
-        PWT  (:,IJE+1,:) = 2.*PWT  (:,IJE,:)   -PWT  (:,IJE-1,:)
-        PTHT (:,IJE+1,:) = 2.*PTHT (:,IJE,:)   -PTHT (:,IJE-1,:)
-      ELSEWHERE                                   !  INFLOW  condition
-        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
+       DO JJ=1,JPHEXT
+          WHERE ( PVT(:,IJE+1,:) >= 0. )               !  OUTFLOW condition
+             PUT  (:,IJE+JJ,:) = 2.*PUT  (:,IJE+JJ-1,:)   -PUT  (:,IJE+JJ-2,:)
+             PWT  (:,IJE+JJ,:) = 2.*PWT  (:,IJE+JJ-1,:)   -PWT  (:,IJE+JJ-2,:)
+             PTHT (:,IJE+JJ,:) = 2.*PTHT (:,IJE+JJ-1,:)   -PTHT (:,IJE+JJ-2,:)
+          ELSEWHERE                                   !  INFLOW  condition
+             PUT  (:,IJE+JJ,:) = ZPOND*ZLBYUT   (:,ILBY-JPHEXT+JJ,:) + (1.-ZPOND)* PUT(:,IJE+JJ-1,:)
+             PWT  (:,IJE+JJ,:) = ZPOND*ZLBYWT   (:,ILBY-JPHEXT+JJ,:) + (1.-ZPOND)* PWT(:,IJE+JJ-1,:)
+             PTHT (:,IJE+JJ,:) = ZPOND*ZLBYTHT  (:,ILBY-JPHEXT+JJ,:) + (1.-ZPOND)* PTHT(:,IJE+JJ-1,:)
+          ENDWHERE
+       END DO
     ENDIF
 !
   IF(SIZE(PTKET) /= 0) THEN
     ILBY=SIZE(PLBYTKEM,2)
-    WHERE ( PVT(:,IJE+1,:) >= 0. )             !  OUTFLOW condition
-      PTKET(:,IJE+1,:) = MAX(XTKEMIN, 2.*PTKET(:,IJE,:)-PTKET(:,IJE-1,:))  
-    ELSEWHERE                                  !  INFLOW  condition
-      PTKET(:,IJE+1,:) = MAX(XTKEMIN,ZLBYTKET(:,ILBY,:))  
-    ENDWHERE
+    DO JJ=1,JPHEXT
+       WHERE ( PVT(:,IJE+1,:) >= 0. )             !  OUTFLOW condition
+          PTKET(:,IJE+JJ,:) = MAX(XTKEMIN, 2.*PTKET(:,IJE+JJ-1,:)-PTKET(:,IJE+JJ-2,:))  
+       ELSEWHERE                                  !  INFLOW  condition
+          PTKET(:,IJE+JJ,:) = MAX(XTKEMIN,ZLBYTKET(:,ILBY-JPHEXT+JJ,:))  
+       ENDWHERE
+    END DO
   ENDIF
     !
 !                      Case with KRR moist variables 
@@ -770,28 +813,36 @@ SELECT CASE ( HLBCY(2) )
     ILBY=SIZE(PLBYRM,2)
     !
     IF(SIZE(PVT) /= 0) THEN
-      WHERE ( PVT(:,IJE+1,:) >= 0. )         !  OUTFLOW condition
-        PRT(:,IJE+1,:,JRR) = MAX(0.,2.*PRT(:,IJE,:,JRR) -PRT(:,IJE-1,:,JRR))
-      ELSEWHERE                            !  INFLOW  condition
-        PRT(:,IJE+1,:,JRR) = MAX(0.,ZLBYRT(:,ILBY,:,JRR))
-      END WHERE
+       DO JJ=1,JPHEXT
+          WHERE ( PVT(:,IJE+1,:) >= 0. )         !  OUTFLOW condition
+             PRT(:,IJE+JJ,:,JRR) = MAX(0.,2.*PRT(:,IJE+JJ-1,:,JRR) -PRT(:,IJE+JJ-2,:,JRR))
+          ELSEWHERE                            !  INFLOW  condition
+             PRT(:,IJE+JJ,:,JRR) = MAX(0.,ZLBYRT(:,ILBY-JPHEXT+JJ,:,JRR))
+          END WHERE
+       END DO
     END IF
     !
   END DO
 !
-  IF(SIZE(PSRCT) /= 0) PSRCT(:,IJE+1,:)   = PSRCT(:,IJE,:)
+  IF(SIZE(PSRCT) /= 0) THEN
+      DO JJ=1,JPHEXT
+         PSRCT(:,IJE+JJ,:)   = PSRCT(:,IJE+JJ-1,:)
+      END DO
+  END IF
 !
 !                       Case with KSV scalar variables  
   DO JSV=1 ,KSV
     ILBY=SIZE(PLBYSVM,2)
     !
     IF(SIZE(PVT) /= 0) THEN
-      WHERE ( PVT(:,IJE+1,:) >= 0. )         !  OUTFLOW condition
-        PSVT(:,IJE+1,:,JSV) = MAX(XSVMIN(JSV),2.*PSVT(:,IJE,:,JSV) - &
-                                               PSVT(:,IJE-1,:,JSV))
-      ELSEWHERE                            !  INFLOW  condition
-        PSVT(:,IJE+1,:,JSV) = MAX(XSVMIN(JSV),ZLBYSVT(:,ILBY,:,JSV))
-      END WHERE
+       DO JJ=1,JPHEXT
+          WHERE ( PVT(:,IJE+1,:) >= 0. )         !  OUTFLOW condition
+             PSVT(:,IJE+JJ,:,JSV) = MAX(XSVMIN(JSV),2.*PSVT(:,IJE+JJ-1,:,JSV) - &
+                  PSVT(:,IJE+JJ-2,:,JSV))
+          ELSEWHERE                            !  INFLOW  condition
+             PSVT(:,IJE+JJ,:,JSV) = MAX(XSVMIN(JSV),ZLBYSVT(:,ILBY-JPHEXT+JJ,:,JSV))
+          END WHERE
+       END DO
     END IF
     !
   END DO
@@ -807,10 +858,10 @@ IF (LUSECHEM .AND. IMI == 1) THEN
     GFIRSTCALL1 = .FALSE.
     DO JSV=NSV_CHEMBEG,NSV_CHEMEND
        GCHTMP = .FALSE.
-       IF (LWEST_ll().AND.HLBCX(1)=='OPEN')  GCHTMP = GCHTMP .OR. ALL(PLBXSVM(1,:,:,JSV)==0)
-       IF (LEAST_ll().AND.HLBCX(2)=='OPEN')  GCHTMP = GCHTMP .OR. ALL(PLBXSVM(ILBX,:,:,JSV)==0)
-       IF (LSOUTH_ll().AND.HLBCY(1)=='OPEN') GCHTMP = GCHTMP .OR. ALL(PLBYSVM(:,1,:,JSV)==0)
-       IF (LNORTH_ll().AND.HLBCY(2)=='OPEN') GCHTMP = GCHTMP .OR. ALL(PLBYSVM(:,ILBY,:,JSV)==0)
+       IF (LWEST_ll().AND.HLBCX(1)=='OPEN')  GCHTMP = GCHTMP .OR. ALL(PLBXSVM(JPHEXT,:,:,JSV)==0)
+       IF (LEAST_ll().AND.HLBCX(2)=='OPEN')  GCHTMP = GCHTMP .OR. ALL(PLBXSVM(ILBX-JPHEXT+1,:,:,JSV)==0)
+       IF (LSOUTH_ll().AND.HLBCY(1)=='OPEN') GCHTMP = GCHTMP .OR. ALL(PLBYSVM(:,JPHEXT,:,JSV)==0)
+       IF (LNORTH_ll().AND.HLBCY(2)=='OPEN') GCHTMP = GCHTMP .OR. ALL(PLBYSVM(:,ILBY-JPHEXT+1,:,JSV)==0)
        GCHBOUNDARY(JSV-NSV_CHEMBEG+1) = GCHTMP
     ENDDO
   ENDIF
@@ -830,10 +881,10 @@ IF (LUSECHIC .AND. IMI == 1) THEN
     GFIRSTCALLIC = .FALSE.
     DO JSV=NSV_CHICBEG,NSV_CHICEND
        GCHTMP = .FALSE.
-       IF (LWEST_ll().AND.HLBCX(1)=='OPEN')  GCHTMP = GCHTMP .OR. ALL(PLBXSVM(1,:,:,JSV)==0)
-       IF (LEAST_ll().AND.HLBCX(2)=='OPEN')  GCHTMP = GCHTMP .OR. ALL(PLBXSVM(ILBX,:,:,JSV)==0)
-       IF (LSOUTH_ll().AND.HLBCY(1)=='OPEN') GCHTMP = GCHTMP .OR. ALL(PLBYSVM(:,1,:,JSV)==0)
-       IF (LNORTH_ll().AND.HLBCY(2)=='OPEN') GCHTMP = GCHTMP .OR. ALL(PLBYSVM(:,ILBY,:,JSV)==0)
+       IF (LWEST_ll().AND.HLBCX(1)=='OPEN')  GCHTMP = GCHTMP .OR. ALL(PLBXSVM(JPHEXT,:,:,JSV)==0)
+       IF (LEAST_ll().AND.HLBCX(2)=='OPEN')  GCHTMP = GCHTMP .OR. ALL(PLBXSVM(ILBX-JPHEXT+1,:,:,JSV)==0)
+       IF (LSOUTH_ll().AND.HLBCY(1)=='OPEN') GCHTMP = GCHTMP .OR. ALL(PLBYSVM(:,JPHEXT,:,JSV)==0)
+       IF (LNORTH_ll().AND.HLBCY(2)=='OPEN') GCHTMP = GCHTMP .OR. ALL(PLBYSVM(:,ILBY-JPHEXT+1,:,JSV)==0)
        GICBOUNDARY(JSV-NSV_CHICBEG+1) = GCHTMP
     ENDDO
   ENDIF
@@ -852,10 +903,10 @@ IF (LORILAM .AND. IMI == 1) THEN
     GFIRSTCALL2 = .FALSE.
     DO JSV=NSV_AERBEG,NSV_AEREND
        GCHTMP = .FALSE.
-       IF (LWEST_ll().AND.HLBCX(1)=='OPEN')  GCHTMP = GCHTMP .OR. ALL(PLBXSVM(1,:,:,JSV)==0)
-       IF (LEAST_ll().AND.HLBCX(2)=='OPEN')  GCHTMP = GCHTMP .OR. ALL(PLBXSVM(ILBX,:,:,JSV)==0)
-       IF (LSOUTH_ll().AND.HLBCY(1)=='OPEN') GCHTMP = GCHTMP .OR. ALL(PLBYSVM(:,1,:,JSV)==0)
-       IF (LNORTH_ll().AND.HLBCY(2)=='OPEN') GCHTMP = GCHTMP .OR. ALL(PLBYSVM(:,ILBY,:,JSV)==0)
+       IF (LWEST_ll().AND.HLBCX(1)=='OPEN')  GCHTMP = GCHTMP .OR. ALL(PLBXSVM(JPHEXT,:,:,JSV)==0)
+       IF (LEAST_ll().AND.HLBCX(2)=='OPEN')  GCHTMP = GCHTMP .OR. ALL(PLBXSVM(ILBX-JPHEXT+1,:,:,JSV)==0)
+       IF (LSOUTH_ll().AND.HLBCY(1)=='OPEN') GCHTMP = GCHTMP .OR. ALL(PLBYSVM(:,JPHEXT,:,JSV)==0)
+       IF (LNORTH_ll().AND.HLBCY(2)=='OPEN') GCHTMP = GCHTMP .OR. ALL(PLBYSVM(:,ILBY-JPHEXT+1,:,JSV)==0)
        GAERBOUNDARY(JSV-NSV_AERBEG+1) = GCHTMP
     ENDDO
   ENDIF
@@ -875,10 +926,10 @@ IF (LDUST .AND. IMI == 1) THEN
     GFIRSTCALL3 = .FALSE.
     DO JSV=NSV_DSTBEG,NSV_DSTEND
        GCHTMP = .FALSE.
-       IF (LWEST_ll().AND.HLBCX(1)=='OPEN')  GCHTMP = GCHTMP .OR. ALL(PLBXSVM(1,:,:,JSV)==0)
-       IF (LEAST_ll().AND.HLBCX(2)=='OPEN')  GCHTMP = GCHTMP .OR. ALL(PLBXSVM(ILBX,:,:,JSV)==0)
-       IF (LSOUTH_ll().AND.HLBCY(1)=='OPEN') GCHTMP = GCHTMP .OR. ALL(PLBYSVM(:,1,:,JSV)==0)
-       IF (LNORTH_ll().AND.HLBCY(2)=='OPEN') GCHTMP = GCHTMP .OR. ALL(PLBYSVM(:,ILBY,:,JSV)==0)
+       IF (LWEST_ll().AND.HLBCX(1)=='OPEN')  GCHTMP = GCHTMP .OR. ALL(PLBXSVM(JPHEXT,:,:,JSV)==0)
+       IF (LEAST_ll().AND.HLBCX(2)=='OPEN')  GCHTMP = GCHTMP .OR. ALL(PLBXSVM(ILBX-JPHEXT+1,:,:,JSV)==0)
+       IF (LSOUTH_ll().AND.HLBCY(1)=='OPEN') GCHTMP = GCHTMP .OR. ALL(PLBYSVM(:,JPHEXT,:,JSV)==0)
+       IF (LNORTH_ll().AND.HLBCY(2)=='OPEN') GCHTMP = GCHTMP .OR. ALL(PLBYSVM(:,ILBY-JPHEXT+1,:,JSV)==0)
        GDSTBOUNDARY(JSV-NSV_DSTBEG+1) = GCHTMP
     ENDDO
     ENDIF
@@ -898,10 +949,10 @@ IF (LSALT .AND. IMI == 1) THEN
     GFIRSTCALL5 = .FALSE.
     DO JSV=NSV_SLTBEG,NSV_SLTEND
        GCHTMP = .FALSE.
-       IF (LWEST_ll().AND.HLBCX(1)=='OPEN')  GCHTMP = GCHTMP .OR. ALL(PLBXSVM(1,:,:,JSV)==0)
-       IF (LEAST_ll().AND.HLBCX(2)=='OPEN')  GCHTMP = GCHTMP .OR. ALL(PLBXSVM(ILBX,:,:,JSV)==0)
-       IF (LSOUTH_ll().AND.HLBCY(1)=='OPEN') GCHTMP = GCHTMP .OR. ALL(PLBYSVM(:,1,:,JSV)==0)
-       IF (LNORTH_ll().AND.HLBCY(2)=='OPEN') GCHTMP = GCHTMP .OR. ALL(PLBYSVM(:,ILBY,:,JSV)==0)
+       IF (LWEST_ll().AND.HLBCX(1)=='OPEN')  GCHTMP = GCHTMP .OR. ALL(PLBXSVM(JPHEXT,:,:,JSV)==0)
+       IF (LEAST_ll().AND.HLBCX(2)=='OPEN')  GCHTMP = GCHTMP .OR. ALL(PLBXSVM(ILBX-JPHEXT+1,:,:,JSV)==0)
+       IF (LSOUTH_ll().AND.HLBCY(1)=='OPEN') GCHTMP = GCHTMP .OR. ALL(PLBYSVM(:,JPHEXT,:,JSV)==0)
+       IF (LNORTH_ll().AND.HLBCY(2)=='OPEN') GCHTMP = GCHTMP .OR. ALL(PLBYSVM(:,ILBY-JPHEXT+1,:,JSV)==0)
        GSLTBOUNDARY(JSV-NSV_SLTBEG+1) = GCHTMP
     ENDDO
   ENDIF
@@ -921,10 +972,10 @@ IF ( LPASPOL .AND. IMI == 1) THEN
     GFIRSTCALLPP = .FALSE.
     DO JSV=NSV_PPBEG,NSV_PPEND
       GPPTMP = .FALSE.
-      IF (LWEST_ll().AND.HLBCX(1)=='OPEN') GPPTMP = GPPTMP .OR. ALL(PLBXSVM(1,:,:,JSV)==0)
-      IF (LEAST_ll().AND.HLBCX(2)=='OPEN') GPPTMP = GPPTMP .OR. ALL(PLBXSVM(ILBX,:,:,JSV)==0)
-      IF (LSOUTH_ll().AND.HLBCY(1)=='OPEN') GPPTMP = GPPTMP .OR. ALL(PLBYSVM(:,1,:,JSV)==0)
-      IF (LNORTH_ll().AND.HLBCY(2)=='OPEN') GPPTMP = GPPTMP .OR. ALL(PLBYSVM(:,ILBY,:,JSV)==0)
+      IF (LWEST_ll().AND.HLBCX(1)=='OPEN') GPPTMP = GPPTMP .OR. ALL(PLBXSVM(JPHEXT,:,:,JSV)==0)
+      IF (LEAST_ll().AND.HLBCX(2)=='OPEN') GPPTMP = GPPTMP .OR. ALL(PLBXSVM(ILBX-JPHEXT+1,:,:,JSV)==0)
+      IF (LSOUTH_ll().AND.HLBCY(1)=='OPEN') GPPTMP = GPPTMP .OR. ALL(PLBYSVM(:,JPHEXT,:,JSV)==0)
+      IF (LNORTH_ll().AND.HLBCY(2)=='OPEN') GPPTMP = GPPTMP .OR. ALL(PLBYSVM(:,ILBY-JPHEXT+1,:,JSV)==0)
       GPPBOUNDARY(JSV-NSV_PPBEG+1) = GPPTMP
     ENDDO
   ENDIF
@@ -944,10 +995,10 @@ IF ( LCONDSAMP .AND. IMI == 1) THEN
     GFIRSTCALLCS = .FALSE.
     DO JSV=NSV_CSBEG,NSV_CSEND
       GCSTMP = .FALSE.
-      IF (LWEST_ll().AND.HLBCX(1)=='OPEN') GCSTMP = GCSTMP .OR. ALL(PLBXSVM(1,:,:,JSV)==0)
-      IF (LEAST_ll().AND.HLBCX(2)=='OPEN') GCSTMP = GCSTMP .OR. ALL(PLBXSVM(ILBX,:,:,JSV)==0)
-      IF (LSOUTH_ll().AND.HLBCY(1)=='OPEN') GCSTMP = GCSTMP .OR. ALL(PLBYSVM(:,1,:,JSV)==0)
-      IF (LNORTH_ll().AND.HLBCY(2)=='OPEN') GCSTMP = GCSTMP .OR. ALL(PLBYSVM(:,ILBY,:,JSV)==0)
+      IF (LWEST_ll().AND.HLBCX(1)=='OPEN') GCSTMP = GCSTMP .OR. ALL(PLBXSVM(JPHEXT,:,:,JSV)==0)
+      IF (LEAST_ll().AND.HLBCX(2)=='OPEN') GCSTMP = GCSTMP .OR. ALL(PLBXSVM(ILBX-JPHEXT+1,:,:,JSV)==0)
+      IF (LSOUTH_ll().AND.HLBCY(1)=='OPEN') GCSTMP = GCSTMP .OR. ALL(PLBYSVM(:,JPHEXT,:,JSV)==0)
+      IF (LNORTH_ll().AND.HLBCY(2)=='OPEN') GCSTMP = GCSTMP .OR. ALL(PLBYSVM(:,ILBY-JPHEXT+1,:,JSV)==0)
       GCSBOUNDARY(JSV-NSV_CSBEG+1) = GCSTMP
     ENDDO
   ENDIF
@@ -968,10 +1019,10 @@ IF ( LFOREFIRE .AND. IMI == 1) THEN
     GFIRSTCALLFF = .FALSE.
     DO JSV=NSV_FFBEG,NSV_FFEND
       GFFTMP = .FALSE.
-      IF (LWEST_ll().AND.HLBCX(1)=='OPEN') GFFTMP = GFFTMP .OR. ALL(PLBXSVM(1,:,:,JSV)==0)
-      IF (LEAST_ll().AND.HLBCX(2)=='OPEN') GFFTMP = GFFTMP .OR. ALL(PLBXSVM(ILBX,:,:,JSV)==0)
-      IF (LSOUTH_ll().AND.HLBCY(1)=='OPEN') GFFTMP = GFFTMP .OR. ALL(PLBYSVM(:,1,:,JSV)==0)
-      IF (LNORTH_ll().AND.HLBCY(2)=='OPEN') GFFTMP = GFFTMP .OR. ALL(PLBYSVM(:,ILBY,:,JSV)==0)
+      IF (LWEST_ll().AND.HLBCX(1)=='OPEN') GFFTMP = GFFTMP .OR. ALL(PLBXSVM(JPHEXT,:,:,JSV)==0)
+      IF (LEAST_ll().AND.HLBCX(2)=='OPEN') GFFTMP = GFFTMP .OR. ALL(PLBXSVM(ILBX-JPHEXT+1,:,:,JSV)==0)
+      IF (LSOUTH_ll().AND.HLBCY(1)=='OPEN') GFFTMP = GFFTMP .OR. ALL(PLBYSVM(:,JPHEXT,:,JSV)==0)
+      IF (LNORTH_ll().AND.HLBCY(2)=='OPEN') GFFTMP = GFFTMP .OR. ALL(PLBYSVM(:,ILBY-JPHEXT+1,:,JSV)==0)
       GFFBOUNDARY(JSV-NSV_FFBEG+1) = GFFTMP
     ENDDO
   ENDIF
index 3dee913..bed79a9 100644 (file)
@@ -6,7 +6,6 @@
 !--------------- special set of characters for RCS information
 !-----------------------------------------------------------------
 ! $Source$ $Revision$
-! MASDEV4_7 budget 2006/05/18 13:07:25
 !-----------------------------------------------------------------
 !##################
  MODULE MODI_BUDGET
@@ -80,6 +79,7 @@ END MODULE MODI_BUDGET
 !!      J. Stein    26/06/96  add the 'OF','NO' option  
 !!      J.-P. Pinty 12/12/96  simplifies the coding
 !!      V. Masson   06/10/02  add LES budgets
+!!      J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 
 !!      
 !-------------------------------------------------------------------------------
 !
@@ -131,6 +131,7 @@ REAL     :: XPRECISION ! for reproductibility checks
 !
 XPRECISION = 1E-10
 IF (LCHECK) THEN
+  print*,'BUDGET :',HBUVAR
   CALL MPPDB_CHECK3D(PVARS,HBUVAR,XPRECISION)
 END IF
 !
index cecc4d8..4a8f5b0 100644 (file)
@@ -6,7 +6,6 @@
 !--------------- special set of characters for RCS information
 !-----------------------------------------------------------------
 ! $Source$ $Revision$
-! masdev4_7 BUG3 2007/11/20 12:25:23
 !-----------------------------------------------------------------
 !    ######################
      MODULE MODI_CALL_RTTOV
@@ -85,6 +84,7 @@ SUBROUTINE CALL_RTTOV(KDLON, KFLEV, KSTATM, PEMIS, PTSRAD, PSTATM,     &
 !!      Original    11/12/03
 !!      JP Chaboureau 27/03/2008 Vectorization
 !!      JP Chaboureau 02/11/2009 move GANGL deallocation outside the sensor loop
+!!      J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 
 !!----------------------------------------------------------------------------
 !!
 !!*       0.    DECLARATIONS
@@ -749,11 +749,8 @@ PRINT *,' RADIANCE OR TB CALCULATION: INRAD=',INRAD,' switchrad=',switchrad
 IIU = SIZE(PTHT,1)
 IJU = SIZE(PTHT,2)
 IKU = SIZE(PTHT,3)
-IIB = 1 + JPHEXT
-IJB = 1 + JPHEXT
+CALL GET_INDICE_ll (IIB,IJB,IIE,IJE)
 IKB = 1 + JPVEXT
-IIE = IIU - JPHEXT
-IJE = IJU - JPHEXT
 IKE = IKU - JPVEXT
 IKR = IKE - IKB +1
                               
index 98203c1..c9683e2 100644 (file)
@@ -76,6 +76,7 @@ END MODULE MODI_CH_AQUEOUS_SEDIM1MOM
 !!    Original    22/07/07
 !!    04/11/08 (M Leriche) add ICE3    
 !!    17/09/10 (M Leriche) add LUSECHIC flag
+!!    J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 
 !!
 !-------------------------------------------------------------------------------
 !
@@ -176,10 +177,7 @@ INTEGER                           :: JL       ! and PACK intrinsics
 !*       1.     COMPUTE THE LOOP BOUNDS
 !              -----------------------
 !
-IIB=1+JPHEXT
-IIE=SIZE(PZZ,1) - JPHEXT
-IJB=1+JPHEXT
-IJE=SIZE(PZZ,2) - JPHEXT
+CALL GET_INDICE_ll (IIB,IJB,IIE,IJE)
 IKB=1+JPVEXT
 IKE=SIZE(PZZ,3) - JPVEXT
 !
index 6963c4d..d09c519 100644 (file)
@@ -71,7 +71,8 @@ END MODULE MODI_CH_AQUEOUS_SEDIMC2R2
 !!    MODIFICATIONS
 !!    -------------
 !!      Original    30/10/08
-!!                        2014 G.Delautier : remplace MODD_RAIN_C2R2_PARAM par MODD_RAIN_C2R2_KHKO_PARAM
+!!      2014 G.Delautier : remplace MODD_RAIN_C2R2_PARAM par MODD_RAIN_C2R2_KHKO_PARAM
+!!      J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1
 !!
 !-------------------------------------------------------------------------------
 !
@@ -159,10 +160,7 @@ INTEGER                           :: JL       ! and PACK intrinsics
 !*       1.     COMPUTE THE LOOP BOUNDS
 !              -----------------------
 !
-IIB=1+JPHEXT
-IIE=SIZE(PZZ,1) - JPHEXT
-IJB=1+JPHEXT
-IJE=SIZE(PZZ,2) - JPHEXT
+CALL GET_INDICE_ll (IIB,IJB,IIE,IJE)
 IKB=1+JPVEXT
 IKE=SIZE(PZZ,3) - JPVEXT
 !
index 5a01ef6..63f5eac 100644 (file)
@@ -69,6 +69,7 @@ END MODULE MODI_CH_AQUEOUS_SEDIMKHKO
 !!    MODIFICATIONS
 !!    -------------
 !!      Original    03/11/08
+!!    J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 
 !!
 !-------------------------------------------------------------------------------
 !
@@ -150,10 +151,7 @@ INTEGER                           :: JL       ! and PACK intrinsics
 !*       1.     COMPUTE THE LOOP BOUNDS
 !              -----------------------
 !
-IIB=1+JPHEXT
-IIE=SIZE(PZZ,1) - JPHEXT
-IJB=1+JPHEXT
-IJE=SIZE(PZZ,2) - JPHEXT
+CALL GET_INDICE_ll (IIB,IJB,IIE,IJE)
 IKB=1+JPVEXT
 IKE=SIZE(PZZ,3) - JPVEXT
 !
index fa8987f..b034de2 100644 (file)
@@ -70,7 +70,8 @@ END MODULE MODI_CH_AQUEOUS_TMICC2R2
 !!    MODIFICATIONS
 !!    -------------
 !!      Original    06/05/08
-!!                        2014 G.Delautier : remplace MODD_RAIN_C2R2_PARAM par MODD_RAIN_C2R2_KHKO_PARAM
+!!      2014 G.Delautier : remplace MODD_RAIN_C2R2_PARAM par MODD_RAIN_C2R2_KHKO_PARAM
+!!   J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 
 !!
 !-------------------------------------------------------------------------------
 !
@@ -172,10 +173,7 @@ INTEGER                           :: JL       ! and PACK intrinsics
 !*       1.     COMPUTE THE LOOP BOUNDS
 !              -----------------------
 !
-IIB=1+JPHEXT
-IIE=SIZE(PRCT,1) - JPHEXT
-IJB=1+JPHEXT
-IJE=SIZE(PRCT,2) - JPHEXT
+CALL GET_INDICE_ll (IIB,IJB,IIE,IJE)
 IKB=1+JPVEXT
 IKE=SIZE(PRCT,3) - JPVEXT
 !
index e9eb037..4d0bd5b 100644 (file)
@@ -99,6 +99,7 @@ END MODULE MODI_CH_AQUEOUS_TMICICE
 !!    M. Leriche 19/07/2010 add riming, freezing and melting for ice phase(ICE3)
 !!    M. Leriche 17/09/2010 add OUSECHIC flag
 !!    Juan 24/09/2012: for BUG Pgi rewrite PACK function on mode_pack_pgi
+!!    J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1
 !!
 !-------------------------------------------------------------------------------
 !
@@ -275,10 +276,7 @@ ZT(:,:,:) = PTHT(:,:,:) * ( PPABST(:,:,:) / XP00 ) ** (XRD/XCPD)
 !*       1.     COMPUTE THE LOOP BOUNDS
 !              -----------------------
 !
-IIB=1+JPHEXT
-IIE=SIZE(PRCT,1) - JPHEXT
-IJB=1+JPHEXT
-IJE=SIZE(PRCT,2) - JPHEXT
+CALL GET_INDICE_ll (IIB,IJB,IIE,IJE)
 IKB=1+JPVEXT
 IKE=SIZE(PRCT,3) - JPVEXT
 !
index 07642f9..a428772 100644 (file)
@@ -68,6 +68,7 @@ END MODULE MODI_CH_AQUEOUS_TMICKESS
 !!    MODIFICATIONS
 !!    -------------
 !!      Original    26/03/08
+!!    J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 
 !!
 !-------------------------------------------------------------------------------
 !
@@ -148,10 +149,7 @@ INTEGER                           :: JL       ! and PACK intrinsics
 !*       1.     COMPUTE THE LOOP BOUNDS
 !              -----------------------
 !
-IIB=1+JPHEXT
-IIE=SIZE(PRCT,1) - JPHEXT
-IJB=1+JPHEXT
-IJE=SIZE(PRCT,2) - JPHEXT
+CALL GET_INDICE_ll (IIB,IJB,IIE,IJE)
 IKB=1+JPVEXT
 IKE=SIZE(PRCT,3) - JPVEXT
 !
index 912765e..c93eb3a 100644 (file)
@@ -71,6 +71,7 @@ END MODULE MODI_CH_AQUEOUS_TMICKHKO
 !!    MODIFICATIONS
 !!    -------------
 !!      Original    03/11/08
+!!    J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1
 !!
 !-------------------------------------------------------------------------------
 !
@@ -159,10 +160,7 @@ INTEGER                           :: JL       ! and PACK intrinsics
 !*       1.     COMPUTE THE LOOP BOUNDS
 !              -----------------------
 !
-IIB=1+JPHEXT
-IIE=SIZE(PRCT,1) - JPHEXT
-IJB=1+JPHEXT
-IJE=SIZE(PRCT,2) - JPHEXT
+CALL GET_INDICE_ll (IIB,IJB,IIE,IJE)
 IKB=1+JPVEXT
 IKE=SIZE(PRCT,3) - JPVEXT
 !
index d7a8522..d7e48fd 100644 (file)
@@ -156,6 +156,7 @@ END MODULE MODI_CHANGE_GRIBEX_VAR
 !!         Masson   06/12/96 add air temperature at ground
 !!         Masson   12/12/96 add vertical wind component
 !!         Masson   12/06/97 add relative humidity
+!!         J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -226,11 +227,15 @@ REAL,DIMENSION(:,:,:), ALLOCATABLE                       :: ZRHO_LS
 !                        ! mass density at pressure points
 REAL,DIMENSION(:,:,:), ALLOCATABLE                       :: ZRHOMASS_LS
 !                        ! mass density at mass points
+!
+INTEGER             :: IIB,IIE,IJB,IJE ! interior domaine bound
+INTEGER             :: JI
 !-------------------------------------------------------------------------------
 !
 IIU=SIZE(PT_LS,1)
 IJU=SIZE(PT_LS,2)
 ILU=SIZE(PT_LS,3)
+CALL GET_INDICE_ll (IIB,IJB,IIE,IJE)
 !
 !-------------------------------------------------------------------------------
 !
@@ -337,23 +342,29 @@ IF (PRESENT(PW_LS)) THEN
 !              -------------------------------
 !
   ZSURFCOR_LS(:,:,:)=0.
-  ZSURFCOR_LS(2:IIU-1,2:IJU-1,:)= PU_LS(2:IIU-1,2:IJU-1,:)                     &
+  ZSURFCOR_LS(IIB:IIE,IJB:IJE,:)= PU_LS(IIB:IIE,IJB:IJE,:)                     &
                            *SPREAD(                                            &
-                            (PZS_LS(3:IIU,2:IJU-1)-PZS_LS(1:IIU-2,2:IJU-1))    &
-                            /SPREAD(XXHAT(3:IIU)-XXHAT(1:IIU-2),2,IJU-2)       &
-                            *XMAP(2:IIU-1,2:IJU-1)                             &
+                            (PZS_LS(IIB+1:IIE+1,IJB:IJE)-PZS_LS(IIB-1:IIE-1,IJB:IJE))    &
+                            /SPREAD(XXHAT(IIB+1:IIE+1)-XXHAT(IIB-1:IIE-1),2,IJE-IJB+1)       &
+                            *XMAP(IIB:IIE,IJB:IJE)                             &
                             ,3,ILU)                                            &
-                          + PV_LS(2:IIU-1,2:IJU-1,:)                           &
+                          + PV_LS(IIB:IIE,IJB:IJE,:)                           &
                            *SPREAD(                                            &
-                            (PZS_LS(2:IIU-1,3:IJU)-PZS_LS(2:IIU-1,1:IJU-2))    &
-                           /SPREAD(XYHAT(3:IJU)-XYHAT(1:IJU-2),1,IIU-2)        &
-                           *XMAP(2:IIU-1,2:IJU-1)                              &
+                            (PZS_LS(IIB:IIE,IJB+1:IJE+1)-PZS_LS(IIB:IIE,IJB-1:IJE-1))    &
+                           /SPREAD(XYHAT(IJB+1:IJE+1)-XYHAT(IJB-1:IJE-1),1,IIE-IIB+1)        &
+                           *XMAP(IIB:IIE,IJB:IJE)                              &
                             ,3,ILU)
 !
-  ZSURFCOR_LS( 1 , : ,1)=2.*ZSURFCOR_LS(  2  ,  :  ,1)-ZSURFCOR_LS(  3  ,  :  ,1)
-  ZSURFCOR_LS(IIU, : ,1)=2.*ZSURFCOR_LS(IIU-1,  :  ,1)-ZSURFCOR_LS(IIU-2,  :  ,1)
-  ZSURFCOR_LS( : , 1 ,1)=2.*ZSURFCOR_LS(  :  ,  2  ,1)-ZSURFCOR_LS(  :  ,  3  ,1)
-  ZSURFCOR_LS( : ,IJU,1)=2.*ZSURFCOR_LS(  :  ,IJU-1,1)-ZSURFCOR_LS(  :  ,IJU-2,1)
+  DO JI=1,JPHEXT
+     ZSURFCOR_LS(IIB-JI,:,1)=2.*ZSURFCOR_LS(IIB-JI+1,:,1)-ZSURFCOR_LS(IIB-JI+2,:,1)
+     ZSURFCOR_LS(IIE+JI,:,1)=2.*ZSURFCOR_LS(IIE+JI-1,:,1)-ZSURFCOR_LS(IIE+JI-2,:,1)
+     ZSURFCOR_LS(:,IJB-JI,1)=2.*ZSURFCOR_LS(:,IJB-JI+1,1)-ZSURFCOR_LS(:,IJB-JI+2,1)
+     ZSURFCOR_LS(:,IJE+JI,1)=2.*ZSURFCOR_LS(:,IJE+JI-1,1)-ZSURFCOR_LS(:,IJE+JI-2,1)
+  END DO
+!!$  ZSURFCOR_LS( 1 , : ,1)=2.*ZSURFCOR_LS(  2  ,  :  ,1)-ZSURFCOR_LS(  3  ,  :  ,1)
+!!$  ZSURFCOR_LS(IIU, : ,1)=2.*ZSURFCOR_LS(IIU-1,  :  ,1)-ZSURFCOR_LS(IIU-2,  :  ,1)
+!!$  ZSURFCOR_LS( : , 1 ,1)=2.*ZSURFCOR_LS(  :  ,  2  ,1)-ZSURFCOR_LS(  :  ,  3  ,1)
+!!$  ZSURFCOR_LS( : ,IJU,1)=2.*ZSURFCOR_LS(  :  ,IJU-1,1)-ZSURFCOR_LS(  :  ,IJU-2,1)
 !
 !*       8.2   mass density
 !              ------------
@@ -383,19 +394,25 @@ IF (PRESENT(PW_LS)) THEN
 !              ---------------------
 !
   ZHDIV_LS(:,:,:)=0.
-  ZHDIV_LS(2:IIU-1,2:IJU-1,:)=(ZDPDETA_LS(3:IIU,2:IJU-1,:)*PU_LS(3:IIU,2:IJU-1,:)       &
-                              -ZDPDETA_LS(1:IIU-2,2:IJU-1,:)*PU_LS(1:IIU-2,2:IJU-1,:))  &
-                             /SPREAD(SPREAD(XXHAT(3:IIU)-XXHAT(1:IIU-2),2,IJU-2),3,ILU)  &
-                             *SPREAD(XMAP(2:IIU-1,2:IJU-1),3,ILU)                        &
-                            +(ZDPDETA_LS(2:IIU-1,3:IJU,:)*PV_LS(2:IIU-1,3:IJU,:)        &
-                             -ZDPDETA_LS(2:IIU-1,1:IJU-2,:)*PV_LS(2:IIU-1,1:IJU-2,:))   &
-                            /SPREAD(SPREAD(XYHAT(3:IJU)-XYHAT(1:IJU-2),1,IIU-2),3,ILU)   &
-                            *SPREAD(XMAP(2:IIU-1,2:IJU-1),3,ILU)
-!
-  ZHDIV_LS( 1 , : ,:)=2.*ZHDIV_LS(  2  ,  :  ,:)-ZHDIV_LS(  3  ,  :  ,:)
-  ZHDIV_LS(IIU, : ,:)=2.*ZHDIV_LS(IIU-1,  :  ,:)-ZHDIV_LS(IIU-2,  :  ,:)
-  ZHDIV_LS( : , 1 ,:)=2.*ZHDIV_LS(  :  ,  2  ,:)-ZHDIV_LS(  :  ,  3  ,:)
-  ZHDIV_LS( : ,IJU,:)=2.*ZHDIV_LS(  :  ,IJU-1,:)-ZHDIV_LS(  :  ,IJU-2,:)
+  ZHDIV_LS(IIB:IIE,IJB:IJE,:)=(ZDPDETA_LS(IIB+1:IIE+1,IJB:IJE,:)*PU_LS(IIB+1:IIE+1,IJB:IJE,:)       &
+                              -ZDPDETA_LS(IIB-1:IIE-1,IJB:IJE,:)*PU_LS(IIB-1:IIE-1,IJB:IJE,:))  &
+                             /SPREAD(SPREAD(XXHAT(IIB+1:IIE+1)-XXHAT(IIB-1:IIE-1),2,IJE-IJB+1),3,ILU)  &
+                             *SPREAD(XMAP(IIB:IIE,IJB:IJE),3,ILU)                        &
+                            +(ZDPDETA_LS(IIB:IIE,IJB+1:IJE+1,:)*PV_LS(IIB:IIE,IJB+1:IJE+1,:)        &
+                             -ZDPDETA_LS(IIB:IIE,IJB-1:IJE-1,:)*PV_LS(IIB:IIE,IJB-1:IJE-1,:))   &
+                            /SPREAD(SPREAD(XYHAT(IJB+1:IJE+1)-XYHAT(IJB-1:IJE-1),1,IIE-IIB+1),3,ILU)   &
+                            *SPREAD(XMAP(IIB:IIE,IJB:IJE),3,ILU)
+!
+  DO JI=1,JPHEXT
+     ZHDIV_LS(IIB-JI,:,:)=2.*ZHDIV_LS(IIB-JI+1,:,:)-ZHDIV_LS(IIB-JI+2,:,:)
+     ZHDIV_LS(IIE+JI,:,:)=2.*ZHDIV_LS(IIE+JI-1,:,:)-ZHDIV_LS(IIE+JI-2,:,:)
+     ZHDIV_LS(:,IJB-JI,:)=2.*ZHDIV_LS(:,IJB-JI+1,:)-ZHDIV_LS(:,IJB-JI+2,:)
+     ZHDIV_LS(:,IJE+JI,:)=2.*ZHDIV_LS(:,IJE+JI-1,:)-ZHDIV_LS(:,IJE+JI-2,:)
+  END DO
+!!$  ZHDIV_LS( 1 , : ,:)=2.*ZHDIV_LS(  2  ,  :  ,:)-ZHDIV_LS(  3  ,  :  ,:)
+!!$  ZHDIV_LS(IIU, : ,:)=2.*ZHDIV_LS(IIU-1,  :  ,:)-ZHDIV_LS(IIU-2,  :  ,:)
+!!$  ZHDIV_LS( : , 1 ,:)=2.*ZHDIV_LS(  :  ,  2  ,:)-ZHDIV_LS(  :  ,  3  ,:)
+!!$  ZHDIV_LS( : ,IJU,:)=2.*ZHDIV_LS(  :  ,IJU-1,:)-ZHDIV_LS(  :  ,IJU-2,:)
 !
 !*       8.6   Integration of horizontal divergence
 !              ------------------------------------
index e2a2c79..b564a4d 100644 (file)
@@ -6,7 +6,6 @@
 !--------------- special set of characters for RCS information
 !-----------------------------------------------------------------
 ! $Source$ $Revision$
-! MASDEV4_7 prep_real 2006/05/18 13:07:25
 !-----------------------------------------------------------------
 !###################
 MODULE MODI_CHECK_ZS
@@ -77,6 +76,7 @@ END MODULE MODI_CHECK_ZS
 !!      Original    24/09/96
 !!                  20/05/98  (V. Masson and J. Stein) include the case where
 !!                             the domain is reduced 
+!!    J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -200,12 +200,12 @@ IF ( MOD(NIMAX,IDXRATIO) /= 0 .OR. MOD(NJMAX,IDYRATIO) /= 0 ) THEN
   RETURN
 END IF
 !
-IF ( MOD(KIINF-JPHEXT,IDXRATIO) /= 0 .OR. MOD(KJINF-JPHEXT,IDYRATIO) /= 0 ) THEN
+IF ( MOD(KIINF-1,IDXRATIO) /= 0 .OR. MOD(KJINF-1,IDYRATIO) /= 0 ) THEN
   WRITE (ILUOUT0,*) '********************************************************'
   WRITE (ILUOUT0,*) 'Your truncated domain does not start on an grid mesh'
   WRITE (ILUOUT0,*) 'border of its father domain; no nesting allowed'
-  WRITE (ILUOUT0,*) 'KIINF-JPHEXT=',KIINF-JPHEXT,' IDXRATIO=',IDXRATIO
-  WRITE (ILUOUT0,*) 'KIINF-JPHEXT=',KJINF-JPHEXT,' IDYRATIO=',IDYRATIO
+  WRITE (ILUOUT0,*) 'KIINF-1=',KIINF-1,' IDXRATIO=',IDXRATIO
+  WRITE (ILUOUT0,*) 'KIINF-1=',KJINF-1,' IDYRATIO=',IDYRATIO
   WRITE (ILUOUT0,*) '********************************************************'
   HDAD_NAME='                         '
   RETURN
index 7e1bb56..84eb188 100644 (file)
@@ -6,7 +6,6 @@
 !--------------- special set of characters for RCS information
 !-----------------------------------------------------------------
 ! $Source$ $Revision$
-! MASDEV4_7 conv 2006/09/21 11:03:24
 !-----------------------------------------------------------------
 !     ######################
       MODULE MODI_CONVECTION
@@ -159,6 +158,7 @@ END MODULE MODI_CONVECTION
 !!    MODIFICATIONS
 !!    -------------
 !!      Original    11/12/98 
+!!      J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -305,10 +305,7 @@ IIU = SIZE(PTHT,1)
 IJU = SIZE(PTHT,2)
 IKU = SIZE(PTHT,3)
 ICH1= SIZE(PCH1,4)
-IIB = 1 + JPHEXT
-IIE = IIU - JPHEXT
-IJB = 1 + JPHEXT
-IJE = IJU - JPHEXT
+CALL GET_INDICE_ll (IIB,IJB,IIE,IJE)
 IKB = 1 + JPVEXT
 IKE = IKU - JPVEXT
 ILON = (IIE-IIB+1) * (IJE-IJB+1)
index ad3125d..d234f75 100644 (file)
@@ -6,7 +6,6 @@
 !--------------- special set of characters for RCS information
 !-----------------------------------------------------------------
 ! $Source$ $Revision$
-! MASDEV4_7 prep_nest_pgd 2006/05/18 13:07:25
 !-----------------------------------------------------------------
 !     ########################
       MODULE MODI_DEFINE_MASK_n
@@ -54,6 +53,7 @@ END MODULE MODI_DEFINE_MASK_n
 !!    MODIFICATIONS
 !!    -------------
 !!      Original        26/09/96
+!!   J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -97,8 +97,8 @@ DO JLOOP=1,NMODEL
   IF (NDAD(JLOOP)/=IMI) CYCLE
   ISON=ISON+1
   NSON(ISON)=JLOOP
-  NNESTMASK(NXOR_ALL(JLOOP)+1:NXEND_ALL(JLOOP)-1,     &
-            NYOR_ALL(JLOOP)+1:NYEND_ALL(JLOOP)-1, ISON) = 1
+  NNESTMASK(NXOR_ALL(JLOOP)+JPHEXT:NXEND_ALL(JLOOP)-JPHEXT,     &
+            NYOR_ALL(JLOOP)+JPHEXT:NYEND_ALL(JLOOP)-JPHEXT, ISON) = 1
 END DO
 !
 IF (ANY (SUM(NNESTMASK(:,:,:),DIM=3)>1) ) THEN
index a38e1b4..61287d6 100644 (file)
@@ -6,7 +6,6 @@
 !--------------- special set of characters for RCS information
 !-----------------------------------------------------------------
 ! $Source$ $Revision$
-! MASDEV4_7 adiab 2006/06/08 15:57:16
 !-----------------------------------------------------------------
 !     ##########################
       MODULE MODI_DFLUX_CORR 
@@ -112,6 +111,7 @@ END MODULE MODI_DFLUX_CORR
 !!      J Escobar 
 !!    J. Stein &    20/03/01 : bug for the open case at the boundary
 !!      P. Jabouille 
+!!   J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1
 !------------------------------------------------------------------------------
 !
 !*      0.   DECLARATIONS
@@ -242,14 +242,15 @@ ZBETAOUT(:,:,IKU) = 1.      ! because no velocity is available
 ! 
 ! Update halo and apply possible cyclic boundary conditions
 !
-IF(NHALO == 1 .OR. HLBCX(1)=='CYCL' .OR. HLBCY(1)=='CYCL') THEN
+!!$IF(NHALO == 1 .OR. HLBCX(1)=='CYCL' .OR. HLBCY(1)=='CYCL') THEN
+IF(HLBCX(1)=='CYCL' .OR. HLBCY(1)=='CYCL') THEN
   CALL ADD3DFIELD_ll(TZFIELDS_ll, ZBETAOUT)
-  IF(NHALO == 1) THEN
+!!$  IF(NHALO == 1) THEN
     CALL UPDATE_HALO_ll(TZFIELDS_ll, IINFO_ll)
-  ELSE
-    IF(HLBCX(1)=='CYCL') CALL UPDATE_BOUNDARIES_ll('XX',TZFIELDS_ll,IINFO_ll)
-    IF(HLBCY(1)=='CYCL') CALL UPDATE_BOUNDARIES_ll('YY',TZFIELDS_ll,IINFO_ll)
-  END IF
+!!$  ELSE
+!!$    IF(HLBCX(1)=='CYCL') CALL UPDATE_BOUNDARIES_ll('XX',TZFIELDS_ll,IINFO_ll)
+!!$    IF(HLBCY(1)=='CYCL') CALL UPDATE_BOUNDARIES_ll('YY',TZFIELDS_ll,IINFO_ll)
+!!$  END IF
   CALL CLEANLIST_ll(TZFIELDS_ll)
 ENDIF
 !
index ad2367b..38e9a51 100644 (file)
@@ -70,8 +70,8 @@
 !!       D.Ricard 2015 : add LMOIST_ES
 !!              July, 2015 (O.Nuissier/F.Duffourg) Add microphysics diagnostic for
 !!                                      aircraft, ballon and profiler
-!
-!
+!!   J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 
+!!
 !-------------------------------------------------------------------------------
 !
 !*       0.     DECLARATIONS
@@ -156,6 +156,8 @@ USE MODN_NCOUT
 USE MODE_UTIL
 #endif
 !
+USE MODN_CONF, ONLY : JPHEXT , NHALO
+!
 IMPLICIT NONE
 !
 !*       0.1   declarations of local variables
@@ -220,6 +222,7 @@ NAMELIST/NAM_DIAG/ CISO, LVAR_RS, LVAR_LS,   &
 !
 NAMELIST/NAM_DIAG_FILE/ YINIFILE,YINIFILEPGD, YSUFFIX
 NAMELIST/NAM_STO_FILE/ CFILES, NSTART_SUPP
+NAMELIST/NAM_CONF_DIAG/JPHEXT, NHALO 
 !
 !-------------------------------------------------------------------------------
 !
index b54ad1e..5bdb548 100644 (file)
@@ -6,7 +6,6 @@
 !--------------- special set of characters for RCS information
 !-----------------------------------------------------------------
 ! $Source$ $Revision$
-! MASDEV4_7 adiab 2006/06/06 15:20:45
 !-----------------------------------------------------------------
 !     #######################
       MODULE MODI_DYN_SOURCES
@@ -151,6 +150,7 @@ END MODULE MODI_DYN_SOURCES
 !!  Corrections 03/12/02  (P. Jabouille)  add no thinshell condition
 !!  Correction     06/10  (C.Lac) Exclude L1D for Coriolis term 
 !!  Modification   03/11  (C.Lac) Split the gravity term due to buoyancy
+!!   J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -164,6 +164,8 @@ USE MODD_DYN
 USE MODI_SHUMAN
 USE MODI_GRADIENT_M
 USE MODI_BUDGET
+!
+USE MODE_MPPDB
 !  
 IMPLICIT NONE
 !  
@@ -241,6 +243,14 @@ IF ((.NOT.L1D).AND.(.NOT.LCARTESIAN) )  THEN
     ZWORK3(:,:,:) = 1.0 / ( XRADIUS + MZF(1,IKU,1,PZZ(:,:,:)) )
     ZWORK1(:,:,:) = SPREAD( PCURVX(:,:),DIM=3,NCOPIES=IKU )
     ZWORK2(:,:,:) = SPREAD( PCURVY(:,:),DIM=3,NCOPIES=IKU )
+    CALL MPPDB_CHECK3DM("DYN_SOOURCES:ZWORK3,ZWORK1,ZWORK2",PRECISION,&
+                      & ZWORK3,ZWORK1,ZWORK2,&
+                      & MXM( MYF(ZRVT*PVT) * ZWORK2 * ZWORK3 ) , &
+                      & MXM( ( MYF(PVT) * ZWORK1 - MZF(1,IKU,1,PWT) ) * ZWORK3 ) ,&
+                      & MYF(PVT) * ZWORK1 - MZF(1,IKU,1,PWT) , &
+                      & MYF(PVT) , MZF(1,IKU,1,PWT) , MXM(PWT) , MYM(PWT) )
+    CALL MPPDB_CHECK3DM("DYN_SOOURCES:SUITE",PRECISION,&
+         &  MXM(ZRVT),MXM(PVT),MXM(PWT),MXM(ZWORK1),MXM(ZWORK2),MXM(ZWORK3)  )
 !
     PRUS(:,:,:) = PRUS                                              &
     + MXM( MYF(ZRVT*PVT) * ZWORK2 * ZWORK3 )                        &
index 6a78e9c..3a54b8f 100644 (file)
@@ -6,7 +6,6 @@
 !--------------- special set of characters for RCS information
 !-----------------------------------------------------------------
 ! $Source$ $Revision$
-! MASDEV4_7 init 2006/05/18 13:07:25
 !-----------------------------------------------------------------
 !     #####################
       MODULE MODI_ELEC_TRID
@@ -179,6 +178,7 @@ END MODULE MODI_ELEC_TRID
 !!                                       (to avoid problem in bouissinesq configuration)
 !!                  01/07/12 (J-P. Pinty)  add a non-homogeneous fair-weather 
 !!                                         top boundary condition (Neuman)
+!!                  J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 
 !------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
index 59e8031..e3b60d9 100644 (file)
@@ -190,6 +190,7 @@ END MODULE MODI_ENDSTEP
 !!                                         advected with PPM
 !!                 04/2013  (C.Lac)       FIT for all the variables     
 !!                 04/2014  (C.Lac)       Check on the positivity of XSVT
+!!                 J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1
 !!
 !------------------------------------------------------------------------------
 !
@@ -272,10 +273,7 @@ INTEGER :: IJB, IJE  ! index of first and last inner mass points along y
 !
 !------------------------------------------------------------------------------
 !
-IIB = 1 + JPHEXT
-IIE = SIZE(PUT,1) - JPHEXT
-IJB = 1 + JPHEXT
-IJE = SIZE(PUT,2) - JPHEXT
+CALL GET_INDICE_ll (IIB,IJB,IIE,IJE)
 IKU=SIZE(XZHAT)
 !
 !*      1.   ASSELIN FILTER
index 2aefc2e..df1bb10 100644 (file)
@@ -6,7 +6,6 @@
 !--------------- special set of characters for RCS information
 !-----------------------------------------------------------------
 ! $Source$ $Revision$
-! MASDEV4_7 prep_real 2006/05/18 13:07:25
 !-----------------------------------------------------------------
 !     ##########################
       MODULE MODI_EXTRACT_VORTEX
@@ -93,6 +92,7 @@ END MODULE MODI_EXTRACT_VORTEX
 !!    MODIFICATIONS
 !!    -------------
 !!      Original              01/12/01
+!!   J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 
 !!
 !-------------------------------------------------------------------------------
 !
@@ -100,9 +100,10 @@ END MODULE MODI_EXTRACT_VORTEX
 !              ------------
 !
 USE MODD_CST, ONLY: XPI
-USE MODD_PARAMETERS, ONLY: JPHEXT,XUNDEF
+USE MODD_PARAMETERS, ONLY: XUNDEF
 USE MODD_DIM_n,      ONLY: NIMAX,NJMAX
 USE MODD_GRID_n,     ONLY: XXHAT,XYHAT
+USE MODE_ll
 !
 IMPLICIT NONE
 !
@@ -139,10 +140,7 @@ IX= SIZE(PVARIN,1)
 IY= SIZE(PVARIN,2)
 IPHI=SIZE(PR0,1)
 !
-IIB=1+JPHEXT
-IJB=1+JPHEXT
-IIE=NIMAX+JPHEXT
-IJE=NJMAX+JPHEXT
+CALL GET_INDICE_ll (IIB,IJB,IIE,IJE)
 !
 ZDELTAX = XXHAT(3) - XXHAT(2)
 ZDELTAY = XYHAT(3) - XYHAT(2)
index d13b5e8..76c571b 100644 (file)
@@ -157,7 +157,8 @@ END MODULE MODI_FAST_TERMS
 !!                     November 6, 2002 (S. Malardel,J.Pergaud) Cloud Fract + Rc of 
 !!                                                              Mass flux convection
 !!                                                              Scheme
-!!      J.Escobar 21/03/2013: for HALOK comment all NHALO=1 test
+!!                     J.Escobar 21/03/2013: for HALOK comment all NHALO=1 test
+!!                     J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -172,6 +173,7 @@ USE MODI_CONDENS
 USE MODI_BUDGET
 USE MODE_FM
 USE MODE_FMWRIT
+USE MODI_GET_HALO
 !
 IMPLICIT NONE
 !
@@ -314,6 +316,7 @@ DO JITER =1,ITERMAX
 !
 !*       2.6    compute the saturation vapor pressure at t+1
 !
+  CALL GET_HALO(ZT)
   ZW1(:,:,:) = EXP( XALPW - XBETAW/ZT(:,:,:) - XGAMW*ALOG( ZT(:,:,:) ) )
 !
 !*       2.7    compute the saturation mixing ratio at t+1
index b86e9e1..4e6f7c0 100644 (file)
@@ -6,7 +6,6 @@
 !--------------- special set of characters for RCS information
 !-----------------------------------------------------------------
 ! $Source$ $Revision$
-! MASDEV4_7 prep_nest_pgd 2006/05/18 13:07:25
 !-----------------------------------------------------------------
 !     ##########################
       MODULE MODI_FILL_SONFIELD_n
@@ -59,6 +58,7 @@ END MODULE MODI_FILL_SONFIELD_n
 !!    MODIFICATIONS
 !!    -------------
 !!      Original        27/09/96
+!!   J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -98,10 +98,10 @@ CALL GOTO_MODEL(KMI)
 !
 !* correct only if JPHEXT = 1
 !
-IIB1 = NXOR_ALL (KMI)+1
-IIE1 = NXEND_ALL(KMI)-1
-IJB1 = NYOR_ALL (KMI)+1
-IJE1 = NYEND_ALL(KMI)-1
+IIB1 = NXOR_ALL (KMI)+JPHEXT
+IIE1 = NXEND_ALL(KMI)-JPHEXT
+IJB1 = NYOR_ALL (KMI)+JPHEXT
+IJE1 = NYEND_ALL(KMI)-JPHEXT
 !
 DO JLAYER=1,SIZE(PNESTFIELD,4)
   PNESTFIELD(:,:,KLSON,JLAYER) = XUNDEF
index 5937f71..baa2067 100644 (file)
@@ -72,6 +72,7 @@ END MODULE MODI_FLASH_GEOM_ELEC_n
 !!      Original : Jan. 2010
 !!      Modifications:
 !!      M. Chong  * LA *  Juin 2010 : add small ions
+!!      J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 
 !!
 !-------------------------------------------------------------------------------
 !
@@ -79,7 +80,7 @@ END MODULE MODI_FLASH_GEOM_ELEC_n
 !               ------------
 !
 USE MODD_CONF, ONLY : CEXP
-USE MODD_PARAMETERS, ONLY : JPHEXT, JPVEXT
+USE MODD_PARAMETERS, ONLY : JPVEXT
 USE MODD_GRID_n, ONLY : XXHAT, XYHAT, XZHAT
 USE MODD_DYN_n, ONLY : XDXHATM, XDYHATM, NSTOP
 USE MODD_ELEC_DESCR 
@@ -274,10 +275,7 @@ CALL MYPROC_ELEC_ll(IPROC)
 !*      1.1     subdomains indexes
 !
 ! beginning and end indexes of the physical subdomain
-IIB = 1 + JPHEXT
-IIE = SIZE(PRT,1) - JPHEXT
-IJB = 1 + JPHEXT
-IJE = SIZE(PRT,2) - JPHEXT
+CALL GET_INDICE_ll (IIB,IJB,IIE,IJE)
 IKB = 1 + JPVEXT
 IKE = SIZE(PRT,3) - JPVEXT
 IKU = SIZE(PRT,3)
index 24eed91..8e93830 100644 (file)
@@ -6,7 +6,6 @@
 !--------------- special set of characters for RCS information
 !-----------------------------------------------------------------
 ! $Source$ $Revision$
-! MASDEV4_7 init 2006/05/18 13:07:25
 !-----------------------------------------------------------------
 !     ##########################
       MODULE MODI_GET_SIZEX_LB
@@ -89,6 +88,7 @@ END MODULE MODI_GET_SIZEX_LB
 !!    MODIFICATIONS
 !!    -------------
 !!      Original    23/09/98
+!!   J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -148,7 +148,7 @@ KJSIZEX2=0
 IF (KRIMX /=0) THEN 
 !   Western side, mass points   : 1:NRIMX+1,1:NJMAX_ll+ 2 * JPHEXT
   IXOR=1
-  IXEND=KRIMX+1
+  IXEND=KRIMX+JPHEXT ! +1
   IYOR=1 
   IYEND=KJMAX_ll+ 2 * JPHEXT
   CALL GET_INTERSECTION_ll(IXOR,IYOR,IXEND,IYEND,IXORI,IYORI,IXENDI,IYENDI,"EXTE",IINFO)
@@ -158,7 +158,7 @@ IF (KRIMX /=0) THEN
   ENDIF
 !   Eastern side , mass  and u-grid points:
 !            NIMAX_ll+JPHEXT-NRIMX +1:NIMAX_ll+ 2 *JPHEXT,1:NJMAX_ll+2 *JPHEXT
-  IXOR=KIMAX_ll+ 2 * JPHEXT-KRIMX
+  IXOR=KIMAX_ll + 2 * JPHEXT-KRIMX-JPHEXT+1 ! -KRIMX
   IXEND=KIMAX_ll+ 2 * JPHEXT
   IYOR=1
   IYEND=KJMAX_ll+ 2 * JPHEXT
@@ -171,7 +171,7 @@ IF (KRIMX /=0) THEN
   ENDIF
 ! Western side, u-grid points : 2:NRIMX+2,1:NJMAX_ll+ 2 * JPHEXT
   IXOR=2
-  IXEND=KRIMX+2
+  IXEND=KRIMX+JPHEXT+1 ! +2
   IYOR=1 
   IYEND=KJMAX_ll+ 2 * JPHEXT
   CALL GET_INTERSECTION_ll(IXOR,IYOR,IXEND,IYEND,IXORI,IYORI,IXENDI,IYENDI,"EXTE",IINFO)
@@ -184,8 +184,8 @@ ENDIF
 !*       2.2  West-East LB zone with only  2 points at each side 
 !
 !   Western side : 2:3,1:NJMAX_ll+ 2 * JPHEXT
-IXOR=2
-IXEND=3
+IXOR=2 ! 2
+IXEND=JPHEXT+2 ! 3
 IYOR=1
 IYEND=KJMAX_ll+ 2 * JPHEXT
 CALL GET_INTERSECTION_ll(IXOR,IYOR,IXEND,IYEND,IXORI,IYORI,IXENDI,IYENDI,"EXTE",IINFO)
@@ -194,8 +194,8 @@ IF (IINFO /=1 ) THEN ! no empty intersection
   KJSIZEX4= IYENDI - IYORI +1 
 ENDIF
 !   Eastern side,  : NIMAX_ll+JPHEXT:NIMAX_ll+ 2 *JPHEXT,1:NJMAX_ll+2 *JPHEXT
-IXOR=KIMAX_ll+JPHEXT 
-IXEND=KIMAX_ll+ 2 * JPHEXT
+IXOR=KIMAX_ll + 2 * JPHEXT - JPHEXT      ! + JPHEXT 
+IXEND=KIMAX_ll+ 2 * JPHEXT - JPHEXT + JPHEXT  ! + 2*JPHEXT
 IYOR=1
 IYEND=KJMAX_ll+ 2 * JPHEXT
 CALL GET_INTERSECTION_ll(IXOR,IYOR,IXEND,IYEND,IXORI,IYORI,IXENDI,IYENDI,"EXTE",IINFO)
@@ -207,8 +207,8 @@ ENDIF
 !*       2.3  West-East LB zone with only  1 point at each side 
 !
 !   Western side : 1:1,1:NJMAX_ll+ 2 * JPHEXT
-IXOR=1
-IXEND=1
+IXOR=1  ! 1
+IXEND=JPHEXT ! 1
 IYOR=1
 IYEND=KJMAX_ll+ 2 * JPHEXT
 CALL GET_INTERSECTION_ll(IXOR,IYOR,IXEND,IYEND,IXORI,IYORI,IXENDI,IYENDI,"EXTE",IINFO)
@@ -217,8 +217,8 @@ IF (IINFO /=1) THEN   ! no empty intersection
   KJSIZEX2= IYENDI - IYORI +1 
 ENDIF
 !   East boundary, 1 point LB zone : NIMAX_ll+ 2 * JPHEXT:NIMAX_ll+ 2 *JPHEXT,1:NJMAX_ll+2 *JPHEXT
-IXOR=KIMAX_ll + 2 * JPHEXT 
-IXEND=KIMAX_ll + 2 * JPHEXT
+IXOR=KIMAX_ll  + 2 * JPHEXT - JPHEXT + 1 !  + 2 * JPHEXT
+IXEND=KIMAX_ll + 2 * JPHEXT - JPHEXT + JPHEXT !  + 2 * JPHEXT
 IYOR=1
 IYEND=KJMAX_ll+ 2 * JPHEXT
 CALL GET_INTERSECTION_ll(IXOR,IYOR,IXEND,IYEND,IXORI,IYORI,IXENDI,IYENDI,"EXTE",IINFO)
index b7fc55c..51491f2 100644 (file)
@@ -6,7 +6,6 @@
 !--------------- special set of characters for RCS information
 !-----------------------------------------------------------------
 ! $Source$ $Revision$
-! MASDEV4_7 init 2006/05/18 13:07:25
 !-----------------------------------------------------------------
 !     ##########################
       MODULE MODI_GET_SIZEY_LB
@@ -89,6 +88,7 @@ END MODULE MODI_GET_SIZEY_LB
 !!    MODIFICATIONS
 !!    -------------
 !!      Original    23/09/98
+!!   J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -150,7 +150,7 @@ IF (KRIMY /=0) THEN
   IXOR=1
   IXEND=KIMAX_ll+ 2 * JPHEXT
   IYOR=1 
-  IYEND=KRIMY+1
+  IYEND=KRIMY+JPHEXT ! +1
   CALL GET_INTERSECTION_ll(IXOR,IYOR,IXEND,IYEND,IXORI,IYORI,IXENDI,IYENDI,"EXTE",IINFO)
   IF (IINFO/=1) THEN  ! no empty intersection
     KISIZEYF= IXENDI - IXORI +1
@@ -160,7 +160,7 @@ IF (KRIMY /=0) THEN
 !            1:NIMAX_ll+2 *JPHEXT,NJMAX_ll+JPHEXT-NRIMY +1:NJMAX_ll+ 2 *JPHEXT,
   IXOR=1
   IXEND=KIMAX_ll+ 2 * JPHEXT
-  IYOR=KJMAX_ll+ 2 * JPHEXT-KRIMY
+  IYOR=KJMAX_ll + 2 * JPHEXT-KRIMY-JPHEXT+1  ! -KRIMY
   IYEND=KJMAX_ll+ 2 * JPHEXT
   CALL GET_INTERSECTION_ll(IXOR,IYOR,IXEND,IYEND,IXORI,IYORI,IXENDI,IYENDI,"EXTE",IINFO)
   IF (IINFO/=1) THEN ! no empty intersection
@@ -173,7 +173,7 @@ IF (KRIMY /=0) THEN
   IXOR=1 
   IXEND=KIMAX_ll+ 2 * JPHEXT
   IYOR=2
-  IYEND=KRIMY+2
+  IYEND=KRIMY+JPHEXT+1   !+2
   CALL GET_INTERSECTION_ll(IXOR,IYOR,IXEND,IYEND,IXORI,IYORI,IXENDI,IYENDI,"EXTE",IINFO)
   IF (IINFO /= 1) THEN ! no empty intersection
     KISIZEYFV= IXENDI - IXORI +1
@@ -186,8 +186,8 @@ ENDIF
 !   Southern  side : 1:NIMAX_ll+ 2 * JPHEXT,2:3
 IXOR=1
 IXEND=KIMAX_ll+ 2 * JPHEXT
-IYOR=2
-IYEND=3
+IYOR=2  !2
+IYEND=JPHEXT+2 !3
 CALL GET_INTERSECTION_ll(IXOR,IYOR,IXEND,IYEND,IXORI,IYORI,IXENDI,IYENDI,"EXTE",IINFO)
 IF (IINFO /=1 ) THEN ! no empty intersection
   KISIZEY4= IXENDI - IXORI +1
@@ -196,8 +196,8 @@ ENDIF
 !   Northern side,  : 1:NIMAX_ll+2 *JPHEXT,NJMAX_ll+JPHEXT:NJMAX_ll+ 2 *JPHEXT
 IXOR= 1
 IXEND=KIMAX_ll+ 2 * JPHEXT
-IYOR=KJMAX_ll+JPHEXT
-IYEND=KJMAX_ll+ 2 * JPHEXT
+IYOR=KJMAX_ll + 2 * JPHEXT - JPHEXT      ! + JPHEXT
+IYEND=KJMAX_ll+ 2 * JPHEXT - JPHEXT + JPHEXT  ! + 2*JPHEXT
 CALL GET_INTERSECTION_ll(IXOR,IYOR,IXEND,IYEND,IXORI,IYORI,IXENDI,IYENDI,"EXTE",IINFO)
 IF (IINFO/=1) THEN ! no empty intersection
   KISIZEY4=IXENDI - IXORI +1
@@ -209,8 +209,8 @@ ENDIF
 !   Southern  side : 1:NIMAX_ll+ 2 * JPHEXT,1:1
 IXOR=1
 IXEND=KIMAX_ll+ 2 * JPHEXT
-IYOR=1
-IYEND=1
+IYOR=1   ! 1
+IYEND=JPHEXT  ! 1
 CALL GET_INTERSECTION_ll(IXOR,IYOR,IXEND,IYEND,IXORI,IYORI,IXENDI,IYENDI,"EXTE",IINFO)
 IF (IINFO /=1) THEN   ! no empty intersection
   KISIZEY2= IXENDI - IXORI +1
@@ -219,8 +219,8 @@ ENDIF
 !   Northern boundary, 1 point LB zone :1:NIMAX_ll+2 *JPHEXT, NJMAX_ll+ 2 * JPHEXT:NJMAX_ll+ 2 *JPHEXT,
 IXOR=1
 IXEND=KIMAX_ll + 2 * JPHEXT
-IYOR=KJMAX_ll + 2 * JPHEXT 
-IYEND=KJMAX_ll+ 2 * JPHEXT
+IYOR=KJMAX_ll + 2 * JPHEXT - JPHEXT + 1 !  + 2 * JPHEXT
+IYEND=KJMAX_ll+ 2 * JPHEXT - JPHEXT + JPHEXT !  + 2 * JPHEXT
 CALL GET_INTERSECTION_ll(IXOR,IYOR,IXEND,IYEND,IXORI,IYORI,IXENDI,IYENDI,"EXTE",IINFO)
 IF (IINFO /=1) THEN    ! no empty intersection
   KISIZEY2=  IXENDI - IXORI +1
index 670e768..c29a571 100644 (file)
@@ -6,7 +6,6 @@
 !--------------- special set of characters for RCS information
 !-----------------------------------------------------------------
 ! $Source$ $Revision$
-! MASDEV4_7 operators 2006/05/18 13:07:25
 !-----------------------------------------------------------------
 !     ######################
       MODULE MODI_GRADIENT_M
@@ -160,6 +159,7 @@ END MODULE MODI_GRADIENT_M
 !!    -------------
 !!      Original    18/07/94
 !!                  19/07/00  add the LFLAT switch (J. Stein)
+!!      J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 
 !-------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -525,14 +525,14 @@ IF (.NOT. LFLAT) THEN
 !
   DO JI=1+JPHEXT,IIU
     PGX_M_U(JI,:,KKU)=  ( PY(JI,:,KKU)-PY(JI-1,:,KKU)  )  / PDXX(JI,:,KKU) 
-    PGX_M_U(JI,:,KKA)=  -999.
+    PGX_M_U(JI,:,KKA)=   PGX_M_U(JI,:,KKU) ! -999.
   END DO
 !
   PGX_M_U(1,:,:)=PGX_M_U(IIU-2*JPHEXT+1,:,:)
 ELSE
 !  PGX_M_U = DXM(PY) / PDXX
-  PGX_M_U(1+JPHEXT:IIU,:,:) = ( PY(1+JPHEXT:IIU,:,:)-PY(JPHEXT:IIU-1,:,:) ) &
-                             / PDXX(1+JPHEXT:IIU,:,:)
+  PGX_M_U(1+1:IIU,:,:) = ( PY(1+1:IIU,:,:)-PY(1:IIU-1,:,:) ) & ! +JPHEXT
+                             / PDXX(1+1:IIU,:,:)
 !
   PGX_M_U(1,:,:)=PGX_M_U(IIU-2*JPHEXT+1,:,:)
 ENDIF  
@@ -650,14 +650,14 @@ IF (.NOT. LFLAT) THEN
 !
   DO JJ=1+JPHEXT,IJU
     PGY_M_V(:,JJ,KKU)=  ( PY(:,JJ,KKU)-PY(:,JJ-1,KKU)  )  / PDYY(:,JJ,KKU) 
-    PGY_M_V(:,JJ,KKA)=  -999.
+    PGY_M_V(:,JJ,KKA)=  PGY_M_V(:,JJ,KKU) ! -999.
   END DO
 !
   PGY_M_V(:,1,:)=PGY_M_V(:,IJU-2*JPHEXT+1,:)
 ELSE
 !  PGY_M_V = DYM(PY)/PDYY
-  PGY_M_V(:,1+JPHEXT:IJU,:) = ( PY(:,1+JPHEXT:IJU,:)-PY(:,JPHEXT:IJU-1,:) ) & 
-                               / PDYY(:,1+JPHEXT:IJU,:)
+  PGY_M_V(:,1+1:IJU,:) = ( PY(:,1+1:IJU,:)-PY(:,1:IJU-1,:) ) & ! +JPHEXT
+                               / PDYY(:,1+1:IJU,:)
 !
   PGY_M_V(:,1,:)=PGY_M_V(:,IJU-2*JPHEXT+1,:)
 ENDIF  
@@ -752,7 +752,7 @@ PGZ_M_W(:,:,IKTB:IKTE) =  (PY(:,:,IKTB:IKTE)-PY(:,:,IKTB-KL:IKTE-KL))  &
                            / PDZZ(:,:,IKTB:IKTE)
 PGZ_M_W(:,:,KKU)=  (PY(:,:,KKU)-PY(:,:,KKU-KL))  &
                            / PDZZ(:,:,KKU)
-PGZ_M_W(:,:,KKA)=-999.
+PGZ_M_W(:,:,KKA)= PGZ_M_W(:,:,KKU) ! -999.
 !
 !-------------------------------------------------------------------------------
 !
index 91ec276..271d591 100644 (file)
@@ -6,7 +6,6 @@
 !--------------- special set of characters for RCS information
 !-----------------------------------------------------------------
 ! $Source$ $Revision$
-! MASDEV4_7 adiab 2006/06/06 15:20:45
 !-----------------------------------------------------------------
 !     ###################
       MODULE MODI_GRAVITY    
@@ -105,6 +104,7 @@ END MODULE MODI_GRAVITY
 !!    -------------
 !!      C.Lac - March 2011 - Splitted  from dyn_sources
 !!      Q.Rodier 06/15 correction on budget
+!!      J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1
 !!
 !-------------------------------------------------------------------------------
 !
@@ -115,6 +115,8 @@ USE MODD_CONF
 USE MODD_CST
 !
 USE MODI_SHUMAN
+USE MODI_BUDGET
+USE MODI_GET_HALO
 !  
 IMPLICIT NONE
 !  
@@ -158,11 +160,15 @@ IF( .NOT.L1D ) THEN     ! no buoyancy for 1D case
     ZRV_OV_RD = XRV / XRD
     ZWORK1(:,:,:) = 1.
     DO JWATER = 1 , 1+KRRL+KRRI                
+      CALL GET_HALO(PRT(:,:,:,JWATER))
       ZWORK1(:,:,:) = ZWORK1(:,:,:) + PRT(:,:,:,JWATER)
     END DO
 !
 !   compute the virtual potential temperature when water is present in any form
 !
+    CALL GET_HALO(PTHT)
+!
+    
     ZWORK2(:,:,:) = PTHT(:,:,:) * (1. + PRT(:,:,:,1)*ZRV_OV_RD) / ZWORK1(:,:,:)
   ELSE
 !
index 9cd7626..243ded2 100644 (file)
@@ -163,6 +163,7 @@ END MODULE MODI_ICE_ADJUST
 !!      (E.Perraud)  06/08   add correction to avoid ice when T >0
 !!      S. Riette ice for EDKF
 !!      2012-02 Y. Seity,  add possibility to run with reversed vertical levels
+!!      J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 
 !!
 !-------------------------------------------------------------------------------
 !
@@ -177,6 +178,7 @@ USE MODD_BUDGET
 USE MODI_CONDENSATION
 USE MODI_BUDGET
 USE MODE_FMWRIT
+USE MODI_GET_HALO
 !
 IMPLICIT NONE
 !
@@ -276,10 +278,7 @@ LOGICAL             :: LPRETREATMENT, LNEW_ADJUST
 IIU = SIZE(PEXNREF,1)
 IJU = SIZE(PEXNREF,2)
 IKU = SIZE(PEXNREF,3)
-IIB = 1 + JPHEXT
-IIE = IIU - JPHEXT
-IJB = 1 + JPHEXT
-IJE = IJU - JPHEXT
+CALL GET_INDICE_ll (IIB,IJB,IIE,IJE)
 IKB=KKA+JPVEXT*KKL
 IKE=KKU-JPVEXT*KKL
 !
@@ -377,6 +376,7 @@ END IF
 !
 !*    compute the saturation vapor pressures at t+1
 !
+      CALL GET_HALO(ZT)
       ZW1(:,:,:) = EXP( XALPW - XBETAW/ZT(:,:,:) - XGAMW*ALOG(ZT(:,:,:)) ) ! e_sw
       ZW2(:,:,:) = EXP( XALPI - XBETAI/ZT(:,:,:) - XGAMI*ALOG(ZT(:,:,:)) ) ! e_si
       ZW1(:,:,:) =  MIN(PPABST(:,:,:)/2.,ZW1(:,:,:))   ! safety limitation
index de195da..dd9be12 100644 (file)
@@ -175,6 +175,7 @@ END MODULE MODI_ICE_ADJUST_ELEC
 !!      Original    2002 
 !!      C. Barthe   19/11/09   update to version 4.8.1
 !!      M. Chong    Mar. 2010  Add small ions
+!!      J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 
 !!
 !-------------------------------------------------------------------------------
 !
@@ -192,6 +193,7 @@ USE MODD_RAIN_ICE_DESCR, ONLY : XRTMIN, XBI
 USE MODI_CONDENSATION
 USE MODI_BUDGET
 USE MODE_FMWRIT
+USE MODI_GET_HALO
 !
 IMPLICIT NONE
 !
@@ -316,10 +318,7 @@ LOGICAL             :: LPRETREATMENT, LNEW_ADJUST
 IIU = SIZE(PEXNREF,1)
 IJU = SIZE(PEXNREF,2)
 IKU = SIZE(PEXNREF,3)
-IIB = 1 + JPHEXT
-IIE = IIU - JPHEXT
-IJB = 1 + JPHEXT
-IJE = IJU - JPHEXT
+CALL GET_INDICE_ll (IIB,IJB,IIE,IJE)
 IKB = 1 + JPVEXT
 IKE = IKU - JPVEXT
 !
@@ -415,6 +414,7 @@ DO JITER = 1, ITERMAX
 !
 !     compute the saturation vapor pressures at t+1
 !
+      CALL GET_HALO(ZT)
       ZW1(:,:,:) = EXP(XALPW - XBETAW/ZT(:,:,:) - XGAMW*ALOG(ZT(:,:,:))) ! e_sw
       ZW2(:,:,:) = EXP(XALPI - XBETAI/ZT(:,:,:) - XGAMI*ALOG(ZT(:,:,:))) ! e_si
       ZW1(:,:,:) = MIN(PPABST(:,:,:)/2.,ZW1(:,:,:))   ! safety limitation
index b92924f..08760e2 100644 (file)
@@ -125,6 +125,7 @@ SUBROUTINE INI_LB(HINIFILE,HLUOUT,OLSOURCE,KSV,                    &
 !!      C.Lac           20/03/08    Add passive pollutants
 !!      M.Leriche       16/07/10    Add ice phase chemical species
 !!      Pialat/tulet    15/02/12    Add ForeFire scalars 
+!!      J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -147,6 +148,7 @@ USE MODD_ICE_C1R3_DESCR,  ONLY: C1R3NAMES
 USE MODD_CH_M9_n,         ONLY: CNAMES, CICNAMES
 USE MODD_LG,              ONLY: CLGNAMES
 USE MODD_ELEC_DESCR,      ONLY: CELECNAMES
+USE MODD_PARAMETERS,      ONLY: JPHEXT
 IMPLICIT NONE
 !
 !*       0.1   declarations of arguments
@@ -267,23 +269,23 @@ YDIR='--'
 CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,GHORELAX_UVWTH,IGRID,ILENCH,YCOMMENT,IRESP)
                                 !
 IF (GHORELAX_UVWTH) THEN 
-  IRIMX =(KSIZELBX_ll-1)/2   
-  IRIMXU=(KSIZELBXU_ll-1)/2  
-  IRIMY =(KSIZELBY_ll-1)/2
-  IRIMYV=(KSIZELBYV_ll-1)/2
-  IL3DX=2*ILBSIZEX+2
+  IRIMX =(KSIZELBX_ll-2*JPHEXT)/2   
+  IRIMXU=(KSIZELBXU_ll-2*JPHEXT)/2  
+  IRIMY =(KSIZELBY_ll-2*JPHEXT)/2
+  IRIMYV=(KSIZELBYV_ll-2*JPHEXT)/2
+  IL3DX=2*ILBSIZEX+2*JPHEXT
   IL3DXU=IL3DX
-  IL3DY=2*ILBSIZEY+2
+  IL3DY=2*ILBSIZEY+2*JPHEXT
   IL3DYV=IL3DY
 ELSE
   IRIMX=0
   IRIMXU=1
   IRIMY=0
   IRIMYV=1
-  IL3DX=2
-  IL3DY=2
-  IL3DXU=4
-  IL3DYV=4
+  IL3DX=2*JPHEXT ! 2
+  IL3DY=2*JPHEXT ! 2
+  IL3DXU=2 + 2*JPHEXT ! 4 
+  IL3DYV=2 + 2*JPHEXT ! 4 
 ENDIF
 !
 IF (KSIZELBXU_ll/= 0) THEN
@@ -363,15 +365,15 @@ CASE('READ')
     YDIR='--'      
     CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,GHORELAX_TKE,IGRID,ILENCH,YCOMMENT,IRESP)        
     IF (GHORELAX_TKE) THEN 
-      IRIMX=(KSIZELBXTKE_ll-1)/2   
-      IRIMY=(KSIZELBYTKE_ll-1)/2
-      IL3DX=2*ILBSIZEX+2
-      IL3DY=2*ILBSIZEY+2
+      IRIMX=(KSIZELBXTKE_ll-2*JPHEXT)/2   
+      IRIMY=(KSIZELBYTKE_ll-2*JPHEXT)/2
+      IL3DX=2*ILBSIZEX+2*JPHEXT
+      IL3DY=2*ILBSIZEY+2*JPHEXT
     ELSE
       IRIMX=0
       IRIMY=0
-      IL3DX=2
-      IL3DY=2
+      IL3DX=2*JPHEXT ! 2
+      IL3DY=2*JPHEXT ! 2
     ENDIF
 !
     YRECFM='LBXTKEM'
@@ -404,15 +406,15 @@ IF(KSIZELBXR_ll  > 0 ) THEN
   YRECFMX(:)=(/"LBXRVM","LBXRCM","LBXRRM","LBXRIM","LBXRSM","LBXRGM","LBXRHM"/)
   YRECFMY(:)=(/"LBYRVM","LBYRCM","LBYRRM","LBYRIM","LBYRSM","LBYRGM","LBYRHM"/)
   IF (GHORELAX_R) THEN 
-    IRIMX=(KSIZELBXR_ll-1)/2  
-    IRIMY= (KSIZELBYR_ll-1)/2  
-    IL3DX=2*ILBSIZEX+2
-    IL3DY=2*ILBSIZEY+2
+    IRIMX=(KSIZELBXR_ll-2*JPHEXT)/2  
+    IRIMY= (KSIZELBYR_ll-2*JPHEXT)/2  
+    IL3DX=2*ILBSIZEX+2*JPHEXT
+    IL3DY=2*ILBSIZEY+2*JPHEXT
   ELSE
     IRIMX=0
     IRIMY=0
-    IL3DX=2
-    IL3DY=2
+    IL3DX=2*JPHEXT ! 2
+    IL3DY=2*JPHEXT ! 2
   END IF
   !                               
   IRR=0
@@ -494,15 +496,15 @@ IF (KSV > 0) THEN
     YDIR='--'
     CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,GHORELAX_SV,IGRID,ILENCH,YCOMMENT,IRESP)  
     IF ( GHORELAX_SV ) THEN
-      IRIMX=(KSIZELBXSV_ll-1)/2   
-      IRIMY=(KSIZELBYSV_ll-1)/2
-      IL3DX=2*ILBSIZEX+2
-      IL3DY=2*ILBSIZEY+2
+      IRIMX=(KSIZELBXSV_ll-2*JPHEXT)/2   
+      IRIMY=(KSIZELBYSV_ll-2*JPHEXT)/2
+      IL3DX=2*ILBSIZEX+2*JPHEXT
+      IL3DY=2*ILBSIZEY+2*JPHEXT
     ELSE
       IRIMX=0
       IRIMY=0
-      IL3DX=2
-      IL3DY=2
+      IL3DX=2*JPHEXT !2
+      IL3DY=2*JPHEXT !2
     END IF
   END IF
 END IF
index e567460..0a4912b 100644 (file)
@@ -6,7 +6,6 @@
 !--------------- special set of characters for RCS information
 !-----------------------------------------------------------------
 ! $Source$ $Revision$
-! MASDEV4_7 les 2006/05/18 13:07:25
 !-----------------------------------------------------------------
 !#############################
 MODULE MODI_INI_LES_CART_MASKn
@@ -62,6 +61,7 @@ END MODULE MODI_INI_LES_CART_MASKn
 !!    -------------
 !!      Original         07/02/00
 !!      Modification     01/02/01 (D.Gazen) add module MODD_NSV for NSV variable
+!!      J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 
 !!
 !! --------------------------------------------------------------------------
 !
index edf141e..fa4cdb1 100644 (file)
@@ -262,6 +262,7 @@ END MODULE MODI_INI_MODEL_n
 !!       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
+!!                   J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 
 !---------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -919,15 +920,15 @@ ELSEIF( L2D ) THEN                         ! 2D case
        IISIZEX4,IJSIZEX4,IISIZEX2,IJSIZEX2)
 !
   IF ( LHORELAX_UVWTH ) THEN
-    NSIZELBX_ll=2*NRIMX+2
-    NSIZELBXU_ll=2*NRIMX+2
+    NSIZELBX_ll=2*NRIMX+2*JPHEXT
+    NSIZELBXU_ll=2*NRIMX+2*JPHEXT
     ALLOCATE(XLBXUM(IISIZEXFU,IJSIZEXFU,IKU))
     ALLOCATE(XLBXVM(IISIZEXF,IJSIZEXF,IKU))
     ALLOCATE(XLBXWM(IISIZEXF,IJSIZEXF,IKU))
     ALLOCATE(XLBXTHM(IISIZEXF,IJSIZEXF,IKU))
   ELSE
-    NSIZELBX_ll=2
-    NSIZELBXU_ll=4
+    NSIZELBX_ll=2*JPHEXT      ! 2
+    NSIZELBXU_ll=2*(JPHEXT+1) ! 4
     ALLOCATE(XLBXUM(IISIZEX4,IJSIZEX4,IKU))
     ALLOCATE(XLBXVM(IISIZEX2,IJSIZEX2,IKU))
     ALLOCATE(XLBXWM(IISIZEX2,IJSIZEX2,IKU))
@@ -936,10 +937,10 @@ ELSEIF( L2D ) THEN                         ! 2D case
 !
   IF (CTURB /= 'NONE') THEN
     IF ( LHORELAX_TKE) THEN
-      NSIZELBXTKE_ll=2* NRIMX+2
+      NSIZELBXTKE_ll=2* NRIMX+2*JPHEXT
       ALLOCATE(XLBXTKEM(IISIZEXF,IJSIZEXF,IKU))
     ELSE
-      NSIZELBXTKE_ll=2
+      NSIZELBXTKE_ll=2*JPHEXT  ! 2
       ALLOCATE(XLBXTKEM(IISIZEX2,IJSIZEX2,IKU))
     END IF
   ELSE
@@ -951,10 +952,10 @@ ELSEIF( L2D ) THEN                         ! 2D case
     IF (LHORELAX_RV .OR. LHORELAX_RC .OR. LHORELAX_RR .OR. LHORELAX_RI    &
          .OR. LHORELAX_RS .OR. LHORELAX_RG .OR. LHORELAX_RH               &
        ) THEN
-      NSIZELBXR_ll=2* NRIMX+2
+      NSIZELBXR_ll=2* NRIMX+2*JPHEXT
       ALLOCATE(XLBXRM(IISIZEXF,IJSIZEXF,IKU,NRR))
     ELSE
-      NSIZELBXR_ll=2
+      NSIZELBXR_ll=2*JPHEXT  ! 2
       ALLOCATE(XLBXRM(IISIZEX2,IJSIZEX2,IKU,NRR))
     ENDIF
   ELSE
@@ -964,10 +965,10 @@ ELSEIF( L2D ) THEN                         ! 2D case
   !
   IF ( NSV > 0 ) THEN
     IF ( ANY( LHORELAX_SV(:)) ) THEN
-      NSIZELBXSV_ll=2* NRIMX+2
+      NSIZELBXSV_ll=2* NRIMX+2*JPHEXT
       ALLOCATE(XLBXSVM(IISIZEXF,IJSIZEXF,IKU,NSV))
     ELSE
-      NSIZELBXSV_ll=2
+      NSIZELBXSV_ll=2*JPHEXT  ! 2
       ALLOCATE(XLBXSVM(IISIZEX2,IJSIZEX2,IKU,NSV))
     END IF
   ELSE
@@ -1012,10 +1013,10 @@ ELSE                                   ! 3D case
      END IF
   END IF
 IF ( LHORELAX_UVWTH ) THEN
-    NSIZELBX_ll=2*NRIMX+2
-    NSIZELBXU_ll=2*NRIMX+2
-    NSIZELBY_ll=2*NRIMY+2
-    NSIZELBYV_ll=2*NRIMY+2
+    NSIZELBX_ll=2*NRIMX+2*JPHEXT
+    NSIZELBXU_ll=2*NRIMX+2*JPHEXT
+    NSIZELBY_ll=2*NRIMY+2*JPHEXT
+    NSIZELBYV_ll=2*NRIMY+2*JPHEXT
     ALLOCATE(XLBXUM(IISIZEXFU,IJSIZEXFU,IKU))
     ALLOCATE(XLBYUM(IISIZEYF,IJSIZEYF,IKU))
     ALLOCATE(XLBXVM(IISIZEXF,IJSIZEXF,IKU))
@@ -1025,10 +1026,10 @@ IF ( LHORELAX_UVWTH ) THEN
     ALLOCATE(XLBXTHM(IISIZEXF,IJSIZEXF,IKU))
     ALLOCATE(XLBYTHM(IISIZEYF,IJSIZEYF,IKU))
   ELSE
-    NSIZELBX_ll=2
-    NSIZELBXU_ll=4
-    NSIZELBY_ll=2
-    NSIZELBYV_ll=4
+    NSIZELBX_ll=2*JPHEXT  ! 2
+    NSIZELBXU_ll=2*(JPHEXT+1) ! 4
+    NSIZELBY_ll=2*JPHEXT  ! 2
+    NSIZELBYV_ll=2*(JPHEXT+1) ! 4
     ALLOCATE(XLBXUM(IISIZEX4,IJSIZEX4,IKU))
     ALLOCATE(XLBYUM(IISIZEY2,IJSIZEY2,IKU))
     ALLOCATE(XLBXVM(IISIZEX2,IJSIZEX2,IKU))
@@ -1041,13 +1042,13 @@ IF ( LHORELAX_UVWTH ) THEN
   !
   IF (CTURB /= 'NONE') THEN
     IF ( LHORELAX_TKE) THEN
-      NSIZELBXTKE_ll=2*NRIMX+2
-      NSIZELBYTKE_ll=2*NRIMY+2
+      NSIZELBXTKE_ll=2*NRIMX+2*JPHEXT
+      NSIZELBYTKE_ll=2*NRIMY+2*JPHEXT
       ALLOCATE(XLBXTKEM(IISIZEXF,IJSIZEXF,IKU))
       ALLOCATE(XLBYTKEM(IISIZEYF,IJSIZEYF,IKU))
     ELSE
-      NSIZELBXTKE_ll=2
-      NSIZELBYTKE_ll=2
+      NSIZELBXTKE_ll=2*JPHEXT  ! 2
+      NSIZELBYTKE_ll=2*JPHEXT  ! 2
       ALLOCATE(XLBXTKEM(IISIZEX2,IJSIZEX2,IKU))
       ALLOCATE(XLBYTKEM(IISIZEY2,IJSIZEY2,IKU))
     END IF
@@ -1062,13 +1063,13 @@ IF ( LHORELAX_UVWTH ) THEN
     IF (LHORELAX_RV .OR. LHORELAX_RC .OR. LHORELAX_RR .OR. LHORELAX_RI    &
           .OR. LHORELAX_RS .OR. LHORELAX_RG .OR. LHORELAX_RH              &
        ) THEN
-      NSIZELBXR_ll=2*NRIMX+2
-      NSIZELBYR_ll=2*NRIMY+2
+      NSIZELBXR_ll=2*NRIMX+2*JPHEXT
+      NSIZELBYR_ll=2*NRIMY+2*JPHEXT
       ALLOCATE(XLBXRM(IISIZEXF,IJSIZEXF,IKU,NRR))
       ALLOCATE(XLBYRM(IISIZEYF,IJSIZEYF,IKU,NRR))
     ELSE
-      NSIZELBXR_ll=2
-      NSIZELBYR_ll=2
+      NSIZELBXR_ll=2*JPHEXT  ! 2
+      NSIZELBYR_ll=2*JPHEXT  ! 2
       ALLOCATE(XLBXRM(IISIZEX2,IJSIZEX2,IKU,NRR))
       ALLOCATE(XLBYRM(IISIZEY2,IJSIZEY2,IKU,NRR))
     ENDIF
@@ -1081,13 +1082,13 @@ IF ( LHORELAX_UVWTH ) THEN
   !
   IF ( NSV > 0 ) THEN
     IF ( ANY( LHORELAX_SV(:)) ) THEN
-      NSIZELBXSV_ll=2*NRIMX+2
-      NSIZELBYSV_ll=2*NRIMY+2
+      NSIZELBXSV_ll=2*NRIMX+2*JPHEXT
+      NSIZELBYSV_ll=2*NRIMY+2*JPHEXT
       ALLOCATE(XLBXSVM(IISIZEXF,IJSIZEXF,IKU,NSV))
       ALLOCATE(XLBYSVM(IISIZEYF,IJSIZEYF,IKU,NSV))
     ELSE
-      NSIZELBXSV_ll=2
-      NSIZELBYSV_ll=2
+      NSIZELBXSV_ll=2*JPHEXT  ! 2
+      NSIZELBYSV_ll=2*JPHEXT  ! 2
       ALLOCATE(XLBXSVM(IISIZEX2,IJSIZEX2,IKU,NSV))
       ALLOCATE(XLBYSVM(IISIZEY2,IJSIZEY2,IKU,NSV))
     END IF
index bad3b6c..d1a3f7c 100644 (file)
@@ -6,7 +6,6 @@
 !--------------- special set of characters for RCS information
 !-----------------------------------------------------------------
 ! $Source$ $Revision$
-! MASDEV4_7 init 2006/10/16 14:23:23
 !-----------------------------------------------------------------
 !     #######################
       MODULE MODI_INI_ONE_WAY_n
@@ -141,6 +140,7 @@ SUBROUTINE INI_ONE_WAY_n(KDAD,HLUOUT,PTSTEP,KMI,KTCOUNT,                 &
 !!    M. Leriche     11/2009  modify the LB*SVS for the aqueous phase chemistry
 !!                   07/2010  idem for ice phase chemical species
 !!    Bosseur & Filippi 07/2013 Adds Forefire
+!!    J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 
 !!
 !------------------------------------------------------------------------------
 !
@@ -240,10 +240,10 @@ REAL, DIMENSION(:,:,:,:), ALLOCATABLE :: ZCHEMMI  ! chemical ice phase concentra
 CALL GOTO_MODEL(KDAD)
 !
 CALL GET_INDICE_ll (IIB,IJB,IIE,IJE)
-IIB=IIB-1
-IIE=IIE+1
-IJB=IJB-1
-IJE=IJE+1
+IIB=IIB-JPHEXT
+IIE=IIE+JPHEXT
+IJB=IJB-JPHEXT
+IJE=IJE+JPHEXT
 ALLOCATE(ZWORK(IIB:IIE,IJB:IJE,SIZE(PLBXTHM,3)))  ! can be smaller than child extended subdomain
 ! LS_FORCING routine can not correctly manage extra halo zone
 ! LB will be filled only with one layer halo zone for the moment
@@ -818,7 +818,7 @@ ENDIF
 !*    Vertical interpolation
 !
 IF ( SIZE(PLBX,1) /= 0 .AND. GVERT_INTERP) THEN
-  IF ( ILBX == KRIMX+1 ) THEN
+  IF ( ILBX == KRIMX+JPHEXT ) THEN
     PLBX(:,:,:) = VER_INTERP_LIN(PLBX(:,:,:),   &
                              KKLIN_LBXM(:,:,:),PCOEFLIN_LBXM(:,:,:))
   ELSE
@@ -828,7 +828,7 @@ IF ( SIZE(PLBX,1) /= 0 .AND. GVERT_INTERP) THEN
 END IF
 !
 IF ( SIZE(PLBY,1) /= 0 .AND. GVERT_INTERP) THEN
-  IF ( ILBY == KRIMY+1 ) THEN
+  IF ( ILBY == KRIMY+JPHEXT ) THEN
     PLBY(:,:,:) = VER_INTERP_LIN(PLBY(:,:,:),   &
                                    KKLIN_LBYM(:,:,:),PCOEFLIN_LBYM(:,:,:))
   ELSE
index 5d63465..6f36ce8 100644 (file)
@@ -6,7 +6,6 @@
 !--------------- special set of characters for RCS information
 !-----------------------------------------------------------------
 ! $Source$ $Revision$
-! MASDEV4_7 prep_real 2006/09/25 14:23:42
 !-----------------------------------------------------------------
 !     ########################
       MODULE MODI_INI_PROG_VAR
@@ -95,6 +94,7 @@ END MODULE MODI_INI_PROG_VAR
 !!                                      another MesoNH simulation
 !!                  Aug 2012 (J.-P. Chaboureau) read the chem-file descriptor
 !!                  Fev 2015  (J.-P. Chaboureau) read instant T insteed of M
+!!                  J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -165,11 +165,8 @@ 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
+CALL GET_INDICE_ll (IIB,IJB,IIE,IJE)
 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
@@ -424,19 +421,19 @@ ENDIF ! HCHEMFILE
 !
 IF (CTURB /= 'NONE') THEN
   IF ( LHORELAX_TKE) THEN
-    ALLOCATE(XLBXTKEM(2*NRIMX+2,IJU,IKU))
-    ALLOCATE(XLBYTKEM(IIU,2*NRIMY+2,IKU))
+    ALLOCATE(XLBXTKEM(2*NRIMX+2*JPHEXT,IJU,IKU))
+    ALLOCATE(XLBYTKEM(IIU,2*NRIMY+2*JPHEXT,IKU))
   ELSE
-    ALLOCATE(XLBXTKEM(2,IJU,IKU))
-    ALLOCATE(XLBYTKEM(IIU,2,IKU))
+    ALLOCATE(XLBXTKEM(2*JPHEXT,IJU,IKU))
+    ALLOCATE(XLBYTKEM(IIU,2*JPHEXT,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,:)
+  ILBX=SIZE(XLBXTKEM,1)/2-JPHEXT     
+  XLBXTKEM(1:ILBX+JPHEXT,:,:)                  = XTKET(1:ILBX+JPHEXT,:,:)
+  XLBXTKEM(ILBX+JPHEXT+1:2*ILBX+2*JPHEXT,:,:)  = XTKET(IIE+1-ILBX:IIE+JPHEXT,:,:)
+  ILBY=SIZE(XLBYTKEM,2)/2-JPHEXT
+  XLBYTKEM(:,1:ILBY+JPHEXT,:)                  = XTKET(:,1:ILBY+JPHEXT,:)
+  XLBYTKEM(:,ILBY+JPHEXT+1:2*ILBY+2*JPHEXT,:)  = XTKET(:,IJE+1-ILBY:IJE+JPHEXT,:)
 ELSE
   ALLOCATE(XLBXTKEM(0,0,0))
   ALLOCATE(XLBYTKEM(0,0,0))
@@ -444,19 +441,19 @@ 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))
+    ALLOCATE(XLBXSVM(2*NRIMX+2*JPHEXT,IJU,IKU,NSV))
+    ALLOCATE(XLBYSVM(IIU,2*NRIMY+2*JPHEXT,IKU,NSV))
   ELSE
-    ALLOCATE(XLBXSVM(2,IJU,IKU,NSV))
-    ALLOCATE(XLBYSVM(IIU,2,IKU,NSV))
+    ALLOCATE(XLBXSVM(2*JPHEXT,IJU,IKU,NSV))
+    ALLOCATE(XLBYSVM(IIU,2*JPHEXT,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,:,:)
+  ILBX=SIZE(XLBXSVM,1)/2-JPHEXT     
+  XLBXSVM(1:ILBX+JPHEXT,:,:,:)                  = XSVT(1:ILBX+JPHEXT,:,:,:)
+  XLBXSVM(ILBX+JPHEXT+1:2*ILBX+2*JPHEXT,:,:,:)  = XSVT(IIE+1-ILBX:IIE+JPHEXT,:,:,:)
+  ILBY=SIZE(XLBYSVM,2)/2-JPHEXT
+  XLBYSVM(:,1:ILBY+JPHEXT,:,:)                  = XSVT(:,1:ILBY+JPHEXT,:,:)
+  XLBYSVM(:,ILBY+JPHEXT+1:2*ILBY+2*JPHEXT,:,:)  = XSVT(:,IJE+1-ILBY:IJE+JPHEXT,:,:)
 ELSE
   ALLOCATE(XLBXSVM(0,0,0,0))
   ALLOCATE(XLBYSVM(0,0,0,0))
index dc4140b..38743f5 100644 (file)
@@ -6,7 +6,6 @@
 !--------------- special set of characters for RCS information
 !-----------------------------------------------------------------
 ! $Source$ $Revision$
-! masdev4_7 BUG1 2007/06/15 17:47:27
 !-----------------------------------------------------------------
 !     ###################
       MODULE MODI_INI_SEG_n
@@ -161,6 +160,7 @@ END MODULE MODI_INI_SEG_n
 !!                       02/2012   add GFOREFIRE (Pialat/Tulet)
 !!                       05/2014   missing reading of IMASDEV before COUPLING
 !!                                 test (Escobar)
+!!   J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
index c6e9e1d..0d93684 100644 (file)
@@ -6,7 +6,6 @@
 !--------------- special set of characters for RCS information
 !-----------------------------------------------------------------
 ! $Source$ $Revision$
-! MASDEV4_7 spawn 2006/05/23 15:45:38
 !-----------------------------------------------------------------
 !#########################
 MODULE MODI_INI_SIZE_SPAWN
@@ -65,6 +64,7 @@ END MODULE MODI_INI_SIZE_SPAWN
 !!    -------------
 !!
 !!      Original     13/07/99
+!!   J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1
 !-------------------------------------------------------------------------------
 !
 !*       0.     DECLARATIONS
@@ -272,20 +272,20 @@ END IF
 !
 !*     1.5   Position of model 2 domain relative to model 1 
 !
-NXEND = NXOR + JPHEXT + NXSIZE
-NYEND = NYOR + JPHEXT + NYSIZE
+NXEND = NXOR + NXSIZE +2*JPHEXT -1
+NYEND = NYOR + NYSIZE +2*JPHEXT -1
 !
 !*     1.6  model 2 LBC   (caution: implicitely JPHEXT = 1)
 !
 CLBCX(:) = 'OPEN'
-IF (NXOR  == 1          .AND. NXEND    == DIM_MODEL(1)%NIMAX_ll+2) CLBCX(:) = HLBCX(:)
+IF (NXOR  == 1          .AND. NXEND    == DIM_MODEL(1)%NIMAX_ll+2*JPHEXT) CLBCX(:) = HLBCX(:)
 IF (NXOR  == 1          .AND. HLBCX(1) == 'WALL')     CLBCX(1) = 'WALL'
-IF (NXEND == DIM_MODEL(1)%NIMAX_ll+2 .AND. HLBCX(2) == 'WALL')     CLBCX(2) = 'WALL'
+IF (NXEND == DIM_MODEL(1)%NIMAX_ll+2*JPHEXT .AND. HLBCX(2) == 'WALL')     CLBCX(2) = 'WALL'
 !
 CLBCY(:) = 'OPEN'
-IF (NYOR  == 1          .AND. NYEND    == DIM_MODEL(1)%NJMAX_ll+2) CLBCY(:) = HLBCY(:)
+IF (NYOR  == 1          .AND. NYEND    == DIM_MODEL(1)%NJMAX_ll+2*JPHEXT) CLBCY(:) = HLBCY(:)
 IF (NYOR  == 1          .AND. HLBCY(1) == 'WALL')     CLBCY(1) = 'WALL'
-IF (NYEND == DIM_MODEL(1)%NJMAX_ll+2 .AND. HLBCY(2) == 'WALL')     CLBCY(2) = 'WALL'
+IF (NYEND == DIM_MODEL(1)%NJMAX_ll+2*JPHEXT .AND. HLBCY(2) == 'WALL')     CLBCY(2) = 'WALL'
 !
 !
 !*   2    CALL OF INITIALIZATION PARALLEL ROUTINES
index aeacf06..3a94236 100644 (file)
@@ -6,7 +6,6 @@
 !--------------- special set of characters for RCS information
 !-----------------------------------------------------------------
 ! $Source$ $Revision$
-! masdev4_7 BUG1 2007/06/15 17:47:27
 !-----------------------------------------------------------------
 !     #################
       MODULE MODI_INI_SIZE_n
@@ -100,6 +99,7 @@ END MODULE MODI_INI_SIZE_n
 !!             Oct. 10 2001 (I. Mallet)  allow namelists in different orders
 !!             Jan. 2004   (V. Masson)  externalization of surface
 !!             June 2006   (D. Gazen) _n: no more read of updated var. 
+!!             J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1
 !!
 !-------------------------------------------------------------------------------
 !
@@ -151,6 +151,7 @@ INTEGER             :: IGRID   ! C-grid indicator in LFIFM file
 INTEGER             :: ILENCH  ! Length of comment string in LFIFM file
 CHARACTER (LEN=100) :: YCOMMENT! comment string in LFIFM file
 CHARACTER (LEN=16)  :: YRECFM  ! Name of the desired field in LFIFM file
+INTEGER             :: IJPHEXT
 !
 !-------------------------------------------------------------------------------
 !
@@ -226,6 +227,22 @@ YRECFM='KMAX'
 YDIR='--'
 CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,NKMAX,IGRID,ILENCH,YCOMMENT,IRESP)
 !
+YRECFM='JPHEXT'
+YDIR='--'
+CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,IJPHEXT,IGRID,ILENCH,YCOMMENT,IRESP)
+!
+IF ( IJPHEXT .NE. JPHEXT ) THEN
+   WRITE(ILUOUT,FMT=*) ' INI_SIZE_N : JPHEXT in namelist NAM_CONF ( or default or .des value )&
+        & JPHEXT=',JPHEXT
+   WRITE(ILUOUT,FMT=*)' different from LFI file=',HINIFILE ,' value JPHEXT=',IJPHEXT
+   WRITE(ILUOUT,FMT=*) '-> JOB ABORTED'
+   CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP)
+   CALL ABORT   
+   STOP  
+   !WRITE(NLUOUT,FMT=*) ' JPHEXT HAS BEEN SET TO ', IJPHEXT
+   !IJPHEXT = JPHEXT
+END IF
+!
 IF (KMI == 1) THEN   ! special initialisation for the outer model
   NDXRATIO_ALL(KMI) = 1
   NDYRATIO_ALL(KMI) =  1
@@ -249,8 +266,8 @@ IF (LEN_TRIM(CDAD_NAME(KMI))>0) THEN
   CALL FMREAD(HINIFILE,'DYRATIO',HLUOUT,YDIR,NDYRATIO_ALL(KMI),IGRID,ILENCH,YCOMMENT,IRESP)
   CALL FMREAD(HINIFILE,'XOR',HLUOUT,YDIR,NXOR_ALL(KMI),IGRID,ILENCH,YCOMMENT,IRESP)
   CALL FMREAD(HINIFILE,'YOR',HLUOUT,YDIR,NYOR_ALL(KMI),IGRID,ILENCH,YCOMMENT,IRESP)
-  NXEND_ALL(KMI)=NXOR_ALL(KMI)+NIMAX_ll/NDXRATIO_ALL(KMI)+JPHEXT
-  NYEND_ALL(KMI)=NYOR_ALL(KMI)+NJMAX_ll/NDYRATIO_ALL(KMI)+JPHEXT
+  NXEND_ALL(KMI)=NXOR_ALL(KMI)-1 + NIMAX_ll/NDXRATIO_ALL(KMI) +2*JPHEXT
+  NYEND_ALL(KMI)=NYOR_ALL(KMI)-1 + NJMAX_ll/NDYRATIO_ALL(KMI) +2*JPHEXT
 ELSE
   NDXRATIO_ALL(KMI)=1
   NDYRATIO_ALL(KMI)=1
index ac69e12..f2a63d2 100644 (file)
@@ -6,7 +6,6 @@
 !--------------- special set of characters for RCS information
 !-----------------------------------------------------------------
 ! $Source$ $Revision$
-! MASDEV4_7 init 2006/05/18 13:07:25
 !-----------------------------------------------------------------
 !     #########################
       MODULE MODI_INI_SPAWN_LS_n
@@ -139,6 +138,7 @@ END MODULE MODI_INI_SPAWN_LS_n
 !!                   22/01/98  ( J. Stein ) add the vertical interpolation
 !!                   09/07/98  ( J. Stein ) bug in the storage of the interp
 !!                                          coeff for U
+!!      J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 
 !------------------------------------------------------------------------------
 !
 !*      0.   DECLARATIONS
@@ -160,6 +160,8 @@ USE MODI_COEF_VER_INTERP_LIN
 USE MODI_VER_INTERP_LIN
 USE MODI_VERT_COORD
 !
+USE MODE_MPPDB
+!
 IMPLICIT NONE
 !
 !*       0.1   declarations of arguments
@@ -236,10 +238,10 @@ REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZTZSMT,ZZSMT
 CALL GOTO_MODEL(KDAD)
 !
 CALL GET_INDICE_ll (IIB,IJB,IIE,IJE)
-IIB=IIB-1
-IIE=IIE+1
-IJB=IJB-1
-IJE=IJE+1
+IIB=IIB-JPHEXT
+IIE=IIE+JPHEXT
+IJB=IJB-JPHEXT
+IJE=IJE+JPHEXT
 !
 !*      1 GATHER LS FIELD FOR THE CHILD MODEL KMI
 !
@@ -320,6 +322,7 @@ IF ( GVERT_INTERP ) THEN
                  PBFX1,PBFX2,PBFX3,PBFX4,PBFY1,PBFY2,PBFY3,PBFY4, &
                  2,2,IDIMX-1,IDIMY-1,KDXRATIO,KDYRATIO,1,         &
                  HLBCX,HLBCY,ZTZS,ZZSLS(IIB:IIE,IJB:IJE,:)        )
+  CALL MPPDB_CHECK3D(ZZSLS,"INI_SPAWN_LS::ZZSLS",PRECISION)
   !
   ZZSMTLS=0.
   CALL BIKHARDT (PBMX1,PBMX2,PBMX3,PBMX4,PBMY1,PBMY2,PBMY3,PBMY4, &
@@ -560,6 +563,8 @@ CALL BIKHARDT (PBMX1,PBMX2,PBMX3,PBMX4,PBMY1,PBMY2,PBMY3,PBMY4, &
                PBFX1,PBFX2,PBFX3,PBFX4,PBFY1,PBFY2,PBFY3,PBFY4, &
                2,2,IDIMX-1,IDIMY-1,KDXRATIO,KDYRATIO,2,         &
                HLBCX,HLBCY,ZTLSUM,PLSUM(IIB:IIE,IJB:IJE,:))
+CALL MPPDB_CHECK3D(PLSUM,"INI_SPAWN_LS::PLSUM",PRECISION)
+
 !
 IF ( SIZE(PLSUS,1) /= 0 ) THEN
   !
index dd1806a..b5c2faa 100644 (file)
@@ -6,9 +6,7 @@
 !--------------- special set of characters for RCS information
 !-----------------------------------------------------------------
 ! $Source$ $Revision$
-! MASDEV4_7 convert 2006/05/18 13:07:25
 !-----------------------------------------------------------------
-!     ######spl
 MODULE MODI_INTERP3D
 !#################################
 !
@@ -59,6 +57,7 @@ END MODULE MODI_INTERP3D
 !!    MODIFICATIONS
 !!    -------------
 !!      Original    21/03/97
+!!   J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -94,13 +93,10 @@ INTEGER :: IKU
 !
 !*         1.    
 !                 ------------
+CALL GET_INDICE_ll (IIB,IJB,IIE,IJE)
 IPU=SIZE(PFIELDAP,3)
 IKB=1 +JPVEXT
 IKU=SIZE(XZHAT)
-IIB=JPHEXT+1
-IIE=NIMAX+JPHEXT
-IJB=JPHEXT+1
-IJE=NJMAX+JPHEXT
 ZDIXEPS=10.*EPSILON(1.)
 !
 SELECT CASE (KGRID)
index bf44094..670113a 100644 (file)
@@ -74,6 +74,7 @@ END MODULE MODI_ION_ATTACH_ELEC
 !!    -------------
 !!      Original    2010
 !!      Modifications:
+!!   J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 
 !!
 !-------------------------------------------------------------------------------
 !
@@ -91,6 +92,7 @@ USE MODD_RAIN_ICE_PARAM
 USE MODD_NSV, ONLY : NSV_ELECBEG, NSV_ELEC
 USE MODD_BUDGET, ONLY : LBU_RSV
 USE MODD_REF,    ONLY : XTHVREFZ
+USE MODE_ll
 !
 USE MODI_BUDGET
 USE MODI_MOMG
@@ -149,10 +151,7 @@ REAL    :: ZCOMB         ! Recombination
 ZCQD = 4 * XPI * XEPSILON * XBOLTZ / XECHARGE
 ZCDIF = XBOLTZ /XECHARGE
 !
-IIB = 1 + JPHEXT
-IIE = SIZE(PTHT,1) - JPHEXT
-IJB = 1 + JPHEXT
-IJE = SIZE(PTHT,2) - JPHEXT
+CALL GET_INDICE_ll (IIB,IJB,IIE,IJE)
 IKB = 1 + JPVEXT
 IKE = SIZE(PTHT,3) - JPVEXT
 !
index 8915f9f..0c24545 100644 (file)
@@ -54,6 +54,7 @@ END MODULE MODI_ION_BOUND4DRIFT
 !!    AUTHOR
 !!    ------
 !!          M. Chong     12/2010
+!!   J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 
 !!     
 !-------------------------------------------------------------------------------
 !
@@ -89,10 +90,7 @@ INTEGER :: IJB, IJE  ! index of first and last inner mass points along y
 !              ----------------------------------------------
 !
 ! beginning and end indexes of the physical subdomain
-IIB = 1 + JPHEXT
-IIE = SIZE(PEFIELDU,1) - JPHEXT
-IJB = 1 + JPHEXT
-IJE = SIZE(PEFIELDU,2) - JPHEXT
+CALL GET_INDICE_ll (IIB,IJB,IIE,IJE)
 !
 !-------------------------------------------------------------------------------
 !
index 040bcd9..438dcb8 100644 (file)
@@ -40,6 +40,7 @@ END MODULE MODI_ION_DRIFT
 !!    AUTHOR
 !!    ------
 !!          M. Chong      01/2010
+!!   J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 
 !!
 !-------------------------------------------------------------------------------
 !
@@ -118,10 +119,7 @@ CALL MYPROC_ELEC_ll (IPROC)
 !              ----------------------------------------------
 !
 ! beginning and end indexes of the physical subdomain
-IIB = 1 + JPHEXT
-IIE = SIZE(PSVT,1) - JPHEXT
-IJB = 1 + JPHEXT
-IJE = SIZE(PSVT,2) - JPHEXT
+CALL GET_INDICE_ll (IIB,IJB,IIE,IJE)
 IKB = 1 + JPVEXT
 IKE = SIZE(PSVT,3) - JPVEXT
 IKU = SIZE(PSVT,3)
index 485f0d4..ce3bddc 100644 (file)
@@ -6,7 +6,6 @@
 !--------------- special set of characters for RCS information
 !-----------------------------------------------------------------
 ! $Source$ $Revision$
-! MASDEV4_7 microph 2007/03/23 11:52:41
 !-----------------------------------------------------------------
 !     ##########################
       MODULE MODI_KHKO_NOTADJUST
@@ -92,6 +91,7 @@ END MODULE MODI_KHKO_NOTADJUST
 !!
 !!    MODIFICATIONS
 !!    -------------
+!!   J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -192,10 +192,7 @@ INTEGER :: JK            ! For loop
 !               -------------
 !
 CALL FMLOOK_ll(HLUOUT,HLUOUT,ILUOUT,IRESP)
-IIB=1+JPHEXT
-IIE=SIZE(PZZ,1) - JPHEXT
-IJB=1+JPHEXT
-IJE=SIZE(PZZ,2) - JPHEXT
+CALL GET_INDICE_ll (IIB,IJB,IIE,IJE)
 IKB=1+JPVEXT
 IKE=SIZE(PZZ,3) - JPVEXT
 !
index 32d0bd4..eb64a5f 100644 (file)
@@ -83,6 +83,7 @@ END MODULE MODI_LIDAR
 !!      Original      04/10/07
 !!      JP Chaboureau 12/02/10 change dust refraction index
 !!                             add inputs (lidar charact. and cloud fraction)
+!!   J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -104,6 +105,7 @@ USE MODD_ICE_C1R3_DESCR,  ONLY : XLBEXI,                      &
 !
 USE MODI_BHMIE_WATER    ! Gamma or mono dispersed size distributions
 USE MODI_BHMIE_AEROSOLS ! Lognormal or mono dispersed size distributions
+USE MODE_ll
 !
 IMPLICIT NONE
 !
@@ -203,10 +205,7 @@ REAL                :: ZLBEXR
 !*       1.     COMPUTE THE LOOP BOUNDS
 !              -----------------------
 !
-IIB=1+JPHEXT
-IIE=SIZE(PRHO,1) - JPHEXT
-IJB=1+JPHEXT
-IJE=SIZE(PRHO,2) - JPHEXT
+CALL GET_INDICE_ll (IIB,IJB,IIE,IJE)
 IKB=1+JPVEXT
 IKE=SIZE(PRHO,3) - JPVEXT
 !
index cc9942d..8346394 100644 (file)
@@ -6,7 +6,6 @@
 !--------------- special set of characters for RCS information
 !-----------------------------------------------------------------
 ! $Source$ $Revision$
-! masdev4_7 BUG1 2007/06/22 10:53:31
 !-----------------------------------------------------------------
 !     ##############
       PROGRAM MESONH
@@ -77,6 +76,7 @@
 !!                                           remplaced by infinite loop
 !!      J.Escobar                 19/03/2008  rename INIT to INIT_MNH --> grib problem
 !!      J.Escobar                  6/11/2014  remove test on LCHECK otherwise never call MPPDB_INIT
+!!      J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1
 !-------------------------------------------------------------------------------
 !
 !*       0.     DECLARATIONS
@@ -166,7 +166,6 @@ END DO
 !
 IF (LCHECK) THEN
   CALL MPPDB_BARRIER()
-  CALL MPPDB_BARRIER()
 ELSE
   CALL END_PARA_ll(IINFO_ll)
 END IF
index f92124d..3743e52 100644 (file)
@@ -47,6 +47,7 @@ END MODULE MODI_MNHOPEN_AUX_IO_SURF
 !!    MODIFICATIONS
 !!    -------------
 !!      Original    09/2003 
+!!   J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -91,6 +92,7 @@ INTEGER           :: IJMAX          ! number of points in Y direction
 !
 INTEGER           :: ILU            ! 1D physical dimension of XCOVER
 REAL, DIMENSION(:),   ALLOCATABLE :: ZFULL  ! total cover
+INTEGER           :: IJPHEXT
 !-------------------------------------------------------------------------------
 !-------------------------------------------------------------------------------
 ! WARNING : this routine works only on ONE processor jobs
@@ -129,6 +131,17 @@ COUTFILE = HFILE
 ! 
 CALL FMREAD(HFILE,'IMAX',COUT,'--',IIMAX,IGRID,ILENCH,YCOMMENT,IRESP)
 CALL FMREAD(HFILE,'JMAX',COUT,'--',IJMAX,IGRID,ILENCH,YCOMMENT,IRESP)
+CALL FMREAD(HFILE,'JPHEXT',COUT,'--',IJPHEXT,IGRID,ILENCH,YCOMMENT,IRESP)
+IF ( IJPHEXT .NE. JPHEXT ) THEN
+   WRITE(NLUOUT,FMT=*) ' MNHOPEN_AUX_IO : JPHEXT in PRE_PGD1.nam/NAM_CONF_PGD ( or default value )&
+        JPHEXT=',JPHEXT
+   WRITE(NLUOUT,FMT=*) ' different from PGD files=',HFILE ,' value JPHEXT=',IJPHEXT
+   WRITE(NLUOUT,FMT=*) '-> JOB ABORTED'
+   CALL CLOSE_ll(COUT,IOSTAT=IRESP)
+   CALL ABORT  
+   STOP   
+END IF
+!
 NIU_ALL = (IIMAX+2*JPHEXT)
 NJU_ALL = (IJMAX+2*JPHEXT)
 NIB_ALL = 1 + JPHEXT
index bd2bd2a..24c36a3 100644 (file)
@@ -6,7 +6,6 @@
 !--------------- special set of characters for RCS information
 !-----------------------------------------------------------------
 ! $Source$ $Revision$
-! masdev4_7 BUG1 2007/06/15 17:47:27
 !-----------------------------------------------------------------
 !     #################
       MODULE MODD_CONF
@@ -50,6 +49,7 @@
 !!      P. Jabouille                  18/04/02   add NBUGFIX and CBIBUSER
 !!      C. Lac                        01/04/14   add LCHECK     
 !!      G. Tanguy                     01/04/14   add LCOUPLING
+!!      J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 
 !!
 !-------------------------------------------------------------------------------
 !
@@ -109,6 +109,8 @@ CHARACTER(LEN=6),SAVE :: CPROGRAM ! CPROGRAM is the program currently running:
 !
 INTEGER,SAVE      :: NHALO        ! Size of the halo for parallel distribution
 !
+!INTEGER,SAVE      :: JPHEXT = 1     ! Horizontal External points number
+!
 CHARACTER (LEN=10),SAVE :: CSPLIT ! kind of domain splitting for parallel distribution
                                   !  "BSPLITTING","XSPLITTING","YSPLITTING"
 LOGICAL,SAVE      :: LLG         ! Logical to use lagrangian variables
index 18d193a..4eee850 100644 (file)
@@ -6,7 +6,6 @@
 !--------------- special set of characters for RCS information
 !-----------------------------------------------------------------
 ! $Source$ $Revision$
-! masdev4_7 BUG1 2007/06/15 17:47:18
 !-----------------------------------------------------------------
 !     ######################
       MODULE MODD_PARAMETERS
@@ -42,6 +41,7 @@
 !!      Modification 22/01/01 (D.Gazen) change JPSVMAX from 100 to 200
 !!                                         and JPBUMAX from 120 to 250
 !!      Modification 17/05/04 (P.Jabouille) add JPOUTMAX
+!!      J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1
 !-------------------------------------------------------------------------------
 !
 !*       0.   DECLARATIONS
 !
 IMPLICIT NONE
 !
-INTEGER, PARAMETER :: JPHEXT = 1      ! Horizontal External points number
+!JUAN CYCLK
+!INTEGER, PARAMETER :: JPHEXT = 3     ! Horizontal External points number
+INTEGER,SAVE      :: JPHEXT = 1     ! Horizontal External points number
+!
+!JUAN CYCLK
 INTEGER, PARAMETER :: JPVEXT = 1      ! Vertical External points number
 INTEGER, PARAMETER :: JPVEXT_TURB = 1      ! Vertical External points number
 INTEGER, PARAMETER :: JPMODELMAX = 8  ! Maximum allowed number of nested models 
index c76afc4..afd145a 100644 (file)
@@ -6,7 +6,6 @@
 !--------------- special set of characters for RCS information
 !-----------------------------------------------------------------
 ! $Source$ $Revision$
-! masdev4_7 BUG1 2007/06/29 16:49:15
 !-----------------------------------------------------------------
 !     ####################
       MODULE MODE_GRIDCART
@@ -37,6 +36,7 @@
 !!    MODIFICATIONS
 !!    -------------
 !!      Original    06/05/94 
+!!   J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 
 !--------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -164,12 +164,9 @@ CALL FMLOOK_ll(HLUOUT,HLUOUT,ILUOUT,IRESP)
 !
 IIU = UBOUND(PXHAT,1)         
 IJU = UBOUND(PYHAT,1)        
-IKU = UBOUND(PZHAT,1)          
-IIE = IIU-JPHEXT
-IJE = IJU-JPHEXT
+IKU = UBOUND(PZHAT,1)
+CALL GET_INDICE_ll (IIB,IJB,IIE,IJE)
 IKE = IKU-JPVEXT
-IIB = 1+JPHEXT
-IJB = 1+JPHEXT
 IKB = 1+JPVEXT
 NULLIFY(TZHALO1_ll)
 !
index 8205b8c..6c16a7a 100644 (file)
@@ -41,6 +41,7 @@
 !!    MODIFICATIONS
 !!    -------------
 !!      Original    29/03/04
+!!   J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1
 !!
 !-----------------------------------------------------------------
 USE MODD_RADAR, ONLY: NBRAD,NBELEV,NBAZIM,NBSTEPMAX,NPTS_H,NPTS_V
@@ -70,6 +71,7 @@ CONTAINS
 
     USE MODD_PARAMETERS
     USE MODD_GRID_n
+    USE MODE_ll
 !
     IMPLICIT NONE
 !
@@ -102,11 +104,8 @@ CONTAINS
     IIU=SIZE(PZM,1)
     IJU=SIZE(PZM,2)
     IKU=SIZE(PZM,3)
-    IIB = JPHEXT + 1
-    IJB = JPHEXT + 1
+    CALL GET_INDICE_ll (IIB,IJB,IIE,IJE)
     IKB = JPVEXT + 1
-    IIE = IIU - JPHEXT
-    IJE = IJU - JPHEXT
     IKE = IKU - JPVEXT
 ! 
     
@@ -180,6 +179,7 @@ CONTAINS
 
     USE MODD_PARAMETERS
     USE MODD_GRID_n
+    USE MODE_ll
 !
     IMPLICIT NONE
 !
@@ -219,11 +219,8 @@ CONTAINS
     IIU=SIZE(PZM,1)
     IJU=SIZE(PZM,2)
     IKU=SIZE(PZM,3)
-    IIB = JPHEXT + 1
-    IJB = JPHEXT + 1
+    CALL GET_INDICE_ll (IIB,IJB,IIE,IJE)
     IKB = JPVEXT + 1
-    IIE = IIU - JPHEXT
-    IJE = IJU - JPHEXT
     IKE = IKU - JPVEXT
 ! 
     DO JAZ=1, INBAZIM
index 6f2dca2..59261da 100644 (file)
@@ -231,6 +231,7 @@ END MODULE MODI_MODEL_n
 !!      J.Escobar 20/04/2015: missing UPDATE_HALO before UPDATE_HALO2
 !!              July, 2015 (O.Nuissier/F.Duffourg) Add microphysics diagnostic for
 !!                                      aircraft, ballon and profiler
+!!      J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1
 !!-------------------------------------------------------------------------------
 !
 !*       0.     DECLARATIONS
@@ -834,7 +835,9 @@ ZTIME1=ZTIME2
 IF( LLG .AND. IMI==1 ) CALL SETLB_LG
 !
 IF (CCONF == "START" .OR. (CCONF == "RESTA" .AND. KTCOUNT /= 1 )) THEN
-        CALL BOUNDARIES (                                                   &
+CALL MPPDB_CHECK3DM("before BOUNDARIES:XUT, XVT, XWT, XTHT, XTKET",PRECISION,&
+                   &  XUT, XVT, XWT, XTHT, XTKET)
+CALL BOUNDARIES (                                                   &
             XTSTEP,CLBCX,CLBCY,NRR,NSV,KTCOUNT,                     &
             XLBXUM,XLBXVM,XLBXWM,XLBXTHM,XLBXTKEM,XLBXRM,XLBXSVM,   &
             XLBYUM,XLBYVM,XLBYWM,XLBYTHM,XLBYTKEM,XLBYRM,XLBYSVM,   &
@@ -842,7 +845,9 @@ IF (CCONF == "START" .OR. (CCONF == "RESTA" .AND. KTCOUNT /= 1 )) THEN
             XLBYUS,XLBYVS,XLBYWS,XLBYTHS,XLBYTKES,XLBYRS,XLBYSVS,   &
             XRHODJ,                                                 &
             XUT, XVT, XWT, XTHT, XTKET, XRT, XSVT, XSRCT            )
-END IF    
+CALL MPPDB_CHECK3DM("after  BOUNDARIES:XUT, XVT, XWT, XTHT, XTKET",PRECISION,&
+                   &  XUT, XVT, XWT, XTHT, XTKET)
+END IF
 !
 CALL SECOND_MNH2(ZTIME2)
 !
@@ -1445,6 +1450,8 @@ XTIME_LES_BU_PROCESS = 0.
 !
 !
 !
+CALL MPPDB_CHECK3DM("before ADVEC_METSV:XU/V/W/TH/TKE/T,XRHODJ",PRECISION,&
+                   &  XUT, XVT, XWT, XTHT, XTKET,XRHODJ)
  CALL ADVECTION_METSV ( CLUOUT, YFMFILE, GCLOSE_OUT,CUVW_ADV_SCHEME, &
                  CMET_ADV_SCHEME, CSV_ADV_SCHEME, NSPLIT,            &
                  LSPLIT_CFL, XSPLIT_CFL, LCFL_WRIT,                  &
@@ -1453,6 +1460,8 @@ XTIME_LES_BU_PROCESS = 0.
                  XTHVREF, XRHODJ, XDXX, XDYY, XDZZ, XDZX, XDZY,      &
                  XRTHS, XRRS, XRTKES, XRSVS,                         &
                  XRTHS_CLD, XRRS_CLD, XRSVS_CLD, XRTKEMS             )
+CALL MPPDB_CHECK3DM("after  ADVEC_METSV:XU/V/W/TH/TKE/T,XRHODJ ",PRECISION,&
+                   &  XUT, XVT, XWT, XTHT, XTKET,XRHODJ)
 !
 CALL SECOND_MNH2(ZTIME2)
 !
@@ -1482,6 +1491,9 @@ ZTIME1 = ZTIME2
 XTIME_BU_PROCESS = 0.
 XTIME_LES_BU_PROCESS = 0.
 !
+!MPPDB_CHECK_LB=.TRUE.
+CALL MPPDB_CHECK3DM("before ADVEC_UVW:XU/V/W/TH/TKE/T,XRHODJ,XRU/V/Ws",PRECISION,&
+                   &  XUT, XVT, XWT, XTHT, XTKET,XRHODJ,XRUS,XRVS,XRWS)
 IF (CUVW_ADV_SCHEME(1:3)=='CEN') THEN
   IF (CUVW_ADV_SCHEME=='CEN4TH') THEN
     NULLIFY(TZFIELDC_ll)
@@ -1518,6 +1530,9 @@ ELSE
                  XRUS_PRES, XRVS_PRES, XRWS_PRES                     )
 END IF
 !
+CALL MPPDB_CHECK3DM("after  ADVEC_UVW:XU/V/W/TH/TKE/T,XRHODJ,XRU/V/Ws",PRECISION,&
+                   &  XUT, XVT, XWT, XTHT, XTKET,XRHODJ,XRUS,XRVS,XRWS)
+!MPPDB_CHECK_LB=.FALSE.
 !
 CALL SECOND_MNH2(ZTIME2)
 !
index 3199965..50298fa 100644 (file)
@@ -6,7 +6,6 @@
 !--------------- special set of characters for RCS information
 !-----------------------------------------------------------------
 ! $Source$ $Revision$
-! MASDEV4_7 modn 2006/06/23 10:47:05
 !-----------------------------------------------------------------
 !     ################
       MODULE MODN_CONF
 !!      P Jabouille (21/07/99)     add NHALO and CSPLIT
 !!      P Jabouille (26/06/01)     lagrangian variable management
 !!      V Masson    (03/01/05)     suppress L1D,L2D,LPACK
+!!      J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 
 !-------------------------------------------------------------------------------
 !
 !*       0.   DECLARATIONS
 !             ------------
 !
 USE MODD_CONF
+USE MODD_PARAMETERS, ONLY : JPHEXT
 !
 IMPLICIT NONE
 !
 NAMELIST/NAM_CONF/CCONF,LFLAT,NMODEL,CEQNSYS,NVERB,CEXP,CSEG,LFORCING, &
-                  NHALO,CSPLIT,LLG,LINIT_LG,CINIT_LG,LNOMIXLG,LCHECK
+                  NHALO,CSPLIT,LLG,LINIT_LG,CINIT_LG,LNOMIXLG,LCHECK, &
+                  JPHEXT
 !
 END MODULE MODN_CONF
index 3632d5c..7dc3b66 100644 (file)
@@ -213,6 +213,7 @@ END MODULE MODI_NUM_DIFF
 !!                 05/06    (C.Lac)        Remove EPS
 !!                 05/07    (C.Lac)        Separation between variables
 !!                 07/09    (C.Lac)        Correction on budget calls
+!!     J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 
 !!
 !-------------------------------------------------------------------------------
 !
@@ -305,52 +306,52 @@ GTKEALLOC = SIZE(PTKEM,1) /= 0
 !
 IF (ONUMDIFU) THEN
  IGRID = 2
- IF(NHALO == 1) THEN
+!!$ IF(NHALO == 1) THEN
   TZHALO2LIST => TPHALO2LIST
   TZHALO2LSLIST => TPHALO2LSLIST
   CALL NUM_DIFF_ALGO(PRUS, PUM, IGRID, MXM(PRHODJ), PDK2U, PDK4U, &
                      PLSUM,TZHALO2LIST%HALO2, TZHALO2LSLIST%HALO2)
- ELSE
-  CALL NUM_DIFF_ALGO(PRUS, PUM, IGRID, MXM(PRHODJ), PDK2U, PDK4U, PLSUM )
- ENDIF
+!!$ ELSE
+!!$  CALL NUM_DIFF_ALGO(PRUS, PUM, IGRID, MXM(PRHODJ), PDK2U, PDK4U, PLSUM )
+!!$ ENDIF
 !
  IGRID = 3
- IF(NHALO == 1) THEN
+!!$ IF(NHALO == 1) THEN
   TZHALO2LIST => TZHALO2LIST%NEXT
   TZHALO2LSLIST => TZHALO2LSLIST%NEXT
   CALL NUM_DIFF_ALGO(PRVS, PVM, IGRID, MYM(PRHODJ), PDK2U, PDK4U, &
                      PLSVM, TZHALO2LIST%HALO2, TZHALO2LSLIST%HALO2)
- ELSE
-  CALL NUM_DIFF_ALGO(PRVS, PVM, IGRID, MYM(PRHODJ), PDK2U, PDK4U, PLSVM )
- ENDIF
+!!$ ELSE
+!!$  CALL NUM_DIFF_ALGO(PRVS, PVM, IGRID, MYM(PRHODJ), PDK2U, PDK4U, PLSVM )
+!!$ ENDIF
 !
  IGRID = 4
 !
- IF(NHALO == 1) THEN
+!!$ IF(NHALO == 1) THEN
   TZHALO2LIST => TZHALO2LIST%NEXT
   TZHALO2LSLIST => TZHALO2LSLIST%NEXT
   CALL NUM_DIFF_ALGO(PRWS, PWM, IGRID, MZM(1,IKU,1,PRHODJ), PDK2U, PDK4U, &
                      PLSWM, TZHALO2LIST%HALO2, TZHALO2LSLIST%HALO2)
- ELSE
-  CALL NUM_DIFF_ALGO(PRWS, PWM, IGRID, MZM(1,IKU,1,PRHODJ), PDK2U, PDK4U, PLSWM )
- ENDIF
+!!$ ELSE
+!!$  CALL NUM_DIFF_ALGO(PRWS, PWM, IGRID, MZM(1,IKU,1,PRHODJ), PDK2U, PDK4U, PLSWM )
+!!$ ENDIF
 ENDIF
 !
 IF (ONUMDIFTH) THEN
  IGRID = 1
 !
- IF(NHALO == 1) THEN
+!!$ IF(NHALO == 1) THEN
   TZHALO2LIST => TZHALO2LIST%NEXT
   TZHALO2LSLIST => TZHALO2LSLIST%NEXT
   IF (OZDIFFU) THEN   ! call z-diffusion for potential temperature
    CALL NUM_DIFF_ALGO_Z(PRTHS, PTHM, IGRID, PRHODJ,            &
                          PDK2TH, PDK4TH, PLSTHM,               &
                          TZHALO2LIST%HALO2, TZHALO2LSLIST%HALO2)
-  ELSE
-   CALL NUM_DIFF_ALGO(PRTHS, PTHM, IGRID, PRHODJ,              &
-                      PDK2TH, PDK4TH, PLSTHM,                  &
-                     TZHALO2LIST%HALO2, TZHALO2LSLIST%HALO2)
-  ENDIF
+!!$  ELSE
+!!$   CALL NUM_DIFF_ALGO(PRTHS, PTHM, IGRID, PRHODJ,              &
+!!$                      PDK2TH, PDK4TH, PLSTHM,                  &
+!!$                     TZHALO2LIST%HALO2, TZHALO2LSLIST%HALO2)
+!!$  ENDIF
  ELSE
   IF (OZDIFFU) THEN   ! call z-diffusion for potential temperature
     CALL NUM_DIFF_ALGO_Z(PRTHS, PTHM, IGRID, PRHODJ, &
@@ -362,31 +363,31 @@ IF (ONUMDIFTH) THEN
  ENDIF
 !
  IF ( GTKEALLOC ) THEN
-  IF(NHALO == 1) THEN
+!!$  IF(NHALO == 1) THEN
     TZHALO2LIST => TZHALO2LIST%NEXT
     CALL NUM_DIFF_ALGO(PRTKES, PTKEM, IGRID, PRHODJ, &
                        PDK2TH, PDK4TH, TPHALO2=TZHALO2LIST%HALO2)
-  ELSE
-    CALL NUM_DIFF_ALGO(PRTKES, PTKEM, IGRID, PRHODJ, PDK2TH, PDK4TH)
-  ENDIF
+!!$  ELSE
+!!$    CALL NUM_DIFF_ALGO(PRTKES, PTKEM, IGRID, PRHODJ, PDK2TH, PDK4TH)
+!!$  ENDIF
  ENDIF
 !
 
 ! Case with KRR moist variables
 !
  IF(KRR >= 1) THEN
-  IF(NHALO == 1) THEN
+!!$  IF(NHALO == 1) THEN
     TZHALO2LIST => TZHALO2LIST%NEXT
     TZHALO2LSLIST => TZHALO2LSLIST%NEXT
     IF (OZDIFFU) THEN   ! call z-diffusion for wv mixing ratio
       CALL NUM_DIFF_ALGO_Z(PRRS(:,:,:,1), PRM(:,:,:,1), IGRID, PRHODJ, &
                            PDK2TH, PDK4TH,                             &
                            PLSRVM, TZHALO2LIST%HALO2, TZHALO2LSLIST%HALO2)
-    ELSE
-      CALL NUM_DIFF_ALGO(PRRS(:,:,:,1), PRM(:,:,:,1), IGRID, PRHODJ, & 
-                         PDK2TH, PDK4TH, PLSRVM,                     &
-                         TZHALO2LIST%HALO2, TZHALO2LSLIST%HALO2)
-    ENDIF
+!!$    ELSE
+!!$      CALL NUM_DIFF_ALGO(PRRS(:,:,:,1), PRM(:,:,:,1), IGRID, PRHODJ, & 
+!!$                         PDK2TH, PDK4TH, PLSRVM,                     &
+!!$                         TZHALO2LIST%HALO2, TZHALO2LSLIST%HALO2)
+!!$    ENDIF
   ELSE
     IF (OZDIFFU) THEN   ! call z-diffusion for wv mixing ratio
       CALL NUM_DIFF_ALGO_Z(PRRS(:,:,:,1), PRM(:,:,:,1), IGRID, PRHODJ, &
@@ -403,14 +404,14 @@ IF (ONUMDIFTH) THEN
 ! This might be added later (is CLW stored in JRR = 2?)
 !
  DO JRR=2, KRR
-  IF(NHALO == 1) THEN 
+!!$  IF(NHALO == 1) THEN 
     TZHALO2LIST => TZHALO2LIST%NEXT
     CALL NUM_DIFF_ALGO(PRRS(:,:,:,JRR), PRM(:,:,:,JRR), IGRID, PRHODJ, &
                        PDK2TH, PDK4TH, TPHALO2=TZHALO2LIST%HALO2)
-  ELSE
-    CALL NUM_DIFF_ALGO(PRRS(:,:,:,JRR), PRM(:,:,:,JRR), IGRID, PRHODJ, &
-                       PDK2TH, PDK4TH )
-  ENDIF
+!!$  ELSE
+!!$    CALL NUM_DIFF_ALGO(PRRS(:,:,:,JRR), PRM(:,:,:,JRR), IGRID, PRHODJ, &
+!!$                       PDK2TH, PDK4TH )
+!!$  ENDIF
  ENDDO
 !
 ENDIF
@@ -418,14 +419,14 @@ ENDIF
 !
 IF (ONUMDIFSV) THEN
  DO JSV=1,KSV
-  IF(NHALO == 1) THEN
+!!$  IF(NHALO == 1) THEN
     TZHALO2LIST => TZHALO2LIST%NEXT
     CALL NUM_DIFF_ALGO(PRSVS(:,:,:,JSV), PSVM(:,:,:,JSV), IGRID, PRHODJ,&
                        PDK2SV, PDK4SV, TPHALO2=TZHALO2LIST%HALO2)
-  ELSE
-    CALL NUM_DIFF_ALGO(PRSVS(:,:,:,JSV), PSVM(:,:,:,JSV), IGRID, PRHODJ, &
-                       PDK2SV, PDK4SV )
-  ENDIF
+!!$  ELSE
+!!$    CALL NUM_DIFF_ALGO(PRSVS(:,:,:,JSV), PSVM(:,:,:,JSV), IGRID, PRHODJ, &
+!!$                       PDK2SV, PDK4SV )
+!!$  ENDIF
  ENDDO
 END IF
 !
@@ -586,28 +587,28 @@ SELECT CASE ( HLBCX(1) ) ! X direction LBC type: (1) for left side
 !
 CASE ('CYCL')          ! In that case one must have HLBCX(1) == HLBCX(2)
 !
-  IF(NHALO == 1) THEN
+!!$  IF(NHALO == 1) THEN
     IW=IIB+1
     IE=IIE-1
-  ELSE
-    IW=IIB
-    IE=IIE
-  END IF  
+!!$  ELSE
+!!$    IW=IIB
+!!$    IE=IIE
+!!$  END IF  
 !
 
 
 IF (PRESENT(PLSFIELD)) THEN
   ZPTBFIELD(IW-2:IE+2,IJB-1:IJE+1,:) = PFIELDM(IW-2:IE+2,IJB-1:IJE+1,:) - PLSFIELD(IW-2:IE+2,IJB-1:IJE+1,:)
-  IF(NHALO == 1) THEN
+!!$  IF(NHALO == 1) THEN
     ZPTBFIELD(IW-3,IJB-1:IJE+1,:) = TPHALO2%WEST(IJB-1:IJE+1,:) - TPHALO2LS%WEST(IJB-1:IJE+1,:)
     ZPTBFIELD(IE+3,IJB-1:IJE+1,:) = TPHALO2%EAST(IJB-1:IJE+1,:) - TPHALO2LS%EAST(IJB-1:IJE+1,:)
-  ENDIF
+!!$  ENDIF
 ELSE
   ZPTBFIELD(IW-2:IE+2,IJB-1:IJE+1,:) = PFIELDM(IW-2:IE+2,IJB-1:IJE+1,:)
-  IF(NHALO == 1) THEN
+!!$  IF(NHALO == 1) THEN
     ZPTBFIELD(IW-3,IJB-1:IJE+1,:) = TPHALO2%WEST(IJB-1:IJE+1,:)
     ZPTBFIELD(IE+3,IJB-1:IJE+1,:) = TPHALO2%EAST(IJB-1:IJE+1,:)
-  ENDIF
+!!$  ENDIF
 ENDIF
 
 !
@@ -623,33 +624,37 @@ CASE ('OPEN','WALL','NEST')
       IW=IIB+1
     END IF
   ELSE
-    IF(NHALO == 1) THEN
+!!$    IF(NHALO == 1) THEN
       IW=IIB+1
-    ELSE
-      IW=IIB
-    ENDIF
+!!$    ELSE
+!!$      IW=IIB
+!!$    ENDIF
   ENDIF
-  IF (LEAST_ll() .OR. NHALO == 1) THEN
+!!$  IF (LEAST_ll() .OR. NHALO == 1) THEN
     IE=IIE-1
-  ELSE
-    IE=IIE
-  END IF  
+!!$  ELSE
+!!$    IE=IIE
+!!$  END IF  
 
 
 IF (PRESENT(PLSFIELD)) THEN
   ZPTBFIELD(IW-2:IE+2,IJB-1:IJE+1,:) = PFIELDM(IW-2:IE+2,IJB-1:IJE+1,:) - PLSFIELD(IW-2:IE+2,IJB-1:IJE+1,:)
-  IF((NHALO == 1).AND.(.NOT.LWEST_ll())) THEN
+!!$  IF((NHALO == 1).AND.(.NOT.LWEST_ll())) THEN
+  IF(.NOT.LWEST_ll()) THEN
     ZPTBFIELD(IW-3,IJB-1:IJE+1,:) = TPHALO2%WEST(IJB-1:IJE+1,:) - TPHALO2LS%WEST(IJB-1:IJE+1,:)
   ENDIF
-  IF((NHALO == 1).AND.(.NOT.LEAST_ll())) THEN
+!!$  IF((NHALO == 1).AND.(.NOT.LEAST_ll())) THEN
+  IF(.NOT.LEAST_ll()) THEN
     ZPTBFIELD(IE+3,IJB-1:IJE+1,:) = TPHALO2%EAST(IJB-1:IJE+1,:) - TPHALO2LS%EAST(IJB-1:IJE+1,:)
   ENDIF
 ELSE
   ZPTBFIELD(IW-2:IE+2,IJB-1:IJE+1,:) = PFIELDM(IW-2:IE+2,IJB-1:IJE+1,:)
-  IF((NHALO == 1).AND.(.NOT.LWEST_ll())) THEN
+!!$  IF((NHALO == 1).AND.(.NOT.LWEST_ll())) THEN
+  IF(.NOT.LWEST_ll()) THEN
     ZPTBFIELD(IW-3,IJB-1:IJE+1,:) = TPHALO2%WEST(IJB-1:IJE+1,:)
   ENDIF
-  IF((NHALO == 1).AND.(.NOT.LEAST_ll())) THEN
+!!$  IF((NHALO == 1).AND.(.NOT.LEAST_ll())) THEN
+  IF(.NOT.LEAST_ll()) THEN
     ZPTBFIELD(IE+3,IJB-1:IJE+1,:) = TPHALO2%EAST(IJB-1:IJE+1,:)
   ENDIF
 ENDIF
@@ -677,13 +682,15 @@ END SELECT
 
 ! a) Determine E/W boundaries
 
-IF ((NHALO == 1).AND.(HLBCX(1) == 'CYCL').OR.((.NOT.LWEST_ll()).AND.(NHALO == 1)) ) THEN
+!!$IF ((NHALO == 1).AND.(HLBCX(1) == 'CYCL').OR.((.NOT.LWEST_ll()).AND.(NHALO == 1)) ) THEN
+IF ( (HLBCX(1) == 'CYCL') .OR. (.NOT.LWEST_ll()) ) THEN
   IWZ = IW-1
 ELSE
   IWZ = IW
 ENDIF
 
-IF ((NHALO == 1).AND.(HLBCX(1) == 'CYCL').OR.((.NOT.LEAST_ll()).AND.(NHALO == 1)) ) THEN
+!!$IF ((NHALO == 1).AND.(HLBCX(1) == 'CYCL').OR.((.NOT.LEAST_ll()).AND.(NHALO == 1)) ) THEN
+IF ((HLBCX(1) == 'CYCL').OR.(.NOT.LEAST_ll()) ) THEN
   IEZ = IE+1
 ELSE
   IEZ = IE
@@ -772,27 +779,27 @@ IF ( .NOT. L2D ) THEN
   CASE ('CYCL')          ! In that case one must have HLBCY(1) == HLBCY(2)
 !
 !
-    IF(NHALO == 1) THEN
+!!$    IF(NHALO == 1) THEN
       IS=IJB+1
       IN=IJE-1
-    ELSE
-      IS=IJB
-      IN=IJE
-    END IF
+!!$    ELSE
+!!$      IS=IJB
+!!$      IN=IJE
+!!$    END IF
 
 
 IF (PRESENT(PLSFIELD)) THEN
   ZPTBFIELD(IIB-1:IIE+1,IS-2:IN+2,:) = PFIELDM(IIB-1:IIE+1,IS-2:IN+2,:) - PLSFIELD(IIB-1:IIE+1,IS-2:IN+2,:)
-  IF(NHALO == 1) THEN
+!!$  IF(NHALO == 1) THEN
     ZPTBFIELD(IIB-1:IIE+1,IS-3,:) = TPHALO2%SOUTH(IIB-1:IIE+1,:) - TPHALO2LS%SOUTH(IIB-1:IIE+1,:)
     ZPTBFIELD(IIB-1:IIE+1,IN+3,:) = TPHALO2%NORTH(IIB-1:IIE+1,:) - TPHALO2LS%NORTH(IIB-1:IIE+1,:)
-  ENDIF
+!!$  ENDIF
 ELSE
   ZPTBFIELD(IIB-1:IIE+1,IS-2:IN+2,:) = PFIELDM(IIB-1:IIE+1,IS-2:IN+2,:)
-  IF(NHALO == 1) THEN
+!!$  IF(NHALO == 1) THEN
     ZPTBFIELD(IIB-1:IIE+1,IS-3,:) = TPHALO2%SOUTH(IIB-1:IIE+1,:)
     ZPTBFIELD(IIB-1:IIE+1,IN+3,:) = TPHALO2%NORTH(IIB-1:IIE+1,:)
-  ENDIF
+!!$  ENDIF
 ENDIF
 
 !!! HALOS ARE PROBABLY ALSO NEEDED FOR THE INTERPOLATION COEFFICIENTS??!!
@@ -811,33 +818,36 @@ ENDIF
         IS=IJB+1
       END IF
     ELSE
-      IF(NHALO == 1) THEN
+!!$      IF(NHALO == 1) THEN
         IS=IJB+1
-      ELSE
-        IS=IJB
-      ENDIF
+!!$      ELSE
+!!$        IS=IJB
+!!$      ENDIF
     ENDIF
-    IF (LNORTH_ll() .OR. NHALO == 1) THEN
+!!$    IF (LNORTH_ll() .OR. NHALO == 1) THEN
       IN=IJE-1
-    ELSE
-      IN=IJE
-    END IF
-
+!!$    ELSE
+!!$      IN=IJE
+!!$    END IF
 
 IF (PRESENT(PLSFIELD)) THEN
   ZPTBFIELD(IIB-1:IIE+1,IS-2:IN+2,:) = PFIELDM(IIB-1:IIE+1,IS-2:IN+2,:) - PLSFIELD(IIB-1:IIE+1,IS-2:IN+2,:)
-  IF((NHALO == 1).AND.(.NOT.LSOUTH_ll())) THEN
+!!$  IF((NHALO == 1).AND.(.NOT.LSOUTH_ll())) THEN
+  IF(.NOT.LSOUTH_ll()) THEN
     ZPTBFIELD(IIB-1:IIE+1,IS-3,:) = TPHALO2%SOUTH(IIB-1:IIE+1,:) - TPHALO2LS%SOUTH(IIB-1:IIE+1,:)
   ENDIF
-  IF((NHALO == 1).AND.(.NOT.LNORTH_ll())) THEN
+!!$  IF((NHALO == 1).AND.(.NOT.LNORTH_ll())) THEN
+  IF(.NOT.LNORTH_ll()) THEN
     ZPTBFIELD(IIB-1:IIE+1,IN+3,:) = TPHALO2%NORTH(IIB-1:IIE+1,:) - TPHALO2LS%NORTH(IIB-1:IIE+1,:)
   ENDIF
 ELSE
   ZPTBFIELD(IIB-1:IIE+1,IS-2:IN+2,:) = PFIELDM(IIB-1:IIE+1,IS-2:IN+2,:)
-  IF((NHALO == 1).AND.(.NOT.LSOUTH_ll())) THEN
+!!$  IF((NHALO == 1).AND.(.NOT.LSOUTH_ll())) THEN
+  IF(.NOT.LSOUTH_ll()) THEN
     ZPTBFIELD(IIB-1:IIE+1,IS-3,:) = TPHALO2%SOUTH(IIB-1:IIE+1,:)
   ENDIF
-  IF((NHALO == 1).AND.(.NOT.LNORTH_ll())) THEN
+!!$  IF((NHALO == 1).AND.(.NOT.LNORTH_ll())) THEN
+  IF(.NOT.LNORTH_ll()) THEN
     ZPTBFIELD(IIB-1:IIE+1,IN+3,:) = TPHALO2%NORTH(IIB-1:IIE+1,:)
   ENDIF
 ENDIF
@@ -865,13 +875,15 @@ ENDIF
 
 ! a) Determine E/W boundaries
 
-IF ((NHALO == 1).AND.(HLBCY(1) == 'CYCL').OR.((.NOT.LSOUTH_ll()).AND.(NHALO == 1)) ) THEN
+!!$IF ((NHALO == 1).AND.(HLBCY(1) == 'CYCL').OR.((.NOT.LSOUTH_ll()).AND.(NHALO == 1)) ) THEN
+IF ((HLBCY(1) == 'CYCL').OR.(.NOT.LSOUTH_ll()) ) THEN
   ISZ = IS-1
 ELSE
   ISZ = IS
 ENDIF
 
-IF ((NHALO == 1).AND.(HLBCY(1) == 'CYCL').OR.((.NOT.LNORTH_ll()).AND.(NHALO == 1)) ) THEN
+!!$IF ((NHALO == 1).AND.(HLBCY(1) == 'CYCL').OR.((.NOT.LNORTH_ll()).AND.(NHALO == 1)) ) THEN
+IF ((HLBCY(1) == 'CYCL').OR.( .NOT.LNORTH_ll() ) ) THEN
   INZ = IN+1
 ELSE
   INZ = IN
@@ -1061,19 +1073,19 @@ SELECT CASE ( HLBCX(1) ) ! X direction LBC type: (1) for left side
 !
 CASE ('CYCL')          ! In that case one must have HLBCX(1) == HLBCX(2)
 !
-  IF(NHALO == 1) THEN
+!!$  IF(NHALO == 1) THEN
     IW=IIB+1
     IE=IIE-1
-  ELSE
-    IW=IIB
-    IE=IIE
-  END IF  
+!!$  ELSE
+!!$    IW=IIB
+!!$    IE=IIE
+!!$  END IF  
 !
   IF (PRESENT(PLSFIELD)) THEN
 !
 !*       1.1.1  Case with LS fields
 !
-    IF(NHALO == 1) THEN
+!!$    IF(NHALO == 1) THEN
 !
       PRFIELDS(IW-1,:,:) = PRFIELDS(IW-1,:,:) - PRHODJ(IW-1,:,:) *       &
       PDK4*(                                                             &
@@ -1093,7 +1105,7 @@ CASE ('CYCL')          ! In that case one must have HLBCX(1) == HLBCX(2)
           +4.*( PLSFIELD(IE,:,:)    +  PLSFIELD(IE+2,:,:)  )             &
           -6.*  PLSFIELD(IE+1,:,:)  )
 !
-    ENDIF
+!!$    ENDIF
 !
 !!$    PRFIELDS(IW:IE,:,:) = PRFIELDS(IW:IE,:,:)-PRHODJ(IW:IE,:,:) *   &
 !!$          PDK4*DX4(PFIELDM(IW-2:IE+2,:,:)-PLSFIELD(IW-2:IE+2,:,:))
@@ -1111,7 +1123,7 @@ CASE ('CYCL')          ! In that case one must have HLBCX(1) == HLBCX(2)
 !
 !*       1.1.2  Case without LS fields
 !
-    IF(NHALO == 1) THEN
+!!$    IF(NHALO == 1) THEN
 !
       PRFIELDS(IW-1,:,:) = PRFIELDS(IW-1,:,:) - PRHODJ(IW-1,:,:) *       &
       PDK4*(                                                             &
@@ -1125,7 +1137,7 @@ CASE ('CYCL')          ! In that case one must have HLBCX(1) == HLBCX(2)
          -4.*(  PFIELDM(IE,:,:)    +  PFIELDM(IE+2,:,:)    )             &
          +6.*   PFIELDM(IE+1,:,:)  )
 !
-    ENDIF
+!!$    ENDIF
 !
 !!$    PRFIELDS(IW:IE,:,:) = PRFIELDS(IW:IE,:,:)-PRHODJ(IW:IE,:,:) *   &
 !!$          PDK4*DX4(PFIELDM(IW-2:IE+2,:,:))
@@ -1152,17 +1164,17 @@ CASE ('OPEN','WALL','NEST')
       IW=IIB+1
     END IF
   ELSE
-    IF(NHALO == 1) THEN
+!!$    IF(NHALO == 1) THEN
       IW=IIB+1
-    ELSE
-      IW=IIB
-    ENDIF
+!!$    ELSE
+!!$      IW=IIB
+!!$    ENDIF
   ENDIF
-  IF (LEAST_ll() .OR. NHALO == 1) THEN
+!!$  IF (LEAST_ll() .OR. NHALO == 1) THEN
     IE=IIE-1
-  ELSE
-    IE=IIE
-  END IF  
+!!$  ELSE
+!!$    IE=IIE
+!!$  END IF  
 !
   IF (PRESENT(PLSFIELD)) THEN
 !
@@ -1177,7 +1189,8 @@ CASE ('OPEN','WALL','NEST')
                  PFIELDM(IW-2,:,:)  -2.*PFIELDM(IW-1,:,:)  + PFIELDM(IW,:,:)    &
                 -PLSFIELD(IW-2,:,:) +2.*PLSFIELD(IW-1,:,:) - PLSFIELD(IW,:,:)   )
 !
-    ELSEIF (NHALO == 1) THEN
+!!$    ELSEIF (NHALO == 1) THEN
+    ELSE
 !
       PRFIELDS(IW-1,:,:) = PRFIELDS(IW-1,:,:) - PRHODJ(IW-1,:,:) *        &
       PDK4*(                                                              &
@@ -1197,7 +1210,8 @@ CASE ('OPEN','WALL','NEST')
                 PFIELDM(IE,:,:)  -2.*PFIELDM(IE+1,:,:)  + PFIELDM(IE+2,:,:)   &
               - PLSFIELD(IE,:,:) +2.*PLSFIELD(IE+1,:,:) - PLSFIELD(IE+2,:,:)  )
 !
-    ELSEIF (NHALO == 1) THEN
+!!$    ELSEIF (NHALO == 1) THEN
+    ELSE
 !
       PRFIELDS(IE+1,:,:) = PRFIELDS(IE+1,:,:) - PRHODJ(IE+1,:,:) *      &
       PDK4*(                                                            &
@@ -1235,7 +1249,8 @@ CASE ('OPEN','WALL','NEST')
       PRFIELDS(IW-1,:,:) = PRFIELDS(IW-1,:,:) + PRHODJ(IW-1,:,:) *       &
         PDK2*( PFIELDM(IW-2,:,:) -2.*PFIELDM(IW-1,:,:) + PFIELDM(IW,:,:) )
 !
-    ELSEIF (NHALO == 1) THEN
+!!$    ELSEIF (NHALO == 1) THEN
+    ELSE
 !
       PRFIELDS(IW-1,:,:) = PRFIELDS(IW-1,:,:) - PRHODJ(IW-1,:,:) *       &
       PDK4*(                                                             & 
@@ -1250,7 +1265,8 @@ CASE ('OPEN','WALL','NEST')
       PRFIELDS(IE+1,:,:) = PRFIELDS(IE+1,:,:) + PRHODJ(IE+1,:,:) *       &
         PDK2*( PFIELDM(IE,:,:) -2.*PFIELDM(IE+1,:,:) + PFIELDM(IE+2,:,:) )
 !
-    ELSEIF (NHALO == 1) THEN
+!!$    ELSEIF (NHALO == 1) THEN
+    ELSE
 !
       PRFIELDS(IE+1,:,:) = PRFIELDS(IE+1,:,:) - PRHODJ(IE+1,:,:) *       &
       PDK4*(                                                             &
@@ -1290,19 +1306,19 @@ IF ( .NOT. L2D ) THEN
   CASE ('CYCL')          ! In that case one must have HLBCY(1) == HLBCY(2)
 !
 !
-    IF(NHALO == 1) THEN
+!!$    IF(NHALO == 1) THEN
       IS=IJB+1
       IN=IJE-1
-    ELSE
-      IS=IJB
-      IN=IJE
-    END IF
+!!$    ELSE
+!!$      IS=IJB
+!!$      IN=IJE
+!!$    END IF
 !
     IF (PRESENT(PLSFIELD)) THEN
 !
 !*       2.1.1  Case with LS fields
 !
-      IF(NHALO == 1) THEN
+!!$      IF(NHALO == 1) THEN
 !
         PRFIELDS(:,IS-1,:) = PRFIELDS(:,IS-1,:) - PRHODJ(:,IS-1,:) *      &
         PDK4*(                                                            &
@@ -1322,7 +1338,7 @@ IF ( .NOT. L2D ) THEN
             +4.*( PLSFIELD(:,IN,:)     +  PLSFIELD(:,IN+2,:) )            &
             -6.*  PLSFIELD(:,IN+1,:)   )
 !
-      ENDIF
+!!$      ENDIF
 !
 !!$      PRFIELDS(:,IS:IN,:) = PRFIELDS(:,IS:IN,:)-PRHODJ(:,IS:IN,:) *   &
 !!$            PDK4*DY4(PFIELDM(:,IS-2:IN+2,:)-PLSFIELD(:,IS-2:IN+2,:))
@@ -1341,7 +1357,7 @@ IF ( .NOT. L2D ) THEN
 !*       2.1.2  Case without LS fields
 !
 !
-      IF(NHALO == 1) THEN
+!!$      IF(NHALO == 1) THEN
 !
         PRFIELDS(:,IS-1,:) = PRFIELDS(:,IS-1,:) - PRHODJ(:,IS-1,:) *      &
         PDK4*(                                                            &
@@ -1355,7 +1371,7 @@ IF ( .NOT. L2D ) THEN
             -4.*( PFIELDM(:,IN,:)      +  PFIELDM(:,IN+2,:)  )            &
             +6.*  PFIELDM(:,IN+1,:)    )
 !
-      ENDIF
+!!$      ENDIF
 !
 !!$      PRFIELDS(:,IS:IN,:) = PRFIELDS(:,IS:IN,:)-PRHODJ(:,IS:IN,:) *   &
 !!$            PDK4*DY4(PFIELDM(:,IS-2:IN+2,:))
@@ -1381,17 +1397,17 @@ IF ( .NOT. L2D ) THEN
         IS=IJB+1
       END IF
     ELSE
-      IF(NHALO == 1) THEN
+!!$      IF(NHALO == 1) THEN
         IS=IJB+1
-      ELSE
-        IS=IJB
-      ENDIF
+!!$      ELSE
+!!$        IS=IJB
+!!$      ENDIF
     ENDIF
-    IF (LNORTH_ll() .OR. NHALO == 1) THEN
+!!$    IF (LNORTH_ll() .OR. NHALO == 1) THEN
       IN=IJE-1
-    ELSE
-      IN=IJE
-    END IF  
+!!$    ELSE
+!!$      IN=IJE
+!!$    END IF  
 !*       2.2.1  Case with LS fields
 !
     IF (PRESENT(PLSFIELD)) THEN
@@ -1407,7 +1423,8 @@ IF ( .NOT. L2D ) THEN
                  PFIELDM(:,IS-2,:)  -2.*PFIELDM(:,IS-1,:)  + PFIELDM(:,IS,:)    &
                 -PLSFIELD(:,IS-2,:) +2.*PLSFIELD(:,IS-1,:) - PLSFIELD(:,IS,:)   )
 !
-      ELSEIF (NHALO == 1) THEN
+!!$      ELSEIF (NHALO == 1) THEN
+      ELSE
 !
         PRFIELDS(:,IS-1,:) = PRFIELDS(:,IS-1,:) - PRHODJ(:,IS-1,:) *            &
         PDK4*(                                                                  &
@@ -1427,7 +1444,8 @@ IF ( .NOT. L2D ) THEN
                    PFIELDM(:,IN,:)  -2.*PFIELDM(:,IN+1,:)   + PFIELDM(:,IN+2,:)  &
                   -PLSFIELD(:,IN,:) +2.*PLSFIELD(:,IN+1,:)  - PLSFIELD(:,IN+2,:) )
 !
-      ELSEIF (NHALO == 1) THEN
+!!$      ELSEIF (NHALO == 1) THEN
+      ELSE
 !
         PRFIELDS(:,IN+1,:) = PRFIELDS(:,IN+1,:) - PRHODJ(:,IN+1,:) *         &
         PDK4*(                                                               &
@@ -1466,7 +1484,8 @@ IF ( .NOT. L2D ) THEN
         PRFIELDS(:,IS-1,:) = PRFIELDS(:,IS-1,:) + PRHODJ(:,IS-1,:) *       &
           PDK2*( PFIELDM(:,IS-2,:) -2.*PFIELDM(:,IS-1,:) + PFIELDM(:,IS,:) )
 !
-      ELSEIF (NHALO == 1) THEN
+!!$      ELSEIF (NHALO == 1) THEN
+      ELSE
 !
         PRFIELDS(:,IS-1,:) = PRFIELDS(:,IS-1,:) - PRHODJ(:,IS-1,:) *      &
         PDK4*(                                                            &
@@ -1481,7 +1500,8 @@ IF ( .NOT. L2D ) THEN
         PRFIELDS(:,IN+1,:) = PRFIELDS(:,IN+1,:) + PRHODJ(:,IN+1,:) *       &
           PDK2*( PFIELDM(:,IN,:) -2.*PFIELDM(:,IN+1,:) + PFIELDM(:,IN+2,:) )
 !
-      ELSEIF (NHALO == 1) THEN
+!!$      ELSEIF (NHALO == 1) THEN
+      ELSE
 !
         PRFIELDS(:,IN+1,:) = PRFIELDS(:,IN+1,:) - PRHODJ(:,IN+1,:) *      &
         PDK4*(                                                            &
index 1160f2e..38f7229 100644 (file)
@@ -6,7 +6,6 @@
 !--------------- special set of characters for RCS information
 !-----------------------------------------------------------------
 ! $Source$ $Revision$
-! masdev4_7 BUG1 2007/06/15 17:47:18
 !-----------------------------------------------------------------
 !     ###################
       MODULE MODI_ONE_WAY_n
@@ -189,6 +188,7 @@ SUBROUTINE ONE_WAY_n(KDAD,HLUOUT,PTSTEP,KMI,KTCOUNT,                     &
 !!    M. Leriche     11/2009  modify the LB*SVS for the aqueous phase chemistry
 !!                   07/2010  idem for ice phase chemical species
 !!    Bosseur & Filippi 07/2013 Adds Forefire
+!!   J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1
 !------------------------------------------------------------------------------
 !
 !*      0.   DECLARATIONS
@@ -307,10 +307,10 @@ ALLOCATE(ZJ(SIZE(XRHODJ,1),SIZE(XRHODJ,2),SIZE(XRHODJ,3)))
 ALLOCATE(ZRHOD(SIZE(XRHODJ,1),SIZE(XRHODJ,2),SIZE(XRHODJ,3)))
 !
 CALL GET_INDICE_ll (IIB,IJB,IIE,IJE)
-IIB=IIB-1
-IIE=IIE+1
-IJB=IJB-1
-IJE=IJE+1
+IIB=IIB-JPHEXT
+IIE=IIE+JPHEXT
+IJB=IJB-JPHEXT
+IJE=IJE+JPHEXT
 ALLOCATE(ZWORK(IIB:IIE,IJB:IJE,SIZE(PLBXTHM,3)))  ! can be smaller than child extended subdomain
 ! LS_FORCING routine can not correctly manage extra halo zone
 ! LB will be filled only with one layer halo zone for the moment
@@ -822,8 +822,8 @@ IF(.NOT. OSTEADY_DMASS) THEN
 !*       4.3 computing of the dry mass at t
 !
 !
-  ZDRYMASST = SUM3D_ll (ZJ(:,:,:)*ZRHOD(:,:,:),IINFO_ll,NXOR_ALL(KMI)+1,NYOR_ALL(KMI)+1, &
-            1+JPVEXT,NXEND_ALL(KMI)-1,NYEND_ALL(KMI)-1,SIZE(XRHODJ,3)-JPVEXT)
+  ZDRYMASST = SUM3D_ll (ZJ(:,:,:)*ZRHOD(:,:,:),IINFO_ll,NXOR_ALL(KMI)+JPHEXT,NYOR_ALL(KMI)+JPHEXT, &
+            1+JPVEXT,NXEND_ALL(KMI)-JPHEXT,NYEND_ALL(KMI)-JPHEXT,SIZE(XRHODJ,3)-JPVEXT)
 !
 !
 !*       4.4 normal processing (not at the segment beginning)
@@ -848,8 +848,8 @@ IF(.NOT. OSTEADY_DMASS) THEN
     ENDIF
 !
 !
-    ZDRYMASSM = SUM3D_ll (ZJ(:,:,:)*ZRHOD(:,:,:),IINFO_ll,NXOR_ALL(KMI)+1,NYOR_ALL(KMI)+1, &
-            1+JPVEXT,NXEND_ALL(KMI)-1,NYEND_ALL(KMI)-1,SIZE(XRHODJ,3)-JPVEXT)
+    ZDRYMASSM = SUM3D_ll (ZJ(:,:,:)*ZRHOD(:,:,:),IINFO_ll,NXOR_ALL(KMI)+JPHEXT,NYOR_ALL(KMI)+JPHEXT, &
+            1+JPVEXT,NXEND_ALL(KMI)-JPHEXT,NYEND_ALL(KMI)-JPHEXT,SIZE(XRHODJ,3)-JPVEXT)
 !
     PDRYMASST =  ZDRYMASST
     PDRYMASSS = (PDRYMASST - ZDRYMASSM) / (PTSTEP*KDTRATIO)
@@ -992,7 +992,7 @@ ENDIF
 !
 IF ( SIZE(PLBXS,1) /= 0 ) THEN
   IF( GVERT_INTERP ) THEN
-    IF ( ILBX == KRIMX+1 ) THEN
+    IF ( ILBX == KRIMX+JPHEXT ) THEN
       PLBXS(:,:,:) = VER_INTERP_LIN(PLBXS(:,:,:),  &
                           KKLIN_LBXM(:,:,:),PCOEFLIN_LBXM(:,:,:))
     ELSE
@@ -1006,7 +1006,7 @@ END IF
 !
 IF ( SIZE(PLBYS,1) /= 0 ) THEN
   IF( GVERT_INTERP ) THEN
-    IF ( ILBY == KRIMY+1 ) THEN
+    IF ( ILBY == KRIMY+JPHEXT ) THEN
       PLBYS(:,:,:) = VER_INTERP_LIN(PLBYS(:,:,:),  &