Changeset 8568


Ignore:
Timestamp:
2017-09-27T16:29:24+02:00 (3 years ago)
Author:
gm
Message:

#1911 (ENHANCE-09): PART I.2 - _NONE option + remove zts + see associated wiki page

Location:
branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM
Files:
191 edited

Legend:

Unmodified
Added
Removed
  • branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/CONFIG/AMM12/EXP00/namelist_cfg

    r8215 r8568  
    210210/ 
    211211!----------------------------------------------------------------------- 
    212 &namtra_adv    !   advection scheme for tracer 
     212&namtra_adv    !   advection scheme for tracer                          (default: NO advection) 
    213213!----------------------------------------------------------------------- 
    214214   ln_traadv_fct =  .true.   !  FCT scheme 
    215215      nn_fct_h   =  2               !  =2/4, horizontal 2nd / 4th order  
    216216      nn_fct_v   =  2               !  =2/4, vertical   2nd / COMPACT 4th order  
    217       nn_fct_zts =  0               !  >=1,  2nd order FCT scheme with vertical sub-timestepping 
    218       !                             !        (number of sub-timestep = nn_fct_zts) 
    219217/ 
    220218!----------------------------------------------------------------------- 
     
    226224!---------------------------------------------------------------------------------- 
    227225   !                       !  Operator type: 
     226   ln_traldf_NONE  = .false.   !           No operator (no explicit diffusion) 
    228227   ln_traldf_lap   =  .true.   !    laplacian operator 
    229228   ln_traldf_blp   =  .false.  !  bilaplacian operator 
     
    264263/ 
    265264!----------------------------------------------------------------------- 
    266 &namdyn_adv    !   formulation of the momentum advection 
    267 !----------------------------------------------------------------------- 
     265&namdyn_adv    !   formulation of the momentum advection                (default: None) 
     266!----------------------------------------------------------------------- 
     267   ln_dynadv_vec = .true.  !  vector form - 2nd centered scheme 
     268     nn_dynkeg     = 0        ! grad(KE) scheme: =0   C2  ;  =1   Hollingsworth correction 
    268269/ 
    269270!----------------------------------------------------------------------- 
     
    293294!----------------------------------------------------------------------- 
    294295   !                       !  Type of the operator : 
    295    !                           !  no diffusion: set ln_dynldf_lap=..._blp=F  
     296   ln_dynldf_NONE=  .false.    !           No operator (no explicit diffusion) 
    296297   ln_dynldf_lap =  .false.    !    laplacian operator 
    297298   ln_dynldf_blp =  .true.     !  bilaplacian operator 
  • branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/CONFIG/C1D_PAPA/EXP00/namelist_cfg

    r8215 r8568  
    6060/ 
    6161!----------------------------------------------------------------------- 
    62 &namcrs        !   Grid coarsening for dynamics output and/or 
    63                !   passive tracer coarsened online simulations 
    64 !----------------------------------------------------------------------- 
    65 / 
    66 !----------------------------------------------------------------------- 
    6762&namc1d        !   1D configuration options                             ("key_c1d") 
    6863!----------------------------------------------------------------------- 
     
    110105   sn_slp      = 'slp.15JUNE2009_fill'        ,         6         , 'SLP',        .false.    , .true. , 'yearly'  , 'weights_core_orca2_bilinear_noc.nc'  , ''       , '' 
    111106 
    112    nn_bulk_algo = 1        !  Bulk algorithm to use to compute bulk transfer coefficients Cd, Ce and Ch 
    113                            !  1 => "NCAR" algorithm        (Large and Yeager, 2008) 
    114                            !  2 => "COARE 3.0" algorithm   (Fairall et al 2003) 
    115                            !  3 => "ECMWF" algorithm       (IFS cycle 31) 
    116                            !  4 => "COARE 3.5" algorithm   (Edson et al 2013) 
     107   !                    !  bulk algorithm : 
     108   ln_NCAR     = .true.    ! "NCAR"      algorithm   (Large and Yeager 2008) 
     109   ln_COARE_3p0= .false.   ! "COARE 3.0" algorithm   (Fairall et al. 2003) 
     110   ln_COARE_3p5= .false.   ! "COARE 3.5" algorithm   (Edson et al. 2013) 
     111   ln_ECMWF    = .false.   ! "ECMWF"     algorithm   (IFS cycle 31) 
    117112 
    118113   rn_zqt      =  2.       !  Air temperature and humidity reference height (m) 
     
    123118/ 
    124119!----------------------------------------------------------------------- 
    125 &namsbc_sas    !   analytical surface boundary condition 
    126 !----------------------------------------------------------------------- 
    127 / 
    128 !----------------------------------------------------------------------- 
    129 &namtra_qsr    !   penetrative solar radiation 
     120&namtra_qsr    !   penetrative solar radiation                          (ln_traqsr =T) 
    130121!----------------------------------------------------------------------- 
    131122!              !  file name  ! frequency (hours) ! variable  ! time interp. !  clim  ! 'yearly'/ ! weights  ! rotation ! land/sea mask ! 
     
    134125/ 
    135126!----------------------------------------------------------------------- 
    136 &namsbc_rnf    !   runoffs namelist surface boundary condition 
    137 !----------------------------------------------------------------------- 
    138    ln_rnf_mouth = .false.   !  specific treatment at rivers mouths 
    139 / 
    140 !----------------------------------------------------------------------- 
    141127&namsbc_apr    !   Atmospheric pressure used as ocean forcing or in bulk 
    142128!----------------------------------------------------------------------- 
     
    154140/ 
    155141!----------------------------------------------------------------------- 
    156 &namberg       !   iceberg parameters 
    157 !----------------------------------------------------------------------- 
    158 / 
    159 !----------------------------------------------------------------------- 
    160 &namlbc        !   lateral momentum boundary condition 
    161 !----------------------------------------------------------------------- 
    162    rn_shlat    =    0.     !  shlat = 0  !  0 < shlat < 2  !  shlat = 2  !  2 < shlat 
    163 / 
    164 !----------------------------------------------------------------------- 
    165 &namagrif      !  AGRIF zoom                                            ("key_agrif") 
    166 !----------------------------------------------------------------------- 
    167 / 
    168 !----------------------------------------------------------------------- 
    169 &nam_tide      !    tide parameters 
    170 !----------------------------------------------------------------------- 
    171 / 
    172 !----------------------------------------------------------------------- 
    173 &nambdy        !  unstructured open boundaries                           
    174 !----------------------------------------------------------------------- 
    175 / 
    176 !----------------------------------------------------------------------- 
    177 &nambdy_dta      !  open boundaries - external data            
    178 !----------------------------------------------------------------------- 
    179 / 
    180 !----------------------------------------------------------------------- 
    181 &nambdy_tide     ! tidal forcing at open boundaries 
    182 !----------------------------------------------------------------------- 
    183 / 
    184 !----------------------------------------------------------------------- 
    185142&namdrg            !   top/bottom drag coefficient                      (default: NO selection) 
    186143!----------------------------------------------------------------------- 
     
    192149/ 
    193150!----------------------------------------------------------------------- 
    194 &nambbl        !   bottom boundary layer scheme 
    195 !----------------------------------------------------------------------- 
    196 / 
    197 !----------------------------------------------------------------------- 
    198151&nameos        !   ocean physical parameters 
    199152!----------------------------------------------------------------------- 
     
    203156&namtra_adv    !   advection scheme for tracer 
    204157!----------------------------------------------------------------------- 
    205 ! C1D : no advection scheme  
    206 / 
    207 !----------------------------------------------------------------------- 
    208 &namtra_adv_mle !  mixed layer eddy parametrisation (Fox-Kemper param) 
     158   ln_traadv_NONE= .true.  !  No tracer advection 
     159/ 
     160!----------------------------------------------------------------------- 
     161&namtra_adv_mle !  mixed layer eddy parametrisation (Fox-Kemper param)  (default: NO) 
    209162!----------------------------------------------------------------------- 
    210163/ 
     
    212165&namtra_ldf    !   lateral diffusion scheme for tracers 
    213166!----------------------------------------------------------------------- 
    214 ! C1D : no lateral diffusion   
    215 / 
    216 !----------------------------------------------------------------------- 
    217 &namtra_ldfeiv !   eddy induced velocity param. 
    218 !----------------------------------------------------------------------- 
    219 ! C1D : no eiv   
     167   ln_traldf_NONE= .true.  ! No operator (no explicit diffusion) 
     168/ 
     169!----------------------------------------------------------------------- 
     170&namtra_ldfeiv !   eddy induced velocity param.                         (default: NO) 
     171!----------------------------------------------------------------------- 
    220172/ 
    221173!----------------------------------------------------------------------- 
     
    225177/ 
    226178!----------------------------------------------------------------------- 
    227 &namdyn_adv    !   formulation of the momentum advection 
    228 !----------------------------------------------------------------------- 
    229 ! C1D : no advection scheme  
     179&namdyn_adv    !   formulation of the momentum advection                (default: None) 
     180!----------------------------------------------------------------------- 
     181   ln_dynadv_NONE= .true.  !  linear dynamics (no momentum advection) 
    230182/ 
    231183!----------------------------------------------------------------------- 
     
    252204&namdyn_ldf    !   lateral diffusion on momentum 
    253205!----------------------------------------------------------------------- 
    254    ln_dynldf_lap    =  .false.  !  laplacian operator 
     206   ln_dynldf_NONE= .true.     ! No operator (no explicit diffusion) 
    255207/ 
    256208!----------------------------------------------------------------------- 
     
    302254/ 
    303255!----------------------------------------------------------------------- 
    304 &nammpp        !   Massively Parallel Processing                        ("key_mpp_mpi) 
    305 !----------------------------------------------------------------------- 
    306 / 
    307 !----------------------------------------------------------------------- 
    308256&namctl        !   Control prints & Benchmark 
    309 !----------------------------------------------------------------------- 
    310 / 
    311 !----------------------------------------------------------------------- 
    312 &namnc4        !   netcdf4 chunking and compression settings            ("key_netcdf4") 
    313257!----------------------------------------------------------------------- 
    314258/ 
     
    319263/ 
    320264!----------------------------------------------------------------------- 
    321 &namflo       !   float parameters                                      ("key_float") 
    322 !----------------------------------------------------------------------- 
    323 / 
    324 !----------------------------------------------------------------------- 
    325 &namptr       !   Poleward Transport Diagnostic 
    326 !----------------------------------------------------------------------- 
    327 / 
    328 !----------------------------------------------------------------------- 
    329265&namhsb       !  Heat and salt budgets 
    330266!----------------------------------------------------------------------- 
    331267/ 
    332268!----------------------------------------------------------------------- 
    333 &namdct        ! transports through sections 
    334 !----------------------------------------------------------------------- 
    335     nn_dct      = 60       !  time step frequency for transports computing 
    336     nn_dctwri   = 60       !  time step frequency for transports writing 
    337     nn_secdebug = 0        !      0 : no section to debug 
    338 / 
    339 !----------------------------------------------------------------------- 
    340269&namobs       !  observation usage switch                               ('key_diaobs') 
    341270!----------------------------------------------------------------------- 
    342271/ 
    343272!----------------------------------------------------------------------- 
    344 &nam_asminc   !   assimilation increments                               ('key_asminc') 
    345 !----------------------------------------------------------------------- 
    346 / 
    347 !----------------------------------------------------------------------- 
    348273&namsbc_wave   ! External fields from wave model 
    349274!----------------------------------------------------------------------- 
  • branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/CONFIG/GYRE_BFM/EXP00/namelist_cfg

    r8215 r8568  
    142142/ 
    143143!----------------------------------------------------------------------- 
    144 &namtra_adv    !   advection scheme for tracer 
     144&namtra_adv    !   advection scheme for tracer                          (default: No selection) 
    145145!----------------------------------------------------------------------- 
    146146   ln_traadv_fct =  .true.   !  FCT scheme 
    147147      nn_fct_h   =  2               !  =2/4, horizontal 2nd / 4th order  
    148148      nn_fct_v   =  2               !  =2/4, vertical   2nd / COMPACT 4th order  
    149       nn_fct_zts =  0               !  >=1,  2nd order FCT scheme with vertical sub-timestepping 
    150       !                             !        (number of sub-timestep = nn_fct_zts) 
    151 / 
    152 !----------------------------------------------------------------------- 
    153 &namtra_adv_mle !  mixed layer eddy parametrisation (Fox-Kemper param) 
    154 !----------------------------------------------------------------------- 
    155 / 
    156 !---------------------------------------------------------------------------------- 
    157 &namtra_ldf    !   lateral diffusion scheme for tracers 
    158 !---------------------------------------------------------------------------------- 
     149/ 
     150!----------------------------------------------------------------------- 
     151&namtra_adv_mle !  mixed layer eddy parametrisation (Fox-Kemper param)  (default: NO) 
     152!----------------------------------------------------------------------- 
     153/ 
     154!----------------------------------------------------------------------- 
     155&namtra_ldf    !   lateral diffusion scheme for tracers                 (default: No selection) 
     156!----------------------------------------------------------------------- 
    159157   !                       !  Operator type: 
     158   ln_traldf_NONE  = .false.   !           No operator (no explicit advection) 
    160159   ln_traldf_lap   =  .true.   !    laplacian operator 
    161160   ln_traldf_blp   =  .false.  !  bilaplacian operator 
     
    185184   rn_bht_0        = 1.e+12    !  lateral eddy diffusivity (bilap. operator) [m4/s] 
    186185/ 
    187 !---------------------------------------------------------------------------------- 
    188 &namtra_ldfeiv !   eddy induced velocity param. 
    189 !---------------------------------------------------------------------------------- 
     186!----------------------------------------------------------------------- 
     187&namtra_ldfeiv !   eddy induced velocity param.                         (default: NO) 
     188!----------------------------------------------------------------------- 
    190189   ln_ldfeiv     =.false.   ! use eddy induced velocity parameterization 
    191190/ 
     
    196195/ 
    197196!----------------------------------------------------------------------- 
    198 &namdyn_adv    !   formulation of the momentum advection 
    199 !----------------------------------------------------------------------- 
     197&namdyn_adv    !   formulation of the momentum advection                (default: No selection) 
     198!----------------------------------------------------------------------- 
     199   ln_dynadv_vec = .true.  !  vector form - 2nd centered scheme 
     200     nn_dynkeg     = 0        ! grad(KE) scheme: =0   C2  ;  =1   Hollingsworth correction 
    200201/ 
    201202!----------------------------------------------------------------------- 
     
    219220!----------------------------------------------------------------------- 
    220221   !                       !  Type of the operator : 
    221    !                           !  no diffusion: set ln_dynldf_lap=..._blp=F  
     222   ln_dynldf_NONE=  .false.    !           No operator (no explicit diffusion) 
    222223   ln_dynldf_lap =  .true.     !    laplacian operator 
    223224   ln_dynldf_blp =  .false.    !  bilaplacian operator 
  • branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/CONFIG/GYRE_BFM/EXP00/namelist_top_cfg

    r5836 r8568  
    2222/ 
    2323!----------------------------------------------------------------------- 
    24 &namtrc_adv    !   advection scheme for passive tracer  
     24&namtrc_adv    !   advection scheme for passive tracer                  (default: NO selection) 
    2525!----------------------------------------------------------------------- 
    2626   ln_trcadv_fct =  .true.   !  FCT scheme 
    2727      nn_fct_h   =  2               !  =2/4, horizontal 2nd / 4th order  
    2828      nn_fct_v   =  2               !  =2/4, vertical   2nd / COMPACT 4th order  
    29       nn_fct_zts =  0               !  >=1,  2nd order FCT scheme with vertical sub-timestepping 
    30       !                             !        (number of sub-timestep = nn_fct_zts) 
    3129/ 
    3230!----------------------------------------------------------------------- 
  • branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/CONFIG/GYRE_PISCES/EXP00/namelist_cfg

    r8215 r8568  
    9292/ 
    9393!----------------------------------------------------------------------- 
    94 &namtra_adv    !   advection scheme for tracer 
     94&namtra_adv    !   advection scheme for tracer                          (default: No selection) 
    9595!----------------------------------------------------------------------- 
    9696   ln_traadv_fct =  .true.   !  FCT scheme 
    9797      nn_fct_h   =  2               !  =2/4, horizontal 2nd / 4th order  
    9898      nn_fct_v   =  2               !  =2/4, vertical   2nd / COMPACT 4th order  
    99       nn_fct_zts =  0               !  >=1,  2nd order FCT scheme with vertical sub-timestepping 
    100       !                             !        (number of sub-timestep = nn_fct_zts) 
    101 / 
    102 !----------------------------------------------------------------------- 
    103 &namtra_adv_mle !  mixed layer eddy parametrisation (Fox-Kemper param) 
    104 !----------------------------------------------------------------------- 
    105 / 
    106 !---------------------------------------------------------------------------------- 
    107 &namtra_ldf    !   lateral diffusion scheme for tracers 
    108 !---------------------------------------------------------------------------------- 
     99/ 
     100!----------------------------------------------------------------------- 
     101&namtra_adv_mle !  mixed layer eddy parametrisation (Fox-Kemper param)  (default: NO) 
     102!----------------------------------------------------------------------- 
     103/ 
     104!----------------------------------------------------------------------- 
     105&namtra_ldf    !   lateral diffusion scheme for tracers                 (default: No selection) 
     106!----------------------------------------------------------------------- 
    109107   !                       !  Operator type: 
     108   ln_traldf_NONE  =  .false.  !           No operator (no explicit advection) 
    110109   ln_traldf_lap   =  .true.   !    laplacian operator 
    111110   ln_traldf_blp   =  .false.  !  bilaplacian operator 
     
    146145/ 
    147146!----------------------------------------------------------------------- 
    148 &namdyn_adv    !   formulation of the momentum advection 
    149 !----------------------------------------------------------------------- 
    150 / 
    151 !----------------------------------------------------------------------- 
    152 &namdyn_vor    !   option of physics/algorithm (not control by CPP keys) 
     147&namdyn_adv    !   formulation of the momentum advection                (default: No selection) 
     148!----------------------------------------------------------------------- 
     149   ln_dynadv_vec = .true.  !  vector form - 2nd centered scheme 
     150     nn_dynkeg     = 0        ! grad(KE) scheme: =0   C2  ;  =1   Hollingsworth correction 
     151/ 
     152!----------------------------------------------------------------------- 
     153&namdyn_vor    !   option of physics/algorithm                          (default: No selection) 
    153154!----------------------------------------------------------------------- 
    154155   ln_dynvor_ene = .true.  !  enstrophy conserving scheme 
     
    170171/ 
    171172!----------------------------------------------------------------------- 
    172 &namdyn_ldf    !   lateral diffusion on momentum 
     173&namdyn_ldf    !   lateral diffusion on momentum                        (default: No selection) 
    173174!----------------------------------------------------------------------- 
    174175   !                       !  Type of the operator : 
    175    !                           !  no diffusion: set ln_dynldf_lap=..._blp=F  
     176   ln_dynldf_NONE=  .false.    !           No operator (no explicit diffusion) 
    176177   ln_dynldf_lap =  .true.     !    laplacian operator 
    177178   ln_dynldf_blp =  .false.    !  bilaplacian operator 
     
    197198   rn_ahm_0_lap     = 100000.   !  horizontal laplacian eddy viscosity   [m2/s] 
    198199/ 
     200 
    199201!!====================================================================== 
    200202!!                     vertical physics namelists                     !! 
  • branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/CONFIG/GYRE_PISCES/EXP00/namelist_top_cfg

    r8215 r8568  
    2929/ 
    3030!----------------------------------------------------------------------- 
    31 &namtrc_adv    !   advection scheme for passive tracer 
     31&namtrc_adv    !   advection scheme for passive tracer                  (default: NO selection) 
    3232!----------------------------------------------------------------------- 
    3333   ln_trcadv_fct =  .true.   !  FCT scheme 
    3434      nn_fct_h   =  2               !  =2/4, horizontal 2nd / 4th order 
    3535      nn_fct_v   =  2               !  =2/4, vertical   2nd / COMPACT 4th order 
    36       nn_fct_zts =  0               !  >=1,  2nd order FCT scheme with vertical sub-timestepping 
    37       !                             !        (number of sub-timestep = nn_fct_zts) 
    3836/ 
    3937!----------------------------------------------------------------------- 
  • branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/CONFIG/ORCA2_LIM3_PISCES/EXP00/1_namelist_cfg

    r8215 r8568  
    116116/ 
    117117!----------------------------------------------------------------------- 
    118 &namtra_adv    !   advection scheme for tracer 
     118&namtra_adv    !   advection scheme for tracer                          (default: NO selection) 
    119119!----------------------------------------------------------------------- 
    120120   ln_traadv_fct =  .true.    !  FCT scheme 
    121121      nn_fct_h   =  2               !  =2/4, horizontal 2nd / 4th order  
    122122      nn_fct_v   =  2               !  =2/4, vertical   2nd / COMPACT 4th order  
    123       nn_fct_zts =  0               !  >=1,  2nd order FCT scheme with vertical sub-timestepping 
    124       !                             !        (number of sub-timestep = nn_fct_zts) 
    125123/ 
    126124!----------------------------------------------------------------------- 
    127125&namtra_ldf    !   lateral diffusion scheme for tracers 
    128 !---------------------------------------------------------------------------------- 
     126!----------------------------------------------------------------------- 
    129127   !                       !  Operator type: 
    130128   ln_traldf_lap   =  .true.   !    laplacian operator 
     
    161159/ 
    162160!----------------------------------------------------------------------- 
    163 &namdyn_adv    !   formulation of the momentum advection 
    164 !----------------------------------------------------------------------- 
     161&namdyn_adv    !   formulation of the momentum advection                (default: No selection) 
     162!----------------------------------------------------------------------- 
     163   ln_dynadv_NONE= .false. !  linear dynamics (no momentum advection) 
     164   ln_dynadv_vec = .true.  !  vector form - 2nd centered scheme 
     165     nn_dynkeg     = 0        ! grad(KE) scheme: =0   C2  ;  =1   Hollingsworth correction 
     166   ln_dynadv_cen2= .false. !  flux form - 2nd order centered scheme 
     167   ln_dynadv_ubs = .false. !  flux form - 3rd order UBS      scheme 
    165168 
    166169!----------------------------------------------------------------------- 
  • branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/CONFIG/ORCA2_LIM3_PISCES/EXP00/namelist_cfg

    r8215 r8568  
    123123/ 
    124124!----------------------------------------------------------------------- 
    125 &namtra_adv    !   advection scheme for tracer 
    126 !----------------------------------------------------------------------- 
    127    ln_traadv_fct =  .true.    !  FCT scheme 
     125&namtra_adv    !   advection scheme for tracer                          (default: NO advection) 
     126!----------------------------------------------------------------------- 
     127   ln_traadv_fct = .true.     !  FCT scheme 
    128128      nn_fct_h   =  2               !  =2/4, horizontal 2nd / 4th order  
    129129      nn_fct_v   =  2               !  =2/4, vertical   2nd / COMPACT 4th order  
    130       nn_fct_zts =  0               !  > 1 , 2nd order FCT scheme with vertical sub-timestepping 
    131       !                             !        (number of sub-timestep = nn_fct_zts) 
    132 / 
    133 !----------------------------------------------------------------------- 
    134 &namtra_adv_mle !  mixed layer eddy parametrisation (Fox-Kemper param) 
     130/ 
     131!----------------------------------------------------------------------- 
     132&namtra_adv_mle !   mixed layer eddy parametrisation (Fox-Kemper param) 
    135133!----------------------------------------------------------------------- 
    136134   ln_mle      = .true.   ! (T) use the Mixed Layer Eddy (MLE) parameterisation 
     
    140138!---------------------------------------------------------------------------------- 
    141139   !                       !  Operator type: 
     140   ln_traldf_NONE  =  .false.  !           No operator (no explicit advection) 
    142141   ln_traldf_lap   =  .true.   !    laplacian operator 
    143142   ln_traldf_blp   =  .false.  !  bilaplacian operator 
     
    186185/ 
    187186!----------------------------------------------------------------------- 
    188 &namdyn_adv    !   formulation of the momentum advection 
    189 !----------------------------------------------------------------------- 
     187&namdyn_adv    !   formulation of the momentum advection                (default: No selection) 
     188!----------------------------------------------------------------------- 
     189   ln_dynadv_NONE= .false. !  linear dynamics (no momentum advection) 
     190   ln_dynadv_vec = .true.  !  vector form - 2nd centered scheme 
     191     nn_dynkeg     = 0        ! grad(KE) scheme: =0   C2  ;  =1   Hollingsworth correction 
     192   ln_dynadv_cen2= .false. !  flux form - 2nd order centered scheme 
     193   ln_dynadv_ubs = .false. !  flux form - 3rd order UBS      scheme 
    190194/ 
    191195!----------------------------------------------------------------------- 
     
    212216!----------------------------------------------------------------------- 
    213217   !                       !  Type of the operator : 
    214    !                           !  no diffusion: set ln_dynldf_lap=..._blp=F  
     218   ln_dynldf_NONE=  .false.    !           No operator (no explicit diffusion) 
    215219   ln_dynldf_lap =  .true.     !    laplacian operator 
    216220   ln_dynldf_blp =  .false.    !  bilaplacian operator 
  • branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/CONFIG/ORCA2_LIM3_PISCES/EXP00/namelist_top_cfg

    r8215 r8568  
    7171/ 
    7272!----------------------------------------------------------------------- 
    73 &namtrc_adv    !   advection scheme for passive tracer  
     73&namtrc_adv    !   advection scheme for passive tracer                  (default: NO selection) 
    7474!----------------------------------------------------------------------- 
    7575   ln_trcadv_mus =  .true.  !  MUSCL scheme 
  • branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/CONFIG/ORCA2_OFF_PISCES/EXP00/namelist_cfg

    r8215 r8568  
    7171!---------------------------------------------------------------------------------- 
    7272   !                       !  Operator type: 
     73   ln_traldf_NONE  =  .false.  !           No operator (no explicit advection) 
    7374   ln_traldf_lap   =  .true.   !    laplacian operator 
    7475   ln_traldf_blp   =  .false.  !  bilaplacian operator 
  • branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/CONFIG/ORCA2_OFF_PISCES/EXP00/namelist_top_cfg

    r7646 r8568  
    7171/ 
    7272!----------------------------------------------------------------------- 
    73 &namtrc_adv    !   advection scheme for passive tracer  
     73&namtrc_adv    !   advection scheme for passive tracer                  (default: No selection) 
    7474!----------------------------------------------------------------------- 
    7575   ln_trcadv_mus =  .true.  !  MUSCL scheme 
  • branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/CONFIG/ORCA2_OFF_TRC/EXP00/namelist_cfg

    r8215 r8568  
    7272!---------------------------------------------------------------------------------- 
    7373   !                       !  Operator type: 
     74   ln_traldf_NONE  =  .false.  ! No explicit diffusion 
    7475   ln_traldf_lap   =  .true.   !    laplacian operator 
    7576   ln_traldf_blp   =  .false.  !  bilaplacian operator 
  • branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/CONFIG/ORCA2_SAS_LIM3/EXP00/namelist_cfg

    r8215 r8568  
    7474/ 
    7575!----------------------------------------------------------------------- 
    76 &namtra_adv    !   advection scheme for tracer 
     76&namtra_adv    !   advection scheme for tracer                          (default: NO selection) 
    7777!----------------------------------------------------------------------- 
    78    ln_traadv_fct =  .true.    !  FCT scheme 
    79       nn_fct_h   =  2               !  =2/4, horizontal 2nd / 4th order  
    80       nn_fct_v   =  2               !  =2/4, vertical   2nd / COMPACT 4th order  
    81       nn_fct_zts =  0               !  > 1 , 2nd order FCT scheme with vertical sub-timestepping 
    82       !                             !        (number of sub-timestep = nn_fct_zts) 
    8378/ 
    8479!----------------------------------------------------------------------- 
  • branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/CONFIG/SHARED/namelist_ref

    r8215 r8568  
    306306/ 
    307307!----------------------------------------------------------------------- 
    308 &namsbc_sas    !   Stand Alone Surface boundary condition 
     308&namsbc_sas    !   Stand-Alone Surface boundary condition 
    309309!----------------------------------------------------------------------- 
    310310!              !  file name  ! frequency (hours) ! variable  ! time interp.!  clim  ! 'yearly'/ ! weights  ! rotation ! land/sea mask ! 
     
    602602!!                ***  top/Bottom boundary condition  ***             !! 
    603603!!====================================================================== 
    604 !!   namdrg        top/bottom drag coefficient                          (default: NONE) 
     604!!   namdrg        top/bottom drag coefficient                          (default: NO selection) 
    605605!!   namdrg_top    top    friction                                      (ln_isfcav=T) 
    606606!!   namdrg_bot    bottom friction                                       
     
    666666 
    667667!!====================================================================== 
    668 !!                        Tracer (T & S ) namelists 
     668!!                        Tracer (T & S) namelists 
    669669!!====================================================================== 
    670670!!   nameos           equation of state 
     
    679679&nameos        !   ocean Equation Of Seawater                           (default: NO) 
    680680!----------------------------------------------------------------------- 
    681    ln_teos10   = .false.         !  = Use TEOS-10 equation of state 
    682    ln_eos80    = .false.         !  = Use EOS80 equation of state 
    683    ln_seos     = .false.         !  = Use simplified equation of state (S-EOS) 
     681   ln_teos10   = .false.         !  = Use TEOS-10 
     682   ln_eos80    = .false.         !  = Use EOS80 
     683   ln_seos     = .false.         !  = Use S-EOS (simplified Eq.) 
    684684                                 ! 
    685685   !                     ! S-EOS coefficients (ln_seos=T): 
     
    694694/ 
    695695!----------------------------------------------------------------------- 
    696 &namtra_adv    !   advection scheme for tracer                          (default: NO advection) 
    697 !----------------------------------------------------------------------- 
     696&namtra_adv    !   advection scheme for tracer                          (default: NO selection) 
     697!----------------------------------------------------------------------- 
     698   ln_traadv_NONE= .false. !  No tracer advection 
    698699   ln_traadv_cen = .false. !  2nd order centered scheme 
    699700      nn_cen_h   =  4            !  =2/4, horizontal 2nd order CEN / 4th order CEN 
     
    702703      nn_fct_h   =  2            !  =2/4, horizontal 2nd / 4th order  
    703704      nn_fct_v   =  2            !  =2/4, vertical   2nd / COMPACT 4th order  
    704       nn_fct_zts =  0            !  >=1,  2nd order FCT scheme with vertical sub-timestepping 
    705       !                          !        (number of sub-timestep = nn_fct_zts) 
    706705   ln_traadv_mus = .false. !  MUSCL scheme 
    707706      ln_mus_ups = .false.       !  use upstream scheme near river mouths 
     
    724723/ 
    725724!----------------------------------------------------------------------- 
    726 &namtra_ldf    !   lateral diffusion scheme for tracers                 (default: NO diffusion) 
     725&namtra_ldf    !   lateral diffusion scheme for tracers                 (default: NO selection) 
    727726!----------------------------------------------------------------------- 
    728727   !                       !  Operator type: 
    729    !                           !  no diffusion: set ln_traldf_lap=..._blp=F  
     728   ln_traldf_NONE  =  .false.  !  No explicit diffusion 
    730729   ln_traldf_lap   =  .false.  !    laplacian operator 
    731730   ln_traldf_blp   =  .false.  !  bilaplacian operator 
     
    759758&namtra_ldfeiv !   eddy induced velocity param.                         (default: NO) 
    760759!----------------------------------------------------------------------- 
    761    ln_ldfeiv     =.false. ! use eddy induced velocity parameterization 
     760   ln_ldfeiv     = .false. ! use eddy induced velocity parameterization 
    762761      rn_aeiv_0     = 2000.   ! eddy induced velocity coefficient   [m2/s] 
    763762      nn_aei_ijk_t  = 21      ! space/time variation of the eiv coeficient 
     
    790789!!====================================================================== 
    791790! 
    792 !----------------------------------------------------------------------- 
    793 &namdyn_adv    !   formulation of the momentum advection                (default: vector form) 
    794 !----------------------------------------------------------------------- 
    795    ln_dynadv_vec = .true.  !  vector form (T) or flux form (F) 
    796    nn_dynkeg     = 0       ! scheme for grad(KE): =0   C2  ;  =1   Hollingsworth correction 
    797    ln_dynadv_cen2= .false. !  flux form - 2nd order centered scheme 
    798    ln_dynadv_ubs = .false. !  flux form - 3rd order UBS      scheme 
    799    ln_dynzad_zts = .false. !  sub-time-stepping for vertical momentum advection 
    800 / 
    801791!----------------------------------------------------------------------- 
    802792&nam_vvl    !   vertical coordinate options                             (default: zstar) 
     
    814804/ 
    815805!----------------------------------------------------------------------- 
     806&namdyn_adv    !   formulation of the momentum advection                (default: NO selection) 
     807!----------------------------------------------------------------------- 
     808   ln_dynadv_NONE= .false. !  linear dynamics (no momentum advection) 
     809   ln_dynadv_vec = .false. !  vector form - 2nd centered scheme 
     810     nn_dynkeg     = 0        ! grad(KE) scheme: =0   C2  ;  =1   Hollingsworth correction 
     811   ln_dynadv_cen2= .false. !  flux form - 2nd order centered scheme 
     812   ln_dynadv_ubs = .false. !  flux form - 3rd order UBS      scheme 
     813/ 
     814!----------------------------------------------------------------------- 
    816815&namdyn_vor    !   Vorticity / Coriolis scheme                          (default: NO) 
    817816!----------------------------------------------------------------------- 
     
    848847/ 
    849848!----------------------------------------------------------------------- 
    850 &namdyn_ldf    !   lateral diffusion on momentum                        (default: NO) 
     849&namdyn_ldf    !   lateral diffusion on momentum                        (default: NO selection) 
    851850!----------------------------------------------------------------------- 
    852851   !                       !  Type of the operator : 
    853    !                           !  no diffusion: set ln_dynldf_lap=..._blp=F  
     852   ln_dynldf_NONE=  .false.    !  No operator (i.e. no explicit diffusion) 
    854853   ln_dynldf_lap =  .false.    !    laplacian operator 
    855854   ln_dynldf_blp =  .false.    !  bilaplacian operator 
     
    891890&namzdf        !   vertical physics                                     (default: NO selection) 
    892891!----------------------------------------------------------------------- 
    893    !                       ! type of vertical closure 
     892   !                       ! type of vertical closure (required) 
    894893   ln_zdfcst   = .false.      !  constant mixing 
    895894   ln_zdfric   = .false.      !  local Richardson dependent formulation (T =>   fill namzdf_ric) 
     
    971970   rn_charn      = 70000.  !  Charnock constant for wb induced roughness length 
    972971   rn_hsro       =  0.02   !  Minimum surface roughness 
    973    rn_frac_hs    =   1.3   !  Fraction of wave height as roughness (if nn_z0_met=2) 
     972   rn_frac_hs    =   1.3   !  Fraction of wave height as roughness (if nn_z0_met>1) 
    974973   nn_z0_met     =     2   !  Method for surface roughness computation (0/1/2/3) 
    975974   !                             ! =3 requires ln_wave=T 
     
    10161015   nn_isplt    =    1      !  number of processors in i-direction 
    10171016   nn_jsplt    =    1      !  number of processors in j-direction 
    1018    nn_timing   =    0      !  timing by routine activated (=1) creates timing.output file, or not (=0) 
    1019    nn_diacfl   =    0      !  Write out CFL diagnostics (=1) in cfl_diagnostics.ascii, or not (=0) 
     1017   ln_timing   = .false.   !  timing by routine write out in timing.output file 
     1018   ln_diacfl   = .false.   !  CFL diagnostics write out in cfl_diagnostics.ascii 
    10201019/ 
    10211020!----------------------------------------------------------------------- 
  • branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/CONFIG/SHARED/namelist_top_ref

    r8215 r8568  
    6161/ 
    6262!----------------------------------------------------------------------- 
    63 &namtrc_adv      !   advection scheme for passive tracer  
     63&namtrc_adv      !   advection scheme for passive tracer                (default: NO selection) 
    6464!----------------------------------------------------------------------- 
     65   ln_trcadv_NONE=  .false.  !  No passive tracer advection 
    6566   ln_trcadv_cen =  .false.  !  2nd order centered scheme 
    6667      nn_cen_h   =  4               !  =2/4, horizontal 2nd order CEN / 4th order CEN 
     
    6970      nn_fct_h   =  2               !  =2/4, horizontal 2nd / 4th order  
    7071      nn_fct_v   =  2               !  =2/4, vertical   2nd / COMPACT 4th order  
    71       nn_fct_zts =  0               !  >=1,  2nd order FCT scheme with vertical sub-timestepping 
    72       !                             !        (number of sub-timestep = nn_fct_zts) 
    7372   ln_trcadv_mus =  .false.  !  MUSCL scheme 
    7473      ln_mus_ups =  .false.         !  use upstream scheme near river mouths 
  • branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/CONFIG/TEST_CASES/ISOMIP/EXP00/namelist_cfg

    r8215 r8568  
    230230      nn_fct_h   =  2               !  =2/4, horizontal 2nd / 4th order  
    231231      nn_fct_v   =  2               !  =2/4, vertical   2nd / COMPACT 4th order  
    232       nn_fct_zts =  0               !  >=1,  2nd order FCT scheme with vertical sub-timestepping 
    233       !                             !        (number of sub-timestep = nn_fct_zts) 
    234232/ 
    235233!----------------------------------------------------------------------- 
     
    280278!----------------------------------------------------------------------- 
    281279&namdyn_adv    !   formulation of the momentum advection 
     280!----------------------------------------------------------------------- 
     281   ln_dynadv_vec = .true.  !  vector form (T) or flux form (F) 
     282   nn_dynkeg     = 0       ! scheme for grad(KE): =0   C2  ;  =1   Hollingsworth correction 
     283   ln_dynadv_cen2= .false. !  flux form - 2nd order centered scheme 
     284   ln_dynadv_ubs = .false. !  flux form - 3rd order UBS      scheme 
     285/ 
    282286!----------------------------------------------------------------------- 
    283287/ 
  • branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/CONFIG/TEST_CASES/LOCK_EXCHANGE/EXP00/namelist_FCT2_flux_cen2_cfg

    r8215 r8568  
    9595      nn_fct_h   =  2            !  =2/4, horizontal 2nd / 4th order 
    9696      nn_fct_v   =  2            !  =2/4, vertical   2nd / COMPACT 4th order 
    97       nn_fct_zts =  0            !  >=1,  2nd order FCT scheme with vertical sub-timestepping 
    98       !                          !        (number of sub-timestep = nn_fct_zts) 
    9997   ln_traadv_mus = .false. !  MUSCL scheme 
    10098      ln_mus_ups = .false.       !  use upstream scheme near river mouths 
     
    130128   ln_dynadv_cen2= .true.  !  flux form - 2nd order centered scheme 
    131129   ln_dynadv_ubs = .false. !  flux form - 3rd order UBS      scheme 
    132    ln_dynzad_zts = .false. !  Use (T) sub timestepping for vertical momentum advection 
    133130/ 
    134131!----------------------------------------------------------------------- 
  • branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/CONFIG/TEST_CASES/LOCK_EXCHANGE/EXP00/namelist_FCT2_flux_ubs_cfg

    r8215 r8568  
    9595      nn_fct_h   =  2            !  =2/4, horizontal 2nd / 4th order 
    9696      nn_fct_v   =  2            !  =2/4, vertical   2nd / COMPACT 4th order 
    97       nn_fct_zts =  0            !  >=1,  2nd order FCT scheme with vertical sub-timestepping 
    98       !                          !        (number of sub-timestep = nn_fct_zts) 
    9997   ln_traadv_mus = .false. !  MUSCL scheme 
    10098      ln_mus_ups = .false.       !  use upstream scheme near river mouths 
     
    130128   ln_dynadv_cen2= .false. !  flux form - 2nd order centered scheme 
    131129   ln_dynadv_ubs = .true.  !  flux form - 3rd order UBS      scheme 
    132    ln_dynzad_zts = .false. !  Use (T) sub timestepping for vertical momentum advection 
    133130/ 
    134131!----------------------------------------------------------------------- 
  • branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/CONFIG/TEST_CASES/LOCK_EXCHANGE/EXP00/namelist_FCT2_vect_eenH_cfg

    r8215 r8568  
    9595      nn_fct_h   =  2            !  =2/4, horizontal 2nd / 4th order 
    9696      nn_fct_v   =  2            !  =2/4, vertical   2nd / COMPACT 4th order 
    97       nn_fct_zts =  0            !  >=1,  2nd order FCT scheme with vertical sub-timestepping 
    98       !                          !        (number of sub-timestep = nn_fct_zts) 
    9997   ln_traadv_mus = .false. !  MUSCL scheme 
    10098      ln_mus_ups = .false.       !  use upstream scheme near river mouths 
     
    130128   ln_dynadv_cen2= .false. !  flux form - 2nd order centered scheme 
    131129   ln_dynadv_ubs = .false. !  flux form - 3rd order UBS      scheme 
    132    ln_dynzad_zts = .false. !  Use (T) sub timestepping for vertical momentum advection 
    133130/ 
    134131!----------------------------------------------------------------------- 
  • branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/CONFIG/TEST_CASES/LOCK_EXCHANGE/EXP00/namelist_FCT2_vect_een_cfg

    r8215 r8568  
    9595      nn_fct_h   =  2            !  =2/4, horizontal 2nd / 4th order 
    9696      nn_fct_v   =  2            !  =2/4, vertical   2nd / COMPACT 4th order 
    97       nn_fct_zts =  0            !  >=1,  2nd order FCT scheme with vertical sub-timestepping 
    98       !                          !        (number of sub-timestep = nn_fct_zts) 
    9997   ln_traadv_mus = .false. !  MUSCL scheme 
    10098      ln_mus_ups = .false.       !  use upstream scheme near river mouths 
     
    130128   ln_dynadv_cen2= .false. !  flux form - 2nd order centered scheme 
    131129   ln_dynadv_ubs = .false. !  flux form - 3rd order UBS      scheme 
    132    ln_dynzad_zts = .false. !  Use (T) sub timestepping for vertical momentum advection 
    133130/ 
    134131!----------------------------------------------------------------------- 
  • branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/CONFIG/TEST_CASES/LOCK_EXCHANGE/EXP00/namelist_FCT2_vect_ene_cfg

    r8215 r8568  
    9595      nn_fct_h   =  2            !  =2/4, horizontal 2nd / 4th order 
    9696      nn_fct_v   =  2            !  =2/4, vertical   2nd / COMPACT 4th order 
    97       nn_fct_zts =  0            !  >=1,  2nd order FCT scheme with vertical sub-timestepping 
    98       !                          !        (number of sub-timestep = nn_fct_zts) 
    9997   ln_traadv_mus = .false. !  MUSCL scheme 
    10098      ln_mus_ups = .false.       !  use upstream scheme near river mouths 
     
    130128   ln_dynadv_cen2= .false. !  flux form - 2nd order centered scheme 
    131129   ln_dynadv_ubs = .false. !  flux form - 3rd order UBS      scheme 
    132    ln_dynzad_zts = .false. !  Use (T) sub timestepping for vertical momentum advection 
    133130/ 
    134131!----------------------------------------------------------------------- 
  • branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/CONFIG/TEST_CASES/LOCK_EXCHANGE/EXP00/namelist_FCT2_vect_ens_cfg

    r8215 r8568  
    9595      nn_fct_h   =  2            !  =2/4, horizontal 2nd / 4th order 
    9696      nn_fct_v   =  2            !  =2/4, vertical   2nd / COMPACT 4th order 
    97       nn_fct_zts =  0            !  >=1,  2nd order FCT scheme with vertical sub-timestepping 
    98       !                          !        (number of sub-timestep = nn_fct_zts) 
    9997   ln_traadv_mus = .false. !  MUSCL scheme 
    10098      ln_mus_ups = .false.       !  use upstream scheme near river mouths 
     
    130128   ln_dynadv_cen2= .false. !  flux form - 2nd order centered scheme 
    131129   ln_dynadv_ubs = .false. !  flux form - 3rd order UBS      scheme 
    132    ln_dynzad_zts = .false. !  Use (T) sub timestepping for vertical momentum advection 
    133130/ 
    134131!----------------------------------------------------------------------- 
  • branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/CONFIG/TEST_CASES/LOCK_EXCHANGE/EXP00/namelist_FCT4_flux_cen2_cfg

    r8215 r8568  
    9595      nn_fct_h   =  4            !  =2/4, horizontal 2nd / 4th order 
    9696      nn_fct_v   =  4            !  =2/4, vertical   2nd / COMPACT 4th order 
    97       nn_fct_zts =  0            !  >=1,  2nd order FCT scheme with vertical sub-timestepping 
    98       !                          !        (number of sub-timestep = nn_fct_zts) 
    9997   ln_traadv_mus = .false. !  MUSCL scheme 
    10098      ln_mus_ups = .false.       !  use upstream scheme near river mouths 
     
    130128   ln_dynadv_cen2= .true.  !  flux form - 2nd order centered scheme 
    131129   ln_dynadv_ubs = .false. !  flux form - 3rd order UBS      scheme 
    132    ln_dynzad_zts = .false. !  Use (T) sub timestepping for vertical momentum advection 
    133130/ 
    134131!----------------------------------------------------------------------- 
  • branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/CONFIG/TEST_CASES/LOCK_EXCHANGE/EXP00/namelist_FCT4_flux_ubs_cfg

    r8215 r8568  
    9595      nn_fct_h   =  4            !  =2/4, horizontal 2nd / 4th order 
    9696      nn_fct_v   =  4            !  =2/4, vertical   2nd / COMPACT 4th order 
    97       nn_fct_zts =  0            !  >=1,  2nd order FCT scheme with vertical sub-timestepping 
    98       !                          !        (number of sub-timestep = nn_fct_zts) 
    9997   ln_traadv_mus = .false. !  MUSCL scheme 
    10098      ln_mus_ups = .false.       !  use upstream scheme near river mouths 
     
    130128   ln_dynadv_cen2= .false. !  flux form - 2nd order centered scheme 
    131129   ln_dynadv_ubs = .true.  !  flux form - 3rd order UBS      scheme 
    132    ln_dynzad_zts = .false. !  Use (T) sub timestepping for vertical momentum advection 
    133130/ 
    134131!----------------------------------------------------------------------- 
  • branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/CONFIG/TEST_CASES/LOCK_EXCHANGE/EXP00/namelist_FCT4_vect_eenH_cfg

    r8215 r8568  
    9595      nn_fct_h   =  4            !  =2/4, horizontal 2nd / 4th order 
    9696      nn_fct_v   =  4            !  =2/4, vertical   2nd / COMPACT 4th order 
    97       nn_fct_zts =  0            !  >=1,  2nd order FCT scheme with vertical sub-timestepping 
    98       !                          !        (number of sub-timestep = nn_fct_zts) 
    9997   ln_traadv_mus = .false. !  MUSCL scheme 
    10098      ln_mus_ups = .false.       !  use upstream scheme near river mouths 
     
    130128   ln_dynadv_cen2= .false. !  flux form - 2nd order centered scheme 
    131129   ln_dynadv_ubs = .false. !  flux form - 3rd order UBS      scheme 
    132    ln_dynzad_zts = .false. !  Use (T) sub timestepping for vertical momentum advection 
    133130/ 
    134131!----------------------------------------------------------------------- 
  • branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/CONFIG/TEST_CASES/LOCK_EXCHANGE/EXP00/namelist_FCT4_vect_een_cfg

    r8215 r8568  
    9595      nn_fct_h   =  4            !  =2/4, horizontal 2nd / 4th order 
    9696      nn_fct_v   =  4            !  =2/4, vertical   2nd / COMPACT 4th order 
    97       nn_fct_zts =  0            !  >=1,  2nd order FCT scheme with vertical sub-timestepping 
    98       !                          !        (number of sub-timestep = nn_fct_zts) 
    9997   ln_traadv_mus = .false. !  MUSCL scheme 
    10098      ln_mus_ups = .false.       !  use upstream scheme near river mouths 
     
    130128   ln_dynadv_cen2= .false. !  flux form - 2nd order centered scheme 
    131129   ln_dynadv_ubs = .false. !  flux form - 3rd order UBS      scheme 
    132    ln_dynzad_zts = .false. !  Use (T) sub timestepping for vertical momentum advection 
    133130/ 
    134131!----------------------------------------------------------------------- 
  • branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/CONFIG/TEST_CASES/LOCK_EXCHANGE/EXP00/namelist_FCT4_vect_ene_cfg

    r8215 r8568  
    9595      nn_fct_h   =  4            !  =2/4, horizontal 2nd / 4th order 
    9696      nn_fct_v   =  4            !  =2/4, vertical   2nd / COMPACT 4th order 
    97       nn_fct_zts =  0            !  >=1,  2nd order FCT scheme with vertical sub-timestepping 
    98       !                          !        (number of sub-timestep = nn_fct_zts) 
    9997   ln_traadv_mus = .false. !  MUSCL scheme 
    10098      ln_mus_ups = .false.       !  use upstream scheme near river mouths 
     
    130128   ln_dynadv_cen2= .false. !  flux form - 2nd order centered scheme 
    131129   ln_dynadv_ubs = .false. !  flux form - 3rd order UBS      scheme 
    132    ln_dynzad_zts = .false. !  Use (T) sub timestepping for vertical momentum advection 
    133130/ 
    134131!----------------------------------------------------------------------- 
  • branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/CONFIG/TEST_CASES/LOCK_EXCHANGE/EXP00/namelist_FCT4_vect_ens_cfg

    r8215 r8568  
    9595      nn_fct_h   =  4            !  =2/4, horizontal 2nd / 4th order 
    9696      nn_fct_v   =  4            !  =2/4, vertical   2nd / COMPACT 4th order 
    97       nn_fct_zts =  0            !  >=1,  2nd order FCT scheme with vertical sub-timestepping 
    98       !                          !        (number of sub-timestep = nn_fct_zts) 
    9997   ln_traadv_mus = .false. !  MUSCL scheme 
    10098      ln_mus_ups = .false.       !  use upstream scheme near river mouths 
     
    130128   ln_dynadv_cen2= .false. !  flux form - 2nd order centered scheme 
    131129   ln_dynadv_ubs = .false. !  flux form - 3rd order UBS      scheme 
    132    ln_dynzad_zts = .false. !  Use (T) sub timestepping for vertical momentum advection 
    133130/ 
    134131!----------------------------------------------------------------------- 
  • branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/CONFIG/TEST_CASES/LOCK_EXCHANGE/EXP00/namelist_cfg

    r8215 r8568  
    9595      nn_fct_h   =  2            !  =2/4, horizontal 2nd / 4th order 
    9696      nn_fct_v   =  2            !  =2/4, vertical   2nd / COMPACT 4th order 
    97       nn_fct_zts =  0            !  >=1,  2nd order FCT scheme with vertical sub-timestepping 
    98       !                          !        (number of sub-timestep = nn_fct_zts) 
    9997   ln_traadv_mus = .false. !  MUSCL scheme 
    10098      ln_mus_ups = .false.       !  use upstream scheme near river mouths 
     
    130128   ln_dynadv_cen2= .false. !  flux form - 2nd order centered scheme 
    131129   ln_dynadv_ubs = .true.  !  flux form - 3rd order UBS      scheme 
    132    ln_dynzad_zts = .false. !  Use (T) sub timestepping for vertical momentum advection 
    133130/ 
    134131!----------------------------------------------------------------------- 
  • branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/CONFIG/TEST_CASES/OVERFLOW/EXP00/namelist_cfg

    r8215 r8568  
    8080/ 
    8181!----------------------------------------------------------------------- 
    82 &namtra_adv    !   advection scheme for tracer 
     82&namtra_adv    !   advection scheme for tracer                          (default: NO selection) 
    8383!----------------------------------------------------------------------- 
    8484   ln_traadv_cen = .false. !  2nd order centered scheme 
     
    8888      nn_fct_h   =  2            !  =2/4, horizontal 2nd / 4th order 
    8989      nn_fct_v   =  2            !  =2/4, vertical   2nd / COMPACT 4th order 
    90       nn_fct_zts =  0            !  >=1,  2nd order FCT scheme with vertical sub-timestepping 
    91       !                          !        (number of sub-timestep = nn_fct_zts) 
    9290   ln_traadv_mus = .false. !  MUSCL scheme 
    9391      ln_mus_ups = .false.       !  use upstream scheme near river mouths 
     
    117115/ 
    118116!----------------------------------------------------------------------- 
    119 &namdyn_adv    !   formulation of the momentum advection 
    120 !----------------------------------------------------------------------- 
     117&namdyn_adv    !   formulation of the momentum advection                (default: NO selection) 
     118!----------------------------------------------------------------------- 
     119   ln_dynadv_NONE= .false. !  linear dynamics (no momentum advection) 
    121120   ln_dynadv_vec = .false. !  vector form (T) or flux form (F) 
    122121   nn_dynkeg     = 0       ! scheme for grad(KE): =0   C2  ;  =1   Hollingsworth correction 
    123122   ln_dynadv_cen2= .false. !  flux form - 2nd order centered scheme 
    124123   ln_dynadv_ubs = .true.  !  flux form - 3rd order UBS      scheme 
    125    ln_dynzad_zts = .false. !  Use (T) sub timestepping for vertical momentum advection 
    126124/ 
    127125!----------------------------------------------------------------------- 
  • branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/CONFIG/TEST_CASES/OVERFLOW/EXP00/namelist_sco_FCT2_flux_ubs_cfg

    r8215 r8568  
    8989      nn_fct_h   =  2            !  =2/4, horizontal 2nd / 4th order 
    9090      nn_fct_v   =  2            !  =2/4, vertical   2nd / COMPACT 4th order 
    91       nn_fct_zts =  0            !  >=1,  2nd order FCT scheme with vertical sub-timestepping 
    92       !                          !        (number of sub-timestep = nn_fct_zts) 
    9391   ln_traadv_mus = .false. !  MUSCL scheme 
    9492      ln_mus_ups = .false.       !  use upstream scheme near river mouths 
     
    118116/ 
    119117!----------------------------------------------------------------------- 
    120 &namdyn_adv    !   formulation of the momentum advection 
    121 !----------------------------------------------------------------------- 
     118&namdyn_adv    !   formulation of the momentum advection                (default: NO selection) 
     119!----------------------------------------------------------------------- 
     120   ln_dynadv_NONE= .false. !  linear dynamics (no momentum advection) 
    122121   ln_dynadv_vec = .false. !  vector form (T) or flux form (F) 
    123122   nn_dynkeg     = 0       ! scheme for grad(KE): =0   C2  ;  =1   Hollingsworth correction 
    124123   ln_dynadv_cen2= .false. !  flux form - 2nd order centered scheme 
    125124   ln_dynadv_ubs = .true.  !  flux form - 3rd order UBS      scheme 
    126    ln_dynzad_zts = .false. !  Use (T) sub timestepping for vertical momentum advection 
    127125/ 
    128126!----------------------------------------------------------------------- 
  • branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/CONFIG/TEST_CASES/OVERFLOW/EXP00/namelist_zps_FCT2_flux_ubs_cfg

    r8215 r8568  
    8989      nn_fct_h   =  2            !  =2/4, horizontal 2nd / 4th order 
    9090      nn_fct_v   =  2            !  =2/4, vertical   2nd / COMPACT 4th order 
    91       nn_fct_zts =  0            !  >=1,  2nd order FCT scheme with vertical sub-timestepping 
    92       !                          !        (number of sub-timestep = nn_fct_zts) 
    9391   ln_traadv_mus = .false. !  MUSCL scheme 
    9492      ln_mus_ups = .false.       !  use upstream scheme near river mouths 
     
    118116/ 
    119117!----------------------------------------------------------------------- 
    120 &namdyn_adv    !   formulation of the momentum advection 
    121 !----------------------------------------------------------------------- 
     118&namdyn_adv    !   formulation of the momentum advection                (default: NO selection) 
     119!----------------------------------------------------------------------- 
     120   ln_dynadv_NONE= .false. !  linear dynamics (no momentum advection) 
    122121   ln_dynadv_vec = .false. !  vector form (T) or flux form (F) 
    123122   nn_dynkeg     = 0       ! scheme for grad(KE): =0   C2  ;  =1   Hollingsworth correction 
    124123   ln_dynadv_cen2= .false. !  flux form - 2nd order centered scheme 
    125124   ln_dynadv_ubs = .true.  !  flux form - 3rd order UBS      scheme 
    126    ln_dynzad_zts = .false. !  Use (T) sub timestepping for vertical momentum advection 
    127125/ 
    128126!----------------------------------------------------------------------- 
  • branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/CONFIG/TEST_CASES/OVERFLOW/EXP00/namelist_zps_FCT4_flux_ubs_cfg

    r8215 r8568  
    8989      nn_fct_h   =  4            !  =2/4, horizontal 2nd / 4th order 
    9090      nn_fct_v   =  4            !  =2/4, vertical   2nd / COMPACT 4th order 
    91       nn_fct_zts =  0            !  >=1,  2nd order FCT scheme with vertical sub-timestepping 
    92       !                          !        (number of sub-timestep = nn_fct_zts) 
    9391   ln_traadv_mus = .false. !  MUSCL scheme 
    9492      ln_mus_ups = .false.       !  use upstream scheme near river mouths 
     
    118116/ 
    119117!----------------------------------------------------------------------- 
    120 &namdyn_adv    !   formulation of the momentum advection 
    121 !----------------------------------------------------------------------- 
     118&namdyn_adv    !   formulation of the momentum advection                (default: NO selection) 
     119!----------------------------------------------------------------------- 
     120   ln_dynadv_NONE= .false. !  linear dynamics (no momentum advection) 
    122121   ln_dynadv_vec = .false. !  vector form (T) or flux form (F) 
    123122   nn_dynkeg     = 0       ! scheme for grad(KE): =0   C2  ;  =1   Hollingsworth correction 
    124123   ln_dynadv_cen2= .false. !  flux form - 2nd order centered scheme 
    125124   ln_dynadv_ubs = .true.  !  flux form - 3rd order UBS      scheme 
    126    ln_dynzad_zts = .false. !  Use (T) sub timestepping for vertical momentum advection 
    127125/ 
    128126!----------------------------------------------------------------------- 
  • branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/CONFIG/TEST_CASES/OVERFLOW/EXP00/namelist_zps_FCT4_vect_een_cfg

    r8215 r8568  
    8989      nn_fct_h   =  4            !  =2/4, horizontal 2nd / 4th order 
    9090      nn_fct_v   =  4            !  =2/4, vertical   2nd / COMPACT 4th order 
    91       nn_fct_zts =  0            !  >=1,  2nd order FCT scheme with vertical sub-timestepping 
    92       !                          !        (number of sub-timestep = nn_fct_zts) 
    9391   ln_traadv_mus = .false. !  MUSCL scheme 
    9492      ln_mus_ups = .false.       !  use upstream scheme near river mouths 
     
    118116/ 
    119117!----------------------------------------------------------------------- 
    120 &namdyn_adv    !   formulation of the momentum advection 
    121 !----------------------------------------------------------------------- 
     118&namdyn_adv    !   formulation of the momentum advection                (default: NO selection) 
     119!----------------------------------------------------------------------- 
     120   ln_dynadv_NONE= .false. !  linear dynamics (no momentum advection) 
    122121   ln_dynadv_vec = .true.  !  vector form (T) or flux form (F) 
    123122   nn_dynkeg     = 0       ! scheme for grad(KE): =0   C2  ;  =1   Hollingsworth correction 
    124123   ln_dynadv_cen2= .false. !  flux form - 2nd order centered scheme 
    125124   ln_dynadv_ubs = .false. !  flux form - 3rd order UBS      scheme 
    126    ln_dynzad_zts = .false. !  Use (T) sub timestepping for vertical momentum advection 
    127125/ 
    128126!----------------------------------------------------------------------- 
  • branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/CONFIG/TEST_CASES/SAS_BIPER/EXP00/1_namelist_cfg

    r8215 r8568  
    9999      nn_fct_h   =  4               !  =2/4, horizontal 2nd / 4th order  
    100100      nn_fct_v   =  2               !  =2/4, vertical   2nd / COMPACT 4th order  
    101       nn_fct_zts =  0               !  > 1 , 2nd order FCT scheme with vertical sub-timestepping 
    102       !                             !        (number of sub-timestep = nn_fct_zts) 
    103101/ 
    104102!----------------------------------------------------------------------- 
     
    144142&namtra_dmp    !   tracer: T & S newtonian damping                      (default: NO) 
    145143!----------------------------------------------------------------------- 
    146 !----------------------------------------------------------------------- 
    147 &namdyn_adv    !   formulation of the momentum advection 
     144/ 
     145!----------------------------------------------------------------------- 
     146&namdyn_adv    !   formulation of the momentum advection                (default: NO selection) 
     147!----------------------------------------------------------------------- 
     148   ln_dynadv_NONE= .false. !  linear dynamics (no momentum advection) 
     149   ln_dynadv_vec = .true.  !  vector form (T) or flux form (F) 
     150   nn_dynkeg     = 0       ! scheme for grad(KE): =0   C2  ;  =1   Hollingsworth correction 
     151   ln_dynadv_cen2= .false. !  flux form - 2nd order centered scheme 
     152   ln_dynadv_ubs = .true.  !  flux form - 3rd order UBS      scheme 
    148153!----------------------------------------------------------------------- 
    149154/ 
  • branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/CONFIG/TEST_CASES/SAS_BIPER/EXP00/namelist_cfg

    r8215 r8568  
    100100/ 
    101101!----------------------------------------------------------------------- 
    102 &namtra_adv    !   advection scheme for tracer 
     102&namtra_adv    !   advection scheme for tracer                          (default: NO selection) 
    103103!----------------------------------------------------------------------- 
    104104   ln_traadv_fct =  .true.    !  FCT scheme 
    105105      nn_fct_h   =  4               !  =2/4, horizontal 2nd / 4th order  
    106106      nn_fct_v   =  2               !  =2/4, vertical   2nd / COMPACT 4th order  
    107       nn_fct_zts =  0               !  > 1 , 2nd order FCT scheme with vertical sub-timestepping 
    108       !                             !        (number of sub-timestep = nn_fct_zts) 
    109107/ 
    110108!----------------------------------------------------------------------- 
     
    160158&namtra_dmp    !   tracer: T & S newtonian damping                      (default: NO) 
    161159!----------------------------------------------------------------------- 
    162 !----------------------------------------------------------------------- 
    163 &namdyn_adv    !   formulation of the momentum advection 
    164 !----------------------------------------------------------------------- 
     160/ 
     161!----------------------------------------------------------------------- 
     162&namdyn_adv    !   formulation of the momentum advection                (default: NO selection) 
     163!----------------------------------------------------------------------- 
     164   ln_dynadv_NONE= .false. !  linear dynamics (no momentum advection) 
     165   ln_dynadv_vec = .true. !  vector form - 2nd centered scheme 
     166     nn_dynkeg     = 0        ! grad(KE) scheme: =0   C2  ;  =1   Hollingsworth correction 
     167   ln_dynadv_cen2= .false. !  flux form - 2nd order centered scheme 
     168   ln_dynadv_ubs = .false. !  flux form - 3rd order UBS      scheme 
    165169/ 
    166170!----------------------------------------------------------------------- 
  • branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/CONFIG/TEST_CASES/WAD/EXP00/namelist_cfg

    r8215 r8568  
    219219/ 
    220220!----------------------------------------------------------------------- 
    221 &namtra_adv    !   advection scheme for tracer 
    222 !----------------------------------------------------------------------- 
     221&namtra_adv    !   advection scheme for tracer                          (default: No selection) 
     222!----------------------------------------------------------------------- 
     223   ln_traadv_NONE=  .false.  !  No tracer advection 
    223224   ln_traadv_cen =  .false.  !  2nd order centered scheme 
    224225   ln_traadv_mus =  .false.  !  MUSCL scheme 
     
    226227      nn_fct_h   =  2               !  =2/4, horizontal 2nd / 4th order  
    227228      nn_fct_v   =  2               !  =2/4, vertical   2nd / COMPACT 4th order  
    228       nn_fct_zts =  0               !  >=1,  2nd order FCT scheme with vertical sub-timestepping 
    229       !                             !        (number of sub-timestep = nn_fct_zts) 
    230229/ 
    231230!----------------------------------------------------------------------- 
     
    275274/ 
    276275!----------------------------------------------------------------------- 
    277 &namdyn_adv    !   formulation of the momentum advection 
     276&namdyn_adv    !   formulation of the momentum advection                (default: NO selection) 
     277!----------------------------------------------------------------------- 
     278   ln_dynadv_NONE= .false. !  linear dynamics (no momentum advection) 
     279   ln_dynadv_vec = .true. !  vector form - 2nd centered scheme 
     280     nn_dynkeg     = 0        ! grad(KE) scheme: =0   C2  ;  =1   Hollingsworth correction 
     281   ln_dynadv_cen2= .false. !  flux form - 2nd order centered scheme 
     282   ln_dynadv_ubs = .false. !  flux form - 3rd order UBS      scheme 
    278283!----------------------------------------------------------------------- 
    279284/ 
  • branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/CONFIG/cfg.txt

    r8215 r8568  
    66ORCA2_OFF_PISCES OPA_SRC OFF_SRC TOP_SRC 
    77ORCA2_OFF_TRC OPA_SRC OFF_SRC TOP_SRC 
     8GYRE_PISCES_XIOS OPA_SRC TOP_SRC 
    89ORCA2_LIM3_PISCES OPA_SRC LIM_SRC_3 TOP_SRC NST_SRC 
    9 GYRE_PISCES_XIOS OPA_SRC TOP_SRC 
     10GYRE_PISCES_RK3 RK3_SRC TOP_SRC 
  • branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/NEMO/LIM_SRC_3/limrhg.F90

    r7753 r8568  
    674674      ! print charge ellipse 
    675675      ! This can be desactivated once the user is sure that the stress state 
    676       ! lie on the charge ellipse. See Bouillon et al. 08 for more details 
     676      ! lie on the charge ellipse. See Bouillon et al. (2008) for more details 
    677677      IF(ln_ctl) THEN 
    678678         CALL prt_ctl_info('lim_rhg  : numit  :',ivar1=numit) 
  • branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/NEMO/OFF_SRC/nemogcm.F90

    r8215 r8568  
    157157      NAMELIST/namctl/ ln_ctl  , nn_print, nn_ictls, nn_ictle,   & 
    158158         &             nn_isplt, nn_jsplt, nn_jctls, nn_jctle,   & 
    159          &             nn_timing, nn_diacfl 
     159         &             ln_timing, ln_diacfl 
    160160 
    161161      NAMELIST/namcfg/ ln_read_cfg, cn_domcfg, ln_write_cfg, cn_domcfg_out, ln_use_jattr 
     
    289289      ENDIF 
    290290      ! 
    291       IF( nn_timing == 1 )  CALL timing_init 
     291      IF( ln_timing    )   CALL timing_init 
    292292      ! 
    293293 
    294294      !                                      ! General initialization 
    295       IF( nn_timing == 1 )  CALL timing_start( 'nemo_init') 
    296       ! 
    297                             CALL     phy_cst    ! Physical constants 
    298                             CALL     eos_init   ! Equation of state 
    299       IF( lk_c1d        )   CALL     c1d_init   ! 1D column configuration 
    300  
    301                             CALL     dom_init   ! Domain 
    302  
    303                             CALL  istate_init   ! ocean initial state (Dynamics and tracers) 
    304  
    305       IF( ln_nnogather )    CALL nemo_northcomms   ! Initialise the northfold neighbour lists (must be done after the masks are defined) 
    306  
    307       IF( ln_ctl        )   CALL prt_ctl_init   ! Print control 
    308  
    309                             CALL     sbc_init   ! Forcings : surface module 
    310  
    311                             CALL ldf_tra_init   ! Lateral ocean tracer physics 
    312                             CALL ldf_eiv_init   ! Eddy induced velocity param 
    313                             CALL tra_ldf_init   ! lateral mixing 
    314       IF( l_ldfslp )        CALL ldf_slp_init   ! slope of lateral mixing 
    315  
    316                             CALL tra_qsr_init   ! penetrative solar radiation qsr 
    317       IF( ln_trabbl     )   CALL tra_bbl_init   ! advective (and/or diffusive) bottom boundary layer scheme 
    318  
    319                             CALL trc_nam_run    ! Needed to get restart parameters for passive tracers 
    320                             CALL trc_rst_cal( nit000, 'READ' )   ! calendar 
    321                             CALL dta_dyn_init   ! Initialization for the dynamics 
    322  
    323                             CALL     trc_init   ! Passive tracers initialization 
    324                             CALL dia_ptr_init   ! Initialise diaptr as some variables are used  
     295      IF( ln_timing    )   CALL timing_start( 'nemo_init') 
     296      ! 
     297                           CALL     phy_cst    ! Physical constants 
     298                           CALL     eos_init   ! Equation of state 
     299      IF( lk_c1d       )   CALL     c1d_init   ! 1D column configuration 
     300 
     301                           CALL     dom_init   ! Domain 
     302 
     303                           CALL  istate_init   ! ocean initial state (Dynamics and tracers) 
     304 
     305      IF( ln_nnogather )   CALL nemo_northcomms   ! Initialise the northfold neighbour lists (must be done after the masks are defined) 
     306 
     307      IF( ln_ctl       )   CALL prt_ctl_init   ! Print control 
     308 
     309                           CALL     sbc_init   ! Forcings : surface module 
     310 
     311                           CALL ldf_tra_init   ! Lateral ocean tracer physics 
     312                           CALL ldf_eiv_init   ! Eddy induced velocity param 
     313                           CALL tra_ldf_init   ! lateral mixing 
     314      IF( l_ldfslp     )   CALL ldf_slp_init   ! slope of lateral mixing 
     315 
     316                           CALL tra_qsr_init   ! penetrative solar radiation qsr 
     317      IF( ln_trabbl    )   CALL tra_bbl_init   ! advective (and/or diffusive) bottom boundary layer scheme 
     318 
     319                           CALL trc_nam_run    ! Needed to get restart parameters for passive tracers 
     320                           CALL trc_rst_cal( nit000, 'READ' )   ! calendar 
     321                           CALL dta_dyn_init   ! Initialization for the dynamics 
     322 
     323                           CALL     trc_init   ! Passive tracers initialization 
     324                           CALL dia_ptr_init   ! Initialise diaptr as some variables are used  
    325325      !                                         ! in various advection and diffusion routines 
    326326      IF(lwp) WRITE(numout,cform_aaa)           ! Flag AAAAAAA 
    327327      ! 
    328       IF( nn_timing == 1 )  CALL timing_stop( 'nemo_init') 
     328      IF( ln_timing    )   CALL timing_stop( 'nemo_init') 
    329329      ! 
    330330   END SUBROUTINE nemo_init 
     
    353353         WRITE(numout,*) '      number of proc. following i     nn_isplt   = ', nn_isplt 
    354354         WRITE(numout,*) '      number of proc. following j     nn_jsplt   = ', nn_jsplt 
    355          WRITE(numout,*) '      timing activated    (0/1)       nn_timing  = ', nn_timing 
     355         WRITE(numout,*) '      timing by routine               ln_timing  = ', ln_timing 
     356         WRITE(numout,*) '      CFL diagnostics                 ln_diacfl  = ', ln_diacfl 
    356357      ENDIF 
    357358      ! 
     
    363364      isplt     = nn_isplt 
    364365      jsplt     = nn_jsplt 
     366!!gm to be remove at the end of the 2017 merge party 
     367      if( ln_timing ) then  ;  nn_timing = 1 
     368      else                  ;  nn_timing = 0 
     369      endif 
     370!!gm end 
    365371 
    366372 
  • branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/NEMO/OPA_SRC/DIA/diacfl.F90

    r7753 r8568  
    11MODULE diacfl 
    2    !!============================================================================== 
     2   !!====================================================================== 
    33   !!                       ***  MODULE  diacfl  *** 
    44   !! Output CFL diagnostics to ascii file 
    5    !!============================================================================== 
    6    !! History :  1.0  !  2010-03  (E. Blockley)  Original code 
    7    !!                 !  2014-06  (T Graham) Removed CPP key & Updated to vn3.6 
    8    !!  
     5   !!====================================================================== 
     6   !! History :  3.4  !  2010-03  (E. Blockley)  Original code 
     7   !!            3.6  !  2014-06  (T. Graham) Removed CPP key & Updated to vn3.6 
     8   !!            4.0  !  2017-09  (G. Madec)  style + comments 
    99   !!---------------------------------------------------------------------- 
    1010   !!   dia_cfl        : Compute and output Courant numbers at each timestep 
     
    1212   USE oce             ! ocean dynamics and active tracers 
    1313   USE dom_oce         ! ocean space and time domain 
     14   USE domvvl          !  
     15   ! 
    1416   USE lib_mpp         ! distribued memory computing 
    1517   USE lbclnk          ! ocean lateral boundary condition (or mpp link) 
    1618   USE in_out_manager  ! I/O manager 
    17    USE domvvl      
    1819   USE timing          ! Performance output 
    1920 
     
    2122   PRIVATE 
    2223 
    23    REAL(wp) :: cu_max, cv_max, cw_max                      ! Run max U Courant number  
    24    INTEGER, DIMENSION(3) :: cu_loc, cv_loc, cw_loc         ! Run max locations 
    25    REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: zcu_cfl           ! Courant number arrays 
    26    REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: zcv_cfl           ! Courant number arrays 
    27    REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: zcw_cfl           ! Courant number arrays 
     24   CHARACTER(LEN=50) :: clname="cfl_diagnostics.ascii"    ! ascii filename 
     25   INTEGER           :: numcfl                            ! outfile unit 
     26   ! 
     27   INTEGER, DIMENSION(3) ::   nCu_loc, nCv_loc, nCw_loc   ! U, V, and W run max locations in the global domain 
     28   REAL(wp)              ::   rCu_max, rCv_max, rCw_max   ! associated run max Courant number  
    2829 
    29    INTEGER  :: numcfl                                       ! outfile unit 
    30    CHARACTER(LEN=50) :: clname="cfl_diagnostics.ascii"      ! ascii filename 
     30!!gm CAUTION: need to declare these arrays here, otherwise the calculation fails in multi-proc ! 
     31!!gm          8 don't understand why. 
     32   REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) ::   zCu_cfl, zCv_cfl, zCw_cfl         ! workspace 
     33!!gm end 
    3134 
    3235   PUBLIC   dia_cfl       ! routine called by step.F90 
     
    4043   !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt) 
    4144   !!---------------------------------------------------------------------- 
    42  
    43  
    4445CONTAINS 
    45  
    4646 
    4747   SUBROUTINE dia_cfl ( kt ) 
     
    5252      !!               and output to ascii file 'cfl_diagnostics.ascii' 
    5353      !!---------------------------------------------------------------------- 
     54      INTEGER, INTENT(in) ::   kt   ! ocean time-step index 
     55      ! 
     56      INTEGER :: ji, jj, jk   ! dummy loop indices 
     57      REAL(wp)::   z2dt, zCu_max, zCv_max, zCw_max       ! local scalars 
     58      INTEGER , DIMENSION(3)           ::   iloc_u , iloc_v , iloc_w , iloc   ! workspace 
     59!!gm this does not work      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   zCu_cfl, zCv_cfl, zCw_cfl         ! workspace 
     60      !!---------------------------------------------------------------------- 
     61      ! 
     62      IF( nn_timing == 1 )   CALL timing_start('dia_cfl') 
     63      ! 
     64      !                       ! setup timestep multiplier to account for initial Eulerian timestep 
     65      IF( neuler == 0 .AND. kt == nit000 ) THEN   ;    z2dt = rdt 
     66      ELSE                                        ;    z2dt = rdt * 2._wp 
     67      ENDIF 
     68      ! 
     69      !                 
     70      DO jk = 1, jpk       ! calculate Courant numbers 
     71         DO jj = 1, jpj 
     72            DO ji = 1, fs_jpim1   ! vector opt. 
     73               zCu_cfl(ji,jj,jk) = ABS( un(ji,jj,jk) ) * z2dt / e1u  (ji,jj)      ! for i-direction 
     74               zCv_cfl(ji,jj,jk) = ABS( vn(ji,jj,jk) ) * z2dt / e2v  (ji,jj)      ! for j-direction 
     75               zCw_cfl(ji,jj,jk) = ABS( wn(ji,jj,jk) ) * z2dt / e3w_n(ji,jj,jk)   ! for k-direction 
     76            END DO 
     77         END DO          
     78      END DO 
     79      ! 
     80      !                    ! calculate maximum values and locations 
     81      IF( lk_mpp ) THEN 
     82         CALL mpp_maxloc( zCu_cfl, umask, zCu_max, iloc_u(1), iloc_u(2), iloc_u(3) ) 
     83         CALL mpp_maxloc( zCv_cfl, vmask, zCv_max, iloc_v(1), iloc_v(2), iloc_v(3) ) 
     84         CALL mpp_maxloc( zCw_cfl, wmask, zCw_max, iloc_w(1), iloc_w(2), iloc_w(3) ) 
     85      ELSE 
     86         iloc = MAXLOC( ABS( zcu_cfl(:,:,:) ) ) 
     87         iloc_u(1) = iloc(1) + nimpp - 1 
     88         iloc_u(2) = iloc(2) + njmpp - 1 
     89         iloc_u(3) = iloc(3) 
     90         zCu_max = zCu_cfl(iloc(1),iloc(2),iloc(3)) 
     91         ! 
     92         iloc = MAXLOC( ABS( zcv_cfl(:,:,:) ) ) 
     93         iloc_v(1) = iloc(1) + nimpp - 1 
     94         iloc_v(2) = iloc(2) + njmpp - 1 
     95         iloc_v(3) = iloc(3) 
     96         zCv_max = zCv_cfl(iloc(1),iloc(2),iloc(3)) 
     97         ! 
     98         iloc = MAXLOC( ABS( zcw_cfl(:,:,:) ) ) 
     99         iloc_w(1) = iloc(1) + nimpp - 1 
     100         iloc_w(2) = iloc(2) + njmpp - 1 
     101         iloc_w(3) = iloc(3) 
     102         zCw_max = zCw_cfl(iloc(1),iloc(2),iloc(3)) 
     103      ENDIF 
     104      ! 
     105      !                    ! write out to file 
     106      IF( lwp ) THEN 
     107         WRITE(numcfl,FMT='(2x,i4,5x,a6,5x,f6.4,1x,i4,1x,i4,1x,i4)') kt, 'Max Cu', zCu_max, iloc_u(1), iloc_u(2), iloc_u(3) 
     108         WRITE(numcfl,FMT='(11x,     a6,5x,f6.4,1x,i4,1x,i4,1x,i4)')     'Max Cv', zCv_max, iloc_v(1), iloc_v(2), iloc_v(3) 
     109         WRITE(numcfl,FMT='(11x,     a6,5x,f6.4,1x,i4,1x,i4,1x,i4)')     'Max Cw', zCw_max, iloc_w(1), iloc_w(2), iloc_w(3) 
     110      ENDIF 
     111      ! 
     112      !                    ! update maximum Courant numbers from whole run if applicable 
     113      IF( zCu_max > rCu_max ) THEN   ;   rCu_max = zCu_max   ;   nCu_loc(:) = iloc_u(:)   ;   ENDIF 
     114      IF( zCv_max > rCv_max ) THEN   ;   rCv_max = zCv_max   ;   nCv_loc(:) = iloc_v(:)   ;   ENDIF 
     115      IF( zCw_max > rCw_max ) THEN   ;   rCw_max = zCw_max   ;   nCw_loc(:) = iloc_w(:)   ;   ENDIF 
    54116 
    55       INTEGER, INTENT(in) ::  kt                            ! ocean time-step index 
     117      !                    ! at end of run output max Cu and Cv and close ascii file 
     118      IF( kt == nitend .AND. lwp ) THEN 
     119         ! to ascii file 
     120         WRITE(numcfl,*) '******************************************' 
     121         WRITE(numcfl,FMT='(3x,a12,7x,f6.4,1x,i4,1x,i4,1x,i4)') 'Run Max Cu', rCu_max, nCu_loc(1), nCu_loc(2), nCu_loc(3) 
     122         WRITE(numcfl,FMT='(3x,a8,11x,f15.1)') ' => dt/C', z2dt/rCu_max 
     123         WRITE(numcfl,*) '******************************************' 
     124         WRITE(numcfl,FMT='(3x,a12,7x,f6.4,1x,i4,1x,i4,1x,i4)') 'Run Max Cv', rCv_max, nCv_loc(1), nCv_loc(2), nCv_loc(3) 
     125         WRITE(numcfl,FMT='(3x,a8,11x,f15.1)') ' => dt/C', z2dt/rCv_max 
     126         WRITE(numcfl,*) '******************************************' 
     127         WRITE(numcfl,FMT='(3x,a12,7x,f6.4,1x,i4,1x,i4,1x,i4)') 'Run Max Cw', rCw_max, nCw_loc(1), nCw_loc(2), nCw_loc(3) 
     128         WRITE(numcfl,FMT='(3x,a8,11x,f15.1)') ' => dt/C', z2dt/rCw_max 
     129         CLOSE( numcfl )  
     130         ! 
     131         ! to ocean output 
     132         WRITE(numout,*) 
     133         WRITE(numout,*) 'dia_cfl : Maximum Courant number information for the run ' 
     134         WRITE(numout,*) '~~~~~~~' 
     135         WRITE(numout,*) '   Max Cu = ', rCu_max, ' at (i,j,k) = (',nCu_loc(1),nCu_loc(2),nCu_loc(3),') => dt/C = ', z2dt/rCu_max 
     136         WRITE(numout,*) '   Max Cv = ', rCv_max, ' at (i,j,k) = (',nCv_loc(1),nCv_loc(2),nCv_loc(3),') => dt/C = ', z2dt/rCv_max 
     137         WRITE(numout,*) '   Max Cw = ', rCw_max, ' at (i,j,k) = (',nCw_loc(1),nCw_loc(2),nCw_loc(3),') => dt/C = ', z2dt/rCw_max 
     138      ENDIF 
     139      ! 
     140      IF( nn_timing == 1 )   CALL timing_stop('dia_cfl') 
     141      ! 
     142   END SUBROUTINE dia_cfl 
    56143 
    57       REAL(wp) :: zcu_max, zcv_max, zcw_max                 ! max Courant numbers per timestep 
    58       INTEGER, DIMENSION(3) :: zcu_loc, zcv_loc, zcw_loc    ! max Courant number locations 
    59  
    60       REAL(wp) :: dt                                        ! temporary scalars 
    61       INTEGER, DIMENSION(3) :: zlocu, zlocv, zlocw          ! temporary arrays  
    62       INTEGER  :: ji, jj, jk                                ! dummy loop indices 
    63  
    64        
    65       IF( nn_diacfl == 1) THEN 
    66          IF( nn_timing == 1 )   CALL timing_start('dia_cfl') 
    67          ! setup timestep multiplier to account for initial Eulerian timestep 
    68          IF( neuler == 0 .AND. kt == nit000 ) THEN   ;    dt = rdt 
    69          ELSE                                        ;    dt = rdt * 2.0 
    70          ENDIF 
    71  
    72              ! calculate Courant numbers 
    73          DO jk = 1, jpk 
    74             DO jj = 1, jpj 
    75                DO ji = 1, fs_jpim1   ! vector opt. 
    76  
    77                   ! Courant number for x-direction (zonal current) 
    78                   zcu_cfl(ji,jj,jk) = ABS(un(ji,jj,jk))*dt/e1u(ji,jj) 
    79  
    80                   ! Courant number for y-direction (meridional current) 
    81                   zcv_cfl(ji,jj,jk) = ABS(vn(ji,jj,jk))*dt/e2v(ji,jj) 
    82  
    83                   ! Courant number for z-direction (vertical current) 
    84                   zcw_cfl(ji,jj,jk) = ABS(wn(ji,jj,jk))*dt/e3w_n(ji,jj,jk) 
    85                END DO 
    86             END DO          
    87          END DO 
    88  
    89          ! calculate maximum values and locations 
    90          IF( lk_mpp ) THEN 
    91             CALL mpp_maxloc(zcu_cfl,umask,zcu_max, zcu_loc(1), zcu_loc(2), zcu_loc(3)) 
    92             CALL mpp_maxloc(zcv_cfl,vmask,zcv_max, zcv_loc(1), zcv_loc(2), zcv_loc(3)) 
    93             CALL mpp_maxloc(zcw_cfl,tmask,zcw_max, zcw_loc(1), zcw_loc(2), zcw_loc(3)) 
    94          ELSE 
    95             zlocu = MAXLOC( ABS( zcu_cfl(:,:,:) ) ) 
    96             zcu_loc(1) = zlocu(1) + nimpp - 1 
    97             zcu_loc(2) = zlocu(2) + njmpp - 1 
    98             zcu_loc(3) = zlocu(3) 
    99             zcu_max = zcu_cfl(zcu_loc(1),zcu_loc(2),zcu_loc(3)) 
    100  
    101             zlocv = MAXLOC( ABS( zcv_cfl(:,:,:) ) ) 
    102             zcv_loc(1) = zlocv(1) + nimpp - 1 
    103             zcv_loc(2) = zlocv(2) + njmpp - 1 
    104             zcv_loc(3) = zlocv(3) 
    105             zcv_max = zcv_cfl(zcv_loc(1),zcv_loc(2),zcv_loc(3)) 
    106  
    107             zlocw = MAXLOC( ABS( zcw_cfl(:,:,:) ) ) 
    108             zcw_loc(1) = zlocw(1) + nimpp - 1 
    109             zcw_loc(2) = zlocw(2) + njmpp - 1 
    110             zcw_loc(3) = zlocw(3) 
    111             zcw_max = zcw_cfl(zcw_loc(1),zcw_loc(2),zcw_loc(3)) 
    112          ENDIF 
    113        
    114          ! write out to file 
    115          IF( lwp ) THEN 
    116             WRITE(numcfl,FMT='(2x,i4,5x,a6,5x,f6.4,1x,i4,1x,i4,1x,i4)') kt, 'Max Cu', zcu_max, zcu_loc(1), zcu_loc(2), zcu_loc(3) 
    117             WRITE(numcfl,FMT='(11x,a6,5x,f6.4,1x,i4,1x,i4,1x,i4)') 'Max Cv', zcv_max, zcv_loc(1), zcv_loc(2), zcv_loc(3) 
    118             WRITE(numcfl,FMT='(11x,a6,5x,f6.4,1x,i4,1x,i4,1x,i4)') 'Max Cw', zcw_max, zcw_loc(1), zcw_loc(2), zcw_loc(3) 
    119          ENDIF 
    120  
    121          ! update maximum Courant numbers from whole run if applicable 
    122          IF( zcu_max > cu_max ) THEN 
    123             cu_max = zcu_max 
    124             cu_loc = zcu_loc 
    125          ENDIF 
    126          IF( zcv_max > cv_max ) THEN 
    127             cv_max = zcv_max 
    128             cv_loc = zcv_loc 
    129          ENDIF 
    130          IF( zcw_max > cw_max ) THEN 
    131             cw_max = zcw_max 
    132             cw_loc = zcw_loc 
    133          ENDIF 
    134  
    135          ! at end of run output max Cu and Cv and close ascii file 
    136          IF( kt == nitend .AND. lwp ) THEN 
    137             ! to ascii file 
    138             WRITE(numcfl,*) '******************************************' 
    139             WRITE(numcfl,FMT='(3x,a12,7x,f6.4,1x,i4,1x,i4,1x,i4)') 'Run Max Cu', cu_max, cu_loc(1), cu_loc(2), cu_loc(3) 
    140             WRITE(numcfl,FMT='(3x,a8,11x,f7.1)') ' => dt/C', dt*(1.0/cu_max) 
    141             WRITE(numcfl,*) '******************************************' 
    142             WRITE(numcfl,FMT='(3x,a12,7x,f6.4,1x,i4,1x,i4,1x,i4)') 'Run Max Cv', cv_max, cv_loc(1), cv_loc(2), cv_loc(3) 
    143             WRITE(numcfl,FMT='(3x,a8,11x,f7.1)') ' => dt/C', dt*(1.0/cv_max) 
    144             WRITE(numcfl,*) '******************************************' 
    145             WRITE(numcfl,FMT='(3x,a12,7x,f6.4,1x,i4,1x,i4,1x,i4)') 'Run Max Cw', cw_max, cw_loc(1), cw_loc(2), cw_loc(3) 
    146             WRITE(numcfl,FMT='(3x,a8,11x,f7.1)') ' => dt/C', dt*(1.0/cw_max) 
    147             CLOSE( numcfl )  
    148  
    149             ! to ocean output 
    150             WRITE(numout,*) 
    151             WRITE(numout,*) 'dia_cfl     : Maximum Courant number information for the run:' 
    152             WRITE(numout,*) '~~~~~~~~~~~~' 
    153             WRITE(numout,FMT='(12x,a12,7x,f6.4,5x,a16,i4,1x,i4,1x,i4,a1)') 'Run Max Cu', cu_max, 'at (i, j, k) = (', cu_loc(1), cu_loc(2), cu_loc(3), ')' 
    154             WRITE(numout,FMT='(12x,a8,11x,f7.1)') ' => dt/C', dt*(1.0/cu_max) 
    155             WRITE(numout,FMT='(12x,a12,7x,f6.4,5x,a16,i4,1x,i4,1x,i4,a1)') 'Run Max Cv', cv_max, 'at (i, j, k) = (', cv_loc(1), cv_loc(2), cv_loc(3), ')' 
    156             WRITE(numout,FMT='(12x,a8,11x,f7.1)') ' => dt/C', dt*(1.0/cv_max) 
    157             WRITE(numout,FMT='(12x,a12,7x,f6.4,5x,a16,i4,1x,i4,1x,i4,a1)') 'Run Max Cw', cw_max, 'at (i, j, k) = (', cw_loc(1), cw_loc(2), cw_loc(3), ')' 
    158             WRITE(numout,FMT='(12x,a8,11x,f7.1)') ' => dt/C', dt*(1.0/cw_max) 
    159  
    160          ENDIF 
    161  
    162          IF( nn_timing == 1 )   CALL timing_stop('dia_cfl') 
    163       ENDIF 
    164  
    165    END SUBROUTINE dia_cfl 
    166144 
    167145   SUBROUTINE dia_cfl_init 
     
    171149      !! ** Purpose :   create output file, initialise arrays 
    172150      !!---------------------------------------------------------------------- 
    173  
    174  
    175       IF( nn_diacfl == 1 ) THEN 
    176          IF( nn_timing == 1 )   CALL timing_start('dia_cfl_init') 
    177  
    178          cu_max=0.0 
    179          cv_max=0.0 
    180          cw_max=0.0 
    181  
    182          ALLOCATE( zcu_cfl(jpi, jpj, jpk), zcv_cfl(jpi, jpj, jpk), zcw_cfl(jpi, jpj, jpk) ) 
    183  
    184          zcu_cfl(:,:,:)=0.0 
    185          zcv_cfl(:,:,:)=0.0 
    186          zcw_cfl(:,:,:)=0.0 
    187  
    188          IF( lwp ) THEN 
    189             WRITE(numout,*) 
    190             WRITE(numout,*) 'dia_cfl     : Outputting CFL diagnostics to '//TRIM(clname) 
    191             WRITE(numout,*) '~~~~~~~~~~~~' 
    192             WRITE(numout,*) 
    193  
    194             ! create output ascii file 
    195             CALL ctl_opn( numcfl, clname, 'UNKNOWN', 'FORMATTED', 'SEQUENTIAL', 1, numout, lwp, 1 ) 
    196             WRITE(numcfl,*) 'Timestep  Direction  Max C     i    j    k' 
    197             WRITE(numcfl,*) '******************************************' 
    198          ENDIF 
    199  
    200          IF( nn_timing == 1 )   CALL timing_stop('dia_cfl_init') 
    201  
     151      ! 
     152      IF(lwp) THEN 
     153         WRITE(numout,*) 
     154         WRITE(numout,*) 'dia_cfl : Outputting CFL diagnostics to ',TRIM(clname), ' file' 
     155         WRITE(numout,*) '~~~~~~~' 
     156         WRITE(numout,*) 
     157         ! 
     158         ! create output ascii file 
     159         CALL ctl_opn( numcfl, clname, 'UNKNOWN', 'FORMATTED', 'SEQUENTIAL', 1, numout, lwp, 1 ) 
     160         WRITE(numcfl,*) 'Timestep  Direction  Max C     i    j    k' 
     161         WRITE(numcfl,*) '******************************************' 
    202162      ENDIF 
    203  
     163      ! 
     164      rCu_max = 0._wp 
     165      rCv_max = 0._wp 
     166      rCw_max = 0._wp 
     167      ! 
     168!!gm required to work 
     169      ALLOCATE ( zCu_cfl(jpi,jpj,jpk), zCv_cfl(jpi,jpj,jpk), zCw_cfl(jpi,jpj,jpk) ) 
     170!!gm end 
     171      !       
    204172   END SUBROUTINE dia_cfl_init 
    205173 
     174   !!====================================================================== 
    206175END MODULE diacfl 
  • branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/NEMO/OPA_SRC/DOM/daymod.F90

    r7646 r8568  
    222222      !!---------------------------------------------------------------------- 
    223223      ! 
    224       IF( nn_timing == 1 )  CALL timing_start('day') 
     224      IF( ln_timing )   CALL timing_start('day') 
    225225      ! 
    226226      zprec = 0.1 / rday 
     
    276276      IF( lrst_oce         ) CALL day_rst( kt, 'WRITE' )      ! write day restart information 
    277277      ! 
    278       IF( nn_timing == 1 )  CALL timing_stop('day') 
     278      IF( ln_timing )   CALL timing_stop('day') 
    279279      ! 
    280280   END SUBROUTINE day 
     
    402402         CALL iom_rstput( kt, nitrst, numrow, 'adatrj' , adatrj            )   ! number of elapsed days since 
    403403         !                                                                     ! the begining of the run [s] 
    404     CALL iom_rstput( kt, nitrst, numrow, 'ntime'  , REAL( nn_time0, wp) ) ! time 
     404         CALL iom_rstput( kt, nitrst, numrow, 'ntime'  , REAL( nn_time0, wp) ) ! time 
    405405      ENDIF 
    406406      ! 
  • branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/NEMO/OPA_SRC/DOM/depth_e3.F90

    r7753 r8568  
    2020   USE lbclnk            ! ocean lateral boundary conditions (or mpp link) 
    2121   USE lib_mpp           ! distributed memory computing library 
    22    USE wrk_nemo          ! Memory allocation 
    2322   USE timing            ! Timing 
    2423 
  • branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/NEMO/OPA_SRC/DOM/domain.F90

    r7822 r8568  
    4545   USE lbclnk         ! ocean lateral boundary condition (or mpp link) 
    4646   USE lib_mpp        ! distributed memory computing library 
    47    USE wrk_nemo       ! Memory Allocation 
    4847   USE timing         ! Timing 
    4948 
     
    8382      !!---------------------------------------------------------------------- 
    8483      ! 
    85       IF( nn_timing == 1 )   CALL timing_start('dom_init') 
     84      IF( ln_timing )   CALL timing_start('dom_init') 
    8685      ! 
    8786      IF(lwp) THEN         ! Ocean domain Parameters (control print) 
     
    199198      IF( ln_write_cfg )   CALL cfg_write         ! create the configuration file 
    200199      ! 
    201       IF( nn_timing == 1 )   CALL timing_stop('dom_init') 
     200      IF( ln_timing )   CALL timing_stop('dom_init') 
    202201      ! 
    203202   END SUBROUTINE dom_init 
  • branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/NEMO/OPA_SRC/DOM/domhgr.F90

    r7753 r8568  
    7979      !!---------------------------------------------------------------------- 
    8080      ! 
    81       IF( nn_timing == 1 )  CALL timing_start('dom_hgr') 
     81      IF( ln_timing )   CALL timing_start('dom_hgr') 
    8282      ! 
    8383      IF(lwp) THEN 
     
    152152      ! 
    153153      ! 
    154       IF( nn_timing == 1 )  CALL timing_stop('dom_hgr') 
     154      IF( ln_timing )   CALL timing_stop('dom_hgr') 
    155155      ! 
    156156   END SUBROUTINE dom_hgr 
  • branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/NEMO/OPA_SRC/DOM/dommsk.F90

    r7753 r8568  
    3030   USE lbclnk         ! ocean lateral boundary conditions (or mpp link) 
    3131   USE lib_mpp        ! Massively Parallel Processing library 
    32    USE wrk_nemo       ! Memory allocation 
    3332   USE timing         ! Timing 
    3433 
     
    9291      INTEGER  ::   iktop, ikbot   !   -       - 
    9392      INTEGER  ::   ios, inum 
    94       REAL(wp), POINTER, DIMENSION(:,:) ::   zwf   ! 2D workspace 
     93      REAL(wp), ALLOCATABLE, DIMENSION(:,:) ::   zwf   ! 2D workspace 
    9594      !! 
    9695      NAMELIST/namlbc/ rn_shlat, ln_vorlat 
     
    104103      !!--------------------------------------------------------------------- 
    105104      ! 
    106       IF( nn_timing == 1 )  CALL timing_start('dom_msk') 
     105      IF( ln_timing )   CALL timing_start('dom_msk') 
    107106      ! 
    108107      REWIND( numnam_ref )              ! Namelist namlbc in reference namelist : Lateral momentum boundary condition 
     
    248247      IF( rn_shlat /= 0 ) THEN      ! Not free-slip lateral boundary condition 
    249248         ! 
    250          CALL wrk_alloc( jpi,jpj,   zwf ) 
     249         ALLOCATE( zwf(jpi,jpj) ) 
    251250         ! 
    252251         DO jk = 1, jpk 
     
    278277         END DO 
    279278         ! 
    280          CALL wrk_dealloc( jpi,jpj,  zwf ) 
     279         DEALLOCATE( zwf ) 
    281280         ! 
    282281         CALL lbc_lnk( fmask, 'F', 1._wp )      ! Lateral boundary conditions on fmask 
     
    292291      ! 
    293292      ! 
    294       IF( nn_timing == 1 )  CALL timing_stop('dom_msk') 
     293      IF( ln_timing )   CALL timing_stop('dom_msk') 
    295294      ! 
    296295   END SUBROUTINE dom_msk 
  • branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/NEMO/OPA_SRC/DOM/domngb.F90

    r7646 r8568  
    1111   !!---------------------------------------------------------------------- 
    1212   USE dom_oce        ! ocean space and time domain 
     13   ! 
    1314   USE in_out_manager ! I/O manager 
    1415   USE lib_mpp        ! for mppsum 
    15    USE wrk_nemo       ! Memory allocation 
    1616   USE timing         ! Timing 
    1717 
     
    4545      INTEGER , DIMENSION(2) ::   iloc 
    4646      REAL(wp)               ::   zlon, zmini 
    47       REAL(wp), POINTER, DIMENSION(:,:) ::  zglam, zgphi, zmask, zdist 
     47      REAL(wp), DIMENSION(jpi,jpj) ::   zglam, zgphi, zmask, zdist 
    4848      !!-------------------------------------------------------------------- 
    4949      ! 
    50       IF( nn_timing == 1 )  CALL timing_start('dom_ngb') 
    51       ! 
    52       CALL wrk_alloc( jpi,jpj,   zglam, zgphi, zmask, zdist ) 
     50      IF( ln_timing )   CALL timing_start('dom_ngb') 
    5351      ! 
    5452      zmask(:,:) = 0._wp 
     
    7977      ENDIF 
    8078      ! 
    81       CALL wrk_dealloc( jpi,jpj,   zglam, zgphi, zmask, zdist ) 
    82       ! 
    83       IF( nn_timing == 1 )  CALL timing_stop('dom_ngb') 
     79      IF( ln_timing )   CALL timing_stop('dom_ngb') 
    8480      ! 
    8581   END SUBROUTINE dom_ngb 
  • branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/NEMO/OPA_SRC/DOM/domvvl.F90

    r7753 r8568  
    66   !! History :  2.0  !  2006-06  (B. Levier, L. Marie)  original code 
    77   !!            3.1  !  2009-02  (G. Madec, M. Leclair, R. Benshila)  pure z* coordinate 
    8    !!            3.3  !  2011-10  (M. Leclair) totally rewrote domvvl: 
    9    !!                                          vvl option includes z_star and z_tilde coordinates 
     8   !!            3.3  !  2011-10  (M. Leclair) totally rewrote domvvl: vvl option includes z_star and z_tilde coordinates 
    109   !!            3.6  !  2014-11  (P. Mathiot) add ice shelf capability 
    1110   !!---------------------------------------------------------------------- 
     
    3130   USE lib_mpp         ! distributed memory computing library 
    3231   USE lbclnk          ! ocean lateral boundary conditions (or mpp link) 
    33    USE wrk_nemo        ! Memory allocation 
    3432   USE timing          ! Timing 
    3533 
     
    122120      !!---------------------------------------------------------------------- 
    123121      ! 
    124       IF( nn_timing == 1 )   CALL timing_start('dom_vvl_init') 
     122      IF( ln_timing )   CALL timing_start('dom_vvl_init') 
    125123      ! 
    126124      IF(lwp) WRITE(numout,*) 
     
    242240      ENDIF 
    243241      ! 
    244       IF( nn_timing == 1 )  CALL timing_stop('dom_vvl_init') 
     242      IF( ln_timing )   CALL timing_stop('dom_vvl_init') 
    245243      ! 
    246244   END SUBROUTINE dom_vvl_init 
     
    276274      REAL(wp)               ::   z2dt, z_tmin, z_tmax  ! local scalars 
    277275      LOGICAL                ::   ll_do_bclinic         ! local logical 
    278       REAL(wp), POINTER, DIMENSION(:,:,:) ::   ze3t 
    279       REAL(wp), POINTER, DIMENSION(:,:  ) ::   zht, z_scale, zwu, zwv, zhdiv 
     276      REAL(wp), DIMENSION(jpi,jpj)     ::   zht, z_scale, zwu, zwv, zhdiv 
     277      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   ze3t 
    280278      !!---------------------------------------------------------------------- 
    281279      ! 
    282280      IF( ln_linssh )   RETURN      ! No calculation in linear free surface 
    283281      ! 
    284       IF( nn_timing == 1 )   CALL timing_start('dom_vvl_sf_nxt') 
    285       ! 
    286       CALL wrk_alloc( jpi,jpj,zht,   z_scale, zwu, zwv, zhdiv ) 
    287       CALL wrk_alloc( jpi,jpj,jpk,   ze3t ) 
    288  
     282      IF( ln_timing )   CALL timing_start('dom_vvl_sf_nxt') 
     283      ! 
    289284      IF( kt == nit000 ) THEN 
    290285         IF(lwp) WRITE(numout,*) 
     
    543538      r1_hv_a(:,:) = ssvmask(:,:) / ( hv_a(:,:) + 1._wp - ssvmask(:,:) ) 
    544539      ! 
    545       CALL wrk_dealloc( jpi,jpj,       zht, z_scale, zwu, zwv, zhdiv ) 
    546       CALL wrk_dealloc( jpi,jpj,jpk,   ze3t ) 
    547       ! 
    548       IF( nn_timing == 1 )  CALL timing_stop('dom_vvl_sf_nxt') 
     540      IF( ln_timing )   CALL timing_stop('dom_vvl_sf_nxt') 
    549541      ! 
    550542   END SUBROUTINE dom_vvl_sf_nxt 
     
    583575      IF( ln_linssh )   RETURN      ! No calculation in linear free surface 
    584576      ! 
    585       IF( nn_timing == 1 )  CALL timing_start('dom_vvl_sf_swp') 
     577      IF( ln_timing )   CALL timing_start('dom_vvl_sf_swp') 
    586578      ! 
    587579      IF( kt == nit000 )   THEN 
     
    657649      ! write restart file 
    658650      ! ================== 
    659       IF( lrst_oce )   CALL dom_vvl_rst( kt, 'WRITE' ) 
    660       ! 
    661       IF( nn_timing == 1 )   CALL timing_stop('dom_vvl_sf_swp') 
     651      IF( lrst_oce  )   CALL dom_vvl_rst( kt, 'WRITE' ) 
     652      ! 
     653      IF( ln_timing )   CALL timing_stop('dom_vvl_sf_swp') 
    662654      ! 
    663655   END SUBROUTINE dom_vvl_sf_swp 
     
    683675      !!---------------------------------------------------------------------- 
    684676      ! 
    685       IF( nn_timing == 1 )   CALL timing_start('dom_vvl_interpol') 
     677      IF( ln_timing )   CALL timing_start('dom_vvl_interpol') 
    686678      ! 
    687679      IF(ln_wd) THEN 
     
    770762      END SELECT 
    771763      ! 
    772       IF( nn_timing == 1 )   CALL timing_stop('dom_vvl_interpol') 
     764      IF( ln_timing )   CALL timing_stop('dom_vvl_interpol') 
    773765      ! 
    774766   END SUBROUTINE dom_vvl_interpol 
     
    794786      !!---------------------------------------------------------------------- 
    795787      ! 
    796       IF( nn_timing == 1 )  CALL timing_start('dom_vvl_rst') 
     788      IF( ln_timing )   CALL timing_start('dom_vvl_rst') 
     789      ! 
    797790      IF( TRIM(cdrw) == 'READ' ) THEN        ! Read/initialise  
    798791         !                                   ! =============== 
     
    947940      ENDIF 
    948941      ! 
    949       IF( nn_timing == 1 )  CALL timing_stop('dom_vvl_rst') 
     942      IF( ln_timing )   CALL timing_stop('dom_vvl_rst') 
    950943      ! 
    951944   END SUBROUTINE dom_vvl_rst 
  • branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/NEMO/OPA_SRC/DOM/domwri.F90

    r7646 r8568  
    2424   USE lbclnk          ! lateral boundary conditions - mpp exchanges 
    2525   USE lib_mpp         ! MPP library 
    26    USE wrk_nemo        ! Memory allocation 
    2726   USE timing          ! Timing 
    2827 
     
    7574      INTEGER           ::   izco, izps, isco, icav 
    7675      !                                
    77       REAL(wp), POINTER, DIMENSION(:,:)   ::   zprt, zprw     ! 2D workspace 
    78       REAL(wp), POINTER, DIMENSION(:,:,:) ::   zdepu, zdepv   ! 3D workspace 
    79       !!---------------------------------------------------------------------- 
    80       ! 
    81       IF( nn_timing == 1 )  CALL timing_start('dom_wri') 
    82       ! 
    83       CALL wrk_alloc( jpi,jpj,       zprt , zprw  ) 
    84       CALL wrk_alloc( jpi,jpj,jpk,   zdepu, zdepv ) 
     76      REAL(wp), DIMENSION(jpi,jpj)     ::   zprt, zprw     ! 2D workspace 
     77      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   zdepu, zdepv   ! 3D workspace 
     78      !!---------------------------------------------------------------------- 
     79      ! 
     80      IF( ln_timing )   CALL timing_start('dom_wri') 
    8581      ! 
    8682      IF(lwp) WRITE(numout,*) 
     
    206202      !                                     ! ============================ 
    207203      ! 
    208       CALL wrk_dealloc( jpi, jpj, zprt, zprw ) 
    209       CALL wrk_dealloc( jpi, jpj, jpk, zdepu, zdepv ) 
    210       ! 
    211       IF( nn_timing == 1 )  CALL timing_stop('dom_wri') 
     204      IF( ln_timing )   CALL timing_stop('dom_wri') 
    212205      ! 
    213206   END SUBROUTINE dom_wri 
     
    229222      INTEGER  ::  ji       ! dummy loop indices 
    230223      LOGICAL, DIMENSION(SIZE(puniq,1),SIZE(puniq,2),1) ::  lldbl  ! store whether each point is unique or not 
    231       REAL(wp), POINTER, DIMENSION(:,:) :: ztstref 
    232       !!---------------------------------------------------------------------- 
    233       ! 
    234       IF( nn_timing == 1 )  CALL timing_start('dom_uniq') 
    235       ! 
    236       CALL wrk_alloc( jpi, jpj, ztstref ) 
     224      REAL(wp), DIMENSION(jpi,jpj) ::   ztstref 
     225      !!---------------------------------------------------------------------- 
     226      ! 
     227      IF( ln_timing )   CALL timing_start('dom_uniq') 
    237228      ! 
    238229      ! build an array with different values for each element  
     
    250241      puniq(nldi:nlei,nldj:nlej) = REAL( COUNT( lldbl(nldi:nlei,nldj:nlej,:), dim = 3 ) , wp ) 
    251242      ! 
    252       CALL wrk_dealloc( jpi, jpj, ztstref ) 
    253       ! 
    254       IF( nn_timing == 1 )  CALL timing_stop('dom_uniq') 
     243      IF( ln_timing )   CALL timing_stop('dom_uniq') 
    255244      ! 
    256245   END SUBROUTINE dom_uniq 
  • branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/NEMO/OPA_SRC/DOM/domzgr.F90

    r7753 r8568  
    3636   USE lbclnk         ! ocean lateral boundary conditions (or mpp link) 
    3737   USE lib_mpp        ! distributed memory computing library 
    38    USE wrk_nemo       ! Memory allocation 
    3938   USE timing         ! Timing 
    4039 
     
    7776      !!---------------------------------------------------------------------- 
    7877      ! 
    79       IF( nn_timing == 1 )   CALL timing_start('dom_zgr') 
     78      IF( ln_timing )   CALL timing_start('dom_zgr') 
    8079      ! 
    8180      IF(lwp) THEN                     ! Control print 
     
    164163      ENDIF 
    165164      ! 
    166       IF( nn_timing == 1 )  CALL timing_stop('dom_zgr') 
     165      IF( ln_timing )   CALL timing_stop('dom_zgr') 
    167166      ! 
    168167   END SUBROUTINE dom_zgr 
     
    284283      ! 
    285284      INTEGER ::   ji, jj   ! dummy loop indices 
    286       REAL(wp), POINTER, DIMENSION(:,:) ::  zk 
    287       !!---------------------------------------------------------------------- 
    288       ! 
    289       IF( nn_timing == 1 )  CALL timing_start('zgr_top_bot') 
    290       ! 
    291       CALL wrk_alloc( jpi,jpj,   zk ) 
     285      REAL(wp), DIMENSION(jpi,jpj) ::   zk   ! workspace 
     286      !!---------------------------------------------------------------------- 
     287      ! 
     288      IF( ln_timing )   CALL timing_start('zgr_top_bot') 
    292289      ! 
    293290      IF(lwp) WRITE(numout,*) 
     
    319316      zk(:,:) = REAL( mbkv(:,:), wp )   ;   CALL lbc_lnk( zk, 'V', 1. )   ;   mbkv(:,:) = MAX( INT( zk(:,:) ), 1 ) 
    320317      ! 
    321       CALL wrk_dealloc( jpi,jpj,   zk ) 
    322       ! 
    323       IF( nn_timing == 1 )  CALL timing_stop('zgr_top_bot') 
     318      IF( ln_timing )   CALL timing_stop('zgr_top_bot') 
    324319      ! 
    325320   END SUBROUTINE zgr_top_bot 
  • branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/NEMO/OPA_SRC/DOM/dtatsd.F90

    r7753 r8568  
    1616   !!---------------------------------------------------------------------- 
    1717   USE oce             ! ocean dynamics and tracers 
     18   USE phycst          ! physical constants 
    1819   USE dom_oce         ! ocean space and time domain 
    1920   USE fldread         ! read input fields 
     21   ! 
    2022   USE in_out_manager  ! I/O manager 
    21    USE phycst          ! physical constants 
    2223   USE lib_mpp         ! MPP library 
    23    USE wrk_nemo        ! Memory allocation 
    2424   USE timing          ! Timing 
    2525 
     
    6262      !!---------------------------------------------------------------------- 
    6363      ! 
    64       IF( nn_timing == 1 )  CALL timing_start('dta_tsd_init') 
     64      IF( ln_timing )   CALL timing_start('dta_tsd_init') 
    6565      ! 
    6666      !  Initialisation 
     
    120120      ENDIF 
    121121      ! 
    122       IF( nn_timing == 1 )  CALL timing_stop('dta_tsd_init') 
     122      IF( ln_timing )   CALL timing_stop('dta_tsd_init') 
    123123      ! 
    124124   END SUBROUTINE dta_tsd_init 
     
    145145      INTEGER ::   ji, jj, jk, jl, jkk   ! dummy loop indicies 
    146146      INTEGER ::   ik, il0, il1, ii0, ii1, ij0, ij1   ! local integers 
    147       REAL(wp)::   zl, zi 
    148       REAL(wp), POINTER, DIMENSION(:) ::  ztp, zsp   ! 1D workspace 
    149       !!---------------------------------------------------------------------- 
    150       ! 
    151       IF( nn_timing == 1 )  CALL timing_start('dta_tsd') 
     147      REAL(wp)::   zl, zi                             ! local scalars 
     148      REAL(wp), DIMENSION(jpk) ::  ztp, zsp   ! 1D workspace 
     149      !!---------------------------------------------------------------------- 
     150      ! 
     151      IF( ln_timing )   CALL timing_start('dta_tsd') 
    152152      ! 
    153153      CALL fld_read( kt, 1, sf_tsd )      !==   read T & S data at kt time step   ==! 
     
    185185      ! 
    186186      IF( ln_sco ) THEN                   !==   s- or mixed s-zps-coordinate   ==! 
    187          ! 
    188          CALL wrk_alloc( jpk, ztp, zsp ) 
    189187         ! 
    190188         IF( kt == nit000 .AND. lwp )THEN 
     
    222220         END DO 
    223221         !  
    224          CALL wrk_dealloc( jpk, ztp, zsp ) 
    225          !  
    226222      ELSE                                !==   z- or zps- coordinate   ==! 
    227223         !                              
     
    260256      ENDIF 
    261257      ! 
    262       IF( nn_timing == 1 )  CALL timing_stop('dta_tsd') 
     258      IF( ln_timing )   CALL timing_stop('dta_tsd') 
    263259      ! 
    264260   END SUBROUTINE dta_tsd 
  • branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/NEMO/OPA_SRC/DOM/iscplhsb.F90

    r7646 r8568  
    1313   !!   iscpl_div      : correction of divergence to keep volume conservation 
    1414   !!---------------------------------------------------------------------- 
     15   USE oce             ! global tra/dyn variable 
    1516   USE dom_oce         ! ocean space and time domain 
    1617   USE domwri          ! ocean space and time domain 
     18   USE domngb          !  
    1719   USE phycst          ! physical constants 
    1820   USE sbc_oce         ! surface boundary condition variables 
    19    USE oce             ! global tra/dyn variable 
     21   USE iscplini        !  
     22   ! 
    2023   USE in_out_manager  ! I/O manager 
    2124   USE lib_mpp         ! MPP library 
    2225   USE lib_fortran     ! MPP library 
    23    USE wrk_nemo        ! Memory allocation 
    2426   USE lbclnk          ! 
    25    USE domngb          ! 
    26    USE iscplini 
    2727 
    2828   IMPLICIT NONE 
     
    5656      REAL(wp), DIMENSION(:,:,:  ), INTENT(out) :: pvol_flx    !! corrective flux to have volume conservation 
    5757      REAL(wp),                     INTENT(in ) :: prdt_iscpl  !! coupling period  
    58       !! 
    59       INTEGER :: ji, jj, jk                                    !! loop index 
    60       INTEGER :: jip1, jim1, jjp1, jjm1 
    61       !! 
    62       REAL(wp):: summsk, zsum, zsum1, zarea, zsumn, zsumb 
    63       REAL(wp):: r1_rdtiscpl 
    64       REAL(wp):: zjip1_ratio  , zjim1_ratio  , zjjp1_ratio  , zjjm1_ratio 
    65       !! 
    66       REAL(wp):: zde3t, zdtem, zdsal 
    67       REAL(wp), DIMENSION(:,:), POINTER :: zdssh 
    68       !! 
    69       REAL(wp), DIMENSION(:), ALLOCATABLE :: zlon, zlat 
    70       REAL(wp), DIMENSION(:), ALLOCATABLE :: zcorr_vol, zcorr_tem, zcorr_sal 
    71       INTEGER , DIMENSION(:), ALLOCATABLE :: ixpts, iypts, izpts, inpts 
     58      ! 
     59      INTEGER  ::   ji  , jj  , jk           ! loop index 
     60      INTEGER  ::   jip1, jim1, jjp1, jjm1 
     61      REAL(wp) ::   summsk, zsum , zsumn, zjip1_ratio  , zjim1_ratio, zdtem, zde3t, z1_rdtiscpl 
     62      REAL(wp) ::   zarea , zsum1, zsumb, zjjp1_ratio  , zjjm1_ratio, zdsal 
     63      REAL(wp), DIMENSION(jpi,jpj)        ::   zdssh   ! workspace 
     64      REAL(wp), DIMENSION(:), ALLOCATABLE ::   zlon, zlat 
     65      REAL(wp), DIMENSION(:), ALLOCATABLE ::   zcorr_vol, zcorr_tem, zcorr_sal 
     66      INTEGER , DIMENSION(:), ALLOCATABLE ::   ixpts, iypts, izpts, inpts 
    7267      INTEGER :: jpts, npts 
    73  
    74       CALL wrk_alloc(jpi,jpj, zdssh ) 
     68      !!---------------------------------------------------------------------- 
    7569 
    7670      ! get imbalance (volume heat and salt) 
    7771      ! initialisation difference 
    78       zde3t = 0.0_wp; zdsal = 0.0_wp ; zdtem = 0.0_wp 
     72      zde3t = 0._wp   ;   zdsal = 0._wp   ;   zdtem = 0._wp 
    7973 
    8074      ! initialisation correction term 
    81       pvol_flx(:,:,:  ) = 0.0_wp 
    82       pts_flx (:,:,:,:) = 0.0_wp 
     75      pvol_flx(:,:,:  ) = 0._wp 
     76      pts_flx (:,:,:,:) = 0._wp 
    8377       
    84       r1_rdtiscpl = 1._wp / prdt_iscpl  
     78      z1_rdtiscpl = 1._wp / prdt_iscpl  
    8579 
    8680      ! mask tsn and tsb  
    87       tsb(:,:,:,jp_tem)=tsb(:,:,:,jp_tem)*ptmask_b(:,:,:); tsn(:,:,:,jp_tem)=tsn(:,:,:,jp_tem)*tmask(:,:,:); 
    88       tsb(:,:,:,jp_sal)=tsb(:,:,:,jp_sal)*ptmask_b(:,:,:); tsn(:,:,:,jp_sal)=tsn(:,:,:,jp_sal)*tmask(:,:,:); 
     81      tsb(:,:,:,jp_tem) = tsb(:,:,:,jp_tem) * ptmask_b(:,:,:) 
     82      tsn(:,:,:,jp_tem) = tsn(:,:,:,jp_tem) *  tmask  (:,:,:) 
     83      tsb(:,:,:,jp_sal) = tsb(:,:,:,jp_sal) * ptmask_b(:,:,:) 
     84      tsn(:,:,:,jp_sal) = tsn(:,:,:,jp_sal) *  tmask  (:,:,:) 
    8985 
    9086      !============================================================================== 
     
    118114 
    119115                  ! volume, heat and salt differences in each cell  
    120                   pvol_flx(ji,jj,jk)       =   pvol_flx(ji,jj,jk)        + zde3t * r1_rdtiscpl 
    121                   pts_flx (ji,jj,jk,jp_sal)=   pts_flx (ji,jj,jk,jp_sal) + zdsal * r1_rdtiscpl  
    122                   pts_flx (ji,jj,jk,jp_tem)=   pts_flx (ji,jj,jk,jp_tem) + zdtem * r1_rdtiscpl 
     116                  pvol_flx(ji,jj,jk)       =   pvol_flx(ji,jj,jk)        + zde3t * z1_rdtiscpl 
     117                  pts_flx (ji,jj,jk,jp_sal)=   pts_flx (ji,jj,jk,jp_sal) + zdsal * z1_rdtiscpl  
     118                  pts_flx (ji,jj,jk,jp_tem)=   pts_flx (ji,jj,jk,jp_tem) + zdtem * z1_rdtiscpl 
    123119 
    124120                  ! case where we close a cell: check if the neighbour cells are wet  
     
    190186      ! if no neighbour wet cell in case of 2close a cell", need to find the nearest wet point  
    191187      ! allocation and initialisation of the list of problematic point 
    192       ALLOCATE(inpts(jpnij)) 
    193       inpts(:)=0 
     188      ALLOCATE( inpts(jpnij) ) 
     189      inpts(:) = 0 
    194190 
    195191      ! fill narea location with the number of problematic point 
     
    287283      CALL lbc_sum(pts_flx (:,:,:,jp_sal),'T',1._wp) 
    288284      CALL lbc_sum(pts_flx (:,:,:,jp_tem),'T',1._wp) 
    289  
    290       ! deallocate variables 
    291       CALL wrk_dealloc(jpi,jpj, zdssh )  
    292  
     285      ! 
    293286   END SUBROUTINE iscpl_cons 
     287 
    294288 
    295289   SUBROUTINE iscpl_div( phdivn ) 
  • branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/NEMO/OPA_SRC/DOM/iscplini.F90

    r7646 r8568  
    1111   !!   iscpl_alloc    : allocation of correction variables 
    1212   !!---------------------------------------------------------------------- 
     13   USE oce             ! global tra/dyn variable 
    1314   USE dom_oce         ! ocean space and time domain 
    14    USE oce             ! global tra/dyn variable 
     15   ! 
    1516   USE lib_mpp         ! MPP library 
    1617   USE lib_fortran     ! MPP library 
     
    4748   END FUNCTION iscpl_alloc 
    4849 
     50 
    4951   SUBROUTINE iscpl_init() 
     52      !!---------------------------------------------------------------------- 
    5053      INTEGER ::   ios           ! Local integer output status for namelist read 
    51       NAMELIST/namsbc_iscpl/nn_fiscpl,ln_hsb,nn_drown 
     54      NAMELIST/namsbc_iscpl/ nn_fiscpl, ln_hsb, nn_drown 
    5255      !!---------------------------------------------------------------------- 
    53       !                                   ! ============ 
    54       !                                   !   Namelist 
    55       !                                   ! ============ 
    5656      ! 
    5757      nn_fiscpl = 0 
     
    7979         WRITE(numout,*) ' coupling time step                       = ', rdt_iscpl 
    8080         WRITE(numout,*) ' number of call of the extrapolation loop = ', nn_drown 
    81       END IF 
    82  
     81      ENDIF 
     82      ! 
    8383   END SUBROUTINE iscpl_init 
    8484 
     85   !!====================================================================== 
    8586END MODULE iscplini 
  • branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/NEMO/OPA_SRC/DOM/iscplrst.F90

    r7646 r8568  
    1111   !!   iscpl_rst_interpol : restart interpolation in case of coupling with ice sheet 
    1212   !!---------------------------------------------------------------------- 
     13   USE oce             ! global tra/dyn variable 
    1314   USE dom_oce         ! ocean space and time domain 
    1415   USE domwri          ! ocean space and time domain 
    15    USE domvvl, ONLY : dom_vvl_interpol 
     16   USE domvvl   , ONLY : dom_vvl_interpol 
    1617   USE phycst          ! physical constants 
    1718   USE sbc_oce         ! surface boundary condition variables 
    18    USE oce             ! global tra/dyn variable 
     19   USE iscplini        ! ice sheet coupling: initialisation 
     20   USE iscplhsb        ! ice sheet coupling: conservation 
     21   ! 
    1922   USE in_out_manager  ! I/O manager 
    2023   USE iom             ! I/O module 
    2124   USE lib_mpp         ! MPP library 
    2225   USE lib_fortran     ! MPP library 
    23    USE wrk_nemo        ! Memory allocation 
    2426   USE lbclnk          ! communication 
    25    USE iscplini        ! ice sheet coupling: initialisation 
    26    USE iscplhsb        ! ice sheet coupling: conservation 
    2727 
    2828   IMPLICIT NONE 
     
    5050      !!---------------------------------------------------------------------- 
    5151      INTEGER  ::   inum0 
    52       REAL(wp), DIMENSION(:,:  ), POINTER ::   zsmask_b 
    53       REAL(wp), DIMENSION(:,:,:), POINTER ::   ztmask_b, zumask_b, zvmask_b 
    54       REAL(wp), DIMENSION(:,:,:), POINTER ::   ze3t_b  , ze3u_b  , ze3v_b   
    55       REAL(wp), DIMENSION(:,:,:), POINTER ::   zdepw_b 
     52      REAL(wp), DIMENSION(jpi,jpj)    ::   zsmask_b 
     53      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   ztmask_b, zumask_b, zvmask_b 
     54      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   ze3t_b  , ze3u_b  , ze3v_b   
     55      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   zdepw_b 
    5656      CHARACTER(20) :: cfile 
    5757      !!---------------------------------------------------------------------- 
    58  
    59       CALL wrk_alloc(jpi,jpj,jpk,   ztmask_b, zumask_b, zvmask_b) ! mask before 
    60       CALL wrk_alloc(jpi,jpj,jpk,   ze3t_b  , ze3u_b  , ze3v_b  ) ! e3   before 
    61       CALL wrk_alloc(jpi,jpj,jpk,   zdepw_b ) 
    62       CALL wrk_alloc(jpi,jpj,       zsmask_b                    ) 
    63  
    64  
    65       !! get restart variable 
     58      ! 
     59      !                       ! get restart variable 
    6660      CALL iom_get( numror, jpdom_autoglo, 'tmask'  , ztmask_b   ) ! need to extrapolate T/S 
    6761      CALL iom_get( numror, jpdom_autoglo, 'umask'  , zumask_b   ) ! need to correct barotropic velocity 
     
    7266      CALL iom_get( numror, jpdom_autoglo, 'e3v_n'  , ze3v_b(:,:,:) )  ! need to correct barotropic velocity 
    7367      CALL iom_get( numror, jpdom_autoglo, 'gdepw_n', zdepw_b(:,:,:) ) ! need to interpol vertical profile (vvl) 
    74  
    75       !! read namelist 
    76       CALL iscpl_init() 
    77  
    78       !!  ! Extrapolation/interpolation of modify cell and new cells ... (maybe do it later after domvvl) 
     68      ! 
     69      CALL iscpl_init()       ! read namelist 
     70      !                       ! Extrapolation/interpolation of modify cell and new cells ... (maybe do it later after domvvl) 
    7971      CALL iscpl_rst_interpol( ztmask_b, zumask_b, zvmask_b, zsmask_b, ze3t_b, ze3u_b, ze3v_b, zdepw_b ) 
    80  
    81       !! compute correction if conservation needed 
    82       IF ( ln_hsb ) THEN 
     72      ! 
     73      IF ( ln_hsb ) THEN      ! compute correction if conservation needed 
    8374         IF( iscpl_alloc() /= 0 )   CALL ctl_stop( 'STOP', 'rst_iscpl : unable to allocate rst_iscpl arrays' ) 
    8475         CALL iscpl_cons(ztmask_b, zsmask_b, ze3t_b, htsc_iscpl, hdiv_iscpl, rdt_iscpl) 
    8576      END IF 
    8677          
    87       !! print mesh/mask 
    88       IF( nn_msh /= 0 .AND. ln_iscpl )   CALL dom_wri      ! Create a domain file 
    89  
     78      !                       ! create  a domain file 
     79      IF( nn_msh /= 0 .AND. ln_iscpl )   CALL dom_wri 
     80      ! 
    9081      IF ( ln_hsb ) THEN 
    9182         cfile='correction' 
     
    9788         CALL iom_close ( inum0 ) 
    9889      END IF 
    99  
    100       CALL wrk_dealloc(jpi,jpj,jpk,   ztmask_b,zumask_b,zvmask_b )   
    101       CALL wrk_dealloc(jpi,jpj,jpk,   ze3t_b  ,ze3u_b  ,ze3v_b   )   
    102       CALL wrk_dealloc(jpi,jpj,jpk,   zdepw_b                    ) 
    103       CALL wrk_dealloc(jpi,jpj,       zsmask_b                   ) 
    104  
    105       !! next step is an euler time step 
    106       neuler = 0 
    107  
    108       !! set _b and _n variables equal 
     90      ! 
     91      neuler = 0              ! next step is an euler time step 
     92      ! 
     93      !                       ! set _b and _n variables equal 
    10994      tsb (:,:,:,:) = tsn (:,:,:,:) 
    11095      ub  (:,:,:)   = un  (:,:,:) 
    11196      vb  (:,:,:)   = vn  (:,:,:) 
    11297      sshb(:,:)     = sshn(:,:) 
    113  
    114       !! set _b and _n vertical scale factor equal 
     98      ! 
     99      !                       ! set _b and _n vertical scale factor equal 
    115100      e3t_b (:,:,:) = e3t_n (:,:,:) 
    116101      e3u_b (:,:,:) = e3u_n (:,:,:) 
    117102      e3v_b (:,:,:) = e3v_n (:,:,:) 
    118  
     103      ! 
    119104      e3uw_b (:,:,:) = e3uw_n (:,:,:) 
    120105      e3vw_b (:,:,:) = e3vw_n (:,:,:) 
     
    150135      REAL(wp):: zdz, zdzm1, zdzp1 
    151136      !! 
    152       REAL(wp), DIMENSION(:,:    ), POINTER :: zdmask , zdsmask, zvcorr, zucorr, zde3t 
    153       REAL(wp), DIMENSION(:,:    ), POINTER :: zbub   , zbvb   , zbun  , zbvn 
    154       REAL(wp), DIMENSION(:,:    ), POINTER :: zssh0  , zssh1, zhu1, zhv1 
    155       REAL(wp), DIMENSION(:,:    ), POINTER :: zsmask0, zsmask1 
    156       REAL(wp), DIMENSION(:,:,:  ), POINTER :: ztmask0, ztmask1, ztrp 
    157       REAL(wp), DIMENSION(:,:,:  ), POINTER :: zwmaskn, zwmaskb, ztmp3d 
    158       REAL(wp), DIMENSION(:,:,:,:), POINTER :: zts0 
     137      REAL(wp), DIMENSION(jpi,jpj)          :: zdmask , zsmask0, zucorr, zbub, zbun, zssh0, zhu1, zde3t 
     138      REAL(wp), DIMENSION(jpi,jpj)          :: zdsmask, zsmask1, zvcorr, zbvb, zbvn, zssh1, zhv1 
     139      REAL(wp), DIMENSION(jpi,jpj,jpk)      :: ztmask0, zwmaskn, ztrp 
     140      REAL(wp), DIMENSION(jpi,jpj,jpk)      :: ztmask1, zwmaskb, ztmp3d 
     141      REAL(wp), DIMENSION(jpi,jpj,jpk,jpts) :: zts0 
    159142      !!---------------------------------------------------------------------- 
    160  
    161       !! allocate variables 
    162       CALL wrk_alloc(jpi,jpj,jpk,2, zts0                                   ) 
    163       CALL wrk_alloc(jpi,jpj,jpk,   ztmask0, ztmask1 , ztrp, ztmp3d        )  
    164       CALL wrk_alloc(jpi,jpj,jpk,   zwmaskn, zwmaskb                       )  
    165       CALL wrk_alloc(jpi,jpj,       zsmask0, zsmask1                       )  
    166       CALL wrk_alloc(jpi,jpj,       zdmask , zdsmask, zvcorr, zucorr, zde3t)  
    167       CALL wrk_alloc(jpi,jpj,       zbub   , zbvb    , zbun , zbvn         )  
    168       CALL wrk_alloc(jpi,jpj,       zssh0  , zssh1, zhu1, zhv1             )  
    169  
    170       !! mask value to be sure 
     143      ! 
     144      !                 ! mask value to be sure 
    171145      tsn(:,:,:,jp_tem) = tsn(:,:,:,jp_tem) * ptmask_b(:,:,:) 
    172146      tsn(:,:,:,jp_sal) = tsn(:,:,:,jp_sal) * ptmask_b(:,:,:) 
    173        
    174       ! compute wmask 
     147      ! 
     148      !                 ! compute wmask 
    175149      zwmaskn(:,:,1) = tmask   (:,:,1) 
    176150      zwmaskb(:,:,1) = ptmask_b(:,:,1) 
     
    179153         zwmaskb(:,:,jk) = ptmask_b(:,:,jk) * ptmask_b(:,:,jk-1) 
    180154      END DO 
    181             
    182       ! compute new ssh if we open a full water column (average of the closest neigbourgs)   
     155      !     
     156      !                 ! compute new ssh if we open a full water column (average of the closest neigbourgs)   
    183157      sshb (:,:)=sshn(:,:) 
    184158      zssh0(:,:)=sshn(:,:) 
    185159      zsmask0(:,:) = psmask_b(:,:) 
    186160      zsmask1(:,:) = psmask_b(:,:) 
    187       DO iz = 1,10    ! need to be tuned (configuration dependent) (OK for ISOMIP+) 
     161      DO iz = 1, 10                 ! need to be tuned (configuration dependent) (OK for ISOMIP+) 
    188162         zdsmask(:,:) = ssmask(:,:)-zsmask0(:,:) 
    189163         DO jj = 2,jpj-1 
     
    198172                  &           + zssh0(ji,jjm1)*zsmask0(ji,jjm1))/summsk 
    199173                  zsmask1(ji,jj)=1._wp 
    200                END IF 
     174               ENDIF 
    201175            END DO 
    202176         END DO 
    203          CALL lbc_lnk(sshn,'T',1._wp) 
    204          CALL lbc_lnk(zsmask1,'T',1._wp) 
     177         CALL lbc_lnk( sshn   , 'T', 1._wp ) 
     178         CALL lbc_lnk( zsmask1, 'T', 1._wp ) 
    205179         zssh0   = sshn 
    206180         zsmask0 = zsmask1 
     
    210184!============================================================================= 
    211185!PM: Is this needed since introduction of VVL by default? 
    212       IF (.NOT.ln_linssh) THEN 
     186      IF ( .NOT.ln_linssh ) THEN 
    213187      ! Reconstruction of all vertical scale factors at now time steps 
    214188      ! ============================================================================= 
     
    224198            END DO 
    225199         END DO 
    226  
     200         ! 
    227201         CALL dom_vvl_interpol( e3t_n(:,:,:), e3u_n(:,:,:), 'U' ) 
    228202         CALL dom_vvl_interpol( e3t_n(:,:,:), e3v_n(:,:,:), 'V' ) 
    229203         CALL dom_vvl_interpol( e3u_n(:,:,:), e3f_n(:,:,:), 'F' ) 
    230204 
    231       ! Vertical scale factor interpolations 
    232       ! ------------------------------------ 
     205         ! Vertical scale factor interpolations 
     206         ! ------------------------------------ 
    233207         CALL dom_vvl_interpol( e3t_n(:,:,:), e3w_n (:,:,:), 'W'  ) 
    234208         CALL dom_vvl_interpol( e3u_n(:,:,:), e3uw_n(:,:,:), 'UW' ) 
    235209         CALL dom_vvl_interpol( e3v_n(:,:,:), e3vw_n(:,:,:), 'VW' ) 
    236  
    237       ! t- and w- points depth 
    238       ! ---------------------- 
     210          
     211         ! t- and w- points depth 
     212         ! ---------------------- 
    239213         gdept_n(:,:,1) = 0.5_wp * e3w_n(:,:,1) 
    240214         gdepw_n(:,:,1) = 0.0_wp 
     
    429403      ! nothing to do 
    430404      !  
    431       ! deallocation tmp arrays 
    432       CALL wrk_dealloc(jpi,jpj,jpk,2, zts0                                   ) 
    433       CALL wrk_dealloc(jpi,jpj,jpk,   ztmask0, ztmask1 , ztrp                )  
    434       CALL wrk_dealloc(jpi,jpj,jpk,   zwmaskn, zwmaskb , ztmp3d              )  
    435       CALL wrk_dealloc(jpi,jpj,       zsmask0, zsmask1                       )  
    436       CALL wrk_dealloc(jpi,jpj,       zdmask , zdsmask, zvcorr, zucorr, zde3t)  
    437       CALL wrk_dealloc(jpi,jpj,       zbub   , zbvb    , zbun  , zbvn        )  
    438       CALL wrk_dealloc(jpi,jpj,       zssh0  , zssh1  , zhu1 , zhv1          )  
    439       ! 
    440405   END SUBROUTINE iscpl_rst_interpol 
    441406 
  • branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/NEMO/OPA_SRC/DOM/istate.F90

    r7753 r8568  
    3636   USE lib_mpp         ! MPP library 
    3737   USE restart         ! restart 
    38    USE wrk_nemo        ! Memory allocation 
    3938   USE timing          ! Timing 
    4039 
     
    6059      !!---------------------------------------------------------------------- 
    6160      INTEGER ::   ji, jj, jk   ! dummy loop indices 
    62       REAL(wp), POINTER, DIMENSION(:,:,:,:) ::   zuvd    ! U & V data workspace 
     61!!gm see comment further down 
     62      REAL(wp), ALLOCATABLE, DIMENSION(:,:,:,:) ::   zuvd    ! U & V data workspace 
     63!!gm end 
    6364      !!---------------------------------------------------------------------- 
    6465      ! 
    65       IF( nn_timing == 1 )   CALL timing_start('istate_init') 
     66      IF( ln_timing )   CALL timing_start('istate_init') 
    6667      ! 
    6768      IF(lwp) WRITE(numout,*) 
     
    121122!!gm to be moved in usrdef of C1D case 
    122123!         IF ( ln_uvd_init .AND. lk_c1d ) THEN ! read 3D U and V data at nit000 
    123 !            CALL wrk_alloc( jpi,jpj,jpk,2,   zuvd ) 
     124!            ALLOCATE( zuvd(jpi,jpj,jpk,2) ) 
    124125!            CALL dta_uvd( nit000, zuvd ) 
    125126!            ub(:,:,:) = zuvd(:,:,:,1) ;  un(:,:,:) = ub(:,:,:) 
    126127!            vb(:,:,:) = zuvd(:,:,:,2) ;  vn(:,:,:) = vb(:,:,:) 
    127 !            CALL wrk_dealloc( jpi,jpj,jpk,2,  zuvd ) 
     128!            DEALLOCATE( zuvd ) 
    128129!         ENDIF 
    129130         ! 
     
    164165      vb_b(:,:) = vb_b(:,:) * r1_hv_b(:,:) 
    165166      ! 
    166       IF( nn_timing == 1 )   CALL timing_stop('istate_init') 
     167      IF( ln_timing )   CALL timing_stop('istate_init') 
    167168      ! 
    168169   END SUBROUTINE istate_init 
  • branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/NEMO/OPA_SRC/DYN/divhor.F90

    r7753 r8568  
    2929   USE lbclnk          ! ocean lateral boundary conditions (or mpp link) 
    3030   USE lib_mpp         ! MPP library 
    31    USE wrk_nemo        ! Memory Allocation 
    3231   USE timing          ! Timing 
    3332 
     
    4039#  include "vectopt_loop_substitute.h90" 
    4140   !!---------------------------------------------------------------------- 
    42    !! NEMO/OPA 3.7 , NEMO Consortium (2014) 
     41   !! NEMO/OPA 4.0 , NEMO Consortium (2017) 
    4342   !! $Id$  
    4443   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt) 
     
    6463      !!---------------------------------------------------------------------- 
    6564      ! 
    66       IF( nn_timing == 1 )   CALL timing_start('div_hor') 
     65      IF( ln_timing )   CALL timing_start('div_hor') 
    6766      ! 
    6867      IF( kt == nit000 ) THEN 
     
    7574         DO jj = 2, jpjm1 
    7675            DO ji = fs_2, fs_jpim1   ! vector opt. 
    77                hdivn(ji,jj,jk) = (  e2u(ji  ,jj) * e3u_n(ji  ,jj,jk) * un(ji  ,jj,jk)        & 
    78                   &               - e2u(ji-1,jj) * e3u_n(ji-1,jj,jk) * un(ji-1,jj,jk)        & 
    79                   &               + e1v(ji,jj  ) * e3v_n(ji,jj  ,jk) * vn(ji,jj  ,jk)        & 
    80                   &               - e1v(ji,jj-1) * e3v_n(ji,jj-1,jk) * vn(ji,jj-1,jk)   )    & 
    81                   &            / ( e1e2t(ji,jj) * e3t_n(ji,jj,jk) ) 
     76               hdivn(ji,jj,jk) = (  e2u(ji  ,jj) * e3u_n(ji  ,jj,jk) * un(ji  ,jj,jk)      & 
     77                  &               - e2u(ji-1,jj) * e3u_n(ji-1,jj,jk) * un(ji-1,jj,jk)      & 
     78                  &               + e1v(ji,jj  ) * e3v_n(ji,jj  ,jk) * vn(ji,jj  ,jk)      & 
     79                  &               - e1v(ji,jj-1) * e3v_n(ji,jj-1,jk) * vn(ji,jj-1,jk)  )   & 
     80                  &            * r1_e1e2t(ji,jj) / e3t_n(ji,jj,jk) 
    8281            END DO   
    8382         END DO   
     
    9089      END DO 
    9190      ! 
    92       IF( ln_rnf )   CALL sbc_rnf_div( hdivn )      !==  runoffs    ==!   (update hdivn field) 
     91      IF( ln_rnf )   CALL sbc_rnf_div( hdivn )              !==  runoffs    ==!   (update hdivn field) 
    9392      ! 
    94       IF( ln_isf )   CALL sbc_isf_div( hdivn )      !==  ice shelf  ==!   (update hdivn field) 
     93      IF( ln_isf )   CALL sbc_isf_div( hdivn )              !==  ice shelf  ==!   (update hdivn field) 
    9594      ! 
    96       IF( ln_iscpl .AND. ln_hsb ) CALL iscpl_div( hdivn ) !==  ice sheet  ==!   (update hdivn field) 
     95      IF( ln_iscpl .AND. ln_hsb )   CALL iscpl_div( hdivn ) !==  ice sheet  ==!   (update hdivn field) 
    9796      ! 
    98       CALL lbc_lnk( hdivn, 'T', 1. )                !==  lateral boundary cond.  ==!   (no sign change) 
     97      CALL lbc_lnk( hdivn, 'T', 1. )   !   (no sign change) 
    9998      ! 
    100       IF( nn_timing == 1 )  CALL timing_stop('div_hor') 
     99      IF( ln_timing )   CALL timing_stop('div_hor') 
    101100      ! 
    102101   END SUBROUTINE div_hor 
  • branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/NEMO/OPA_SRC/DYN/dynadv.F90

    r7646 r8568  
    77   !!            3.3  !  2010-10  (C. Ethe, G. Madec)  reorganisation of initialisation phase 
    88   !!            3.6  !  2015-05  (N. Ducousso, G. Madec)  add Hollingsworth scheme as an option  
     9   !!            4.0  !  2017-07  (G. Madec)  add a linear dynamics option 
    910   !!---------------------------------------------------------------------- 
    1011 
     
    3031  
    3132   !                                    !* namdyn_adv namelist * 
    32    LOGICAL, PUBLIC ::   ln_dynadv_vec   !: vector form flag 
    33    INTEGER, PUBLIC ::   nn_dynkeg       !: scheme of kinetic energy gradient: =0 C2 ; =1 Hollingsworth 
     33   LOGICAL, PUBLIC ::   ln_dynadv_NONE  !: linear dynamics (no momentum advection) 
     34   LOGICAL, PUBLIC ::   ln_dynadv_vec   !: vector form 
     35   INTEGER, PUBLIC ::      nn_dynkeg       !: scheme of grad(KE): =0 C2 ; =1 Hollingsworth 
    3436   LOGICAL, PUBLIC ::   ln_dynadv_cen2  !: flux form - 2nd order centered scheme flag 
    3537   LOGICAL, PUBLIC ::   ln_dynadv_ubs   !: flux form - 3rd order UBS scheme flag 
    36    LOGICAL, PUBLIC ::   ln_dynzad_zts   !: vertical advection with sub-timestepping (requires vector form) 
    3738    
    38    INTEGER ::   nadv   ! choice of the formulation and scheme for the advection 
     39   INTEGER, PUBLIC ::   n_dynadv   !: choice of the formulation and scheme for momentum advection 
     40   !                               !  associated indices: 
     41   INTEGER, PUBLIC, PARAMETER ::   np_LIN_dyn = 0   ! no advection: linear dynamics 
     42   INTEGER, PUBLIC, PARAMETER ::   np_VEC_c2  = 1   ! vector form : 2nd order centered scheme 
     43   INTEGER, PUBLIC, PARAMETER ::   np_FLX_c2  = 2   ! flux   form : 2nd order centered scheme 
     44   INTEGER, PUBLIC, PARAMETER ::   np_FLX_ubs = 3   ! flux   form : 3rd order Upstream Biased Scheme 
    3945 
    4046   !! * Substitutions 
    4147#  include "vectopt_loop_substitute.h90" 
    4248   !!---------------------------------------------------------------------- 
    43    !! NEMO/OPA 3.6 , NEMO Consortium (2015) 
     49   !! NEMO/OPA 4.0 , NEMO Consortium (2017) 
    4450   !! $Id$ 
    4551   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt) 
     
    5359      !! ** Purpose :   compute the ocean momentum advection trend. 
    5460      !! 
    55       !! ** Method  : - Update (ua,va) with the advection term following nadv 
     61      !! ** Method  : - Update (ua,va) with the advection term following n_dynadv 
     62      !! 
    5663      !!      NB: in flux form advection (ln_dynadv_cen2 or ln_dynadv_ubs=T)  
    5764      !!      a metric term is add to the coriolis term while in vector form  
     
    6269      !!---------------------------------------------------------------------- 
    6370      ! 
    64       IF( nn_timing == 1 )  CALL timing_start('dyn_adv') 
     71      IF( ln_timing )   CALL timing_start( 'dyn_adv' ) 
    6572      ! 
    66       SELECT CASE ( nadv )                  ! compute advection trend and add it to general trend 
    67       CASE ( 0 )      
    68                       CALL dyn_keg     ( kt, nn_dynkeg )    ! vector form : horizontal gradient of kinetic energy 
    69                       CALL dyn_zad     ( kt )               ! vector form : vertical advection 
    70       CASE ( 1 )      
    71                       CALL dyn_keg     ( kt, nn_dynkeg )    ! vector form : horizontal gradient of kinetic energy 
    72                       CALL dyn_zad_zts ( kt )               ! vector form : vertical advection with sub-timestepping 
    73       CASE ( 2 )  
    74                       CALL dyn_adv_cen2( kt )               ! 2nd order centered scheme 
    75       CASE ( 3 )    
    76                       CALL dyn_adv_ubs ( kt )               ! 3rd order UBS      scheme 
     73      SELECT CASE( n_dynadv )    !==  compute advection trend and add it to general trend  ==! 
     74      CASE( np_VEC_c2  )      
     75         CALL dyn_keg     ( kt, nn_dynkeg )    ! vector form : horizontal gradient of kinetic energy 
     76         CALL dyn_zad     ( kt )               ! vector form : vertical advection 
     77      CASE( np_FLX_c2  )  
     78         CALL dyn_adv_cen2( kt )               ! 2nd order centered scheme 
     79      CASE( np_FLX_ubs )    
     80         CALL dyn_adv_ubs ( kt )               ! 3rd order UBS      scheme (UP3) 
    7781      END SELECT 
    7882      ! 
    79       IF( nn_timing == 1 )  CALL timing_stop('dyn_adv') 
     83      IF( ln_timing )   CALL timing_stop( 'dyn_adv' ) 
    8084      ! 
    8185   END SUBROUTINE dyn_adv 
     
    8791      !!                 
    8892      !! ** Purpose :   Control the consistency between namelist options for  
    89       !!              momentum advection formulation & scheme and set nadv 
     93      !!              momentum advection formulation & scheme and set n_dynadv 
    9094      !!---------------------------------------------------------------------- 
    9195      INTEGER ::   ioptio, ios   ! Local integer 
    9296      ! 
    93       NAMELIST/namdyn_adv/ ln_dynadv_vec, nn_dynkeg, ln_dynadv_cen2 , ln_dynadv_ubs, ln_dynzad_zts 
     97      NAMELIST/namdyn_adv/ ln_dynadv_NONE, ln_dynadv_vec, nn_dynkeg, ln_dynadv_cen2, ln_dynadv_ubs 
    9498      !!---------------------------------------------------------------------- 
    9599      ! 
     
    108112         WRITE(numout,*) '~~~~~~~~~~~~' 
    109113         WRITE(numout,*) '   Namelist namdyn_adv : chose a advection formulation & scheme for momentum' 
    110          WRITE(numout,*) '      Vector/flux form (T/F)                           ln_dynadv_vec  = ', ln_dynadv_vec 
    111          WRITE(numout,*) '      = 0 standard scheme  ; =1 Hollingsworth scheme   nn_dynkeg      = ', nn_dynkeg 
    112          WRITE(numout,*) '      2nd order centred advection scheme               ln_dynadv_cen2 = ', ln_dynadv_cen2 
    113          WRITE(numout,*) '      3rd order UBS advection scheme                   ln_dynadv_ubs  = ', ln_dynadv_ubs 
    114          WRITE(numout,*) '      Sub timestepping of vertical advection           ln_dynzad_zts  = ', ln_dynzad_zts 
     114         WRITE(numout,*) '      linear dynamics : no momentum advection          ln_dynadv_NONE = ', ln_dynadv_NONE 
     115         WRITE(numout,*) '      Vector form: 2nd order centered scheme           ln_dynadv_vec  = ', ln_dynadv_vec 
     116         WRITE(numout,*) '         with Hollingsworth scheme (=1) or not (=0)       nn_dynkeg   = ', nn_dynkeg 
     117         WRITE(numout,*) '      flux form: 2nd order centred scheme              ln_dynadv_cen2 = ', ln_dynadv_cen2 
     118         WRITE(numout,*) '                 3rd order UBS scheme                  ln_dynadv_ubs  = ', ln_dynadv_ubs 
    115119      ENDIF 
    116120 
    117       ioptio = 0                      ! Parameter control 
    118       IF( ln_dynadv_vec  )   ioptio = ioptio + 1 
    119       IF( ln_dynadv_cen2 )   ioptio = ioptio + 1 
    120       IF( ln_dynadv_ubs  )   ioptio = ioptio + 1 
     121      ioptio = 0                      ! parameter control and set n_dynadv 
     122      IF( ln_dynadv_NONE ) THEN   ;   ioptio = ioptio + 1   ;   n_dynadv = np_LIN_dyn   ;   ENDIF 
     123      IF( ln_dynadv_vec  ) THEN   ;   ioptio = ioptio + 1   ;   n_dynadv = np_VEC_c2    ;   ENDIF 
     124      IF( ln_dynadv_cen2 ) THEN   ;   ioptio = ioptio + 1   ;   n_dynadv = np_FLX_c2    ;   ENDIF 
     125      IF( ln_dynadv_ubs  ) THEN   ;   ioptio = ioptio + 1   ;   n_dynadv = np_FLX_ubs   ;   ENDIF 
    121126 
    122       IF( ioptio /= 1 )   CALL ctl_stop( 'Choose ONE advection scheme in namelist namdyn_adv' ) 
    123       IF( ln_dynzad_zts .AND. .NOT. ln_dynadv_vec )   & 
    124          CALL ctl_stop( 'Sub timestepping of vertical advection requires vector form; set ln_dynadv_vec = .TRUE.' ) 
    125       IF( nn_dynkeg /= nkeg_C2 .AND. nn_dynkeg /= nkeg_HW )   &   
    126          CALL ctl_stop( 'KEG scheme wrong value of nn_dynkeg' ) 
     127      IF( ioptio /= 1 )   CALL ctl_stop( 'choose ONE and only ONE advection scheme' ) 
     128      IF( nn_dynkeg /= nkeg_C2 .AND. nn_dynkeg /= nkeg_HW )   CALL ctl_stop( 'KEG scheme wrong value of nn_dynkeg' ) 
    127129 
    128       !                               ! Set nadv 
    129       IF( ln_dynadv_vec  )   nadv =  0  
    130       IF( ln_dynzad_zts  )   nadv =  1 
    131       IF( ln_dynadv_cen2 )   nadv =  2 
    132       IF( ln_dynadv_ubs  )   nadv =  3 
    133130 
    134131      IF(lwp) THEN                    ! Print the choice 
    135132         WRITE(numout,*) 
    136          IF( nadv ==  0 )   WRITE(numout,*) '      ===>>   vector form : keg + zad + vor is used'  
    137          IF( nadv ==  1 )   WRITE(numout,*) '      ===>>   vector form : keg + zad_zts + vor is used' 
    138          IF( nadv ==  0 .OR. nadv ==  1 ) THEN 
     133         SELECT CASE( n_dynadv ) 
     134         CASE( np_LIN_dyn )   ;   WRITE(numout,*) '      ===>>   linear dynamics : no momentum advection used' 
     135         CASE( np_VEC_c2  )   ;   WRITE(numout,*) '      ===>>   vector form : keg + zad + vor is used'  
    139136            IF( nn_dynkeg == nkeg_C2  )   WRITE(numout,*) '              with Centered standard keg scheme' 
    140137            IF( nn_dynkeg == nkeg_HW  )   WRITE(numout,*) '              with Hollingsworth keg scheme' 
    141          ENDIF 
    142          IF( nadv ==  2 )   WRITE(numout,*) '      ===>>   flux form   : 2nd order scheme is used' 
    143          IF( nadv ==  3 )   WRITE(numout,*) '      ===>>   flux form   : UBS       scheme is used' 
     138         CASE( np_FLX_c2  )   ;   WRITE(numout,*) '      ===>>   flux form   : 2nd order scheme is used' 
     139         CASE( np_FLX_ubs )   ;   WRITE(numout,*) '      ===>>   flux form   : UBS      scheme is used' 
     140         END SELECT 
    144141      ENDIF 
    145142      ! 
  • branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/NEMO/OPA_SRC/DYN/dynadv_cen2.F90

    r6750 r8568  
    2020   USE lib_mpp        ! MPP library 
    2121   USE prtctl         ! Print control 
    22    USE wrk_nemo       ! Memory Allocation 
    2322   USE timing         ! Timing 
    2423 
     
    3130#  include "vectopt_loop_substitute.h90" 
    3231   !!---------------------------------------------------------------------- 
    33    !! NEMO/OPA 4.0 , NEMO Consortium (2011) 
     32   !! NEMO/OPA 4.0 , NEMO Consortium (2017) 
    3433   !! $Id$ 
    3534   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt) 
     
    5150      ! 
    5251      INTEGER  ::   ji, jj, jk   ! dummy loop indices 
    53       REAL(wp), POINTER, DIMENSION(:,:,:) ::  zfu_t, zfv_t, zfu_f, zfv_f, zfu_uw, zfv_vw, zfw 
    54       REAL(wp), POINTER, DIMENSION(:,:,:) ::  zfu, zfv 
     52      REAL(wp), DIMENSION(jpi,jpj,jpk) ::  zfu_t, zfu_f, zfu_uw, zfu 
     53      REAL(wp), DIMENSION(jpi,jpj,jpk) ::  zfv_t, zfv_f, zfv_vw, zfv, zfw 
    5554      !!---------------------------------------------------------------------- 
    5655      ! 
    57       IF( nn_timing == 1 )  CALL timing_start('dyn_adv_cen2') 
    58       ! 
    59       CALL wrk_alloc( jpi,jpj,jpk,   zfu_t, zfv_t, zfu_f, zfv_f, zfu_uw, zfv_vw, zfu, zfv, zfw ) 
     56      IF( ln_timing )   CALL timing_start('dyn_adv_cen2') 
    6057      ! 
    6158      IF( kt == nit000 .AND. lwp ) THEN 
     
    148145         &                       tab3d_2=va, clinfo2=           ' Va: ', mask2=vmask, clinfo3='dyn' ) 
    149146      ! 
    150       CALL wrk_dealloc( jpi, jpj, jpk, zfu_t, zfv_t, zfu_f, zfv_f, zfu_uw, zfv_vw, zfu, zfv, zfw ) 
    151       ! 
    152       IF( nn_timing == 1 )  CALL timing_stop('dyn_adv_cen2') 
     147      IF( ln_timing )   CALL timing_stop('dyn_adv_cen2') 
    153148      ! 
    154149   END SUBROUTINE dyn_adv_cen2 
  • branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/NEMO/OPA_SRC/DYN/dynadv_ubs.F90

    r6750 r8568  
    2323   USE lbclnk         ! ocean lateral boundary conditions (or mpp link) 
    2424   USE lib_mpp        ! MPP library 
    25    USE wrk_nemo       ! Memory Allocation 
    2625   USE timing         ! Timing 
    2726 
     
    3736#  include "vectopt_loop_substitute.h90" 
    3837   !!---------------------------------------------------------------------- 
    39    !! NEMO/OPA 4.0 , NEMO Consortium (2011) 
     38   !! NEMO/OPA 4.0 , NEMO Consortium (2017) 
    4039   !! $Id$ 
    4140   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt) 
     
    7473      INTEGER  ::   ji, jj, jk   ! dummy loop indices 
    7574      REAL(wp) ::   zui, zvj, zfuj, zfvi, zl_u, zl_v   ! local scalars 
    76       REAL(wp), POINTER, DIMENSION(:,:,:  ) ::  zfu, zfv 
    77       REAL(wp), POINTER, DIMENSION(:,:,:  ) ::  zfu_t, zfv_t, zfu_f, zfv_f, zfu_uw, zfv_vw, zfw 
    78       REAL(wp), POINTER, DIMENSION(:,:,:,:) ::  zlu_uu, zlv_vv, zlu_uv, zlv_vu 
     75      REAL(wp), DIMENSION(jpi,jpj,jpk)   ::   zfu_t, zfu_f, zfu_uw, zfu 
     76      REAL(wp), DIMENSION(jpi,jpj,jpk)   ::   zfv_t, zfv_f, zfv_vw, zfv, zfw 
     77      REAL(wp), DIMENSION(jpi,jpj,jpk,2) ::   zlu_uu, zlu_uv 
     78      REAL(wp), DIMENSION(jpi,jpj,jpk,2) ::   zlv_vv, zlv_vu 
    7979      !!---------------------------------------------------------------------- 
    8080      ! 
    81       IF( nn_timing == 1 )  CALL timing_start('dyn_adv_ubs') 
    82       ! 
    83       CALL wrk_alloc( jpi,jpj,jpk,        zfu_t , zfv_t , zfu_f , zfv_f, zfu_uw, zfv_vw, zfu, zfv, zfw ) 
    84       CALL wrk_alloc( jpi,jpj,jpk,jpts,   zlu_uu, zlv_vv, zlu_uv, zlv_vu                               ) 
     81      IF( ln_timing )   CALL timing_start('dyn_adv_ubs') 
    8582      ! 
    8683      IF( kt == nit000 ) THEN 
     
    241238         &                       tab3d_2=va, clinfo2=           ' Va: ', mask2=vmask, clinfo3='dyn' ) 
    242239      ! 
    243       CALL wrk_dealloc( jpi,jpj,jpk,        zfu_t , zfv_t , zfu_f , zfv_f, zfu_uw, zfv_vw, zfu, zfv, zfw ) 
    244       CALL wrk_dealloc( jpi,jpj,jpk,jpts,   zlu_uu, zlv_vv, zlu_uv, zlv_vu                               ) 
    245       ! 
    246       IF( nn_timing == 1 )  CALL timing_stop('dyn_adv_ubs') 
     240      IF( ln_timing )   CALL timing_stop('dyn_adv_ubs') 
    247241      ! 
    248242   END SUBROUTINE dyn_adv_ubs 
  • branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/NEMO/OPA_SRC/DYN/dynbfr.F90

    r8215 r8568  
    5757      !!--------------------------------------------------------------------- 
    5858      ! 
    59       IF( nn_timing == 1 )  CALL timing_start('dyn_bfr') 
     59      IF( ln_timing )   CALL timing_start('dyn_bfr') 
    6060      ! 
    6161!!gm bug : time step is only rdt (not 2 rdt if euler start !) 
     
    109109         &                       tab3d_2=va, clinfo2=       ' Va: ', mask2=vmask, clinfo3='dyn' ) 
    110110      ! 
    111       IF( nn_timing == 1 )  CALL timing_stop('dyn_bfr') 
     111      IF( ln_timing )   CALL timing_stop('dyn_bfr') 
    112112      ! 
    113113   END SUBROUTINE dyn_bfr 
  • branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/NEMO/OPA_SRC/DYN/dynhpg.F90

    r8215 r8568  
    4444   USE lib_mpp         ! MPP library 
    4545   USE eosbn2          ! compute density 
    46    USE wrk_nemo        ! Memory Allocation 
    4746   USE timing          ! Timing 
    4847   USE iom 
     
    8483      !!---------------------------------------------------------------------- 
    8584      INTEGER, INTENT(in) ::   kt   ! ocean time-step index 
    86       REAL(wp), POINTER, DIMENSION(:,:,:) ::  ztrdu, ztrdv 
    87       !!---------------------------------------------------------------------- 
    88       ! 
    89       IF( nn_timing == 1 )  CALL timing_start('dyn_hpg') 
     85      REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) ::   ztrdu, ztrdv 
     86      !!---------------------------------------------------------------------- 
     87      ! 
     88      IF( ln_timing )   CALL timing_start('dyn_hpg') 
    9089      ! 
    9190      IF( l_trddyn ) THEN                    ! Temporary saving of ua and va trends (l_trddyn) 
    92          CALL wrk_alloc( jpi,jpj,jpk, ztrdu, ztrdv ) 
     91         ALLOCATE( ztrdu(jpi,jpj,jpk) , ztrdv(jpi,jpj,jpk) ) 
    9392         ztrdu(:,:,:) = ua(:,:,:) 
    9493         ztrdv(:,:,:) = va(:,:,:) 
     
    108107         ztrdv(:,:,:) = va(:,:,:) - ztrdv(:,:,:) 
    109108         CALL trd_dyn( ztrdu, ztrdv, jpdyn_hpg, kt ) 
    110          CALL wrk_dealloc( jpi,jpj,jpk, ztrdu, ztrdv ) 
     109         DEALLOCATE( ztrdu , ztrdv ) 
    111110      ENDIF 
    112111      ! 
     
    114113         &                       tab3d_2=va, clinfo2=       ' Va: ', mask2=vmask, clinfo3='dyn' ) 
    115114      ! 
    116       IF( nn_timing == 1 )  CALL timing_stop('dyn_hpg') 
     115      IF( ln_timing )   CALL timing_stop('dyn_hpg') 
    117116      ! 
    118117   END SUBROUTINE dyn_hpg 
     
    134133      INTEGER  ::   ji, jj, jk, ikt    ! dummy loop indices      ISF 
    135134      REAL(wp) ::   znad 
    136       REAL(wp), POINTER, DIMENSION(:,:,:)   ::  ztstop, zrhd ! hypothesys on isf density 
    137       REAL(wp), POINTER, DIMENSION(:,:)     ::  zrhdtop_isf  ! density at bottom of ISF 
    138       REAL(wp), POINTER, DIMENSION(:,:)     ::  ziceload     ! density at bottom of ISF 
     135      REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) ::  zts_top, zrhd  ! hypothesys on isf density 
     136      REAL(wp), ALLOCATABLE, DIMENSION(:,:)   ::  zrhdtop_isf    ! density at bottom of ISF 
     137      REAL(wp), ALLOCATABLE, DIMENSION(:,:)   ::  ziceload       ! density at bottom of ISF 
    139138      !! 
    140139      NAMELIST/namdyn_hpg/ ln_hpg_zco, ln_hpg_zps, ln_hpg_sco,     & 
     
    165164      ! 
    166165      IF( ln_hpg_djc )   & 
    167          &   CALL ctl_stop('dyn_hpg_init : Density Jacobian: Cubic polynominal method & 
    168                            & currently disabled (bugs under investigation). Please select & 
    169                            & either  ln_hpg_sco or  ln_hpg_prj instead') 
    170       ! 
    171       IF( .NOT.ln_linssh .AND. .NOT.(ln_hpg_sco.OR.ln_hpg_prj.OR.ln_hpg_isf) )        & 
    172          &   CALL ctl_stop('dyn_hpg_init : non-linear free surface requires either ', & 
    173          &                 '   the standard jacobian formulation hpg_sco    or '    , & 
    174          &                 '   the pressure jacobian formulation hpg_prj'            ) 
    175  
    176       IF(       ln_hpg_isf .AND. .NOT. ln_isfcav )   & 
    177          &   CALL ctl_stop( ' hpg_isf not available if ln_isfcav = false ' ) 
    178       IF( .NOT. ln_hpg_isf .AND.       ln_isfcav )   & 
    179          &   CALL ctl_stop( 'Only hpg_isf has been corrected to work with ice shelf cavity.' ) 
     166         &   CALL ctl_stop('dyn_hpg_init : Density Jacobian: Cubic polynominal method',   & 
     167         &                 '   currently disabled (bugs under investigation).'        ,   & 
     168         &                 '   Please select either  ln_hpg_sco or  ln_hpg_prj instead' ) 
     169         ! 
     170      IF( .NOT.ln_linssh .AND. .NOT.(ln_hpg_sco.OR.ln_hpg_prj.OR.ln_hpg_isf) )          & 
     171         &   CALL ctl_stop('dyn_hpg_init : non-linear free surface requires either ',   & 
     172         &                 '   the standard jacobian formulation hpg_sco    or '    ,   & 
     173         &                 '   the pressure jacobian formulation hpg_prj'             ) 
     174         ! 
     175      IF( ln_hpg_isf ) THEN 
     176         IF( .NOT. ln_isfcav )   CALL ctl_stop( ' hpg_isf not available if ln_isfcav = false ' ) 
     177       ELSE 
     178         IF(       ln_isfcav )   CALL ctl_stop( 'Only hpg_isf has been corrected to work with ice shelf cavity.' ) 
     179      ENDIF 
    180180      ! 
    181181      !                               ! Set nhpg from ln_hpg_... flags 
     
    197197      IF( ioptio /= 1 )   CALL ctl_stop( 'NO or several hydrostatic pressure gradient options used' ) 
    198198      !  
    199       ! initialisation of ice shelf load 
    200       IF ( .NOT. ln_isfcav ) riceload(:,:)=0.0 
    201       IF (       ln_isfcav ) THEN 
    202          CALL wrk_alloc( jpi,jpj, 2,  ztstop)  
    203          CALL wrk_alloc( jpi,jpj,jpk, zrhd  ) 
    204          CALL wrk_alloc( jpi,jpj,     zrhdtop_isf, ziceload)  
     199      !                           
     200      IF ( .NOT. ln_isfcav ) THEN     !--- no ice shelf load 
     201         riceload(:,:) = 0._wp 
     202         ! 
     203      ELSE                            !--- set an ice shelf load 
    205204         ! 
    206205         IF(lwp) WRITE(numout,*) 
    207          IF(lwp) WRITE(numout,*) 'dyn:hpg_isf : hydrostatic pressure gradient trend for ice shelf' 
    208          IF(lwp) WRITE(numout,*) '~~~~~~~~~~~'   
    209  
    210          ! To use density and not density anomaly 
    211          znad=1._wp 
    212           
    213          ! assume water displaced by the ice shelf is at T=-1.9 and S=34.4 (rude) 
    214          ztstop(:,:,1)=-1.9_wp ; ztstop(:,:,2)=34.4_wp 
    215  
    216          ! compute density of the water displaced by the ice shelf  
    217          DO jk = 1, jpk 
    218             CALL eos(ztstop(:,:,:),gdept_n(:,:,jk),zrhd(:,:,jk)) 
    219          END DO 
    220        
    221          ! compute rhd at the ice/oce interface (ice shelf side) 
    222          CALL eos(ztstop,risfdep,zrhdtop_isf) 
    223  
    224          ! Surface value + ice shelf gradient 
    225          ! compute pressure due to ice shelf load (used to compute hpgi/j for all the level from 1 to miku/v) 
    226          ! divided by 2 later 
    227          ziceload = 0._wp 
    228          DO jj = 1, jpj 
    229             DO ji = 1, jpi 
    230                ikt=mikt(ji,jj) 
     206         IF(lwp) WRITE(numout,*) '   ice shelf case: set the ice-shelf load' 
     207         ALLOCATE( zts_top(jpi,jpj,jpts) , zrhd(jpi,jpj,jpk) , zrhdtop_isf(jpi,jpj) , ziceload(jpi,jpj) )  
     208         ! 
     209         znad = 1._wp                     !- To use density and not density anomaly 
     210         ! 
     211         !                                !- assume water displaced by the ice shelf is at T=-1.9 and S=34.4 (rude) 
     212         zts_top(:,:,jp_tem) = -1.9_wp   ;   zts_top(:,:,jp_sal) = 34.4_wp 
     213         ! 
     214         DO jk = 1, jpk                   !- compute density of the water displaced by the ice shelf  
     215            CALL eos( zts_top(:,:,:), gdept_n(:,:,jk), zrhd(:,:,jk) ) 
     216         END DO 
     217         ! 
     218         !                                !- compute rhd at the ice/oce interface (ice shelf side) 
     219         CALL eos( zts_top , risfdep, zrhdtop_isf ) 
     220         ! 
     221         !                                !- Surface value + ice shelf gradient 
     222         ziceload = 0._wp                       ! compute pressure due to ice shelf load  
     223         DO jj = 1, jpj                         ! (used to compute hpgi/j for all the level from 1 to miku/v) 
     224            DO ji = 1, jpi                      ! divided by 2 later 
     225               ikt = mikt(ji,jj) 
    231226               ziceload(ji,jj) = ziceload(ji,jj) + (znad + zrhd(ji,jj,1) ) * e3w_n(ji,jj,1) * (1._wp - tmask(ji,jj,1)) 
    232                DO jk=2,ikt-1 
     227               DO jk = 2, ikt-1 
    233228                  ziceload(ji,jj) = ziceload(ji,jj) + (2._wp * znad + zrhd(ji,jj,jk-1) + zrhd(ji,jj,jk)) * e3w_n(ji,jj,jk) & 
    234229                     &                              * (1._wp - tmask(ji,jj,jk)) 
    235230               END DO 
    236231               IF (ikt  >=  2) ziceload(ji,jj) = ziceload(ji,jj) + (2._wp * znad + zrhdtop_isf(ji,jj) + zrhd(ji,jj,ikt-1)) & 
    237                                   &                              * ( risfdep(ji,jj) - gdept_1d(ikt-1) ) 
    238             END DO 
    239          END DO 
    240          riceload(:,:)=ziceload(:,:)  ! need to be saved for diaar5 
    241  
    242          CALL wrk_dealloc( jpi,jpj, 2,  ztstop)  
    243          CALL wrk_dealloc( jpi,jpj,jpk, zrhd  ) 
    244          CALL wrk_dealloc( jpi,jpj,     zrhdtop_isf, ziceload)  
    245       END IF 
     232                  &                                              * ( risfdep(ji,jj) - gdept_1d(ikt-1) ) 
     233            END DO 
     234         END DO 
     235         riceload(:,:) = ziceload(:,:)  ! need to be saved for diaar5 
     236         ! 
     237         DEALLOCATE( zts_top , zrhd , zrhdtop_isf , ziceload )  
     238      ENDIF 
    246239      ! 
    247240   END SUBROUTINE dyn_hpg_init 
     
    268261      INTEGER  ::   ji, jj, jk       ! dummy loop indices 
    269262      REAL(wp) ::   zcoef0, zcoef1   ! temporary scalars 
    270       REAL(wp), POINTER, DIMENSION(:,:,:) ::  zhpi, zhpj 
    271       !!---------------------------------------------------------------------- 
    272       ! 
    273       CALL wrk_alloc( jpi,jpj,jpk,   zhpi, zhpj ) 
     263      REAL(wp), DIMENSION(jpi,jpj,jpk) ::  zhpi, zhpj 
     264      !!---------------------------------------------------------------------- 
    274265      ! 
    275266      IF( kt == nit000 ) THEN 
     
    315306      END DO 
    316307      ! 
    317       CALL wrk_dealloc( jpi,jpj,jpk,   zhpi, zhpj ) 
    318       ! 
    319308   END SUBROUTINE hpg_zco 
    320309 
     
    333322      INTEGER  ::   iku, ikv                         ! temporary integers 
    334323      REAL(wp) ::   zcoef0, zcoef1, zcoef2, zcoef3   ! temporary scalars 
    335       REAL(wp), POINTER, DIMENSION(:,:,:) ::  zhpi, zhpj 
    336       !!---------------------------------------------------------------------- 
    337       ! 
    338       CALL wrk_alloc( jpi,jpj,jpk,   zhpi, zhpj ) 
     324      REAL(wp), DIMENSION(jpi,jpj,jpk) ::  zhpi, zhpj 
     325      !!---------------------------------------------------------------------- 
    339326      ! 
    340327      IF( kt == nit000 ) THEN 
     
    405392      END DO 
    406393      ! 
    407       CALL wrk_dealloc( jpi,jpj,jpk,   zhpi, zhpj ) 
    408       ! 
    409394   END SUBROUTINE hpg_zps 
    410395 
     
    433418      REAL(wp) ::   zcoef0, zuap, zvap, znad, ztmp       ! temporary scalars 
    434419      LOGICAL  ::   ll_tmp1, ll_tmp2                     ! local logical variables 
    435       REAL(wp), POINTER, DIMENSION(:,:,:) ::  zhpi, zhpj 
    436       REAL(wp), POINTER, DIMENSION(:,:)   ::  zcpx, zcpy !W/D pressure filter 
    437       !!---------------------------------------------------------------------- 
    438       ! 
    439       CALL wrk_alloc( jpi,jpj,jpk, zhpi, zhpj ) 
    440       IF( ln_wd ) CALL wrk_alloc( jpi,jpj, zcpx, zcpy ) 
     420      REAL(wp), DIMENSION(jpi,jpj,jpk)      ::   zhpi, zhpj 
     421      REAL(wp), DIMENSION(:,:), ALLOCATABLE ::   zcpx, zcpy   !W/D pressure filter 
     422      !!---------------------------------------------------------------------- 
    441423      ! 
    442424      IF( kt == nit000 ) THEN 
     
    452434      ! 
    453435      IF( ln_wd ) THEN 
    454         DO jj = 2, jpjm1 
    455            DO ji = 2, jpim1  
    456              ll_tmp1 = MIN(   sshn(ji,jj)               ,   sshn(ji+1,jj) ) >                & 
     436         ALLOCATE( zcpx(jpi,jpj) , zcpy(jpi,jpj) ) 
     437         DO jj = 2, jpjm1 
     438            DO ji = 2, jpim1  
     439               ll_tmp1 = MIN(   sshn(ji,jj)               ,   sshn(ji+1,jj) ) >                & 
    457440                  &    MAX( -ht_wd(ji,jj)               , -ht_wd(ji+1,jj) ) .AND.            & 
    458441                  &    MAX(   sshn(ji,jj) + ht_wd(ji,jj),   sshn(ji+1,jj) + ht_wd(ji+1,jj) ) & 
    459442                  &                                                         > rn_wdmin1 + rn_wdmin2 
    460              ll_tmp2 = ( ABS( sshn(ji,jj)               -   sshn(ji+1,jj) ) > 1.E-12 ) .AND. (             & 
     443               ll_tmp2 = ( ABS( sshn(ji,jj)               -   sshn(ji+1,jj) ) > 1.E-12 ) .AND. (             & 
    461444                  &    MAX(   sshn(ji,jj)               ,   sshn(ji+1,jj) ) >                & 
    462445                  &    MAX( -ht_wd(ji,jj)               , -ht_wd(ji+1,jj) ) + rn_wdmin1 + rn_wdmin2 ) 
    463446 
    464              IF(ll_tmp1) THEN 
    465                zcpx(ji,jj) = 1.0_wp 
    466              ELSE IF(ll_tmp2) THEN 
    467                ! no worries about  sshn(ji+1,jj) -  sshn(ji  ,jj) = 0, it won't happen ! here 
    468                zcpx(ji,jj) = ABS( (sshn(ji+1,jj) + ht_wd(ji+1,jj) - sshn(ji,jj) - ht_wd(ji,jj)) & 
    469                            &    / (sshn(ji+1,jj) -  sshn(ji  ,jj)) ) 
    470              ELSE 
    471                zcpx(ji,jj) = 0._wp 
    472              END IF 
    473        
    474              ll_tmp1 = MIN(   sshn(ji,jj)               ,   sshn(ji,jj+1) ) >                & 
     447               IF(ll_tmp1) THEN 
     448                  zcpx(ji,jj) = 1.0_wp 
     449               ELSE IF(ll_tmp2) THEN 
     450                  ! no worries about  sshn(ji+1,jj) -  sshn(ji  ,jj) = 0, it won't happen ! here 
     451                  zcpx(ji,jj) = ABS(   ( sshn(ji+1,jj)+ht_wd(ji+1,jj) - sshn(ji,jj)-ht_wd(ji,jj) )  & 
     452                     &                / ( sshn(ji+1,jj)                - sshn(ji,jj)              )  ) 
     453               ELSE 
     454                  zcpx(ji,jj) = 0._wp 
     455               ENDIF 
     456               ! 
     457               ll_tmp1 = MIN(   sshn(ji,jj)               ,   sshn(ji,jj+1) ) >                & 
    475458                  &    MAX( -ht_wd(ji,jj)               , -ht_wd(ji,jj+1) ) .AND.            & 
    476459                  &    MAX(   sshn(ji,jj) + ht_wd(ji,jj),   sshn(ji,jj+1) + ht_wd(ji,jj+1) ) & 
    477460                  &                                                         > rn_wdmin1 + rn_wdmin2 
    478              ll_tmp2 = ( ABS( sshn(ji,jj)               -   sshn(ji,jj+1) ) > 1.E-12 ) .AND. (             & 
     461               ll_tmp2 = ( ABS( sshn(ji,jj)               -   sshn(ji,jj+1) ) > 1.E-12 ) .AND. (             & 
    479462                  &    MAX(   sshn(ji,jj)               ,   sshn(ji,jj+1) ) >                & 
    480463                  &    MAX( -ht_wd(ji,jj)               , -ht_wd(ji,jj+1) ) + rn_wdmin1 + rn_wdmin2 ) 
    481  
    482              IF(ll_tmp1) THEN 
    483                zcpy(ji,jj) = 1.0_wp 
    484              ELSE IF(ll_tmp2) THEN 
    485                ! no worries about  sshn(ji,jj+1) -  sshn(ji,jj  ) = 0, it won't happen ! here 
    486                zcpy(ji,jj) = ABS( (sshn(ji,jj+1) + ht_wd(ji,jj+1) - sshn(ji,jj) - ht_wd(ji,jj)) & 
    487                            &    / (sshn(ji,jj+1) -  sshn(ji,jj  )) ) 
    488              ELSE 
    489                zcpy(ji,jj) = 0._wp 
    490              END IF 
    491            END DO 
    492         END DO 
    493         CALL lbc_lnk( zcpx, 'U', 1._wp )    ;   CALL lbc_lnk( zcpy, 'V', 1._wp ) 
    494       END IF 
     464                  ! 
     465               IF(ll_tmp1) THEN 
     466                  zcpy(ji,jj) = 1.0_wp 
     467               ELSE IF(ll_tmp2) THEN 
     468                  ! no worries about  sshn(ji,jj+1) -  sshn(ji,jj  ) = 0, it won't happen ! here 
     469                  zcpy(ji,jj) = ABS(   ( sshn(ji,jj+1)+ht_wd(ji,jj+1) - sshn(ji,jj) - ht_wd(ji,jj) )  & 
     470                     &               / ( sshn(ji,jj+1)                - sshn(ji,jj)                )  ) 
     471               ELSE 
     472                  zcpy(ji,jj) = 0._wp 
     473               ENDIF 
     474            END DO 
     475         END DO 
     476         CALL lbc_lnk( zcpx, 'U', 1._wp )    ;   CALL lbc_lnk( zcpy, 'V', 1._wp ) 
     477      ENDIF 
    495478 
    496479      ! Surface value 
     
    507490            zvap = -zcoef0 * ( rhd    (ji,jj+1,1) + rhd    (ji,jj,1) + 2._wp * znad )   & 
    508491               &           * ( gde3w_n(ji,jj+1,1) - gde3w_n(ji,jj,1) ) * r1_e2v(ji,jj) 
    509  
    510  
     492            ! 
    511493            IF( ln_wd ) THEN 
    512  
    513               zhpi(ji,jj,1) = zhpi(ji,jj,1) * zcpx(ji,jj) 
    514               zhpj(ji,jj,1) = zhpj(ji,jj,1) * zcpy(ji,jj)  
    515               zuap = zuap * zcpx(ji,jj) 
    516               zvap = zvap * zcpy(ji,jj) 
     494               zhpi(ji,jj,1) = zhpi(ji,jj,1) * zcpx(ji,jj) 
     495               zhpj(ji,jj,1) = zhpj(ji,jj,1) * zcpy(ji,jj)  
     496               zuap = zuap * zcpx(ji,jj) 
     497               zvap = zvap * zcpy(ji,jj) 
    517498            ENDIF 
    518  
     499            ! 
    519500            ! add to the general momentum trend 
    520501            ua(ji,jj,1) = ua(ji,jj,1) + zhpi(ji,jj,1) + zuap 
     
    539520               zvap = -zcoef0 * ( rhd    (ji  ,jj+1,jk) + rhd    (ji,jj,jk) + 2._wp * znad )   & 
    540521                  &           * ( gde3w_n(ji  ,jj+1,jk) - gde3w_n(ji,jj,jk) ) * r1_e2v(ji,jj) 
    541  
     522               ! 
    542523               IF( ln_wd ) THEN 
    543                  zhpi(ji,jj,jk) = zhpi(ji,jj,jk) * zcpx(ji,jj) 
    544                  zhpj(ji,jj,jk) = zhpj(ji,jj,jk) * zcpy(ji,jj)  
    545                  zuap = zuap * zcpx(ji,jj) 
    546                  zvap = zvap * zcpy(ji,jj) 
    547                ENDIF 
    548  
     524                  zhpi(ji,jj,jk) = zhpi(ji,jj,jk) * zcpx(ji,jj) 
     525                  zhpj(ji,jj,jk) = zhpj(ji,jj,jk) * zcpy(ji,jj)  
     526                  zuap = zuap * zcpx(ji,jj) 
     527                  zvap = zvap * zcpy(ji,jj) 
     528               ENDIF 
     529               ! 
    549530               ! add to the general momentum trend 
    550531               ua(ji,jj,jk) = ua(ji,jj,jk) + zhpi(ji,jj,jk) + zuap 
     
    554535      END DO 
    555536      ! 
    556       CALL wrk_dealloc( jpi,jpj,jpk, zhpi, zhpj ) 
    557       IF( ln_wd ) CALL wrk_dealloc( jpi,jpj, zcpx, zcpy ) 
     537      IF( ln_wd )   DEALLOCATE( zcpx , zcpy ) 
    558538      ! 
    559539   END SUBROUTINE hpg_sco 
     
    583563      INTEGER  ::   ji, jj, jk, ikt, iktp1i, iktp1j   ! dummy loop indices 
    584564      REAL(wp) ::   zcoef0, zuap, zvap, znad          ! temporary scalars 
    585       REAL(wp), POINTER, DIMENSION(:,:,:)   ::  zhpi, zhpj 
    586       REAL(wp), POINTER, DIMENSION(:,:,:)   ::  ztstop 
    587       REAL(wp), POINTER, DIMENSION(:,:)     ::  zrhdtop_oce 
    588       !!---------------------------------------------------------------------- 
    589       ! 
    590       CALL wrk_alloc( jpi,jpj,  2, ztstop)  
    591       CALL wrk_alloc( jpi,jpj,jpk, zhpi, zhpj) 
    592       CALL wrk_alloc( jpi,jpj,     zrhdtop_oce ) 
    593       ! 
    594       ! Local constant initialization 
    595       zcoef0 = - grav * 0.5_wp 
    596    
    597       ! To use density and not density anomaly 
    598       znad=1._wp 
    599  
    600       ! iniitialised to 0. zhpi zhpi  
    601       zhpi(:,:,:)=0._wp ; zhpj(:,:,:)=0._wp 
     565      REAL(wp), DIMENSION(jpi,jpj,jpk ) ::  zhpi, zhpj 
     566      REAL(wp), DIMENSION(jpi,jpj,jpts) ::  zts_top 
     567      REAL(wp), DIMENSION(jpi,jpj)      ::  zrhdtop_oce 
     568      !!---------------------------------------------------------------------- 
     569      ! 
     570      zcoef0 = - grav * 0.5_wp   ! Local constant initialization 
     571      ! 
     572      znad=1._wp                 ! To use density and not density anomaly 
     573      ! 
     574      !                          ! iniitialised to 0. zhpi zhpi  
     575      zhpi(:,:,:) = 0._wp   ;   zhpj(:,:,:) = 0._wp 
    602576 
    603577      ! compute rhd at the ice/oce interface (ocean side) 
    604578      ! usefull to reduce residual current in the test case ISOMIP with no melting 
    605       DO ji=1,jpi 
    606         DO jj=1,jpj 
    607           ikt=mikt(ji,jj) 
    608           ztstop(ji,jj,1)=tsn(ji,jj,ikt,1) 
    609           ztstop(ji,jj,2)=tsn(ji,jj,ikt,2) 
     579      DO ji = 1, jpi 
     580        DO jj = 1, jpj 
     581          ikt = mikt(ji,jj) 
     582          zts_top(ji,jj,1) = tsn(ji,jj,ikt,1) 
     583          zts_top(ji,jj,2) = tsn(ji,jj,ikt,2) 
    610584        END DO 
    611585      END DO 
    612       CALL eos( ztstop, risfdep, zrhdtop_oce ) 
     586      CALL eos( zts_top, risfdep, zrhdtop_oce ) 
    613587 
    614588!==================================================================================      
     
    667641         END DO 
    668642      END DO 
    669      ! 
    670       CALL wrk_dealloc( jpi,jpj,2  , ztstop) 
    671       CALL wrk_dealloc( jpi,jpj,jpk, zhpi, zhpj) 
    672       CALL wrk_dealloc( jpi,jpj    , zrhdtop_oce ) 
    673643      ! 
    674644   END SUBROUTINE hpg_isf 
     
    690660      REAL(wp) ::   z1_12, cffv, cffy   !    "         " 
    691661      LOGICAL  ::   ll_tmp1, ll_tmp2    ! local logical variables 
    692       REAL(wp), POINTER, DIMENSION(:,:,:) ::  zhpi, zhpj 
    693       REAL(wp), POINTER, DIMENSION(:,:,:) ::  dzx, dzy, dzz, dzu, dzv, dzw 
    694       REAL(wp), POINTER, DIMENSION(:,:,:) ::  drhox, drhoy, drhoz, drhou, drhov, drhow 
    695       REAL(wp), POINTER, DIMENSION(:,:,:) ::  rho_i, rho_j, rho_k 
    696       REAL(wp), POINTER, DIMENSION(:,:)   ::  zcpx, zcpy    !W/D pressure filter 
    697       !!---------------------------------------------------------------------- 
    698       ! 
    699       CALL wrk_alloc( jpi, jpj, jpk, dzx  , dzy  , dzz  , dzu  , dzv  , dzw   ) 
    700       CALL wrk_alloc( jpi, jpj, jpk, drhox, drhoy, drhoz, drhou, drhov, drhow ) 
    701       CALL wrk_alloc( jpi, jpj, jpk, rho_i, rho_j, rho_k,  zhpi,  zhpj        ) 
    702       IF( ln_wd ) CALL wrk_alloc( jpi,jpj, zcpx, zcpy ) 
    703       ! 
     662      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   zhpi, zhpj 
     663      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   dzx, dzy, dzz, dzu, dzv, dzw 
     664      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   drhox, drhoy, drhoz, drhou, drhov, drhow 
     665      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   rho_i, rho_j, rho_k 
     666      REAL(wp), DIMENSION(:,:), ALLOCATABLE ::   zcpx, zcpy   !W/D pressure filter 
     667      !!---------------------------------------------------------------------- 
    704668      ! 
    705669      IF( ln_wd ) THEN 
    706         DO jj = 2, jpjm1 
    707            DO ji = 2, jpim1  
    708              ll_tmp1 = MIN(   sshn(ji,jj)               ,   sshn(ji+1,jj) ) >                & 
     670         ALLOCATE( zcpx(jpi,jpj) , zcpy(jpi,jpj) ) 
     671         DO jj = 2, jpjm1 
     672            DO ji = 2, jpim1  
     673               ll_tmp1 = MIN(   sshn(ji,jj)               ,   sshn(ji+1,jj) ) >                & 
    709674                  &    MAX( -ht_wd(ji,jj)               , -ht_wd(ji+1,jj) ) .AND.            & 
    710675                  &    MAX(   sshn(ji,jj) + ht_wd(ji,jj),   sshn(ji+1,jj) + ht_wd(ji+1,jj) ) & 
    711676                  &                                                         > rn_wdmin1 + rn_wdmin2 
    712              ll_tmp2 = ( ABS( sshn(ji,jj)               -   sshn(ji+1,jj) ) > 1.E-12 ) .AND. (             & 
     677               ll_tmp2 = ( ABS( sshn(ji,jj)               -   sshn(ji+1,jj) ) > 1.E-12 ) .AND. (             & 
    713678                  &    MAX(   sshn(ji,jj)               ,   sshn(ji+1,jj) ) >                & 
    714679                  &    MAX( -ht_wd(ji,jj)               , -ht_wd(ji+1,jj) ) + rn_wdmin1 + rn_wdmin2 ) 
    715680 
    716              IF(ll_tmp1) THEN 
    717                zcpx(ji,jj) = 1.0_wp 
    718              ELSE IF(ll_tmp2) THEN 
    719                ! no worries about  sshn(ji+1,jj) -  sshn(ji  ,jj) = 0, it won't happen ! here 
    720                zcpx(ji,jj) = ABS( (sshn(ji+1,jj) + ht_wd(ji+1,jj) - sshn(ji,jj) - ht_wd(ji,jj)) & 
    721                            &    / (sshn(ji+1,jj) -  sshn(ji  ,jj)) ) 
    722              ELSE 
    723                zcpx(ji,jj) = 0._wp 
    724              END IF 
     681               IF(ll_tmp1) THEN 
     682                  zcpx(ji,jj) = 1.0_wp 
     683               ELSE IF(ll_tmp2) THEN 
     684                  ! no worries about  sshn(ji+1,jj) -  sshn(ji  ,jj) = 0, it won't happen ! here 
     685                  zcpx(ji,jj) = ABS( (sshn(ji+1,jj) + ht_wd(ji+1,jj) - sshn(ji,jj) - ht_wd(ji,jj)) & 
     686                              &    / (sshn(ji+1,jj) -  sshn(ji  ,jj)) ) 
     687               ELSE 
     688                  zcpx(ji,jj) = 0._wp 
     689               ENDIF 
    725690       
    726              ll_tmp1 = MIN(   sshn(ji,jj)               ,   sshn(ji,jj+1) ) >                & 
     691               ll_tmp1 = MIN(   sshn(ji,jj)               ,   sshn(ji,jj+1) ) >                & 
    727692                  &    MAX( -ht_wd(ji,jj)               , -ht_wd(ji,jj+1) ) .AND.            & 
    728693                  &    MAX(   sshn(ji,jj) + ht_wd(ji,jj),   sshn(ji,jj+1) + ht_wd(ji,jj+1) ) & 
    729694                  &                                                         > rn_wdmin1 + rn_wdmin2 
    730              ll_tmp2 = ( ABS( sshn(ji,jj)               -   sshn(ji,jj+1) ) > 1.E-12 ) .AND. (             & 
     695               ll_tmp2 = ( ABS( sshn(ji,jj)               -   sshn(ji,jj+1) ) > 1.E-12 ) .AND. (             & 
    731696                  &    MAX(   sshn(ji,jj)               ,   sshn(ji,jj+1) ) >                & 
    732697                  &    MAX( -ht_wd(ji,jj)               , -ht_wd(ji,jj+1) ) + rn_wdmin1 + rn_wdmin2 ) 
    733698 
    734              IF(ll_tmp1) THEN 
    735                zcpy(ji,jj) = 1.0_wp 
    736              ELSE IF(ll_tmp2) THEN 
    737                ! no worries about  sshn(ji,jj+1) -  sshn(ji,jj  ) = 0, it won't happen ! here 
    738                zcpy(ji,jj) = ABS( (sshn(ji,jj+1) + ht_wd(ji,jj+1) - sshn(ji,jj) - ht_wd(ji,jj)) & 
    739                            &    / (sshn(ji,jj+1) -  sshn(ji,jj  )) ) 
    740              ELSE 
    741                zcpy(ji,jj) = 0._wp 
    742              END IF 
    743            END DO 
    744         END DO 
    745         CALL lbc_lnk( zcpx, 'U', 1._wp )    ;   CALL lbc_lnk( zcpy, 'V', 1._wp ) 
    746       END IF 
     699               IF(ll_tmp1) THEN 
     700                  zcpy(ji,jj) = 1.0_wp 
     701               ELSE IF(ll_tmp2) THEN 
     702                  ! no worries about  sshn(ji,jj+1) -  sshn(ji,jj  ) = 0, it won't happen ! here 
     703                  zcpy(ji,jj) = ABS( (sshn(ji,jj+1) + ht_wd(ji,jj+1) - sshn(ji,jj) - ht_wd(ji,jj)) & 
     704                              &    / (sshn(ji,jj+1) -  sshn(ji,jj  )) ) 
     705               ELSE 
     706                  zcpy(ji,jj) = 0._wp 
     707               ENDIF 
     708            END DO 
     709         END DO 
     710         CALL lbc_lnk( zcpx, 'U', 1._wp )    ;   CALL lbc_lnk( zcpy, 'V', 1._wp ) 
     711      ENDIF 
    747712 
    748713      IF( kt == nit000 ) THEN 
     
    903868         END DO 
    904869      END DO 
    905       CALL lbc_lnk(rho_k,'W',1.) 
    906       CALL lbc_lnk(rho_i,'U',1.) 
    907       CALL lbc_lnk(rho_j,'V',1.) 
     870      CALL lbc_lnk( rho_k, 'W', 1. ) 
     871      CALL lbc_lnk( rho_i, 'U', 1. ) 
     872      CALL lbc_lnk( rho_j, 'V', 1. ) 
    908873 
    909874 
     
    949914      END DO 
    950915      ! 
    951       CALL wrk_dealloc( jpi, jpj, jpk, dzx  , dzy  , dzz  , dzu  , dzv  , dzw   ) 
    952       CALL wrk_dealloc( jpi, jpj, jpk, drhox, drhoy, drhoz, drhou, drhov, drhow ) 
    953       CALL wrk_dealloc( jpi, jpj, jpk, rho_i, rho_j, rho_k,  zhpi,  zhpj        ) 
    954       IF( ln_wd ) CALL wrk_dealloc( jpi,jpj, zcpx, zcpy ) 
     916      IF( ln_wd )   DEALLOCATE( zcpx, zcpy ) 
    955917      ! 
    956918   END SUBROUTINE hpg_djc 
     
    980942      REAL(wp) :: zrhdt1 
    981943      REAL(wp) :: zdpdx1, zdpdx2, zdpdy1, zdpdy2 
    982       REAL(wp), POINTER, DIMENSION(:,:,:) ::   zdept, zrhh 
    983       REAL(wp), POINTER, DIMENSION(:,:,:) ::   zhpi, zu, zv, fsp, xsp, asp, bsp, csp, dsp 
    984       REAL(wp), POINTER, DIMENSION(:,:)   ::   zsshu_n, zsshv_n 
    985       REAL(wp), POINTER, DIMENSION(:,:)   ::  zcpx, zcpy    !W/D pressure filter 
    986       !!---------------------------------------------------------------------- 
    987       ! 
    988       CALL wrk_alloc( jpi,jpj,jpk,   zhpi, zu, zv, fsp, xsp, asp, bsp, csp, dsp ) 
    989       CALL wrk_alloc( jpi,jpj,jpk,   zdept, zrhh ) 
    990       CALL wrk_alloc( jpi,jpj,       zsshu_n, zsshv_n ) 
    991       IF( ln_wd ) CALL wrk_alloc( jpi,jpj, zcpx, zcpy ) 
     944      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   zdept, zrhh 
     945      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   zhpi, zu, zv, fsp, xsp, asp, bsp, csp, dsp 
     946      REAL(wp), DIMENSION(jpi,jpj)   ::   zsshu_n, zsshv_n 
     947      REAL(wp), DIMENSION(:,:), ALLOCATABLE ::   zcpx, zcpy   !W/D pressure filter 
     948      !!---------------------------------------------------------------------- 
    992949      ! 
    993950      IF( kt == nit000 ) THEN 
     
    1003960 
    1004961      IF( ln_wd ) THEN 
    1005         DO jj = 2, jpjm1 
    1006            DO ji = 2, jpim1  
    1007              ll_tmp1 = MIN(   sshn(ji,jj)               ,   sshn(ji+1,jj) ) >                & 
     962         ALLOCATE( zcpx(jpi,jpj) , zcpy(jpi,jpj) ) 
     963         DO jj = 2, jpjm1 
     964            DO ji = 2, jpim1  
     965               ll_tmp1 = MIN(   sshn(ji,jj)               ,   sshn(ji+1,jj) ) >                & 
    1008966                  &    MAX( -ht_wd(ji,jj)               , -ht_wd(ji+1,jj) ) .AND.            & 
    1009967                  &    MAX(   sshn(ji,jj) + ht_wd(ji,jj),   sshn(ji+1,jj) + ht_wd(ji+1,jj) ) & 
    1010968                  &                                                         > rn_wdmin1 + rn_wdmin2 
    1011              ll_tmp2 = ( ABS( sshn(ji,jj)               -   sshn(ji+1,jj) ) > 1.E-12 ) .AND. (             & 
     969               ll_tmp2 = ( ABS( sshn(ji,jj)               -   sshn(ji+1,jj) ) > 1.E-12 ) .AND. (             & 
    1012970                  &    MAX(   sshn(ji,jj)               ,   sshn(ji+1,jj) ) >                & 
    1013971                  &    MAX( -ht_wd(ji,jj)               , -ht_wd(ji+1,jj) ) + rn_wdmin1 + rn_wdmin2 ) 
    1014972 
    1015              IF(ll_tmp1) THEN 
    1016                zcpx(ji,jj) = 1.0_wp 
    1017              ELSE IF(ll_tmp2) THEN 
    1018                ! no worries about  sshn(ji+1,jj) -  sshn(ji  ,jj) = 0, it won't happen ! here 
    1019                zcpx(ji,jj) = ABS( (sshn(ji+1,jj) + ht_wd(ji+1,jj) - sshn(ji,jj) - ht_wd(ji,jj)) & 
    1020                            &    / (sshn(ji+1,jj) -  sshn(ji  ,jj)) ) 
    1021              ELSE 
    1022                zcpx(ji,jj) = 0._wp 
    1023              END IF 
     973               IF(ll_tmp1) THEN 
     974                  zcpx(ji,jj) = 1.0_wp 
     975               ELSE IF(ll_tmp2) THEN 
     976                  ! no worries about  sshn(ji+1,jj) -  sshn(ji  ,jj) = 0, it won't happen ! here 
     977                  zcpx(ji,jj) = ABS( (sshn(ji+1,jj) + ht_wd(ji+1,jj) - sshn(ji,jj) - ht_wd(ji,jj)) & 
     978                             &    / (sshn(ji+1,jj) -  sshn(ji  ,jj)) ) 
     979               ELSE 
     980                  zcpx(ji,jj) = 0._wp 
     981               ENDIF 
    1024982       
    1025              ll_tmp1 = MIN(   sshn(ji,jj)               ,   sshn(ji,jj+1) ) >                & 
     983               ll_tmp1 = MIN(   sshn(ji,jj)             ,   sshn(ji,jj+1) ) >                & 
    1026984                  &    MAX( -ht_wd(ji,jj)               , -ht_wd(ji,jj+1) ) .AND.            & 
    1027985                  &    MAX(   sshn(ji,jj) + ht_wd(ji,jj),   sshn(ji,jj+1) + ht_wd(ji,jj+1) ) & 
    1028986                  &                                                         > rn_wdmin1 + rn_wdmin2 
    1029              ll_tmp2 = ( ABS( sshn(ji,jj)               -   sshn(ji,jj+1) ) > 1.E-12 ) .AND. (             & 
     987               ll_tmp2 = ( ABS( sshn(ji,jj)             -   sshn(ji,jj+1) ) > 1.E-12 ) .AND. (             & 
    1030988                  &    MAX(   sshn(ji,jj)               ,   sshn(ji,jj+1) ) >                & 
    1031989                  &    MAX( -ht_wd(ji,jj)               , -ht_wd(ji,jj+1) ) + rn_wdmin1 + rn_wdmin2 ) 
    1032990 
    1033              IF(ll_tmp1) THEN 
    1034                zcpy(ji,jj) = 1.0_wp 
    1035              ELSE IF(ll_tmp2) THEN 
    1036                ! no worries about  sshn(ji,jj+1) -  sshn(ji,jj  ) = 0, it won't happen ! here 
    1037                zcpy(ji,jj) = ABS( (sshn(ji,jj+1) + ht_wd(ji,jj+1) - sshn(ji,jj) - ht_wd(ji,jj)) & 
     991               IF(ll_tmp1) THEN 
     992                  zcpy(ji,jj) = 1.0_wp 
     993               ELSE IF(ll_tmp2) THEN 
     994                  ! no worries about  sshn(ji,jj+1) -  sshn(ji,jj  ) = 0, it won't happen ! here 
     995                  zcpy(ji,jj) = ABS( (sshn(ji,jj+1) + ht_wd(ji,jj+1) - sshn(ji,jj) - ht_wd(ji,jj)) & 
    1038996                           &    / (sshn(ji,jj+1) -  sshn(ji,jj  )) ) 
    1039              ELSE 
    1040                zcpy(ji,jj) = 0._wp 
    1041              END IF 
    1042            END DO 
    1043         END DO 
    1044         CALL lbc_lnk( zcpx, 'U', 1._wp )    ;   CALL lbc_lnk( zcpy, 'V', 1._wp ) 
    1045       END IF 
     997               ELSE 
     998                  zcpy(ji,jj) = 0._wp 
     999               ENDIF 
     1000            END DO 
     1001         END DO 
     1002         CALL lbc_lnk( zcpx, 'U', 1._wp )    ;   CALL lbc_lnk( zcpy, 'V', 1._wp ) 
     1003      ENDIF 
    10461004 
    10471005      ! Clean 3-D work arrays 
     
    12981256      END DO 
    12991257      ! 
    1300       CALL wrk_dealloc( jpi,jpj,jpk,   zhpi, zu, zv, fsp, xsp, asp, bsp, csp, dsp ) 
    1301       CALL wrk_dealloc( jpi,jpj,jpk,   zdept, zrhh ) 
    1302       CALL wrk_dealloc( jpi,jpj,       zsshu_n, zsshv_n ) 
    1303       IF( ln_wd ) CALL wrk_dealloc( jpi,jpj, zcpx, zcpy ) 
     1258      IF( ln_wd )   DEALLOCATE( zcpx, zcpy ) 
    13041259      ! 
    13051260   END SUBROUTINE hpg_prj 
     
    13531308           !!Simply geometric average 
    13541309               DO jk = 2, jpkm1-1 
    1355                   zdf1 = (fsp(ji,jj,jk) - fsp(ji,jj,jk-1)) / (xsp(ji,jj,jk) - xsp(ji,jj,jk-1)) 
    1356                   zdf2 = (fsp(ji,jj,jk+1) - fsp(ji,jj,jk)) / (xsp(ji,jj,jk+1) - xsp(ji,jj,jk)) 
     1310                  zdf1 = (fsp(ji,jj,jk  ) - fsp(ji,jj,jk-1)) / (xsp(ji,jj,jk  ) - xsp(ji,jj,jk-1)) 
     1311                  zdf2 = (fsp(ji,jj,jk+1) - fsp(ji,jj,jk  )) / (xsp(ji,jj,jk+1) - xsp(ji,jj,jk  )) 
    13571312 
    13581313                  IF(zdf1 * zdf2 <= 0._wp) THEN 
     
    14031358            END DO 
    14041359         END DO 
    1405  
     1360         ! 
    14061361      ELSE 
    1407            CALL ctl_stop( 'invalid polynomial type in cspline' ) 
    1408       ENDIF 
    1409  
     1362         CALL ctl_stop( 'invalid polynomial type in cspline' ) 
     1363      ENDIF 
     1364      ! 
    14101365   END SUBROUTINE cspline 
    14111366 
  • branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/NEMO/OPA_SRC/DYN/dynkeg.F90

    r7753 r8568  
    2222   USE lib_mpp         ! MPP library 
    2323   USE prtctl          ! Print control 
    24    USE wrk_nemo        ! Memory Allocation 
    2524   USE timing          ! Timing 
    2625   USE bdy_oce         ! ocean open boundary conditions 
     
    3938#  include "vectopt_loop_substitute.h90" 
    4039   !!---------------------------------------------------------------------- 
    41    !! NEMO/OPA 3.6 , NEMO Consortium (2015) 
     40   !! NEMO/OPA 4.0 , NEMO Consortium (2017) 
    4241   !! $Id$  
    4342   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt) 
     
    7574      INTEGER, INTENT( in ) ::   kscheme   ! =0/1   type of KEG scheme  
    7675      ! 
    77       INTEGER  ::   ji, jj, jk   ! dummy loop indices 
    78       REAL(wp) ::   zu, zv       ! temporary scalars 
    79       REAL(wp), POINTER, DIMENSION(:,:,:) :: zhke 
    80       REAL(wp), POINTER, DIMENSION(:,:,:) :: ztrdu, ztrdv  
    81       INTEGER  ::   jb                 ! dummy loop indices 
    82       INTEGER  ::   ii, ij, igrd, ib_bdy   ! local integers 
    83       INTEGER  ::   fu, fv 
     76      INTEGER  ::   ji, jj, jk, jb    ! dummy loop indices 
     77      INTEGER  ::   ii, ifu, ib_bdy   ! local integers 
     78      INTEGER  ::   ij, ifv, igrd     !   -       - 
     79      REAL(wp) ::   zu, zv            ! local scalars 
     80      REAL(wp), DIMENSION(jpi,jpj,jpk)        ::   zhke 
     81      REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) ::   ztrdu, ztrdv  
    8482      !!---------------------------------------------------------------------- 
    8583      ! 
    86       IF( nn_timing == 1 )   CALL timing_start('dyn_keg') 
    87       ! 
    88       CALL wrk_alloc( jpi,jpj,jpk,   zhke ) 
     84      IF( ln_timing )   CALL timing_start('dyn_keg') 
    8985      ! 
    9086      IF( kt == nit000 ) THEN 
     
    9490      ENDIF 
    9591 
    96       IF( l_trddyn ) THEN           ! Save ua and va trends 
    97          CALL wrk_alloc( jpi,jpj,jpk,   ztrdu, ztrdv ) 
     92      IF( l_trddyn ) THEN           ! Save the input trends 
     93         ALLOCATE( ztrdu(jpi,jpj,jpk) , ztrdv(jpi,jpj,jpk) ) 
    9894         ztrdu(:,:,:) = ua(:,:,:)  
    9995         ztrdv(:,:,:) = va(:,:,:)  
     
    112108                     ii   = idx_bdy(ib_bdy)%nbi(jb,igrd) 
    113109                     ij   = idx_bdy(ib_bdy)%nbj(jb,igrd) 
    114                      fu   = NINT( idx_bdy(ib_bdy)%flagu(jb,igrd) ) 
    115                      un(ii-fu,ij,jk) = un(ii,ij,jk) * umask(ii,ij,jk) 
     110                     ifu   = NINT( idx_bdy(ib_bdy)%flagu(jb,igrd) ) 
     111                     un(ii-ifu,ij,jk) = un(ii,ij,jk) * umask(ii,ij,jk) 
    116112                  END DO 
    117113               END DO 
     
    122118                     ii   = idx_bdy(ib_bdy)%nbi(jb,igrd) 
    123119                     ij   = idx_bdy(ib_bdy)%nbj(jb,igrd) 
    124                      fv   = NINT( idx_bdy(ib_bdy)%flagv(jb,igrd) ) 
    125                      vn(ii,ij-fv,jk) = vn(ii,ij,jk) * vmask(ii,ij,jk) 
     120                     ifv   = NINT( idx_bdy(ib_bdy)%flagv(jb,igrd) ) 
     121                     vn(ii,ij-ifv,jk) = vn(ii,ij,jk) * vmask(ii,ij,jk) 
    126122                  END DO 
    127123               END DO 
     
    172168      ENDIF       
    173169 
    174  
    175170      ! 
    176171      DO jk = 1, jpkm1                    !==  grad( KE ) added to the general momentum trends  ==! 
     
    187182         ztrdv(:,:,:) = va(:,:,:) - ztrdv(:,:,:) 
    188183         CALL trd_dyn( ztrdu, ztrdv, jpdyn_keg, kt ) 
    189          CALL wrk_dealloc( jpi,jpj,jpk,   ztrdu, ztrdv ) 
     184         DEALLOCATE( ztrdu , ztrdv ) 
    190185      ENDIF 
    191186      ! 
     
    193188         &                       tab3d_2=va, clinfo2=       ' Va: ', mask2=vmask, clinfo3='dyn' ) 
    194189      ! 
    195       CALL wrk_dealloc( jpi,jpj,jpk,   zhke ) 
    196       ! 
    197       IF( nn_timing == 1 )   CALL timing_stop('dyn_keg') 
     190      IF( ln_timing )   CALL timing_stop('dyn_keg') 
    198191      ! 
    199192   END SUBROUTINE dyn_keg 
  • branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/NEMO/OPA_SRC/DYN/dynldf.F90

    r8215 r8568  
    2727   USE lib_mpp        ! distribued memory computing library 
    2828   USE lbclnk         ! ocean lateral boundary conditions (or mpp link) 
    29    USE wrk_nemo       ! Memory Allocation 
    3029   USE timing         ! Timing 
    3130 
     
    4847#  include "vectopt_loop_substitute.h90" 
    4948   !!---------------------------------------------------------------------- 
    50    !! NEMO/OPA 3.7 , NEMO Consortium (2015) 
     49   !! NEMO/OPA 4.0 , NEMO Consortium (2017) 
    5150   !! $Id$ 
    5251   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt) 
     
    6261      INTEGER, INTENT(in) ::   kt   ! ocean time-step index 
    6362      ! 
    64       REAL(wp), POINTER, DIMENSION(:,:,:) ::  ztrdu, ztrdv 
     63      REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) ::   ztrdu, ztrdv 
    6564      !!---------------------------------------------------------------------- 
    6665      ! 
    67       IF( nn_timing == 1 )  CALL timing_start('dyn_ldf') 
     66      IF( ln_timing )   CALL timing_start('dyn_ldf') 
    6867      ! 
    6968      IF( l_trddyn )   THEN                      ! temporary save of momentum trends 
    70          CALL wrk_alloc( jpi,jpj,jpk,   ztrdu, ztrdv ) 
     69         ALLOCATE( ztrdu(jpi,jpj,jpk) , ztrdv(jpi,jpj,jpk) ) 
    7170         ztrdu(:,:,:) = ua(:,:,:)  
    7271         ztrdv(:,:,:) = va(:,:,:)  
     
    8584         ztrdv(:,:,:) = va(:,:,:) - ztrdv(:,:,:) 
    8685         CALL trd_dyn( ztrdu, ztrdv, jpdyn_ldf, kt ) 
    87          CALL wrk_dealloc( jpi,jpj,jpk,   ztrdu, ztrdv ) 
     86         DEALLOCATE ( ztrdu , ztrdv ) 
    8887      ENDIF 
    8988      !                                          ! print sum trends (used for debugging) 
     
    9190         &                       tab3d_2=va, clinfo2=       ' Va: ', mask2=vmask, clinfo3='dyn' ) 
    9291      ! 
    93       IF( nn_timing == 1 )  CALL timing_stop('dyn_ldf') 
     92      IF( ln_timing )   CALL timing_stop('dyn_ldf') 
    9493      ! 
    9594   END SUBROUTINE dyn_ldf 
     
    102101      !! ** Purpose :   initializations of the horizontal ocean dynamics physics 
    103102      !!---------------------------------------------------------------------- 
    104       INTEGER ::   ioptio, ierr         ! temporary integers  
     103      INTEGER ::   ioptio, ierr   ! temporary integers  
    105104      !!---------------------------------------------------------------------- 
    106105      ! 
    107       !                                   ! Namelist nam_dynldf: already read in ldfdyn module 
     106      !                                !==  Namelist nam_dynldf  ==!  already read in ldfdyn module 
    108107      ! 
    109       IF(lwp) THEN                        ! Namelist print 
     108      IF(lwp) THEN                     !== Namelist print  ==! 
    110109         WRITE(numout,*) 
    111110         WRITE(numout,*) 'dyn_ldf_init : Choice of the lateral diffusive operator on dynamics' 
    112111         WRITE(numout,*) '~~~~~~~~~~~~' 
    113112         WRITE(numout,*) '   Namelist nam_dynldf : set lateral mixing parameters (type, direction, coefficients)' 
    114          WRITE(numout,*) '      laplacian operator          ln_dynldf_lap = ', ln_dynldf_lap 
    115          WRITE(numout,*) '      bilaplacian operator        ln_dynldf_blp = ', ln_dynldf_blp 
    116          WRITE(numout,*) '      iso-level                   ln_dynldf_lev = ', ln_dynldf_lev 
    117          WRITE(numout,*) '      horizontal (geopotential)   ln_dynldf_hor = ', ln_dynldf_hor 
    118          WRITE(numout,*) '      iso-neutral                 ln_dynldf_iso = ', ln_dynldf_iso 
     113         WRITE(numout,*) '      Type of operator' 
     114         WRITE(numout,*) '         no explicit diffusion       ln_dynldf_NONE = ', ln_dynldf_NONE 
     115         WRITE(numout,*) '         laplacian operator          ln_dynldf_lap  = ', ln_dynldf_lap 
     116         WRITE(numout,*) '         bilaplacian operator        ln_dynldf_blp  = ', ln_dynldf_blp 
     117         WRITE(numout,*) '      Direction of action' 
     118         WRITE(numout,*) '         iso-level                   ln_dynldf_lev  = ', ln_dynldf_lev 
     119         WRITE(numout,*) '         horizontal (geopotential)   ln_dynldf_hor  = ', ln_dynldf_hor 
     120         WRITE(numout,*) '         iso-neutral                 ln_dynldf_iso  = ', ln_dynldf_iso 
    119121      ENDIF 
    120       !                                   ! use of lateral operator or not 
     122      !                                !==  use of lateral operator or not  ==! 
    121123      nldf = np_ERROR 
    122124      ioptio = 0 
    123       IF( ln_dynldf_lap )   ioptio = ioptio + 1 
    124       IF( ln_dynldf_blp )   ioptio = ioptio + 1 
    125       IF( ioptio >  1   )   CALL ctl_stop( 'dyn_ldf_init: use ONE or NONE of the 2 lap/bilap operator type on momentum' ) 
    126       IF( ioptio == 0   )   nldf = np_no_ldf     ! No lateral mixing operator 
     125      IF( ln_dynldf_NONE ) THEN   ;   nldf = np_no_ldf   ;   ioptio = ioptio + 1   ;   ENDIF 
     126      IF( ln_dynldf_lap  ) THEN   ;                          ioptio = ioptio + 1   ;   ENDIF 
     127      IF( ln_dynldf_blp  ) THEN   ;                          ioptio = ioptio + 1   ;   ENDIF 
     128      IF( ioptio /= 1    )   CALL ctl_stop( 'dyn_ldf_init: use ONE of the 3 operator options (NONE/lap/blp)' ) 
    127129      ! 
    128       IF( nldf /= np_no_ldf ) THEN        ! direction ==>> type of operator   
     130      IF(.NOT.ln_dynldf_NONE ) THEN    !==  direction ==>> type of operator  ==! 
    129131         ioptio = 0 
    130132         IF( ln_dynldf_lev )   ioptio = ioptio + 1 
    131133         IF( ln_dynldf_hor )   ioptio = ioptio + 1 
    132134         IF( ln_dynldf_iso )   ioptio = ioptio + 1 
    133          IF( ioptio >  1   )   CALL ctl_stop( '          use only ONE direction (level/hor/iso)' ) 
    134          IF( ioptio == 0   )   CALL ctl_stop( '          use at least ONE direction (level/hor/iso)' ) 
     135         IF( ioptio /= 1   )   CALL ctl_stop( 'dyn_ldf_init: use ONE of the 3 direction options (level/hor/iso)' ) 
    135136         ! 
    136          !                                   ! Set nldf, the type of lateral diffusion, from ln_dynldf_... logicals 
     137         !                             ! Set nldf, the type of lateral diffusion, from ln_dynldf_... logicals 
    137138         ierr = 0 
    138          IF ( ln_dynldf_lap ) THEN      ! laplacian operator 
    139             IF ( ln_zco ) THEN                ! z-coordinate 
     139         IF( ln_dynldf_lap ) THEN         ! laplacian operator 
     140            IF( ln_zco ) THEN                ! z-coordinate 
    140141               IF ( ln_dynldf_lev )   nldf = np_lap     ! iso-level = horizontal (no rotation) 
    141142               IF ( ln_dynldf_hor )   nldf = np_lap     ! iso-level = horizontal (no rotation) 
    142143               IF ( ln_dynldf_iso )   nldf = np_lap_i   ! iso-neutral            (   rotation) 
    143144            ENDIF 
    144             IF ( ln_zps ) THEN             ! z-coordinate with partial step 
     145            IF( ln_zps ) THEN                ! z-coordinate with partial step 
    145146               IF ( ln_dynldf_lev )   nldf = np_lap     ! iso-level              (no rotation) 
    146147               IF ( ln_dynldf_hor )   nldf = np_lap     ! iso-level              (no rotation) 
    147148               IF ( ln_dynldf_iso )   nldf = np_lap_i   ! iso-neutral            (   rotation) 
    148149            ENDIF 
    149             IF ( ln_sco ) THEN             ! s-coordinate 
     150            IF( ln_sco ) THEN                ! s-coordinate 
    150151               IF ( ln_dynldf_lev )   nldf = np_lap     ! iso-level = horizontal (no rotation) 
    151152               IF ( ln_dynldf_hor )   nldf = np_lap_i   ! horizontal             (   rotation) 
     
    154155         ENDIF 
    155156         ! 
    156          IF( ln_dynldf_blp ) THEN          ! bilaplacian operator 
    157             IF ( ln_zco ) THEN                ! z-coordinate 
    158                IF ( ln_dynldf_lev )   nldf = np_blp     ! iso-level = horizontal (no rotation) 
    159                IF ( ln_dynldf_hor )   nldf = np_blp     ! iso-level = horizontal (no rotation) 
    160                IF ( ln_dynldf_iso )   ierr = 2          ! iso-neutral            (   rotation) 
     157         IF( ln_dynldf_blp ) THEN         ! bilaplacian operator 
     158            IF( ln_zco ) THEN                ! z-coordinate 
     159               IF( ln_dynldf_lev )   nldf = np_blp     ! iso-level = horizontal (no rotation) 
     160               IF( ln_dynldf_hor )   nldf = np_blp     ! iso-level = horizontal (no rotation) 
     161               IF( ln_dynldf_iso )   ierr = 2          ! iso-neutral            (   rotation) 
    161162            ENDIF 
    162             IF ( ln_zps ) THEN             ! z-coordinate with partial step 
    163                IF ( ln_dynldf_lev )   nldf = np_blp     ! iso-level              (no rotation) 
    164                IF ( ln_dynldf_hor )   nldf = np_blp     ! iso-level              (no rotation) 
    165                IF ( ln_dynldf_iso )   ierr = 2          ! iso-neutral            (   rotation) 
     163            IF( ln_zps ) THEN                ! z-coordinate with partial step 
     164               IF( ln_dynldf_lev )   nldf = np_blp     ! iso-level              (no rotation) 
     165               IF( ln_dynldf_hor )   nldf = np_blp     ! iso-level              (no rotation) 
     166               IF( ln_dynldf_iso )   ierr = 2          ! iso-neutral            (   rotation) 
    166167            ENDIF 
    167             IF ( ln_sco ) THEN             ! s-coordinate 
    168                IF ( ln_dynldf_lev )   nldf = np_blp     ! iso-level              (no rotation) 
    169                IF ( ln_dynldf_hor )   ierr = 2          ! horizontal             (   rotation) 
    170                IF ( ln_dynldf_iso )   ierr = 2          ! iso-neutral            (   rotation) 
     168            IF( ln_sco ) THEN                ! s-coordinate 
     169               IF( ln_dynldf_lev )   nldf = np_blp     ! iso-level              (no rotation) 
     170               IF( ln_dynldf_hor )   ierr = 2          ! horizontal             (   rotation) 
     171               IF( ln_dynldf_iso )   ierr = 2          ! iso-neutral            (   rotation) 
    171172            ENDIF 
    172173         ENDIF 
  • branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/NEMO/OPA_SRC/DYN/dynldf_iso.F90

    r8215 r8568  
    2828   USE lbclnk          ! ocean lateral boundary conditions (or mpp link) 
    2929   USE prtctl          ! Print control 
    30    USE wrk_nemo        ! Memory Allocation 
    3130   USE timing          ! Timing 
    3231 
     
    4544#  include "vectopt_loop_substitute.h90" 
    4645   !!---------------------------------------------------------------------- 
    47    !! NEMO/OPA 3.3 , NEMO Consortium (2011) 
     46   !! NEMO/OPA 4.0 , NEMO Consortium (2017) 
    4847   !! $Id$ 
    4948   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt) 
     
    108107      ! 
    109108      INTEGER  ::   ji, jj, jk   ! dummy loop indices 
    110       REAL(wp) ::   zabe1, zabe2, zcof1, zcof2                       ! local scalars 
    111       REAL(wp) ::   zmskt, zmskf                                     !   -      - 
    112       REAL(wp) ::   zcoef0, zcoef3, zcoef4, zmkt, zmkf               !   -      - 
    113       REAL(wp) ::   zuav, zvav, zuwslpi, zuwslpj, zvwslpi, zvwslpj   !   -      - 
    114       ! 
    115       REAL(wp), POINTER, DIMENSION(:,:) :: ziut, zjuf, zjvt, zivf, zdku, zdk1u, zdkv, zdk1v 
     109      REAL(wp) ::   zabe1, zmskt, zmkt, zuav, zuwslpi, zuwslpj   ! local scalars 
     110      REAL(wp) ::   zabe2, zmskf, zmkf, zvav, zvwslpi, zvwslpj   !   -      - 
     111      REAL(wp) ::   zcof0, zcof1, zcof2, zcof3, zcof4            !   -      - 
     112      REAL(wp), DIMENSION(jpi,jpj) ::   ziut, zivf, zdku, zdk1u  ! 2D workspace 
     113      REAL(wp), DIMENSION(jpi,jpj) ::   zjuf, zjvt, zdkv, zdk1v  !  -      - 
    116114      !!---------------------------------------------------------------------- 
    117115      ! 
    118       IF( nn_timing == 1 )  CALL timing_start('dyn_ldf_iso') 
    119       ! 
    120       CALL wrk_alloc( jpi, jpj, ziut, zjuf, zjvt, zivf, zdku, zdk1u, zdkv, zdk1v )  
     116      IF( ln_timing )   CALL timing_start('dyn_ldf_iso') 
    121117      ! 
    122118      IF( kt == nit000 ) THEN 
     
    343339         DO jk = 2, jpkm1 
    344340            DO ji = 2, jpim1 
    345                zcoef0= 0.5 * rn_aht_0 * umask(ji,jj,jk) 
     341               zcof0 = 0.5_wp * rn_aht_0 * umask(ji,jj,jk) 
    346342               ! 
    347                zuwslpi = zcoef0 * ( wslpi(ji+1,jj,jk) + wslpi(ji,jj,jk) ) 
    348                zuwslpj = zcoef0 * ( wslpj(ji+1,jj,jk) + wslpj(ji,jj,jk) ) 
     343               zuwslpi = zcof0 * ( wslpi(ji+1,jj,jk) + wslpi(ji,jj,jk) ) 
     344               zuwslpj = zcof0 * ( wslpj(ji+1,jj,jk) + wslpj(ji,jj,jk) ) 
    349345               ! 
    350                zmkt = 1./MAX(  tmask(ji,jj,jk-1)+tmask(ji+1,jj,jk-1)   & 
    351                              + tmask(ji,jj,jk  )+tmask(ji+1,jj,jk  ), 1. ) 
    352                zmkf = 1./MAX(  fmask(ji,jj-1,jk-1) + fmask(ji,jj,jk-1)   & 
    353                              + fmask(ji,jj-1,jk  ) + fmask(ji,jj,jk  ), 1. ) 
    354  
    355                zcoef3 = - e2u(ji,jj) * zmkt * zuwslpi 
    356                zcoef4 = - e1u(ji,jj) * zmkf * zuwslpj 
     346               zmkt = 1./MAX(  tmask(ji,jj,jk-1)+tmask(ji+1,jj,jk-1)      & 
     347                             + tmask(ji,jj,jk  )+tmask(ji+1,jj,jk  ) , 1. ) 
     348               zmkf = 1./MAX(  fmask(ji,jj-1,jk-1) + fmask(ji,jj,jk-1)      & 
     349                             + fmask(ji,jj-1,jk  ) + fmask(ji,jj,jk  ) , 1. ) 
     350 
     351               zcof3 = - e2u(ji,jj) * zmkt * zuwslpi 
     352               zcof4 = - e1u(ji,jj) * zmkf * zuwslpj 
    357353               ! vertical flux on u field 
    358                zfuw(ji,jk) = zcoef3 * ( zdiu (ji,jk-1) + zdiu (ji+1,jk-1)     & 
    359                                        +zdiu (ji,jk  ) + zdiu (ji+1,jk  ) )   & 
    360                            + zcoef4 * ( zdj1u(ji,jk-1) + zdju (ji  ,jk-1)     & 
    361                                        +zdj1u(ji,jk  ) + zdju (ji  ,jk  ) ) 
     354               zfuw(ji,jk) = zcof3 * (  zdiu (ji,jk-1) + zdiu (ji+1,jk-1)      & 
     355                  &                   + zdiu (ji,jk  ) + zdiu (ji+1,jk  ) )   & 
     356                  &        + zcof4 * (  zdj1u(ji,jk-1) + zdju (ji  ,jk-1)      & 
     357                  &                   + zdj1u(ji,jk  ) + zdju (ji  ,jk  ) ) 
    362358               ! vertical mixing coefficient (akzu) 
    363                ! Note: zcoef0 include rn_aht_0, so divided by rn_aht_0 to obtain slp^2 * rn_aht_0 
     359               ! Note: zcof0 include rn_aht_0, so divided by rn_aht_0 to obtain slp^2 * rn_aht_0 
    364360               akzu(ji,jj,jk) = ( zuwslpi * zuwslpi + zuwslpj * zuwslpj ) / rn_aht_0 
    365361            END DO 
     
    369365         DO jk = 2, jpkm1 
    370366            DO ji = 2, jpim1 
    371                zcoef0 = 0.5 * rn_aht_0 * vmask(ji,jj,jk) 
    372  
    373                zvwslpi = zcoef0 * ( wslpi(ji,jj+1,jk) + wslpi(ji,jj,jk) ) 
    374                zvwslpj = zcoef0 * ( wslpj(ji,jj+1,jk) + wslpj(ji,jj,jk) ) 
    375  
    376                zmkf = 1./MAX(  fmask(ji-1,jj,jk-1)+fmask(ji,jj,jk-1)   & 
    377                              + fmask(ji-1,jj,jk  )+fmask(ji,jj,jk  ), 1. ) 
    378                zmkt = 1./MAX(  tmask(ji,jj,jk-1)+tmask(ji,jj+1,jk-1)   & 
    379                              + tmask(ji,jj,jk  )+tmask(ji,jj+1,jk  ), 1. ) 
    380  
    381                zcoef3 = - e2v(ji,jj) * zmkf * zvwslpi 
    382                zcoef4 = - e1v(ji,jj) * zmkt * zvwslpj 
     367               zcof0 = 0.5_wp * rn_aht_0 * vmask(ji,jj,jk) 
     368               ! 
     369               zvwslpi = zcof0 * ( wslpi(ji,jj+1,jk) + wslpi(ji,jj,jk) ) 
     370               zvwslpj = zcof0 * ( wslpj(ji,jj+1,jk) + wslpj(ji,jj,jk) ) 
     371               ! 
     372               zmkf = 1./MAX(  fmask(ji-1,jj,jk-1)+fmask(ji,jj,jk-1)      & 
     373                  &          + fmask(ji-1,jj,jk  )+fmask(ji,jj,jk  ) , 1. ) 
     374               zmkt = 1./MAX(  tmask(ji,jj,jk-1)+tmask(ji,jj+1,jk-1)      & 
     375                  &          + tmask(ji,jj,jk  )+tmask(ji,jj+1,jk  ) , 1. ) 
     376 
     377               zcof3 = - e2v(ji,jj) * zmkf * zvwslpi 
     378               zcof4 = - e1v(ji,jj) * zmkt * zvwslpj 
    383379               ! vertical flux on v field 
    384                zfvw(ji,jk) = zcoef3 * ( zdiv (ji,jk-1) + zdiv (ji-1,jk-1)     & 
    385                   &                    +zdiv (ji,jk  ) + zdiv (ji-1,jk  ) )   & 
    386                   &        + zcoef4 * ( zdjv (ji,jk-1) + zdj1v(ji  ,jk-1)     & 
    387                   &                    +zdjv (ji,jk  ) + zdj1v(ji  ,jk  ) ) 
     380               zfvw(ji,jk) = zcof3 * (  zdiv (ji,jk-1) + zdiv (ji-1,jk-1)      & 
     381                  &                   + zdiv (ji,jk  ) + zdiv (ji-1,jk  ) )   & 
     382                  &        + zcof4 * (  zdjv (ji,jk-1) + zdj1v(ji  ,jk-1)      & 
     383                  &                   + zdjv (ji,jk  ) + zdj1v(ji  ,jk  ) ) 
    388384               ! vertical mixing coefficient (akzv) 
    389                ! Note: zcoef0 include rn_aht_0, so divided by rn_aht_0 to obtain slp^2 * rn_aht_0 
     385               ! Note: zcof0 include rn_aht_0, so divided by rn_aht_0 to obtain slp^2 * rn_aht_0 
    390386               akzv(ji,jj,jk) = ( zvwslpi * zvwslpi + zvwslpj * zvwslpj ) / rn_aht_0 
    391387            END DO 
     
    404400      END DO                                           !   End of slab 
    405401      !                                                ! =============== 
    406       CALL wrk_dealloc( jpi, jpj, ziut, zjuf, zjvt, zivf, zdku, zdk1u, zdkv, zdk1v )  
    407402      ! 
    408       IF( nn_timing == 1 )  CALL timing_stop('dyn_ldf_iso') 
     403      IF( ln_timing )   CALL timing_stop('dyn_ldf_iso') 
    409404      ! 
    410405   END SUBROUTINE dyn_ldf_iso 
  • branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/NEMO/OPA_SRC/DYN/dynldf_lap_blp.F90

    r7753 r8568  
    1919   USE in_out_manager ! I/O manager 
    2020   USE lbclnk         ! ocean lateral boundary conditions (or mpp link) 
    21    USE wrk_nemo       ! Memory Allocation 
    2221   USE timing         ! Timing 
    2322 
     
    3130#  include "vectopt_loop_substitute.h90" 
    3231   !!---------------------------------------------------------------------- 
    33    !! NEMO/OPA 3.7 , NEMO Consortium (2014) 
     32   !! NEMO/OPA 4.0 , NEMO Consortium (2017) 
    3433   !! $Id$  
    3534   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt) 
     
    5756      REAL(wp) ::   zsign        ! local scalars 
    5857      REAL(wp) ::   zua, zva     ! local scalars 
    59       REAL(wp), POINTER, DIMENSION(:,:) ::  zcur, zdiv 
     58      REAL(wp), DIMENSION(jpi,jpj) ::   zcur, zdiv 
    6059      !!---------------------------------------------------------------------- 
    6160      ! 
     
    6665      ENDIF 
    6766      ! 
    68       IF( nn_timing == 1 )   CALL timing_start('dyn_ldf_lap') 
    69       ! 
    70       CALL wrk_alloc( jpi, jpj, zcur, zdiv )  
     67      IF( ln_timing )   CALL timing_start('dyn_ldf_lap') 
    7168      ! 
    7269      IF( kpass == 1 ) THEN   ;   zsign =  1._wp      ! bilaplacian operator require a minus sign 
     
    107104      END DO                                           !   End of slab 
    108105      !                                                ! =============== 
    109       CALL wrk_dealloc( jpi, jpj, zcur, zdiv )  
    110106      ! 
    111       IF( nn_timing == 1 )  CALL timing_stop('dyn_ldf_lap') 
     107      IF( ln_timing )   CALL timing_stop('dyn_ldf_lap') 
    112108      ! 
    113109   END SUBROUTINE dyn_ldf_lap 
     
    131127      REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(inout) ::   pua, pva   ! momentum trend 
    132128      ! 
    133       REAL(wp), POINTER, DIMENSION(:,:,:) ::   zulap, zvlap   ! laplacian at u- and v-point 
     129      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   zulap, zvlap   ! laplacian at u- and v-point 
    134130      !!---------------------------------------------------------------------- 
    135131      ! 
    136       IF( nn_timing == 1 )  CALL timing_start('dyn_ldf_blp') 
    137       ! 
    138       CALL wrk_alloc( jpi, jpj, jpk, zulap, zvlap )  
     132      IF( ln_timing )   CALL timing_start('dyn_ldf_blp') 
    139133      ! 
    140134      IF( kt == nit000 )  THEN 
     
    154148      CALL dyn_ldf_lap( kt, zulap, zvlap, pua, pva, 2 )   ! rotated laplacian applied to zlap (output in pta) 
    155149      ! 
    156       CALL wrk_dealloc( jpi, jpj, jpk, zulap, zvlap )  
    157       ! 
    158       IF( nn_timing == 1 )  CALL timing_stop('dyn_ldf_blp') 
     150      IF( ln_timing )   CALL timing_stop('dyn_ldf_blp') 
    159151      ! 
    160152   END SUBROUTINE dyn_ldf_blp 
  • branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/NEMO/OPA_SRC/DYN/dynnxt.F90

    r7753 r8568  
    4444   USE lbclnk         ! lateral boundary condition (or mpp link) 
    4545   USE lib_mpp        ! MPP library 
    46    USE wrk_nemo       ! Memory Allocation 
    4746   USE prtctl         ! Print control 
    4847   USE timing         ! Timing 
     
    5756 
    5857   !!---------------------------------------------------------------------- 
    59    !! NEMO/OPA 3.3 , NEMO Consortium (2010) 
     58   !! NEMO/OPA 4.0 , NEMO Consortium (2017) 
    6059   !! $Id$  
    6160   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt) 
     
    9796      REAL(wp) ::   zue3a, zue3n, zue3b, zuf, zcoef    ! local scalars 
    9897      REAL(wp) ::   zve3a, zve3n, zve3b, zvf, z1_2dt   !   -      - 
    99       REAL(wp), POINTER, DIMENSION(:,:)   ::  zue, zve 
    100       REAL(wp), POINTER, DIMENSION(:,:,:) ::  ze3u_f, ze3v_f, zua, zva  
     98      REAL(wp), ALLOCATABLE, DIMENSION(:,:)   ::   zue, zve 
     99      REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) ::   ze3u_f, ze3v_f, zua, zva  
    101100      !!---------------------------------------------------------------------- 
    102101      ! 
    103       IF( nn_timing == 1 )   CALL timing_start('dyn_nxt') 
    104       ! 
    105       IF( ln_dynspg_ts       )   CALL wrk_alloc( jpi,jpj,       zue, zve) 
    106       IF( l_trddyn           )   CALL wrk_alloc( jpi,jpj,jpk,   zua, zva) 
     102      IF( ln_timing    )   CALL timing_start('dyn_nxt') 
     103      IF( ln_dynspg_ts )   ALLOCATE( zue(jpi,jpj)     , zve(jpi,jpj)     ) 
     104      IF( l_trddyn     )   ALLOCATE( zua(jpi,jpj,jpk) , zva(jpi,jpj,jpk) ) 
    107105      ! 
    108106      IF( kt == nit000 ) THEN 
     
    253251            ELSE                          ! Asselin filter applied on thickness weighted velocity 
    254252               ! 
    255                CALL wrk_alloc( jpi,jpj,jpk,   ze3u_f, ze3v_f ) 
     253               ALLOCATE( ze3u_f(jpi,jpj,jpk) , ze3v_f(jpi,jpj,jpk) ) 
    256254               ! Before filtered scale factor at (u/v)-points stored in ze3u_f, ze3v_f 
    257255               CALL dom_vvl_interpol( e3t_b(:,:,:), ze3u_f, 'U' ) 
     
    280278               e3v_b(:,:,1:jpkm1) = ze3v_f(:,:,1:jpkm1) 
    281279               ! 
    282                CALL wrk_dealloc( jpi,jpj,jpk,   ze3u_f, ze3v_f ) 
     280               DEALLOCATE( ze3u_f , ze3v_f ) 
    283281            ENDIF 
    284282            ! 
     
    346344         &                       tab3d_2=vn, clinfo2=' Vn: '       , mask2=vmask ) 
    347345      !  
    348       IF( ln_dynspg_ts )   CALL wrk_dealloc( jpi,jpj,       zue, zve ) 
    349       IF( l_trddyn     )   CALL wrk_dealloc( jpi,jpj,jpk,   zua, zva ) 
    350       ! 
    351       IF( nn_timing == 1 )  CALL timing_stop('dyn_nxt') 
     346      IF( ln_dynspg_ts )   DEALLOCATE( zue, zve ) 
     347      IF( l_trddyn     )   DEALLOCATE( zua, zva ) 
     348      IF( ln_timing    )   CALL timing_stop('dyn_nxt') 
    352349      ! 
    353350   END SUBROUTINE dyn_nxt 
  • branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg.F90

    r7753 r8568  
    2828   USE in_out_manager ! I/O manager 
    2929   USE lib_mpp        ! MPP library 
    30    USE wrk_nemo       ! Memory Allocation 
    3130   USE timing         ! Timing 
    3231 
     
    4746#  include "vectopt_loop_substitute.h90" 
    4847   !!---------------------------------------------------------------------- 
    49    !! NEMO/OPA 3.2 , LODYC-IPSL  (2009) 
     48   !! NEMO/OPA 4.0 , LODYC-IPSL  (2017) 
    5049   !! $Id$  
    5150   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt) 
     
    7170      !!             period is used to prevent the divergence of odd and even time step. 
    7271      !!---------------------------------------------------------------------- 
    73       INTEGER, INTENT(in   ) ::   kt       ! ocean time-step index 
    74       ! 
    75       INTEGER  ::   ji, jj, jk                             ! dummy loop indices 
    76       REAL(wp) ::   z2dt, zg_2, zintp, zgrau0r             ! temporary scalar 
    77       REAL(wp), POINTER, DIMENSION(:,:,:) ::  ztrdu, ztrdv 
    78       REAL(wp), POINTER, DIMENSION(:,:)   ::  zpice 
    79       !!---------------------------------------------------------------------- 
    80       ! 
    81       IF( nn_timing == 1 )  CALL timing_start('dyn_spg') 
     72      INTEGER, INTENT(in   ) ::   kt   ! ocean time-step index 
     73      ! 
     74      INTEGER  ::   ji, jj, jk                   ! dummy loop indices 
     75      REAL(wp) ::   z2dt, zg_2, zintp, zgrau0r   ! local scalars 
     76      REAL(wp), ALLOCATABLE, DIMENSION(:,:)   ::   zpice 
     77      REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) ::   ztrdu, ztrdv 
     78      !!---------------------------------------------------------------------- 
     79      ! 
     80      IF( ln_timing )   CALL timing_start('dyn_spg') 
    8281      ! 
    8382      IF( l_trddyn )   THEN                      ! temporary save of ta and sa trends 
    84          CALL wrk_alloc( jpi,jpj,jpk,   ztrdu, ztrdv )  
     83         ALLOCATE( ztrdu(jpi,jpj,jpk) , ztrdv(jpi,jpj,jpk) )  
    8584         ztrdu(:,:,:) = ua(:,:,:) 
    8685         ztrdv(:,:,:) = va(:,:,:) 
     
    124123         ! 
    125124         IF( nn_ice_embd == 2 ) THEN          !== embedded sea ice: Pressure gradient due to snow-ice mass ==! 
    126             CALL wrk_alloc( jpi,jpj,   zpice ) 
    127             !                                             
     125            ALLOCATE( zpice(jpi,jpj) ) 
    128126            zintp = REAL( MOD( kt-1, nn_fsbc ) ) / REAL( nn_fsbc ) 
    129127            zgrau0r     = - grav * r1_rau0 
     
    135133               END DO 
    136134            END DO 
    137             ! 
    138             CALL wrk_dealloc( jpi,jpj,   zpice )          
     135            DEALLOCATE( zpice )          
    139136         ENDIF 
    140137         ! 
     
    161158         ztrdv(:,:,:) = va(:,:,:) - ztrdv(:,:,:) 
    162159         CALL trd_dyn( ztrdu, ztrdv, jpdyn_spg, kt ) 
    163          CALL wrk_dealloc( jpi,jpj,jpk,   ztrdu, ztrdv )  
     160         DEALLOCATE( ztrdu , ztrdv )  
    164161      ENDIF 
    165162      !                                      ! print mean trends (used for debugging) 
     
    167164         &                       tab3d_2=va, clinfo2=       ' Va: ', mask2=vmask, clinfo3='dyn' ) 
    168165      ! 
    169       IF( nn_timing == 1 )  CALL timing_stop('dyn_spg') 
     166      IF( ln_timing )   CALL timing_stop('dyn_spg') 
    170167  &n