Changeset 6004


Ignore:
Timestamp:
2015-12-04T17:05:58+01:00 (5 years ago)
Author:
gm
Message:

#1613: vvl by default, step III: Merge with the trunk (free surface simplification) (see wiki)

Location:
branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM
Files:
4 deleted
144 edited

Legend:

Unmodified
Added
Removed
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/CONFIG/AMM12/EXP00/namelist_cfg

    r5904 r6004  
    7171/ 
    7272!----------------------------------------------------------------------- 
    73 &namsplit      !   time splitting parameters                            ("key_dynspg_ts") 
    74 !----------------------------------------------------------------------- 
    75    ln_bt_nn_auto =    .FALSE.          !  Set nn_baro automatically to be just below 
    76                                        !  a user defined maximum courant number (rn_bt_cmax) 
    77    nn_baro       =    30               !  Number of iterations of barotropic mode 
    78 / 
    79 !----------------------------------------------------------------------- 
    8073&namcrs        !   Grid coarsening for dynamics output and/or 
    8174               !   passive tracer coarsened online simulations 
     
    9992   nn_fwb      = 0         !  FreshWater Budget: =0 unchecked 
    10093   ln_apr_dyn  = .false.    !  Patm gradient added in ocean & ice Eqs.   (T => fill namsbc_apr ) 
    101    ln_traqsr   = .false.   !  Light penetration (T) or not (F) 
    10294 
    10395/ 
     
    137129&namtra_qsr    !   penetrative solar radiation 
    138130!----------------------------------------------------------------------- 
     131   ln_traqsr   = .false.   !  Light penetration (T) or not (F) 
    139132   nn_chldta   =      0    !  RGB : Chl data (=1) or cst value (=0) 
    140133/ 
     
    256249/ 
    257250!----------------------------------------------------------------------- 
    258 &nambbc        !   bottom temperature boundary condition 
    259 !----------------------------------------------------------------------- 
    260    ln_trabbc   = .false.   !  Apply a geothermal heating at the ocean bottom 
     251&nambbc        !   bottom temperature boundary condition                (default: NO) 
     252!----------------------------------------------------------------------- 
    261253/ 
    262254!----------------------------------------------------------------------- 
     
    343335/ 
    344336!----------------------------------------------------------------------- 
    345 !namdyn_spg    !   surface pressure gradient   (CPP key only) 
    346 !----------------------------------------------------------------------- 
    347 !                          !  explicit free surface                     ("key_dynspg_exp") 
    348 !                          !  filtered free surface                     ("key_dynspg_flt") 
    349 !                          !  split-explicit free surface               ("key_dynspg_ts") 
    350  
     337&namdyn_spg    !   surface pressure gradient  
     338!----------------------------------------------------------------------- 
     339   ln_dynspg_ts = .true.    ! split-explicit free surface 
     340      ln_bt_auto    = .false.  ! Number of sub-step defined from: 
     341         nn_baro       = 30       ! =F : the number of sub-step in rn_rdt seconds 
     342/ 
    351343!----------------------------------------------------------------------- 
    352344&namdyn_ldf    !   lateral diffusion on momentum 
     
    407399/ 
    408400!----------------------------------------------------------------------- 
    409 &namsol        !   elliptic solver / island / free surface 
    410 !----------------------------------------------------------------------- 
    411 / 
    412 !----------------------------------------------------------------------- 
    413401&nammpp        !   Massively Parallel Processing                        ("key_mpp_mpi) 
    414402!----------------------------------------------------------------------- 
     
    458446!----------------------------------------------------------------------- 
    459447/ 
    460 !----------------------------------------------------------------------- 
    461 &namdyn_nept  !   Neptune effect (simplified: lateral and vertical diffusions removed) 
    462 !----------------------------------------------------------------------- 
    463 / 
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/CONFIG/AMM12/cpp_AMM12.fcm

    r5866 r6004  
    1  bld::tool::fppkeys  key_bdy key_tide key_dynspg_ts  key_zdfgls key_diainstant key_mpp_mpi key_iomput 
     1 bld::tool::fppkeys  key_bdy key_tide key_zdfgls key_diainstant key_mpp_mpi key_iomput 
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/CONFIG/C1D_PAPA/EXP00/namelist_cfg

    r5866 r6004  
    6565/ 
    6666!----------------------------------------------------------------------- 
    67 &namsplit      !   time splitting parameters                            ("key_dynspg_ts") 
    68 !----------------------------------------------------------------------- 
    69 / 
    70 !----------------------------------------------------------------------- 
    7167&namcrs        !   Grid coarsening for dynamics output and/or 
    7268               !   passive tracer coarsened online simulations 
     
    142138&namtra_qsr    !   penetrative solar radiation 
    143139!----------------------------------------------------------------------- 
     140!              !  file name  ! frequency (hours) ! variable  ! time interp. !  clim  ! 'yearly'/ ! weights  ! rotation ! land/sea mask ! 
     141!              !             !  (if <0  months)  !   name    !   (logical)  !  (T/F) ! 'monthly' ! filename ! pairing  ! filename      ! 
     142   sn_chl      ='chlorophyll_PAPASTATION', -1    , 'CHLA'    ,   .true.     , .true. , 'yearly'  , ''       , ''       , '' 
    144143/ 
    145144!----------------------------------------------------------------------- 
     
    198197/ 
    199198!----------------------------------------------------------------------- 
    200 &nambbc        !   bottom temperature boundary condition 
    201 !----------------------------------------------------------------------- 
    202    ln_trabbc   = .false.   !  Apply a geothermal heating at the ocean bottom 
    203    nn_geoflx   =    0      !  geothermal heat flux: = 0 no flux 
     199&nambbc        !   bottom temperature boundary condition                (default: NO) 
     200!----------------------------------------------------------------------- 
    204201/ 
    205202!----------------------------------------------------------------------- 
     
    262259/ 
    263260!----------------------------------------------------------------------- 
    264 !namdyn_spg    !   surface pressure gradient   (CPP key only) 
    265 !----------------------------------------------------------------------- 
     261&namdyn_spg    !   surface pressure gradient                            (default: NO spg) 
     262!----------------------------------------------------------------------- 
     263/ 
    266264!----------------------------------------------------------------------- 
    267265&namdyn_ldf    !   lateral diffusion on momentum 
     
    294292!----------------------------------------------------------------------- 
    295293   ln_tmx_itf  = .false.   !  ITF specific parameterisation 
    296 / 
    297 !----------------------------------------------------------------------- 
    298 &namsol        !   elliptic solver / island / free surface 
    299 !----------------------------------------------------------------------- 
    300    nn_solv     =      2    !  elliptic solver: =1 preconditioned conjugate gradient (pcg) 
    301    nn_nmin     =    210    !  minimum of iterations for the SOR solver 
    302    rn_sor      =  1.96     !  optimal coefficient for SOR solver (to be adjusted with the domain) 
    303294/ 
    304295!----------------------------------------------------------------------- 
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/CONFIG/GYRE/EXP00/namelist_cfg

    r5866 r6004  
    6464   ppkth2      =  999999.0               ! 
    6565   ppacr2      =  999999.0               ! 
    66 / 
    67 !----------------------------------------------------------------------- 
    68 &namsplit      !   time splitting parameters                            ("key_dynspg_ts") 
    69 !----------------------------------------------------------------------- 
    7066/ 
    7167!----------------------------------------------------------------------- 
     
    286282/ 
    287283!----------------------------------------------------------------------- 
    288 !namdyn_spg    !   surface pressure gradient   (CPP key only) 
    289 !----------------------------------------------------------------------- 
    290  
     284&namdyn_spg    !   surface pressure gradient  
     285!----------------------------------------------------------------------- 
     286   ln_dynspg_ts  = .true.  !  split-explicit free surface 
     287/ 
    291288!----------------------------------------------------------------------- 
    292289&namdyn_ldf    !   lateral diffusion on momentum 
     
    341338/ 
    342339!----------------------------------------------------------------------- 
    343 &namsol        !   elliptic solver / island / free surface 
    344 !----------------------------------------------------------------------- 
    345    nn_solv     =      2    !  elliptic solver: =1 preconditioned conjugate gradient (pcg) 
    346    nn_nmin     =    210    !  minimum of iterations for the SOR solver 
    347    rn_sor      =  1.96     !  optimal coefficient for SOR solver (to be adjusted with the domain) 
    348 / 
    349 !----------------------------------------------------------------------- 
    350340&nammpp        !   Massively Parallel Processing                        ("key_mpp_mpi) 
    351341!----------------------------------------------------------------------- 
     
    411401!----------------------------------------------------------------------- 
    412402/ 
    413 !----------------------------------------------------------------------- 
    414 &namdyn_nept  !   Neptune effect (simplified: lateral and vertical diffusions removed) 
    415 !----------------------------------------------------------------------- 
    416    ln_neptramp       = .false.  ! ramp down Neptune velocity in shallow water 
    417 / 
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/CONFIG/GYRE/cpp_GYRE.fcm

    r5836 r6004  
    1  bld::tool::fppkeys key_dynspg_flt key_zdftke key_iomput key_mpp_mpi 
     1 bld::tool::fppkeys key_zdftke key_iomput key_mpp_mpi 
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/CONFIG/GYRE_BFM/EXP00/namelist_cfg

    r5866 r6004  
    6969/ 
    7070!----------------------------------------------------------------------- 
    71 &namsplit      !   time splitting parameters                            ("key_dynspg_ts") 
    72 !----------------------------------------------------------------------- 
    73 / 
    74 !----------------------------------------------------------------------- 
    7571&namcrs        !   Grid coarsening for dynamics output and/or 
    7672               !   passive tracer coarsened online simulations 
     
    186182/ 
    187183!----------------------------------------------------------------------- 
    188 &nambbc        !   bottom temperature boundary condition 
    189 !----------------------------------------------------------------------- 
    190    ln_trabbc   = .false.   !  Apply a geothermal heating at the ocean bottom 
    191    nn_geoflx   =    0      !  geothermal heat flux: = 0 no flux 
     184&nambbc        !   bottom temperature boundary condition                (default: NO) 
     185!----------------------------------------------------------------------- 
    192186/ 
    193187!----------------------------------------------------------------------- 
     
    287281/ 
    288282!----------------------------------------------------------------------- 
    289 !namdyn_spg    !   surface pressure gradient   (CPP key only) 
    290 !----------------------------------------------------------------------- 
     283&namdyn_spg    !   surface pressure gradient 
     284!----------------------------------------------------------------------- 
     285   ln_dynspg_ts  = .true.  !  split-explicit free surface 
     286/ 
    291287!----------------------------------------------------------------------- 
    292288&namdyn_ldf    !   lateral diffusion on momentum 
     
    345341/ 
    346342!----------------------------------------------------------------------- 
    347 &namsol        !   elliptic solver / island / free surface 
    348 !----------------------------------------------------------------------- 
    349    nn_solv     =      2    !  elliptic solver: =1 preconditioned conjugate gradient (pcg) 
    350    nn_nmin     =    210    !  minimum of iterations for the SOR solver 
    351    rn_sor      =  1.96     !  optimal coefficient for SOR solver (to be adjusted with the domain) 
    352 / 
    353 !----------------------------------------------------------------------- 
    354343&nammpp        !   Massively Parallel Processing                        ("key_mpp_mpi) 
    355344!----------------------------------------------------------------------- 
     
    399388!----------------------------------------------------------------------- 
    400389/ 
    401 !----------------------------------------------------------------------- 
    402 &namdyn_nept  !   Neptune effect (simplified: lateral and vertical diffusions removed) 
    403 !----------------------------------------------------------------------- 
    404    ln_neptramp       = .false.  ! ramp down Neptune velocity in shallow water 
    405 / 
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/CONFIG/GYRE_BFM/cpp_GYRE_BFM.fcm

    r5836 r6004  
    1 bld::tool::fppkeys key_dynspg_flt key_zdftke key_top key_my_trc key_mpp_mpi key_iomput 
     1bld::tool::fppkeys key_zdftke key_top key_my_trc key_mpp_mpi key_iomput 
    22inc $BFMDIR/src/nemo/bfm.fcm 
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/CONFIG/GYRE_PISCES/EXP00/namelist_cfg

    r5866 r6004  
    5959/ 
    6060!----------------------------------------------------------------------- 
    61 &namsplit      !   time splitting parameters                            ("key_dynspg_ts") 
    62 !----------------------------------------------------------------------- 
    63 / 
    64 !----------------------------------------------------------------------- 
    6561&namcrs        !   Grid coarsening for dynamics output and/or 
    6662               !   passive tracer coarsened online simulations 
     
    109105/ 
    110106!----------------------------------------------------------------------- 
    111 &nambbc        !   bottom temperature boundary condition 
    112 !----------------------------------------------------------------------- 
    113    ln_trabbc   = .false.   !  Apply a geothermal heating at the ocean bottom 
    114    nn_geoflx   =    0      !  geothermal heat flux: = 0 no flux 
     107&nambbc        !   bottom temperature boundary condition                (default: NO) 
     108!----------------------------------------------------------------------- 
    115109/ 
    116110!----------------------------------------------------------------------- 
     
    206200/ 
    207201!----------------------------------------------------------------------- 
     202&namdyn_spg    !   surface pressure gradient 
     203!----------------------------------------------------------------------- 
     204   ln_dynspg_ts  = .true.  !  split-explicit free surface 
     205/ 
     206!----------------------------------------------------------------------- 
    208207&namdyn_ldf    !   lateral diffusion on momentum 
    209208!----------------------------------------------------------------------- 
     
    244243/ 
    245244!----------------------------------------------------------------------- 
    246 &namsol        !   elliptic solver / island / free surface 
    247 !----------------------------------------------------------------------- 
    248    nn_solv     =      2    !  elliptic solver: =1 preconditioned conjugate gradient (pcg) 
    249    nn_nmin     =    210    !  minimum of iterations for the SOR solver 
    250    rn_sor      =  1.96     !  optimal coefficient for SOR solver (to be adjusted with the domain) 
    251 / 
    252 !----------------------------------------------------------------------- 
    253245&nammpp        !   Massively Parallel Processing                        ("key_mpp_mpi) 
    254246!----------------------------------------------------------------------- 
     
    266258!----------------------------------------------------------------------- 
    267259/ 
    268 !----------------------------------------------------------------------- 
    269 &namdyn_nept  !   Neptune effect (simplified: lateral and vertical diffusions removed) 
    270 !----------------------------------------------------------------------- 
    271    ln_neptramp       = .false.  ! ramp down Neptune velocity in shallow water 
    272 / 
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/CONFIG/GYRE_PISCES/cpp_GYRE_PISCES.fcm

    r5836 r6004  
    1 bld::tool::fppkeys  key_dynspg_flt key_zdftke key_top key_pisces_reduced key_mpp_mpi 
     1bld::tool::fppkeys key_zdftke key_top key_pisces_reduced key_mpp_mpi 
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/CONFIG/GYRE_XIOS/EXP00/namelist_cfg

    r5866 r6004  
    4141   nn_bathy    =    0      !  compute (=0) or read (=1) the bathymetry file 
    4242   rn_rdt      = 7200.     !  time step for the dynamics (and tracer if nn_acc=0) 
    43 !   nn_baro     =   60      !  number of barotropic time step            ("key_dynspg_ts") 
    4443   rn_rdtmin   = 7200.           !  minimum time step on tracers (used if nn_acc=1) 
    4544   rn_rdtmax   = 7200.           !  maximum time step on tracers (used if nn_acc=1) 
     
    175174/ 
    176175!----------------------------------------------------------------------- 
    177 &nambbc        !   bottom temperature boundary condition 
    178 !----------------------------------------------------------------------- 
    179    ln_trabbc   = .false.   !  Apply a geothermal heating at the ocean bottom 
    180    nn_geoflx   =    0      !  geothermal heat flux: = 0 no flux 
     176&nambbc        !   bottom temperature boundary condition                (default: NO) 
     177!----------------------------------------------------------------------- 
    181178/ 
    182179!----------------------------------------------------------------------- 
     
    261258/ 
    262259!----------------------------------------------------------------------- 
    263 !namdyn_spg    !   surface pressure gradient   (CPP key only) 
    264 !----------------------------------------------------------------------- 
     260&namdyn_spg    !   surface pressure gradient 
     261!----------------------------------------------------------------------- 
     262   ln_dynspg_ts  = .true.  !  split-explicit free surface 
     263/ 
    265264!----------------------------------------------------------------------- 
    266265&namdyn_ldf    !   lateral diffusion on momentum 
     
    300299/ 
    301300!----------------------------------------------------------------------- 
    302 &namsol        !   elliptic solver / island / free surface 
    303 !----------------------------------------------------------------------- 
    304    nn_solv     =      2    !  elliptic solver: =1 preconditioned conjugate gradient (pcg) 
    305    nn_nmin     =    210    !  minimum of iterations for the SOR solver 
    306    rn_sor      =  1.96     !  optimal coefficient for SOR solver (to be adjusted with the domain) 
    307 / 
    308 !----------------------------------------------------------------------- 
    309301&nammpp        !   Massively Parallel Processing                        ("key_mpp_mpi) 
    310302!----------------------------------------------------------------------- 
     
    354346!----------------------------------------------------------------------- 
    355347/ 
    356 !----------------------------------------------------------------------- 
    357 &namdyn_nept  !   Neptune effect (simplified: lateral and vertical diffusions removed) 
    358 !----------------------------------------------------------------------- 
    359    ln_neptramp       = .false.  ! ramp down Neptune velocity in shallow water 
    360 / 
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/CONFIG/GYRE_XIOS/cpp_GYRE_XIOS.fcm

    r5836 r6004  
    1  bld::tool::fppkeys key_dynspg_flt key_zdftke key_iomput key_mpp_mpi 
     1 bld::tool::fppkeys key_zdftke key_iomput key_mpp_mpi 
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/CONFIG/ORCA2_LIM/EXP00/1_namelist_cfg

    r5866 r6004  
    127127/ 
    128128!----------------------------------------------------------------------- 
    129 &nambbc        !   bottom temperature boundary condition 
    130 !----------------------------------------------------------------------- 
     129&nambbc        !   bottom temperature boundary condition                (default: NO) 
     130!----------------------------------------------------------------------- 
     131   ln_trabbc   = .true.    !  Apply a geothermal heating at the ocean bottom 
    131132/ 
    132133!----------------------------------------------------------------------- 
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/CONFIG/ORCA2_LIM/EXP00/namelist_cfg

    r5866 r6004  
    103103/ 
    104104!----------------------------------------------------------------------- 
    105 &nambbc        !   bottom temperature boundary condition 
    106 !----------------------------------------------------------------------- 
     105&nambbc        !   bottom temperature boundary condition                (default: NO) 
     106!----------------------------------------------------------------------- 
     107   ln_trabbc   = .true.    !  Apply a geothermal heating at the ocean bottom 
    107108/ 
    108109!----------------------------------------------------------------------- 
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/CONFIG/ORCA2_LIM/cpp_ORCA2_LIM.fcm

    r5866 r6004  
    1 bld::tool::fppkeys key_trabbl key_lim2 key_dynspg_flt key_zdftke key_zdfddm key_zdftmx  key_mpp_mpi key_iomput key_nosignedzero 
     1bld::tool::fppkeys key_trabbl key_lim2 key_zdftke key_zdfddm key_zdftmx  key_mpp_mpi key_iomput key_nosignedzero 
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/CONFIG/ORCA2_LIM3/EXP00/1_namelist_cfg

    r5866 r6004  
    5656/ 
    5757!----------------------------------------------------------------------- 
    58 &namsplit      !   time splitting parameters                            ("key_dynspg_ts") 
    59 !----------------------------------------------------------------------- 
    60 / 
    61 !----------------------------------------------------------------------- 
    6258&namcrs        !   Grid coarsening for dynamics output and/or 
    6359               !   passive tracer coarsened online simulations 
     
    127123&nambbc        !   bottom temperature boundary condition 
    128124!----------------------------------------------------------------------- 
     125   ln_trabbc   = .true.    !  Apply a geothermal heating at the ocean bottom 
    129126/ 
    130127!----------------------------------------------------------------------- 
     
    205202/ 
    206203!----------------------------------------------------------------------- 
     204&namdyn_spg    !   surface pressure gradient 
     205!----------------------------------------------------------------------- 
     206   ln_dynspg_ts  = .true.  !  split-explicit free surface 
     207/ 
     208!----------------------------------------------------------------------- 
    207209&namdyn_ldf    !   lateral diffusion on momentum 
    208210!----------------------------------------------------------------------- 
     
    246248/ 
    247249!----------------------------------------------------------------------- 
    248 &namsol        !   elliptic solver / island / free surface  
    249 !----------------------------------------------------------------------- 
    250 / 
    251 !----------------------------------------------------------------------- 
    252250&nammpp        !   Massively Parallel Processing                        ("key_mpp_mpi) 
    253251!----------------------------------------------------------------------- 
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/CONFIG/ORCA2_LIM3/EXP00/namelist_cfg

    r5883 r6004  
    5353/ 
    5454!----------------------------------------------------------------------- 
    55 &namsplit      !   time splitting parameters                            ("key_dynspg_ts") 
    56 !----------------------------------------------------------------------- 
    57 / 
    58 !----------------------------------------------------------------------- 
    5955&namcrs        !   Grid coarsening for dynamics output and/or 
    6056               !   passive tracer coarsened online simulations 
     
    10298/ 
    10399!----------------------------------------------------------------------- 
    104 &nambbc        !   bottom temperature boundary condition 
    105 !----------------------------------------------------------------------- 
     100&nambbc        !   bottom temperature boundary condition                (default: NO) 
     101!----------------------------------------------------------------------- 
     102   ln_trabbc   = .true.    !  Apply a geothermal heating at the ocean bottom 
    106103/ 
    107104!----------------------------------------------------------------------- 
     
    190187&namdyn_hpg    !   Hydrostatic pressure gradient option 
    191188!----------------------------------------------------------------------- 
    192    ln_hpg_zco  = .false.   !  z-coordinate - full steps 
    193    ln_hpg_zps  = .false.    !  z-coordinate - partial steps (interpolation) 
    194    ln_hpg_sco  = .false.   !  s-coordinate (standard jacobian formulation) 
    195    ln_hpg_djc  = .false.   !  s-coordinate (Density Jacobian with Cubic polynomial) 
    196    ln_hpg_prj  = .true.   !  s-coordinate (Pressure Jacobian scheme) 
    197    ln_dynhpg_imp = .false. !  time stepping: semi-implicit time scheme  (T) 
    198                                  !           centered      time scheme  (F) 
     189   ln_hpg_sco  = .true.    !  s-coordinate (standard jacobian formulation) 
     190/ 
     191!----------------------------------------------------------------------- 
     192&namdyn_spg    !   surface pressure gradient 
     193!----------------------------------------------------------------------- 
     194   ln_dynspg_ts  = .true.  !  split-explicit free surface 
    199195/ 
    200196!----------------------------------------------------------------------- 
     
    241237/ 
    242238!----------------------------------------------------------------------- 
    243 &namsol        !   elliptic solver / island / free surface 
    244 !----------------------------------------------------------------------- 
    245 / 
    246 !----------------------------------------------------------------------- 
    247239&nammpp        !   Massively Parallel Processing                        ("key_mpp_mpi) 
    248240!----------------------------------------------------------------------- 
     
    262254/ 
    263255!----------------------------------------------------------------------- 
    264 &namdyn_nept  !   Neptune effect (simplified: lateral and vertical diffusions removed) 
    265 !----------------------------------------------------------------------- 
    266 / 
    267 !----------------------------------------------------------------------- 
    268256&namobs       !  observation usage                                      ('key_diaobs') 
    269257!----------------------------------------------------------------------- 
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/CONFIG/ORCA2_LIM3/cpp_ORCA2_LIM3.fcm

    r5866 r6004  
    1  bld::tool::fppkeys key_trabbl key_lim3 key_dynspg_ts key_zdftke key_zdfddm key_zdftmx  key_mpp_mpi key_diaobs key_asminc key_iomput key_nosignedzero 
     1 bld::tool::fppkeys key_trabbl key_lim3 key_zdftke key_zdfddm key_zdftmx  key_mpp_mpi key_diaobs key_asminc key_iomput key_nosignedzero 
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/CONFIG/ORCA2_LIM_CFC_C14b/EXP00/1_namelist_cfg

    r5866 r6004  
    8585                           ! 
    8686   rn_rdt      = 2880.     !  time step for the dynamics (and tracer if nn_acc=0) 
    87    nn_baro     =   64      !  number of barotropic time step            ("key_dynspg_ts") 
    8887   rn_atfp     =    0.1    !  asselin time filter parameter 
    8988   nn_acc      =    0      !  acceleration of convergence : =1      used, rdt < rdttra(k) 
     
    295294   rn_alphc    =    0.65   !  compute albedo between two extremes values  
    296295   rn_alphdi   =    0.72   !  (Pyane, 1972) 
     296/ 
     297!----------------------------------------------------------------------- 
     298&namsbc_wave   ! External fields from wave model 
     299!----------------------------------------------------------------------- 
     300!              !  file name  ! frequency (hours) ! variable  ! time interp. !  clim  ! 'yearly'/ ! weights  ! rotation ! 
     301!              !             !  (if <0  months)  !   name    !   (logical)  !  (T/F) ! 'monthly' ! filename ! pairing  ! 
     302   sn_cdg      =  'cdg_wave' ,        1          , 'drag_coeff' , .true.   , .false. , 'daily'  ,''         , '' 
     303! 
     304   cn_dir_cdg  = './'  !  root directory for the location of drag coefficient files 
    297305/ 
    298306 
     
    551559   ln_hpg_djc  = .false.   !  s-coordinate (Density Jacobian with Cubic polynomial) 
    552560   ln_hpg_prj  = .false.   !  s-coordinate (Pressure Jacobian scheme) 
    553    ln_dynhpg_imp = .false. !  time stepping: semi-implicit time scheme  (T) 
    554                                  !           centered      time scheme  (F) 
    555 / 
    556 !----------------------------------------------------------------------- 
    557 !namdyn_spg    !   surface pressure gradient   (CPP key only) 
    558 !----------------------------------------------------------------------- 
    559 !                          !  explicit free surface                     ("key_dynspg_exp") 
    560 !                          !  filtered free surface                     ("key_dynspg_flt") 
    561 !                          !  split-explicit free surface               ("key_dynspg_ts") 
    562  
     561/ 
     562!----------------------------------------------------------------------- 
     563&namdyn_spg    !   surface pressure gradient 
     564!----------------------------------------------------------------------- 
     565   ln_dynspg_ts  = .true.  !  split-explicit free surface 
     566/ 
    563567!----------------------------------------------------------------------- 
    564568&namdyn_ldf    !   lateral diffusion on momentum 
     
    701705!!   nammpp_dyndist    Massively Parallel domain decomposition          ("key_agrif" && "key_mpp_dyndist") 
    702706!!   namctl            Control prints & Benchmark 
    703 !!   namsol            elliptic solver / island / free surface  
    704 !!====================================================================== 
    705 ! 
    706 !----------------------------------------------------------------------- 
    707 &namsol        !   elliptic solver / island / free surface  
    708 !----------------------------------------------------------------------- 
    709    nn_solv     =      1    !  elliptic solver: =1 preconditioned conjugate gradient (pcg) 
    710                            !                   =2 successive-over-relaxation (sor) 
    711    nn_sol_arp  =      0    !  absolute/relative (0/1) precision convergence test 
    712    rn_eps      =  1.e-6    !  absolute precision of the solver 
    713    nn_nmin     =    300    !  minimum of iterations for the SOR solver 
    714    nn_nmax     =    800    !  maximum of iterations for the SOR solver 
    715    nn_nmod     =     10    !  frequency of test for the SOR solver 
    716    rn_resmax   =  1.e-10   !  absolute precision for the SOR solver 
    717    rn_sor      =  1.92     !  optimal coefficient for SOR solver (to be adjusted with the domain) 
    718 / 
     707!!====================================================================== 
     708! 
    719709!----------------------------------------------------------------------- 
    720710&nammpp        !   Massively Parallel Processing                        ("key_mpp_mpi) 
     
    898888    salfixmin = -9999      !  Minimum salinity after applying the increments 
    899889/ 
    900 !----------------------------------------------------------------------- 
    901 &namsbc_wave   ! External fields from wave model 
    902 !----------------------------------------------------------------------- 
    903 !              !  file name  ! frequency (hours) ! variable  ! time interp. !  clim  ! 'yearly'/ ! weights  ! rotation ! 
    904 !              !             !  (if <0  months)  !   name    !   (logical)  !  (T/F) ! 'monthly' ! filename ! pairing  ! 
    905    sn_cdg      =  'cdg_wave' ,        1          , 'drag_coeff' , .true.   , .false. , 'daily'  ,''         , '' 
    906 ! 
    907    cn_dir_cdg  = './'  !  root directory for the location of drag coefficient files 
    908 / 
    909 !----------------------------------------------------------------------- 
    910 &namdyn_nept  !   Neptune effect (simplified: lateral and vertical diffusions removed) 
    911 !----------------------------------------------------------------------- 
    912    ! Suggested lengthscale values are those of Eby & Holloway (1994) for a coarse model 
    913    ln_neptsimp       = .false.  ! yes/no use simplified neptune 
    914  
    915    ln_smooth_neptvel = .false.  ! yes/no smooth zunep, zvnep 
    916    rn_tslse          =  1.2e4   ! value of lengthscale L at the equator 
    917    rn_tslsp          =  3.0e3   ! value of lengthscale L at the pole 
    918    ! Specify whether to ramp down the Neptune velocity in shallow 
    919    ! water, and if so the depth range controlling such ramping down 
    920    ln_neptramp       = .true.   ! ramp down Neptune velocity in shallow water 
    921    rn_htrmin         =  100.0   ! min. depth of transition range 
    922    rn_htrmax         =  200.0   ! max. depth of transition range 
    923 / 
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/CONFIG/ORCA2_LIM_CFC_C14b/EXP00/namelist_cfg

    r5866 r6004  
    158158/ 
    159159!----------------------------------------------------------------------- 
    160 &nambbc        !   bottom temperature boundary condition 
     160&nambbc        !   bottom temperature boundary condition                (default: NO) 
    161161!-----------------------------------------------------------------------  
     162   ln_trabbc   = .true.    !  Apply a geothermal heating at the ocean bottom 
    162163/ 
    163164!----------------------------------------------------------------------- 
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/CONFIG/ORCA2_LIM_CFC_C14b/cpp_ORCA2_LIM_CFC_C14b.fcm

    r5836 r6004  
    1 bld::tool::fppkeys key_trabbl key_lim2 key_dynspg_flt key_zdftke key_zdfddm key_zdftmx key_top key_cfc key_c14b key_iomput key_mpp_mpi 
     1bld::tool::fppkeys key_trabbl key_lim2 key_zdftke key_zdfddm key_zdftmx key_top key_cfc key_c14b key_iomput key_mpp_mpi 
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/CONFIG/ORCA2_LIM_PISCES/EXP00/namelist_cfg

    r5866 r6004  
    5050/ 
    5151!----------------------------------------------------------------------- 
    52 &namsplit      !   time splitting parameters                            ("key_dynspg_ts") 
    53 !----------------------------------------------------------------------- 
    54 / 
    55 !----------------------------------------------------------------------- 
    5652&namcrs        !   Grid coarsening for dynamics output and/or 
    5753               !   passive tracer coarsened online simulations 
     
    9995/ 
    10096!----------------------------------------------------------------------- 
    101 &nambbc        !   bottom temperature boundary condition 
    102 !----------------------------------------------------------------------- 
     97&nambbc        !   bottom temperature boundary condition                (default: NO) 
     98!----------------------------------------------------------------------- 
     99   ln_trabbc   = .true.    !  Apply a geothermal heating at the ocean bottom 
    103100/ 
    104101!----------------------------------------------------------------------- 
     
    190187/ 
    191188!----------------------------------------------------------------------- 
     189&namdyn_spg    !   surface pressure gradient 
     190!----------------------------------------------------------------------- 
     191   ln_dynspg_ts  = .true.  !  split-explicit free surface 
     192/ 
     193!----------------------------------------------------------------------- 
    192194&namdyn_ldf    !   lateral diffusion on momentum 
    193195!----------------------------------------------------------------------- 
     
    230232/ 
    231233!----------------------------------------------------------------------- 
    232 &namsol        !   elliptic solver / island / free surface 
    233 !----------------------------------------------------------------------- 
    234 / 
    235 !----------------------------------------------------------------------- 
    236234&nammpp        !   Massively Parallel Processing                        ("key_mpp_mpi) 
    237235!----------------------------------------------------------------------- 
     
    249247!----------------------------------------------------------------------- 
    250248/ 
    251 !----------------------------------------------------------------------- 
    252 &namdyn_nept  !   Neptune effect (simplified: lateral and vertical diffusions removed) 
    253 !----------------------------------------------------------------------- 
    254 / 
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/CONFIG/ORCA2_LIM_PISCES/cpp_ORCA2_LIM_PISCES.fcm

    r5836 r6004  
    1 bld::tool::fppkeys key_trabbl key_lim2 key_dynspg_flt key_zdftke key_zdfddm key_zdftmx key_top key_pisces key_mpp_mpi key_iomput 
     1bld::tool::fppkeys key_trabbl key_lim2 key_zdftke key_zdfddm key_zdftmx key_top key_pisces key_mpp_mpi key_iomput 
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/CONFIG/ORCA2_SAS_LIM/EXP00/namelist_cfg

    r5866 r6004  
    5252/ 
    5353!----------------------------------------------------------------------- 
    54 &namsplit      !   time splitting parameters                            ("key_dynspg_ts") 
    55 !----------------------------------------------------------------------- 
    56 / 
    57 !----------------------------------------------------------------------- 
    5854&namcrs        !   Grid coarsening for dynamics output and/or 
    5955               !   passive tracer coarsened online simulations 
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/CONFIG/ORCA2_SAS_LIM/cpp_ORCA2_SAS_LIM.fcm

    r5836 r6004  
    1  bld::tool::fppkeys key_trabbl key_lim2 key_dynspg_flt key_zdftke key_zdfddm key_zdftmx key_iomput key_mpp_mpi 
     1 bld::tool::fppkeys key_trabbl key_lim2 key_zdftke key_zdfddm key_zdftmx key_iomput key_mpp_mpi 
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/CONFIG/SHARED/namelist_ref

    r5883 r6004  
    66!!              3 - Surface boundary (namsbc, namsbc_ana, namsbc_flx, namsbc_clio, namsbc_core, namsbc_sas 
    77!!                                    namsbc_cpl, namtra_qsr, namsbc_rnf, 
    8 !!                                    namsbc_apr, namsbc_ssr, namsbc_alb) 
     8!!                                    namsbc_apr, namsbc_ssr, namsbc_alb, namsbc_wave) 
    99!!              4 - lateral boundary (namlbc, namagrif, nambdy, nambdy_tide) 
    1010!!              5 - bottom  boundary (nambfr, nambbc, nambbl) 
     
    1313!!              8 - Verical physics  (namzdf, namzdf_ric, namzdf_tke, namzdf_ddm, namzdf_tmx) 
    1414!!              9 - diagnostics      (namnc4, namtrd, namspr, namflo, namhsb, namsto) 
    15 !!             10 - miscellaneous    (namsol, nammpp, namctl) 
     15!!             10 - miscellaneous    (nammpp, namctl) 
    1616!!             11 - Obs & Assim      (namobs, nam_asminc) 
    1717!!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
     
    6161!!   namzgr_sco   s-coordinate or hybrid z-s-coordinate 
    6262!!   namdom       space and time domain (bathymetry, mesh, timestep) 
     63!!   namcrs       coarsened grid (for outputs and/or TOP)               ("key_crs") 
     64!!   namc1d       1D configuration options                              ("key_c1d") 
     65!!   namc1d_uvd   1D data (currents)                                    ("key_c1d") 
     66!!   namc1d_dyndmp 1D newtonian damping applied on currents             ("key_c1d") 
    6367!!   namtsd       data: temperature & salinity 
    6468!!====================================================================== 
     
    8791/ 
    8892!----------------------------------------------------------------------- 
    89 &namzgr        !   vertical coordinate 
     93&namzgr        !   vertical coordinate                                  (default: NO selection) 
    9094!----------------------------------------------------------------------- 
    9195   ln_zco      = .false.   !  z-coordinate - full    steps 
     
    98102&namzgr_sco    !   s-coordinate or hybrid z-s-coordinate 
    99103!----------------------------------------------------------------------- 
    100    ln_s_sh94   = .true.    !  Song & Haidvogel 1994 hybrid S-sigma   (T)| 
     104   ln_s_sh94   = .false.    !  Song & Haidvogel 1994 hybrid S-sigma   (T)| 
    101105   ln_s_sf12   = .false.   !  Siddorn & Furner 2012 hybrid S-z-sigma (T)| if both are false the NEMO tanh stretching is applied 
    102106   ln_sigcrit  = .false.   !  use sigma coordinates below critical depth (T) or Z coordinates (F) for Siddorn & Furner stretch 
     
    164168/ 
    165169!----------------------------------------------------------------------- 
    166 &namsplit      !   time splitting parameters                            ("key_dynspg_ts") 
    167 !----------------------------------------------------------------------- 
    168    ln_bt_fw      =    .TRUE.           !  Forward integration of barotropic equations 
    169    ln_bt_av      =    .TRUE.           !  Time filtering of barotropic variables 
    170    ln_bt_nn_auto =    .TRUE.           !  Set nn_baro automatically to be just below 
    171                                        !  a user defined maximum courant number (rn_bt_cmax) 
    172    nn_baro       =    30               !  Number of iterations of barotropic mode 
    173                                        !  during rn_rdt seconds. Only used if ln_bt_nn_auto=F 
    174    rn_bt_cmax    =    0.8              !  Maximum courant number allowed if ln_bt_nn_auto=T 
    175    nn_bt_flt     =    1                !  Time filter choice 
    176                                        !  = 0 None 
    177                                        !  = 1 Boxcar over   nn_baro barotropic steps 
    178                                        !  = 2 Boxcar over 2*nn_baro     "        " 
    179 / 
    180 !----------------------------------------------------------------------- 
    181 &namcrs        !   Grid coarsening for dynamics output and/or 
    182                !   passive tracer coarsened online simulations 
     170&namcrs        !   coarsened grid (for outputs and/or TOP)              ("key_crs") 
    183171!----------------------------------------------------------------------- 
    184172   nn_factx    = 3         !  Reduction factor of x-direction 
     
    202190/ 
    203191!----------------------------------------------------------------------- 
     192&namc1d_dyndmp !   U & V newtonian damping                              ("key_c1d") 
     193!----------------------------------------------------------------------- 
     194   ln_dyndmp   =  .false.  !  add a damping term (T) or not (F) 
     195/ 
     196!----------------------------------------------------------------------- 
     197&namc1d_uvd    !   data: U & V currents                                 ("key_c1d") 
     198!----------------------------------------------------------------------- 
     199!              !  file name  ! frequency (hours) ! variable  ! time interp. !  clim  ! 'yearly'/ ! weights  ! rotation ! land/sea mask ! 
     200!              !             !  (if <0  months)  !   name    !   (logical)  !  (T/F) ! 'monthly' ! filename ! pairing  ! filename      ! 
     201   sn_ucur     = 'ucurrent'  ,         -1        ,'u_current',   .false.    , .true. , 'monthly' ,  ''      ,  'Ume'   , '' 
     202   sn_vcur     = 'vcurrent'  ,         -1        ,'v_current',   .false.    , .true. , 'monthly' ,  ''      ,  'Vme'   , '' 
     203! 
     204   cn_dir        = './'    !  root directory for the location of the files 
     205   ln_uvd_init   = .false. !  Initialisation of ocean U & V with U & V input data (T) or not (F) 
     206   ln_uvd_dyndmp = .false. !  damping of ocean U & V toward U & V input data (T) or not (F) 
     207/ 
     208!----------------------------------------------------------------------- 
    204209&namtsd    !   data : Temperature  & Salinity 
    205210!----------------------------------------------------------------------- 
     
    213218   ln_tsd_tradmp = .true.   !  damping of ocean T & S toward T &S input data (T) or not (F) 
    214219/ 
     220 
    215221!!====================================================================== 
    216222!!            ***  Surface Boundary Condition namelists  *** 
    217223!!====================================================================== 
    218224!!   namsbc          surface boundary condition 
    219 !!   namsbc_ana      analytical         formulation 
    220 !!   namsbc_flx      flux               formulation 
    221 !!   namsbc_clio     CLIO bulk formulae formulation 
    222 !!   namsbc_core     CORE bulk formulae formulation 
    223 !!   namsbc_mfs      MFS  bulk formulae formulation 
    224 !!   namsbc_cpl      CouPLed            formulation                     ("key_oasis3") 
     225!!   namsbc_ana      analytical         formulation                     (ln_ana     =T) 
     226!!   namsbc_flx      flux               formulation                     (ln_flx     =T) 
     227!!   namsbc_clio     CLIO bulk formulae formulation                     (ln_blk_clio=T) 
     228!!   namsbc_core     CORE bulk formulae formulation                     (ln_blk_core=T) 
     229!!   namsbc_mfs      MFS  bulk formulae formulation                     (ln_blk_mfs =T) 
     230!!   namsbc_cpl      CouPLed            formulation                     ("key_oasis3" ) 
    225231!!   namsbc_sas      StAndalone Surface module 
    226 !!   namtra_qsr      penetrative solar radiation 
    227 !!   namsbc_rnf      river runoffs 
    228 !!   namsbc_isf      ice shelf melting/freezing 
    229 !!   namsbc_apr      Atmospheric Pressure 
    230 !!   namsbc_ssr      sea surface restoring term (for T and/or S) 
     232!!   namtra_qsr      penetrative solar radiation                        (ln_traqsr  =T) 
     233!!   namsbc_rnf      river runoffs                                      (ln_rnf     =T) 
     234!!   namsbc_isf      ice shelf melting/freezing                         (nn_isf     >0) 
     235!!   namsbc_apr      Atmospheric Pressure                               (ln_apr_dyn =T) 
     236!!   namsbc_ssr      sea surface restoring term (for T and/or S)        (ln_ssr     =T) 
    231237!!   namsbc_alb      albedo parameters 
     238!!   namsbc_wave     external fields from wave model                    (ln_wave    =T) 
     239!!   namberg         iceberg floats                                     ("key_") 
    232240!!====================================================================== 
    233241! 
     
    258266   nn_ice      = 2         !  =0 no ice boundary condition   , 
    259267                           !  =1 use observed ice-cover      , 
    260                            !  =2 ice-model used                         ("key_lim3" or "key_lim2") 
     268                           !  =2 ice-model used                         ("key_lim3", "key_lim2", "key_cice") 
    261269   nn_ice_embd = 1         !  =0 levitating ice (no mass exchange, concentration/dilution effect) 
    262270                           !  =1 levitating ice with mass and salt exchange but no presure effect 
     
    321329&namsbc_core   !   namsbc_core  CORE bulk formulae 
    322330!----------------------------------------------------------------------- 
    323 !              !  file name                    ! frequency (hours) ! variable  ! time interp. !  clim  ! 'yearly'/ ! weights                               ! rotation ! land/sea mask ! 
    324 !              !                               !  (if <0  months)  !   name    !   (logical)  !  (T/F) ! 'monthly' ! filename                              ! pairing  ! filename      ! 
    325    sn_wndi     = 'u_10.15JUNE2009_fill'        ,         6         , 'U_10_MOD',   .false.    , .true. , 'yearly'  , 'weights_core_orca2_bicubic_noc.nc'   , 'Uwnd'   , '' 
    326    sn_wndj     = 'v_10.15JUNE2009_fill'        ,         6         , 'V_10_MOD',   .false.    , .true. , 'yearly'  , 'weights_core_orca2_bicubic_noc.nc'   , 'Vwnd'   , '' 
    327    sn_qsr      = 'ncar_rad.15JUNE2009_fill'    ,        24         , 'SWDN_MOD',   .false.    , .true. , 'yearly'  , 'weights_core_orca2_bilinear_noc.nc'  , ''       , '' 
    328    sn_qlw      = 'ncar_rad.15JUNE2009_fill'    ,        24         , 'LWDN_MOD',   .false.    , .true. , 'yearly'  , 'weights_core_orca2_bilinear_noc.nc'  , ''       , '' 
    329    sn_tair     = 't_10.15JUNE2009_fill'        ,         6         , 'T_10_MOD',   .false.    , .true. , 'yearly'  , 'weights_core_orca2_bilinear_noc.nc'  , ''       , '' 
    330    sn_humi     = 'q_10.15JUNE2009_fill'        ,         6         , 'Q_10_MOD',   .false.    , .true. , 'yearly'  , 'weights_core_orca2_bilinear_noc.nc'  , ''       , '' 
    331    sn_prec     = 'ncar_precip.15JUNE2009_fill' ,        -1         , 'PRC_MOD1',   .false.    , .true. , 'yearly'  , 'weights_core_orca2_bilinear_noc.nc'  , ''       , '' 
    332    sn_snow     = 'ncar_precip.15JUNE2009_fill' ,        -1         , 'SNOW'    ,   .false.    , .true. , 'yearly'  , 'weights_core_orca2_bilinear_noc.nc'  , ''       , '' 
    333    sn_tdif     = 'taudif_core'                 ,        24         , 'taudif'  ,   .false.    , .true. , 'yearly'  , 'weights_core_orca2_bilinear_noc.nc'  , ''       , '' 
     331!              !  file name                   ! frequency (hours) ! variable  ! time interp. !  clim  ! 'yearly'/ ! weights                               ! rotation ! land/sea mask ! 
     332!              !                              !  (if <0  months)  !   name    !   (logical)  !  (T/F) ! 'monthly' ! filename                              ! pairing  ! filename      ! 
     333   sn_wndi     = 'u_10.15JUNE2009_fill'       ,         6         , 'U_10_MOD',   .false.    , .true. , 'yearly'  , 'weights_core_orca2_bicubic_noc.nc'   , 'Uwnd'   , '' 
     334   sn_wndj     = 'v_10.15JUNE2009_fill'       ,         6         , 'V_10_MOD',   .false.    , .true. , 'yearly'  , 'weights_core_orca2_bicubic_noc.nc'   , 'Vwnd'   , '' 
     335   sn_qsr      = 'ncar_rad.15JUNE2009_fill'   ,        24         , 'SWDN_MOD',   .false.    , .true. , 'yearly'  , 'weights_core_orca2_bilinear_noc.nc'  , ''       , '' 
     336   sn_qlw      = 'ncar_rad.15JUNE2009_fill'   ,        24         , 'LWDN_MOD',   .false.    , .true. , 'yearly'  , 'weights_core_orca2_bilinear_noc.nc'  , ''       , '' 
     337   sn_tair     = 't_10.15JUNE2009_fill'       ,         6         , 'T_10_MOD',   .false.    , .true. , 'yearly'  , 'weights_core_orca2_bilinear_noc.nc'  , ''       , '' 
     338   sn_humi     = 'q_10.15JUNE2009_fill'       ,         6         , 'Q_10_MOD',   .false.    , .true. , 'yearly'  , 'weights_core_orca2_bilinear_noc.nc'  , ''       , '' 
     339   sn_prec     = 'ncar_precip.15JUNE2009_fill',        -1         , 'PRC_MOD1',   .false.    , .true. , 'yearly'  , 'weights_core_orca2_bilinear_noc.nc'  , ''       , '' 
     340   sn_snow     = 'ncar_precip.15JUNE2009_fill',        -1         , 'SNOW'    ,   .false.    , .true. , 'yearly'  , 'weights_core_orca2_bilinear_noc.nc'  , ''       , '' 
     341   sn_tdif     = 'taudif_core'                ,        24         , 'taudif'  ,   .false.    , .true. , 'yearly'  , 'weights_core_orca2_bilinear_noc.nc'  , ''       , '' 
    334342 
    335343   cn_dir      = './'      !  root directory for the location of the bulk files 
    336344   ln_taudif   = .false.   !  HF tau contribution: use "mean of stress module - module of the mean stress" data 
    337    rn_zqt      = 10.        !  Air temperature and humidity reference height (m) 
    338    rn_zu       = 10.        !  Wind vector reference height (m) 
     345   rn_zqt      = 10.       !  Air temperature and humidity reference height (m) 
     346   rn_zu       = 10.       !  Wind vector reference height (m) 
    339347   rn_pfac     = 1.        !  multiplicative factor for precipitation (total & snow) 
    340348   rn_efac     = 1.        !  multiplicative factor for evaporation (0. or 1.) 
     
    345353&namsbc_mfs   !   namsbc_mfs  MFS bulk formulae 
    346354!----------------------------------------------------------------------- 
    347 !              !  file name  ! frequency (hours) ! variable  ! time interp. !  clim  ! 'yearly'/ ! weights     ! rotation ! land/sea mask ! 
    348 !              !             !  (if <0  months)  !   name    !   (logical)  !  (T/F) ! 'monthly' ! filename    ! pairing  ! filename      ! 
    349    sn_wndi     =   'ecmwf'   ,        6          , 'u10'     ,    .true.    , .false. , 'daily'  ,'bicubic.nc' , ''       , '' 
    350    sn_wndj     =   'ecmwf'   ,        6          , 'v10'     ,    .true.    , .false. , 'daily'  ,'bicubic.nc' , ''       , '' 
    351    sn_clc      =   'ecmwf'   ,        6          , 'clc'     ,    .true.    , .false. , 'daily'  ,'bilinear.nc', ''       , '' 
    352    sn_msl      =   'ecmwf'   ,        6          , 'msl'     ,    .true.    , .false. , 'daily'  ,'bicubic.nc' , ''       , '' 
    353    sn_tair     =   'ecmwf'   ,        6          , 't2'      ,    .true.    , .false. , 'daily'  ,'bicubic.nc' , ''       , '' 
    354    sn_rhm      =   'ecmwf'   ,        6          , 'rh'      ,    .true.    , .false. , 'daily'  ,'bilinear.nc', ''       , '' 
    355    sn_prec     =   'ecmwf'   ,        6          , 'precip'  ,    .true.    , .true.  , 'daily'  ,'bicubic.nc' , ''       , '' 
     355!              !  file name  ! frequency (hours) ! variable ! time interp. !  clim  ! 'yearly'/ ! weights     ! rotation ! land/sea mask ! 
     356!              !             !  (if <0  months)  !   name   !   (logical)  !  (T/F) ! 'monthly' ! filename    ! pairing  ! filename      ! 
     357   sn_wndi     =   'ecmwf'   ,        6          , 'u10'    ,    .true.    , .false., 'daily'   ,'bicubic.nc' ,   ''     ,  '' 
     358   sn_wndj     =   'ecmwf'   ,        6          , 'v10'    ,    .true.    , .false., 'daily'   ,'bicubic.nc' ,   ''     ,  '' 
     359   sn_clc      =   'ecmwf'   ,        6          , 'clc'    ,    .true.    , .false., 'daily'   ,'bilinear.nc',   ''     ,  '' 
     360   sn_msl      =   'ecmwf'   ,        6          , 'msl'    ,    .true.    , .false., 'daily'   ,'bicubic.nc' ,   ''     ,  '' 
     361   sn_tair     =   'ecmwf'   ,        6          , 't2'     ,    .true.    , .false., 'daily'   ,'bicubic.nc' ,   ''     ,  '' 
     362   sn_rhm      =   'ecmwf'   ,        6          , 'rh'     ,    .true.    , .false., 'daily'   ,'bilinear.nc',   ''     ,  '' 
     363   sn_prec     =   'ecmwf'   ,        6          , 'precip' ,    .true.    , .true. , 'daily'   ,'bicubic.nc' ,   ''     ,  '' 
    356364 
    357365   cn_dir      = './ECMWF/'      !  root directory for the location of the bulk files 
     
    360368&namsbc_cpl    !   coupled ocean/atmosphere model                       ("key_oasis3") 
    361369!----------------------------------------------------------------------- 
    362 !                    !     description       !  multiple  !    vector   !      vector          ! vector ! 
    363 !                    !                       ! categories !  reference  !    orientation       ! grids  ! 
     370!                    !     description      !  multiple  !    vector   !      vector          ! vector ! 
     371!                    !                      ! categories !  reference  !    orientation       ! grids  ! 
    364372! send 
    365    sn_snd_temp   =       'weighted oce and ice' ,    'no'    ,     ''      ,         ''           ,   '' 
    366    sn_snd_alb    =       'weighted ice'         ,    'no'    ,     ''      ,         ''           ,   '' 
    367    sn_snd_thick  =       'none'                 ,    'no'   ,     ''      ,         ''           ,   '' 
    368    sn_snd_crt    =       'none'                 ,    'no'    , 'spherical' , 'eastward-northward' ,  'T' 
    369    sn_snd_co2    =       'coupled'              ,    'no'    ,     ''      ,         ''           ,   '' 
     373   sn_snd_temp   =   'weighted oce and ice' ,    'no'    ,     ''      ,         ''           ,   '' 
     374   sn_snd_alb    =   'weighted ice'         ,    'no'    ,     ''      ,         ''           ,   '' 
     375   sn_snd_thick  =   'none'                 ,    'no'    ,     ''      ,         ''           ,   '' 
     376   sn_snd_crt    =   'none'                 ,    'no'    , 'spherical' , 'eastward-northward' ,  'T' 
     377   sn_snd_co2    =   'coupled'              ,    'no'    ,     ''      ,         ''           ,   '' 
    370378! receive 
    371    sn_rcv_w10m   =       'none'                 ,    'no'    ,     ''      ,         ''          ,   '' 
    372    sn_rcv_taumod =       'coupled'              ,    'no'    ,     ''      ,         ''          ,   '' 
    373    sn_rcv_tau    =       'oce only'             ,    'no'    , 'cartesian' , 'eastward-northward',  'U,V' 
    374    sn_rcv_dqnsdt =       'coupled'              ,    'no'    ,     ''      ,         ''          ,   '' 
    375    sn_rcv_qsr    =       'oce and ice'          ,    'no'    ,     ''      ,         ''          ,   '' 
    376    sn_rcv_qns    =       'oce and ice'          ,    'no'    ,     ''      ,         ''          ,   '' 
    377    sn_rcv_emp    =       'conservative'         ,    'no'    ,     ''      ,         ''          ,   '' 
    378    sn_rcv_rnf    =       'coupled'              ,    'no'    ,     ''      ,         ''          ,   '' 
    379    sn_rcv_cal    =       'coupled'              ,    'no'    ,     ''      ,         ''          ,   '' 
    380    sn_rcv_co2    =       'coupled'              ,    'no'    ,     ''      ,         ''          ,   '' 
     379   sn_rcv_w10m   =   'none'                 ,    'no'    ,     ''      ,         ''          ,   '' 
     380   sn_rcv_taumod =   'coupled'              ,    'no'    ,     ''      ,         ''          ,   '' 
     381   sn_rcv_tau    =   'oce only'             ,    'no'    , 'cartesian' , 'eastward-northward',  'U,V' 
     382   sn_rcv_dqnsdt =   'coupled'              ,    'no'    ,     ''      ,         ''          ,   '' 
     383   sn_rcv_qsr    =   'oce and ice'          ,    'no'    ,     ''      ,         ''          ,   '' 
     384   sn_rcv_qns    =   'oce and ice'          ,    'no'    ,     ''      ,         ''          ,   '' 
     385   sn_rcv_emp    =   'conservative'         ,    'no'    ,     ''      ,         ''          ,   '' 
     386   sn_rcv_rnf    =   'coupled'              ,    'no'    ,     ''      ,         ''          ,   '' 
     387   sn_rcv_cal    =   'coupled'              ,    'no'    ,     ''      ,         ''          ,   '' 
     388   sn_rcv_co2    =   'coupled'              ,    'no'    ,     ''      ,         ''          ,   '' 
    381389! 
    382390   nn_cplmodel   =     1     !  Maximum number of models to/from which NEMO is potentialy sending/receiving data 
     
    402410/ 
    403411!----------------------------------------------------------------------- 
    404 &namtra_qsr    !   penetrative solar radiation 
     412&namtra_qsr    !   penetrative solar radiation                          (ln_traqsr=T) 
    405413!----------------------------------------------------------------------- 
    406414!              !  file name  ! frequency (hours) ! variable  ! time interp. !  clim  ! 'yearly'/ ! weights  ! rotation ! land/sea mask ! 
     
    419427/ 
    420428!----------------------------------------------------------------------- 
    421 &namsbc_rnf    !   runoffs namelist surface boundary condition 
     429&namsbc_rnf    !   runoffs namelist surface boundary condition          (ln_rnf=T) 
    422430!----------------------------------------------------------------------- 
    423431!              !  file name           ! frequency (hours) ! variable  ! time interp. !  clim  ! 'yearly'/ ! weights  ! rotation ! land/sea mask ! 
     
    443451/ 
    444452!----------------------------------------------------------------------- 
    445 &namsbc_isf    !  Top boundary layer (ISF) 
    446 !----------------------------------------------------------------------- 
    447 !              ! file name ! frequency (hours) ! variable ! time interpol. ! clim   ! 'yearly'/ ! weights  ! rotation ! 
    448 !              !           !  (if <0  months)  !   name   !    (logical)   ! (T/F)  ! 'monthly' ! filename ! pairing  ! 
     453&namsbc_isf    !  Top boundary layer (ISF)                              (nn_isf >0) 
     454!----------------------------------------------------------------------- 
     455!              ! file name ! frequency (hours) ! variable ! time interp. ! clim   ! 'yearly'/ ! weights  ! rotation ! 
     456!              !           !  (if <0  months)  !   name   !   (logical)  ! (T/F)  ! 'monthly' ! filename ! pairing  ! 
    449457! nn_isf == 4 
    450    sn_qisf      = 'rnfisf' ,         -12      ,'sohflisf',    .false.      , .true. , 'yearly'  ,  ''      ,   '' 
    451    sn_fwfisf    = 'rnfisf' ,         -12      ,'sowflisf',    .false.      , .true. , 'yearly'  ,  ''      ,   '' 
     458   sn_qisf      = 'rnfisf' ,         -12       ,'sohflisf',    .false.   , .true. , 'yearly'  ,  ''      ,   '' 
     459   sn_fwfisf    = 'rnfisf' ,         -12       ,'sowflisf',    .false.   , .true. , 'yearly'  ,  ''      ,   '' 
    452460! nn_isf == 3 
    453    sn_rnfisf    = 'runoffs' ,         -12      ,'sofwfisf',    .false.      , .true. , 'yearly'  ,  ''      ,   '' 
     461   sn_rnfisf    = 'runoffs',         -12       ,'sofwfisf',    .false.   , .true. , 'yearly'  ,  ''      ,   '' 
    454462! nn_isf == 2 and 3 
    455    sn_depmax_isf = 'runoffs' ,       -12        ,'sozisfmax' ,   .false.  , .true. , 'yearly'  ,  ''      ,   '' 
    456    sn_depmin_isf = 'runoffs' ,       -12        ,'sozisfmin' ,   .false.  , .true. , 'yearly'  ,  ''      ,   '' 
     463   sn_depmax_isf = 'runoffs',        -12       ,'sozisfmax',   .false.   , .true. , 'yearly'  ,  ''      ,   '' 
     464   sn_depmin_isf = 'runoffs',        -12       ,'sozisfmin',   .false.   , .true. , 'yearly'  ,  ''      ,   '' 
    457465! nn_isf == 2 
    458    sn_Leff_isf = 'rnfisf' ,       0          ,'Leff'         ,   .false.  , .true.  , 'yearly'  ,  ''      ,   '' 
     466   sn_Leff_isf = 'rnfisf'  ,           0       ,'Leff'    ,    .false.   , .true. , 'yearly'  ,  ''      ,   '' 
     467 
    459468! for all case 
    460    ln_divisf   = .true.  ! apply isf melting as a mass flux or in the salinity trend. (maybe I should remove this option as for runoff?) 
     469   ln_divisf   = .true.   ! apply isf melting as a mass flux or in the salinity trend. (maybe I should remove this option as for runoff?) 
    461470! only for nn_isf = 1 or 2 
    462    rn_gammat0  = 1.0e-4   ! gammat coefficient used in blk formula 
    463    rn_gammas0  = 1.0e-4   ! gammas coefficient used in blk formula 
     471   rn_gammat0  = 1.e-4    ! gammat coefficient used in blk formula 
     472   rn_gammas0  = 1.e-4    ! gammas coefficient used in blk formula 
    464473! only for nn_isf = 1 
    465474   nn_isfblk   =  1       ! 1 ISOMIP ; 2 conservative (3 equation formulation, Jenkins et al. 1991 ??) 
    466    rn_hisf_tbl =  30.      ! thickness of the top boundary layer           (Losh et al. 2008) 
     475   rn_hisf_tbl =  30.     ! thickness of the top boundary layer           (Losh et al. 2008) 
    467476                          ! 0 => thickness of the tbl = thickness of the first wet cell 
    468477   ln_conserve = .true.   ! conservative case (take into account meltwater advection) 
     
    473482/ 
    474483!----------------------------------------------------------------------- 
    475 &namsbc_apr    !   Atmospheric pressure used as ocean forcing or in bulk 
    476 !----------------------------------------------------------------------- 
    477 !              !  file name  ! frequency (hours) ! variable  ! time interp. !  clim  ! 'yearly'/ ! weights  ! rotation ! land/sea mask ! 
    478 !              !             !  (if <0  months)  !   name    !   (logical)  !  (T/F) ! 'monthly' ! filename ! pairing  ! filename      ! 
    479    sn_apr      = 'patm'      ,         -1        ,'somslpre',    .true.     , .true. , 'yearly'  ,  ''      ,   ''     , '' 
     484&namsbc_apr    !   Atmospheric pressure forcing (in ocean or bulk)      (ln_apr_dyn=T) 
     485!----------------------------------------------------------------------- 
     486!              !  file name ! frequency (hours) ! variable  ! time interp. !  clim  ! 'yearly'/ ! weights  ! rotation ! land/sea mask ! 
     487!              !            !  (if <0  months)  !   name    !  (logical)   !  (T/F) ! 'monthly' ! filename ! pairing  ! filename      ! 
     488   sn_apr      = 'patm'     ,         -1        ,'somslpre',    .true.     , .true. , 'yearly'  ,  ''      ,   ''     , '' 
    480489 
    481490   cn_dir      = './'       !  root directory for the location of the bulk files 
     
    485494/ 
    486495!----------------------------------------------------------------------- 
    487 &namsbc_ssr    !   surface boundary condition : sea surface restoring 
     496&namsbc_ssr    !   surface boundary condition : sea surface restoring   (ln_ssr=T) 
    488497!----------------------------------------------------------------------- 
    489498!              !  file name  ! frequency (hours) ! variable  ! time interp. !  clim  ! 'yearly'/ ! weights  ! rotation ! land/sea mask ! 
     
    511520/ 
    512521!----------------------------------------------------------------------- 
    513 &namberg       !   iceberg parameters 
    514 !----------------------------------------------------------------------- 
    515       ln_icebergs              = .false. 
     522&namsbc_wave   ! External fields from wave model                        (ln_wave=T) 
     523!----------------------------------------------------------------------- 
     524!              !  file name  ! frequency (hours) ! variable    ! time interp. !  clim  ! 'yearly'/ ! weights  ! rotation ! land/sea mask ! 
     525!              !             !  (if <0  months)  !   name      !  (logical)   !  (T/F) ! 'monthly' ! filename ! pairing  ! filename      ! 
     526   sn_cdg      =  'cdg_wave' ,        1          , 'drag_coeff',     .true.   , .false., 'daily'   ,  ''      , ''       , '' 
     527   sn_usd      =  'sdw_wave' ,        1          , 'u_sd2d'    ,     .true.   , .false., 'daily'   ,  ''      , ''       , '' 
     528   sn_vsd      =  'sdw_wave' ,        1          , 'v_sd2d'    ,     .true.   , .false., 'daily'   ,  ''      , ''       , '' 
     529   sn_wn       =  'sdw_wave' ,        1          , 'wave_num'  ,     .true.   , .false., 'daily'   ,  ''      , ''       , '' 
     530! 
     531   cn_dir_cdg  = './'      !  root directory for the location of drag coefficient files 
     532   ln_cdgw = .false.       !  Neutral drag coefficient read from wave model 
     533   ln_sdw  = .false.       !  Computation of 3D stokes drift                
     534/ 
     535!----------------------------------------------------------------------- 
     536&namberg       !   iceberg parameters                                   (default: No iceberg) 
     537!----------------------------------------------------------------------- 
     538      ln_icebergs              = .false.              ! iceberg floats or not 
    516539      ln_bergdia               = .true.               ! Calculate budgets 
    517540      nn_verbose_level         = 1                    ! Turn on more verbose output if level > 0 
     
    558581&namlbc        !   lateral momentum boundary condition 
    559582!----------------------------------------------------------------------- 
     583   !                       !  free slip  !   partial slip  !   no slip   ! strong slip 
    560584   rn_shlat    =    2.     !  shlat = 0  !  0 < shlat < 2  !  shlat = 2  !  2 < shlat 
    561                            !  free slip  !   partial slip  !   no slip   ! strong slip 
    562    ln_vorlat   = .false.   !  consistency of vorticity boundary condition with analytical eqs. 
     585   ln_vorlat   = .false.   !  consistency of vorticity boundary condition with analytical Eqs. 
    563586/ 
    564587!----------------------------------------------------------------------- 
     
    572595/ 
    573596!----------------------------------------------------------------------- 
    574 &nam_tide      !   tide parameters (#ifdef key_tide) 
     597&nam_tide      !   tide parameters                                      ("key_tide") 
    575598!----------------------------------------------------------------------- 
    576599   ln_tide_pot   = .true.   !  use tidal potential forcing 
     
    614637/ 
    615638!----------------------------------------------------------------------- 
    616 &nambdy_dta      !  open boundaries - external data           ("key_bdy") 
    617 !----------------------------------------------------------------------- 
    618 !              !  file name      ! frequency (hours) ! variable   ! time interp.  !  clim   ! 'yearly'/ ! weights  ! rotation ! land/sea mask ! 
    619 !              !                 !  (if <0  months)  !   name     !   (logical)    !  (T/F ) ! 'monthly' ! filename ! pairing  ! filename      ! 
    620    bn_ssh =     'amm12_bdyT_u2d' ,         24        , 'sossheig' ,     .true.     , .false. ,  'daily'  ,    ''    ,   ''     , '' 
    621    bn_u2d =     'amm12_bdyU_u2d' ,         24        , 'vobtcrtx' ,     .true.     , .false. ,  'daily'  ,    ''    ,   ''     , '' 
    622    bn_v2d =     'amm12_bdyV_u2d' ,         24        , 'vobtcrty' ,     .true.     , .false. ,  'daily'  ,    ''    ,   ''     , '' 
    623    bn_u3d  =    'amm12_bdyU_u3d' ,         24        , 'vozocrtx' ,     .true.     , .false. ,  'daily'  ,    ''    ,   ''     , '' 
    624    bn_v3d  =    'amm12_bdyV_u3d' ,         24        , 'vomecrty' ,     .true.     , .false. ,  'daily'  ,    ''    ,   ''     , '' 
    625    bn_tem  =    'amm12_bdyT_tra' ,         24        , 'votemper' ,     .true.     , .false. ,  'daily'  ,    ''    ,   ''     , '' 
    626    bn_sal  =    'amm12_bdyT_tra' ,         24        , 'vosaline' ,     .true.     , .false. ,  'daily'  ,    ''    ,   ''     , '' 
     639&nambdy_dta    !  open boundaries - external data                       ("key_bdy") 
     640!----------------------------------------------------------------------- 
     641!              !  file name      ! frequency (hours) ! variable  ! time interp. !  clim   ! 'yearly'/ ! weights  ! rotation ! land/sea mask ! 
     642!              !                 !  (if <0  months)  !   name    !  (logical)   !  (T/F ) ! 'monthly' ! filename ! pairing  ! filename      ! 
     643   bn_ssh =     'amm12_bdyT_u2d' ,         24        , 'sossheig',     .true.   , .false. ,  'daily'  ,    ''    ,   ''     , '' 
     644   bn_u2d =     'amm12_bdyU_u2d' ,         24        , 'vobtcrtx',     .true.   , .false. ,  'daily'  ,    ''    ,   ''     , '' 
     645   bn_v2d =     'amm12_bdyV_u2d' ,         24        , 'vobtcrty',     .true.   , .false. ,  'daily'  ,    ''    ,   ''     , '' 
     646   bn_u3d  =    'amm12_bdyU_u3d' ,         24        , 'vozocrtx',     .true.   , .false. ,  'daily'  ,    ''    ,   ''     , '' 
     647   bn_v3d  =    'amm12_bdyV_u3d' ,         24        , 'vomecrty',     .true.   , .false. ,  'daily'  ,    ''    ,   ''     , '' 
     648   bn_tem  =    'amm12_bdyT_tra' ,         24        , 'votemper',     .true.   , .false. ,  'daily'  ,    ''    ,   ''     , '' 
     649   bn_sal  =    'amm12_bdyT_tra' ,         24        , 'vosaline',     .true.   , .false. ,  'daily'  ,    ''    ,   ''     , '' 
    627650! for lim2 
    628 !   bn_frld  =    'amm12_bdyT_ice' ,         24        , 'ileadfra' ,     .true.     , .false. ,  'daily'  ,    ''    ,   ''     , '' 
    629 !   bn_hicif =    'amm12_bdyT_ice' ,         24        , 'iicethic' ,     .true.     , .false. ,  'daily'  ,    ''    ,   ''     , '' 
    630 !   bn_hsnif =    'amm12_bdyT_ice' ,         24        , 'isnowthi' ,     .true.     , .false. ,  'daily'  ,    ''    ,   ''     , '' 
     651!   bn_frld  =   'amm12_bdyT_ice' ,         24        , 'ileadfra',     .true.   , .false. ,  'daily'  ,    ''    ,   ''     , '' 
     652!   bn_hicif =   'amm12_bdyT_ice' ,         24        , 'iicethic',     .true.   , .false. ,  'daily'  ,    ''    ,   ''     , '' 
     653!   bn_hsnif =   'amm12_bdyT_ice' ,         24        , 'isnowthi',     .true.   , .false. ,  'daily'  ,    ''    ,   ''     , '' 
    631654! for lim3 
    632 !   bn_a_i  =    'amm12_bdyT_ice' ,         24        , 'ileadfra' ,     .true.     , .false. ,  'daily'  ,    ''    ,   ''     , '' 
    633 !   bn_ht_i =    'amm12_bdyT_ice' ,         24        , 'iicethic' ,     .true.     , .false. ,  'daily'  ,    ''    ,   ''     , '' 
    634 !   bn_ht_s =    'amm12_bdyT_ice' ,         24        , 'isnowthi' ,     .true.     , .false. ,  'daily'  ,    ''    ,   ''     , '' 
    635    cn_dir  =    'bdydta/' 
    636    ln_full_vel = .false. 
     655!   bn_a_i  =    'amm12_bdyT_ice' ,         24        , 'ileadfra',     .true.   , .false. ,  'daily'  ,    ''    ,   ''     , '' 
     656!   bn_ht_i =    'amm12_bdyT_ice' ,         24        , 'iicethic',     .true.   , .false. ,  'daily'  ,    ''    ,   ''     , '' 
     657!   bn_ht_s =    'amm12_bdyT_ice' ,         24        , 'isnowthi',     .true.   , .false. ,  'daily'  ,    ''    ,   ''     , '' 
     658 
     659   cn_dir      =    'bdydta/'   !  root directory for the location of the bulk files 
     660   ln_full_vel = .false.        !   
    637661/ 
    638662!----------------------------------------------------------------------- 
    639663&nambdy_tide     ! tidal forcing at open boundaries 
    640664!----------------------------------------------------------------------- 
    641    filtide          = 'bdydta/amm12_bdytide_'         !  file name root of tidal forcing files 
    642    ln_bdytide_2ddta = .false. 
    643    ln_bdytide_conj  = .false. 
     665   filtide          = 'bdydta/amm12_bdytide_'   !  file name root of tidal forcing files 
     666   ln_bdytide_2ddta = .false.   ! 
     667   ln_bdytide_conj  = .false.   !  
    644668/ 
    645669!!====================================================================== 
     
    652676! 
    653677!----------------------------------------------------------------------- 
    654 &nambfr        !   bottom friction 
     678&nambfr        !   bottom friction                                      (default: linear) 
    655679!----------------------------------------------------------------------- 
    656680   nn_bfr      =    1      !  type of bottom friction :   = 0 : free slip,  = 1 : linear friction 
     
    675699/ 
    676700!----------------------------------------------------------------------- 
    677 &nambbc        !   bottom temperature boundary condition 
    678 !----------------------------------------------------------------------- 
    679 !              !                              !  (if <0  months)  !   
    680 !              !  file name      ! frequency (hours) ! variable   ! time interp.   !  clim   ! 'yearly'/ ! weights  ! rotation ! land/sea mask ! 
    681 !              !                 !  (if <0  months)  !   name     !   (logical)    !  (T/F ) ! 'monthly' ! filename ! pairing  ! filename      ! 
    682    sn_qgh      ='geothermal_heating.nc',  -12.  , 'heatflow'      ,   .false.      , .true.  , 'yearly'  , ''       , ''       , '' 
     701&nambbc        !   bottom temperature boundary condition                (default: NO) 
     702!----------------------------------------------------------------------- 
     703!              !  file name      ! frequency (hours) ! variable  ! time interp.!  clim   ! 'yearly'/ ! weights  ! rotation ! land/sea mask ! 
     704!              !                 !  (if <0  months)  !   name    !  (logical)  !  (T/F ) ! 'monthly' ! filename ! pairing  ! filename      ! 
     705   sn_qgh      ='geothermal_heating.nc',  -12.       , 'heatflow',   .false.   , .true.  , 'yearly'  ,   ''     ,   ''     ,   '' 
    683706   ! 
    684    cn_dir      = './'      !  root directory for the location of the runoff files 
    685    ln_trabbc   = .true.    !  Apply a geothermal heating at the ocean bottom 
     707   ln_trabbc   = .false.   !  Apply a geothermal heating at the ocean bottom 
    686708   nn_geoflx   =    2      !  geothermal heat flux: = 0 no flux 
    687709                           !     = 1 constant flux 
    688710                           !     = 2 variable flux (read in geothermal_heating.nc in mW/m2) 
    689711   rn_geoflx_cst = 86.4e-3 !  Constant value of geothermal heat flux [W/m2] 
    690 / 
    691 !----------------------------------------------------------------------- 
    692 &nambbl        !   bottom boundary layer scheme 
     712   cn_dir      = './'      !  root directory for the location of the runoff files  
     713/ 
     714!----------------------------------------------------------------------- 
     715&nambbl        !   bottom boundary layer scheme                         ("key_trabbl") 
    693716!----------------------------------------------------------------------- 
    694717   nn_bbl_ldf  =  1      !  diffusive bbl (=1)   or not (=0) 
     
    729752/ 
    730753!----------------------------------------------------------------------- 
    731 &namtra_adv    !   advection scheme for tracer 
     754&namtra_adv    !   advection scheme for tracer                          (default: NO advection) 
    732755!----------------------------------------------------------------------- 
    733756   ln_traadv_cen =  .false.  !  2nd order centered scheme 
     
    746769/ 
    747770!----------------------------------------------------------------------- 
    748 &namtra_adv_mle !   mixed layer eddy parametrisation (Fox-Kemper param) 
     771&namtra_adv_mle !   mixed layer eddy parametrisation (Fox-Kemper param) (default: NO) 
    749772!----------------------------------------------------------------------- 
    750773   ln_mle    = .false.      ! (T) use the Mixed Layer Eddy (MLE) parameterisation 
     
    758781   rn_rho_c_mle  = 0.01    ! delta rho criterion used to calculate MLD for FK 
    759782/ 
    760 !---------------------------------------------------------------------------------- 
    761 &namtra_ldf    !   lateral diffusion scheme for tracers 
    762 !---------------------------------------------------------------------------------- 
     783!----------------------------------------------------------------------- 
     784&namtra_ldf    !   lateral diffusion scheme for tracers                 (default: NO diffusion) 
     785!----------------------------------------------------------------------- 
    763786   !                       !  Operator type: 
    764787   !                           !  no diffusion: set ln_traldf_lap=..._blp=F  
     
    790813   rn_bht_0        = 1.e+12    !  lateral eddy diffusivity (bilap. operator) [m4/s] 
    791814/ 
    792 !---------------------------------------------------------------------------------- 
    793 &namtra_ldfeiv !   eddy induced velocity param. 
    794 !---------------------------------------------------------------------------------- 
    795    ln_ldfeiv     =.false.   ! use eddy induced velocity parameterization 
    796    ln_ldfeiv_dia =.false.   ! diagnose eiv stream function and velocities 
    797    rn_aeiv_0     = 2000.    ! eddy induced velocity coefficient   [m2/s] 
    798    nn_aei_ijk_t  = 21       ! space/time variation of the eiv coeficient 
     815!----------------------------------------------------------------------- 
     816&namtra_ldfeiv !   eddy induced velocity param.                         (default: NO) 
     817!----------------------------------------------------------------------- 
     818   ln_ldfeiv     =.false.  ! use eddy induced velocity parameterization 
     819   ln_ldfeiv_dia =.false.  ! diagnose eiv stream function and velocities 
     820   rn_aeiv_0     = 2000.   ! eddy induced velocity coefficient   [m2/s] 
     821   nn_aei_ijk_t  = 21      ! space/time variation of the eiv coeficient 
    799822   !                                !   =-20 (=-30)    read in eddy_induced_velocity_2D.nc (..._3D.nc) file 
    800823   !                                !   =  0           constant  
     
    805828/ 
    806829!----------------------------------------------------------------------- 
    807 &namtra_dmp    !   tracer: T & S newtonian damping 
     830&namtra_dmp    !   tracer: T & S newtonian damping                      (default: NO) 
    808831!----------------------------------------------------------------------- 
    809832   ln_tradmp   =  .true.   !  add a damping termn (T) or not (F) 
     
    811834                           !                   =1 no damping in the mixing layer (kz  criteria) 
    812835                           !                   =2 no damping in the mixed  layer (rho crieria) 
    813    cn_resto    = 'resto.nc' ! Name of file containing restoration coefficient field (use dmp_tools to create this) 
     836   cn_resto    ='resto.nc' !  Name of file containing restoration coeff. field (use dmp_tools to create this) 
    814837/ 
    815838 
     
    820843!!   namdyn_vor    advection scheme 
    821844!!   namdyn_hpg    hydrostatic pressure gradient 
    822 !!   namdyn_spg    surface pressure gradient                            (CPP key only) 
     845!!   namdyn_spg    surface pressure gradient 
    823846!!   namdyn_ldf    lateral diffusion scheme 
    824847!!====================================================================== 
    825848! 
    826849!----------------------------------------------------------------------- 
    827 &namdyn_adv    !   formulation of the momentum advection 
     850&namdyn_adv    !   formulation of the momentum advection                (default: vector form) 
    828851!----------------------------------------------------------------------- 
    829852   ln_dynadv_vec = .true.  !  vector form (T) or flux form (F) 
     
    834857/ 
    835858!----------------------------------------------------------------------- 
    836 &nam_vvl    !   vertical coordinate options 
     859&nam_vvl    !   vertical coordinate options                             (default: zstar) 
    837860!----------------------------------------------------------------------- 
    838861   ln_vvl_zstar  = .true.           !  zstar vertical coordinate 
     
    848871/ 
    849872!----------------------------------------------------------------------- 
    850 &namdyn_vor    !   option of physics/algorithm (not control by CPP keys) 
     873&namdyn_vor    !   option of physics/algorithm                          (default: NO) 
    851874!----------------------------------------------------------------------- 
    852875   ln_dynvor_ene = .false. !  enstrophy conserving scheme 
     
    854877   ln_dynvor_mix = .false. !  mixed scheme 
    855878   ln_dynvor_een = .false. !  energy & enstrophy scheme 
    856       nn_een_e3f = 1             ! e3f = masked averaging of e3t divided by 4 (=0) or by the sum of mask (=1) 
     879      nn_een_e3f = 1          ! e3f = masked averaging of e3t divided by 4 (=0) or by the sum of mask (=1) 
    857880   ln_dynvor_msk = .false. !  vorticity multiplied by fmask (=T) or not (=F) (all vorticity schemes)  ! PLEASE DO NOT USE 
    858881/ 
    859882!----------------------------------------------------------------------- 
    860 &namdyn_hpg    !   Hydrostatic pressure gradient option 
     883&namdyn_hpg    !   Hydrostatic pressure gradient option                 (default: zps) 
    861884!----------------------------------------------------------------------- 
    862885   ln_hpg_zco  = .false.   !  z-coordinate - full steps 
     
    866889   ln_hpg_djc  = .false.   !  s-coordinate (Density Jacobian with Cubic polynomial) 
    867890   ln_hpg_prj  = .false.   !  s-coordinate (Pressure Jacobian scheme) 
    868    ln_dynhpg_imp = .false. !  time stepping: semi-implicit time scheme  (T) 
    869                                  !           centered      time scheme  (F) 
    870 / 
    871 !----------------------------------------------------------------------- 
    872 !namdyn_spg    !   surface pressure gradient   (CPP key only) 
    873 !----------------------------------------------------------------------- 
    874 !                          !  explicit free surface                     ("key_dynspg_exp") 
    875 !                          !  filtered free surface                     ("key_dynspg_flt") 
    876 !                          !  split-explicit free surface               ("key_dynspg_ts") 
    877  
    878 !----------------------------------------------------------------------- 
    879 &namdyn_ldf    !   lateral diffusion on momentum 
     891/ 
     892!----------------------------------------------------------------------- 
     893&namdyn_spg    !   surface pressure gradient                            (default: NO) 
     894!----------------------------------------------------------------------- 
     895   ln_dynspg_exp  = .false.   ! explicit free surface 
     896   ln_dynspg_ts   = .false.   ! split-explicit free surface 
     897      ln_bt_fw      = .true.     ! Forward integration of barotropic Eqs. 
     898      ln_bt_av      = .true.     ! Time filtering of barotropic variables 
     899         nn_bt_flt     = 1          ! Time filter choice  = 0 None 
     900         !                          !                     = 1 Boxcar over   nn_baro sub-steps 
     901         !                          !                     = 2 Boxcar over 2*nn_baro  "    " 
     902      ln_bt_auto    = .true.     ! Number of sub-step defined from: 
     903         rn_bt_cmax   =  0.8        ! =T : the Maximum Courant Number allowed 
     904         nn_baro      = 30          ! =F : the number of sub-step in rn_rdt seconds 
     905/ 
     906!----------------------------------------------------------------------- 
     907&namdyn_ldf    !   lateral diffusion on momentum                        (default: NO) 
    880908!----------------------------------------------------------------------- 
    881909   !                       !  Type of the operator : 
     
    909937!!    namzdf_ric    richardson number dependent vertical mixing         ("key_zdfric") 
    910938!!    namzdf_tke    TKE dependent vertical mixing                       ("key_zdftke") 
     939!!    namzdf_gls    GLS vertical mixing                                 ("key_zdfgls") 
    911940!!    namzdf_ddm    double diffusive mixing parameterization            ("key_zdfddm") 
    912941!!    namzdf_tmx    tidal mixing parameterization                       ("key_zdftmx") 
     
    10081037!!                  ***  Miscellaneous namelists  *** 
    10091038!!====================================================================== 
    1010 !!   namsol            elliptic solver / island / free surface 
    10111039!!   nammpp            Massively Parallel Processing                    ("key_mpp_mpi) 
    10121040!!   namctl            Control prints & Benchmark 
    1013 !!   namc1d            1D configuration options                         ("key_c1d") 
    1014 !!   namc1d_uvd        data: U & V currents                             ("key_c1d") 
    1015 !!   namc1d_dyndmp     U & V newtonian damping                          ("key_c1d") 
    10161041!!   namsto            Stochastic parametrization of EOS 
    10171042!!====================================================================== 
    10181043! 
    1019 !----------------------------------------------------------------------- 
    1020 &namsol        !   elliptic solver / island / free surface 
    1021 !----------------------------------------------------------------------- 
    1022    nn_solv     =      1    !  elliptic solver: =1 preconditioned conjugate gradient (pcg) 
    1023                            !                   =2 successive-over-relaxation (sor) 
    1024    nn_sol_arp  =      0    !  absolute/relative (0/1) precision convergence test 
    1025    rn_eps      =  1.e-6    !  absolute precision of the solver 
    1026    nn_nmin     =    300    !  minimum of iterations for the SOR solver 
    1027    nn_nmax     =    800    !  maximum of iterations for the SOR solver 
    1028    nn_nmod     =     10    !  frequency of test for the SOR solver 
    1029    rn_resmax   =  1.e-10   !  absolute precision for the SOR solver 
    1030    rn_sor      =  1.92     !  optimal coefficient for SOR solver (to be adjusted with the domain) 
    1031 / 
    10321044!----------------------------------------------------------------------- 
    10331045&nammpp        !   Massively Parallel Processing                        ("key_mpp_mpi) 
     
    10571069/ 
    10581070!----------------------------------------------------------------------- 
    1059 &namc1d_uvd    !   data: U & V currents                                 ("key_c1d") 
    1060 !----------------------------------------------------------------------- 
    1061 !              !  file name  ! frequency (hours) ! variable  ! time interp. !  clim  ! 'yearly'/ ! weights  ! rotation ! land/sea mask ! 
    1062 !              !             !  (if <0  months)  !   name    !   (logical)  !  (T/F) ! 'monthly' ! filename ! pairing  ! filename      ! 
    1063    sn_ucur     = 'ucurrent'  ,         -1        ,'u_current',   .false.    , .true. , 'monthly' ,  ''      ,  'Ume'   , '' 
    1064    sn_vcur     = 'vcurrent'  ,         -1        ,'v_current',   .false.    , .true. , 'monthly' ,  ''      ,  'Vme'   , '' 
    1065 ! 
    1066    cn_dir        = './'    !  root directory for the location of the files 
    1067    ln_uvd_init   = .false. !  Initialisation of ocean U & V with U & V input data (T) or not (F) 
    1068    ln_uvd_dyndmp = .false. !  damping of ocean U & V toward U & V input data (T) or not (F) 
    1069 / 
    1070 !----------------------------------------------------------------------- 
    1071 &namc1d_dyndmp !   U & V newtonian damping                              ("key_c1d") 
    1072 !----------------------------------------------------------------------- 
    1073    ln_dyndmp   =  .false.  !  add a damping term (T) or not (F) 
    1074 / 
    1075 !----------------------------------------------------------------------- 
    1076 &namsto       ! Stochastic parametrization of EOS 
    1077 !----------------------------------------------------------------------- 
    1078    ln_rststo = .false.           ! start from mean parameter (F) or from restart file (T) 
     1071&namsto       ! Stochastic parametrization of EOS                       (default: NO) 
     1072!----------------------------------------------------------------------- 
     1073   ln_sto_eos   = .false.  ! stochastic equation of state 
     1074   nn_sto_eos   = 1        ! number of independent random walks 
     1075   rn_eos_stdxy = 1.4      ! random walk horz. standard deviation (in grid points) 
     1076   rn_eos_stdz  = 0.7      ! random walk vert. standard deviation (in grid points) 
     1077   rn_eos_tcor  = 1440.    ! random walk time correlation (in timesteps) 
     1078   nn_eos_ord   = 1        ! order of autoregressive processes 
     1079   nn_eos_flt   = 0        ! passes of Laplacian filter 
     1080   rn_eos_lim   = 2.0      ! limitation factor (default = 3.0) 
     1081   ln_rststo    = .false.  ! start from mean parameter (F) or from restart file (T) 
    10791082   ln_rstseed = .true.           ! read seed of RNG from restart file 
    10801083   cn_storst_in  = "restart_sto" !  suffix of stochastic parameter restart file (input) 
    10811084   cn_storst_out = "restart_sto" !  suffix of stochastic parameter restart file (output) 
    1082  
    1083    ln_sto_eos = .false.          ! stochastic equation of state 
    1084    nn_sto_eos = 1                ! number of independent random walks 
    1085    rn_eos_stdxy = 1.4            ! random walk horz. standard deviation (in grid points) 
    1086    rn_eos_stdz  = 0.7            ! random walk vert. standard deviation (in grid points) 
    1087    rn_eos_tcor  = 1440.0         ! random walk time correlation (in timesteps) 
    1088    nn_eos_ord  = 1               ! order of autoregressive processes 
    1089    nn_eos_flt  = 0               ! passes of Laplacian filter 
    1090    rn_eos_lim  = 2.0             ! limitation factor (default = 3.0) 
    10911085/ 
    10921086 
     
    10941088!!                  ***  Diagnostics namelists  *** 
    10951089!!====================================================================== 
    1096 !!   namnc4       netcdf4 chunking and compression settings             ("key_netcdf4") 
    10971090!!   namtrd       dynamics and/or tracer trends 
    10981091!!   namptr       Poleward Transport Diagnostics 
     1092!!   namhsb       Heat and salt budgets 
    10991093!!   namflo       float parameters                                      ("key_float") 
    1100 !!   namhsb       Heat and salt budgets 
    1101 !!====================================================================== 
    1102 ! 
    1103 !----------------------------------------------------------------------- 
    1104 &namnc4        !   netcdf4 chunking and compression settings            ("key_netcdf4") 
    1105 !----------------------------------------------------------------------- 
    1106    nn_nchunks_i=   4       !  number of chunks in i-dimension 
    1107    nn_nchunks_j=   4       !  number of chunks in j-dimension 
    1108    nn_nchunks_k=   31      !  number of chunks in k-dimension 
    1109                            !  setting nn_nchunks_k = jpk will give a chunk size of 1 in the vertical which 
    1110                            !  is optimal for postprocessing which works exclusively with horizontal slabs 
    1111    ln_nc4zip   = .true.    !  (T) use netcdf4 chunking and compression 
    1112                            !  (F) ignore chunking information and produce netcdf3-compatible files 
    1113 / 
    1114 !----------------------------------------------------------------------- 
    1115 &namtrd        !   diagnostics on dynamics and/or tracer trends 
    1116 !              !       and/or mixed-layer trends and/or barotropic vorticity 
     1094!!   nam_diaharm  Harmonic analysis of tidal constituents               ('key_diaharm') 
     1095!!   namdct       transports through some sections 
     1096!!   namnc4       netcdf4 chunking and compression settings             ("key_netcdf4") 
     1097!!====================================================================== 
     1098! 
     1099!----------------------------------------------------------------------- 
     1100&namtrd        !   diagnostics on dynamics and/or tracer trends         (default F) 
     1101!              !   and/or mixed-layer trends and/or barotropic vorticity 
    11171102!----------------------------------------------------------------------- 
    11181103   ln_glo_trd  = .false.   ! (T) global domain averaged diag for T, T^2, KE, and PE 
    11191104   ln_dyn_trd  = .false.   ! (T) 3D momentum trend output 
    1120    ln_dyn_mxl  = .FALSE.   ! (T) 2D momentum trends averaged over the mixed layer (not coded yet) 
    1121    ln_vor_trd  = .FALSE.   ! (T) 2D barotropic vorticity trends (not coded yet) 
     1105   ln_dyn_mxl  = .false.   ! (T) 2D momentum trends averaged over the mixed layer (not coded yet) 
     1106   ln_vor_trd  = .false.   ! (T) 2D barotropic vorticity trends (not coded yet) 
    11221107   ln_KE_trd   = .false.   ! (T) 3D Kinetic   Energy     trends 
    11231108   ln_PE_trd   = .false.   ! (T) 3D Potential Energy     trends 
    1124    ln_tra_trd  = .FALSE.   ! (T) 3D tracer trend output 
     1109   ln_tra_trd  = .false.   ! (T) 3D tracer trend output 
    11251110   ln_tra_mxl  = .false.   ! (T) 2D tracer trends averaged over the mixed layer (not coded yet) 
    11261111   nn_trd      = 365       !  print frequency (ln_glo_trd=T) (unit=time step) 
     
    11331118!!gm   ln_trdmld_instant = .false.         !  flag to diagnose trends of instantantaneous or mean ML T/S 
    11341119!!gm 
     1120!----------------------------------------------------------------------- 
     1121&namptr       !   Poleward Transport Diagnostic                         (default F) 
     1122!----------------------------------------------------------------------- 
     1123   ln_diaptr  = .false.    !  Poleward heat and salt transport (T) or not (F) 
     1124   ln_subbas  = .false.     !  Atlantic/Pacific/Indian basins computation (T) or not 
     1125/ 
     1126!----------------------------------------------------------------------- 
     1127&namhsb       !  Heat and salt budgets                                  (default F) 
     1128!----------------------------------------------------------------------- 
     1129   ln_diahsb  = .false.    !  check the heat and salt budgets (T) or not (F) 
     1130/ 
    11351131!----------------------------------------------------------------------- 
    11361132&namflo       !   float parameters                                      ("key_float") 
     
    11481144/ 
    11491145!----------------------------------------------------------------------- 
    1150 &namptr       !   Poleward Transport Diagnostic 
    1151 !----------------------------------------------------------------------- 
    1152    ln_diaptr  = .false.    !  Poleward heat and salt transport (T) or not (F) 
    1153    ln_subbas  = .false.     !  Atlantic/Pacific/Indian basins computation (T) or not 
    1154 / 
    1155 !----------------------------------------------------------------------- 
    1156 &namhsb       !  Heat and salt budgets                                  (default F) 
    1157 !----------------------------------------------------------------------- 
    1158    ln_diahsb  = .false.    !  check the heat and salt budgets (T) or not (F) 
    1159 / 
    1160 !----------------------------------------------------------------------- 
    1161 &nam_diaharm   !   Harmonic analysis of tidal constituents ('key_diaharm') 
     1146&nam_diaharm   !   Harmonic analysis of tidal constituents              ('key_diaharm') 
    11621147!----------------------------------------------------------------------- 
    11631148    nit000_han = 1         ! First time step used for harmonic analysis 
     
    11681153/ 
    11691154!----------------------------------------------------------------------- 
    1170 &namdct        ! transports through sections 
     1155&namdct        ! transports through some sections 
    11711156!----------------------------------------------------------------------- 
    11721157    nn_dct      = 15       !  time step frequency for transports computing 
     
    11761161                           !  0 < n : debug section number n 
    11771162/ 
    1178  
    1179 !!====================================================================== 
    1180 !!            ***  Observation & Assimilation namelists *** 
     1163!----------------------------------------------------------------------- 
     1164&namnc4        !   netcdf4 chunking and compression settings            ("key_netcdf4") 
     1165!----------------------------------------------------------------------- 
     1166   nn_nchunks_i=   4       !  number of chunks in i-dimension 
     1167   nn_nchunks_j=   4       !  number of chunks in j-dimension 
     1168   nn_nchunks_k=   31      !  number of chunks in k-dimension 
     1169                           !  setting nn_nchunks_k = jpk will give a chunk size of 1 in the vertical which 
     1170                           !  is optimal for postprocessing which works exclusively with horizontal slabs 
     1171   ln_nc4zip   = .true.    !  (T) use netcdf4 chunking and compression 
     1172                           !  (F) ignore chunking information and produce netcdf3-compatible files 
     1173/ 
     1174 
     1175!!====================================================================== 
     1176!!               ***  Observation & Assimilation  *** 
    11811177!!====================================================================== 
    11821178!!   namobs       observation and model comparison                      ('key_diaobs') 
     
    12051201   ln_velavcur= .false     ! Logical switch for velocity daily av. cur. 
    12061202   ln_velhrcur= .false     ! Logical switch for velocity high freq. cur. 
    1207    ln_velavadcp = .false.  ! Logical switch for velocity daily av. ADCP 
    1208    ln_velhradcp = .false.  ! Logical switch for velocity high freq. ADCP 
     1203   ln_velavadcp=.false.    ! Logical switch for velocity daily av. ADCP 
     1204   ln_velhradcp=.false.    ! Logical switch for velocity high freq. ADCP 
    12091205   ln_velfb   = .false.    ! Logical switch for feedback velocity data 
    1210    ln_grid_global = .false. ! Global distribtion of observations 
     1206   ln_grid_global=.false. ! Global distribtion of observations 
    12111207   ln_grid_search_lookup = .false. !  Logical switch for obs grid search w/lookup table 
    12121208   grid_search_file = 'grid_search'  !  Grid search lookup file header 
     
    12221218   sstfbfiles = 'sst_01.nc' ! Feedback SST input observation file names 
    12231219   seaicefiles = 'seaice_01.nc' ! Sea Ice input observation file names 
    1224    velavcurfiles = 'velavcurfile.nc'  ! Vel. cur. daily av. input file name 
    1225    velhrcurfiles = 'velhrcurfile.nc'  ! Vel. cur. high freq. input file name 
     1220   velavcurfiles  = 'velavcurfile.nc'  ! Vel. cur. daily av. input file name 
     1221   velhrcurfiles  = 'velhrcurfile.nc'  ! Vel. cur. high freq. input file name 
    12261222   velavadcpfiles = 'velavadcpfile.nc' ! Vel. ADCP daily av. input file name 
    12271223   velhradcpfiles = 'velhradcpfile.nc' ! Vel. ADCP high freq. input file name 
     
    12381234   ln_ignmis  = .true.     ! Logical switch for ignoring missing files 
    12391235   endailyavtypes = 820    ! ENACT daily average types - array (use namelist_cfg to set more values) 
    1240    ln_grid_global = .true. 
    1241    ln_grid_search_lookup = .false. 
    12421236/ 
    12431237!----------------------------------------------------------------------- 
     
    12591253    nn_divdmp = 0          !  Number of iterations of divergence damping operator 
    12601254/ 
    1261 !----------------------------------------------------------------------- 
    1262 &namsbc_wave   ! External fields from wave model 
    1263 !----------------------------------------------------------------------- 
    1264 !              !  file name  ! frequency (hours) ! variable     ! time interp. !  clim   ! 'yearly'/ ! weights  ! rotation ! land/sea mask ! 
    1265 !              !             !  (if <0  months)  !   name       !   (logical)  !  (T/F)  ! 'monthly' ! filename ! pairing  ! filename      ! 
    1266    sn_cdg      =  'cdg_wave' ,        1          , 'drag_coeff' ,     .true.   , .false. , 'daily'   ,  ''      , ''       , '' 
    1267    sn_usd      =  'sdw_wave' ,        1          , 'u_sd2d'     ,     .true.   , .false. , 'daily'   ,  ''      , ''       , '' 
    1268    sn_vsd      =  'sdw_wave' ,        1          , 'v_sd2d'     ,     .true.   , .false. , 'daily'   ,  ''      , ''       , '' 
    1269    sn_wn       =  'sdw_wave' ,        1          , 'wave_num'   ,     .true.   , .false. , 'daily'   ,  ''      , ''       , '' 
    1270 ! 
    1271    cn_dir_cdg  = './'      !  root directory for the location of drag coefficient files 
    1272    ln_cdgw = .false.       !  Neutral drag coefficient read from wave model 
    1273    ln_sdw  = .false.       !  Computation of 3D stokes drift                
    1274 / 
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/NEMO/LIM_SRC_2/limsbc_2.F90

    r5866 r6004  
    2929   USE sbc_ice          ! surface boundary condition: ice 
    3030   USE sbc_oce          ! surface boundary condition: ocean 
    31    USE sbccpl 
     31   USE sbccpl           ! surface boundary condition: coupled interface 
    3232   USE oce       , ONLY : sshn, sshb, snwice_mass, snwice_mass_b, snwice_fmass  
    3333   USE albedo           ! albedo parameters 
     34   ! 
    3435   USE lbclnk           ! ocean lateral boundary condition - MPP exchanges 
    3536   USE lib_mpp          ! MPP library 
     
    4344   PRIVATE 
    4445 
    45    PUBLIC   lim_sbc_init_2     ! called by ice_init_2 
    46    PUBLIC   lim_sbc_flx_2      ! called by sbc_ice_lim_2 
    47    PUBLIC   lim_sbc_tau_2      ! called by sbc_ice_lim_2 
     46   PUBLIC   lim_sbc_init_2   ! called by ice_init_2 
     47   PUBLIC   lim_sbc_flx_2    ! called by sbc_ice_lim_2 
     48   PUBLIC   lim_sbc_tau_2    ! called by sbc_ice_lim_2 
    4849 
    4950   REAL(wp)  ::   r1_rdtice            ! = 1. / rdt_ice  
     
    5253   REAL(wp)  ::   rone   = 1._wp       !     -      - 
    5354   ! 
    54    REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) ::   soce_0, sice_0   ! constant SSS and ice salinity used in levitating sea-ice case 
     55   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) ::   soce_0, sice_0       ! fix SSS and ice salinity used in levitating case 0 
    5556   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) ::   utau_oce, vtau_oce   ! air-ocean surface i- & j-stress              [N/m2] 
    5657   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) ::   tmod_io              ! modulus of the ice-ocean relative velocity   [m/s] 
     
    101102      !!--------------------------------------------------------------------- 
    102103      INTEGER, INTENT(in) ::   kt    ! number of iteration 
    103       !! 
     104      ! 
    104105      INTEGER  ::   ji, jj   ! dummy loop indices 
    105106      INTEGER  ::   ii0, ii1, ij0, ij1         ! local integers 
     
    113114      REAL(wp), POINTER, DIMENSION(:,:,:) ::   zalb, zalbp   ! 2D/3D workspace 
    114115      !!--------------------------------------------------------------------- 
    115       
     116      ! 
    116117      CALL wrk_alloc( jpi, jpj, zqnsoce ) 
    117118      CALL wrk_alloc( jpi, jpj, 1, zalb, zalbp ) 
    118  
    119       SELECT CASE( nn_ice_embd )                 ! levitating or embedded sea-ice option 
    120         CASE( 0    )   ;   zswitch = 1           ! (0) standard levitating sea-ice : salt exchange only 
    121         CASE( 1, 2 )   ;   zswitch = 0           ! (1) levitating sea-ice: salt and volume exchange but no pressure effect 
    122                                                  ! (2) embedded sea-ice : salt and volume fluxes and pressure 
    123       END SELECT                                 !     
     119      ! 
     120      SELECT CASE( nn_ice_embd )             ! levitating or embedded sea-ice option 
     121         CASE( 0    )   ;   zswitch = 1         ! (0) old levitating sea-ice : salt exchange only 
     122         CASE( 1, 2 )   ;   zswitch = 0         ! (1) levitating sea-ice: salt and volume exchange but no pressure effect 
     123         !                                      ! (2) embedded sea-ice : salt and volume fluxes and pressure 
     124      END SELECT 
    124125 
    125126      !------------------------------------------! 
     
    302303      INTEGER ,                     INTENT(in) ::   kt               ! ocean time-step index 
    303304      REAL(wp), DIMENSION(jpi,jpj), INTENT(in) ::   pu_oce, pv_oce   ! surface ocean currents 
    304       !! 
     305      ! 
    305306      INTEGER  ::   ji, jj   ! dummy loop indices 
    306307      REAL(wp) ::   zfrldu, zat_u, zu_i, zutau_ice, zu_t, zmodt   ! local scalar 
     
    434435      !! ** input   : Namelist namicedia 
    435436      !!------------------------------------------------------------------- 
    436       ! 
    437       INTEGER :: jk           ! local integer 
     437      INTEGER ::   jk   ! local integer 
     438      !!------------------------------------------------------------------- 
    438439      ! 
    439440      IF(lwp) WRITE(numout,*) 
     
    471472!!gm I really don't like this staff here...  Find a way to put that elsewhere or differently 
    472473!!gm 
    473          IF( .NOT. ln_linssh ) THEN 
     474         IF( .NOT.ln_linssh ) THEN 
    474475 
    475476            do jk = 1,jpkm1                     ! adjust initial vertical scale factors 
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/NEMO/LIM_SRC_2/limthd_2.F90

    r5845 r6004  
    1818   USE phycst           ! physical constants 
    1919   USE dom_oce          ! ocean space and time domain variables 
    20    USE domvvl 
    21    USE lbclnk 
     20   USE domvvl           ! ocean domain 
     21   USE ice_2            ! LIM sea-ice variables 
     22   USE sbc_oce          ! surface boundary condition: ocean 
     23   USE sbc_ice          ! surface boundary condition: sea-ice 
     24   USE thd_ice_2        ! LIM thermodynamic sea-ice variables 
     25   USE dom_ice_2        ! LIM sea-ice domain 
     26   USE limthd_zdf_2     ! 
     27   USE limthd_lac_2     ! 
     28   USE limtab_2         ! 
     29   ! 
    2230   USE in_out_manager   ! I/O manager 
    23    USE lib_mpp 
     31   USE lbclnk           ! 
     32   USE lib_mpp          ! 
    2433   USE wrk_nemo         ! work arrays 
    2534   USE iom              ! IOM library 
    26    USE ice_2            ! LIM sea-ice variables 
    27    USE sbc_oce          !  
    28    USE sbc_ice          !  
    29    USE thd_ice_2        ! LIM thermodynamic sea-ice variables 
    30    USE dom_ice_2        ! LIM sea-ice domain 
    31    USE limthd_zdf_2 
    32    USE limthd_lac_2 
    33    USE limtab_2 
    3435   USE prtctl           ! Print control 
    3536   USE lib_fortran      ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)   
     
    4344   REAL(wp) ::   epsi16 = 1.e-16   ! 
    4445   REAL(wp) ::   epsi04 = 1.e-04   ! 
    45    REAL(wp) ::   rzero  = 0.e0     ! 
    46    REAL(wp) ::   rone   = 1.e0     ! 
     46   REAL(wp) ::   rzero  = 0._wp    ! 
     47   REAL(wp) ::   rone   = 1._wp    ! 
    4748 
    4849   !! * Substitutions 
     
    7475      !!--------------------------------------------------------------------- 
    7576      INTEGER, INTENT(in) ::   kt     ! number of iteration 
    76       !! 
     77      ! 
    7778      INTEGER  ::   ji, jj               ! dummy loop indices 
    7879      INTEGER  ::   nbpb                 ! nb of icy pts for thermo. cal. 
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/NEMO/LIM_SRC_3/limsbc.F90

    r5866 r6004  
    2323   !!   lim_sbc_tau   : update i- and j-stresses, and its modulus at the ocean surface 
    2424   !!---------------------------------------------------------------------- 
    25    USE par_oce          ! ocean parameters 
    26    USE phycst           ! physical constants 
    27    USE dom_oce          ! ocean domain 
    28    USE ice              ! LIM sea-ice variables 
    29    USE sbc_ice          ! Surface boundary condition: sea-ice fields 
    30    USE sbc_oce          ! Surface boundary condition: ocean fields 
    31    USE sbccpl 
    32    USE oce       , ONLY : sshn, sshb, snwice_mass, snwice_mass_b, snwice_fmass 
    33    USE albedo           ! albedo parameters 
    34    USE lbclnk           ! ocean lateral boundary condition - MPP exchanges 
    35    USE lib_mpp          ! MPP library 
    36    USE wrk_nemo         ! work arrays 
    37    USE in_out_manager   ! I/O manager 
    38    USE prtctl           ! Print control 
    39    USE lib_fortran      ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)   
    40    USE traqsr           ! add penetration of solar flux in the calculation of heat budget 
    41    USE iom 
    42    USE domvvl           ! Variable volume 
    43    USE limctl 
    44    USE limcons 
     25   USE par_oce        ! ocean parameters 
     26   USE oce     , ONLY : sshn, sshb, snwice_mass, snwice_mass_b, snwice_fmass 
     27   USE phycst         ! physical constants 
     28   USE dom_oce        ! ocean domain 
     29   USE ice            ! LIM sea-ice variables 
     30   USE sbc_ice        ! Surface boundary condition: sea-ice fields 
     31   USE sbc_oce        ! Surface boundary condition: ocean fields 
     32   USE sbccpl         ! Surface boundary condition: coupled interface 
     33   USE albedo         ! albedo parameters 
     34   USE traqsr         ! add penetration of solar flux in the calculation of heat budget 
     35   USE domvvl         ! Variable volume 
     36   USE limctl         !  
     37   USE limcons        !  
     38   ! 
     39   USE in_out_manager ! I/O manager 
     40   USE iom            ! xIO server 
     41   USE lbclnk         ! ocean lateral boundary condition - MPP exchanges 
     42   USE lib_mpp        ! MPP library 
     43   USE wrk_nemo       ! work arrays 
     44   USE prtctl         ! Print control 
     45   USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)   
    4546 
    4647   IMPLICIT NONE 
    4748   PRIVATE 
    4849 
    49    PUBLIC   lim_sbc_init   ! called by sbc_lim_init 
     50   PUBLIC   lim_sbc_init   ! called by sbcice_lim 
    5051   PUBLIC   lim_sbc_flx    ! called by sbc_ice_lim 
    5152   PUBLIC   lim_sbc_tau    ! called by sbc_ice_lim 
     
    100101      !!              The ref should be Rousset et al., 2015 
    101102      !!--------------------------------------------------------------------- 
    102       INTEGER, INTENT(in) ::   kt                                  ! number of iteration 
    103       INTEGER  ::   ji, jj, jl, jk                                 ! dummy loop indices 
    104       REAL(wp) ::   zqmass                                         ! Heat flux associated with mass exchange ice->ocean (W.m-2) 
    105       REAL(wp) ::   zqsr                                           ! New solar flux received by the ocean 
    106       ! 
    107       REAL(wp), POINTER, DIMENSION(:,:,:) ::   zalb_cs, zalb_os     ! 2D/3D workspace 
     103      INTEGER, INTENT(in) ::   kt   ! number of iteration 
     104      ! 
     105      INTEGER  ::   ji, jj, jl, jk   ! dummy loop indices 
     106      REAL(wp) ::   zqmass           ! Heat flux associated with mass exchange ice->ocean (W.m-2) 
     107      REAL(wp) ::   zqsr             ! New solar flux received by the ocean 
     108      REAL(wp), POINTER, DIMENSION(:,:,:) ::   zalb_cs, zalb_os     ! 3D workspace 
    108109      !!--------------------------------------------------------------------- 
    109  
     110      ! 
    110111      ! make calls for heat fluxes before it is modified 
    111112      IF( iom_use('qsr_oce') )   CALL iom_put( "qsr_oce" , qsr_oce(:,:) * pfrld(:,:) )                                   !     solar flux at ocean surface 
     
    197198      !    Snow/ice albedo (only if sent to coupler, useless in forced mode)   ! 
    198199      !------------------------------------------------------------------------! 
    199       CALL wrk_alloc( jpi, jpj, jpl, zalb_cs, zalb_os )     
     200      CALL wrk_alloc( jpi,jpj,jpl,  zalb_cs, zalb_os )     
    200201      CALL albedo_ice( t_su, ht_i, ht_s, zalb_cs, zalb_os )  ! cloud-sky and overcast-sky ice albedos 
    201202      alb_ice(:,:,:) = ( 1. - cldf_ice ) * zalb_cs(:,:,:) + cldf_ice * zalb_os(:,:,:) 
    202       CALL wrk_dealloc( jpi, jpj, jpl, zalb_cs, zalb_os ) 
     203      CALL wrk_dealloc( jpi,jpj,jpl,  zalb_cs, zalb_os ) 
    203204 
    204205      ! conservation test 
    205       IF( ln_limdiahsb ) CALL lim_cons_final( 'limsbc' ) 
     206      IF( ln_limdiahsb )   CALL lim_cons_final( 'limsbc' ) 
    206207 
    207208      ! control prints 
    208209      IF( ln_icectl )   CALL lim_prt( kt, iiceprt, jiceprt, 3, ' - Final state lim_sbc - ' ) 
    209  
     210      ! 
    210211      IF(ln_ctl) THEN 
    211212         CALL prt_ctl( tab2d_1=qsr   , clinfo1=' lim_sbc: qsr    : ', tab2d_2=qns , clinfo2=' qns     : ' ) 
     
    214215         CALL prt_ctl( tab3d_1=tn_ice, clinfo1=' lim_sbc: tn_ice : ', kdim=jpl ) 
    215216      ENDIF 
    216  
     217      ! 
    217218   END SUBROUTINE lim_sbc_flx 
    218219 
     
    245246      INTEGER ,                     INTENT(in) ::   kt               ! ocean time-step index 
    246247      REAL(wp), DIMENSION(jpi,jpj), INTENT(in) ::   pu_oce, pv_oce   ! surface ocean currents 
    247       !! 
     248      ! 
    248249      INTEGER  ::   ji, jj   ! dummy loop indices 
    249250      REAL(wp) ::   zat_u, zutau_ice, zu_t, zmodt   ! local scalar 
     
    302303      !! ** input   : Namelist namicedia 
    303304      !!------------------------------------------------------------------- 
    304       INTEGER  ::   ji, jj, jk                       ! dummy loop indices 
    305       REAL(wp) ::   zcoefu, zcoefv, zcoeff          ! local scalar 
     305      INTEGER  ::   ji, jj, jk               ! dummy loop indices 
     306      REAL(wp) ::   zcoefu, zcoefv, zcoeff   ! local scalar 
     307      !!------------------------------------------------------------------- 
     308      ! 
    306309      IF(lwp) WRITE(numout,*) 
    307310      IF(lwp) WRITE(numout,*) 'lim_sbc_init : LIM-3 sea-ice - surface boundary condition' 
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/NEMO/LIM_SRC_3/limthd.F90

    r5845 r6004  
    2525   USE sbc_oce        ! Surface boundary condition: ocean fields 
    2626   USE sbc_ice        ! Surface boundary condition: ice fields 
    27    USE thd_ice        ! LIM thermodynamic sea-ice variables 
    28    USE dom_ice        ! LIM sea-ice domain 
     27   USE dom_ice        ! LIM: sea-ice domain 
     28   USE thd_ice        ! LIM: thermodynamic sea-ice variables 
    2929   USE limthd_dif     ! LIM: thermodynamics, vertical diffusion 
    3030   USE limthd_dh      ! LIM: thermodynamics, ice and snow thickness variation 
    3131   USE limthd_sal     ! LIM: thermodynamics, ice salinity 
    3232   USE limthd_ent     ! LIM: thermodynamics, ice enthalpy redistribution 
    33    USE limthd_lac     ! LIM-3 lateral accretion 
    34    USE limitd_th      ! remapping thickness distribution 
     33   USE limthd_lac     ! LIM: lateral accretion 
     34   USE limitd_th      ! LIM: remapping thickness distribution 
    3535   USE limtab         ! LIM: 1D <==> 2D transformation 
    3636   USE limvar         ! LIM: sea-ice variables 
     37   USE limcons        ! LIM: conservation tests 
     38   USE limctl         ! LIM: control print 
     39   ! 
     40   USE in_out_manager ! I/O manager 
     41   USE prtctl         ! Print control 
    3742   USE lbclnk         ! lateral boundary condition - MPP links 
    3843   USE lib_mpp        ! MPP library 
    3944   USE wrk_nemo       ! work arrays 
    40    USE in_out_manager ! I/O manager 
    41    USE prtctl         ! Print control 
    4245   USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)   
    4346   USE timing         ! Timing 
    44    USE limcons        ! conservation tests 
    45    USE limctl 
    4647 
    4748   IMPLICIT NONE 
     
    8081      !!--------------------------------------------------------------------- 
    8182      INTEGER, INTENT(in) :: kt    ! number of iteration 
    82       !! 
     83      ! 
    8384      INTEGER  :: ji, jj, jk, jl   ! dummy loop indices 
    8485      INTEGER  :: nbpb             ! nb of icy pts for vertical thermo calculations 
    85       INTEGER  :: ii, ij           ! temporary dummy loop index 
    8686      REAL(wp) :: zfric_u, zqld, zqfr 
    8787      REAL(wp) :: zvi_b, zsmv_b, zei_b, zfs_b, zfw_b, zft_b  
    8888      REAL(wp), PARAMETER :: zfric_umin = 0._wp           ! lower bound for the friction velocity (cice value=5.e-04) 
    8989      REAL(wp), PARAMETER :: zch        = 0.0057_wp       ! heat transfer coefficient 
    90       ! 
    9190      !!------------------------------------------------------------------- 
    9291 
    93       IF( nn_timing == 1 )  CALL timing_start('limthd') 
     92      IF( nn_timing == 1 )   CALL timing_start('limthd') 
    9493 
    9594      ! conservation test 
    96       IF( ln_limdiahsb ) CALL lim_cons_hsm(0, 'limthd', zvi_b, zsmv_b, zei_b, zfw_b, zfs_b, zft_b) 
     95      IF( ln_limdiahsb )   CALL lim_cons_hsm( 0, 'limthd', zvi_b, zsmv_b, zei_b, zfw_b, zfs_b, zft_b ) 
    9796 
    9897      CALL lim_var_glo2eqv 
     
    225224 
    226225         IF( nbpb > 0 ) THEN  ! If there is no ice, do nothing. 
    227  
    228             !-------------------------! 
    229             ! --- Move to 1D arrays --- 
    230             !-------------------------! 
    231             CALL lim_thd_1d2d( nbpb, jl, 1 ) 
    232  
    233             !--------------------------------------! 
    234             ! --- Ice/Snow Temperature profile --- ! 
    235             !--------------------------------------! 
    236             CALL lim_thd_dif( 1, nbpb ) 
    237  
    238             !---------------------------------! 
    239             ! --- Ice/Snow thickness ---      ! 
    240             !---------------------------------! 
    241             CALL lim_thd_dh( 1, nbpb )     
    242  
    243             ! --- Ice enthalpy remapping --- ! 
    244             CALL lim_thd_ent( 1, nbpb, q_i_1d(1:nbpb,:) )  
    245                                              
    246             !---------------------------------! 
    247             ! --- Ice salinity ---            ! 
    248             !---------------------------------! 
    249             CALL lim_thd_sal( 1, nbpb )     
    250  
    251             !---------------------------------! 
    252             ! --- temperature update ---      ! 
    253             !---------------------------------! 
    254             CALL lim_thd_temp( 1, nbpb ) 
    255  
    256             !------------------------------------! 
    257             ! --- lateral melting if monocat --- ! 
    258             !------------------------------------! 
     226            ! 
     227            CALL lim_thd_1d2d( nbpb, jl, 1 )                ! --- Move to 1D arrays ---! 
     228            ! 
     229            CALL lim_thd_dif ( 1, nbpb )                    ! --- Ice/Snow Temperature profile --- ! 
     230            ! 
     231            CALL lim_thd_dh  ( 1, nbpb )                    ! --- Ice/Snow thickness ---! 
     232            ! 
     233            CALL lim_thd_ent ( 1, nbpb, q_i_1d(1:nbpb,:) )  ! --- Ice enthalpy remapping --- ! 
     234            ! 
     235            CALL lim_thd_sal ( 1, nbpb )                    ! --- Ice salinity ---            ! 
     236            ! 
     237            CALL lim_thd_temp( 1, nbpb )                    ! --- temperature update ---      ! 
     238            ! 
     239            !                                               ! --- lateral melting if monocat --- ! 
    259240            IF ( ( nn_monocat == 1 .OR. nn_monocat == 4 ) .AND. jpl == 1 ) THEN 
    260241               CALL lim_thd_lam( 1, nbpb ) 
    261242            END IF 
    262  
    263             !-------------------------! 
    264             ! --- Move to 2D arrays --- 
    265             !-------------------------! 
    266             CALL lim_thd_1d2d( nbpb, jl, 2 ) 
    267  
    268             ! 
    269             IF( lk_mpp )   CALL mpp_comm_free( ncomm_ice ) !RB necessary ?? 
     243            ! 
     244            CALL lim_thd_1d2d( nbpb, jl, 2 )                ! --- Move to 2D arrays --- 
     245            ! 
     246            IF( lk_mpp )   CALL mpp_comm_free( ncomm_ice )  !RB necessary ?? 
    270247         ENDIF 
    271248         ! 
     
    409386      ENDIF 
    410387      ! 
    411       IF( nn_timing == 1 )  CALL timing_stop('limthd') 
    412  
     388      IF( nn_timing == 1 )   CALL timing_stop('limthd') 
     389      ! 
    413390   END SUBROUTINE lim_thd  
    414391 
     
    423400      !!------------------------------------------------------------------- 
    424401      INTEGER, INTENT(in) ::   kideb, kiut   ! bounds for the spatial loop 
    425       !! 
     402      ! 
    426403      INTEGER  ::   ji, jk   ! dummy loop indices 
    427404      REAL(wp) ::   ztmelts, zaaa, zbbb, zccc, zdiscrim  ! local scalar  
     
    443420         END DO  
    444421      END DO  
    445  
     422      ! 
    446423   END SUBROUTINE lim_thd_temp 
     424 
    447425 
    448426   SUBROUTINE lim_thd_lam( kideb, kiut ) 
     
    454432      !!----------------------------------------------------------------------- 
    455433      INTEGER, INTENT(in) ::   kideb, kiut        ! bounds for the spatial loop 
    456       INTEGER             ::   ji                 ! dummy loop indices 
    457       REAL(wp)            ::   zhi_bef            ! ice thickness before thermo 
    458       REAL(wp)            ::   zdh_mel, zda_mel   ! net melting 
    459       REAL(wp)            ::   zvi, zvs           ! ice/snow volumes  
    460  
     434      ! 
     435      INTEGER  ::   ji                 ! dummy loop indices 
     436      REAL(wp) ::   zhi_bef            ! ice thickness before thermo 
     437      REAL(wp) ::   zdh_mel, zda_mel   ! net melting 
     438      REAL(wp) ::   zvi, zvs           ! ice/snow volumes  
     439      !!----------------------------------------------------------------------- 
     440      ! 
    461441      DO ji = kideb, kiut 
    462442         zdh_mel = MIN( 0._wp, dh_i_surf(ji) + dh_i_bott(ji) + dh_snowice(ji) ) 
     
    476456         END IF 
    477457      END DO 
    478        
     458      ! 
    479459   END SUBROUTINE lim_thd_lam 
     460 
    480461 
    481462   SUBROUTINE lim_thd_1d2d( nbpb, jl, kn ) 
     
    485466      !! ** Purpose :   move arrays from 1d to 2d and the reverse 
    486467      !!----------------------------------------------------------------------- 
    487       INTEGER, INTENT(in) ::   kn       ! 1= from 2D to 1D 
    488                                         ! 2= from 1D to 2D 
     468      INTEGER, INTENT(in) ::   kn       ! 1= from 2D to 1D   ;   2= from 1D to 2D 
    489469      INTEGER, INTENT(in) ::   nbpb     ! size of 1D arrays 
    490470      INTEGER, INTENT(in) ::   jl       ! ice cat 
     471      ! 
    491472      INTEGER             ::   jk       ! dummy loop indices 
    492  
     473      !!----------------------------------------------------------------------- 
     474      ! 
    493475      SELECT CASE( kn ) 
    494  
    495       CASE( 1 ) 
    496  
     476      ! 
     477      CASE( 1 )            ! from 2D to 1D 
     478         ! 
    497479         CALL tab_2d_1d( nbpb, at_i_1d     (1:nbpb), at_i            , jpi, jpj, npb(1:nbpb) ) 
    498480         CALL tab_2d_1d( nbpb, a_i_1d      (1:nbpb), a_i(:,:,jl)     , jpi, jpj, npb(1:nbpb) ) 
    499481         CALL tab_2d_1d( nbpb, ht_i_1d     (1:nbpb), ht_i(:,:,jl)    , jpi, jpj, npb(1:nbpb) ) 
    500482         CALL tab_2d_1d( nbpb, ht_s_1d     (1:nbpb), ht_s(:,:,jl)    , jpi, jpj, npb(1:nbpb) ) 
    501           
     483         ! 
    502484         CALL tab_2d_1d( nbpb, t_su_1d     (1:nbpb), t_su(:,:,jl)    , jpi, jpj, npb(1:nbpb) ) 
    503485         CALL tab_2d_1d( nbpb, sm_i_1d     (1:nbpb), sm_i(:,:,jl)    , jpi, jpj, npb(1:nbpb) ) 
     
    511493            CALL tab_2d_1d( nbpb, s_i_1d(1:nbpb,jk), s_i(:,:,jk,jl)  , jpi, jpj, npb(1:nbpb) ) 
    512494         END DO 
    513           
     495         ! 
    514496         CALL tab_2d_1d( nbpb, qprec_ice_1d(1:nbpb), qprec_ice(:,:) , jpi, jpj, npb(1:nbpb) ) 
    515497         CALL tab_2d_1d( nbpb, qsr_ice_1d (1:nbpb), qsr_ice(:,:,jl) , jpi, jpj, npb(1:nbpb) ) 
     
    525507         CALL tab_2d_1d( nbpb, qlead_1d   (1:nbpb), qlead           , jpi, jpj, npb(1:nbpb) ) 
    526508         CALL tab_2d_1d( nbpb, fhld_1d    (1:nbpb), fhld            , jpi, jpj, npb(1:nbpb) ) 
    527           
     509         ! 
    528510         CALL tab_2d_1d( nbpb, wfx_snw_1d (1:nbpb), wfx_snw         , jpi, jpj, npb(1:nbpb) ) 
    529511         CALL tab_2d_1d( nbpb, wfx_sub_1d (1:nbpb), wfx_sub         , jpi, jpj, npb(1:nbpb) ) 
    530           
     512         ! 
    531513         CALL tab_2d_1d( nbpb, wfx_bog_1d (1:nbpb), wfx_bog         , jpi, jpj, npb(1:nbpb) ) 
    532514         CALL tab_2d_1d( nbpb, wfx_bom_1d (1:nbpb), wfx_bom         , jpi, jpj, npb(1:nbpb) ) 
     
    535517         CALL tab_2d_1d( nbpb, wfx_res_1d (1:nbpb), wfx_res         , jpi, jpj, npb(1:nbpb) ) 
    536518         CALL tab_2d_1d( nbpb, wfx_spr_1d (1:nbpb), wfx_spr         , jpi, jpj, npb(1:nbpb) ) 
    537           
     519         ! 
    538520         CALL tab_2d_1d( nbpb, sfx_bog_1d (1:nbpb), sfx_bog         , jpi, jpj, npb(1:nbpb) ) 
    539521         CALL tab_2d_1d( nbpb, sfx_bom_1d (1:nbpb), sfx_bom         , jpi, jpj, npb(1:nbpb) ) 
     
    542524         CALL tab_2d_1d( nbpb, sfx_bri_1d (1:nbpb), sfx_bri         , jpi, jpj, npb(1:nbpb) ) 
    543525         CALL tab_2d_1d( nbpb, sfx_res_1d (1:nbpb), sfx_res         , jpi, jpj, npb(1:nbpb) ) 
    544           
     526         ! 
    545527         CALL tab_2d_1d( nbpb, hfx_thd_1d (1:nbpb), hfx_thd         , jpi, jpj, npb(1:nbpb) ) 
    546528         CALL tab_2d_1d( nbpb, hfx_spr_1d (1:nbpb), hfx_spr         , jpi, jpj, npb(1:nbpb) ) 
     
    556538         CALL tab_2d_1d( nbpb, hfx_err_dif_1d (1:nbpb), hfx_err_dif , jpi, jpj, npb(1:nbpb) ) 
    557539         CALL tab_2d_1d( nbpb, hfx_err_rem_1d (1:nbpb), hfx_err_rem , jpi, jpj, npb(1:nbpb) ) 
    558  
    559       CASE( 2 ) 
    560  
     540         ! 
     541      CASE( 2 )            ! from 1D to 2D 
     542         ! 
    561543         CALL tab_1d_2d( nbpb, at_i          , npb, at_i_1d    (1:nbpb)   , jpi, jpj ) 
    562544         CALL tab_1d_2d( nbpb, ht_i(:,:,jl)  , npb, ht_i_1d    (1:nbpb)   , jpi, jpj ) 
     
    575557         END DO 
    576558         CALL tab_1d_2d( nbpb, qlead         , npb, qlead_1d  (1:nbpb)   , jpi, jpj ) 
    577           
     559         ! 
    578560         CALL tab_1d_2d( nbpb, wfx_snw       , npb, wfx_snw_1d(1:nbpb)   , jpi, jpj ) 
    579561         CALL tab_1d_2d( nbpb, wfx_sub       , npb, wfx_sub_1d(1:nbpb)   , jpi, jpj ) 
    580           
     562         ! 
    581563         CALL tab_1d_2d( nbpb, wfx_bog       , npb, wfx_bog_1d(1:nbpb)   , jpi, jpj ) 
    582564         CALL tab_1d_2d( nbpb, wfx_bom       , npb, wfx_bom_1d(1:nbpb)   , jpi, jpj ) 
     
    585567         CALL tab_1d_2d( nbpb, wfx_res       , npb, wfx_res_1d(1:nbpb)   , jpi, jpj ) 
    586568         CALL tab_1d_2d( nbpb, wfx_spr       , npb, wfx_spr_1d(1:nbpb)   , jpi, jpj ) 
    587           
     569         ! 
    588570         CALL tab_1d_2d( nbpb, sfx_bog       , npb, sfx_bog_1d(1:nbpb)   , jpi, jpj ) 
    589571         CALL tab_1d_2d( nbpb, sfx_bom       , npb, sfx_bom_1d(1:nbpb)   , jpi, jpj ) 
     
    592574         CALL tab_1d_2d( nbpb, sfx_res       , npb, sfx_res_1d(1:nbpb)   , jpi, jpj ) 
    593575         CALL tab_1d_2d( nbpb, sfx_bri       , npb, sfx_bri_1d(1:nbpb)   , jpi, jpj ) 
    594           
     576         ! 
    595577         CALL tab_1d_2d( nbpb, hfx_thd       , npb, hfx_thd_1d(1:nbpb)   , jpi, jpj ) 
    596578         CALL tab_1d_2d( nbpb, hfx_spr       , npb, hfx_spr_1d(1:nbpb)   , jpi, jpj ) 
     
    611593         !          
    612594      END SELECT 
    613  
     595      ! 
    614596   END SUBROUTINE lim_thd_1d2d 
    615597 
     
    628610      !!------------------------------------------------------------------- 
    629611      INTEGER  ::   ios                 ! Local integer output status for namelist read 
    630       NAMELIST/namicethd/ rn_hnewice, ln_frazil, rn_maxfrazb, rn_vfrazb, rn_Cfrazb,                       & 
    631          &                rn_himin, rn_betas, rn_kappa_i, nn_conv_dif, rn_terr_dif, nn_ice_thcon, & 
     612      !! 
     613      NAMELIST/namicethd/ rn_hnewice, ln_frazil, rn_maxfrazb, rn_vfrazb, rn_Cfrazb,                & 
     614         &                rn_himin, rn_betas, rn_kappa_i, nn_conv_dif, rn_terr_dif, nn_ice_thcon,  & 
    632615         &                nn_monocat, ln_it_qnsice 
    633616      !!------------------------------------------------------------------- 
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/NEMO/NST_SRC/agrif_opa_interp.F90

    r5845 r6004  
    2222   USE oce 
    2323   USE dom_oce       
    24    USE sol_oce 
     24   USE zdf_oce 
    2525   USE agrif_oce 
    2626   USE phycst 
     27   ! 
    2728   USE in_out_manager 
    2829   USE agrif_opa_sponge 
    2930   USE lib_mpp 
    3031   USE wrk_nemo 
    31    USE dynspg_oce 
    32    USE zdf_oce 
    3332  
    3433   IMPLICIT NONE 
    3534   PRIVATE 
    3635 
    37    INTEGER :: bdy_tinterp = 0 
    38  
    3936   PUBLIC   Agrif_tra, Agrif_dyn, Agrif_ssh, Agrif_dyn_ts, Agrif_ssh_ts, Agrif_dta_ts 
    40    PUBLIC   interpun, interpvn, interpun2d, interpvn2d  
     37   PUBLIC   interpun, interpvn 
    4138   PUBLIC   interptsn,  interpsshn 
    4239   PUBLIC   interpunb, interpvnb, interpub2b, interpvb2b 
     
    4643# endif 
    4744 
     45   INTEGER ::   bdy_tinterp = 0 
     46 
    4847#  include "vectopt_loop_substitute.h90" 
    4948   !!---------------------------------------------------------------------- 
    50    !! NEMO/NST 3.6 , NEMO Consortium (2010) 
     49   !! NEMO/NST 3.7 , NEMO Consortium (2015) 
    5150   !! $Id$ 
    5251   !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 
    5352   !!---------------------------------------------------------------------- 
    54  
    5553CONTAINS 
    5654 
     
    6159      ! 
    6260      IF( Agrif_Root() )   RETURN 
    63  
    64       Agrif_SpecialValue    = 0.e0 
     61      ! 
     62      Agrif_SpecialValue    = 0._wp 
    6563      Agrif_UseSpecialValue = .TRUE. 
    66  
     64      ! 
    6765      CALL Agrif_Bc_variable( tsn_id, procname=interptsn ) 
     66      ! 
    6867      Agrif_UseSpecialValue = .FALSE. 
    6968      ! 
     
    7776      INTEGER, INTENT(in) ::   kt 
    7877      ! 
    79       INTEGER :: ji,jj,jk, j1,j2, i1,i2 
    80       REAL(wp) :: timeref 
    81       REAL(wp) :: z2dt, znugdt 
    82       REAL(wp) :: zrhox, zrhoy 
    83       REAL(wp), POINTER, DIMENSION(:,:) :: spgv1, spgu1 
    84       !!----------------------------------------------------------------------   
    85  
     78      INTEGER ::   ji, jj, jk       ! dummy loop indices 
     79      INTEGER ::   j1, j2, i1, i2 
     80      REAL(wp), POINTER, DIMENSION(:,:) ::   zub, zvb 
     81      !!----------------------------------------------------------------------   
     82      ! 
    8683      IF( Agrif_Root() )   RETURN 
    87  
    88       CALL wrk_alloc( jpi, jpj, spgv1, spgu1 ) 
    89  
    90       Agrif_SpecialValue=0. 
     84      ! 
     85      CALL wrk_alloc( jpi,jpj,   zub, zvb ) 
     86      ! 
     87      Agrif_SpecialValue    = 0._wp 
    9188      Agrif_UseSpecialValue = ln_spc_dyn 
    92  
    93       CALL Agrif_Bc_variable(un_interp_id,procname=interpun) 
    94       CALL Agrif_Bc_variable(vn_interp_id,procname=interpvn) 
    95  
    96 #if defined key_dynspg_flt 
    97       CALL Agrif_Bc_variable(e1u_id,calledweight=1., procname=interpun2d) 
    98       CALL Agrif_Bc_variable(e2v_id,calledweight=1., procname=interpvn2d) 
    99 #endif 
    100  
     89      ! 
     90      CALL Agrif_Bc_variable( un_interp_id, procname=interpun ) 
     91      CALL Agrif_Bc_variable( vn_interp_id, procname=interpvn ) 
     92      ! 
    10193      Agrif_UseSpecialValue = .FALSE. 
    102  
    103       zrhox = Agrif_Rhox() 
    104       zrhoy = Agrif_Rhoy() 
    105  
    106       timeref = 1. 
    107       ! time step: leap-frog 
    108       z2dt = 2. * rdt 
    109       ! time step: Euler if restart from rest 
    110       IF( neuler == 0 .AND. kt == nit000 ) z2dt = rdt 
    111       ! coefficients 
    112       znugdt =  grav * z2dt     
    113  
     94      ! 
    11495      ! prevent smoothing in ghost cells 
    115       i1=1 
    116       i2=jpi 
    117       j1=1 
    118       j2=jpj 
    119       IF((nbondj == -1).OR.(nbondj == 2)) j1 = 3 
    120       IF((nbondj == +1).OR.(nbondj == 2)) j2 = nlcj-2 
    121       IF((nbondi == -1).OR.(nbondi == 2)) i1 = 3 
    122       IF((nbondi == +1).OR.(nbondi == 2)) i2 = nlci-2 
    123  
    124  
    125       IF((nbondi == -1).OR.(nbondi == 2)) THEN 
    126 #if defined key_dynspg_flt 
    127          DO jk=1,jpkm1 
     96      i1 =  1   ;   i2 = jpi 
     97      j1 =  1   ;   j2 = jpj 
     98      IF( nbondj == -1 .OR. nbondj == 2 )   j1 = 3 
     99      IF( nbondj == +1 .OR. nbondj == 2 )   j2 = nlcj-2 
     100      IF( nbondi == -1 .OR. nbondi == 2 )   i1 = 3 
     101      IF( nbondi == +1 .OR. nbondi == 2 )   i2 = nlci-2 
     102 
     103      IF( nbondi == -1 .OR. nbondi == 2 ) THEN 
     104         ! 
     105         ! Smoothing 
     106         ! --------- 
     107         IF( .NOT.ln_dynspg_ts ) THEN  ! Store transport 
     108            ua_b(2,:) = 0._wp 
     109            DO jk = 1, jpkm1 
     110               DO jj = 1, jpj 
     111                  ua_b(2,jj) = ua_b(2,jj) + e3u_a(2,jj,jk) * ua(2,jj,jk) 
     112               END DO 
     113            END DO 
     114            DO jj = 1, jpj 
     115               ua_b(2,jj) = ua_b(2,jj) * r1_hu_a(2,jj)             
     116            END DO 
     117         ENDIF 
     118         ! 
     119         DO jk=1,jpkm1                 ! Smooth 
    128120            DO jj=j1,j2 
    129                ua(2,jj,jk) = (ua(2,jj,jk) - z2dt * znugdt * laplacu(2,jj))*umask(2,jj,jk) 
    130             END DO 
    131          END DO 
    132  
    133          spgu(2,:)=0. 
     121               ua(2,jj,jk) = 0.25_wp*(ua(1,jj,jk)+2._wp*ua(2,jj,jk)+ua(3,jj,jk)) 
     122               ua(2,jj,jk) = ua(2,jj,jk) * umask(2,jj,jk) 
     123            END DO 
     124         END DO 
     125         ! 
     126         zub(2,:) = 0._wp              ! Correct transport 
     127         DO jk = 1, jpkm1 
     128            DO jj = 1, jpj 
     129               zub(2,jj) = zub(2,jj) + e3u_a(2,jj,jk) * ua(2,jj,jk) 
     130            END DO 
     131         END DO 
     132         DO jj=1,jpj 
     133            zub(2,jj) = zub(2,jj) * r1_hu_a(2,jj) 
     134         END DO 
    134135 
    135136         DO jk=1,jpkm1 
    136137            DO jj=1,jpj 
    137                spgu(2,jj)=spgu(2,jj)+e3u_n(2,jj,jk)*ua(2,jj,jk) 
    138             END DO 
    139          END DO 
    140  
    141          DO jj=1,jpj 
    142             IF (umask(2,jj,1).NE.0.) THEN 
    143                spgu(2,jj)=spgu(2,jj)*r1_hu_n(2,jj) 
    144             ENDIF 
    145          END DO 
    146 #else 
    147          spgu(2,:) = ua_b(2,:) 
    148 #endif 
    149  
    150          DO jk=1,jpkm1 
    151             DO jj=j1,j2 
    152                ua(2,jj,jk) = 0.25*(ua(1,jj,jk)+2.*ua(2,jj,jk)+ua(3,jj,jk)) 
    153                ua(2,jj,jk) = ua(2,jj,jk) * umask(2,jj,jk) 
    154             END DO 
    155          END DO 
    156  
    157          spgu1(2,:)=0. 
    158  
    159          DO jk=1,jpkm1 
     138               ua(2,jj,jk) = (ua(2,jj,jk)+ua_b(2,jj)-zub(2,jj))*umask(2,jj,jk) 
     139            END DO 
     140         END DO 
     141 
     142         ! Set tangential velocities to time splitting estimate 
     143         !----------------------------------------------------- 
     144         IF( ln_dynspg_ts ) THEN 
     145            zvb(2,:) = 0._wp 
     146            DO jk = 1, jpkm1 
     147               DO jj = 1, jpj 
     148                  zvb(2,jj) = zvb(2,jj) + e3v_a(2,jj,jk) * va(2,jj,jk) 
     149               END DO 
     150            END DO 
     151            DO jj = 1, jpj 
     152               zvb(2,jj) = zvb(2,jj) * r1_hv_a(2,jj) 
     153            END DO 
     154            DO jk = 1, jpkm1 
     155               DO jj = 1, jpj 
     156                  va(2,jj,jk) = (va(2,jj,jk)+va_b(2,jj)-zvb(2,jj)) * vmask(2,jj,jk) 
     157               END DO 
     158            END DO 
     159         ENDIF 
     160         ! 
     161         ! Mask domain edges: 
     162         !------------------- 
     163         DO jk = 1, jpkm1 
     164            DO jj = 1, jpj 
     165               ua(1,jj,jk) = 0._wp 
     166               va(1,jj,jk) = 0._wp 
     167            END DO 
     168         END DO          
     169         ! 
     170      ENDIF 
     171 
     172      IF( nbondi == 1 .OR. nbondi == 2 ) THEN 
     173 
     174         ! Smoothing 
     175         ! --------- 
     176         IF( .NOT.ln_dynspg_ts ) THEN  ! Store transport 
     177            ua_b(nlci-2,:) = 0._wp 
     178            DO jk=1,jpkm1 
     179               DO jj=1,jpj 
     180                  ua_b(nlci-2,jj) = ua_b(nlci-2,jj) + e3u_a(nlci-2,jj,jk) * ua(nlci-2,jj,jk) 
     181               END DO 
     182            END DO 
    160183            DO jj=1,jpj 
    161                spgu1(2,jj)=spgu1(2,jj)+e3u_n(2,jj,jk)*ua(2,jj,jk) 
    162             END DO 
    163          END DO 
    164  
    165          DO jj=1,jpj 
    166             IF (umask(2,jj,1).NE.0.) THEN 
    167                spgu1(2,jj)=spgu1(2,jj)*r1_hu_n(2,jj) 
    168             ENDIF 
    169          END DO 
    170  
    171          DO jk=1,jpkm1 
    172             DO jj=j1,j2 
    173                ua(2,jj,jk) = (ua(2,jj,jk)+spgu(2,jj)-spgu1(2,jj))*umask(2,jj,jk) 
    174             END DO 
    175          END DO 
    176  
    177 #if defined key_dynspg_ts 
     184               ua_b(nlci-2,jj) = ua_b(nlci-2,jj) * r1_hu_a(nlci-2,jj)             
     185            END DO 
     186         ENDIF 
     187 
     188         DO jk = 1, jpkm1              ! Smooth 
     189            DO jj = j1, j2 
     190               ua(nlci-2,jj,jk) = 0.25_wp * umask(nlci-2,jj,jk)      & 
     191                  &             * ( ua(nlci-3,jj,jk) + 2._wp*ua(nlci-2,jj,jk) + ua(nlci-1,jj,jk) ) 
     192            END DO 
     193         END DO 
     194 
     195         zub(nlci-2,:) = 0._wp        ! Correct transport 
     196         DO jk = 1, jpkm1 
     197            DO jj = 1, jpj 
     198               zub(nlci-2,jj) = zub(nlci-2,jj) + e3u_a(nlci-2,jj,jk) * ua(nlci-2,jj,jk) 
     199            END DO 
     200         END DO 
     201         DO jj = 1, jpj 
     202            zub(nlci-2,jj) = zub(nlci-2,jj) * r1_hu_a(nlci-2,jj) 
     203         END DO 
     204 
     205         DO jk = 1, jpkm1 
     206            DO jj = 1, jpj 
     207               ua(nlci-2,jj,jk) = ( ua(nlci-2,jj,jk) + ua_b(nlci-2,jj) - zub(nlci-2,jj) ) * umask(nlci-2,jj,jk) 
     208            END DO 
     209         END DO 
     210         ! 
    178211         ! Set tangential velocities to time splitting estimate 
    179          spgv1(2,:)=0. 
    180          DO jk=1,jpkm1 
     212         !----------------------------------------------------- 
     213         IF( ln_dynspg_ts ) THEN 
     214            zvb(nlci-1,:) = 0._wp 
     215            DO jk = 1, jpkm1 
     216               DO jj = 1, jpj 
     217                  zvb(nlci-1,jj) = zvb(nlci-1,jj) + e3v_a(nlci-1,jj,jk) * va(nlci-1,jj,jk) 
     218               END DO 
     219            END DO 
    181220            DO jj=1,jpj 
    182                spgv1(2,jj)=spgv1(2,jj)+e3v_a(2,jj,jk)*va(2,jj,jk) 
    183             END DO 
    184          END DO 
    185          DO jj=1,jpj 
    186             spgv1(2,jj)=spgv1(2,jj)*r1_hv_a(2,jj) 
    187          END DO 
    188          DO jk=1,jpkm1 
    189             DO jj=1,jpj 
    190                va(2,jj,jk) = (va(2,jj,jk)+va_b(2,jj)-spgv1(2,jj))*vmask(2,jj,jk) 
    191             END DO 
    192          END DO 
    193 #endif 
    194  
    195       ENDIF 
    196  
    197       IF((nbondi == 1).OR.(nbondi == 2)) THEN 
    198 #if defined key_dynspg_flt 
    199          DO jk=1,jpkm1 
    200             DO jj=j1,j2 
    201                ua(nlci-2,jj,jk) = (ua(nlci-2,jj,jk)- z2dt * znugdt * laplacu(nlci-2,jj))*umask(nlci-2,jj,jk) 
    202             END DO 
    203          END DO 
    204          spgu(nlci-2,:)=0. 
    205          DO jk=1,jpkm1 
    206             DO jj=1,jpj 
    207                spgu(nlci-2,jj)=spgu(nlci-2,jj)+e3u_n(nlci-2,jj,jk)*ua(nlci-2,jj,jk) 
    208             ENDDO 
    209          ENDDO 
    210          DO jj=1,jpj 
    211             IF (umask(nlci-2,jj,1).NE.0.) THEN 
    212                spgu(nlci-2,jj)=spgu(nlci-2,jj)*r1_hu_n(nlci-2,jj) 
    213             ENDIF 
    214          END DO 
    215 #else 
    216          spgu(nlci-2,:) = ua_b(nlci-2,:) 
    217 #endif 
    218          DO jk=1,jpkm1 
    219             DO jj=j1,j2 
    220                ua(nlci-2,jj,jk) = 0.25*(ua(nlci-3,jj,jk)+2.*ua(nlci-2,jj,jk)+ua(nlci-1,jj,jk)) 
    221  
    222                ua(nlci-2,jj,jk) = ua(nlci-2,jj,jk) * umask(nlci-2,jj,jk) 
    223  
    224             END DO 
    225          END DO 
    226          spgu1(nlci-2,:)=0. 
    227          DO jk=1,jpkm1 
    228             DO jj=1,jpj 
    229                spgu1(nlci-2,jj)=spgu1(nlci-2,jj)+e3u_n(nlci-2,jj,jk)*ua(nlci-2,jj,jk)*umask(nlci-2,jj,jk) 
    230             END DO 
    231          END DO 
    232          DO jj=1,jpj 
    233             IF (umask(nlci-2,jj,1).NE.0.) THEN 
    234                spgu1(nlci-2,jj)=spgu1(nlci-2,jj)*r1_hu_n(nlci-2,jj) 
    235             ENDIF 
    236          END DO 
    237          DO jk=1,jpkm1 
    238             DO jj=j1,j2 
    239                ua(nlci-2,jj,jk) = (ua(nlci-2,jj,jk)+spgu(nlci-2,jj)-spgu1(nlci-2,jj))*umask(nlci-2,jj,jk) 
    240             END DO 
    241          END DO 
    242  
    243 #if defined key_dynspg_ts 
    244          ! Set tangential velocities to time splitting estimate 
    245          spgv1(nlci-1,:)=0._wp 
    246          DO jk=1,jpkm1 
    247             DO jj=1,jpj 
    248                spgv1(nlci-1,jj)=spgv1(nlci-1,jj)+e3v_a(nlci-1,jj,jk)*va(nlci-1,jj,jk)*vmask(nlci-1,jj,jk) 
    249             END DO 
    250          END DO 
    251  
    252          DO jj=1,jpj 
    253             spgv1(nlci-1,jj)=spgv1(nlci-1,jj)*r1_hv_a(nlci-1,jj) 
    254          END DO 
    255  
    256          DO jk=1,jpkm1 
    257             DO jj=1,jpj 
    258                va(nlci-1,jj,jk) = (va(nlci-1,jj,jk)+va_b(nlci-1,jj)-spgv1(nlci-1,jj))*vmask(nlci-1,jj,jk) 
    259             END DO 
    260          END DO 
    261 #endif 
    262  
    263       ENDIF 
    264  
    265       IF((nbondj == -1).OR.(nbondj == 2)) THEN 
    266  
    267 #if defined key_dynspg_flt 
     221               zvb(nlci-1,jj) = zvb(nlci-1,jj) * r1_hv_a(nlci-1,jj) 
     222            END DO 
     223            DO jk = 1, jpkm1 
     224               DO jj = 1, jpj 
     225                  va(nlci-1,jj,jk) = ( va(nlci-1,jj,jk) + va_b(nlci-1,jj) - zvb(nlci-1,jj) ) * vmask(nlci-1,jj,jk) 
     226               END DO 
     227            END DO 
     228         ENDIF 
     229         ! 
     230         ! Mask domain edges: 
     231         !------------------- 
     232         DO jk = 1, jpkm1 
     233            DO jj = 1, jpj 
     234               ua(nlci-1,jj,jk) = 0._wp 
     235               va(nlci  ,jj,jk) = 0._wp 
     236            END DO 
     237         END DO  
     238         ! 
     239      ENDIF 
     240 
     241      IF( nbondj == -1 .OR. nbondj == 2 ) THEN 
     242 
     243         ! Smoothing 
     244         ! --------- 
     245         IF( .NOT.ln_dynspg_ts ) THEN  ! Store transport 
     246            va_b(:,2) = 0._wp 
     247            DO jk = 1, jpkm1 
     248               DO ji = 1, jpi 
     249                  va_b(ji,2) = va_b(ji,2) + e3v_a(ji,2,jk) * va(ji,2,jk) 
     250               END DO 
     251            END DO 
     252            DO ji=1,jpi 
     253               va_b(ji,2) = va_b(ji,2) * r1_hv_a(ji,2)             
     254            END DO 
     255         ENDIF 
     256         ! 
     257         DO jk = 1, jpkm1              ! Smooth 
     258            DO ji = i1, i2 
     259               va(ji,2,jk) = 0.25_wp * vmask(ji,2,jk)    & 
     260                  &        * ( va(ji,1,jk) + 2._wp*va(ji,2,jk) + va(ji,3,jk) ) 
     261            END DO 
     262         END DO 
     263         ! 
     264         zvb(:,2) = 0._wp              ! Correct transport 
    268265         DO jk=1,jpkm1 
    269266            DO ji=1,jpi 
    270                va(ji,2,jk) = (va(ji,2,jk) - z2dt * znugdt * laplacv(ji,2))*vmask(ji,2,jk) 
    271             END DO 
    272          END DO 
    273  
    274          spgv(:,2)=0. 
    275  
    276          DO jk=1,jpkm1 
    277             DO ji=1,jpi 
    278                spgv(ji,2)=spgv(ji,2)+e3v_n(ji,2,jk)*va(ji,2,jk) 
    279             END DO 
    280          END DO 
    281  
    282          DO ji=1,jpi 
    283             IF (vmask(ji,2,1).NE.0.) THEN 
    284                spgv(ji,2)=spgv(ji,2)* r1_hv_n(ji,2) 
    285             ENDIF 
    286          END DO 
    287 #else 
    288          spgv(:,2)=va_b(:,2) 
    289 #endif 
    290  
    291          DO jk=1,jpkm1 
    292             DO ji=i1,i2 
    293                va(ji,2,jk)=0.25*(va(ji,1,jk)+2.*va(ji,2,jk)+va(ji,3,jk)) 
    294                va(ji,2,jk)=va(ji,2,jk)*vmask(ji,2,jk) 
    295             END DO 
    296          END DO 
    297  
    298          spgv1(:,2)=0. 
    299  
    300          DO jk=1,jpkm1 
    301             DO ji=1,jpi 
    302                spgv1(ji,2)=spgv1(ji,2)+e3v_n(ji,2,jk)*va(ji,2,jk)*vmask(ji,2,jk) 
    303             END DO 
    304          END DO 
    305  
    306          DO ji=1,jpi 
    307             IF (vmask(ji,2,1).NE.0.) THEN 
    308                spgv1(ji,2)=spgv1(ji,2)*r1_hv_n(ji,2) 
    309             ENDIF 
    310          END DO 
    311  
    312          DO jk=1,jpkm1 
    313             DO ji=1,jpi 
    314                va(ji,2,jk) = (va(ji,2,jk)+spgv(ji,2)-spgv1(ji,2))*vmask(ji,2,jk) 
    315             END DO 
    316          END DO 
    317  
    318 #if defined key_dynspg_ts 
     267               zvb(ji,2) = zvb(ji,2) + e3v_a(ji,2,jk) * va(ji,2,jk) * vmask(ji,2,jk) 
     268            END DO 
     269         END DO 
     270         DO ji = 1, jpi 
     271            zvb(ji,2) = zvb(ji,2) * r1_hv_a(ji,2) 
     272         END DO 
     273         DO jk = 1, jpkm1 
     274            DO ji = 1, jpi 
     275               va(ji,2,jk) = ( va(ji,2,jk) + va_b(ji,2) - zvb(ji,2) ) * vmask(ji,2,jk) 
     276            END DO 
     277         END DO 
     278 
    319279         ! Set tangential velocities to time splitting estimate 
    320          spgu1(:,2)=0._wp 
    321          DO jk=1,jpkm1 
    322             DO ji=1,jpi 
    323                spgu1(ji,2)=spgu1(ji,2)+e3u_a(ji,2,jk)*ua(ji,2,jk)*umask(ji,2,jk) 
    324             END DO 
    325          END DO 
    326  
    327          DO ji=1,jpi 
    328             spgu1(ji,2)=spgu1(ji,2)*r1_hu_a(ji,2) 
    329          END DO 
    330  
    331          DO jk=1,jpkm1 
    332             DO ji=1,jpi 
    333                ua(ji,2,jk) = (ua(ji,2,jk)+ua_b(ji,2)-spgu1(ji,2))*umask(ji,2,jk) 
    334             END DO 
    335          END DO 
    336 #endif 
    337       ENDIF 
    338  
    339       IF((nbondj == 1).OR.(nbondj == 2)) THEN 
    340  
    341 #if defined key_dynspg_flt 
    342          DO jk=1,jpkm1 
    343             DO ji=1,jpi 
    344                va(ji,nlcj-2,jk) = (va(ji,nlcj-2,jk)-z2dt * znugdt * laplacv(ji,nlcj-2))*vmask(ji,nlcj-2,jk) 
    345             END DO 
    346          END DO 
    347  
    348  
    349          spgv(:,nlcj-2)=0. 
    350  
    351          DO jk=1,jpkm1 
    352             DO ji=1,jpi 
    353                spgv(ji,nlcj-2)=spgv(ji,nlcj-2)+e3v_n(ji,nlcj-2,jk)*va(ji,nlcj-2,jk) 
    354             END DO 
    355          END DO 
    356  
    357          DO ji=1,jpi 
    358             IF (vmask(ji,nlcj-2,1).NE.0.) THEN 
    359                spgv(ji,nlcj-2)=spgv(ji,nlcj-2)*r1_hv_n(ji,nlcj-2) 
    360             ENDIF 
    361          END DO 
    362  
    363 #else 
    364          spgv(:,nlcj-2)=va_b(:,nlcj-2) 
    365 #endif 
    366  
    367          DO jk=1,jpkm1 
    368             DO ji=i1,i2 
    369                va(ji,nlcj-2,jk)=0.25*(va(ji,nlcj-3,jk)+2.*va(ji,nlcj-2,jk)+va(ji,nlcj-1,jk)) 
    370                va(ji,nlcj-2,jk) = va(ji,nlcj-2,jk) * vmask(ji,nlcj-2,jk) 
    371             END DO 
    372          END DO 
    373  
    374          spgv1(:,nlcj-2)=0. 
    375  
    376          DO jk=1,jpkm1 
    377             DO ji=1,jpi 
    378                spgv1(ji,nlcj-2)=spgv1(ji,nlcj-2)+e3v_n(ji,nlcj-2,jk)*va(ji,nlcj-2,jk) 
    379             END DO 
    380          END DO 
    381  
    382          DO ji=1,jpi 
    383             IF (vmask(ji,nlcj-2,1).NE.0.) THEN 
    384                spgv1(ji,nlcj-2)=spgv1(ji,nlcj-2)*r1_hv_n(ji,nlcj-2) 
    385             ENDIF 
    386          END DO 
    387  
    388          DO jk=1,jpkm1 
    389             DO ji=1,jpi 
    390                va(ji,nlcj-2,jk) = (va(ji,nlcj-2,jk)+spgv(ji,nlcj-2)-spgv1(ji,nlcj-2))*vmask(ji,nlcj-2,jk) 
    391             END DO 
    392          END DO 
    393  
    394 #if defined key_dynspg_ts 
     280         !----------------------------------------------------- 
     281         IF( ln_dynspg_ts ) THEN 
     282            zub(:,2) = 0._wp 
     283            DO jk = 1, jpkm1 
     284               DO ji = 1, jpi 
     285                  zub(ji,2) = zub(ji,2) + e3u_a(ji,2,jk) * ua(ji,2,jk) * umask(ji,2,jk) 
     286               END DO 
     287            END DO 
     288            DO ji = 1, jpi 
     289               zub(ji,2) = zub(ji,2) * r1_hu_a(ji,2) 
     290            END DO 
     291 
     292            DO jk = 1, jpkm1 
     293               DO ji = 1, jpi 
     294                  ua(ji,2,jk) = ( ua(ji,2,jk) + ua_b(ji,2) - zub(ji,2) ) * umask(ji,2,jk) 
     295               END DO 
     296            END DO 
     297         ENDIF 
     298 
     299         ! Mask domain edges: 
     300         !------------------- 
     301         DO jk = 1, jpkm1 
     302            DO ji = 1, jpi 
     303               ua(ji,1,jk) = 0._wp 
     304               va(ji,1,jk) = 0._wp 
     305            END DO 
     306         END DO  
     307 
     308      ENDIF 
     309 
     310      IF( nbondj == 1 .OR. nbondj == 2 ) THEN 
     311         ! 
     312         ! Smoothing 
     313         ! --------- 
     314         IF( .NOT.ln_dynspg_ts ) THEN  ! Store transport 
     315            va_b(:,nlcj-2) = 0._wp 
     316            DO jk = 1, jpkm1 
     317               DO ji = 1, jpi 
     318                  va_b(ji,nlcj-2) = va_b(ji,nlcj-2) + e3v_a(ji,nlcj-2,jk) * va(ji,nlcj-2,jk) 
     319               END DO 
     320            END DO 
     321            DO ji = 1, jpi 
     322               va_b(ji,nlcj-2) = va_b(ji,nlcj-2) * r1_hv_a(ji,nlcj-2)             
     323            END DO 
     324         ENDIF 
     325         ! 
     326         DO jk = 1, jpkm1              ! Smooth 
     327            DO ji = i1, i2 
     328               va(ji,nlcj-2,jk) = 0.25_wp * vmask(ji,nlcj-2,jk)   & 
     329                  &             * ( va(ji,nlcj-3,jk) + 2._wp * va(ji,nlcj-2,jk) + va(ji,nlcj-1,jk) ) 
     330            END DO 
     331         END DO 
     332         ! 
     333         zvb(:,nlcj-2) = 0._wp         ! Correct transport 
     334         DO jk = 1, jpkm1 
     335            DO ji = 1, jpi 
     336               zvb(ji,nlcj-2) = zvb(ji,nlcj-2) + e3v_a(ji,nlcj-2,jk) * va(ji,nlcj-2,jk) * vmask(ji,nlcj-2,jk) 
     337            END DO 
     338         END DO 
     339         DO ji = 1, jpi 
     340            zvb(ji,nlcj-2) = zvb(ji,nlcj-2) * r1_hv_a(ji,nlcj-2) 
     341         END DO 
     342         DO jk = 1, jpkm1 
     343            DO ji = 1, jpi 
     344               va(ji,nlcj-2,jk) = ( va(ji,nlcj-2,jk) + va_b(ji,nlcj-2) - zvb(ji,nlcj-2) ) * vmask(ji,nlcj-2,jk) 
     345            END DO 
     346         END DO 
     347         ! 
    395348         ! Set tangential velocities to time splitting estimate 
    396          spgu1(:,nlcj-1)=0._wp 
    397          DO jk=1,jpkm1 
    398             DO ji=1,jpi 
    399                spgu1(ji,nlcj-1)=spgu1(ji,nlcj-1)+e3u_a(ji,nlcj-1,jk)*ua(ji,nlcj-1,jk) 
    400             END DO 
    401          END DO 
    402  
    403          DO ji=1,jpi 
    404             spgu1(ji,nlcj-1)=spgu1(ji,nlcj-1)*r1_hu_a(ji,nlcj-1) 
    405          END DO 
    406  
    407          DO jk=1,jpkm1 
    408             DO ji=1,jpi 
    409                ua(ji,nlcj-1,jk) = (ua(ji,nlcj-1,jk)+ua_b(ji,nlcj-1)-spgu1(ji,nlcj-1))*umask(ji,nlcj-1,jk) 
    410             END DO 
    411          END DO 
    412 #endif 
    413  
    414       ENDIF 
    415       ! 
    416       CALL wrk_dealloc( jpi, jpj, spgv1, spgu1 ) 
     349         !----------------------------------------------------- 
     350         IF( ln_dynspg_ts ) THEN 
     351            zub(:,nlcj-1) = 0._wp 
     352            DO jk = 1, jpkm1 
     353               DO ji = 1, jpi 
     354                  zub(ji,nlcj-1) = zub(ji,nlcj-1) + e3u_a(ji,nlcj-1,jk) * ua(ji,nlcj-1,jk) * umask(ji,nlcj-1,jk) 
     355               END DO 
     356            END DO 
     357            DO ji = 1, jpi 
     358               zub(ji,nlcj-1) = zub(ji,nlcj-1) * r1_hu_a(ji,nlcj-1) 
     359            END DO 
     360            ! 
     361            DO jk = 1, jpkm1 
     362               DO ji = 1, jpi 
     363                  ua(ji,nlcj-1,jk) = ( ua(ji,nlcj-1,jk) + ua_b(ji,nlcj-1) - zub(ji,nlcj-1) ) * umask(ji,nlcj-1,jk) 
     364               END DO 
     365            END DO 
     366         ENDIF 
     367         ! 
     368         ! Mask domain edges: 
     369         !------------------- 
     370         DO jk = 1, jpkm1 
     371            DO ji = 1, jpi 
     372               ua(ji,nlcj  ,jk) = 0._wp 
     373               va(ji,nlcj-1,jk) = 0._wp 
     374            END DO 
     375         END DO  
     376         ! 
     377      ENDIF 
     378      ! 
     379      CALL wrk_dealloc( jpi,jpj,   zub, zvb ) 
    417380      ! 
    418381   END SUBROUTINE Agrif_dyn 
     382 
    419383 
    420384   SUBROUTINE Agrif_dyn_ts( jn ) 
     
    427391      INTEGER :: ji, jj 
    428392      !!----------------------------------------------------------------------   
    429  
     393      ! 
    430394      IF( Agrif_Root() )   RETURN 
    431  
     395      ! 
    432396      IF((nbondi == -1).OR.(nbondi == 2)) THEN 
    433397         DO jj=1,jpj 
     
    440404         END DO 
    441405      ENDIF 
    442  
     406      ! 
    443407      IF((nbondi == 1).OR.(nbondi == 2)) THEN 
    444408         DO jj=1,jpj 
     
    451415         END DO 
    452416      ENDIF 
    453  
     417      ! 
    454418      IF((nbondj == -1).OR.(nbondj == 2)) THEN 
    455419         DO ji=1,jpi 
     
    462426         END DO 
    463427      ENDIF 
    464  
     428      ! 
    465429      IF((nbondj == 1).OR.(nbondj == 2)) THEN 
    466430         DO ji=1,jpi 
     
    476440   END SUBROUTINE Agrif_dyn_ts 
    477441 
     442 
    478443   SUBROUTINE Agrif_dta_ts( kt ) 
    479444      !!---------------------------------------------------------------------- 
     
    487452      REAL(wp) :: zrhot, zt 
    488453      !!----------------------------------------------------------------------   
    489  
     454      ! 
    490455      IF( Agrif_Root() )   RETURN 
    491  
    492       ll_int_cons = ln_bt_fw ! Assume conservative temporal integration in 
    493       ! the forward case only 
    494  
     456      ! 
     457      ll_int_cons = ln_bt_fw ! Assume conservative temporal integration in the forward case only 
     458      ! 
    495459      zrhot = Agrif_rhot() 
    496  
     460      ! 
    497461      ! "Central" time index for interpolation: 
    498       IF (ln_bt_fw) THEN 
    499          zt = REAL(Agrif_NbStepint()+0.5_wp,wp) / zrhot 
     462      IF( ln_bt_fw ) THEN 
     463         zt = REAL( Agrif_NbStepint()+0.5_wp, wp ) / zrhot 
    500464      ELSE 
    501          zt = REAL(Agrif_NbStepint(),wp) / zrhot 
    502       ENDIF 
    503  
     465         zt = REAL( Agrif_NbStepint()       , wp ) / zrhot 
     466      ENDIF 
     467      ! 
    504468      ! Linear interpolation of sea level 
    505       Agrif_SpecialValue    = 0.e0 
     469      Agrif_SpecialValue    = 0._wp 
    506470      Agrif_UseSpecialValue = .TRUE. 
    507       CALL Agrif_Bc_variable(sshn_id,calledweight=zt, procname=interpsshn ) 
     471      CALL Agrif_Bc_variable( sshn_id, calledweight=zt, procname=interpsshn ) 
    508472      Agrif_UseSpecialValue = .FALSE. 
    509  
     473      ! 
    510474      ! Interpolate barotropic fluxes 
    511475      Agrif_SpecialValue=0. 
    512476      Agrif_UseSpecialValue = ln_spc_dyn 
    513  
    514       IF (ll_int_cons) THEN ! Conservative interpolation 
     477      ! 
     478      IF( ll_int_cons ) THEN ! Conservative interpolation 
    515479         ! orders matters here !!!!!! 
    516          CALL Agrif_Bc_variable(ub2b_interp_id,calledweight=1._wp, procname=interpub2b) ! Time integrated 
    517          CALL Agrif_Bc_variable(vb2b_interp_id,calledweight=1._wp, procname=interpvb2b) 
     480         CALL Agrif_Bc_variable( ub2b_interp_id, calledweight=1._wp, procname=interpub2b ) ! Time integrated 
     481         CALL Agrif_Bc_variable( vb2b_interp_id, calledweight=1._wp, procname=interpvb2b ) 
    518482         bdy_tinterp = 1 
    519          CALL Agrif_Bc_variable(unb_id ,calledweight=1._wp, procname=interpunb) ! After 
    520          CALL Agrif_Bc_variable(vnb_id ,calledweight=1._wp, procname=interpvnb) 
     483         CALL Agrif_Bc_variable( unb_id        , calledweight=1._wp, procname=interpunb  ) ! After 
     484         CALL Agrif_Bc_variable( vnb_id        , calledweight=1._wp, procname=interpvnb  ) 
    521485         bdy_tinterp = 2 
    522          CALL Agrif_Bc_variable(unb_id ,calledweight=0._wp, procname=interpunb) ! Before 
    523          CALL Agrif_Bc_variable(vnb_id ,calledweight=0._wp, procname=interpvnb)          
     486         CALL Agrif_Bc_variable( unb_id        , calledweight=0._wp, procname=interpunb  ) ! Before 
     487         CALL Agrif_Bc_variable( vnb_id        , calledweight=0._wp, procname=interpvnb  )          
    524488      ELSE ! Linear interpolation 
    525489         bdy_tinterp = 0 
    526          ubdy_w(:) = 0.e0 ; vbdy_w(:) = 0.e0  
    527          ubdy_e(:) = 0.e0 ; vbdy_e(:) = 0.e0  
    528          ubdy_n(:) = 0.e0 ; vbdy_n(:) = 0.e0  
    529          ubdy_s(:) = 0.e0 ; vbdy_s(:) = 0.e0  
    530          CALL Agrif_Bc_variable(unb_id,calledweight=zt, procname=interpunb) 
    531          CALL Agrif_Bc_variable(vnb_id,calledweight=zt, procname=interpvnb) 
     490         ubdy_w(:) = 0._wp   ;   vbdy_w(:) = 0._wp  
     491         ubdy_e(:) = 0._wp   ;   vbdy_e(:) = 0._wp  
     492         ubdy_n(:) = 0._wp   ;   vbdy_n(:) = 0._wp  
     493         ubdy_s(:) = 0._wp   ;   vbdy_s(:) = 0._wp 
     494         CALL Agrif_Bc_variable( unb_id, calledweight=zt, procname=interpunb ) 
     495         CALL Agrif_Bc_variable( vnb_id, calledweight=zt, procname=interpvnb ) 
    532496      ENDIF 
    533497      Agrif_UseSpecialValue = .FALSE. 
     
    535499   END SUBROUTINE Agrif_dta_ts 
    536500 
     501 
    537502   SUBROUTINE Agrif_ssh( kt ) 
    538503      !!---------------------------------------------------------------------- 
     
    542507      !! 
    543508      !!----------------------------------------------------------------------   
    544  
     509      ! 
    545510      IF( Agrif_Root() )   RETURN 
    546  
     511      ! 
    547512      IF((nbondi == -1).OR.(nbondi == 2)) THEN 
    548513         ssha(2,:)=ssha(3,:) 
    549514         sshn(2,:)=sshn(3,:) 
    550515      ENDIF 
    551  
     516      ! 
    552517      IF((nbondi == 1).OR.(nbondi == 2)) THEN 
    553518         ssha(nlci-1,:)=ssha(nlci-2,:) 
    554519         sshn(nlci-1,:)=sshn(nlci-2,:) 
    555520      ENDIF 
    556  
     521      ! 
    557522      IF((nbondj == -1).OR.(nbondj == 2)) THEN 
    558523         ssha(:,2)=ssha(:,3) 
    559524         sshn(:,2)=sshn(:,3) 
    560525      ENDIF 
    561  
     526      ! 
    562527      IF((nbondj == 1).OR.(nbondj == 2)) THEN 
    563528         ssha(:,nlcj-1)=ssha(:,nlcj-2) 
    564529         sshn(:,nlcj-1)=sshn(:,nlcj-2) 
    565530      ENDIF 
    566  
     531      ! 
    567532   END SUBROUTINE Agrif_ssh 
     533 
    568534 
    569535   SUBROUTINE Agrif_ssh_ts( jn ) 
     
    575541      INTEGER :: ji,jj 
    576542      !!----------------------------------------------------------------------   
    577  
     543      ! 
    578544      IF((nbondi == -1).OR.(nbondi == 2)) THEN 
    579          DO jj=1,jpj 
     545         DO jj = 1, jpj 
    580546            ssha_e(2,jj) = hbdy_w(jj) 
    581547         END DO 
    582548      ENDIF 
    583  
     549      ! 
    584550      IF((nbondi == 1).OR.(nbondi == 2)) THEN 
    585          DO jj=1,jpj 
     551         DO jj = 1, jpj 
    586552            ssha_e(nlci-1,jj) = hbdy_e(jj) 
    587553         END DO 
    588554      ENDIF 
    589  
     555      ! 
    590556      IF((nbondj == -1).OR.(nbondj == 2)) THEN 
    591          DO ji=1,jpi 
     557         DO ji = 1, jpi 
    592558            ssha_e(ji,2) = hbdy_s(ji) 
    593559         END DO 
    594560      ENDIF 
    595  
     561      ! 
    596562      IF((nbondj == 1).OR.(nbondj == 2)) THEN 
    597          DO ji=1,jpi 
     563         DO ji = 1, jpi 
    598564            ssha_e(ji,nlcj-1) = hbdy_n(ji) 
    599565         END DO 
    600566      ENDIF 
    601  
     567      ! 
    602568   END SUBROUTINE Agrif_ssh_ts 
    603569 
    604570# if defined key_zdftke 
     571 
    605572   SUBROUTINE Agrif_tke 
    606573      !!---------------------------------------------------------------------- 
     
    608575      !!----------------------------------------------------------------------   
    609576      REAL(wp) ::   zalpha 
     577      !!----------------------------------------------------------------------   
    610578      ! 
    611579      zalpha = REAL( Agrif_NbStepint() + Agrif_IRhot() - 1, wp ) / REAL( Agrif_IRhot(), wp ) 
    612580      IF( zalpha > 1. )   zalpha = 1. 
    613        
     581      ! 
    614582      Agrif_SpecialValue    = 0.e0 
    615583      Agrif_UseSpecialValue = .TRUE. 
    616        
     584      ! 
    617585      CALL Agrif_Bc_variable(avm_id ,calledweight=zalpha, procname=interpavm)        
    618                
     586      ! 
    619587      Agrif_UseSpecialValue = .FALSE. 
    620588      ! 
    621589   END SUBROUTINE Agrif_tke 
     590    
    622591# endif 
    623592 
    624    SUBROUTINE interptsn(ptab,i1,i2,j1,j2,k1,k2,n1,n2,before,nb,ndir) 
    625       !!--------------------------------------------- 
     593   SUBROUTINE interptsn( ptab, i1, i2, j1, j2, k1, k2, n1, n2, before, nb, ndir ) 
     594      !!---------------------------------------------------------------------- 
    626595      !!   *** ROUTINE interptsn *** 
    627       !!--------------------------------------------- 
    628       REAL(wp), DIMENSION(i1:i2,j1:j2,k1:k2,n1:n2), INTENT(inout) :: ptab 
    629       INTEGER, INTENT(in) :: i1,i2,j1,j2,k1,k2,n1,n2 
    630       LOGICAL, INTENT(in) :: before 
    631       INTEGER, INTENT(in) :: nb , ndir 
     596      !!---------------------------------------------------------------------- 
     597      REAL(wp), DIMENSION(i1:i2,j1:j2,k1:k2,n1:n2), INTENT(inout) ::   ptab 
     598      INTEGER                                     , INTENT(in   ) ::   i1, i2, j1, j2, k1, k2, n1, n2 
     599      LOGICAL                                     , INTENT(in   ) ::  before 
     600      INTEGER                                     , INTENT(in   ) ::  nb , ndir 
    632601      ! 
    633602      INTEGER  ::   ji, jj, jk, jn   ! dummy loop indices 
    634       INTEGER :: imin, imax, jmin, jmax 
     603      INTEGER  ::  imin, imax, jmin, jmax 
    635604      REAL(wp) ::   zrhox , zalpha1, zalpha2, zalpha3 
    636605      REAL(wp) ::   zalpha4, zalpha5, zalpha6, zalpha7 
    637       LOGICAL :: western_side, eastern_side,northern_side,southern_side 
    638  
     606      LOGICAL  ::   western_side, eastern_side,northern_side,southern_side 
     607      !!---------------------------------------------------------------------- 
     608      ! 
    639609      IF (before) THEN          
    640610         ptab(i1:i2,j1:j2,k1:k2,n1:n2) = tsn(i1:i2,j1:j2,k1:k2,n1:n2) 
     
    669639         IF((nbondi == +1).OR.(nbondi == 2)) imax = nlci-2         
    670640         ! 
    671          IF( eastern_side) THEN 
     641         IF( eastern_side ) THEN 
    672642            DO jn = 1, jpts 
    673643               tsa(nlci,j1:j2,k1:k2,jn) = zalpha1 * ptab(nlci,j1:j2,k1:k2,jn) + zalpha2 * ptab(nlci-1,j1:j2,k1:k2,jn) 
    674644               DO jk = 1, jpkm1 
    675645                  DO jj = jmin,jmax 
    676                      IF( umask(nlci-2,jj,jk) == 0.e0 ) THEN 
     646                     IF( umask(nlci-2,jj,jk) == 0._wp ) THEN 
    677647                        tsa(nlci-1,jj,jk,jn) = tsa(nlci,jj,jk,jn) * tmask(nlci-1,jj,jk) 
    678648                     ELSE 
    679649                        tsa(nlci-1,jj,jk,jn)=(zalpha4*tsa(nlci,jj,jk,jn)+zalpha3*tsa(nlci-2,jj,jk,jn))*tmask(nlci-1,jj,jk) 
    680                         IF( un(nlci-2,jj,jk) > 0.e0 ) THEN 
     650                        IF( un(nlci-2,jj,jk) > 0._wp ) THEN 
    681651                           tsa(nlci-1,jj,jk,jn)=( zalpha6*tsa(nlci-2,jj,jk,jn)+zalpha5*tsa(nlci,jj,jk,jn) &  
    682652                                 + zalpha7*tsa(nlci-3,jj,jk,jn) ) * tmask(nlci-1,jj,jk) 
     
    685655                  END DO 
    686656               END DO 
    687             ENDDO 
     657               tsa(nlci,j1:j2,k1:k2,jn) = 0._wp 
     658            END DO 
    688659         ENDIF 
    689660         !  
     
    693664               DO jk = 1, jpkm1 
    694665                  DO ji = imin,imax 
    695                      IF( vmask(ji,nlcj-2,jk) == 0.e0 ) THEN 
     666                     IF( vmask(ji,nlcj-2,jk) == 0._wp ) THEN 
    696667                        tsa(ji,nlcj-1,jk,jn) = tsa(ji,nlcj,jk,jn) * tmask(ji,nlcj-1,jk) 
    697668                     ELSE 
    698669                        tsa(ji,nlcj-1,jk,jn)=(zalpha4*tsa(ji,nlcj,jk,jn)+zalpha3*tsa(ji,nlcj-2,jk,jn))*tmask(ji,nlcj-1,jk)         
    699                         IF (vn(ji,nlcj-2,jk) > 0.e0 ) THEN 
     670                        IF (vn(ji,nlcj-2,jk) > 0._wp ) THEN 
    700671                           tsa(ji,nlcj-1,jk,jn)=( zalpha6*tsa(ji,nlcj-2,jk,jn)+zalpha5*tsa(ji,nlcj,jk,jn)  & 
    701672                                 + zalpha7*tsa(ji,nlcj-3,jk,jn) ) * tmask(ji,nlcj-1,jk) 
     
    704675                  END DO 
    705676               END DO 
    706             ENDDO 
    707          ENDIF 
    708          ! 
    709          IF( western_side) THEN             
     677               tsa(i1:i2,nlcj,k1:k2,jn) = 0._wp 
     678            END DO 
     679         ENDIF 
     680         ! 
     681         IF( western_side ) THEN             
    710682            DO jn = 1, jpts 
    711683               tsa(1,j1:j2,k1:k2,jn) = zalpha1 * ptab(1,j1:j2,k1:k2,jn) + zalpha2 * ptab(2,j1:j2,k1:k2,jn) 
    712684               DO jk = 1, jpkm1 
    713685                  DO jj = jmin,jmax 
    714                      IF( umask(2,jj,jk) == 0.e0 ) THEN 
     686                     IF( umask(2,jj,jk) == 0._wp ) THEN 
    715687                        tsa(2,jj,jk,jn) = tsa(1,jj,jk,jn) * tmask(2,jj,jk) 
    716688                     ELSE 
    717689                        tsa(2,jj,jk,jn)=(zalpha4*tsa(1,jj,jk,jn)+zalpha3*tsa(3,jj,jk,jn))*tmask(2,jj,jk)         
    718                         IF( un(2,jj,jk) < 0.e0 ) THEN 
     690                        IF( un(2,jj,jk) < 0._wp ) THEN 
    719691                           tsa(2,jj,jk,jn)=(zalpha6*tsa(3,jj,jk,jn)+zalpha5*tsa(1,jj,jk,jn)+zalpha7*tsa(4,jj,jk,jn))*tmask(2,jj,jk) 
    720692                        ENDIF 
     
    722694                  END DO 
    723695               END DO 
     696               tsa(1,j1:j2,k1:k2,jn) = 0._wp 
    724697            END DO 
    725698         ENDIF 
     
    728701            DO jn = 1, jpts 
    729702               tsa(i1:i2,1,k1:k2,jn) = zalpha1 * ptab(i1:i2,1,k1:k2,jn) + zalpha2 * ptab(i1:i2,2,k1:k2,jn) 
    730                DO jk=1,jpk       
     703               DO jk = 1, jpk       
    731704                  DO ji=imin,imax 
    732                      IF( vmask(ji,2,jk) == 0.e0 ) THEN 
     705                     IF( vmask(ji,2,jk) == 0._wp ) THEN 
    733706                        tsa(ji,2,jk,jn)=tsa(ji,1,jk,jn) * tmask(ji,2,jk) 
    734707                     ELSE 
    735708                        tsa(ji,2,jk,jn)=(zalpha4*tsa(ji,1,jk,jn)+zalpha3*tsa(ji,3,jk,jn))*tmask(ji,2,jk) 
    736                         IF( vn(ji,2,jk) < 0.e0 ) THEN 
     709                        IF( vn(ji,2,jk) < 0._wp ) THEN 
    737710                           tsa(ji,2,jk,jn)=(zalpha6*tsa(ji,3,jk,jn)+zalpha5*tsa(ji,1,jk,jn)+zalpha7*tsa(ji,4,jk,jn))*tmask(ji,2,jk) 
    738711                        ENDIF 
     
    740713                  END DO 
    741714               END DO 
    742             ENDDO 
     715               tsa(i1:i2,1,k1:k2,jn) = 0._wp 
     716            END DO 
    743717         ENDIF 
    744718         ! 
     
    766740   END SUBROUTINE interptsn 
    767741 
    768    SUBROUTINE interpsshn(ptab,i1,i2,j1,j2,before,nb,ndir) 
     742 
     743   SUBROUTINE interpsshn( ptab, i1, i2, j1, j2, before, nb, ndir ) 
    769744      !!---------------------------------------------------------------------- 
    770745      !!                  ***  ROUTINE interpsshn  *** 
    771746      !!----------------------------------------------------------------------   
    772       INTEGER, INTENT(in) :: i1,i2,j1,j2 
    773       REAL(wp), DIMENSION(i1:i2,j1:j2), INTENT(inout) :: ptab 
    774       LOGICAL, INTENT(in) :: before 
    775       INTEGER, INTENT(in) :: nb , ndir 
     747      INTEGER                         , INTENT(in   ) ::   i1, i2, j1, j2 
     748      REAL(wp), DIMENSION(i1:i2,j1:j2), INTENT(inout) ::   ptab 
     749      LOGICAL                         , INTENT(in   ) ::   before 
     750      INTEGER                         , INTENT(in   ) ::   nb , ndir 
     751      ! 
    776752      LOGICAL :: western_side, eastern_side,northern_side,southern_side 
    777753      !!----------------------------------------------------------------------   
     
    792768   END SUBROUTINE interpsshn 
    793769 
    794    SUBROUTINE interpun(ptab,i1,i2,j1,j2,k1,k2, before) 
    795       !!--------------------------------------------- 
     770 
     771   SUBROUTINE interpun( ptab, i1, i2, j1, j2, k1, k2, before ) 
     772      !!---------------------------------------------------------------------- 
    796773      !!   *** ROUTINE interpun *** 
    797       !!---------------------------------------------     
    798       !! 
    799       INTEGER, INTENT(in) :: i1,i2,j1,j2,k1,k2 
    800       REAL(wp), DIMENSION(i1:i2,j1:j2,k1:k2), INTENT(inout) :: ptab 
    801       LOGICAL, INTENT(in) :: before 
    802       !! 
    803       INTEGER :: ji,jj,jk 
    804       REAL(wp) :: zrhoy  
    805       !!---------------------------------------------     
    806       ! 
    807       IF (before) THEN  
    808          DO jk=1,jpk 
    809             DO jj=j1,j2 
    810                DO ji=i1,i2 
    811                   ptab(ji,jj,jk) = e2u(ji,jj) * un(ji,jj,jk) 
    812                   ptab(ji,jj,jk) = ptab(ji,jj,jk) * e3u_n(ji,jj,jk) 
    813                END DO 
    814             END DO 
     774      !!---------------------------------------------------------------------- 
     775      INTEGER                               , INTENT(in   ) ::   i1, i2, j1, j2, k1, k2 
     776      REAL(wp), DIMENSION(i1:i2,j1:j2,k1:k2), INTENT(inout) ::   ptab 
     777      LOGICAL                               , INTENT(in   ) ::   before 
     778      ! 
     779      INTEGER  ::   ji, jj, jk 
     780      REAL(wp) ::   zrhoy   
     781      !!---------------------------------------------------------------------- 
     782      ! 
     783      IF( before ) THEN  
     784         DO jk = k1, jpk 
     785            ptab(i1:i2,j1:j2,jk) = e2u(i1:i2,j1:j2) * e3u_n(i1:i2,j1:j2,jk) * un(i1:i2,j1:j2,jk) 
    815786         END DO 
    816787      ELSE 
    817788         zrhoy = Agrif_Rhoy() 
    818          DO jk=1,jpkm1 
     789         DO jk = 1, jpkm1 
    819790            DO jj=j1,j2 
    820                ua(i1:i2,jj,jk) = (ptab(i1:i2,jj,jk)/(zrhoy*e2u(i1:i2,jj))) 
    821                ua(i1:i2,jj,jk) = ua(i1:i2,jj,jk) / e3u_n(i1:i2,jj,jk) 
     791               ua(i1:i2,jj,jk) = ptab(i1:i2,jj,jk) / ( zrhoy * e2u(i1:i2,jj) * e3u_n(i1:i2,jj,jk) ) 
    822792            END DO 
    823793         END DO 
     
    827797 
    828798 
    829    SUBROUTINE interpun2d(ptab,i1,i2,j1,j2,before) 
    830       !!--------------------------------------------- 
    831       !!   *** ROUTINE interpun *** 
    832       !!---------------------------------------------     
    833       ! 
    834       INTEGER, INTENT(in) :: i1,i2,j1,j2 
    835       REAL(wp), DIMENSION(i1:i2,j1:j2), INTENT(inout) :: ptab 
    836       LOGICAL, INTENT(in) :: before 
    837       ! 
    838       INTEGER :: ji,jj 
    839       REAL(wp) :: ztref 
    840       REAL(wp) :: zrhoy  
    841       !!---------------------------------------------     
    842       ! 
    843       ztref = 1. 
    844  
    845       IF (before) THEN  
    846          DO jj=j1,j2 
    847             DO ji=i1,MIN(i2,nlci-1) 
    848                ptab(ji,jj) = e2u(ji,jj) * ((gcx(ji+1,jj) - gcx(ji,jj))/e1u(ji,jj))  
    849             END DO 
    850          END DO 
    851       ELSE 
    852          zrhoy = Agrif_Rhoy() 
    853          DO jj=j1,j2 
    854             laplacu(i1:i2,jj) = ztref * (ptab(i1:i2,jj)/(zrhoy*e2u(i1:i2,jj))) !*umask(i1:i2,jj,1) 
    855          END DO 
    856       ENDIF 
    857       !  
    858    END SUBROUTINE interpun2d 
    859  
    860  
    861    SUBROUTINE interpvn(ptab,i1,i2,j1,j2,k1,k2, before) 
    862       !!--------------------------------------------- 
     799   SUBROUTINE interpvn( ptab, i1, i2, j1, j2, k1, k2, before ) 
     800      !!---------------------------------------------------------------------- 
    863801      !!   *** ROUTINE interpvn *** 
    864       !!---------------------------------------------     
    865       ! 
    866       INTEGER, INTENT(in) :: i1,i2,j1,j2,k1,k2 
    867       REAL(wp), DIMENSION(i1:i2,j1:j2,k1:k2), INTENT(inout) :: ptab 
    868       LOGICAL, INTENT(in) :: before 
    869       ! 
    870       INTEGER :: ji,jj,jk 
    871       REAL(wp) :: zrhox  
    872       !!---------------------------------------------     
     802      !!---------------------------------------------------------------------- 
     803      INTEGER                               , INTENT(in   ) ::   i1, i2, j1, j2, k1, k2 
     804      REAL(wp), DIMENSION(i1:i2,j1:j2,k1:k2), INTENT(inout) ::   ptab 
     805      LOGICAL                               , INTENT(in   ) ::   before 
     806      ! 
     807      INTEGER  ::   ji, jj, jk 
     808      REAL(wp) ::   zrhox   
     809      !!---------------------------------------------------------------------- 
    873810      !       
    874       IF (before) THEN           
    875          !interpv entre 1 et k2 et interpv2d en jpkp1 
    876          DO jk=k1,jpk 
    877             DO jj=j1,j2 
    878                DO ji=i1,i2 
    879                   ptab(ji,jj,jk) = e1v(ji,jj) * vn(ji,jj,jk) 
    880                   ptab(ji,jj,jk) = ptab(ji,jj,jk) * e3v_n(ji,jj,jk) 
    881                END DO 
    882             END DO 
     811      IF( before ) THEN       !interpv entre 1 et k2 et interpv2d en jpkp1 
     812         DO jk = k1, jpk 
     813            ptab(i1:i2,j1:j2,jk) = e1v(i1:i2,j1:j2) * e3v_n(i1:i2,j1:j2,jk) * vn(i1:i2,j1:j2,jk) 
    883814         END DO 
    884815      ELSE           
    885816         zrhox= Agrif_Rhox() 
    886          DO jk=1,jpkm1 
    887             DO jj=j1,j2 
    888                va(i1:i2,jj,jk) = (ptab(i1:i2,jj,jk)/(zrhox*e1v(i1:i2,jj))) 
    889                va(i1:i2,jj,jk) = va(i1:i2,jj,jk) / e3v_n(i1:i2,jj,jk) 
    890             END DO 
     817         DO jk = 1, jpkm1 
     818            va(i1:i2,j1:j2,jk) = ptab(i1:i2,j1:j2,jk) / ( zrhox * e1v(i1:i2,j1:j2) * e3v_n(i1:i2,j1:j2,jk) ) 
    891819         END DO 
    892820      ENDIF 
    893821      !         
    894822   END SUBROUTINE interpvn 
    895  
    896    SUBROUTINE interpvn2d(ptab,i1,i2,j1,j2,before) 
    897       !!--------------------------------------------- 
    898       !!   *** ROUTINE interpvn *** 
    899       !!---------------------------------------------     
    900       ! 
    901       INTEGER, INTENT(in) :: i1,i2,j1,j2 
    902       REAL(wp), DIMENSION(i1:i2,j1:j2), INTENT(inout) :: ptab 
    903       LOGICAL, INTENT(in) :: before 
    904       ! 
    905       INTEGER :: ji,jj 
    906       REAL(wp) :: zrhox  
    907       REAL(wp) :: ztref 
    908       !!---------------------------------------------     
    909       !  
    910       ztref = 1.     
    911       IF (before) THEN  
    912          !interpv entre 1 et k2 et interpv2d en jpkp1 
    913          DO jj=j1,MIN(j2,nlcj-1) 
    914             DO ji=i1,i2 
    915                ptab(ji,jj) = e1v(ji,jj) * ((gcx(ji,jj+1) - gcx(ji,jj))/e2v(ji,jj)) * vmask(ji,jj,1) 
    916             END DO 
    917          END DO 
    918       ELSE            
    919          zrhox = Agrif_Rhox() 
    920          DO ji=i1,i2 
    921             laplacv(ji,j1:j2) = ztref * (ptab(ji,j1:j2)/(zrhox*e1v(ji,j1:j2))) 
    922          END DO 
    923       ENDIF 
    924       !       
    925    END SUBROUTINE interpvn2d 
    926  
    927    SUBROUTINE interpunb(ptab,i1,i2,j1,j2,before,nb,ndir) 
     823    
     824 
     825   SUBROUTINE interpunb( ptab, i1, i2, j1, j2, before, nb, ndir ) 
    928826      !!---------------------------------------------------------------------- 
    929827      !!                  ***  ROUTINE interpunb  *** 
    930828      !!----------------------------------------------------------------------   
    931       INTEGER, INTENT(in) :: i1,i2,j1,j2 
    932       REAL(wp), DIMENSION(i1:i2,j1:j2), INTENT(inout) :: ptab 
    933       LOGICAL, INTENT(in) :: before 
    934       INTEGER, INTENT(in) :: nb , ndir 
    935       !! 
    936       INTEGER :: ji,jj 
    937       REAL(wp) :: zrhoy, zrhot, zt0, zt1, ztcoeff 
    938       LOGICAL :: western_side, eastern_side,northern_side,southern_side 
    939       !!----------------------------------------------------------------------   
    940       ! 
    941       IF (before) THEN  
    942          DO jj=j1,j2 
    943             DO ji=i1,i2 
    944                ptab(ji,jj) = un_b(ji,jj) * e2u(ji,jj) * hu_n(ji,jj)  
    945             END DO 
    946          END DO 
     829      INTEGER                         , INTENT(in   ) ::   i1, i2, j1, j2 
     830      REAL(wp), DIMENSION(i1:i2,j1:j2), INTENT(inout) ::   ptab 
     831      LOGICAL                         , INTENT(in   ) ::   before 
     832      INTEGER                         , INTENT(in   ) ::   nb , ndir 
     833      ! 
     834      INTEGER  ::   ji, jj 
     835      REAL(wp) ::   zrhoy, zrhot, zt0, zt1, ztcoeff 
     836      LOGICAL  ::   western_side, eastern_side,northern_side,southern_side 
     837      !!----------------------------------------------------------------------   
     838      ! 
     839      IF( before ) THEN  
     840         ptab(i1:i2,j1:j2) = e2u(i1:i2,j1:j2) * hu_n(i1:i2,j1:j2) * un_b(i1:i2,j1:j2) 
    947841      ELSE 
    948842         western_side  = (nb == 1).AND.(ndir == 1) 
     
    958852         IF( bdy_tinterp == 1 ) THEN 
    959853            ztcoeff = zrhot * (  zt1**2._wp * (       zt1 - 1._wp)        & 
    960                   &      - zt0**2._wp * (       zt0 - 1._wp)        ) 
     854               &               - zt0**2._wp * (       zt0 - 1._wp)        ) 
    961855         ELSEIF( bdy_tinterp == 2 ) THEN 
    962856            ztcoeff = zrhot * (  zt1        * (       zt1 - 1._wp)**2._wp & 
    963                   &      - zt0        * (       zt0 - 1._wp)**2._wp )  
     857               &               - zt0        * (       zt0 - 1._wp)**2._wp )  
    964858 
    965859         ELSE 
     
    982876         IF( bdy_tinterp == 0 .OR. bdy_tinterp == 2) THEN 
    983877            IF(western_side) THEN 
    984                ubdy_w(j1:j2) = ubdy_w(j1:j2) / (zrhoy*e2u(i1,j1:j2))   & 
    985                      &                                  * umask(i1,j1:j2,1) 
     878               ubdy_w(j1:j2) = ubdy_w(j1:j2) / (zrhoy*e2u(i1,j1:j2)) * umask(i1,j1:j2,1) 
    986879            ENDIF 
    987880            IF(eastern_side) THEN 
    988                ubdy_e(j1:j2) = ubdy_e(j1:j2) / (zrhoy*e2u(i1,j1:j2))   & 
    989                      &                                  * umask(i1,j1:j2,1) 
     881               ubdy_e(j1:j2) = ubdy_e(j1:j2) / (zrhoy*e2u(i1,j1:j2)) * umask(i1,j1:j2,1) 
    990882            ENDIF 
    991883            IF(southern_side) THEN 
    992                ubdy_s(i1:i2) = ubdy_s(i1:i2) / (zrhoy*e2u(i1:i2,j1))   & 
    993                      &                                  * umask(i1:i2,j1,1) 
     884               ubdy_s(i1:i2) = ubdy_s(i1:i2) / (zrhoy*e2u(i1:i2,j1)) * umask(i1:i2,j1,1) 
    994885            ENDIF 
    995886            IF(northern_side) THEN 
    996                ubdy_n(i1:i2) = ubdy_n(i1:i2) / (zrhoy*e2u(i1:i2,j1))   & 
    997                      &                                  * umask(i1:i2,j1,1) 
     887               ubdy_n(i1:i2) = ubdy_n(i1:i2) / (zrhoy*e2u(i1:i2,j1)) * umask(i1:i2,j1,1) 
    998888            ENDIF 
    999889         ENDIF 
     
    1002892   END SUBROUTINE interpunb 
    1003893 
    1004    SUBROUTINE interpvnb(ptab,i1,i2,j1,j2,before,nb,ndir) 
     894 
     895   SUBROUTINE interpvnb( ptab, i1, i2, j1, j2, before, nb, ndir ) 
    1005896      !!---------------------------------------------------------------------- 
    1006897      !!                  ***  ROUTINE interpvnb  *** 
    1007898      !!----------------------------------------------------------------------   
    1008       INTEGER, INTENT(in) :: i1,i2,j1,j2 
    1009       REAL(wp), DIMENSION(i1:i2,j1:j2), INTENT(inout) :: ptab 
    1010       LOGICAL, INTENT(in) :: before 
    1011       INTEGER, INTENT(in) :: nb , ndir 
    1012       !! 
    1013       INTEGER :: ji,jj 
    1014       REAL(wp) :: zrhox, zrhot, zt0, zt1, ztcoeff    
    1015       LOGICAL :: western_side, eastern_side,northern_side,southern_side 
     899      INTEGER                         , INTENT(in   ) ::   i1, i2, j1, j2 
     900      REAL(wp), DIMENSION(i1:i2,j1:j2), INTENT(inout) ::   ptab 
     901      LOGICAL                         , INTENT(in   ) ::  before 
     902      INTEGER                         , INTENT(in   ) ::  nb , ndir 
     903      ! 
     904      INTEGER  ::  ji,jj 
     905      REAL(wp) ::   zrhox, zrhot, zt0, zt1, ztcoeff    
     906      LOGICAL  ::  western_side, eastern_side,northern_side,southern_side 
    1016907      !!----------------------------------------------------------------------   
    1017908      !  
    1018       IF (before) THEN  
    1019          DO jj=j1,j2 
    1020             DO ji=i1,i2 
    1021                ptab(ji,jj) = vn_b(ji,jj) * e1v(ji,jj) * hv_n(ji,jj)  
    1022             END DO 
    1023          END DO 
     909      IF( before ) THEN  
     910         ptab(i1:i2,j1:j2) = e1v(i1:i2,j1:j2) * hv_n(i1:i2,j1:j2) * vn_b(i1:i2,j1:j2) 
    1024911      ELSE 
    1025912         western_side  = (nb == 1).AND.(ndir == 1) 
     
    1034921         IF( bdy_tinterp == 1 ) THEN 
    1035922            ztcoeff = zrhot * (  zt1**2._wp * (       zt1 - 1._wp)        & 
    1036                   &      - zt0**2._wp * (       zt0 - 1._wp)        ) 
     923               &               - zt0**2._wp * (       zt0 - 1._wp)        ) 
    1037924         ELSEIF( bdy_tinterp == 2 ) THEN 
    1038925            ztcoeff = zrhot * (  zt1        * (       zt1 - 1._wp)**2._wp & 
    1039                   &      - zt0        * (       zt0 - 1._wp)**2._wp )  
    1040  
     926               &               - zt0        * (       zt0 - 1._wp)**2._wp )  
    1041927         ELSE 
    1042928            ztcoeff = 1 
     
    1078964   END SUBROUTINE interpvnb 
    1079965 
    1080    SUBROUTINE interpub2b(ptab,i1,i2,j1,j2,before,nb,ndir) 
     966 
     967   SUBROUTINE interpub2b( ptab, i1, i2, j1, j2, before, nb, ndir ) 
    1081968      !!---------------------------------------------------------------------- 
    1082969      !!                  ***  ROUTINE interpub2b  *** 
    1083970      !!----------------------------------------------------------------------   
    1084       INTEGER, INTENT(in) :: i1,i2,j1,j2 
    1085       REAL(wp), DIMENSION(i1:i2,j1:j2), INTENT(inout) :: ptab 
    1086       LOGICAL, INTENT(in) :: before 
    1087       INTEGER, INTENT(in) :: nb , ndir 
    1088       !! 
    1089       INTEGER :: ji,jj 
    1090       REAL(wp) :: zrhot, zt0, zt1,zat 
    1091       LOGICAL :: western_side, eastern_side,northern_side,southern_side 
     971      INTEGER                         , INTENT(in   ) ::   i1, i2, j1, j2 
     972      REAL(wp), DIMENSION(i1:i2,j1:j2), INTENT(inout) ::   ptab 
     973      LOGICAL                         , INTENT(in   ) ::  before 
     974      INTEGER                         , INTENT(in   ) ::  nb , ndir 
     975      ! 
     976      INTEGER  ::  ji,jj 
     977      REAL(wp) ::   zrhot, zt0, zt1,zat 
     978      LOGICAL  ::  western_side, eastern_side,northern_side,southern_side 
    1092979      !!----------------------------------------------------------------------   
    1093980      IF( before ) THEN 
    1094          DO jj=j1,j2 
    1095             DO ji=i1,i2 
    1096                ptab(ji,jj) = ub2_b(ji,jj) * e2u(ji,jj) 
    1097             END DO 
    1098          END DO 
     981         ptab(i1:i2,j1:j2) = e2u(i1:i2,j1:j2) * ub2_b(i1:i2,j1:j2) 
    1099982      ELSE 
    1100983         western_side  = (nb == 1).AND.(ndir == 1) 
     
    1107990         zt1 = REAL(Agrif_NbStepint()+1, wp) / zrhot 
    1108991         ! Polynomial interpolation coefficients: 
    1109          zat = zrhot * (  zt1**2._wp * (-2._wp*zt1 + 3._wp)        & 
    1110                &      - zt0**2._wp * (-2._wp*zt0 + 3._wp)        )  
     992         zat = zrhot * (  zt1**2._wp * (-2._wp*zt1 + 3._wp)    & 
     993            &           - zt0**2._wp * (-2._wp*zt0 + 3._wp)    )  
    1111994         !  
    1112995         IF(western_side ) ubdy_w(j1:j2) = zat * ptab(i1,j1:j2)   
     
    11171000      !  
    11181001   END SUBROUTINE interpub2b 
    1119  
    1120    SUBROUTINE interpvb2b(ptab,i1,i2,j1,j2,before,nb,ndir) 
     1002    
     1003 
     1004   SUBROUTINE interpvb2b( ptab, i1, i2, j1, j2, before, nb, ndir ) 
    11211005      !!---------------------------------------------------------------------- 
    11221006      !!                  ***  ROUTINE interpvb2b  *** 
    11231007      !!----------------------------------------------------------------------   
    1124       INTEGER, INTENT(in) :: i1,i2,j1,j2 
    1125       REAL(wp), DIMENSION(i1:i2,j1:j2), INTENT(inout) :: ptab 
    1126       LOGICAL, INTENT(in) :: before 
    1127       INTEGER, INTENT(in) :: nb , ndir 
    1128       !! 
    1129       INTEGER :: ji,jj 
    1130       REAL(wp) :: zrhot, zt0, zt1,zat 
    1131       LOGICAL :: western_side, eastern_side,northern_side,southern_side 
     1008      INTEGER                         , INTENT(in   ) ::   i1, i2, j1, j2 
     1009      REAL(wp), DIMENSION(i1:i2,j1:j2), INTENT(inout) ::   ptab 
     1010      LOGICAL                         , INTENT(in   ) ::  before 
     1011      INTEGER                         , INTENT(in   ) ::  nb , ndir 
     1012      ! 
     1013      INTEGER ::   ji,jj 
     1014      REAL(wp) ::   zrhot, zt0, zt1,zat 
     1015      LOGICAL ::   western_side, eastern_side,northern_side,southern_side 
    11321016      !!----------------------------------------------------------------------   
    11331017      ! 
    11341018      IF( before ) THEN 
    1135          DO jj=j1,j2 
    1136             DO ji=i1,i2 
    1137                ptab(ji,jj) = vb2_b(ji,jj) * e1v(ji,jj) 
    1138             END DO 
    1139          END DO 
     1019         ptab(i1:i2,j1:j2) = e1v(i1:i2,j1:j2) * vb2_b(i1:i2,j1:j2) 
    11401020      ELSE       
    11411021         western_side  = (nb == 1).AND.(ndir == 1) 
     
    11481028         zt1 = REAL(Agrif_NbStepint()+1, wp) / zrhot 
    11491029         ! Polynomial interpolation coefficients: 
    1150          zat = zrhot * (  zt1**2._wp * (-2._wp*zt1 + 3._wp)        & 
    1151                &      - zt0**2._wp * (-2._wp*zt0 + 3._wp)        )  
    1152          ! 
    1153          IF(western_side ) vbdy_w(j1:j2) = zat * ptab(i1,j1:j2)   
    1154          IF(eastern_side ) vbdy_e(j1:j2) = zat * ptab(i1,j1:j2)   
    1155          IF(southern_side) vbdy_s(i1:i2) = zat * ptab(i1:i2,j1)  
    1156          IF(northern_side) vbdy_n(i1:i2) = zat * ptab(i1:i2,j1)  
     1030         zat = zrhot * (  zt1**2._wp * (-2._wp*zt1 + 3._wp)    & 
     1031            &           - zt0**2._wp * (-2._wp*zt0 + 3._wp)    )  
     1032         ! 
     1033         IF(western_side )   vbdy_w(j1:j2) = zat * ptab(i1,j1:j2)   
     1034         IF(eastern_side )   vbdy_e(j1:j2) = zat * ptab(i1,j1:j2)   
     1035         IF(southern_side)   vbdy_s(i1:i2) = zat * ptab(i1:i2,j1)  
     1036         IF(northern_side)   vbdy_n(i1:i2) = zat * ptab(i1:i2,j1)  
    11571037      ENDIF 
    11581038      !       
    11591039   END SUBROUTINE interpvb2b 
    11601040 
    1161    SUBROUTINE interpe3t(ptab,i1,i2,j1,j2,k1,k2,before,nb,ndir) 
     1041 
     1042   SUBROUTINE interpe3t( ptab, i1, i2, j1, j2, k1, k2, before, nb, ndir ) 
    11621043      !!---------------------------------------------------------------------- 
    11631044      !!                  ***  ROUTINE interpe3t  *** 
    11641045      !!----------------------------------------------------------------------   
    1165       !  
    1166       INTEGER, INTENT(in) :: i1,i2,j1,j2,k1,k2 
     1046      INTEGER                              , INTENT(in   ) :: i1, i2, j1, j2, k1, k2 
    11671047      REAL(wp),DIMENSION(i1:i2,j1:j2,k1:k2), INTENT(inout) :: ptab 
    1168       LOGICAL :: before 
    1169       INTEGER, INTENT(in) :: nb , ndir 
     1048      LOGICAL                              , INTENT(in   ) :: before 
     1049      INTEGER                              , INTENT(in   ) :: nb , ndir 
    11701050      ! 
    11711051      INTEGER :: ji, jj, jk 
     
    11741054      !!----------------------------------------------------------------------   
    11751055      !     
    1176       IF (before) THEN 
    1177          DO jk=k1,k2 
    1178             DO jj=j1,j2 
    1179                DO ji=i1,i2 
    1180                   ptab(ji,jj,jk) = tmask(ji,jj,jk) * e3t_0(ji,jj,jk) 
    1181                END DO 
    1182             END DO 
    1183          END DO 
     1056      IF( before ) THEN 
     1057         ptab(i1:i2,j1:j2,k1:k2) = tmask(i1:i2,j1:j2,k1:k2) * e3t_0(i1:i2,j1:j2,k1:k2) 
    11841058      ELSE 
    11851059         western_side  = (nb == 1).AND.(ndir == 1) 
     
    11881062         northern_side = (nb == 2).AND.(ndir == 2) 
    11891063 
    1190          DO jk=k1,k2 
    1191             DO jj=j1,j2 
    1192                DO ji=i1,i2 
     1064         DO jk = k1, k2 
     1065            DO jj = j1, j2 
     1066               DO ji = i1, i2 
    11931067                  ! Get velocity mask at boundary edge points: 
    1194                   IF (western_side)  ztmpmsk = umask(ji    ,jj    ,1) 
    1195                   IF (eastern_side)  ztmpmsk = umask(nlci-2,jj    ,1) 
    1196                   IF (northern_side) ztmpmsk = vmask(ji    ,nlcj-2,1) 
    1197                   IF (southern_side) ztmpmsk = vmask(ji    ,2     ,1) 
    1198  
    1199                   IF (ABS(ptab(ji,jj,jk) - tmask(ji,jj,jk) * e3t_0(ji,jj,jk))*ztmpmsk > 1.D-2) THEN 
     1068                  IF( western_side )   ztmpmsk = umask(ji    ,jj    ,1) 
     1069                  IF( eastern_side )   ztmpmsk = umask(nlci-2,jj    ,1) 
     1070                  IF( northern_side)  ztmpmsk = vmask(ji    ,nlcj-2,1) 
     1071                  IF( southern_side)  ztmpmsk = vmask(ji    ,2     ,1) 
     1072                  ! 
     1073                  IF( ABS( ptab(ji,jj,jk) - tmask(ji,jj,jk) * e3t_0(ji,jj,jk) )*ztmpmsk > 1.D-2) THEN 
    12001074                     IF (western_side) THEN 
    12011075                        WRITE(numout,*) 'ERROR bathymetry merge at the western border ji,jj,jk ', ji+nimpp-1,jj+njmpp-1,jk 
     
    12131087            END DO 
    12141088         END DO 
    1215  
     1089         ! 
    12161090      ENDIF 
    12171091      !  
     
    12191093 
    12201094 
    1221    SUBROUTINE interpumsk(ptab,i1,i2,j1,j2,k1,k2,before,nb,ndir) 
     1095   SUBROUTINE interpumsk( ptab, i1, i2, j1, j2, k1, k2, before, nb, ndir ) 
    12221096      !!---------------------------------------------------------------------- 
    12231097      !!                  ***  ROUTINE interpumsk  *** 
    12241098      !!----------------------------------------------------------------------   
    1225       !  
    1226       INTEGER, INTENT(in) :: i1,i2,j1,j2,k1,k2 
    1227       REAL(wp),DIMENSION(i1:i2,j1:j2,k1:k2), INTENT(inout) :: ptab 
    1228       LOGICAL :: before 
    1229       INTEGER, INTENT(in) :: nb , ndir 
    1230       ! 
    1231       INTEGER :: ji, jj, jk 
    1232       LOGICAL :: western_side, eastern_side    
     1099      INTEGER                              , INTENT(in   ) ::   i1, i2, j1, j2, k1, k2 
     1100      REAL(wp),DIMENSION(i1:i2,j1:j2,k1:k2), INTENT(inout) ::   ptab 
     1101      LOGICAL ,                            , INTENT(in   ) ::   before 
     1102      INTEGER                              , INTENT(in   ) ::   nb , ndir 
     1103      ! 
     1104      INTEGER ::   ji, jj, jk 
     1105      LOGICAL ::   western_side, eastern_side    
    12331106      !!----------------------------------------------------------------------   
    12341107      !     
    1235       IF (before) THEN 
    1236          DO jk=k1,k2 
    1237             DO jj=j1,j2 
    1238                DO ji=i1,i2 
    1239                   ptab(ji,jj,jk) = umask(ji,jj,jk) 
    1240                END DO 
    1241             END DO 
    1242          END DO 
     1108      IF( before ) THEN 
     1109         ptab(i1:i2,j1:j2,k1:k2) = umask(i1:i2,j1:j2,k1:k2) 
    12431110      ELSE 
    1244  
    1245          western_side  = (nb == 1).AND.(ndir == 1) 
    1246          eastern_side  = (nb == 1).AND.(ndir == 2) 
    1247          DO jk=k1,k2 
    1248             DO jj=j1,j2 
    1249                DO ji=i1,i2 
     1111         western_side = (nb == 1).AND.(ndir == 1) 
     1112         eastern_side = (nb == 1).AND.(ndir == 2) 
     1113         DO jk = k1, k2 
     1114            DO jj = j1, j2 
     1115               DO ji = i1, i2 
    12501116                   ! Velocity mask at boundary edge points: 
    12511117                  IF (ABS(ptab(ji,jj,jk) - umask(ji,jj,jk)) > 1.D-2) THEN 
     
    12631129            END DO 
    12641130         END DO 
    1265  
     1131         ! 
    12661132      ENDIF 
    12671133      !  
    12681134   END SUBROUTINE interpumsk 
    12691135 
    1270    SUBROUTINE interpvmsk(ptab,i1,i2,j1,j2,k1,k2,before,nb,ndir) 
     1136 
     1137   SUBROUTINE interpvmsk( ptab, i1, i2, j1, j2, k1, k2, before, nb, ndir ) 
    12711138      !!---------------------------------------------------------------------- 
    12721139      !!                  ***  ROUTINE interpvmsk  *** 
    12731140      !!----------------------------------------------------------------------   
    1274       !  
    1275       INTEGER, INTENT(in) :: i1,i2,j1,j2,k1,k2 
    1276       REAL(wp),DIMENSION(i1:i2,j1:j2,k1:k2), INTENT(inout) :: ptab 
    1277       LOGICAL :: before 
    1278       INTEGER, INTENT(in) :: nb , ndir 
    1279       ! 
    1280       INTEGER :: ji, jj, jk 
    1281       LOGICAL :: northern_side, southern_side      
     1141      INTEGER                              , INTENT(in   ) ::   i1,i2,j1,j2,k1,k2 
     1142      REAL(wp),DIMENSION(i1:i2,j1:j2,k1:k2), INTENT(inout) ::   ptab 
     1143      LOGICAL                              , INTENT(in   ) ::   before 
     1144      INTEGER                              , INTENT(in   ) :: nb , ndir 
     1145      ! 
     1146      INTEGER ::   ji, jj, jk 
     1147      LOGICAL ::   northern_side, southern_side      
    12821148      !!----------------------------------------------------------------------   
    12831149      !     
    1284       IF (before) THEN 
    1285          DO jk=k1,k2 
    1286             DO jj=j1,j2 
    1287                DO ji=i1,i2 
    1288                   ptab(ji,jj,jk) = vmask(ji,jj,jk) 
    1289                END DO 
    1290             END DO 
    1291          END DO 
     1150      IF( before ) THEN 
     1151         ptab(i1:i2,j1:j2,k1:k2) = vmask(i1:i2,j1:j2,k1:k2) 
    12921152      ELSE 
    1293  
    12941153         southern_side = (nb == 2).AND.(ndir == 1) 
    12951154         northern_side = (nb == 2).AND.(ndir == 2) 
    1296          DO jk=k1,k2 
    1297             DO jj=j1,j2 
    1298                DO ji=i1,i2 
     1155         DO jk = k1, k2 
     1156            DO jj = j1, j2 
     1157               DO ji = i1, i2 
    12991158                   ! Velocity mask at boundary edge points: 
    13001159                  IF (ABS(ptab(ji,jj,jk) - vmask(ji,jj,jk)) > 1.D-2) THEN 
     
    13121171            END DO 
    13131172         END DO 
    1314  
     1173         ! 
    13151174      ENDIF 
    13161175      !  
     
    13191178# if defined key_zdftke 
    13201179 
    1321    SUBROUTINE interpavm(ptab,i1,i2,j1,j2,k1,k2,before) 
     1180   SUBROUTINE interpavm( ptab, i1, i2, j1, j2, k1, k2, before ) 
    13221181      !!---------------------------------------------------------------------- 
    13231182      !!                  ***  ROUTINE interavm  *** 
    13241183      !!----------------------------------------------------------------------   
    1325       INTEGER, INTENT(in) :: i1,i2,j1,j2,k1,k2 
    1326       REAL(wp),DIMENSION(i1:i2,j1:j2,k1:k2), INTENT(inout) :: ptab 
    1327       LOGICAL, INTENT(in) :: before 
     1184      INTEGER                              , INTENT(in   ) ::   i1, i2, j1, j2, k1, k2 
     1185      REAL(wp),DIMENSION(i1:i2,j1:j2,k1:k2), INTENT(inout) ::   ptab 
     1186      LOGICAL                              , INTENT(in   ) ::  before 
    13281187      !!----------------------------------------------------------------------   
    13291188      !       
    1330       IF( before) THEN 
     1189      IF( before ) THEN 
    13311190         ptab (i1:i2,j1:j2,k1:k2) = avm_k(i1:i2,j1:j2,k1:k2) 
    13321191      ELSE 
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/NEMO/NST_SRC/agrif_opa_sponge.F90

    r5845 r6004  
    22 
    33MODULE agrif_opa_sponge 
     4   !!====================================================================== 
     5   !!                ***  MODULE agrif_opa_update  *** 
     6   !! AGRIF :    
     7   !!====================================================================== 
     8   !! History :   
     9   !!---------------------------------------------------------------------- 
    410#if defined key_agrif  && ! defined key_offline 
    511   USE par_oce 
     
    1824 
    1925   !!---------------------------------------------------------------------- 
    20    !! NEMO/NST 3.3 , NEMO Consortium (2010) 
     26   !! NEMO/NST 3.7 , NEMO Consortium (2015) 
    2127   !! $Id$ 
    2228   !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 
    2329   !!---------------------------------------------------------------------- 
    24  
    2530CONTAINS 
    2631 
     
    2934      !!   *** ROUTINE Agrif_Sponge_Tra *** 
    3035      !!--------------------------------------------- 
    31       !! 
    3236      REAL(wp) :: timecoeff 
    33  
     37      !!--------------------------------------------- 
     38      ! 
    3439#if defined SPONGE 
    3540      timecoeff = REAL(Agrif_NbStepint(),wp)/Agrif_rhot() 
     
    4449      Agrif_UseSpecialValue = .FALSE. 
    4550#endif 
    46  
     51      ! 
    4752   END SUBROUTINE Agrif_Sponge_Tra 
    4853 
     54 
    4955   SUBROUTINE Agrif_Sponge_dyn 
    5056      !!--------------------------------------------- 
    5157      !!   *** ROUTINE Agrif_Sponge_dyn *** 
    5258      !!--------------------------------------------- 
    53       !! 
    5459      REAL(wp) :: timecoeff 
     60      !!--------------------------------------------- 
    5561 
    5662#if defined SPONGE 
     
    7076      Agrif_UseSpecialValue = .FALSE. 
    7177#endif 
    72  
     78      ! 
    7379   END SUBROUTINE Agrif_Sponge_dyn 
     80 
    7481 
    7582   SUBROUTINE Agrif_Sponge 
     
    181188      ! 
    182189#endif 
    183  
     190      ! 
    184191   END SUBROUTINE Agrif_Sponge 
     192 
    185193 
    186194   SUBROUTINE interptsn_sponge(tabres,i1,i2,j1,j2,k1,k2,n1,n2,before) 
     
    191199      REAL(wp), DIMENSION(i1:i2,j1:j2,k1:k2,n1:n2), INTENT(inout) :: tabres 
    192200      LOGICAL, INTENT(in) :: before 
    193  
    194  
     201      ! 
    195202      INTEGER  ::   ji, jj, jk, jn   ! dummy loop indices 
    196203      INTEGER  ::   iku, ikv 
     
    199206      REAL(wp), DIMENSION(i1:i2,j1:j2,k1:k2,n1:n2) ::tsbdiff 
    200207      ! 
    201       IF (before) THEN 
     208      IF( before ) THEN 
    202209         tabres(i1:i2,j1:j2,k1:k2,n1:n2) = tsn(i1:i2,j1:j2,k1:k2,n1:n2) 
    203210      ELSE    
    204     
     211         ! 
    205212         tsbdiff(:,:,:,:) = tsb(i1:i2,j1:j2,:,:) - tabres(:,:,:,:)     
    206213         DO jn = 1, jpts             
     
    212219                     ztu(ji,jj,jk) = zabe1 * ( tsbdiff(ji+1,jj  ,jk,jn) - tsbdiff(ji,jj,jk,jn) )  
    213220                     ztv(ji,jj,jk) = zabe2 * ( tsbdiff(ji  ,jj+1,jk,jn) - tsbdiff(ji,jj,jk,jn) ) 
    214                   ENDDO 
    215                ENDDO 
    216  
     221                  END DO 
     222               END DO 
     223               ! 
    217224               IF( ln_zps ) THEN      ! set gradient at partial step level 
    218225                  DO jj = j1,j2-1 
     
    221228                        iku = mbku(ji,jj) 
    222229                        ikv = mbkv(ji,jj) 
    223                         IF( iku == jk ) THEN 
    224                            ztu(ji,jj,jk) = 0._wp 
    225                         ENDIF 
    226                         IF( ikv == jk ) THEN 
    227                            ztv(ji,jj,jk) = 0._wp 
    228                         ENDIF 
     230                        IF( iku == jk )   ztu(ji,jj,jk) = 0._wp 
     231                        IF( ikv == jk )   ztv(ji,jj,jk) = 0._wp 
    229232                     END DO 
    230233                  END DO 
    231234               ENDIF 
    232             ENDDO 
    233  
     235            END DO 
     236            ! 
    234237            DO jk = 1, jpkm1 
    235238               DO jj = j1+1,j2-1 
    236239                  DO ji = i1+1,i2-1 
    237  
    238240                     IF (.NOT. tabspongedone_tsn(ji,jj)) THEN  
    239241                        zbtr = r1_e1e2t(ji,jj) / e3t_n(ji,jj,jk) 
     
    243245                        tsa(ji,jj,jk,jn) = tsa(ji,jj,jk,jn) + ztsa 
    244246                     ENDIF 
    245  
    246                   ENDDO 
    247                ENDDO 
    248  
    249             ENDDO 
    250          ENDDO 
    251  
     247                  END DO 
     248               END DO 
     249            END DO 
     250            ! 
     251         END DO 
     252         ! 
    252253         tabspongedone_tsn(i1+1:i2-1,j1+1:j2-1) = .TRUE. 
    253  
    254       ENDIF 
    255  
     254         ! 
     255      ENDIF 
     256      ! 
    256257   END SUBROUTINE interptsn_sponge 
     258 
    257259 
    258260   SUBROUTINE interpun_sponge(tabres,i1,i2,j1,j2,k1,k2, before) 
     
    271273      REAL(wp), DIMENSION(i1:i2,j1:j2,k1:k2) :: rotdiff, hdivdiff 
    272274      INTEGER :: jmax 
    273       ! 
    274  
    275  
    276       IF (before) THEN 
     275      !!---------------------------------------------     
     276      ! 
     277      IF( before ) THEN 
    277278         tabres = un(i1:i2,j1:j2,:) 
    278279      ELSE 
    279  
    280280         ubdiff(i1:i2,j1:j2,:) = (ub(i1:i2,j1:j2,:) - tabres(:,:,:))*umask(i1:i2,j1:j2,:) 
    281  
     281         ! 
    282282         DO jk = 1, jpkm1                                 ! Horizontal slab 
    283283            !                                             ! =============== 
     
    302302               END DO 
    303303            END DO 
    304          ENDDO 
    305  
    306          ! 
    307  
    308  
    309  
     304         END DO 
     305         ! 
    310306         DO jj = j1+1, j2-1 
    311307            DO ji = i1+1, i2-1   ! vector opt. 
     
    349345                  END DO 
    350346               ENDIF 
    351  
    352             END DO 
    353          END DO 
    354  
    355  
     347               ! 
     348            END DO 
     349         END DO 
     350         ! 
    356351         tabspongedone_v(i1+1:i2,j1+1:jmax) = .TRUE. 
    357  
    358       ENDIF 
    359  
    360  
     352         ! 
     353      ENDIF 
     354      ! 
    361355   END SUBROUTINE interpun_sponge 
    362356 
     
    370364      LOGICAL, INTENT(in) :: before 
    371365      INTEGER, INTENT(in) :: nb , ndir 
    372  
    373       INTEGER :: ji,jj,jk 
    374  
    375       REAL(wp) :: ze2u, ze1v, zua, zva, zbtr 
    376  
     366      ! 
     367      INTEGER  ::   ji, jj, jk 
     368      REAL(wp) ::   ze2u, ze1v, zua, zva, zbtr 
    377369      REAL(wp), DIMENSION(i1:i2,j1:j2,k1:k2) :: vbdiff 
    378370      REAL(wp), DIMENSION(i1:i2,j1:j2,k1:k2) :: rotdiff, hdivdiff 
    379371      INTEGER :: imax 
    380       ! 
    381  
    382       IF (before) THEN  
     372      !!---------------------------------------------  
     373 
     374      IF( before ) THEN  
    383375         tabres = vn(i1:i2,j1:j2,:) 
    384376      ELSE 
    385  
     377         ! 
    386378         vbdiff(i1:i2,j1:j2,:) = (vb(i1:i2,j1:j2,:) - tabres(:,:,:))*vmask(i1:i2,j1:j2,:) 
    387  
     379         ! 
    388380         DO jk = 1, jpkm1                                 ! Horizontal slab 
    389381            !                                             ! =============== 
     
    403395                  zbtr = r1_e1e2f(ji,jj) * e3f_n(ji,jj,jk) * fsahm_spf(ji,jj) 
    404396                  rotdiff(ji,jj,jk) = ( e2v(ji+1,jj) * vbdiff(ji+1,jj,jk) &  
    405                                     &  -e2v(ji  ,jj) * vbdiff(ji  ,jj,jk) & 
    406                                     & ) * fmask(ji,jj,jk) * zbtr 
    407                END DO 
    408             END DO 
    409          ENDDO 
     397                                    &  -e2v(ji  ,jj) * vbdiff(ji  ,jj,jk)  ) * fmask(ji,jj,jk) * zbtr 
     398               END DO 
     399            END DO 
     400         END DO 
    410401 
    411402         !                                                ! =============== 
     
    413404 
    414405         imax = i2-1 
    415          IF ((nbondi == 1).OR.(nbondi == 2)) imax = MIN(imax,nlci-3) 
     406         IF ((nbondi == 1).OR.(nbondi == 2))   imax = MIN(imax,nlci-3) 
    416407 
    417408         DO jj = j1+1, j2 
    418409            DO ji = i1+1, imax   ! vector opt. 
    419                IF (.NOT. tabspongedone_u(ji,jj)) THEN 
    420                   DO jk = 1, jpkm1                                 ! Horizontal slab 
    421                      ze2u = rotdiff (ji,jj,jk) 
    422                      ze1v = hdivdiff(ji,jj,jk) 
    423                      ! horizontal diffusive trends 
    424                      zua = - ( ze2u - rotdiff (ji,jj-1,jk)) / ( e2u(ji,jj) * e3u_n(ji,jj,jk) ) + ( hdivdiff(ji+1,jj,jk) - ze1v) & 
    425                            / e1u(ji,jj) 
    426  
    427  
    428                      ! add it to the general momentum trends 
    429                      ua(ji,jj,jk) = ua(ji,jj,jk) + zua 
    430                   END DO 
    431  
    432                ENDIF 
    433             END DO 
    434          END DO 
    435  
     410               IF( .NOT. tabspongedone_u(ji,jj) ) THEN 
     411                  DO jk = 1, jpkm1 
     412                     ua(ji,jj,jk) = ua(ji,jj,jk)                                                               & 
     413                        & - ( rotdiff (ji  ,jj,jk) - rotdiff (ji,jj-1,jk)) / ( e2u(ji,jj) * e3u_n(ji,jj,jk) )  & 
     414                        & + ( hdivdiff(ji+1,jj,jk) - hdivdiff(ji,jj  ,jk)) * r1_e1u(ji,jj) 
     415                  END DO 
     416               ENDIF 
     417            END DO 
     418         END DO 
     419         ! 
    436420         tabspongedone_u(i1+1:imax,j1+1:j2) = .TRUE. 
    437  
     421         ! 
    438422         DO jj = j1+1, j2-1 
    439423            DO ji = i1+1, i2-1   ! vector opt. 
    440                IF (.NOT. tabspongedone_v(ji,jj)) THEN 
    441                   DO jk = 1, jpkm1                                 ! Horizontal slab 
    442                      ze2u = rotdiff (ji,jj,jk) 
    443                      ze1v = hdivdiff(ji,jj,jk) 
    444                      ! horizontal diffusive trends 
    445  
    446                      zva = + ( ze2u - rotdiff (ji-1,jj,jk)) / ( e1v(ji,jj) * e3v_n(ji,jj,jk) ) + ( hdivdiff(ji,jj+1,jk) - ze1v) & 
    447                            / e2v(ji,jj) 
    448  
    449                      ! add it to the general momentum trends 
    450                      va(ji,jj,jk) = va(ji,jj,jk) + zva 
     424               IF( .NOT. tabspongedone_v(ji,jj) ) THEN 
     425                  DO jk = 1, jpkm1 
     426                     va(ji,jj,jk) = va(ji,jj,jk)                                                                  & 
     427                        &  + ( rotdiff (ji,jj  ,jk) - rotdiff (ji-1,jj,jk) ) / ( e1v(ji,jj) * e3v_n(ji,jj,jk) )   & 
     428                        &  + ( hdivdiff(ji,jj+1,jk) - hdivdiff(ji  ,jj,jk) ) * r1_e2v(ji,jj) 
    451429                  END DO 
    452430               ENDIF 
     
    455433         tabspongedone_v(i1+1:i2-1,j1+1:j2-1) = .TRUE. 
    456434      ENDIF 
    457  
     435      ! 
    458436   END SUBROUTINE interpvn_sponge 
    459437 
    460438#else 
    461439CONTAINS 
    462  
    463440   SUBROUTINE agrif_opa_sponge_empty 
    464441      !!--------------------------------------------- 
     
    469446#endif 
    470447 
     448   !!====================================================================== 
    471449END MODULE agrif_opa_sponge 
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/NEMO/NST_SRC/agrif_opa_update.F90

    r5845 r6004  
    1111   USE lib_mpp 
    1212   USE wrk_nemo   
    13    USE dynspg_oce 
    1413   USE zdf_oce        ! vertical physics: ocean variables  
    1514 
     
    107106# endif 
    108107 
    109 # if defined key_dynspg_ts 
    110       IF (ln_bt_fw) THEN 
     108      IF ( ln_dynspg_ts.AND.ln_bt_fw ) THEN 
    111109         ! Update time integrated transports 
    112110         IF (mod(nbcline,nbclineupdate) == 0) THEN 
     
    128126         ENDIF 
    129127      END IF 
    130 # endif 
    131128      ! 
    132129      nbcline = nbcline + 1 
     
    237234      !!           *** ROUTINE updateu *** 
    238235      !!--------------------------------------------- 
    239       INTEGER, INTENT(in) :: i1, i2, j1, j2, k1, k2 
     236      INTEGER                               , INTENT(in   ) :: i1, i2, j1, j2, k1, k2 
    240237      REAL(wp), DIMENSION(i1:i2,j1:j2,k1:k2), INTENT(inout) :: tabres 
    241       LOGICAL, INTENT(in) :: before 
    242       !!  
    243       INTEGER :: ji, jj, jk 
    244       REAL(wp) :: zrhoy 
    245       !!--------------------------------------------- 
    246       !  
    247       IF (before) THEN 
     238      LOGICAL                               , INTENT(in   ) :: before 
     239      ! 
     240      INTEGER  ::  ji, jj, jk 
     241      REAL(wp) ::   zrhoy 
     242      !!--------------------------------------------- 
     243      !  
     244      IF( before ) THEN 
    248245         zrhoy = Agrif_Rhoy() 
     246         DO jk = k1, k2 
     247            tabres(i1:i2,j1:j2,jk) = zrhoy * e2u(i1:i2,j1:j2) * e3u_n(i1:i2,j1:j2,jk) * un(i1:i2,j1:j2,jk) 
     248         END DO 
     249      ELSE 
    249250         DO jk=k1,k2 
    250251            DO jj=j1,j2 
    251252               DO ji=i1,i2 
    252                   tabres(ji,jj,jk) = e2u(ji,jj) * e3u_n(ji,jj,jk) * un(ji,jj,jk) 
    253                END DO 
    254             END DO 
    255          END DO 
    256          tabres = zrhoy * tabres 
    257       ELSE 
    258          DO jk=k1,k2 
    259             DO jj=j1,j2 
    260                DO ji=i1,i2 
    261                   tabres(ji,jj,jk) = tabres(ji,jj,jk) / ( e2u(ji,jj) * e3u_n(ji,jj,jk) ) 
     253                  tabres(ji,jj,jk) = tabres(ji,jj,jk) * r1_e2u(ji,jj) / e3u_n(ji,jj,jk) 
    262254                  ! 
    263255                  IF (.NOT.(lk_agrif_fstep.AND.(neuler==0))) THEN ! Add asselin part 
     
    292284            DO jj=j1,j2 
    293285               DO ji=i1,i2 
    294                   tabres(ji,jj,jk) = e1v(ji,jj) * e3v_n(ji,jj,jk) * vn(ji,jj,jk) 
    295                END DO 
    296             END DO 
    297          END DO 
    298          tabres = zrhox * tabres 
     286                  tabres(ji,jj,jk) = zrhox * e1v(ji,jj) * e3v_n(ji,jj,jk) * vn(ji,jj,jk) 
     287               END DO 
     288            END DO 
     289         END DO 
    299290      ELSE 
    300291         DO jk=k1,k2 
    301292            DO jj=j1,j2 
    302293               DO ji=i1,i2 
    303                   tabres(ji,jj,jk) = tabres(ji,jj,jk) / ( e1v(ji,jj) * e3v_n(ji,jj,jk) ) 
     294                  tabres(ji,jj,jk) = tabres(ji,jj,jk) * r1_e1v(ji,jj) / e3v_n(ji,jj,jk) 
    304295                  ! 
    305296                  IF (.NOT.(lk_agrif_fstep.AND.(neuler==0))) THEN ! Add asselin part 
     
    334325         DO jj=j1,j2 
    335326            DO ji=i1,i2 
    336                tabres(ji,jj) = un_b(ji,jj) * hu_n(ji,jj) * e2u(ji,jj) 
    337             END DO 
    338          END DO 
    339          tabres = zrhoy * tabres 
     327               tabres(ji,jj) = zrhoy * un_b(ji,jj) * hu_n(ji,jj) * e2u(ji,jj) 
     328            END DO 
     329         END DO 
    340330      ELSE 
    341331         DO jj=j1,j2 
     
    344334               !     
    345335               ! Update "now" 3d velocities: 
    346                spgu(ji,jj) = 0.e0 
     336               spgu(ji,jj) = 0._wp 
    347337               DO jk=1,jpkm1 
    348338                  spgu(ji,jj) = spgu(ji,jj) + e3u_n(ji,jj,jk) * un(ji,jj,jk) 
     
    356346               ! 
    357347               ! Update barotropic velocities: 
    358 #if defined key_dynspg_ts 
    359                IF (.NOT.(lk_agrif_fstep.AND.(neuler==0))) THEN ! Add asselin part 
    360                   zcorr = tabres(ji,jj) - un_b(ji,jj) 
    361                   ub_b(ji,jj) = ub_b(ji,jj) + atfp * zcorr * umask(ji,jj,1) 
    362                END IF 
    363 #endif                
     348               IF ( .NOT.ln_dynspg_ts .OR. (ln_dynspg_ts.AND.(.NOT.ln_bt_fw)) ) THEN 
     349                  IF (.NOT.(lk_agrif_fstep.AND.(neuler==0))) THEN ! Add asselin part 
     350                     zcorr = tabres(ji,jj) - un_b(ji,jj) 
     351                     ub_b(ji,jj) = ub_b(ji,jj) + atfp * zcorr * umask(ji,jj,1) 
     352                  END IF 
     353               ENDIF              
    364354               un_b(ji,jj) = tabres(ji,jj) * umask(ji,jj,1) 
    365355               !        
     
    400390         DO jj=j1,j2 
    401391            DO ji=i1,i2 
    402                tabres(ji,jj) = vn_b(ji,jj) * hv_n(ji,jj) * e1v(ji,jj)  
    403             END DO 
    404          END DO 
    405          tabres = zrhox * tabres 
     392               tabres(ji,jj) = zrhox * vn_b(ji,jj) * hv_n(ji,jj) * e1v(ji,jj)  
     393            END DO 
     394         END DO 
    406395      ELSE 
    407396         DO jj=j1,j2 
     
    422411               ! 
    423412               ! Update barotropic velocities: 
    424 #if defined key_dynspg_ts 
    425                IF (.NOT.(lk_agrif_fstep.AND.(neuler==0))) THEN ! Add asselin part 
    426                   zcorr = tabres(ji,jj) - vn_b(ji,jj) 
    427                   vb_b(ji,jj) = vb_b(ji,jj) + atfp * zcorr * vmask(ji,jj,1) 
    428                END IF 
    429 #endif                
     413               IF ( .NOT.ln_dynspg_ts .OR. (ln_dynspg_ts.AND.(.NOT.ln_bt_fw)) ) THEN 
     414                  IF (.NOT.(lk_agrif_fstep.AND.(neuler==0))) THEN ! Add asselin part 
     415                     zcorr = tabres(ji,jj) - vn_b(ji,jj) 
     416                     vb_b(ji,jj) = vb_b(ji,jj) + atfp * zcorr * vmask(ji,jj,1) 
     417                  END IF 
     418               ENDIF               
    430419               vn_b(ji,jj) = tabres(ji,jj) * vmask(ji,jj,1) 
    431420               !        
     
    467456         END DO 
    468457      ELSE 
    469 #if ! defined key_dynspg_ts 
    470          IF (.NOT.(lk_agrif_fstep.AND.(neuler==0))) THEN 
    471             DO jj=j1,j2 
    472                DO ji=i1,i2 
    473                   sshb(ji,jj) =   sshb(ji,jj) & 
    474                         & + atfp * ( tabres(ji,jj) - sshn(ji,jj) ) * tmask(ji,jj,1) 
    475                END DO 
    476             END DO 
     458         IF( .NOT.ln_dynspg_ts .OR. ( ln_dynspg_ts .AND. .NOT.ln_bt_fw ) ) THEN 
     459            IF (.NOT.(lk_agrif_fstep.AND.(neuler==0))) THEN 
     460               DO jj=j1,j2 
     461                  DO ji=i1,i2 
     462                     sshb(ji,jj) =   sshb(ji,jj) & 
     463                           & + atfp * ( tabres(ji,jj) - sshn(ji,jj) ) * tmask(ji,jj,1) 
     464                  END DO 
     465               END DO 
     466            ENDIF 
    477467         ENDIF 
    478 #endif 
     468         ! 
    479469         DO jj=j1,j2 
    480470            DO ji=i1,i2 
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/NEMO/NST_SRC/agrif_top_interp.F90

    r5845 r6004  
    44   USE oce 
    55   USE dom_oce       
    6    USE sol_oce 
    76   USE agrif_oce 
    87   USE agrif_top_sponge 
     
    2322   !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 
    2423   !!---------------------------------------------------------------------- 
    25  
    26    CONTAINS 
     24CONTAINS 
    2725 
    2826   SUBROUTINE Agrif_trc 
     
    4038      ! 
    4139   END SUBROUTINE Agrif_trc 
     40 
    4241 
    4342   SUBROUTINE interptrn(ptab,i1,i2,j1,j2,k1,k2,n1,n2,before,nb,ndir) 
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/NEMO/NST_SRC/agrif_top_sponge.F90

    r5845 r6004  
    22 
    33MODULE agrif_top_sponge 
     4   !!====================================================================== 
     5   !!                ***  MODULE agrif_top_sponge  *** 
     6   !! AGRIF :   define in memory AGRIF variables for sea-ice 
     7   !!====================================================================== 
     8   !! History :  2.0  ! 2006-08  (R. Benshila, L. Debreu)  Original code 
     9   !!---------------------------------------------------------------------- 
     10 
     11   !!---------------------------------------------------------------------- 
     12   !!   Agrif_Sponge_trc :  
     13   !!   interptrn_sponge :   
     14   !!---------------------------------------------------------------------- 
    415#if defined key_agrif && defined key_top 
    516   USE par_oce 
    617   USE par_trc 
    718   USE oce 
     19   USE trc 
    820   USE dom_oce 
    9    USE in_out_manager 
    1021   USE agrif_oce 
    1122   USE agrif_opa_sponge 
    12    USE trc 
     23   ! 
     24   USE in_out_manager 
    1325   USE lib_mpp 
    1426   USE wrk_nemo   
     
    2032 
    2133   !!---------------------------------------------------------------------- 
    22    !! NEMO/NST 3.6 , NEMO Consortium (2010) 
     34   !! NEMO/NST 3.7 , NEMO Consortium (2015) 
    2335   !! $Id$ 
    2436   !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 
    2537   !!---------------------------------------------------------------------- 
    26  
    2738CONTAINS 
    2839 
    2940   SUBROUTINE Agrif_Sponge_trc 
    30       !!--------------------------------------------- 
    31       !!   *** ROUTINE Agrif_Sponge_Trc *** 
    32       !!--------------------------------------------- 
    33       !!  
    34       REAL(wp) :: timecoeff 
    35  
     41      !!---------------------------------------------------------------------- 
     42      !!                   *** ROUTINE Agrif_Sponge_Trc *** 
     43      !!---------------------------------------------------------------------- 
     44      REAL(wp) ::   timecoeff 
     45      !!---------------------------------------------------------------------- 
     46      ! 
    3647#if defined SPONGE_TOP 
    37       timecoeff = REAL(Agrif_NbStepint(),wp)/Agrif_rhot() 
     48      timecoeff = REAL( Agrif_NbStepint(), wp ) / Agrif_rhot() 
    3849      CALL Agrif_sponge 
    39       Agrif_SpecialValue=0. 
     50      Agrif_SpecialValue    = 0._wp 
    4051      Agrif_UseSpecialValue = .TRUE. 
    41       tabspongedone_trn = .FALSE. 
    42       CALL Agrif_Bc_Variable(trn_sponge_id,calledweight=timecoeff,procname=interptrn_sponge) 
     52      tabspongedone_trn     = .FALSE. 
     53      CALL Agrif_Bc_Variable( trn_sponge_id, calledweight=timecoeff, procname=interptrn_sponge ) 
    4354      Agrif_UseSpecialValue = .FALSE. 
    44  
    4555#endif 
    46  
     56      !