New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
Changeset 4245 for branches/2013/dev_LOCEAN_CMCC_INGV_MERC_UKMO_2013/NEMOGCM – NEMO

Ignore:
Timestamp:
2013-11-19T12:19:21+01:00 (10 years ago)
Author:
cetlod
Message:

dev_locean_cmcc_ingv_ukmo_merc : merge in the MERC_UKMO dev branch with trunk rev 4119

Location:
branches/2013/dev_LOCEAN_CMCC_INGV_MERC_UKMO_2013/NEMOGCM
Files:
1 added
3 deleted
38 edited
11 copied

Legend:

Unmodified
Added
Removed
  • branches/2013/dev_LOCEAN_CMCC_INGV_MERC_UKMO_2013/NEMOGCM/ARCH/arch-ALTIX_NAUTILUS_MPT.fcm

    r4230 r4245  
    4747%LD                  ifort 
    4848%FPPFLAGS            -P -C -traditional 
    49 %LDFLAGS             -lmpi -lstdc++ 
     49%LDFLAGS             -lmpi -lstdc++ -lcurl 
    5050%AR                  ar  
    5151%ARFLAGS             -r 
  • branches/2013/dev_LOCEAN_CMCC_INGV_MERC_UKMO_2013/NEMOGCM/ARCH/arch-PW7_METO.fcm

    r4162 r4245  
    1 # IBM POWER6  UKMO 
     1# IBM POWER7  UKMO 
    22# NCDF_INC    netcdf include file 
    33# NCDF_LIB    netcdf library 
     4# XIOS_INC    XIOS include files 
     5# XIOS_LIB    XIOS library 
    46# FC          Fortran compiler command 
    57# FCFLAGS     Fortran compiler flags 
     
    1517 
    1618 
    17 %NCDF_INC            -I/home/nwp/nm/frrj/lib/MTOOLS/include 
    18 %NCDF_LIB            -L/home/nwp/nm/frrj/lib/MTOOLS/lib -lnetcdf -lhdf5 -lhdf5_hl -lhdf5_fortran -lz 
    19 %XIOS_ROOT           /home/cr/ocean/hadcv/xios_r445 
     19%NCDF_INC            -I/home/cr/ocean/hadcv/netcdf/4.1.3_seq/include 
     20%NCDF_LIB            -L/home/cr/ocean/hadcv/netcdf/4.1.3_seq/lib -lnetcdf -lnetcdff -lhdf5 -lhdf5_hl -lhdf5_fortran -lz 
     21%XIOS_INC            -I/data/nwp/ofrd/share/NEMO/xios_lib/seq/xios_r451/inc 
     22%XIOS_LIB            -L/data/nwp/ofrd/share/NEMO/xios_lib/seq/xios_r451/lib -lxios 
    2023%FC                  mpxlf90_r 
    21 %FCFLAGS             -qrealsize=8 -qextname -qsuffix=f=f90 -qarch=pwr7 -qtune=pwr7 -NS32768 -I/home/nwp/nm/frrj/lib/MTOOLS/include -g -O3 -qnostrict 
    22 %FFLAGS              -qrealsize=8 -qextname -qsuffix=f=f90 -qarch=pwr7 -qtune=pwr7 -NS32768 -I/home/nwp/nm/frrj/lib/MTOOLS/include -g -O3 -qnostrict 
     24%FCFLAGS             -qrealsize=8 -qextname -qsuffix=f=f90 -qarch=pwr7 -qtune=pwr7 -NS32768 -g -O3 -qstrict 
     25%FFLAGS              -qrealsize=8 -qextname -qsuffix=f=f90 -qarch=pwr7 -qtune=pwr7 -NS32768 -g -O3 -qstrict 
    2326%LD                  mpCC_r 
    24 %LDFLAGS             -lxlf90 -L/home/nwp/nm/frrj/lib/MTOOLS/lib -lnetcdf -L/projects/um1/lib -lsig -O3 -L MASS 
     27%LDFLAGS             -lxlf90 -L/projects/um1/lib -lsig -O3 -L MASS 
    2528%FPPFLAGS            -E -P -traditional -I/opt/ibmhpc/pecurrent/ppe.poe/include -I/usr/lpp/ppe.poe/include/thread64 
    2629%AR                  ar 
    2730%ARFLAGS             rs 
    2831%MK                  gmake 
    29 %USER_INC            %NCDF_INC -I%XIOS_ROOT/inc 
    30 %USER_LIB            %NCDF_LIB -L%XIOS_ROOT/lib -lxios 
     32%USER_INC            %NCDF_INC %XIOS_INC 
     33%USER_LIB            %NCDF_LIB %XIOS_LIB 
  • branches/2013/dev_LOCEAN_CMCC_INGV_MERC_UKMO_2013/NEMOGCM/CONFIG/AMM12/EXP00/namelist_cfg

    r4230 r4245  
    88   nn_it000    =       1   !  first time step 
    99   nn_itend    =    2880   !  last  time step (std 1 day = 288) 
    10    nn_date0    =  20070101 !  date at nit_0000 (format yyyymmdd) used if ln_rstart=F or (ln_rstart=T and nn_rstctl=0 or 1) 
     10   nn_date0    =  20120101 !  date at nit_0000 (format yyyymmdd) used if ln_rstart=F or (ln_rstart=T and nn_rstctl=0 or 1) 
    1111   nn_leapy    =       1   !  Leap year calendar (1) or not (0) 
    1212   ln_rstart   =  .true.  !  start from rest (F) or from a restart file (T) 
  • branches/2013/dev_LOCEAN_CMCC_INGV_MERC_UKMO_2013/NEMOGCM/CONFIG/AMM12/cpp_AMM12.fcm

    r4147 r4245  
    1  bld::tool::fppkeys  key_bdy key_tide key_vectopt_loop key_dynspg_ts key_ldfslp  key_zdfgls  key_vvl key_diainstant key_mpp_mpi key_iomput key_nosignedzero 
     1 bld::tool::fppkeys  key_bdy key_tide key_dynspg_ts key_ldfslp  key_zdfgls  key_vvl key_diainstant key_mpp_mpi key_iomput 
  • branches/2013/dev_LOCEAN_CMCC_INGV_MERC_UKMO_2013/NEMOGCM/CONFIG/C1D_PAPA/cpp_C1D_PAPA.fcm

    r4158 r4245  
    1  bld::tool::fppkeys key_c1d key_c1d_papa key_dynspg_flt key_diahth key_zdfgls key_iomput 
     1 bld::tool::fppkeys key_c1d key_dynspg_flt key_diahth key_zdfgls key_iomput 
  • branches/2013/dev_LOCEAN_CMCC_INGV_MERC_UKMO_2013/NEMOGCM/CONFIG/GYRE/EXP00/iodef.xml

    r4153 r4245  
    4646     <field field_ref="mldr10_1"     name="somxl010"  /> 
    4747     <field field_ref="mldkz5"       name="somixhgt"  /> 
    48         </file> 
     48           <!-- variables available with MLE 
     49          <field field_ref="Lf_NHpf"    name="Lf_NHpf"  long_name="MLE:_Lf=NH/f"     /> 
     50      --> 
     51       </file> 
    4952    
    5053   <file id="file2" name_suffix="_grid_U" description="ocean U grid variables" > 
    5154          <field field_ref="uoce"         name="vozocrtx"  /> 
    5255          <field field_ref="utau"         name="sozotaux"  /> 
     56          <!-- variables available with MLE 
     57          <field field_ref="psiu_mle"     name="psiu_mle"  long_name="MLE_streamfunction_along_i-axis" /> 
     58     --> 
    5359        </file> 
    5460    
     
    5662          <field field_ref="voce"         name="vomecrty"  />  
    5763          <field field_ref="vtau"         name="sometauy"  />  
     64          <!-- variables available with MLE 
     65          <field field_ref="psiv_mle"     name="psiv_mle"  long_name="MLE_streamfunction_along_j-axis" /> 
     66     --> 
    5867        </file> 
    5968    
  • branches/2013/dev_LOCEAN_CMCC_INGV_MERC_UKMO_2013/NEMOGCM/CONFIG/GYRE_PISCES/EXP00/iodef.xml

    r4153 r4245  
    4747     <field field_ref="mldr10_1"     name="somxl010"  /> 
    4848     <field field_ref="mldkz5"       name="somixhgt"  /> 
     49           <!-- variables available with MLE 
     50          <field field_ref="Lf_NHpf"    name="Lf_NHpf"  long_name="MLE:_Lf=NH/f"     /> 
     51      --> 
    4952        </file> 
    5053    
     
    5255          <field field_ref="uoce"         name="vozocrtx"  /> 
    5356          <field field_ref="utau"         name="sozotaux"  /> 
     57          <!-- variables available with MLE 
     58          <field field_ref="psiu_mle"     name="psiu_mle"  long_name="MLE_streamfunction_along_i-axis" /> 
     59     --> 
    5460        </file> 
    5561    
     
    5763          <field field_ref="voce"         name="vomecrty"  />  
    5864          <field field_ref="vtau"         name="sometauy"  />  
     65          <!-- variables available with MLE 
     66          <field field_ref="psiv_mle"     name="psiv_mle"  long_name="MLE_streamfunction_along_j-axis" /> 
     67     --> 
    5968        </file> 
    6069    
  • branches/2013/dev_LOCEAN_CMCC_INGV_MERC_UKMO_2013/NEMOGCM/CONFIG/ORCA2_LIM/EXP00/iodef_default.xml

    r4161 r4245  
    6464          <field field_ref="vtau_ice"         name="iicestrv" /> 
    6565 
     66           <!-- variables available with MLE 
     67          <field field_ref="Lf_NHpf"    name="Lf_NHpf"  long_name="MLE:_Lf=NH/f"     /> 
     68      --> 
    6669   </file> 
    6770 
     
    7376     <field field_ref="u_masstr"     name="vozomatr"  /> 
    7477     <field field_ref="u_heattr"     name="sozohetr"  /> 
     78          <!-- variables available with MLE 
     79          <field field_ref="psiu_mle"     name="psiu_mle"  long_name="MLE_streamfunction_along_i-axis" /> 
     80     --> 
    7581   </file> 
    7682    
     
    8288     <field field_ref="v_masstr"     name="vomematr"  /> 
    8389     <field field_ref="v_heattr"     name="somehetr"  /> 
     90          <!-- variables available with MLE 
     91          <field field_ref="psiv_mle"     name="psiv_mle"  long_name="MLE_streamfunction_along_j-axis" /> 
     92     --> 
    8493   </file> 
    8594    
  • branches/2013/dev_LOCEAN_CMCC_INGV_MERC_UKMO_2013/NEMOGCM/CONFIG/ORCA2_LIM_PISCES/EXP00/iodef.xml

    r4153 r4245  
    6767     <field field_ref="mldkz5"       /> 
    6868     <field field_ref="mldr10_1"     /> 
     69           <!-- variables available with MLE 
     70          <field field_ref="Lf_NHpf"    name="Lf_NHpf"  long_name="MLE:_Lf=NH/f"     /> 
     71      --> 
    6972   </file> 
    7073    
     
    7376     <field field_ref="suoce"        name="uos"     long_name="sea_surface_x_velocity"    /> 
    7477     <field field_ref="utau"         name="tauuo"   long_name="surface_downward_x_stress" /> 
     78          <!-- variables available with MLE 
     79          <field field_ref="psiu_mle"     name="psiu_mle"  long_name="MLE_streamfunction_along_i-axis" /> 
     80     --> 
    7581   </file> 
    7682    
     
    7985     <field field_ref="svoce"        name="vos"     long_name="sea_surface_y_velocity"    /> 
    8086     <field field_ref="vtau"         name="tauvo"   long_name="surface_downward_y_stress" /> 
     87          <!-- variables available with MLE 
     88          <field field_ref="psiv_mle"     name="psiv_mle"  long_name="MLE_streamfunction_along_j-axis" /> 
     89     --> 
    8190   </file> 
    8291    
  • branches/2013/dev_LOCEAN_CMCC_INGV_MERC_UKMO_2013/NEMOGCM/CONFIG/SHARED/field_def.xml

    r4161 r4245  
    3131    <field id="eken"         long_name="kinetic energy"                            unit="m2/s2" grid_ref="grid_T_3D"/> 
    3232    <field id="hdiv"         long_name="horizontal divergence"                     unit="s-1"   grid_ref="grid_T_3D"/> 
     33         <!-- variables available with MLE --> 
     34         <field id="Lf_NHpf"      long_name="MLE: Lf = N H / f"                         unit="m"                        /> 
    3335         <!-- next variables available with key_diahth --> 
    3436         <field id="mlddzt"       long_name="Thermocline Depth (max dT/dz)"             unit="m"                        /> 
     
    268270         <field id="uocet"        long_name="ocean transport along i-axis times temperature" unit="degC.m/s" grid_ref="grid_U_3D" /> 
    269271         <field id="uoces"        long_name="ocean transport along i-axis times salinity"    unit="psu.m/s"  grid_ref="grid_U_3D" /> 
     272         <!-- variables available with MLE --> 
     273         <field id="psiu_mle"     long_name="MLE streamfunction along i-axis"             unit="m3/s"  grid_ref="grid_U_3D"  /> 
    270274         <!-- uoce_eiv: available with key_traldf_eiv and key_diaeiv --> 
    271275         <field id="uoce_eiv"     long_name="EIV ocean current along i-axis"              unit="m/s"  grid_ref="grid_U_3D" /> 
     
    289293         <field id="vocet"        long_name="ocean transport along j-axis times temperature" unit="degC.m/s" grid_ref="grid_V_3D" /> 
    290294         <field id="voces"        long_name="ocean transport along j-axis times salinity"    unit="psu.m/s"  grid_ref="grid_V_3D" /> 
     295         <!-- variables available with MLE --> 
     296         <field id="psiv_mle"     long_name="MLE streamfunction along j-axis"             unit="m3/s"  grid_ref="grid_V_3D"  /> 
    291297         <!-- voce_eiv: available with key_traldf_eiv and key_diaeiv --> 
    292298         <field id="voce_eiv"     long_name="EIV ocean current along j-axis"              unit="m/s"  grid_ref="grid_V_3D" /> 
  • branches/2013/dev_LOCEAN_CMCC_INGV_MERC_UKMO_2013/NEMOGCM/CONFIG/SHARED/namelist_ref

    r4238 r4245  
    112112!----------------------------------------------------------------------- 
    113113   nn_bathy    =    1      !  compute (=0) or read (=1) the bathymetry file 
    114    nn_closea    =   0      !  remove (=0) or keep (=1) closed seas and lakes (ORCA) 
     114   rn_bathy    =    0.     !  value of the bathymetry. if (=0) bottom flat at jpkm1 
     115   nn_closea   =    0      !  remove (=0) or keep (=1) closed seas and lakes (ORCA) 
    115116   nn_msh      =    0      !  create (=1) a mesh file or not (=0) 
    116117   rn_hmin     =   -3.     !  min depth of the ocean (>0) or min number of ocean level (<0) 
     
    284285   ln_2m       = .false.   !  air temperature and humidity referenced at 2m (T) instead 10m (F) 
    285286   ln_taudif   = .false.   !  HF tau contribution: use "mean of stress module - module of the mean stress" data 
     287   ln_bulk2z   = .false.   !  Air temperature/humidity and wind vectors are referenced at heights rn_zqt and rn_zu 
     288   rn_zqt      = 3.        !  Air temperature and humidity reference height (m) (ln_bulk2z) 
     289   rn_zu       = 4.        !  Wind vector reference height (m)                  (ln_bulk2z) 
    286290   rn_pfac     = 1.        !  multiplicative factor for precipitation (total & snow) 
    287291   rn_efac     = 1.        !  multiplicative factor for evaporation (0. or 1.) 
     
    556560   bn_tem  =    'amm12_bdyT_tra' ,         24        , 'votemper' ,     .true.     , .false. ,  'daily'  ,    ''    ,   ''    , '' 
    557561   bn_sal  =    'amm12_bdyT_tra' ,         24        , 'vosaline' ,     .true.     , .false. ,  'daily'  ,    ''    ,   ''    , '' 
    558 !   bn_a_i  =    'amm12_bdyT_ice' ,         24        , 'ileadfra' ,     .true.     , .false. ,  'daily'  ,    ''    ,   ''    , '' 
    559 !   bn_ht_i =    'amm12_bdyT_ice' ,         24        , 'iicethic' ,     .true.     , .false. ,  'daily'  ,    ''    ,   ''    , '' 
    560 !   bn_ht_s =    'amm12_bdyT_ice' ,         24        , 'isnowthi' ,     .true.     , .false. ,  'daily'  ,    ''    ,   ''    , '' 
    561562   cn_dir  =    'bdydta/' 
    562563   ln_full_vel = .false. 
     
    637638   ln_traadv_qck    =  .false.  !  QUICKEST scheme 
    638639   ln_traadv_msc_ups=  .false.  !  use upstream scheme within muscl 
     640/ 
     641!----------------------------------------------------------------------- 
     642&namtra_adv_mle !   mixed layer eddy parametrisation (Fox-Kemper param) 
     643!----------------------------------------------------------------------- 
     644   ln_mle    = .true.      ! (T) use the Mixed Layer Eddy (MLE) parameterisation 
     645   rn_ce     = 0.06        ! magnitude of the MLE (typical value: 0.06 to 0.08) 
     646   nn_mle    = 1           ! MLE type: =0 standard Fox-Kemper ; =1 new formulation 
     647   rn_lf     = 5.e+3       ! typical scale of mixed layer front (meters)                      (case rn_mle=0) 
     648   rn_time   = 172800.     ! time scale for mixing momentum across the mixed layer (seconds)  (case rn_mle=0) 
     649   rn_lat    = 20.         ! reference latitude (degrees) of MLE coef.                        (case rn_mle=1) 
     650   nn_mld_uv = 0           ! space interpolation of MLD at u- & v-pts (0=min,1=averaged,2=max) 
     651   nn_conv   = 0           ! =1 no MLE in case of convection ; =0 always MLE 
     652   rn_rho_c_mle  = 0.01    ! delta rho criterion used to calculate MLD for FK 
    639653/ 
    640654!---------------------------------------------------------------------------------- 
     
    909923   nn_timing   =    0      !  timing by routine activated (=1) creates timing.output file, or not (=0) 
    910924/ 
    911  
     925!----------------------------------------------------------------------- 
     926&namc1d        !   1D configuration options                             ("key_c1d") 
     927!----------------------------------------------------------------------- 
     928   rn_lat      =    50     !  Column latitude 
     929   rn_lon      =    -145   !  Column longitude 
     930/ 
     931!----------------------------------------------------------------------- 
     932&namc1d_uvd    !   data: U & V currents                                 ("key_c1d") 
     933!----------------------------------------------------------------------- 
     934!              ! file name ! frequency (hours)    ! variable ! time interp. ! clim  !'yearly' or ! weights  ! rotation ! 
     935!              !           !  (if <0  months)     !   name   !  (logical)   ! (T/F) ! 'monthly'  ! filename ! pairing  ! 
     936   sn_ucur     = 'ucurrent',         -1           ,'u_current',   .false.   ,.true. , 'monthly'  ,  '   '   ,  'Ume' 
     937   sn_vcur     = 'vcurrent',         -1           ,'v_current',   .false.   ,.true. , 'monthly'  ,  '   '   ,  'Vme' 
     938! 
     939   cn_dir        = './'    !  root directory for the location of the files 
     940   ln_uvd_init   = .false. !  Initialisation of ocean U & V with U & V input data (T) or not (F) 
     941   ln_uvd_dyndmp = .false. !  damping of ocean U & V toward U & V input data (T) or not (F) 
     942/ 
     943!----------------------------------------------------------------------- 
     944&namc1d_dyndmp !   U & V newtonian damping                              ("key_c1d") 
     945!----------------------------------------------------------------------- 
     946   ln_dyndmp   =  .false.  !  add a damping term (T) or not (F) 
     947/ 
    912948!!====================================================================== 
    913949!!                  ***  Diagnostics namelists  *** 
  • branches/2013/dev_LOCEAN_CMCC_INGV_MERC_UKMO_2013/NEMOGCM/CONFIG/cfg.txt

    r4230 r4245  
    55ORCA2_LIM OPA_SRC LIM_SRC_2 NST_SRC 
    66ORCA2_LIM3 OPA_SRC LIM_SRC_3 NST_SRC 
    7 ORCA2_LIM_PISCES OPA_SRC LIM_SRC_2 NST_SRC TOP_SRC 
    8 ORCA2_LIM_CFC_C14b OPA_SRC LIM_SRC_2 NST_SRC TOP_SRC 
    97ORCA2_SAS_LIM OPA_SRC SAS_SRC LIM_SRC_2 NST_SRC 
    108ORCA2_LIM_CFC_C14b OPA_SRC LIM_SRC_2 NST_SRC TOP_SRC 
    119ORCA2_OFF_PISCES OPA_SRC OFF_SRC TOP_SRC 
     10ORCA2_LIM_PISCES OPA_SRC LIM_SRC_2 NST_SRC TOP_SRC 
     11C1D_PAPA OPA_SRC 
  • branches/2013/dev_LOCEAN_CMCC_INGV_MERC_UKMO_2013/NEMOGCM/NEMO/OPA_SRC/ASM/asminc.F90

    r4162 r4245  
    10091009#endif 
    10101010 
    1011 #if defined key_cice 
     1011#if defined key_cice && defined key_asminc 
    10121012            ! Sea-ice : CICE case. Pass ice increment tendency into CICE 
    10131013            ndaice_da(:,:) = seaice_bkginc(:,:) * zincwgt / rdt 
     
    10201020         ELSE 
    10211021 
    1022 #if defined key_cice 
     1022#if defined key_cice && defined key_asminc 
    10231023            ! Sea-ice : CICE case. Zero ice increment tendency into CICE 
    10241024            ndaice_da(:,:) = 0.0_wp 
     
    10641064#endif 
    10651065  
    1066 #if defined key_cice 
    1067             ! Sea-ice : CICE case. Pass ice increment tendency into CICE - is this correct? 
     1066#if defined key_cice && defined key_asminc 
     1067            ! Sea-ice : CICE case. Pass ice increment tendency into CICE 
    10681068           ndaice_da(:,:) = seaice_bkginc(:,:) / rdt 
    10691069#endif 
     
    10741074         ELSE 
    10751075 
    1076 #if defined key_cice 
     1076#if defined key_cice && defined key_asminc 
    10771077            ! Sea-ice : CICE case. Zero ice increment tendency into CICE  
    10781078            ndaice_da(:,:) = 0.0_wp 
  • branches/2013/dev_LOCEAN_CMCC_INGV_MERC_UKMO_2013/NEMOGCM/NEMO/OPA_SRC/C1D/c1d.F90

    r2409 r4245  
    44   !! Ocean domain  :  1D configuration 
    55   !!===================================================================== 
    6    !! History :   2.0  !  2004-09  (C. Ethe)  Original code 
    7    !!             3.0  !  2008-04 (G. Madec)  adaptation to SBC 
     6   !! History :   2.0  !  2004-09 (C. Ethe)     Original code 
     7   !!             3.0  !  2008-04 (G. Madec)    adaptation to SBC 
     8   !!             3.5  !  2013-10 (D. Calvert)  add namelist 
    89   !!---------------------------------------------------------------------- 
     10#if defined key_c1d 
     11   !!---------------------------------------------------------------------- 
     12   !!   'key_c1d'                                   1D column configuration 
     13   !!---------------------------------------------------------------------- 
     14   !!   c1d_init       : read in the C1D namelist 
     15   !!---------------------------------------------------------------------- 
     16   USE in_out_manager   ! I/O manager 
     17   USE par_kind         ! kind parameters 
    918 
    1019   IMPLICIT NONE 
    1120   PRIVATE 
    1221 
    13 #if defined key_c1d 
    14    LOGICAL, PUBLIC, PARAMETER ::   lk_c1d = .TRUE.    !: 1D config. flag activated 
    15 #else 
    16    LOGICAL, PUBLIC, PARAMETER ::   lk_c1d = .FALSE.   !: 1D config. flag de-activated 
    17 #endif 
     22   PUBLIC   c1d_init                                 ! called by nemogcm.F90 
     23 
     24   LOGICAL , PUBLIC, PARAMETER ::  lk_c1d = .TRUE.   ! 1D config. flag 
     25 
     26   REAL(wp), PUBLIC            ::  rn_lat1d     ! Column latitude 
     27   REAL(wp), PUBLIC            ::  rn_lon1d     ! Column longitude 
    1828 
    1929   !!---------------------------------------------------------------------- 
     
    2232   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt) 
    2333   !!====================================================================== 
     34CONTAINS 
     35 
     36   SUBROUTINE c1d_init 
     37      !!---------------------------------------------------------------------- 
     38      !!                  ***  ROUTINE c1d_init  *** 
     39      !!  
     40      !! ** Purpose :   Initialization of C1D options 
     41      !! 
     42      !! ** Method  :   Read namelist namc1d  
     43      !!---------------------------------------------------------------------- 
     44      INTEGER ::   ios                 ! Local integer output status for namelist read 
     45      NAMELIST/namc1d/ rn_lat1d, rn_lon1d 
     46      !!---------------------------------------------------------------------- 
     47      ! 
     48 
     49      REWIND( numnam_ref )              ! Namelist namc1d in reference namelist : Tracer advection scheme 
     50      READ  ( numnam_ref, namc1d, IOSTAT = ios, ERR = 901) 
     51901   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namc1d in reference namelist', lwp ) 
     52 
     53      REWIND( numnam_cfg )              ! Namelist namtra_adv in configuration namelist : Tracer advection scheme 
     54      READ  ( numnam_cfg, namc1d, IOSTAT = ios, ERR = 902 ) 
     55902   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namc1d in configuration namelist', lwp ) 
     56      WRITE ( numond, namc1d ) 
     57 
     58      ! 
     59      IF(lwp) THEN                    ! Control print 
     60         WRITE(numout,*) 
     61         WRITE(numout,*) 'c1d_init : Initialize 1D model configuration options' 
     62         WRITE(numout,*) '~~~~~~~~' 
     63         WRITE(numout,*) '   Namelist namc1d : set options for the C1D model' 
     64         WRITE(numout,*) '      column latitude                 rn_lat1d = ', rn_lat1d 
     65         WRITE(numout,*) '      column longitude                rn_lon1d = ', rn_lon1d 
     66      ENDIF 
     67      ! 
     68      ! 
     69   END SUBROUTINE c1d_init 
     70 
     71#else 
     72   !!---------------------------------------------------------------------- 
     73   !!   Dummy module :                           No use of 1D configuration 
     74   !!---------------------------------------------------------------------- 
     75   USE par_kind         ! kind parameters 
     76 
     77   LOGICAL, PUBLIC, PARAMETER ::   lk_c1d = .FALSE.   !: 1D config. flag de-activated 
     78   REAL(wp)                   ::   rn_lat1d, rn_lon1d 
     79CONTAINS 
     80 
     81   SUBROUTINE c1d_init               ! Dummy routine 
     82   END SUBROUTINE c1d_init 
     83 
     84#endif 
     85 
     86   !!====================================================================== 
    2487END MODULE c1d 
  • branches/2013/dev_LOCEAN_CMCC_INGV_MERC_UKMO_2013/NEMOGCM/NEMO/OPA_SRC/C1D/dtauvd.F90

    r4244 r4245  
    2626   PUBLIC   dta_uvd        ! called by istate.F90 and dyndmp.90 
    2727 
    28    LOGICAL , PUBLIC ::   ln_uvd_init   = .FALSE.      ! Flag to initialise with U & V current data 
    29    LOGICAL , PUBLIC ::   ln_uvd_dyndmp = .FALSE.      ! Flag for Newtonian damping toward U & V current data 
     28   LOGICAL , PUBLIC ::   ln_uvd_init         ! Flag to initialise with U & V current data 
     29   LOGICAL , PUBLIC ::   ln_uvd_dyndmp       ! Flag for Newtonian damping toward U & V current data 
    3030 
    3131   TYPE(FLD), ALLOCATABLE, DIMENSION(:) ::   sf_uvd   ! structure for input U & V current (file information and data) 
     
    5959      !! 
    6060      NAMELIST/namc1d_uvd/ ln_uvd_init, ln_uvd_dyndmp, cn_dir, sn_ucur, sn_vcur 
     61      INTEGER  ::   ios 
    6162      !!---------------------------------------------------------------------- 
    6263      ! 
     
    6465      ! 
    6566      ierr0 = 0  ;  ierr1 = 0  ;  ierr2 = 0  ;  ierr3 = 0 
    66       ! 
    67       cn_dir = './'                 ! default: directory in which the model is executed 
    68       ! 
    69       !                             !==   read namelist namc1d_uvd: flags and field info   ==! 
    70  
    71       !                             ! default values (NB: frequency positive => hours, negative => months) 
    72       !              !   file   ! frequency ! variable  ! time intep !  clim   ! 'yearly' or ! weights  ! rotation ! 
    73       !              !   name   !  (hours)  !  name     !   (T/F)    !  (T/F)  !  'monthly'  ! filename ! pairs    ! 
    74       sn_ucur = FLD_N( 'ucurrent',   -1     , 'u_current',  .false.  , .true.  ,  'monthly'  , ''       , 'Ume'    ) 
    75       sn_vcur = FLD_N( 'vcurrent',   -1     , 'v_current',  .false.  , .true.  ,  'monthly'  , ''       , 'Vme'    ) 
    76  
    77       REWIND( numnam )              ! Read in namelist namc1d_uvd 
    78       READ  ( numnam, namc1d_uvd ) 
     67 
     68      REWIND( numnam_ref )              ! Namelist namc1d_uvd in reference namelist :  
     69      READ  ( numnam_ref, namc1d_uvd, IOSTAT = ios, ERR = 901) 
     70901   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namc1d_uvd in reference namelist', lwp ) 
     71 
     72      REWIND( numnam_cfg )              ! Namelist namc1d_uvd in configuration namelist : Parameters of the run 
     73      READ  ( numnam_cfg, namc1d_uvd, IOSTAT = ios, ERR = 902 ) 
     74902   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namc1d_uvd in configuration namelist', lwp ) 
     75      WRITE ( numond, namc1d_uvd ) 
    7976 
    8077      !                             ! force the initialization when dyndmp is used 
  • branches/2013/dev_LOCEAN_CMCC_INGV_MERC_UKMO_2013/NEMOGCM/NEMO/OPA_SRC/C1D/dyndmp.F90

    r4244 r4245  
    3333   PUBLIC   dyn_dmp      ! routine called by step_c1d.F90 
    3434 
    35    LOGICAL, PUBLIC ::   ln_dyndmp = .TRUE.                             ! Flag for Newtonian damping 
     35   LOGICAL, PUBLIC ::   ln_dyndmp           ! Flag for Newtonian damping 
    3636 
    3737   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::  utrdmp    ! damping U current trend (m/s2) 
     
    7373      !!---------------------------------------------------------------------- 
    7474      NAMELIST/namc1d_dyndmp/ ln_dyndmp 
    75       !!---------------------------------------------------------------------- 
    76  
    77       REWIND ( numnam )                      !==   read namelist namc1d_dyndmp : momentum damping flag     ==! 
    78       READ   ( numnam, namc1d_dyndmp )       !==   (namelist of namtra_dmp is used for other parameters)   ==! 
     75      INTEGER :: ios 
     76      !!---------------------------------------------------------------------- 
     77 
     78      REWIND( numnam_ref )              ! Namelist namc1d_dyndmp in reference namelist :  
     79      READ  ( numnam_ref, namc1d_dyndmp, IOSTAT = ios, ERR = 901) 
     80901   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namc1d_dyndmp in reference namelist', lwp ) 
     81 
     82      REWIND( numnam_cfg )              ! Namelist namc1d_dyndmp in configuration namelist : Parameters of the run 
     83      READ  ( numnam_cfg, namc1d_dyndmp, IOSTAT = ios, ERR = 902 ) 
     84902   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namc1d_dyndmp in configuration namelist', lwp ) 
     85      WRITE ( numond, namc1d_dyndmp ) 
    7986 
    8087      IF(lwp) THEN                           ! control print 
  • branches/2013/dev_LOCEAN_CMCC_INGV_MERC_UKMO_2013/NEMOGCM/NEMO/OPA_SRC/C1D/step_c1d.F90

    r4153 r4245  
    1313   !!   stp_c1d        : NEMO system time-stepping in c1d case 
    1414   !!---------------------------------------------------------------------- 
    15    USE step_oce         ! time stepping definition modules  
     15   USE step_oce        ! time stepping definition modules  
    1616#if defined key_top 
    17    USE trcstp           ! passive tracer time-stepping      (trc_stp routine) 
     17   USE trcstp          ! passive tracer time-stepping      (trc_stp routine) 
    1818#endif 
    1919   USE dyncor_c1d      ! Coriolis term (c1d case)         (dyn_cor_1d     ) 
    2020   USE dynnxt_c1d      ! time-stepping                    (dyn_nxt routine) 
     21   USE dyndmp          ! U & V momentum damping           (dyn_dmp routine) 
    2122   USE restart         ! restart  
    2223 
     
    124125                             CALL tra_sbc    ( kstp )        ! surface boundary condition 
    125126      IF( ln_traqsr      )   CALL tra_qsr    ( kstp )        ! penetrative solar radiation qsr 
     127      IF( ln_tradmp      )   CALL tra_dmp    ( kstp )        ! internal damping trends- tracers 
    126128      IF( lk_zdfkpp      )   CALL tra_kpp    ( kstp )        ! KPP non-local tracer fluxes 
    127129                             CALL tra_zdf    ( kstp )        ! vertical mixing 
     
    136138                               va(:,:,:) = 0.e0 
    137139 
     140      IF( ln_dyndmp      )     CALL dyn_dmp    ( kstp )       ! internal damping trends- momentum 
    138141                               CALL dyn_cor_c1d( kstp )       ! vorticity term including Coriolis 
    139142                               CALL dyn_zdf    ( kstp )       ! vertical diffusion 
  • branches/2013/dev_LOCEAN_CMCC_INGV_MERC_UKMO_2013/NEMOGCM/NEMO/OPA_SRC/DOM/domain.F90

    r4152 r4245  
    125125         &             nn_it000, nn_itend  , nn_date0    , nn_leapy     , nn_istate , nn_stock ,   & 
    126126         &             nn_write, ln_dimgnnn, ln_mskland  , ln_clobber   , nn_chunksz 
    127       NAMELIST/namdom/ nn_bathy , rn_e3zps_min, rn_e3zps_rat, nn_msh    , rn_hmin,   & 
    128          &             nn_acc   , rn_atfp     , rn_rdt      , rn_rdtmin ,            & 
     127      NAMELIST/namdom/ nn_bathy, rn_bathy , rn_e3zps_min, rn_e3zps_rat, nn_msh, rn_hmin,   & 
     128         &             nn_acc   , rn_atfp     , rn_rdt      , rn_rdtmin ,                  & 
    129129         &             rn_rdtmax, rn_rdth     , nn_baro     , nn_closea , ln_crs,    & 
    130130         &             jphgr_msh, & 
     
    228228         WRITE(numout,*) '   Namelist namdom : space & time domain' 
    229229         WRITE(numout,*) '      flag read/compute bathymetry      nn_bathy     = ', nn_bathy 
     230         WRITE(numout,*) '      Depth (if =0 bathy=jpkm1)         rn_bathy     = ', rn_bathy 
    230231         WRITE(numout,*) '      min depth of the ocean    (>0) or    rn_hmin   = ', rn_hmin 
    231232         WRITE(numout,*) '      min number of ocean level (<0)       ' 
  • branches/2013/dev_LOCEAN_CMCC_INGV_MERC_UKMO_2013/NEMOGCM/NEMO/OPA_SRC/DOM/domcfg.F90

    r4147 r4245  
    1616   USE lib_mpp         ! distributed memory computing library 
    1717   USE timing          ! Timing 
     18   USE c1d             ! 1D configuration 
     19   USE domc1d          ! 1D configuration: column location 
    1820 
    1921   IMPLICIT NONE 
     
    7981      INTEGER ::   ji, jj   ! dummy loop argument 
    8082      !!---------------------------------------------------------------------- 
     83      !                              ! recalculate jpizoom/jpjzoom given lat/lon 
     84      IF( lk_c1d )  CALL dom_c1d( rn_lat1d, rn_lon1d ) 
     85      ! 
    8186      !                        ! ============== ! 
    8287      !                        !  Local domain  !  
  • branches/2013/dev_LOCEAN_CMCC_INGV_MERC_UKMO_2013/NEMOGCM/NEMO/OPA_SRC/DOM/domzgr.F90

    r4153 r4245  
    374374            IF(lwp) WRITE(numout,*) 
    375375            IF(lwp) WRITE(numout,*) '         bathymetry field: flat basin' 
    376             idta(:,:) = jpkm1                            ! before last level 
    377             zdta(:,:) = gdepw_0(jpk)                     ! last w-point depth 
    378             h_oce     = gdepw_0(jpk) 
     376            IF( rn_bathy > 0.01 ) THEN  
     377               IF(lwp) WRITE(numout,*) '         Depth = rn_bathy read in namelist' 
     378               zdta(:,:) = rn_bathy 
     379               IF( ln_sco ) THEN                                   ! s-coordinate (zsc       ): idta()=jpk 
     380                  idta(:,:) = jpkm1 
     381               ELSE                                                ! z-coordinate (zco or zps): step-like topography 
     382                  idta(:,:) = jpkm1 
     383                  DO jk = 1, jpkm1 
     384                     WHERE( gdept_0(jk) < zdta(:,:) .AND. zdta(:,:) <= gdept_0(jk+1) )   idta(:,:) = jk 
     385                  END DO 
     386               ENDIF 
     387            ELSE 
     388               IF(lwp) WRITE(numout,*) '         Depth = depthw(jpkm1)' 
     389               idta(:,:) = jpkm1                            ! before last level 
     390               zdta(:,:) = gdepw_0(jpk)                     ! last w-point depth 
     391               h_oce     = gdepw_0(jpk) 
     392            ENDIF 
    379393         ELSE                                         ! bump centered in the basin 
    380394            IF(lwp) WRITE(numout,*) 
     
    11061120      INTEGER  ::   ios                      ! Local integer output status for namelist read 
    11071121      REAL(wp) ::   zrmax, ztaper   ! temporary scalars 
    1108       ! 
     1122      REAL(wp) ::   zrfact 
     1123      ! 
     1124      REAL(wp), POINTER, DIMENSION(:,:  ) :: ztmpi1, ztmpi2, ztmpj1, ztmpj2 
    11091125      REAL(wp), POINTER, DIMENSION(:,:  ) :: zenv, ztmp, zmsk, zri, zrj, zhbat 
    11101126 
     
    11151131      IF( nn_timing == 1 )  CALL timing_start('zgr_sco') 
    11161132      ! 
    1117       CALL wrk_alloc( jpi, jpj,      zenv, ztmp, zmsk, zri, zrj, zhbat                          ) 
     1133      CALL wrk_alloc( jpi, jpj, zenv, ztmp, zmsk, zri, zrj, zhbat , ztmpi1, ztmpi2, ztmpj1, ztmpj2 ) 
    11181134      ! 
    11191135      REWIND( numnam_ref )              ! Namelist namzgr_sco in reference namelist : Sigma-stretching parameters 
     
    11691185      !                                        ! ============================= 
    11701186      ! use r-value to create hybrid coordinates 
     1187      zenv(:,:) = bathy(:,:) 
     1188      ! 
     1189      ! set first land point adjacent to a wet cell to sbot_min as this needs to be included in smoothing 
    11711190      DO jj = 1, jpj 
    11721191         DO ji = 1, jpi 
    1173             zenv(ji,jj) = MAX( bathy(ji,jj), rn_sbot_min ) 
    1174          END DO 
    1175       END DO 
     1192           IF( bathy(ji,jj) == 0._wp ) THEN 
     1193             iip1 = MIN( ji+1, jpi ) 
     1194             ijp1 = MIN( jj+1, jpj ) 
     1195             iim1 = MAX( ji-1, 1 ) 
     1196             ijm1 = MAX( jj-1, 1 ) 
     1197             IF( (bathy(iip1,jj) + bathy(iim1,jj) + bathy(ji,ijp1) + bathy(ji,ijm1) +              & 
     1198        &         bathy(iip1,ijp1) + bathy(iim1,ijm1) + bathy(iip1,ijp1) + bathy(iim1,ijm1)) > 0._wp ) THEN 
     1199               zenv(ji,jj) = rn_sbot_min 
     1200             ENDIF 
     1201           ENDIF 
     1202         END DO 
     1203      END DO 
     1204      ! apply lateral boundary condition   CAUTION: keep the value when the lbc field is zero 
     1205      CALL lbc_lnk( zenv, 'T', 1._wp, 'no0' ) 
    11761206      !  
    1177       ! Smooth the bathymetry (if required) 
     1207      ! smooth the bathymetry (if required) 
    11781208      scosrf(:,:) = 0._wp             ! ocean surface depth (here zero: no under ice-shelf sea) 
    11791209      scobot(:,:) = bathy(:,:)        ! ocean bottom  depth 
     
    11811211      jl = 0 
    11821212      zrmax = 1._wp 
    1183       !                                                     ! ================ ! 
    1184       DO WHILE( jl <= 10000 .AND. zrmax > rn_rmax )         !  Iterative loop  ! 
    1185          !                                                  ! ================ ! 
     1213      !    
     1214      !      
     1215      ! set scaling factor used in reducing vertical gradients 
     1216      zrfact = ( 1._wp - rn_rmax ) / ( 1._wp + rn_rmax ) 
     1217      ! 
     1218      ! initialise temporary evelope depth arrays 
     1219      ztmpi1(:,:) = zenv(:,:) 
     1220      ztmpi2(:,:) = zenv(:,:) 
     1221      ztmpj1(:,:) = zenv(:,:) 
     1222      ztmpj2(:,:) = zenv(:,:) 
     1223      ! 
     1224      ! initialise temporary r-value arrays 
     1225      zri(:,:) = 1._wp 
     1226      zrj(:,:) = 1._wp 
     1227      !                                                            ! ================ ! 
     1228      DO WHILE( jl <= 10000 .AND. ( zrmax - rn_rmax ) > 1.e-8_wp ) !  Iterative loop  ! 
     1229         !                                                         ! ================ ! 
    11861230         jl = jl + 1 
    11871231         zrmax = 0._wp 
    1188          zmsk(:,:) = 0._wp 
     1232         ! we set zrmax from previous r-values (zri and zrj) first 
     1233         ! if set after current r-value calculation (as previously) 
     1234         ! we could exit DO WHILE prematurely before checking r-value 
     1235         ! of current zenv 
     1236         DO jj = 1, nlcj 
     1237            DO ji = 1, nlci 
     1238               zrmax = MAX( zrmax, ABS(zri(ji,jj)), ABS(zrj(ji,jj)) ) 
     1239            END DO 
     1240         END DO 
     1241         zri(:,:) = 0._wp 
     1242         zrj(:,:) = 0._wp 
    11891243         DO jj = 1, nlcj 
    11901244            DO ji = 1, nlci 
    11911245               iip1 = MIN( ji+1, nlci )      ! force zri = 0 on last line (ji=ncli+1 to jpi) 
    11921246               ijp1 = MIN( jj+1, nlcj )      ! force zrj = 0 on last raw  (jj=nclj+1 to jpj) 
    1193                zri(ji,jj) = ABS( zenv(iip1,jj  ) - zenv(ji,jj) ) / ( zenv(iip1,jj  ) + zenv(ji,jj) ) 
    1194                zrj(ji,jj) = ABS( zenv(ji  ,ijp1) - zenv(ji,jj) ) / ( zenv(ji  ,ijp1) + zenv(ji,jj) ) 
    1195                zrmax = MAX( zrmax, zri(ji,jj), zrj(ji,jj) ) 
    1196                IF( zri(ji,jj) > rn_rmax )   zmsk(ji  ,jj  ) = 1._wp 
    1197                IF( zri(ji,jj) > rn_rmax )   zmsk(iip1,jj  ) = 1._wp 
    1198                IF( zrj(ji,jj) > rn_rmax )   zmsk(ji  ,jj  ) = 1._wp 
    1199                IF( zrj(ji,jj) > rn_rmax )   zmsk(ji  ,ijp1) = 1._wp 
     1247               IF( (zenv(ji,jj) > 0._wp) .AND. (zenv(iip1,jj) > 0._wp)) THEN 
     1248                  zri(ji,jj) = ( zenv(iip1,jj  ) - zenv(ji,jj) ) / ( zenv(iip1,jj  ) + zenv(ji,jj) ) 
     1249               END IF 
     1250               IF( (zenv(ji,jj) > 0._wp) .AND. (zenv(ji,ijp1) > 0._wp)) THEN 
     1251                  zrj(ji,jj) = ( zenv(ji  ,ijp1) - zenv(ji,jj) ) / ( zenv(ji  ,ijp1) + zenv(ji,jj) ) 
     1252               END IF 
     1253               IF( zri(ji,jj) >  rn_rmax )   ztmpi1(ji  ,jj  ) = zenv(iip1,jj  ) * zrfact 
     1254               IF( zri(ji,jj) < -rn_rmax )   ztmpi2(iip1,jj  ) = zenv(ji  ,jj  ) * zrfact 
     1255               IF( zrj(ji,jj) >  rn_rmax )   ztmpj1(ji  ,jj  ) = zenv(ji  ,ijp1) * zrfact 
     1256               IF( zrj(ji,jj) < -rn_rmax )   ztmpj2(ji  ,ijp1) = zenv(ji  ,jj  ) * zrfact 
    12001257            END DO 
    12011258         END DO 
    12021259         IF( lk_mpp )   CALL mpp_max( zrmax )   ! max over the global domain 
    1203          ! lateral boundary condition on zmsk: keep 1 along closed boundary (use of MAX) 
    1204          ztmp(:,:) = zmsk(:,:)   ;   CALL lbc_lnk( zmsk, 'T', 1._wp ) 
    1205          DO jj = 1, nlcj 
    1206             DO ji = 1, nlci 
    1207                 zmsk(ji,jj) = MAX( zmsk(ji,jj), ztmp(ji,jj) ) 
    1208             END DO 
    1209          END DO 
    12101260         ! 
    1211          IF(lwp)WRITE(numout,*) 'zgr_sco :   iter= ',jl, ' rmax= ', zrmax, ' nb of pt= ', INT( SUM(zmsk(:,:) ) ) 
     1261         IF(lwp)WRITE(numout,*) 'zgr_sco :   iter= ',jl, ' rmax= ', zrmax 
    12121262         ! 
    12131263         DO jj = 1, nlcj 
    12141264            DO ji = 1, nlci 
    1215                iip1 = MIN( ji+1, nlci )     ! last  line (ji=nlci) 
    1216                ijp1 = MIN( jj+1, nlcj )     ! last  raw  (jj=nlcj) 
    1217                iim1 = MAX( ji-1,  1  )      ! first line (ji=nlci) 
    1218                ijm1 = MAX( jj-1,  1  )      ! first raw  (jj=nlcj) 
    1219                IF( zmsk(ji,jj) == 1._wp ) THEN 
    1220                   ztmp(ji,jj) =   (                                                                                   & 
    1221              &      zenv(iim1,ijp1)*zmsk(iim1,ijp1) + zenv(ji,ijp1)*zmsk(ji,ijp1) + zenv(iip1,ijp1)*zmsk(iip1,ijp1)   & 
    1222              &    + zenv(iim1,jj  )*zmsk(iim1,jj  ) + zenv(ji,jj  )*    2._wp     + zenv(iip1,jj  )*zmsk(iip1,jj  )   & 
    1223              &    + zenv(iim1,ijm1)*zmsk(iim1,ijm1) + zenv(ji,ijm1)*zmsk(ji,ijm1) + zenv(iip1,ijm1)*zmsk(iip1,ijm1)   & 
    1224              &                    ) / (                                                                               & 
    1225              &                      zmsk(iim1,ijp1) +               zmsk(ji,ijp1) +                 zmsk(iip1,ijp1)   & 
    1226              &    +                 zmsk(iim1,jj  ) +                   2._wp     +                 zmsk(iip1,jj  )   & 
    1227              &    +                 zmsk(iim1,ijm1) +               zmsk(ji,ijm1) +                 zmsk(iip1,ijm1)   & 
    1228              &                        ) 
    1229                ENDIF 
    1230             END DO 
    1231          END DO 
    1232          ! 
    1233          DO jj = 1, nlcj 
    1234             DO ji = 1, nlci 
    1235                IF( zmsk(ji,jj) == 1._wp )   zenv(ji,jj) = MAX( ztmp(ji,jj), bathy(ji,jj) ) 
    1236             END DO 
    1237          END DO 
    1238          ! 
    1239          ! Apply lateral boundary condition   CAUTION: keep the value when the lbc field is zero 
    1240          ztmp(:,:) = zenv(:,:)   ;   CALL lbc_lnk( zenv, 'T', 1._wp ) 
    1241          DO jj = 1, nlcj 
    1242             DO ji = 1, nlci 
    1243                IF( zenv(ji,jj) == 0._wp )   zenv(ji,jj) = ztmp(ji,jj) 
    1244             END DO 
    1245          END DO 
     1265               zenv(ji,jj) = MAX(zenv(ji,jj), ztmpi1(ji,jj), ztmpi2(ji,jj), ztmpj1(ji,jj), ztmpj2(ji,jj) ) 
     1266            END DO 
     1267         END DO 
     1268         ! apply lateral boundary condition   CAUTION: keep the value when the lbc field is zero 
     1269         CALL lbc_lnk( zenv, 'T', 1._wp, 'no0' ) 
    12461270         !                                                  ! ================ ! 
    12471271      END DO                                                !     End loop     ! 
    12481272      !                                                     ! ================ ! 
    1249       ! 
    1250       ! Fill ghost rows with appropriate values to avoid undefined e3 values with some mpp decompositions 
    1251       DO ji = nlci+1, jpi  
    1252          zenv(ji,1:nlcj) = zenv(nlci,1:nlcj) 
    1253       END DO 
    1254       ! 
    1255       DO jj = nlcj+1, jpj 
    1256          zenv(:,jj) = zenv(:,nlcj) 
     1273      DO jj = 1, jpj 
     1274         DO ji = 1, jpi 
     1275            zenv(ji,jj) = MAX( zenv(ji,jj), rn_sbot_min ) ! set all points to avoid undefined scale value warnings 
     1276         END DO 
    12571277      END DO 
    12581278      ! 
     
    15321552      END DO 
    15331553      ! 
    1534       CALL wrk_dealloc( jpi, jpj,      zenv, ztmp, zmsk, zri, zrj, zhbat                          ) 
     1554      CALL wrk_dealloc( jpi, jpj, zenv, ztmp, zmsk, zri, zrj, zhbat , ztmpi1, ztmpi2, ztmpj1, ztmpj2 ) 
    15351555      ! 
    15361556      IF( nn_timing == 1 )  CALL timing_stop('zgr_sco') 
  • branches/2013/dev_LOCEAN_CMCC_INGV_MERC_UKMO_2013/NEMOGCM/NEMO/OPA_SRC/DOM/dtatsd.F90

    r4230 r4245  
    7070      ierr0 = 0  ;  ierr1 = 0  ;  ierr2 = 0  ;  ierr3 = 0 
    7171      ! 
    72       !                             ! set default namelist values  
    73       cn_dir = './'                       ! directory in which the model is executed 
    74       !                                   ! sn_... default values (NB: frequency positive => hours, negative => months) 
    75       !            !   file    ! frequency ! variable  ! time intep !  clim   ! 'yearly' or ! weights  ! rotation ! land/sea mask ! 
    76       !            !   name    !  (hours)  !  name     !   (T/F)    !  (T/F)  !  'monthly'  ! filename ! pairs    ! filename      ! 
    77       sn_tem = FLD_N( 'temperature',  -1.  , 'votemper',  .false.   , .true.  ,  'monthly'  , ''       , & 
    78            & ''       , ''            ) 
    79       sn_sal = FLD_N( 'salinity'   ,  -1.  , 'vosaline',  .false.   , .true.  ,  'monthly'  , ''       , & 
    80            & ''       , ''            ) 
    81   
    8272      REWIND( numnam_ref )              ! Namelist namtsd in reference namelist :  
    8373      READ  ( numnam_ref, namtsd, IOSTAT = ios, ERR = 901) 
  • branches/2013/dev_LOCEAN_CMCC_INGV_MERC_UKMO_2013/NEMOGCM/NEMO/OPA_SRC/DOM/istate.F90

    r3764 r4245  
    2626   USE oce             ! ocean dynamics and active tracers  
    2727   USE dom_oce         ! ocean space and time domain  
     28   USE c1d             ! 1D vertical configuration 
    2829   USE daymod          ! calendar 
    2930   USE eosbn2          ! eq. of state, Brunt Vaisala frequency (eos     routine) 
     
    3233   USE phycst          ! physical constants 
    3334   USE dtatsd          ! data temperature and salinity   (dta_tsd routine) 
     35   USE dtauvd          ! data: U & V current             (dta_uvd routine) 
    3436   USE in_out_manager  ! I/O manager 
    3537   USE iom             ! I/O library 
     
    7072      ! - ML - needed for initialization of e3t_b 
    7173      INTEGER  ::  jk     ! dummy loop indice 
     74      REAL(wp), POINTER, DIMENSION(:,:,:,:)  ::  zuvd    ! U & V data workspace 
    7275      !!---------------------------------------------------------------------- 
    7376      ! 
     
    8083 
    8184      CALL dta_tsd_init                       ! Initialisation of T & S input data 
     85      IF( lk_c1d ) CALL dta_uvd_init          ! Initialization of U & V input data 
    8286 
    8387      rhd  (:,:,:  ) = 0.e0 
     
    111115         ELSEIF( cp_cfg == 'gyre' ) THEN          
    112116            CALL istate_gyre                     ! GYRE  configuration : start from pre-defined T-S fields 
    113          ELSEIF( ln_tsd_init      ) THEN         ! Initial T-S fields read in files 
    114             CALL dta_tsd( nit000, tsb )                  ! read 3D T and S data at nit000 
    115             tsn(:,:,:,:) = tsb(:,:,:,:) 
    116             ! 
    117          ELSE                                    ! Initial T-S fields defined analytically 
    118             CALL istate_t_s 
     117         ELSE                                    ! Initial T-S, U-V fields read in files 
     118            IF ( ln_tsd_init ) THEN              ! read 3D T and S data at nit000 
     119               CALL dta_tsd( nit000, tsb )   
     120               tsn(:,:,:,:) = tsb(:,:,:,:) 
     121               ! 
     122            ELSE                                 ! Initial T-S fields defined analytically 
     123               CALL istate_t_s 
     124            ENDIF 
     125            IF ( ln_uvd_init .AND. lk_c1d ) THEN ! read 3D U and V data at nit000 
     126               CALL wrk_alloc( jpi, jpj, jpk, 2, zuvd ) 
     127               CALL dta_uvd( nit000, zuvd ) 
     128               ub(:,:,:) = zuvd(:,:,:,1) ;  un(:,:,:) = ub(:,:,:) 
     129               vb(:,:,:) = zuvd(:,:,:,2) ;  vn(:,:,:) = vb(:,:,:) 
     130               CALL wrk_dealloc( jpi, jpj, jpk, 2, zuvd ) 
     131            ENDIF 
    119132         ENDIF 
    120133         ! 
     
    180193   END SUBROUTINE istate_t_s 
    181194 
    182  
    183195   SUBROUTINE istate_eel 
    184196      !!---------------------------------------------------------------------- 
     
    404416 
    405417   END SUBROUTINE istate_gyre 
    406  
    407418 
    408419   SUBROUTINE istate_uvg 
  • branches/2013/dev_LOCEAN_CMCC_INGV_MERC_UKMO_2013/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg.F90

    r3625 r4245  
    1414   USE oce            ! ocean dynamics and tracers variables 
    1515   USE dom_oce        ! ocean space and time domain variables 
     16   USE c1d            ! 1D vertical configuration 
    1617   USE phycst         ! physical constants 
    1718   USE sbc_oce        ! surface boundary condition: ocean 
     
    220221      IF(lk_dynspg_flt)   ioptio = ioptio + 1 
    221222      ! 
    222       IF( ( ioptio > 1 .AND. .NOT. lk_esopa ) .OR. ioptio == 0 )   & 
     223      IF( ( ioptio > 1 .AND. .NOT. lk_esopa ) .OR. ( ioptio == 0 .AND. .NOT. lk_c1d ) )   & 
    223224           &   CALL ctl_stop( ' Choose only one surface pressure gradient scheme with a key cpp' ) 
    224225      ! 
  • branches/2013/dev_LOCEAN_CMCC_INGV_MERC_UKMO_2013/NEMOGCM/NEMO/OPA_SRC/IOM/iom.F90

    r4205 r4245  
    479479   !!                   INTERFACE iom_get 
    480480   !!---------------------------------------------------------------------- 
    481    SUBROUTINE iom_g0d( kiomid, cdvar, pvar ) 
     481   SUBROUTINE iom_g0d( kiomid, cdvar, pvar, ktime ) 
    482482      INTEGER         , INTENT(in   )                 ::   kiomid    ! Identifier of the file 
    483483      CHARACTER(len=*), INTENT(in   )                 ::   cdvar     ! Name of the variable 
    484484      REAL(wp)        , INTENT(  out)                 ::   pvar      ! read field 
    485       ! 
    486       INTEGER               :: idvar   ! variable id 
     485      INTEGER         , INTENT(in   ),     OPTIONAL   ::   ktime     ! record number 
     486      ! 
     487      INTEGER                                         ::   idvar     ! variable id 
     488      INTEGER                                         ::   idmspc    ! number of spatial dimensions 
     489      INTEGER         , DIMENSION(1)                  ::   itime     ! record number 
     490      CHARACTER(LEN=100)                              ::   clinfo    ! info character 
     491      CHARACTER(LEN=100)                              ::   clname    ! file name 
     492      CHARACTER(LEN=1)                                ::   cldmspc   ! 
     493      ! 
     494      itime = 1 
     495      IF( PRESENT(ktime) ) itime = ktime 
     496      ! 
     497      clname = iom_file(kiomid)%name 
     498      clinfo = '          iom_g0d, file: '//trim(clname)//', var: '//trim(cdvar) 
    487499      ! 
    488500      IF( kiomid > 0 ) THEN 
    489501         idvar = iom_varid( kiomid, cdvar ) 
    490502         IF( iom_file(kiomid)%nfid > 0 .AND. idvar > 0 ) THEN 
     503            idmspc = iom_file ( kiomid )%ndims( idvar ) 
     504            IF( iom_file(kiomid)%luld(idvar) )  idmspc = idmspc - 1 
     505            WRITE(cldmspc , fmt='(i1)') idmspc 
     506            IF( idmspc > 0 )  CALL ctl_stop( TRIM(clinfo), 'When reading to a 0D array, we do not accept data', & 
     507                                 &                         'with 1 or more spatial dimensions: '//cldmspc//' were found.' , & 
     508                                 &                         'Use ncwa -a to suppress the unnecessary dimensions' ) 
    491509            SELECT CASE (iom_file(kiomid)%iolib) 
    492             CASE (jpioipsl )   ;   CALL iom_ioipsl_get(  kiomid, idvar, pvar ) 
    493             CASE (jpnf90   )   ;   CALL iom_nf90_get(    kiomid, idvar, pvar ) 
     510            CASE (jpioipsl )   ;   CALL iom_ioipsl_get(  kiomid, idvar, pvar, itime ) 
     511            CASE (jpnf90   )   ;   CALL iom_nf90_get(    kiomid, idvar, pvar, itime ) 
    494512            CASE (jprstdimg)   ;   CALL iom_rstdimg_get( kiomid, idvar, pvar ) 
    495513            CASE DEFAULT     
     
    656674               ELSE 
    657675                  CALL ctl_stop( TRIM(clinfo), 'To keep iom lisibility, when reading a '//clrankpv//'D array,'         ,   & 
    658                      &                         'we do not accept data with more than '//cldmspc//' spatial dimension',   & 
     676                     &                         'we do not accept data with '//cldmspc//' spatial dimensions',   & 
    659677                     &                         'Use ncwa -a to suppress the unnecessary dimensions' ) 
    660678               ENDIF 
     
    768786 
    769787         IF( istop == nstop ) THEN   ! no additional errors until this point... 
    770             IF(lwp) WRITE(numout,"(10x,' read ',a,' (rec: ',i4,') in ',a,' ok')") TRIM(cdvar), itime, TRIM(iom_file(kiomid)%name) 
     788            IF(lwp) WRITE(numout,"(10x,' read ',a,' (rec: ',i6,') in ',a,' ok')") TRIM(cdvar), itime, TRIM(iom_file(kiomid)%name) 
    771789           
    772790            !--- overlap areas and extra hallows (mpp) 
  • branches/2013/dev_LOCEAN_CMCC_INGV_MERC_UKMO_2013/NEMOGCM/NEMO/OPA_SRC/IOM/iom_ioipsl.F90

    r2715 r4245  
    170170            iom_file(kiomid)%cn_var(kiv) = TRIM(cdvar) 
    171171            iom_file(kiomid)%ndims(kiv)  = i_nvd 
     172            iom_file(kiomid)%dimsz(:,kiv) = 0   ! reset dimsz in case previously used 
    172173            CALL flioinqv( ioipslid, cdvar, ll_fnd,   & 
    173174                  &           len_dims = iom_file(kiomid)%dimsz(1:i_nvd,kiv), &   ! dimensions size 
     
    210211 
    211212 
    212    SUBROUTINE iom_ioipsl_g0d( kiomid, kvid, pvar ) 
     213   SUBROUTINE iom_ioipsl_g0d( kiomid, kvid, pvar, kstart ) 
    213214      !!----------------------------------------------------------------------- 
    214215      !!                  ***  ROUTINE  iom_ioipsl_g0d  *** 
     
    216217      !! ** Purpose : read a scalar with IOIPSL (only fliocom module) 
    217218      !!----------------------------------------------------------------------- 
    218       INTEGER , INTENT(in   ) ::   kiomid    ! Identifier of the file 
    219       INTEGER , INTENT(in   ) ::   kvid      ! variable id 
    220       REAL(wp), INTENT(  out) ::   pvar      ! read field 
    221       ! 
    222       CALL fliogetv( iom_file(kiomid)%nfid, TRIM(iom_file(kiomid)%cn_var(kvid)), pvar ) 
     219      INTEGER ,               INTENT(in   )            ::   kiomid    ! Identifier of the file 
     220      INTEGER ,               INTENT(in   )            ::   kvid      ! variable id 
     221      REAL(wp),               INTENT(  out)            ::   pvar      ! read field 
     222      INTEGER , DIMENSION(1), INTENT(in   ), OPTIONAL  ::   kstart    ! start position of the reading in each axis 
     223      ! 
     224      CALL fliogetv( iom_file(kiomid)%nfid, TRIM(iom_file(kiomid)%cn_var(kvid)), pvar, kstart ) 
    223225      !  
    224226   END SUBROUTINE iom_ioipsl_g0d 
  • branches/2013/dev_LOCEAN_CMCC_INGV_MERC_UKMO_2013/NEMOGCM/NEMO/OPA_SRC/IOM/iom_nf90.F90

    r4161 r4245  
    217217         CALL iom_nf90_check(NF90_Inquire_Variable(if90id, ivarid, dimids = idimid(1:i_nvd)), clinfo)   ! dimensions ids 
    218218         iom_file(kiomid)%luld(kiv) = .FALSE.   ! default value 
     219         iom_file(kiomid)%dimsz(:,kiv) = 0   ! reset dimsz in case previously used 
    219220         DO ji = 1, i_nvd                       ! dimensions size 
    220221            CALL iom_nf90_check(NF90_Inquire_Dimension(if90id, idimid(ji), len = iom_file(kiomid)%dimsz(ji,kiv)), clinfo)    
     
    251252 
    252253 
    253    SUBROUTINE iom_nf90_g0d( kiomid, kvid, pvar ) 
     254   SUBROUTINE iom_nf90_g0d( kiomid, kvid, pvar, kstart ) 
    254255      !!----------------------------------------------------------------------- 
    255256      !!                  ***  ROUTINE  iom_nf90_g0d  *** 
     
    257258      !! ** Purpose : read a scalar with NF90 
    258259      !!----------------------------------------------------------------------- 
    259       INTEGER , INTENT(in   ) ::   kiomid   ! Identifier of the file 
    260       INTEGER , INTENT(in   ) ::   kvid     ! variable id 
    261       REAL(wp), INTENT(  out) ::   pvar     ! read field 
     260      INTEGER ,               INTENT(in   )            ::   kiomid   ! Identifier of the file 
     261      INTEGER ,               INTENT(in   )            ::   kvid     ! variable id 
     262      REAL(wp),               INTENT(  out)            ::   pvar     ! read field 
     263      INTEGER , DIMENSION(1), INTENT(in   ), OPTIONAL  ::   kstart   ! start position of the reading in each axis 
    262264      ! 
    263265      CHARACTER(LEN=100)      ::   clinfo   ! info character 
    264266      !--------------------------------------------------------------------- 
    265267      clinfo = 'iom_nf90_g0d , file: '//TRIM(iom_file(kiomid)%name)//', var: '//TRIM(iom_file(kiomid)%cn_var(kvid)) 
    266       CALL iom_nf90_check(NF90_GET_VAR(iom_file(kiomid)%nfid, iom_file(kiomid)%nvid(kvid), pvar), clinfo ) 
     268      CALL iom_nf90_check(NF90_GET_VAR(iom_file(kiomid)%nfid, iom_file(kiomid)%nvid(kvid), pvar, start = kstart), clinfo ) 
    267269      !  
    268270   END SUBROUTINE iom_nf90_g0d 
  • branches/2013/dev_LOCEAN_CMCC_INGV_MERC_UKMO_2013/NEMOGCM/NEMO/OPA_SRC/OBS/diaobs.F90

    r4147 r4245  
    2121   USE par_oce 
    2222   USE dom_oce                  ! Ocean space and time domain variables 
     23   USE obs_fbm, ONLY: ln_cl4    ! Class 4 diagnostic switch 
    2324   USE obs_read_prof            ! Reading and allocation of observations (Coriolis) 
    2425   USE obs_read_sla             ! Reading and allocation of SLA observations   
     
    4849   PUBLIC dia_obs_init, &  ! Initialize and read observations 
    4950      &   dia_obs,      &  ! Compute model equivalent to observations 
    50       &   dia_obs_wri      ! Write model equivalent to observations 
     51      &   dia_obs_wri,  &  ! Write model equivalent to observations 
     52      &   dia_obs_dealloc  ! Deallocate dia_obs data 
    5153 
    5254   !! * Shared Module variables 
     
    8082   LOGICAL, PUBLIC :: ln_ssh         !: Logical switch for sea surface height 
    8183   LOGICAL, PUBLIC :: ln_sss         !: Logical switch for sea surface salinity 
     84   LOGICAL, PUBLIC :: ln_sstnight    !: Logical switch for night mean SST observations 
    8285   LOGICAL, PUBLIC :: ln_nea         !: Remove observations near land 
    8386   LOGICAL, PUBLIC :: ln_altbias     !: Logical switch for altimeter bias   
     
    167170         &            nmsshc, mdtcorr, mdtcutoff,                     & 
    168171         &            ln_reysst, ln_ghrsst, reysstname, reysstfmt,    & 
     172         &            ln_sstnight,                                    & 
    169173         &            ln_grid_search_lookup,                          & 
    170174         &            grid_search_file, grid_search_res,              & 
     
    176180         &            ln_velhradcp, velhradcpfiles,                   & 
    177181         &            ln_velfb, velfbfiles, ln_velfb_av,              & 
    178          &            ln_profb_enatim, ln_ignmis 
     182         &            ln_profb_enatim, ln_ignmis, ln_cl4 
    179183 
    180184      INTEGER :: jprofset 
     
    311315         WRITE(numout,*) '             Logical switch for GHRSST observations          ln_ghrsst = ', ln_ghrsst 
    312316         WRITE(numout,*) '             Logical switch for feedback SST data             ln_sstfb = ', ln_sstfb 
     317         WRITE(numout,*) '             Logical switch for night-time SST obs         ln_sstnight = ', ln_sstnight 
    313318         WRITE(numout,*) '             Logical switch for SSS observations                ln_sss = ', ln_sss 
    314319         WRITE(numout,*) '             Logical switch for Sea Ice observations         ln_seaice = ', ln_seaice 
     
    704709            nsstsets = nsstsets + 1 
    705710 
    706             ld_sstnight(nsstsets) = .TRUE. 
     711            ld_sstnight(nsstsets) = ln_sstnight 
    707712 
    708713            CALL obs_rea_sst_rey( reysstname, reysstfmt, sstdata(nsstsets), & 
     
    718723            nsstsets = nsstsets + 1 
    719724 
    720             ld_sstnight(nsstsets) = .TRUE. 
     725            ld_sstnight(nsstsets) = ln_sstnight 
    721726           
    722727            CALL obs_rea_sst( 1, sstdata(nsstsets), jnumsst, & 
     
    737742               nsstsets = nsstsets + 1 
    738743 
    739                ld_sstnight(nsstsets) = .TRUE. 
     744               ld_sstnight(nsstsets) = ln_sstnight 
    740745             
    741746               CALL obs_rea_sst( 0, sstdata(nsstsets), 1, & 
     
    13681373   END SUBROUTINE dia_obs_wri 
    13691374 
     1375   SUBROUTINE dia_obs_dealloc 
     1376      IMPLICIT NONE 
     1377      !!---------------------------------------------------------------------- 
     1378      !!                    *** ROUTINE dia_obs_dealloc *** 
     1379      !! 
     1380      !!  ** Purpose : To deallocate data to enable the obs_oper online loop. 
     1381      !!               Specifically: dia_obs_init --> dia_obs --> dia_obs_wri 
     1382      !! 
     1383      !!  ** Method : Clean up various arrays left behind by the obs_oper. 
     1384      !! 
     1385      !!  ** Action : 
     1386      !! 
     1387      !!---------------------------------------------------------------------- 
     1388      !! obs_grid deallocation 
     1389      CALL obs_grid_deallocate 
     1390 
     1391      !! diaobs deallocation 
     1392      IF ( nprofsets > 0 ) THEN 
     1393          DEALLOCATE(ld_enact, & 
     1394                  &  profdata, & 
     1395                  &  prodatqc) 
     1396      END IF 
     1397      IF ( ln_sla ) THEN 
     1398          DEALLOCATE(sladata, & 
     1399                  &  sladatqc) 
     1400      END IF 
     1401      IF ( ln_seaice ) THEN 
     1402          DEALLOCATE(sladata, & 
     1403                  &  sladatqc) 
     1404      END IF 
     1405      IF ( ln_sst ) THEN 
     1406          DEALLOCATE(sstdata, & 
     1407                  &  sstdatqc) 
     1408      END IF 
     1409      IF ( ln_vel3d ) THEN 
     1410          DEALLOCATE(ld_velav, & 
     1411                  &  velodata, & 
     1412                  &  veldatqc) 
     1413      END IF 
     1414   END SUBROUTINE dia_obs_dealloc 
     1415 
    13701416   SUBROUTINE ini_date( ddobsini ) 
    13711417      !!---------------------------------------------------------------------- 
  • branches/2013/dev_LOCEAN_CMCC_INGV_MERC_UKMO_2013/NEMOGCM/NEMO/OPA_SRC/OBS/mpp_map.F90

    r2363 r4245  
    5252      !!---------------------------------------------------------------------- 
    5353 
    54       ALLOCATE( & 
    55          & mppmap(jpiglo,jpjglo) & 
    56          & ) 
    57  
     54      IF (.NOT. ALLOCATED(mppmap)) THEN 
     55         ALLOCATE( & 
     56            & mppmap(jpiglo,jpjglo) & 
     57            & ) 
     58      ENDIF 
    5859      ! Initialize local imppmap 
    5960 
  • branches/2013/dev_LOCEAN_CMCC_INGV_MERC_UKMO_2013/NEMOGCM/NEMO/OPA_SRC/OBS/obs_fbm.F90

    r2287 r4245  
    4545   INTEGER, PARAMETER    :: fbimdi = -99999   !: Integers 
    4646   REAL(fbsp), PARAMETER :: fbrmdi =  99999   !: Reals 
    47     
     47 
     48   ! Output stream choice 
     49   LOGICAL               :: ln_cl4 = .FALSE.  !: Logical switch for 
     50                                              !: class 4 file outputs 
     51  
    4852   ! Main data structure for observation feedback data. 
    4953 
     
    10261030 
    10271031   SUBROUTINE write_obfbdata( cdfilename, fbdata ) 
     1032      !!---------------------------------------------------------------------- 
     1033      !!                    ***  ROUTINE write_obfbdata  *** 
     1034      !! 
     1035      !! ** Purpose :   Write an obfbdata structure into a netCDF file. 
     1036      !! 
     1037      !! ** Method  :   Decides which output wrapper to use.  
     1038      !! 
     1039      !! ** Action  :  
     1040      !! 
     1041      !!---------------------------------------------------------------------- 
     1042      !! * Arguments 
     1043      CHARACTER(len=*) :: cdfilename ! Output filename 
     1044      TYPE(obfbdata)   :: fbdata     ! obsfbdata structure 
     1045#if defined key_offobsoper 
     1046      IF (ln_cl4) THEN 
     1047          ! Class 4 file output stream 
     1048          CALL write_obfbdata_cl( cdfilename, fbdata ) 
     1049      ELSE 
     1050#endif 
     1051          ! Standard feedback file output stream 
     1052          CALL write_obfbdata_fb( cdfilename, fbdata ) 
     1053#if defined key_offobsoper 
     1054      ENDIF 
     1055#endif 
     1056   END SUBROUTINE write_obfbdata 
     1057 
     1058   SUBROUTINE write_obfbdata_fb( cdfilename, fbdata ) 
    10281059      !!---------------------------------------------------------------------- 
    10291060      !!                    ***  ROUTINE write_obfbdata  *** 
     
    15241555 
    15251556       
    1526    END SUBROUTINE write_obfbdata 
     1557   END SUBROUTINE write_obfbdata_fb 
     1558 
     1559#if defined key_offobsoper 
     1560   SUBROUTINE write_obfbdata_cl(cdfilename, fbdata) 
     1561      !!---------------------------------------------------------------------- 
     1562      !!                    ***  ROUTINE write_obfbdata_cl  *** 
     1563      !! 
     1564      !! ** Purpose : Write an obfbdata structure into a class 4 file. 
     1565      !! 
     1566      !! ** Method  : 1. Allocate memory needed by ooo_write 
     1567      !!              2. Map obfbdata into allocated memory 
     1568      !!              3. Pass mapped data to ooo_write 
     1569      !!              4. Deallocate memory 
     1570      !!---------------------------------------------------------------------- 
     1571      USE dom_oce, ONLY: narea 
     1572      USE ooo_write 
     1573      USE ooo_data 
     1574      !! * Arguments 
     1575      CHARACTER(len=*) :: cdfilename ! Feedback filename 
     1576      TYPE(obfbdata)   :: fbdata     ! obsfbdata structure 
     1577      !! * Local variables 
     1578      CHARACTER(len=17), PARAMETER :: cpname = 'write_obfbdata_cl' 
     1579      CHARACTER(len=64) :: & 
     1580              & cdate, &   !: class 4 file validity date  
     1581              & cconf, &   !: model configuration 
     1582              & csys, &    !: model system 
     1583              & ccont, &   !: contact email 
     1584              & cinst, &   !: institution 
     1585              & cversion   !: model version 
     1586      CHARACTER(len=8) :: & 
     1587              & ckind      !: observation kind 
     1588      CHARACTER(len=3) :: cfield 
     1589      INTEGER :: kobs, &   !: number of observations 
     1590              &  kvars, &  !: number of physical variables 
     1591              &  kdeps, &  !: number of observed depths 
     1592              &  kfcst, &  !: number of forecasts 
     1593              &  kifcst, & !: current forecast number 
     1594              &  kproc     !: processor number 
     1595      INTEGER, DIMENSION(:, :, :), ALLOCATABLE :: & 
     1596              &  kqc       !: quality control counterpart 
     1597      INTEGER(KIND=2), DIMENSION(:, :, :), ALLOCATABLE :: & 
     1598              &  k2qc       !: quality control counterpart 
     1599      REAL(kind=fbdp) :: & 
     1600              &  pmodjuld  !: model Julian day 
     1601      REAL(kind=fbdp), DIMENSION(:), ALLOCATABLE :: & 
     1602              &  plead, &  !: forecast lead time 
     1603              &  plam, &   !: longitude of observation 
     1604              &  pphi, &   !: latitude of observation 
     1605              &  ptim      !: time of observation 
     1606      REAL(kind=fbdp), DIMENSION(:, :), ALLOCATABLE :: & 
     1607              &  pdep      !: depths of observations 
     1608      REAL(kind=fbdp), DIMENSION(:, :, :), ALLOCATABLE :: & 
     1609              &  pob, &    !: observation counterpart 
     1610              &  pextra    !: extra field counterpart 
     1611      REAL(kind=fbdp), DIMENSION(:, :, :), ALLOCATABLE :: & 
     1612              &  pmod      !: model counterpart 
     1613      CHARACTER(len=128) :: & 
     1614              &  clfilename  !: class 4 file name 
     1615      CHARACTER(len=128), DIMENSION(:), ALLOCATABLE :: & 
     1616              &  ctype       !: Instrument type 
     1617      CHARACTER(len=nf90_max_name) :: & 
     1618              & cdtmp        !: NetCDF variable name 
     1619      CHARACTER(len=8), DIMENSION(:), ALLOCATABLE :: & 
     1620              &  cwmo, &     !: Instrument WMO ID 
     1621              &  cunit, &    !: Instrument WMO ID 
     1622              &  cvarname    !: Instrument WMO ID 
     1623      INTEGER :: & 
     1624              &  idep, &     !: Loop variable 
     1625              &  ivar, &     !: Loop variable 
     1626              &  iobs, &     !: Loop variable 
     1627              &  ii, &       !: Loop variable 
     1628              &  ij, &       !: Loop variable 
     1629              &  ik, &       !: Loop variable 
     1630              &  il          !: Loop variable 
     1631      cconf = TRIM(cl4_cfg) 
     1632      csys = TRIM(cl4_sys) 
     1633      cversion = TRIM(cl4_vn) 
     1634      ccont = TRIM(cl4_contact) 
     1635      cinst = TRIM(cl4_inst) 
     1636      cdate = TRIM(cl4_date) 
     1637      CALL locate_kind(cdfilename, ckind) 
     1638      kproc = narea 
     1639      kfcst = cl4_fcst_len 
     1640      kobs = fbdata%nobs 
     1641      kdeps = fbdata%nlev 
     1642      kvars = fbdata%nvar 
     1643      IF (kobs .GT. 0) THEN 
     1644         ALLOCATE(plam(kobs), & 
     1645               &  pphi(kobs), & 
     1646               &  ptim(kobs), & 
     1647               &  plead(kfcst), & 
     1648               &  pdep(kdeps, kobs), & 
     1649               &  kqc(kdeps, kvars, kobs), & 
     1650               &  k2qc(kdeps, kvars, kobs), & 
     1651               &  pob(kdeps, kvars, kobs), & 
     1652               &  pmod(kdeps, kvars, kobs), & 
     1653               &  pextra(kdeps, kvars, kobs), & 
     1654               &  ctype(kobs), & 
     1655               &  cwmo(kobs), & 
     1656               &  cunit(kvars), & 
     1657               &  cvarname(kvars)) 
     1658         plam(:) = fbdata%plam(:) 
     1659         pphi(:) = fbdata%pphi(:) 
     1660         ptim(:) = fbdata%ptim(:) 
     1661         pdep(:, :) = fbdata%pdep(:, :) 
     1662         kqc(:,:,:) = 1. 
     1663         DO ii = 1, kvars 
     1664            cvarname(ii)  = fbdata%cname(ii) 
     1665            cunit(ii)     = fbdata%cobunit(ii) 
     1666         END DO 
     1667 
     1668         ! Quality control algorithm 
     1669         k2qc(:,:,:) = NF90_FILL_SHORT 
     1670         DO idep = 1,kdeps 
     1671            DO ivar = 1, kvars 
     1672               DO iobs = 1, kobs 
     1673                  ! 1 symbolises good for fbdata 
     1674                  ! fbimdi symbolises that qc has not been set 
     1675                  ! Essentially, if any fbdata flag is not an element of {1, fbimdi} 
     1676                  ! then set the class 4 flag to bad. 
     1677                  ! Note: fbdata%ioqc is marked good if zero. 
     1678                  IF (((fbdata%ioqc(iobs) /= 0) .AND. & 
     1679                            & (fbdata%ioqc(iobs) /= fbimdi)) .OR. & 
     1680                    & ((fbdata%ipqc(iobs) /= 1) .AND. & 
     1681                            & (fbdata%ipqc(iobs) /= fbimdi)) .OR. & 
     1682                    & ((fbdata%idqc(idep,iobs) /= 1) .AND. & 
     1683                            & (fbdata%idqc(idep,iobs) /= fbimdi)) .OR. & 
     1684                    & ((fbdata%ivqc(iobs,ivar) /= 1) .AND. & 
     1685                            & (fbdata%ivqc(iobs,ivar) /= fbimdi)) .OR. & 
     1686                    & ((fbdata%ivlqc(idep,iobs,ivar) /= 1) .AND. & 
     1687                            & (fbdata%ivlqc(idep,iobs,ivar) /= fbimdi)) .OR. & 
     1688                    & ((fbdata%itqc(iobs) /= 1) .AND. & 
     1689                            & (fbdata%itqc(iobs) /= fbimdi))) THEN 
     1690                     ! 1 symbolises bad for class 4 file 
     1691                     k2qc(idep, ivar, iobs) = 1 
     1692                  ELSE 
     1693                     ! 0 symbolises good for class 4 file 
     1694                     k2qc(idep, ivar, iobs) = 0 
     1695                  END IF  
     1696               END DO 
     1697            END DO 
     1698         END DO 
     1699 
     1700         ! Permute observation dimensions 
     1701         pob(:,:,:) = RESHAPE(fbdata%pob, (/kdeps, kvars, kobs/), & 
     1702                            & ORDER=(/1, 3, 2/)) 
     1703 
     1704         ! Explicit model counterpart dimension permutation 
     1705         ! 1,2,3,4 --> 1,4,2,3 
     1706         pmod(:,:,:) = fbrmdi 
     1707         ij = cl4_fcst_idx(jimatch) 
     1708         DO ii = 1,kdeps 
     1709            DO ik = 1, kvars 
     1710               DO il = 1, kobs 
     1711                  pmod(ii,ik,il) = fbdata%padd(ii,il,1,ik) 
     1712               END DO 
     1713            END DO 
     1714         END DO 
     1715 
     1716         ! Extra fields set to missing for now 
     1717         pextra(:,:,:) = fbrmdi 
     1718 
     1719         ! Lead time of class 4 file is a global parameter 
     1720         plead = cl4_leadtime(1:cl4_fcst_len) 
     1721 
     1722         ! Model Julian day 
     1723         pmodjuld = cl4_modjuld 
     1724 
     1725         ! Observation types 
     1726         ctype(:) = 'X' 
     1727         DO ii = 1,kobs 
     1728            ctype(ii) = fbdata%cdtyp(ii) 
     1729         END DO 
     1730 
     1731         ! World Meteorology Organisation codes 
     1732         cwmo(:) = fbdata%cdwmo(:) 
     1733 
     1734         ! Initialise class 4 file 
     1735         CALL ooo_wri_init(cconf, csys, ckind, cversion, ccont, cinst, cdate, & 
     1736                         & kproc, kobs, kvars, kdeps, kfcst, & 
     1737                         & clfilename) 
     1738 
     1739         ! Write standard variables 
     1740         CALL ooo_wri_default(clfilename, kobs, kvars, kfcst, kdeps, & 
     1741                            & ctype, cwmo, cunit, cvarname, & 
     1742                            & plam, pphi, pdep, ptim, pob, plead, & 
     1743                            & k2qc, pmodjuld) 
     1744         !! Write to optional variables 
     1745         cdtmp = cl4_vars(jimatch) 
     1746         IF ( (TRIM(cdtmp) == "forecast") .OR. & 
     1747              (TRIM(cdtmp) == "persistence") ) THEN 
     1748            !! 4D variables 
     1749            CALL ooo_wri_extra(clfilename, TRIM(cdtmp), kdeps, kfcst, & 
     1750                            &  kvars, kobs, (/ 1,ij,1,1 /), (/ kdeps,1,kvars,kobs /), pmod) 
     1751         ELSE 
     1752            !! 3D variables 
     1753            CALL ooo_wri_extra(clfilename, TRIM(cdtmp), kdeps, & 
     1754                            &  kvars, kobs, (/ 1,1,1 /), (/ kdeps,kvars,kobs /), pmod) 
     1755         ENDIF 
     1756 
     1757         DEALLOCATE(plam, pphi, ptim, pdep, plead, kqc, k2qc, & 
     1758                  & pob, pmod, pextra, ctype, cwmo, & 
     1759                  & cunit, cvarname) 
     1760      END IF 
     1761   END SUBROUTINE write_obfbdata_cl 
     1762#endif 
     1763 
     1764#if defined key_offobsoper 
     1765   SUBROUTINE locate_kind(cdfilename, ckind) 
     1766      !!---------------------------------------------------------------------- 
     1767      !!                    ***  ROUTINE locate_kind  *** 
     1768      !! 
     1769      !! ** Purpose : Detect which kind of class 4 file is being produced. 
     1770      !! 
     1771      !! ** Method  : 1. Inspect cdfilename for observation kind. 
     1772      !!---------------------------------------------------------------------- 
     1773      CHARACTER(len=*) :: cdfilename ! Feedback filename 
     1774      CHARACTER(len=8) :: ckind 
     1775      IF (cdfilename(1:3) == 'sst') THEN 
     1776         ckind = 'SST' 
     1777      ELSE IF (cdfilename(1:3) == 'sla') THEN 
     1778         ckind = 'SLA' 
     1779      ELSE IF (cdfilename(1:3) == 'pro') THEN 
     1780         ckind = 'profile' 
     1781      ELSE IF (cdfilename(1:3) == 'ena') THEN 
     1782         ckind = 'profile' 
     1783      ELSE IF (cdfilename(1:3) == 'sea') THEN 
     1784         ckind = 'seaice' 
     1785      ELSE 
     1786         ckind = 'unknown' 
     1787      END IF 
     1788   END SUBROUTINE locate_kind 
     1789#endif 
    15271790 
    15281791   SUBROUTINE putvaratt_obfbdata( idfile, idvar, cdlongname, cdunits, & 
  • branches/2013/dev_LOCEAN_CMCC_INGV_MERC_UKMO_2013/NEMOGCM/NEMO/OPA_SRC/OBS/obs_oper.F90

    r3651 r4245  
    861861 
    862862         ENDIF 
    863           
    864863         sstdatqc%rmod(jobs,1) = zext(1) 
    865864          
  • branches/2013/dev_LOCEAN_CMCC_INGV_MERC_UKMO_2013/NEMOGCM/NEMO/OPA_SRC/SBC/fldread.F90

    r4230 r4245  
    2323   USE lib_mpp         ! MPP library 
    2424   USE wrk_nemo        ! work arrays 
     25   USE lbclnk          ! ocean lateral boundary conditions (C1D case) 
    2526   USE ioipsl, ONLY :   ymds2ju, ju2ymds   ! for calendar 
    2627   USE sbc_oce 
     
    3435   TYPE, PUBLIC ::   FLD_N      !: Namelist field informations 
    3536      CHARACTER(len = 256) ::   clname      ! generic name of the NetCDF flux file 
    36       INTEGER              ::   nfreqh      ! frequency of each flux file 
     37      REAL(wp)             ::   nfreqh      ! frequency of each flux file 
    3738      CHARACTER(len = 34)  ::   clvar       ! generic name of the variable in the NetCDF flux file 
    3839      LOGICAL              ::   ln_tint     ! time interpolation or not (T/F) 
     
    5051      CHARACTER(len = 256)            ::   clrootname   ! generic name of the NetCDF file 
    5152      CHARACTER(len = 256)            ::   clname       ! current name of the NetCDF file 
    52       INTEGER                         ::   nfreqh       ! frequency of each flux file 
     53      REAL(wp)                        ::   nfreqh       ! frequency of each flux file 
    5354      CHARACTER(len = 34)             ::   clvar        ! generic name of the variable in the NetCDF flux file 
    5455      LOGICAL                         ::   ln_tint      ! time interpolation or not (T/F) 
     
    200201                  sd(jf)%fdta(:,:,:,1) = sd(jf)%fdta(:,:,:,2)   ! re-swap before record field 
    201202                  sd(jf)%nrec_b(1) = sd(jf)%nrec_a(1)           ! update before record informations 
    202                   sd(jf)%nrec_b(2) = sd(jf)%nrec_a(2) - sd(jf)%nfreqh * 3600  ! assume freq to be in hours in this case 
     203                  sd(jf)%nrec_b(2) = sd(jf)%nrec_a(2) - NINT( sd(jf)%nfreqh * 3600 )  ! assume freq to be in hours in this case 
    203204                  sd(jf)%rotn(1)   = sd(jf)%rotn(2)             ! update before rotate informations 
    204205                  sd(jf)%nrec_a(1) = itmp                       ! move back to after record  
     
    218219                     sd(jf)%fdta(:,:,:,1) = sd(jf)%fdta(:,:,:,2)   ! re-swap before record field 
    219220                     sd(jf)%nrec_b(1) = sd(jf)%nrec_a(1)           ! update before record informations 
    220                      sd(jf)%nrec_b(2) = sd(jf)%nrec_a(2) - sd(jf)%nfreqh * 3600  ! assume freq to be in hours in this case 
     221                     sd(jf)%nrec_b(2) = sd(jf)%nrec_a(2) - NINT( sd(jf)%nfreqh * 3600 )  ! assume freq to be in hours in this case 
    221222                     sd(jf)%rotn(1)   = sd(jf)%rotn(2)             ! update before rotate informations 
    222223                     sd(jf)%nrec_a(1) = sd(jf)%nrec_a(1) + 1       ! move back to after record 
     
    271272            IF( sd(jf)%ln_tint ) THEN              ! temporal interpolation 
    272273               IF(lwp .AND. kt - nit000 <= 100 ) THEN  
    273                   clfmt = "('fld_read: var ', a, ' kt = ', i8, ' (', f7.2,' days), Y/M/D = ', i4.4,'/', i2.2,'/', i2.2," //   & 
    274                      &    "', records b/a: ', i4.4, '/', i4.4, ' (days ', f7.2,'/', f7.2, ')')" 
     274                  clfmt = "('fld_read: var ', a, ' kt = ', i8, ' (', f9.4,' days), Y/M/D = ', i4.4,'/', i2.2,'/', i2.2," //   & 
     275                     &    "', records b/a: ', i6.4, '/', i6.4, ' (days ', f9.4,'/', f9.4, ')')" 
    275276                  WRITE(numout, clfmt)  TRIM( sd(jf)%clvar ), kt, REAL(isecsbc,wp)/rday, nyear, nmonth, nday,   &             
    276277                     & sd(jf)%nrec_b(1), sd(jf)%nrec_a(1), REAL(sd(jf)%nrec_b(2),wp)/rday, REAL(sd(jf)%nrec_a(2),wp)/rday 
     
    284285            ELSE   ! nothing to do... 
    285286               IF(lwp .AND. kt - nit000 <= 100 ) THEN 
    286                   clfmt = "('fld_read: var ', a, ' kt = ', i8,' (', f7.2,' days), Y/M/D = ', i4.4,'/', i2.2,'/', i2.2," //   & 
    287                      &    "', record: ', i4.4, ' (days ', f7.2, ' <-> ', f7.2, ')')" 
     287                  clfmt = "('fld_read: var ', a, ' kt = ', i8,' (', f9.4,' days), Y/M/D = ', i4.4,'/', i2.2,'/', i2.2," //   & 
     288                     &    "', record: ', i6.4, ' (days ', f9.4, ' <-> ', f9.4, ')')" 
    288289                  WRITE(numout, clfmt) TRIM(sd(jf)%clvar), kt, REAL(isecsbc,wp)/rday, nyear, nmonth, nday,    & 
    289290                     &                 sd(jf)%nrec_a(1), REAL(sd(jf)%nrec_b(2),wp)/rday, REAL(sd(jf)%nrec_a(2),wp)/rday 
     
    356357            ELSE                                ! higher frequency mean (in hours)  
    357358               IF    ( sdjf%cltype      == 'monthly' ) THEN   ! monthly file 
    358                   sdjf%nrec_a(1) = 24 * nmonth_len(nmonth-1) / sdjf%nfreqh                 ! last record of previous month 
     359                  sdjf%nrec_a(1) = NINT( 24 * nmonth_len(nmonth-1) / sdjf%nfreqh )         ! last record of previous month 
    359360                  llprevmth = .TRUE.                                                       ! use previous month file? 
    360361                  llprevyr  = llprevmth .AND. nmonth == 1                                  ! use previous year  file? 
    361362               ELSEIF( sdjf%cltype(1:4) == 'week'    ) THEN   ! weekly file 
    362363                  llprevweek = .TRUE.                                                      ! use previous week  file? 
    363                   sdjf%nrec_a(1) = 24 * 7 / sdjf%nfreqh                                    ! last record of previous week 
     364                  sdjf%nrec_a(1) = NINT( 24 * 7 / sdjf%nfreqh )                            ! last record of previous week 
    364365                  isec_week = NINT(rday) * 7                                               ! add a shift toward previous week 
    365366               ELSEIF( sdjf%cltype      == 'daily'   ) THEN   ! daily file 
    366                   sdjf%nrec_a(1) = 24 / sdjf%nfreqh                                        ! last record of previous day 
     367                  sdjf%nrec_a(1) = NINT( 24 / sdjf%nfreqh )                                ! last record of previous day 
    367368                  llprevday = .TRUE.                                                       ! use previous day   file? 
    368369                  llprevmth = llprevday .AND. nday   == 1                                  ! use previous month file? 
    369370                  llprevyr  = llprevmth .AND. nmonth == 1                                  ! use previous year  file? 
    370371               ELSE                                           ! yearly file 
    371                   sdjf%nrec_a(1) = 24 * nyear_len(0) / sdjf%nfreqh                         ! last record of previous year  
     372                  sdjf%nrec_a(1) = NINT( 24 * nyear_len(0) / sdjf%nfreqh )                 ! last record of previous year  
    372373                  llprevyr = .NOT. sdjf%ln_clim                                            ! use previous year  file? 
    373374               ENDIF 
     
    408409         CALL fld_get( sdjf, map ) 
    409410 
    410          clfmt = "('fld_init : time-interpolation for ', a, ' read previous record = ', i4, ' at time = ', f7.2, ' days')" 
     411         clfmt = "('fld_init : time-interpolation for ', a, ' read previous record = ', i6, ' at time = ', f7.2, ' days')" 
    411412         IF(lwp) WRITE(numout, clfmt) TRIM(sdjf%clvar), sdjf%nrec_a(1), REAL(sdjf%nrec_a(2),wp)/rday 
    412413 
     
    518519         !                                   ! ================================ ! 
    519520         ! 
    520          ifreq_sec = sdjf%nfreqh * 3600                                                 ! frequency mean (in seconds) 
     521         ifreq_sec = NINT( sdjf%nfreqh * 3600 )                                         ! frequency mean (in seconds) 
    521522         IF( sdjf%cltype(1:4) == 'week' )   isec_week = ksec_week( sdjf%cltype(6:8) )   ! since the first day of the current week 
    522523         ! number of second since the beginning of the file 
     
    588589      INTEGER                  ::   iw     ! index into wgts array 
    589590      INTEGER                  ::   ipdom  ! index of the domain 
     591      INTEGER                  ::   idvar  ! variable ID 
     592      INTEGER                  ::   idmspc ! number of spatial dimensions 
     593      LOGICAL                  ::   lmoor  ! C1D case: point data 
    590594      !!--------------------------------------------------------------------- 
    591595      ! 
     
    607611         ELSE                                  ;  ipdom = jpdom_unknown 
    608612         ENDIF 
     613         ! C1D case: If product of spatial dimensions == ipk, then x,y are of 
     614         ! size 1 (point/mooring data): this must be read onto the central grid point 
     615         idvar  = iom_varid( sdjf%num, sdjf%clvar ) 
     616         idmspc = iom_file( sdjf%num )%ndims( idvar ) 
     617         IF( iom_file( sdjf%num )%luld( idvar ) )   idmspc = idmspc - 1 
     618         lmoor  = (idmspc == 0 .OR. PRODUCT( iom_file( sdjf%num )%dimsz( 1:MAX(idmspc,1) ,idvar ) ) == ipk) 
     619         ! 
    609620         SELECT CASE( ipk ) 
    610621         CASE(1) 
    611             IF( sdjf%ln_tint ) THEN   ;   CALL iom_get( sdjf%num, ipdom, sdjf%clvar, sdjf%fdta(:,:,1,2), sdjf%nrec_a(1) ) 
    612             ELSE                      ;   CALL iom_get( sdjf%num, ipdom, sdjf%clvar, sdjf%fnow(:,:,1  ), sdjf%nrec_a(1) ) 
     622            IF( lk_c1d .AND. lmoor ) THEN 
     623               IF( sdjf%ln_tint ) THEN 
     624                  CALL iom_get( sdjf%num, sdjf%clvar, sdjf%fdta(2,2,1,2), sdjf%nrec_a(1) ) 
     625                  CALL lbc_lnk( sdjf%fdta(:,:,1,2),'Z',1. ) 
     626               ELSE 
     627                  CALL iom_get( sdjf%num, sdjf%clvar, sdjf%fnow(2,2,1  ), sdjf%nrec_a(1) ) 
     628                  CALL lbc_lnk( sdjf%fnow(:,:,1  ),'Z',1. ) 
     629               ENDIF 
     630            ELSE 
     631               IF( sdjf%ln_tint ) THEN   ;   CALL iom_get( sdjf%num, ipdom, sdjf%clvar, sdjf%fdta(:,:,1,2), sdjf%nrec_a(1) ) 
     632               ELSE                      ;   CALL iom_get( sdjf%num, ipdom, sdjf%clvar, sdjf%fnow(:,:,1  ), sdjf%nrec_a(1) ) 
     633               ENDIF 
    613634            ENDIF 
    614635         CASE DEFAULT 
    615             IF( sdjf%ln_tint ) THEN   ;   CALL iom_get( sdjf%num, ipdom, sdjf%clvar, sdjf%fdta(:,:,:,2), sdjf%nrec_a(1) ) 
    616             ELSE                      ;   CALL iom_get( sdjf%num, ipdom, sdjf%clvar, sdjf%fnow(:,:,:  ), sdjf%nrec_a(1) ) 
     636            IF (lk_c1d .AND. lmoor ) THEN 
     637               IF( sdjf%ln_tint ) THEN 
     638                  CALL iom_get( sdjf%num, jpdom_unknown, sdjf%clvar, sdjf%fdta(2,2,:,2), sdjf%nrec_a(1) ) 
     639                  CALL lbc_lnk( sdjf%fdta(:,:,:,2),'Z',1. ) 
     640               ELSE 
     641                  CALL iom_get( sdjf%num, jpdom_unknown, sdjf%clvar, sdjf%fnow(2,2,:  ), sdjf%nrec_a(1) ) 
     642                  CALL lbc_lnk( sdjf%fnow(:,:,:  ),'Z',1. ) 
     643               ENDIF 
     644            ELSE 
     645               IF( sdjf%ln_tint ) THEN   ;   CALL iom_get( sdjf%num, ipdom, sdjf%clvar, sdjf%fdta(:,:,:,2), sdjf%nrec_a(1) ) 
     646               ELSE                      ;   CALL iom_get( sdjf%num, ipdom, sdjf%clvar, sdjf%fnow(:,:,:  ), sdjf%nrec_a(1) ) 
     647               ENDIF 
    617648            ENDIF 
    618649         END SELECT 
     
    826857            ENDIF 
    827858         ELSE                                                                       ! higher frequency mean (in hours) 
    828             IF(     sdjf%cltype      == 'monthly' ) THEN   ;   sdjf%nreclast = 24 * imonth_len / sdjf%nfreqh  
    829             ELSEIF( sdjf%cltype(1:4) == 'week'    ) THEN   ;   sdjf%nreclast = 24 * 7          / sdjf%nfreqh 
    830             ELSEIF( sdjf%cltype      == 'daily'   ) THEN   ;   sdjf%nreclast = 24              / sdjf%nfreqh 
    831             ELSE                                           ;   sdjf%nreclast = 24 * iyear_len  / sdjf%nfreqh  
     859            IF(     sdjf%cltype      == 'monthly' ) THEN   ;   sdjf%nreclast = NINT( 24 * imonth_len / sdjf%nfreqh ) 
     860            ELSEIF( sdjf%cltype(1:4) == 'week'    ) THEN   ;   sdjf%nreclast = NINT( 24 * 7          / sdjf%nfreqh ) 
     861            ELSEIF( sdjf%cltype      == 'daily'   ) THEN   ;   sdjf%nreclast = NINT( 24              / sdjf%nfreqh ) 
     862            ELSE                                           ;   sdjf%nreclast = NINT( 24 * iyear_len  / sdjf%nfreqh ) 
    832863            ENDIF 
    833864         ENDIF 
  • branches/2013/dev_LOCEAN_CMCC_INGV_MERC_UKMO_2013/NEMOGCM/NEMO/OPA_SRC/SBC/sbcblk_core.F90

    r4230 r4245  
    7979   REAL(wp) ::   rn_efac     ! multiplication factor for evaporation (clem) 
    8080   REAL(wp) ::   rn_vfac     ! multiplication factor for ice/ocean velocity in the calculation of wind stress (clem) 
     81   LOGICAL  ::   ln_bulk2z   ! logical flag for case where z(q,t) and z(u) are specified in the namelist 
     82   REAL(wp) ::   rn_zqt      ! z(q,t) : height of humidity and temperature measurements 
     83   REAL(wp) ::   rn_zu       ! z(u)   : height of wind measurements 
    8184 
    8285   !! * Substitutions 
     
    134137      NAMELIST/namsbc_core/ cn_dir , ln_2m  , ln_taudif, rn_pfac, rn_efac, rn_vfac,  & 
    135138         &                  sn_wndi, sn_wndj, sn_humi  , sn_qsr ,           & 
    136          &                  sn_qlw , sn_tair, sn_prec  , sn_snow, sn_tdif 
     139         &                  sn_qlw , sn_tair, sn_prec  , sn_snow,           & 
     140         &                  sn_tdif, rn_zqt , ln_bulk2z, rn_zu 
    137141      !!--------------------------------------------------------------------- 
    138142 
     
    316320            &                      Cd    , Ch              , Ce  ,   & 
    317321            &                      zt_zu , zq_zu                   ) 
     322      ELSE IF( ln_bulk2z ) THEN 
     323         !! If the height of the air temp./spec. hum. and wind are to be specified by hand : 
     324         IF( rn_zqt == rn_zu ) THEN 
     325            !! If air temp. and spec. hum. are at the same height as wind : 
     326            CALL TURB_CORE_1Z( rn_zu, zst   , sf(jp_tair)%fnow(:,:,1),       & 
     327               &                      zqsatw, sf(jp_humi)%fnow(:,:,1), wndm, & 
     328               &                      Cd    , Ch                     , Ce  ) 
     329         ELSE 
     330            !! If air temp. and spec. hum. are at a different height to wind : 
     331            CALL TURB_CORE_2Z(rn_zqt, rn_zu , zst   , sf(jp_tair)%fnow,         & 
     332               &                              zqsatw, sf(jp_humi)%fnow, wndm,   & 
     333               &                              Cd    , Ch              , Ce  ,   & 
     334               &                              zt_zu , zq_zu                 ) 
     335         ENDIF 
    318336      ELSE 
    319337         !! If air temp. and spec. hum. are given at same height than wind (10m) : 
     
    360378      !  Turbulent fluxes over ocean 
    361379      ! ----------------------------- 
    362       IF( ln_2m ) THEN 
    363          ! Values of temp. and hum. adjusted to 10m must be used instead of 2m values 
     380      IF( ln_2m .OR. ( ln_bulk2z .AND. rn_zqt /= rn_zu ) ) THEN 
     381         ! Values of temp. and hum. adjusted to height of wind must be used 
    364382         zevap(:,:) = rn_efac * MAX( 0.e0, rhoa    *Ce(:,:)*( zqsatw(:,:) - zq_zu(:,:) ) * wndm(:,:) )   ! Evaporation 
    365383         zqsb (:,:) =                      rhoa*cpa*Ch(:,:)*( zst   (:,:) - zt_zu(:,:) ) * wndm(:,:)     ! Sensible Heat 
     
    789807      !!      Momentum, Latent and sensible heat exchange coefficients 
    790808      !!      Caution: this procedure should only be used in cases when air 
    791       !!      temperature (T_air) and air specific humidity (q_air) are at 2m 
    792       !!      whereas wind (dU) is at 10m. 
     809      !!      temperature (T_air) and air specific humidity (q_air) are at a 
     810      !!      different height to wind (dU). 
    793811      !! 
    794812      !! References :   Large & Yeager, 2004 : ??? 
     
    808826 
    809827      INTEGER :: j_itt 
    810       INTEGER , PARAMETER :: nb_itt = 3              ! number of itterations 
     828      INTEGER , PARAMETER :: nb_itt = 5              ! number of itterations 
    811829      REAL(wp), PARAMETER ::   grav   = 9.8          ! gravity                        
    812830      REAL(wp), PARAMETER ::   kappa  = 0.4          ! von Karman's constant 
     
    905923           !! 
    906924           !! Shifting the neutral 10m transfer coefficients to (zu,zeta_u) : 
    907            xct = 1. + sqrt_Cd_n10/kappa*(log(zu/10.) - zpsi_m) 
     925           xct = 1. + sqrt_Cd_n10/kappa*(log(zu/10.) - zpsi_m)   ! L & Y eq. (10a) 
    908926           Cd = Cd_n10/(xct*xct) ; sqrt_Cd = sqrt(Cd) 
    909927         ENDIF 
     
    911929         xlogt = log(zu/10.) - zpsi_hu 
    912930         !! 
    913          xct = 1. + Ch_n10*xlogt/kappa/sqrt_Cd_n10 
     931         xct = 1. + Ch_n10*xlogt/kappa/sqrt_Cd_n10               ! L & Y eq. (10b) 
    914932         Ch  = Ch_n10*sqrt_Cd/sqrt_Cd_n10/xct 
    915933         !! 
    916          xct = 1. + Ce_n10*xlogt/kappa/sqrt_Cd_n10 
     934         xct = 1. + Ce_n10*xlogt/kappa/sqrt_Cd_n10               ! L & Y eq. (10c) 
    917935         Ce  = Ce_n10*sqrt_Cd/sqrt_Cd_n10/xct 
    918936         !! 
  • branches/2013/dev_LOCEAN_CMCC_INGV_MERC_UKMO_2013/NEMOGCM/NEMO/OPA_SRC/TRA/traadv.F90

    r4147 r4245  
    66   !! History :  2.0  !  2005-11  (G. Madec)  Original code 
    77   !!            3.3  !  2010-09  (C. Ethe, G. Madec)  merge TRC-TRA + switch from velocity to transport 
     8   !!            4.0  !  2011-06  (G. Madec)  Addition of Mixed Layer Eddy parameterisation 
    89   !!---------------------------------------------------------------------- 
    910 
     
    2122   USE traadv_qck      ! QUICKEST scheme           (tra_adv_qck    routine) 
    2223   USE traadv_eiv      ! eddy induced velocity     (tra_adv_eiv    routine) 
     24   USE traadv_mle      ! ML eddy induced velocity  (tra_adv_mle    routine) 
    2325   USE cla             ! cross land advection      (cla_traadv     routine) 
    2426   USE ldftra_oce      ! lateral diffusion coefficient on tracers 
     
    99101         &              CALL tra_adv_eiv( kt, nit000, zun, zvn, zwn, 'TRA' )    ! add the eiv transport (if necessary) 
    100102      ! 
     103      IF( ln_mle    )   CALL tra_adv_mle( kt, nit000, zun, zvn, zwn, 'TRA' )    ! add the mle transport (if necessary) 
    101104      CALL iom_put( "uocetr_eff", zun )                                         ! output effective transport       
    102105      CALL iom_put( "vocetr_eff", zvn ) 
     
    136139         &                       tab3d_2=tsa(:,:,:,jp_sal), clinfo2=       ' Sa: ', mask2=tmask, clinfo3='tra' ) 
    137140      ! 
    138       IF( nn_timing == 1 )  CALL timing_stop('tra_adv') 
     141      IF( nn_timing == 1 )  CALL timing_stop( 'tra_adv' ) 
    139142      ! 
    140143      CALL wrk_dealloc( jpi, jpj, jpk, zun, zvn, zwn ) 
     
    213216      ENDIF 
    214217      ! 
     218      CALL tra_adv_mle_init          ! initialisation of the Mixed Layer Eddy parametrisation (MLE) 
     219      ! 
    215220   END SUBROUTINE tra_adv_init 
    216221 
  • branches/2013/dev_LOCEAN_CMCC_INGV_MERC_UKMO_2013/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_mle.F90

    r4244 r4245  
    2929 
    3030   !                                               !!* namelist namtra_adv_mle * 
    31    LOGICAL, PUBLIC ::   ln_mle    = .TRUE.          ! flag to activate the Mixed Layer Eddy (MLE) parameterisation 
    32    INTEGER         ::   nn_mle    = 0               ! MLE type: =0 standard Fox-Kemper ; =1 new formulation 
    33    INTEGER         ::   nn_mld_uv = 0               ! space interpolation of MLD at u- & v-pts (0=min,1=averaged,2=max) 
    34    INTEGER         ::   nn_conv   = 0               ! =1 no MLE in case of convection ; =0 always MLE 
    35    REAL(wp)        ::   rn_ce   = 0.06_wp           ! MLE coefficient 
    36    !                                                ! parameters used in nn_mle = 0 case 
    37    REAL(wp)        ::   rn_lf   = 5.e+3_wp               ! typical scale of mixed layer front 
    38    REAL(wp)        ::   rn_time = 2._wp * 86400._wp      ! time scale for mixing momentum across the mixed layer 
    39    !                                                ! parameters used in nn_mle = 1 case 
    40    REAL(wp)        ::   rn_lat  = 20._wp                 ! reference latitude for a 5 km scale of ML front 
    41    REAL(wp)        ::   rn_rho_c_mle  = 0.01        ! Density criterion for definition of MLD used by FK 
     31   LOGICAL, PUBLIC ::   ln_mle              ! flag to activate the Mixed Layer Eddy (MLE) parameterisation 
     32   INTEGER         ::   nn_mle              ! MLE type: =0 standard Fox-Kemper ; =1 new formulation 
     33   INTEGER         ::   nn_mld_uv           ! space interpolation of MLD at u- & v-pts (0=min,1=averaged,2=max) 
     34   INTEGER         ::   nn_conv             ! =1 no MLE in case of convection ; =0 always MLE 
     35   REAL(wp)        ::   rn_ce               ! MLE coefficient 
     36   !                                           ! parameters used in nn_mle = 0 case 
     37   REAL(wp)        ::   rn_lf                  ! typical scale of mixed layer front 
     38   REAL(wp)        ::   rn_time             ! time scale for mixing momentum across the mixed layer 
     39   !                                             ! parameters used in nn_mle = 1 case 
     40   REAL(wp)        ::   rn_lat                   ! reference latitude for a 5 km scale of ML front 
     41   REAL(wp)        ::   rn_rho_c_mle         ! Density criterion for definition of MLD used by FK 
    4242 
    4343   REAL(wp) ::   r5_21 = 5.e0 / 21.e0   ! factor used in mle streamfunction computation 
     
    271271      INTEGER  ::   ji, jj, jk   ! dummy loop indices 
    272272      INTEGER  ::   ierr 
     273      INTEGER ::    ios                 ! Local integer output status for namelist read 
    273274      REAL(wp) ::   z1_t2, zfu, zfv                                !    -         - 
    274275      ! 
     
    276277      !!---------------------------------------------------------------------- 
    277278 
    278       REWIND ( numnam )                ! Read Namelist namtra_adv_mle : mixed layer eddy advection acting on tracers 
    279       READ   ( numnam, namtra_adv_mle ) 
     279 
     280      REWIND( numnam_ref )              ! Namelist namtra_adv_mle in reference namelist : Tracer advection scheme 
     281      READ  ( numnam_ref, namtra_adv_mle, IOSTAT = ios, ERR = 901) 
     282901   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namtra_adv_mle in reference namelist', lwp ) 
     283 
     284      REWIND( numnam_cfg )              ! Namelist namtra_adv_mle in configuration namelist : Tracer advection scheme 
     285      READ  ( numnam_cfg, namtra_adv_mle, IOSTAT = ios, ERR = 902 ) 
     286902   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namtra_adv_mle in configuration namelist', lwp ) 
     287      WRITE ( numond, namtra_adv_mle ) 
    280288 
    281289      IF(lwp) THEN                     ! Namelist print 
  • branches/2013/dev_LOCEAN_CMCC_INGV_MERC_UKMO_2013/NEMOGCM/NEMO/OPA_SRC/TRA/tradmp.F90

    r4147 r4245  
    2727   USE oce            ! ocean: variables 
    2828   USE dom_oce        ! ocean: domain variables 
     29   USE c1d            ! 1D vertical configuration 
    2930   USE trdmod_oce     ! ocean: trend variables 
    3031   USE trdtra         ! active tracers: trends 
     
    4445   PUBLIC   tra_dmp      ! routine called by step.F90 
    4546   PUBLIC   tra_dmp_init ! routine called by opa.F90 
    46    PUBLIC   dtacof       ! routine called by in both tradmp.F90 and trcdmp.F90 
    47    PUBLIC   dtacof_zoom  ! routine called by in both tradmp.F90 and trcdmp.F90 
     47   PUBLIC   dtacof       ! routine called by tradmp.F90, trcdmp.F90 and dyndmp.F90 
     48   PUBLIC   dtacof_zoom  ! routine called by tradmp.F90, trcdmp.F90 and dyndmp.F90 
    4849 
    4950   !                               !!* Namelist namtra_dmp : T & S newtonian damping * 
    50    LOGICAL, PUBLIC ::   ln_tradmp  = .TRUE.  !: internal damping flag 
     51   LOGICAL, PUBLIC ::   ln_tradmp  !: internal damping flag 
    5152   INTEGER         ::   nn_hdmp     ! = 0/-1/'latitude' for damping over T and S 
    5253   INTEGER         ::   nn_zdmp     ! = 0/1/2 flag for damping in the mixed layer 
     
    191192      !! ** Purpose :   Initialization for the newtonian damping  
    192193      !! 
    193       !! ** Method  :   read the nammbf namelist and check the parameters 
     194      !! ** Method  :   read the namtra_dmp namelist and check the parameters 
    194195      !!---------------------------------------------------------------------- 
    195196      NAMELIST/namtra_dmp/ ln_tradmp, nn_hdmp, nn_zdmp, rn_surf, rn_bot, rn_dep, nn_file 
     
    206207      WRITE ( numond, namtra_dmp ) 
    207208       
    208       IF( lzoom )   nn_zdmp = 0          ! restoring to climatology at closed north or south boundaries 
     209      IF( lzoom .AND. .NOT. lk_c1d )   nn_zdmp = 0          ! restoring to climatology at closed north or south boundaries 
    209210 
    210211      IF(lwp) THEN                       ! Namelist print 
     
    213214         WRITE(numout,*) '~~~~~~~' 
    214215         WRITE(numout,*) '   Namelist namtra_dmp : set damping parameter' 
    215          WRITE(numout,*) '      add a damping termn or not      ln_tradmp = ', ln_tradmp 
     216         WRITE(numout,*) '      add a damping term or not       ln_tradmp = ', ln_tradmp 
    216217         WRITE(numout,*) '      T and S damping option          nn_hdmp   = ', nn_hdmp 
    217          WRITE(numout,*) '      mixed layer damping option      nn_zdmp   = ', nn_zdmp, '(zoom: forced to 0)' 
     218         WRITE(numout,*) '      mixed layer damping option      nn_zdmp   = ', nn_zdmp, '(non-C1D zoom: forced to 0)' 
    218219         WRITE(numout,*) '      surface time scale (days)       rn_surf   = ', rn_surf 
    219220         WRITE(numout,*) '      bottom time scale (days)        rn_bot    = ', rn_bot 
     
    227228         IF( tra_dmp_alloc() /= 0 )   CALL ctl_stop( 'STOP', 'tra_dmp_init: unable to allocate arrays' ) 
    228229         ! 
     230#if ! defined key_c1d 
    229231         SELECT CASE ( nn_hdmp ) 
    230232         CASE (  -1  )   ;   IF(lwp) WRITE(numout,*) '   tracer damping in the Med & Red seas only' 
     
    235237         END SELECT 
    236238         ! 
     239#endif 
    237240         SELECT CASE ( nn_zdmp ) 
    238241         CASE ( 0 )   ;   IF(lwp) WRITE(numout,*) '   tracer damping throughout the water column' 
     
    252255         ttrdmp(:,:,:) = 0._wp 
    253256         !                          ! Damping coefficients initialization 
    254          IF( lzoom ) THEN   ;   CALL dtacof_zoom( resto ) 
     257         IF( lzoom .AND. .NOT. lk_c1d ) THEN   ;   CALL dtacof_zoom( resto ) 
    255258         ELSE               ;   CALL dtacof( nn_hdmp, rn_surf, rn_bot, rn_dep, nn_file, 'TRA', resto ) 
    256259         ENDIF 
     
    360363      REAL(wp)                        , INTENT(in   )  ::  pn_dep     ! depth of transition (meters) 
    361364      INTEGER                         , INTENT(in   )  ::  kn_file    ! save the damping coef on a file or not 
    362       CHARACTER(len=3)                , INTENT(in   )  ::  cdtype     ! =TRA or TRC (tracer indicator) 
     365      CHARACTER(len=3)                , INTENT(in   )  ::  cdtype     ! =TRA, TRC or DYN (tracer/dynamics indicator) 
    363366      REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(inout)  ::  presto     ! restoring coeff. (s-1) 
    364367      ! 
     
    380383      CALL wrk_alloc( jpi, jpj, zmrs      ) 
    381384      CALL wrk_alloc( jpi, jpj, jpk, zdct ) 
     385#if defined key_c1d 
     386      !                                   ! ==================== 
     387      !                                   !  C1D configuration : local domain 
     388      !                                   ! ==================== 
     389      ! 
     390      IF(lwp) WRITE(numout,*) 
     391      IF(lwp) WRITE(numout,*) '              dtacof : C1D 3x3 local domain' 
     392      IF(lwp) WRITE(numout,*) '              -----------------------------' 
     393      ! 
     394      presto(:,:,:) = 0._wp 
     395      ! 
     396      zsdmp = 1._wp / ( pn_surf * rday ) 
     397      zbdmp = 1._wp / ( pn_bot  * rday ) 
     398      DO jk = 2, jpkm1 
     399         DO jj = 1, jpj 
     400            DO ji = 1, jpi 
     401               !   ONLY vertical variation from zsdmp (sea surface) to zbdmp (bottom) 
     402               presto(ji,jj,jk) = zbdmp + (zsdmp-zbdmp) * EXP(-fsdept(ji,jj,jk)/pn_dep) 
     403            END DO 
     404         END DO 
     405      END DO 
     406      ! 
     407      presto(:,:, : ) = presto(:,:,:) * tmask(:,:,:) 
     408#else 
    382409      !                                   ! ==================== 
    383410      !                                   !  ORCA configuration : global domain 
     
    559586         CALL ctl_stop( 'Choose a correct value of nn_hdmp or put ln_tradmp to FALSE' ) 
    560587      ENDIF 
     588#endif 
    561589 
    562590      !                            !--------------------------------! 
     
    566594         IF( cdtype == 'TRA' ) cfile = 'damping.coeff' 
    567595         IF( cdtype == 'TRC' ) cfile = 'damping.coeff.trc' 
     596         IF( cdtype == 'DYN' ) cfile = 'damping.coeff.dyn' 
    568597         cfile = TRIM( cfile ) 
    569598         CALL iom_open  ( cfile, inum0, ldwrt = .TRUE., kiolib = jprstlib ) 
  • branches/2013/dev_LOCEAN_CMCC_INGV_MERC_UKMO_2013/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfmxl.F90

    r3294 r4245  
    2424 
    2525   PUBLIC   zdf_mxl       ! called by step.F90 
     26 
     27   REAL(wp), PUBLIC ::   rho_c = 0.01_wp    ! density criterion for mixed layer depth 
     28   REAL(wp), PUBLIC ::   avt_c = 5.e-4_wp   ! Kz criterion for the turbocline depth 
    2629 
    2730   INTEGER , PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   nmln    !: number of level in the mixed layer (used by TOP) 
     
    6366      !! ** Method  :   The mixed layer depth is the shallowest W depth with  
    6467      !!      the density of the corresponding T point (just bellow) bellow a 
    65       !!      given value defined locally as rho(10m) + zrho_c 
     68      !!      given value defined locally as rho(10m) + rho_c 
    6669      !!               The turbocline depth is the depth at which the vertical 
    6770      !!      eddy diffusivity coefficient (resulting from the vertical physics 
     
    7679      INTEGER  ::   iikn, iiki          ! temporary integer within a do loop 
    7780      INTEGER, POINTER, DIMENSION(:,:) ::   imld                ! temporary workspace 
    78       REAL(wp) ::   zrho_c = 0.01_wp    ! density criterion for mixed layer depth 
    79       REAL(wp) ::   zavt_c = 5.e-4_wp   ! Kz criterion for the turbocline depth 
    8081      !!---------------------------------------------------------------------- 
    8182      ! 
     
    9899         DO jj = 1, jpj 
    99100            DO ji = 1, jpi 
    100                IF( rhop(ji,jj,jk) > rhop(ji,jj,nla10) + zrho_c )   nmln(ji,jj) = jk      ! Mixed layer 
    101                IF( avt (ji,jj,jk) < zavt_c                     )   imld(ji,jj) = jk      ! Turbocline  
     101               IF( rhop(ji,jj,jk) > rhop(ji,jj,nla10) + rho_c )   nmln(ji,jj) = jk      ! Mixed layer 
     102               IF( avt (ji,jj,jk) < avt_c                     )   imld(ji,jj) = jk      ! Turbocline  
    102103            END DO 
    103104         END DO 
  • branches/2013/dev_LOCEAN_CMCC_INGV_MERC_UKMO_2013/NEMOGCM/NEMO/OPA_SRC/nemogcm.F90

    r4230 r4245  
    7777   USE c1d             ! 1D configuration 
    7878   USE step_c1d        ! Time stepping loop for the 1D configuration 
     79   USE dyndmp          ! Momentum damping 
    7980#if defined key_top 
    8081   USE trcini          ! passive tracer initialisation 
     
    372373                            CALL     phy_cst    ! Physical constants 
    373374                            CALL     eos_init   ! Equation of state 
     375      IF( lk_c1d        )   CALL     c1d_init   ! 1D column configuration 
    374376                            CALL     dom_cfg    ! Domain configuration 
    375377                            CALL     dom_init   ! Domain 
     
    418420                            CALL tra_bbc_init   ! bottom heat flux 
    419421      IF( lk_trabbl     )   CALL tra_bbl_init   ! advective (and/or diffusive) bottom boundary layer scheme 
    420       IF( ln_tradmp     )   CALL tra_dmp_init   ! internal damping trends 
     422                            CALL tra_dmp_init   ! internal damping trends- tracers 
    421423                            CALL tra_adv_init   ! horizontal & vertical advection 
    422424                            CALL tra_ldf_init   ! lateral mixing 
     
    424426 
    425427      !                                     ! Dynamics 
     428      IF( lk_c1d        )   CALL dyn_dmp_init   ! internal damping trends- momentum 
    426429                            CALL dyn_adv_init   ! advection (vector or flux form) 
    427430                            CALL dyn_vor_init   ! vorticity term including Coriolis 
  • branches/2013/dev_LOCEAN_CMCC_INGV_MERC_UKMO_2013/NEMOGCM/SETTE/all_functions.sh

    r4147 r4245  
    9696   if [ ${#} -lt ${minargcount} ] 
    9797   then 
    98       echo "not enought arguments for set_namelist" 
     98      echo "not enough arguments for set_namelist" 
    9999      echo "${usage}" 
    100100      exit 1 
     
    153153} 
    154154 
     155 
    155156# function to tidy up after each test and populate the NEMO_VALIDATION store 
    156157post_test_tidyup () { 
     
    249250    fi 
    250251} 
     252 
     253############################################################# 
     254# extra functions to manipulate settings in the iodef.xml file 
     255# 
     256# Examples: 
     257#   set_xio_file_type    iodef.xml one_file 
     258#   set_xio_using_server iodef.xml true 
     259#   set_xio_buffer_size  iodef.xml 50000000 
     260# 
     261############################################################# 
     262 
     263usage2=" Usage : set_xio_file_type input_iodef.xml one_file||multiple_file" 
     264usage3=" Usage : set_xio_using_server input_iodef.xml true||false" 
     265usage4=" Usage : set_xio_buffer_size input_iodef.xml int_buffer_size" 
     266 
     267set_xio_file_type () { 
     268        minargcount=2 
     269        if [ ${#} -lt ${minargcount} ] 
     270        then 
     271                echo "not enough arguments for set_xio_file_type" 
     272                echo "${usage2}" 
     273                exit 1 
     274        fi 
     275        if [ $2 != "one_file" ] && [ $2 != "multiple_file" ] 
     276        then 
     277                echo "unrecognised argument for set_xio_file_type" 
     278                echo "${usage2}" 
     279                echo $2 
     280                exit 1 
     281        fi 
     282        unset minargcount 
     283        if [  ! -f ${SETTE_DIR}/output.sette ] ; then 
     284                touch ${SETTE_DIR}/output.sette 
     285        fi 
     286 
     287        echo "executing script : set_xio_file_type $@" >> ${SETTE_DIR}/output.sette 
     288        echo "################" >> ${SETTE_DIR}/output.sette 
     289 
     290        VAR_NAME=$( grep "^.*<.*file_definition.*type.*=" ${EXE_DIR}/$1 | sed -e "s% *\!.*%%" ) 
     291        if [ ${#VAR_NAME} -eq 0 ] 
     292        then 
     293                echo "doing \"set_xio_file_type $@\". " 
     294                echo "xml_tag: file_definition with variable: type is empty" 
     295                echo "confirm that an appropriate file_definition is in \"${EXE_DIR}/$1\" " 
     296                echo "exit" 
     297                echo "error in executing script : set_xio_file_type $@" >> ${SETTE_DIR}/output.sette 
     298                echo "....." >> ${SETTE_DIR}/output.sette 
     299                exit 1 
     300        fi 
     301        if [ $2 == "one_file" ]  
     302        then 
     303           sed -e "s:multiple_file:one_file:" ${EXE_DIR}/$1 > ${EXE_DIR}/$1.tmp 
     304        else 
     305           sed -e "s:one_file:multiple_file:" ${EXE_DIR}/$1 > ${EXE_DIR}/$1.tmp 
     306        fi 
     307        mv ${EXE_DIR}/$1.tmp ${EXE_DIR}/$1 
     308 
     309        echo "finished script : set_xio_file_type $@" >> ${SETTE_DIR}/output.sette 
     310        echo "++++++++++++++++" >> ${SETTE_DIR}/output.sette 
     311        echo "                " >> ${SETTE_DIR}/output.sette 
     312} 
     313 
     314set_xio_using_server () { 
     315        minargcount=2 
     316        if [ ${#} -lt ${minargcount} ] 
     317        then 
     318                echo "not enough arguments for set_xio_using_server" 
     319                echo "${usage2}" 
     320                exit 1 
     321        fi 
     322        if [ $2 != "true" ] && [ $2 != "false" ] 
     323        then 
     324                echo "unrecognised argument for set_xio_using_server" 
     325                echo "${usage2}" 
     326                echo $2 
     327                exit 1 
     328        fi 
     329        unset minargcount 
     330        if [  ! -f ${SETTE_DIR}/output.sette ] ; then 
     331                touch ${SETTE_DIR}/output.sette 
     332        fi 
     333 
     334        echo "executing script : set_xio_using_server $@" >> ${SETTE_DIR}/output.sette 
     335        echo "################" >> ${SETTE_DIR}/output.sette 
     336 
     337        VAR_NAME=$( grep "^.*<.*variable id.*=.*using_server.*=.*boolean" ${EXE_DIR}/$1 | sed -e "s% *\!.*%%" ) 
     338        if [ ${#VAR_NAME} -eq 0 ] 
     339        then 
     340                echo "doing \"set_xio_using_server $@\". " 
     341                echo "xml_tag: "variable id=using_server" with variable: boolean is empty" 
     342                echo "confirm that an appropriate variable id is in \"${EXE_DIR}/$1\" " 
     343                echo "exit" 
     344                echo "error in executing script : set_xio_using_server $@" >> ${SETTE_DIR}/output.sette 
     345                echo "....." >> ${SETTE_DIR}/output.sette 
     346                exit 1 
     347        fi 
     348        if [ $2 == "false" ] 
     349        then 
     350           sed -e "/using_server/s:true:false:" ${EXE_DIR}/$1 > ${EXE_DIR}/$1.tmp 
     351           export USING_MPMD=no 
     352        else 
     353           sed -e "/using_server/s:false:true:" ${EXE_DIR}/$1 > ${EXE_DIR}/$1.tmp 
     354           export USING_MPMD=yes 
     355        fi 
     356        mv ${EXE_DIR}/$1.tmp ${EXE_DIR}/$1 
     357 
     358        echo "finished script : set_xio_using_server $@" >> ${SETTE_DIR}/output.sette 
     359        echo "++++++++++++++++" >> ${SETTE_DIR}/output.sette 
     360        echo "                " >> ${SETTE_DIR}/output.sette 
     361} 
     362 
     363set_xio_buffer_size () { 
     364        minargcount=2 
     365        if [ ${#} -lt ${minargcount} ] 
     366        then 
     367                echo "not enough arguments for set_xio_buffer_size" 
     368                echo "${usage4}" 
     369                exit 1 
     370        fi 
     371        unset minargcount 
     372        if [  ! -f ${SETTE_DIR}/output.sette ] ; then 
     373                touch ${SETTE_DIR}/output.sette 
     374        fi 
     375 
     376        echo "executing script : set_xio_buffer_size $@" >> ${SETTE_DIR}/output.sette 
     377        echo "################" >> ${SETTE_DIR}/output.sette 
     378 
     379        VAR_NAME=$( grep "^.*<.*variable id.*=.*buffer_size.*=.*integer" ${EXE_DIR}/$1 | sed -e "s% *\!.*%%" ) 
     380        if [ ${#VAR_NAME} -eq 0 ] 
     381        then 
     382                echo "doing \"set_xio_buffer_size $@\". " 
     383                echo "xml_tag: "variable id=buffer_size" with variable: integer is empty" 
     384                echo "confirm that an appropriate variable id is in \"${EXE_DIR}/$1\" " 
     385                echo "exit" 
     386                echo "error in executing script : set_xio_buffer_size $@" >> ${SETTE_DIR}/output.sette 
     387                echo "....." >> ${SETTE_DIR}/output.sette 
     388                exit 1 
     389        fi 
     390        sed -e "/buffer_size/s:>.*<:>$2<:" ${EXE_DIR}/$1 > ${EXE_DIR}/$1.tmp 
     391        mv ${EXE_DIR}/$1.tmp ${EXE_DIR}/$1 
     392 
     393        echo "finished script : set_xio_buffer_size $@" >> ${SETTE_DIR}/output.sette 
     394        echo "++++++++++++++++" >> ${SETTE_DIR}/output.sette 
     395        echo "                " >> ${SETTE_DIR}/output.sette 
     396} 
     397 
  • branches/2013/dev_LOCEAN_CMCC_INGV_MERC_UKMO_2013/NEMOGCM/SETTE/input_AMM12.cfg

    r4147 r4245  
    1 AMM12_v3.5.tar AMM12.v3_5 
     1AMM12_v3.6.tar AMM12.v3_6 
  • branches/2013/dev_LOCEAN_CMCC_INGV_MERC_UKMO_2013/NEMOGCM/SETTE/prepare_job.sh

    r4147 r4245  
    6868# 
    6969 
    70 usage=" Usage : ./prepare_job.sh INPUT_FILE_CONFIG_NAME NUMBER_PROC TEST_NAME MPI_FLAG JOB_FILE" 
    71 usage=" example : ./prepare_job.sh input_ORCA2_LIM_PISCES.cfg 8 SHORT no/yes $JOB_FILE" 
    72  
    73  
    74 minargcount=5 
     70usage=" Usage : ./prepare_job.sh INPUT_FILE_CONFIG_NAME NUMBER_PROC TEST_NAME MPI_FLAG JOB_FILE NUM_XIO_SERVERS" 
     71usage=" example : ./prepare_job.sh input_ORCA2_LIM_PISCES.cfg 8 SHORT no/yes $JOB_FILE 0" 
     72 
     73 
     74minargcount=6 
    7575        if [ ${#} -lt ${minargcount} ] 
    7676        then 
     
    9393MPI_FLAG=$4 
    9494JOB_FILE=$5 
     95NXIO_PROC=$6 
    9596 
    9697# export EXE_DIR. This directory is used to execute model  
     
    186187      case ${COMPILER} in  
    187188         ALTIX_NAUTILUS_MPT) 
    188                                 NB_REM=$( echo $NB_PROC | awk '{print $1 % 4}') 
     189                                NB_REM=$( echo $NB_PROC $NXIO_PROC | awk '{print ( $1 + $2 ) % 4}') 
    189190               if [ ${NB_REM} == 0 ] ; then 
    190191               # number of processes required is an integer multiple of 4 
    191192               # 
    192                NB_NODES=$( echo $NB_PROC | awk '{print $1 / 4}') 
     193               NB_NODES=$( echo $NB_PROC $NXIO_PROC | awk '{print ($1 + $2 ) / 4}') 
    193194            else 
    194195               # 
     
    196197               # round up the number of nodes required. 
    197198               # 
    198                NB_NODES=$( echo $NB_PROC | awk '{printf("%d",$1 / 4 + 1 )}') 
     199               NB_NODES=$( echo $NB_PROC $NXIO_PROC | awk '{printf("%d",($1 + $2 ) / 4 + 1 )}') 
    199200                  fi 
    200201            ;; 
     
    230231# Pass settings into job file by using sed to edit predefined strings 
    231232# 
    232         cat ${SETTE_DIR}/job_batch_template | sed -e"s/NODES/${NB_NODES}/" -e"s/NPROCS/${NB_PROC}/" \ 
     233        cat ${SETTE_DIR}/job_batch_template | sed -e"s/NODES/${NB_NODES}/" \ 
     234             -e"s/NPROCS/${NB_PROC}/" \ 
     235             -e"s/NXIOPROCS/${NXIO_PROC}/" \ 
    233236             -e"s:DEF_SETTE_DIR:${SETTE_DIR}:" -e"s:DEF_INPUT_DIR:${INPUT_DIR}:" \ 
    234237             -e"s:DEF_EXE_DIR:${EXE_DIR}:" \ 
  • branches/2013/dev_LOCEAN_CMCC_INGV_MERC_UKMO_2013/NEMOGCM/SETTE/sette.sh

    r4242 r4245  
    22############################################################ 
    33# Author : Simona Flavoni for NEMO 
    4 # Contact : sflod@locean-ipsl.upmc.fr 
     4# Contact: sflod@locean-ipsl.upmc.fr 
     5# 2013   : A.C. Coward added options for testing with XIOS in dettached mode 
    56# 
    67# sette.sh   : principal script of SET TEsts for NEMO (SETTE) 
     
    1516#set -u 
    1617#set -e 
    17 #+ 
    18 # 
    19 # ================ 
    20 # sette.sh 
    21 # ================ 
    22 # 
    23 # ---------------------------------------------- 
    24 # Set of tests for NEMO 
    25 # ---------------------------------------------- 
    26 # 
    27 # SYNOPSIS 
    28 # ======== 
    29 # 
    30 # :: 
    31 # 
    32 #  $ ./sette.sh 
    33 # 
     18# =========== 
    3419# DESCRIPTION 
    3520# =========== 
     
    3722# Variables to be checked by user: 
    3823# 
    39 # COMPILER : name of compiler as defined in NEMOGCM/ARCH directory  
    40 # 
    41 # BATCH_COMMAND :  name of the command for batch submission 
    42 # 
    43 # INTERACT_FLAG :  flag to run in interactive mode "yes" 
    44 #                       to run in batch mode "no" 
    45 # 
    46 # MPIRUN_FLAG   :  flag to run in parallel (MPI) "yes" 
    47 #                       to run in sequential mode (NB_PROC = 1) "no" 
     24# COMPILER          : name of compiler as defined in NEMOGCM/ARCH directory  
     25# BATCH_COMMAND_PAR :  name of the command for submitting parallel batch jobs 
     26# BATCH_COMMAND_SEQ :  name of the command for submitting sequential batch jobs   
     27# INTERACT_FLAG     : flag to run in interactive mode "yes" 
     28#                           to run in batch mode "no" 
     29# MPIRUN_FLAG       : flag to run in parallel (MPI) "yes" 
     30#                           to run in sequential mode (NB_PROC = 1) "no" 
     31# USING_XIOS        : flag to control the activation of key_iomput 
     32#                      "yes" to compile using key_iomput and link to the external XIOS library 
     33#                      "no"  to compile without key_iomput and link to the old IOIPSL library 
     34# USING_MPMD        : flag to control the use of stand-alone IO servers 
     35#                     requires USING_XIOS="yes" 
     36#                      "yes" to run in MPMD (detached) mode with stand-alone IO servers 
     37#                      "no"  to run in SPMD (attached) mode without separate IO servers  
     38# NUM_XIOSERVERS    : number of stand-alone IO servers to employ 
     39#                     set to zero if USING_MPMD="no" 
    4840# 
    4941# Principal script is sette.sh, that calls  
    5042# 
    51 #  makenemo  
    52 # 
    53 #   creates the exectuable in ${CONFIG_NAME}/BLD/bin/nemo.exe  (and its link opa in ${CONFIG_NAME}/EXP00) 
     43#  makenemo  : to create successive exectuables in ${CONFIG_NAME}/BLD/bin/nemo.exe  
     44#              and links to opa in ${CONFIG_NAME}/EXP00) 
    5445# 
    5546#  param.cfg : sets and loads following directories: 
    5647# 
    57 #   FORCING_DIR : is the directory for forcing files (tarfile) 
    58 # 
    59 #   INPUT_DIR : is the directory for input files storing  
    60 # 
    61 #   TMPDIR : is the temporary directory (if needed) 
     48#   FORCING_DIR         : is the directory for forcing files (tarfile) 
     49#   INPUT_DIR           : is the directory for input files storing  
     50#   TMPDIR              : is the temporary directory (if needed) 
     51#   NEMO_VALIDATION_DIR : is the validation directory 
     52# 
     53#   (NOTE: this file is the same for all configrations to be tested with sette) 
     54# 
     55#   all_functions.sh : loads functions used by sette (note: new functions can be added here) 
     56#   set_namelist     : function declared in all_functions that sets namelist parameters  
     57#   post_test_tidyup : creates validation storage directory and copies required output files  
     58#                      (solver.stat and ocean.output) in it after execution of test. 
     59# 
     60#  VALIDATION tree is: 
     61# 
     62#   NEMO_VALIDATION_DIR/WCONFIG_NAME/WCOMPILER_NAME/TEST_NAME/REVISION_NUMBER(or DATE) 
     63# 
     64#  prepare_exe_dir.sh : defines and creates directory where the test is executed 
     65#                       execution directory takes name of TEST_NAME defined for every test  
     66#                       in sette.sh. (each test in executed in its own directory) 
     67# 
     68#  prepare_job.sh     : to generate the script run_job.sh 
     69# 
     70#  fcm_job.sh         : run in batch (INTERACT_FLAG="no") or interactive (INTERACT_FLAG="yes") 
     71#                        see sette.sh and BATCH_TEMPLATE directory 
     72# 
     73#  NOTE: jobs requiring initial or forcing data need to have an input_CONFIG.cfg in which  
     74#        can be found paths to the input tar file) 
     75#  NOTE: if job is not launched for any reason you have the executable ready in ${EXE_DIR}  
     76#        directory 
     77#  NOTE: the changed namelists are left in ${EXE_DIR} directory whereas original namelists  
     78#        remain in ${NEW_CONF}/EXP00 
    6279#  
    63 #   NEMO_VALIDATION_DIR : is the validation directory 
    64 # 
    65 #   (NOTE: this file is the same for all configrations to be tested with sette) 
    66 # 
    67 # 
    68 #  all_functions.sh : loads functions used by sette (note: new functions can be added here) 
    69 # 
    70 #   set_namelist : function declared in all_functions that set namelist parameters for tests 
    71 # 
    72 #   post_test_tidyup : creates validation storage directory and copy needed output files (solver.stat and ocean.output) in it after execution of test. 
    73 # 
    74 #   Tree of VALIDATION is: 
    75 # 
    76 #   NEMO_VALIDATION_DIR/WCONFIG_NAME/WCOMPILER_NAME/TEST_NAME/REVISION_NUMBER(or DATE) 
    77 # 
    78 # 
    79 #  prepare_exe_dir.sh : defines and creates directory where the test is executed 
    80 # 
    81 #       execution directory takes name of TEST_NAME defined in every test in sette.sh 
    82 # 
    83 #       ( each test in executed in its own directory ) 
    84 # 
    85 # 
    86 #  prepare_job.sh 
    87 # 
    88 #  to generate the script run_job.sh 
    89 # 
    90 #  fcm_job.sh  
    91 # 
    92 #   run in batch (INTERACT_FLAG="no") or interactive (INTERACT_FLAG="yes") see sette.sh and BATCH_TEMPLATE directory 
    93 # 
    94 #   (note this job needs to have an input_CONFIG.cfg in which can be found input tar file) 
    95 #  
    96 #  NOTE: if job is not launched for some problems you have executable ready in ${EXE_DIR} directory 
    97 # 
    98 #  NOTE: the changed namelists are leaved in ${EXE_DIR} directory whereas original namelist remains in ${NEW_CONF}/EXP00 
    99 #  
    100 #  in ${SETTE_DIR} is created output.sette with the echo of executed commands 
    101 # 
    102 #  if sette.sh is stopped in output.sette there is written the last command executed by sette.sh 
    103 # 
    104 #  if you run: ./sette.sh 2>&1 | tee out.sette 
    105 # 
    106 #  in ${SETTE_DIR} out.sette is redirected standard error & standard output 
    107 # 
    108 # 
    109 # EXAMPLES 
    110 # ======== 
    111 # 
    112 # :: 
    113 # 
    114 #  $ ./sette.sh  
    115 # 
    116 # 
    117 # TODO 
    118 # ==== 
    119 # 
    120 # option debug 
    121 # 
    122 # EVOLUTIONS 
    123 # ========== 
    124 # 
    125 # $Id$ 
    126 # 
    127 #   * creation 
    128 # 
    129 #- 
    130 # 
    131 #- 
     80#  NOTE: a log file, output.sette, is created in ${SETTE_DIR} with the echoes of  
     81#        executed commands 
     82# 
     83#  NOTE: if sette.sh is stopped in output.sette there is written the last command  
     84#        executed by sette.sh 
     85# 
     86# example use: ./sette.sh  
     87######################################################################################### 
     88# 
    13289# Compiler among those in NEMOGCM/ARCH 
    13390COMPILER=x3750_ADA 
     
    13693export INTERACT_FLAG="no" 
    13794export MPIRUN_FLAG="yes" 
    138 # IF YOU DON'T WANT TO USE XIOS : (this is a list of keys to be delete) 
    139 #export KEY_XIOS="key_iomput" 
    140 # IF YOU WANT TO USE XIOS : 
    141 export KEY_XIOS="" 
    142  
     95export USING_XIOS="yes" 
     96# 
     97export DEL_KEYS="key_iomput" 
     98if [ ${USING_XIOS} == "yes" ]  
     99 then  
     100   export DEL_KEYS="" 
     101fi 
     102# 
     103# Settings which control the use of stand alone servers (only relevant if using xios) 
     104# 
     105export USING_MPMD="no" 
     106export NUM_XIOSERVERS=4 
     107export JOB_PREFIX=batch-mpmd 
     108# 
     109if [ ${USING_MPMD} == "no" ]  
     110 then 
     111   export NUM_XIOSERVERS=0 
     112   export JOB_PREFIX=batch 
     113fi 
     114# 
     115# 
     116if [ ${USING_MPMD} == "yes" ] && [ ${USING_XIOS} == "no"] 
     117 then 
     118   echo "Incompatible choices. MPMD mode requires the XIOS server" 
     119   exit 
     120fi 
     121# 
    143122 
    144123# Directory to run the tests 
     
    152131# Copy job_batch_COMPILER file for specific compiler into job_batch_template 
    153132cd ${SETTE_DIR} 
    154 cp BATCH_TEMPLATE/batch-${COMPILER} job_batch_template || exit 
     133cp BATCH_TEMPLATE/${JOB_PREFIX}-${COMPILER} job_batch_template || exit 
    155134 
    156135for config in 1 2 3 4 5 6 7 8 9 10 11 
     
    163142    export TEST_NAME="LONG" 
    164143    cd ${CONFIG_DIR} 
    165     . ./makenemo -m ${CMP_NAM} -n GYRE_LONG -r GYRE -j 8 add_key "key_mpp_mpi" del_key ${KEY_XIOS} 
     144    . ./makenemo -m ${CMP_NAM} -n GYRE_LONG -r GYRE -j 8 del_key ${DEL_KEYS} 
    166145    cd ${SETTE_DIR} 
    167146    . param.cfg 
     
    170149    JOB_FILE=${EXE_DIR}/run_job.sh 
    171150    NPROC=4 
    172     \rm ${JOB_FILE} 
     151    if [ -f ${JOB_FILE} ] ; then \rm ${JOB_FILE} ; fi 
    173152    cd ${EXE_DIR}   
    174153    set_namelist namelist_cfg cn_exp \"GYRE_LONG\" 
     
    181160    set_namelist namelist_cfg jpnj 2 
    182161    set_namelist namelist_cfg jpnij 4 
    183     cd ${SETTE_DIR}  
    184     . ./prepare_job.sh input_GYRE.cfg $NPROC ${TEST_NAME} ${MPIRUN_FLAG} ${JOB_FILE} 
     162    if [ ${USING_MPMD} == "yes" ] ; then 
     163       set_xio_using_server iodef.xml true 
     164    else 
     165       set_xio_using_server iodef.xml false 
     166    fi 
     167    cd ${SETTE_DIR} 
     168    . ./prepare_job.sh input_GYRE.cfg $NPROC ${TEST_NAME} ${MPIRUN_FLAG} ${JOB_FILE} ${NUM_XIOSERVERS} 
    185169 
    186170    cd ${SETTE_DIR} 
     
    200184    set_namelist namelist_cfg jpnij 4 
    201185    set_namelist namelist_cfg cn_ocerst_in \"GYRE_LONG_00000060_restart\" 
     186    if [ ${USING_MPMD} == "yes" ] ; then 
     187       set_xio_using_server iodef.xml true 
     188    else 
     189       set_xio_using_server iodef.xml false 
     190    fi 
    202191    for (( i=1; i<=$NPROC; i++)) ; do 
    203192        L_NPROC=$(( $i - 1 )) 
     
    205194        ln -sf ../LONG/GYRE_LONG_00000060_restart_${L_NPROC}.nc . 
    206195    done 
    207     cd ${SETTE_DIR} 
    208     . ./prepare_job.sh input_GYRE.cfg $NPROC ${TEST_NAME} ${MPIRUN_FLAG} ${JOB_FILE} 
     196    if [ ${USING_MPMD} == "yes" ] ; then 
     197       set_xio_using_server iodef.xml true 
     198    else 
     199       set_xio_using_server iodef.xml false 
     200    fi 
     201    cd ${SETTE_DIR} 
     202    . ./prepare_job.sh input_GYRE.cfg $NPROC ${TEST_NAME} ${MPIRUN_FLAG} ${JOB_FILE} ${NUM_XIOSERVERS} 
    209203    cd ${SETTE_DIR} 
    210204    . ./fcm_job.sh $NPROC ${JOB_FILE} ${INTERACT_FLAG} ${MPIRUN_FLAG} 
     
    215209    export TEST_NAME="REPRO_1_4" 
    216210    cd ${CONFIG_DIR} 
    217     . ./makenemo -m ${CMP_NAM} -n GYRE_4 -r GYRE -j 8 add_key "key_mpp_mpi key_mpp_rep" del_key ${KEY_XIOS} 
     211    . ./makenemo -m ${CMP_NAM} -n GYRE_4 -r GYRE -j 8 add_key "key_mpp_rep" del_key ${DEL_KEYS} 
    218212    cd ${SETTE_DIR} 
    219213    . param.cfg 
     
    222216    JOB_FILE=${EXE_DIR}/run_job.sh 
    223217    NPROC=4 
    224     \rm ${JOB_FILE} 
     218    if [ -f ${JOB_FILE} ] ; then \rm ${JOB_FILE} ; fi 
    225219    cd ${EXE_DIR} 
    226220    set_namelist namelist_cfg cn_exp \"GYRE_14\" 
     
    235229    set_namelist namelist_cfg jpnj 4 
    236230    set_namelist namelist_cfg jpnij 4 
    237     cd ${SETTE_DIR} 
    238     . ./prepare_job.sh input_GYRE.cfg $NPROC ${TEST_NAME} ${MPIRUN_FLAG} ${JOB_FILE} 
     231    if [ ${USING_MPMD} == "yes" ] ; then 
     232       set_xio_using_server iodef.xml true 
     233    else 
     234       set_xio_using_server iodef.xml false 
     235    fi 
     236    cd ${SETTE_DIR} 
     237    . ./prepare_job.sh input_GYRE.cfg $NPROC ${TEST_NAME} ${MPIRUN_FLAG} ${JOB_FILE} ${NUM_XIOSERVERS} 
    239238    cd ${SETTE_DIR} 
    240239    . ./fcm_job.sh $NPROC ${JOB_FILE} ${INTERACT_FLAG} ${MPIRUN_FLAG} 
     
    245244    JOB_FILE=${EXE_DIR}/run_job.sh 
    246245    NPROC=4 
    247     \rm $JOB_FILE 
     246    if [ -f ${JOB_FILE} ] ; then \rm ${JOB_FILE} ; fi 
    248247    cd ${EXE_DIR} 
    249248    set_namelist namelist_cfg cn_exp \"GYRE_22\" 
     
    257256    set_namelist namelist_cfg jpnj 2 
    258257    set_namelist namelist_cfg jpnij 4 
    259     cd ${SETTE_DIR} 
    260     . ./prepare_job.sh input_GYRE.cfg $NPROC ${TEST_NAME} ${MPIRUN_FLAG} ${JOB_FILE} 
     258    if [ ${USING_MPMD} == "yes" ] ; then 
     259       set_xio_using_server iodef.xml true 
     260    else 
     261       set_xio_using_server iodef.xml false 
     262    fi 
     263    cd ${SETTE_DIR} 
     264    . ./prepare_job.sh input_GYRE.cfg $NPROC ${TEST_NAME} ${MPIRUN_FLAG} ${JOB_FILE} ${NUM_XIOSERVERS} 
    261265    cd ${SETTE_DIR} 
    262266    . ./fcm_job.sh $NPROC ${JOB_FILE} ${INTERACT_FLAG} ${MPIRUN_FLAG} 
     
    269273    export TEST_NAME="LONG" 
    270274    cd ${CONFIG_DIR} 
    271     . ./makenemo -m ${CMP_NAM} -n ORCA2LIMPIS_LONG -r ORCA2_LIM_PISCES -j 8 add_key "key_mpp_mpi" del_key ${KEY_XIOS} 
     275    . ./makenemo -m ${CMP_NAM} -n ORCA2LIMPIS_LONG -r ORCA2_LIM_PISCES -j 8 del_key ${DEL_KEYS} 
    272276    cd ${SETTE_DIR} 
    273277    . param.cfg 
     
    276280    JOB_FILE=${EXE_DIR}/run_job.sh 
    277281    NPROC=4 
    278     \rm ${JOB_FILE} 
     282    if [ -f ${JOB_FILE} ] ; then \rm ${JOB_FILE} ; fi 
    279283    cd ${EXE_DIR} 
    280284    set_namelist namelist_cfg cn_exp \"O2LP_LONG\" 
     
    299303    set_namelist namelist_pisces_cfg ln_ironsed .false. 
    300304    set_namelist namelist_pisces_cfg ln_hydrofe .false. 
    301     cd ${SETTE_DIR} 
    302     . ./prepare_job.sh input_ORCA2_LIM_PISCES.cfg $NPROC ${TEST_NAME} ${MPIRUN_FLAG} ${JOB_FILE} 
     305    if [ ${USING_MPMD} == "yes" ] ; then 
     306       set_xio_using_server iodef.xml true 
     307    else 
     308       set_xio_using_server iodef.xml false 
     309    fi 
     310    cd ${SETTE_DIR} 
     311    . ./prepare_job.sh input_ORCA2_LIM_PISCES.cfg $NPROC ${TEST_NAME} ${MPIRUN_FLAG} ${JOB_FILE} ${NUM_XIOSERVERS} 
    303312     
    304313    cd ${SETTE_DIR} 
     
    342351        ln -sf ../LONG/O2LP_LONG_00000075_restart_ice_${L_NPROC}.nc . 
    343352    done 
    344     cd ${SETTE_DIR} 
    345     . ./prepare_job.sh input_ORCA2_LIM_PISCES.cfg $NPROC ${TEST_NAME} ${MPIRUN_FLAG} ${JOB_FILE} 
     353    if [ ${USING_MPMD} == "yes" ] ; then 
     354       set_xio_using_server iodef.xml true 
     355    else 
     356       set_xio_using_server iodef.xml false 
     357    fi 
     358    cd ${SETTE_DIR} 
     359    . ./prepare_job.sh input_ORCA2_LIM_PISCES.cfg $NPROC ${TEST_NAME} ${MPIRUN_FLAG} ${JOB_FILE} ${NUM_XIOSERVERS} 
    346360    cd ${SETTE_DIR} 
    347361    . ./fcm_job.sh $NPROC ${JOB_FILE} ${INTERACT_FLAG} ${MPIRUN_FLAG} 
     
    352366    export TEST_NAME="REPRO_4_4" 
    353367    cd ${CONFIG_DIR} 
    354     . ./makenemo -m ${CMP_NAM} -n ORCA2LIMPIS_16 -r ORCA2_LIM_PISCES -j 8 add_key "key_mpp_mpi key_mpp_rep" del_key ${KEY_XIOS} 
     368    . ./makenemo -m ${CMP_NAM} -n ORCA2LIMPIS_16 -r ORCA2_LIM_PISCES -j 8 add_key "key_mpp_rep" del_key ${DEL_KEYS} 
    355369    cd ${SETTE_DIR} 
    356370    . param.cfg 
     
    359373    JOB_FILE=${EXE_DIR}/run_job.sh 
    360374    NPROC=16 
    361     \rm $JOB_FILE 
     375    if [ -f ${JOB_FILE} ] ; then \rm ${JOB_FILE} ; fi 
    362376    cd ${EXE_DIR} 
    363377    set_namelist namelist_cfg nn_it000 1 
     
    384398    # put ln_pisdmp to false : no restoring to global mean value 
    385399    set_namelist namelist_pisces_cfg ln_pisdmp .false. 
    386     cd ${SETTE_DIR} 
    387     . ./prepare_job.sh input_ORCA2_LIM_PISCES.cfg $NPROC ${TEST_NAME} ${MPIRUN_FLAG} ${JOB_FILE} 
     400    if [ ${USING_MPMD} == "yes" ] ; then 
     401       set_xio_using_server iodef.xml true 
     402    else 
     403       set_xio_using_server iodef.xml false 
     404    fi 
     405    cd ${SETTE_DIR} 
     406    . ./prepare_job.sh input_ORCA2_LIM_PISCES.cfg $NPROC ${TEST_NAME} ${MPIRUN_FLAG} ${JOB_FILE} ${NUM_XIOSERVERS} 
    388407    cd ${SETTE_DIR} 
    389408    . ./fcm_job.sh $NPROC ${JOB_FILE} ${INTERACT_FLAG} ${MPIRUN_FLAG} 
     
    394413    JOB_FILE=${EXE_DIR}/run_job.sh 
    395414    NPROC=16 
    396     \rm $JOB_FILE 
     415    if [ -f ${JOB_FILE} ] ; then \rm ${JOB_FILE} ; fi 
    397416    cd ${EXE_DIR} 
    398417    set_namelist namelist_cfg nn_it000 1 
     
    418437    # put ln_pisdmp to false : no restoring to global mean value 
    419438    set_namelist namelist_pisces_cfg ln_pisdmp .false. 
    420     cd ${SETTE_DIR} 
    421     . ./prepare_job.sh input_ORCA2_LIM_PISCES.cfg $NPROC ${TEST_NAME} ${MPIRUN_FLAG} ${JOB_FILE} 
     439    if [ ${USING_MPMD} == "yes" ] ; then 
     440       set_xio_using_server iodef.xml true 
     441    else 
     442       set_xio_using_server iodef.xml false 
     443    fi 
     444    cd ${SETTE_DIR} 
     445    . ./prepare_job.sh input_ORCA2_LIM_PISCES.cfg $NPROC ${TEST_NAME} ${MPIRUN_FLAG} ${JOB_FILE} ${NUM_XIOSERVERS} 
    422446    cd ${SETTE_DIR} 
    423447    . ./fcm_job.sh $NPROC ${JOB_FILE} ${INTERACT_FLAG} ${MPIRUN_FLAG} 
     
    429453    export TEST_NAME="LONG" 
    430454    cd ${CONFIG_DIR} 
    431     . ./makenemo -m ${CMP_NAM} -n ORCA2OFFPIS_LONG -r ORCA2_OFF_PISCES -j 8 add_key "key_mpp_mpi key_mpp_rep" del_key ${KEY_XIOS} 
     455    . ./makenemo -m ${CMP_NAM} -n ORCA2OFFPIS_LONG -r ORCA2_OFF_PISCES -j 8 add_key "key_mpp_rep" del_key ${DEL_KEYS} 
    432456    cd ${SETTE_DIR} 
    433457    . param.cfg 
     
    436460    JOB_FILE=${EXE_DIR}/run_job.sh 
    437461    NPROC=4 
    438     \rm $JOB_FILE 
     462    if [ -f ${JOB_FILE} ] ; then \rm ${JOB_FILE} ; fi 
    439463    cd ${EXE_DIR} 
    440464    set_namelist namelist_cfg cn_exp \"OFFP_LONG\" 
     
    460484    # put ln_pisdmp to false : no restoring to global mean value 
    461485    set_namelist namelist_pisces_cfg ln_pisdmp .false. 
    462     cd ${SETTE_DIR} 
    463     . ./prepare_job.sh input_ORCA2_OFF_PISCES.cfg $NPROC ${TEST_NAME} ${MPIRUN_FLAG} ${JOB_FILE} 
     486    if [ ${USING_MPMD} == "yes" ] ; then 
     487       set_xio_using_server iodef.xml true 
     488    else 
     489       set_xio_using_server iodef.xml false 
     490    fi 
     491    cd ${SETTE_DIR} 
     492    . ./prepare_job.sh input_ORCA2_OFF_PISCES.cfg $NPROC ${TEST_NAME} ${MPIRUN_FLAG} ${JOB_FILE} ${NUM_XIOSERVERS} 
    464493     
    465494    cd ${SETTE_DIR} 
     
    496525    # put ln_pisdmp to false : no restoring to global mean value 
    497526    set_namelist namelist_pisces_cfg ln_pisdmp .false. 
    498     cd ${SETTE_DIR} 
    499     . ./prepare_job.sh input_ORCA2_OFF_PISCES.cfg $NPROC ${TEST_NAME}  ${MPIRUN_FLAG} ${JOB_FILE} 
     527    if [ ${USING_MPMD} == "yes" ] ; then 
     528       set_xio_using_server iodef.xml true 
     529    else 
     530       set_xio_using_server iodef.xml false 
     531    fi 
     532    cd ${SETTE_DIR} 
     533    . ./prepare_job.sh input_ORCA2_OFF_PISCES.cfg $NPROC ${TEST_NAME}  ${MPIRUN_FLAG} ${JOB_FILE} ${NUM_XIOSERVERS} 
    500534    cd ${SETTE_DIR} 
    501535    . ./fcm_job.sh $NPROC  ${JOB_FILE} ${INTERACT_FLAG} ${MPIRUN_FLAG} 
     
    506540    export TEST_NAME="REPRO_4_4" 
    507541    cd ${CONFIG_DIR} 
    508     . ./makenemo -m ${CMP_NAM} -n ORCA2OFFPIS_16 -r ORCA2_OFF_PISCES -j 8 add_key "key_mpp_mpi key_mpp_rep" del_key ${KEY_XIOS} 
     542    . ./makenemo -m ${CMP_NAM} -n ORCA2OFFPIS_16 -r ORCA2_OFF_PISCES -j 8 add_key "key_mpp_rep" del_key ${DEL_KEYS} 
    509543    cd ${SETTE_DIR} 
    510544    . param.cfg 
     
    513547    JOB_FILE=${EXE_DIR}/run_job.sh 
    514548    NPROC=16 
    515     \rm $JOB_FILE 
     549    if [ -f ${JOB_FILE} ] ; then \rm ${JOB_FILE} ; fi 
    516550    cd ${EXE_DIR} 
    517551    set_namelist namelist_cfg nn_it000 1 
     
    536570    # put ln_pisdmp to false : no restoring to global mean value 
    537571    set_namelist namelist_pisces_cfg ln_pisdmp .false. 
    538     cd ${SETTE_DIR} 
    539     . ./prepare_job.sh input_ORCA2_OFF_PISCES.cfg $NPROC ${TEST_NAME} ${MPIRUN_FLAG} ${JOB_FILE} 
     572    if [ ${USING_MPMD} == "yes" ] ; then 
     573       set_xio_using_server iodef.xml true 
     574    else 
     575       set_xio_using_server iodef.xml false 
     576    fi 
     577    cd ${SETTE_DIR} 
     578    . ./prepare_job.sh input_ORCA2_OFF_PISCES.cfg $NPROC ${TEST_NAME} ${MPIRUN_FLAG} ${JOB_FILE} ${NUM_XIOSERVERS} 
    540579    cd ${SETTE_DIR} 
    541580    . ./fcm_job.sh $NPROC ${JOB_FILE} ${INTERACT_FLAG} ${MPIRUN_FLAG} 
     
    546585    JOB_FILE=${EXE_DIR}/run_job.sh 
    547586    NPROC=16 
    548     \rm $JOB_FILE 
     587    if [ -f ${JOB_FILE} ] ; then \rm ${JOB_FILE} ; fi 
    549588    cd ${EXE_DIR} 
    550589    set_namelist namelist_cfg nn_it000 1 
     
    569608    # put ln_pisdmp to false : no restoring to global mean value 
    570609    set_namelist namelist_pisces_cfg ln_pisdmp .false.  
    571     cd ${SETTE_DIR} 
    572     . ./prepare_job.sh input_ORCA2_OFF_PISCES.cfg $NPROC ${TEST_NAME} ${MPIRUN_FLAG} ${JOB_FILE} 
     610    if [ ${USING_MPMD} == "yes" ] ; then 
     611       set_xio_using_server iodef.xml true 
     612    else 
     613       set_xio_using_server iodef.xml false 
     614    fi 
     615    cd ${SETTE_DIR} 
     616    . ./prepare_job.sh input_ORCA2_OFF_PISCES.cfg $NPROC ${TEST_NAME} ${MPIRUN_FLAG} ${JOB_FILE} ${NUM_XIOSERVERS} 
    573617    cd ${SETTE_DIR} 
    574618    . ./fcm_job.sh $NPROC  ${JOB_FILE} ${INTERACT_FLAG} ${MPIRUN_FLAG} 
     
    580624    export TEST_NAME="LONG" 
    581625    cd ${CONFIG_DIR} 
    582     . ./makenemo -m ${CMP_NAM} -n AMM12_LONG -r AMM12 -j 8 add_key "key_tide" del_key ${KEY_XIOS} 
     626    . ./makenemo -m ${CMP_NAM} -n AMM12_LONG -r AMM12 -j 8 add_key "key_tide" del_key ${DEL_KEYS} 
    583627    cd ${SETTE_DIR} 
    584628    . param.cfg 
     
    587631    JOB_FILE=${EXE_DIR}/run_job.sh 
    588632    NPROC=32 
    589     \rm $JOB_FILE 
     633    if [ -f ${JOB_FILE} ] ; then \rm ${JOB_FILE} ; fi 
    590634    cd ${EXE_DIR} 
    591635    set_namelist namelist_cfg nn_it000 1 
     
    602646    set_namelist namelist_cfg jpnj 4 
    603647    set_namelist namelist_cfg jpnij 32 
    604     cd ${SETTE_DIR} 
    605     . ./prepare_job.sh input_AMM12.cfg $NPROC ${TEST_NAME} ${MPIRUN_FLAG} ${JOB_FILE} 
     648    if [ ${USING_MPMD} == "yes" ] ; then 
     649       set_xio_using_server iodef.xml true 
     650    else 
     651       set_xio_using_server iodef.xml false 
     652    fi 
     653    cd ${SETTE_DIR} 
     654    . ./prepare_job.sh input_AMM12.cfg $NPROC ${TEST_NAME} ${MPIRUN_FLAG} ${JOB_FILE} ${NUM_XIOSERVERS} 
    606655 
    607656    cd ${SETTE_DIR} 
     
    627676        ln -sf ../LONG/AMM12_00000006_restart_oce_out_${L_NPROC}.nc . 
    628677    done 
    629     cd ${SETTE_DIR} 
    630     . ./prepare_job.sh input_AMM12.cfg $NPROC ${TEST_NAME} ${MPIRUN_FLAG} ${JOB_FILE} 
     678    if [ ${USING_MPMD} == "yes" ] ; then 
     679       set_xio_using_server iodef.xml true 
     680    else 
     681       set_xio_using_server iodef.xml false 
     682    fi 
     683    cd ${SETTE_DIR} 
     684    . ./prepare_job.sh input_AMM12.cfg $NPROC ${TEST_NAME} ${MPIRUN_FLAG} ${JOB_FILE} ${NUM_XIOSERVERS} 
    631685    cd ${SETTE_DIR} 
    632686    . ./fcm_job.sh $NPROC ${JOB_FILE} ${INTERACT_FLAG} ${MPIRUN_FLAG} 
     
    637691    export TEST_NAME="REPRO_8_4" 
    638692    cd ${CONFIG_DIR} 
    639     . ./makenemo -m ${CMP_NAM} -n AMM12_32 -r AMM12 -j 8 add_key "key_mpp_rep key_tide" del_key ${KEY_XIOS}   
     693    . ./makenemo -m ${CMP_NAM} -n AMM12_32 -r AMM12 -j 8 add_key "key_mpp_rep key_tide" del_key ${DEL_KEYS} 
    640694    cd ${SETTE_DIR} 
    641695    . param.cfg 
     
    644698    JOB_FILE=${EXE_DIR}/run_job.sh 
    645699    NPROC=32 
    646     \rm ${JOB_FILE} 
     700    if [ -f ${JOB_FILE} ] ; then \rm ${JOB_FILE} ; fi 
    647701    cd ${EXE_DIR} 
    648702    set_namelist namelist_cfg nn_it000 1 
     
    657711    set_namelist namelist_cfg jpnj 4 
    658712    set_namelist namelist_cfg jpnij 32 
    659     cd ${SETTE_DIR} 
    660     . ./prepare_job.sh input_AMM12.cfg $NPROC ${TEST_NAME} ${MPIRUN_FLAG} ${JOB_FILE} 
     713    if [ ${USING_MPMD} == "yes" ] ; then 
     714       set_xio_using_server iodef.xml true 
     715    else 
     716       set_xio_using_server iodef.xml false 
     717    fi 
     718    cd ${SETTE_DIR} 
     719    . ./prepare_job.sh input_AMM12.cfg $NPROC ${TEST_NAME} ${MPIRUN_FLAG} ${JOB_FILE} ${NUM_XIOSERVERS} 
    661720    cd ${SETTE_DIR} 
    662721    . ./fcm_job.sh $NPROC ${JOB_FILE} ${INTERACT_FLAG} ${MPIRUN_FLAG} 
     
    677736    set_namelist namelist_cfg jpnj 8 
    678737    set_namelist namelist_cfg jpnij 32 
    679     cd ${SETTE_DIR} 
    680     . ./prepare_job.sh input_AMM12.cfg $NPROC ${TEST_NAME} ${MPIRUN_FLAG} ${JOB_FILE} 
    681     cd ${SETTE_DIR} 
    682     . ./fcm_job.sh $NPROC ${JOB_FILE} ${INTERACT_FLAG} ${MPIRUN_FLAG} 
    683 fi 
    684  
    685 # TEST FOR ORCA2_LIM_AGRIF : simple test of running AGRIF (no restartability neither reproducibility tests) 
     738    if [ ${USING_MPMD} == "yes" ] ; then 
     739       set_xio_using_server iodef.xml true 
     740    else 
     741       set_xio_using_server iodef.xml false 
     742    fi 
     743    cd ${SETTE_DIR} 
     744    . ./prepare_job.sh input_AMM12.cfg $NPROC ${TEST_NAME} ${MPIRUN_FLAG} ${JOB_FILE} ${NUM_XIOSERVERS} 
     745    cd ${SETTE_DIR} 
     746    . ./fcm_job.sh $NPROC ${JOB_FILE} ${INTERACT_FLAG} ${MPIRUN_FLAG} 
     747fi 
     748 
     749 
     750# TESTS FOR ORCA2_SAS_LIM CONFIGURATION 
    686751if [ ${config} -eq 9 ] ;  then 
    687     ## ORCA2_LIM with Agulhas AGRIF zoom in MPI 
    688     export TEST_NAME="SHORT" 
    689     cd ${CONFIG_DIR} 
    690     . ./makenemo -m ${CMP_NAM} -n ORCA2AGUL_1_2 -r ORCA2_LIM -j 8 add_key "key_mpp_mpi key_mpp_rep key_agrif" del_key "key_zdftmx" del_key ${KEY_XIOS} 
    691     cd ${SETTE_DIR} 
    692     . param.cfg 
    693     . all_functions.sh 
    694     . prepare_exe_dir.sh 
    695     JOB_FILE=${EXE_DIR}/run_job.sh 
    696     NPROC=2 
    697     \rm ${JOB_FILE} 
    698     cd ${EXE_DIR} 
    699     set_namelist namelist_cfg nn_it000 1 
    700     set_namelist namelist_cfg nn_itend 75 
    701     set_namelist namelist_cfg ln_ctl .false. 
    702     set_namelist namelist_cfg ln_clobber .true. 
    703     set_namelist namelist_cfg jpni 1 
    704     set_namelist namelist_cfg jpnj 2 
    705     set_namelist namelist_cfg jpnij 2 
    706     set_namelist 1_namelist_cfg nn_it000 1 
    707     set_namelist 1_namelist_cfg nn_itend 150 
    708     set_namelist 1_namelist_cfg ln_ctl .false. 
    709     set_namelist 1_namelist_cfg ln_clobber .true. 
    710     cd ${SETTE_DIR} 
    711     . ./prepare_job.sh input_ORCA2_LIM_AGRIF.cfg $NPROC ${TEST_NAME} ${MPIRUN_FLAG} ${JOB_FILE} 
    712     cd ${SETTE_DIR} 
    713     . ./fcm_job.sh $NPROC ${JOB_FILE} ${INTERACT_FLAG} ${MPIRUN_FLAG} 
    714 fi 
    715  
    716 # TESTS FOR ORCA2_SAS_LIM CONFIGURATION 
    717 if [ ${config} -eq 10 ] ;  then 
    718752    ## Restartability tests for SAS 
    719753    export TEST_NAME="LONG" 
    720754    cd ${CONFIG_DIR} 
    721     . ./makenemo -m ${CMP_NAM} -n SAS_LONG -r ORCA2_SAS_LIM -j 8 add_key " " del_key ${KEY_XIOS} 
     755    . ./makenemo -m ${CMP_NAM} -n SAS_LONG -r ORCA2_SAS_LIM -j 8 "key_mpp_rep" del_key ${DEL_KEYS} 
    722756    cd ${SETTE_DIR} 
    723757    . param.cfg 
     
    737771    set_namelist namelist_cfg jpnj 4 
    738772    set_namelist namelist_cfg jpnij 32 
    739     cd ${SETTE_DIR} 
    740     . ./prepare_job.sh input_SAS.cfg $NPROC ${TEST_NAME} ${MPIRUN_FLAG} ${JOB_FILE} 
     773    if [ ${USING_MPMD} == "yes" ] ; then 
     774       set_xio_using_server iodef.xml true 
     775    else 
     776       set_xio_using_server iodef.xml false 
     777    fi 
     778    cd ${SETTE_DIR} 
     779    . ./prepare_job.sh input_SAS.cfg $NPROC ${TEST_NAME} ${MPIRUN_FLAG} ${JOB_FILE} ${NUM_XIOSERVERS} 
    741780 
    742781    cd ${SETTE_DIR} 
     
    759798        ln -sf ../LONG/SAS_00000050_restart_${L_NPROC}.nc . 
    760799    done 
    761     cd ${SETTE_DIR} 
    762     . ./prepare_job.sh input_SAS.cfg $NPROC ${TEST_NAME} ${MPIRUN_FLAG} ${JOB_FILE} 
    763     cd ${SETTE_DIR} 
    764     . ./fcm_job.sh $NPROC ${JOB_FILE} ${INTERACT_FLAG} ${MPIRUN_FLAG} 
    765 fi 
    766  
    767 if [ ${config} -eq 11 ] ;  then 
     800    if [ ${USING_MPMD} == "yes" ] ; then 
     801       set_xio_using_server iodef.xml true 
     802    else 
     803       set_xio_using_server iodef.xml false 
     804    fi 
     805    cd ${SETTE_DIR} 
     806    . ./prepare_job.sh input_SAS.cfg $NPROC ${TEST_NAME} ${MPIRUN_FLAG} ${JOB_FILE} ${NUM_XIOSERVERS} 
     807    cd ${SETTE_DIR} 
     808    . ./fcm_job.sh $NPROC ${JOB_FILE} ${INTERACT_FLAG} ${MPIRUN_FLAG} 
     809fi 
     810 
     811if [ ${config} -eq 10 ] ;  then 
    768812## Reproducibility tests for ORCA2_SAS_LIM 
    769813    export TEST_NAME="REPRO_8_4" 
    770814    cd ${CONFIG_DIR} 
    771     . ./makenemo -m ${CMP_NAM} -n SAS_32 -r ORCA2_SAS_LIM -j 8 add_key " " del_key ${KEY_XIOS} 
     815    . ./makenemo -m ${CMP_NAM} -n SAS_32 -r ORCA2_SAS_LIM -j 8 add_key "key_mpp_rep" del_key ${DEL_KEYS} 
    772816    cd ${SETTE_DIR} 
    773817    . param.cfg 
     
    786830    set_namelist namelist_cfg jpnj 4 
    787831    set_namelist namelist_cfg jpnij 32 
    788     cd ${SETTE_DIR} 
    789     . ./prepare_job.sh input_SAS.cfg $NPROC ${TEST_NAME} ${MPIRUN_FLAG} ${JOB_FILE} 
    790     cd ${SETTE_DIR} 
    791     . ./fcm_job.sh $NPROC ${JOB_FILE} ${INTERACT_FLAG} ${MPIRUN_FLAG} 
    792  
     832    if [ ${USING_MPMD} == "yes" ] ; then 
     833       set_xio_using_server iodef.xml true 
     834    else 
     835       set_xio_using_server iodef.xml false 
     836    fi 
     837    cd ${SETTE_DIR} 
     838    . ./prepare_job.sh input_SAS.cfg $NPROC ${TEST_NAME} ${MPIRUN_FLAG} ${JOB_FILE}  ${NUM_XIOSERVERS} 
     839    cd ${SETTE_DIR} 
     840    . ./fcm_job.sh $NPROC ${JOB_FILE} ${INTERACT_FLAG} ${MPIRUN_FLAG} 
    793841    cd ${SETTE_DIR} 
    794842    export TEST_NAME="REPRO_4_8" 
     
    803851    set_namelist namelist_cfg jpnj 8 
    804852    set_namelist namelist_cfg jpnij 32 
    805     cd ${SETTE_DIR} 
    806     . ./prepare_job.sh input_SAS.cfg $NPROC ${TEST_NAME} ${MPIRUN_FLAG} ${JOB_FILE} 
    807     cd ${SETTE_DIR} 
    808     . ./fcm_job.sh $NPROC ${JOB_FILE} ${INTERACT_FLAG} ${MPIRUN_FLAG} 
    809 fi 
     853    if [ ${USING_MPMD} == "yes" ] ; then 
     854       set_xio_using_server iodef.xml true 
     855    else 
     856       set_xio_using_server iodef.xml false 
     857    fi 
     858    cd ${SETTE_DIR} 
     859    . ./prepare_job.sh input_SAS.cfg $NPROC ${TEST_NAME} ${MPIRUN_FLAG} ${JOB_FILE} ${NUM_XIOSERVERS} 
     860    cd ${SETTE_DIR} 
     861    . ./fcm_job.sh $NPROC ${JOB_FILE} ${INTERACT_FLAG} ${MPIRUN_FLAG} 
     862fi 
     863 
     864# TEST FOR ORCA2_LIM_AGRIF : simple test of running AGRIF (no restartability neither reproducibility tests) 
     865if [ ${config} -eq 11 ] ;  then 
     866    ## ORCA2_LIM with Agulhas AGRIF zoom in MPI 
     867    export TEST_NAME="SHORT" 
     868    cd ${CONFIG_DIR} 
     869    . ./makenemo -m ${CMP_NAM} -n ORCA2AGUL_1_2 -r ORCA2_LIM -j 8 add_key "key_mpp_rep key_agrif" del_key "key_zdftmx" del_key ${DEL_KEYS} 
     870    cd ${SETTE_DIR} 
     871    . param.cfg 
     872    . all_functions.sh 
     873    . prepare_exe_dir.sh 
     874    JOB_FILE=${EXE_DIR}/run_job.sh 
     875    NPROC=2 
     876    if [ -f ${JOB_FILE} ] ; then \rm ${JOB_FILE} ; fi 
     877    cd ${EXE_DIR} 
     878    set_namelist namelist_cfg nn_it000 1 
     879    set_namelist namelist_cfg nn_itend 75 
     880    set_namelist namelist_cfg ln_ctl .false. 
     881    set_namelist namelist_cfg ln_clobber .true. 
     882    set_namelist namelist_cfg jpni 1 
     883    set_namelist namelist_cfg jpnj 2 
     884    set_namelist namelist_cfg jpnij 2 
     885    set_namelist 1_namelist_cfg nn_it000 1 
     886    set_namelist 1_namelist_cfg nn_itend 150 
     887    set_namelist 1_namelist_cfg ln_ctl .false. 
     888    set_namelist 1_namelist_cfg ln_clobber .true. 
     889    if [ ${USING_MPMD} == "yes" ] ; then 
     890       set_xio_using_server iodef.xml true 
     891    else 
     892       set_xio_using_server iodef.xml false 
     893    fi 
     894    cd ${SETTE_DIR} 
     895    . ./prepare_job.sh input_ORCA2_LIM_AGRIF.cfg $NPROC ${TEST_NAME} ${MPIRUN_FLAG} ${JOB_FILE} ${NUM_XIOSERVERS} 
     896    cd ${SETTE_DIR} 
     897    . ./fcm_job.sh $NPROC ${JOB_FILE} ${INTERACT_FLAG} ${MPIRUN_FLAG} 
     898fi 
     899 
    810900 
    811901done 
Note: See TracChangeset for help on using the changeset viewer.