Changeset 12732


Ignore:
Timestamp:
2020-04-09T21:06:01+02:00 (8 months ago)
Author:
techene
Message:

some cleaning and proper module/routine name, mini bug introduced and corrected in sbcice_cice

Location:
NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/OCE
Files:
12 edited
4 moved

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/OCE/ASM/asminc.F90

    r12731 r12732  
    803803      ELSE 
    804804         ALLOCATE( ztim(jpi,jpj) ) 
    805 !!st         ztim(:,:) = ssh_iau(:,:) / ( ht_(:,:) + 1.0 - ssmask(:,:) ) 
    806          DO_2D_11_11 
    807             ztim(ji,jj) = ssh_iau(ji,jj) / ( ht(ji,jj) + 1.0 - ssmask(ji,jj) ) 
    808          END_2D 
     805         ztim(:,:) = ssh_iau(:,:) / ( ht(:,:) + 1.0 - ssmask(:,:) ) 
    809806         DO jk = 1, jpkm1 
    810807            phdivn(:,:,jk) = phdivn(:,:,jk) - ztim(:,:) * tmask(:,:,jk) 
  • NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/OCE/DIA/diaar5.F90

    r12731 r12732  
    7878      REAL(wp), ALLOCATABLE, DIMENSION(:,:)     :: zarea_ssh , zbotpres       ! 2D workspace  
    7979      REAL(wp), ALLOCATABLE, DIMENSION(:,:)     :: z2d, zpe                   ! 2D workspace  
    80       REAL(wp), ALLOCATABLE, DIMENSION(:,:,:)   :: z3d, zrhd , zrhop, ztpot, zgdept   ! 3D workspace 
     80      REAL(wp), ALLOCATABLE, DIMENSION(:,:,:)   :: z3d, zrhd , zrhop, ztpot, zgdept   ! 3D workspace (zgdept: needed to use the substitute) 
    8181      REAL(wp), ALLOCATABLE, DIMENSION(:,:,:,:) :: ztsn                       ! 4D workspace 
    8282 
     
    132132         ztsn(:,:,:,jp_tem) = ts(:,:,:,jp_tem,Kmm)                    ! thermosteric ssh 
    133133         ztsn(:,:,:,jp_sal) = sn0(:,:,:) 
    134 !!st to be improved 
    135134         DO jk = 1, jpkm1 
    136135            zgdept(:,:,jk) = gdept(:,:,jk,Kmm) 
  • NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/OCE/DIA/diawri.F90

    r12731 r12732  
    142142         END DO 
    143143         CALL iom_put( "e3t"     ,     z3d(:,:,:) ) 
    144          CALL iom_put( "e3tdef"  , ( ( z3d(:,:,:) - e3t_0(:,:,:) ) / e3t_0(:,:,:) * 100 * tmask(:,:,:) ) ** 2 ) !!st r3t 
     144         CALL iom_put( "e3tdef"  , ( ( z3d(:,:,:) - e3t_0(:,:,:) ) / e3t_0(:,:,:) * 100 * tmask(:,:,:) ) ** 2 )  
    145145      ENDIF  
    146146      IF ( iom_use("e3u") ) THEN                         ! time-varying e3u 
     
    806806         zw3d(:,:,:) = ( ( ze3t(:,:,:) - e3t_0(:,:,:) ) / e3t_0(:,:,:) * 100 * tmask(:,:,:) ) ** 2 
    807807         CALL histwrite( nid_T, "vovvle3t", it, ze3t (:,:,:)     , ndim_T , ndex_T  )   ! level thickness 
    808          CALL histwrite( nid_T, "vovvldep", it, zgdept , ndim_T , ndex_T  )   ! t-point depth !!st patch 
     808         CALL histwrite( nid_T, "vovvldep", it, zgdept , ndim_T , ndex_T  )   ! t-point depth  
    809809         CALL histwrite( nid_T, "vovvldef", it, zw3d             , ndim_T , ndex_T  )   ! level thickness deformation 
    810810      ENDIF 
     
    945945      !! 
    946946      INTEGER :: inum, jk 
    947       REAL(wp), DIMENSION(jpi,jpj,jpk) :: ze3t, zgdept      ! 3D workspace 
     947      REAL(wp), DIMENSION(jpi,jpj,jpk) :: ze3t, zgdept      ! 3D workspace !!st patch to use substitution 
    948948      !!---------------------------------------------------------------------- 
    949949      !  
     
    955955      ENDIF  
    956956      ! 
    957 !!st patch 
    958957      DO jk = 1, jpk 
    959958         ze3t(:,:,jk) =  e3t(:,:,jk,Kmm) 
     
    10111010      CALL iom_rstput( 0, 0, inum, 'sometauy', vtau              )    ! j-wind stress 
    10121011      IF(  .NOT.ln_linssh  ) THEN 
    1013 !!st patch 
    10141012         CALL iom_rstput( 0, 0, inum, 'vovvldep', zgdept        )    !  T-cell depth  
    10151013         CALL iom_rstput( 0, 0, inum, 'vovvle3t', ze3t          )    !  T-cell thickness   
  • NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/OCE/DOM/domain.F90

    r12731 r12732  
    3838   USE domvvl         ! variable volume 
    3939#else 
    40    USE domqe          ! variable volume 
     40   USE domqco          ! variable volume 
    4141#endif 
    4242   USE c1d            ! 1D configuration 
     
    149149      CALL dom_msk( ik_top, ik_bot )    ! Masks 
    150150      ! 
    151 !!st      ht_0(:,:) = 0._wp  ! Reference ocean thickness 
     151      ht_0(:,:) = 0._wp  ! Reference ocean thickness 
    152152      hu_0(:,:) = 0._wp 
    153153      hv_0(:,:) = 0._wp 
     
    169169      !           !==  initialisation of time varying coordinate  ==!   Quasi-Euerian coordinate case 
    170170      ! 
    171       IF( .NOT.l_offline )   CALL dom_qe_init( Kbb, Kmm, Kaa ) 
     171      IF( .NOT.l_offline )   CALL dom_qco_init( Kbb, Kmm, Kaa ) 
    172172      ! 
    173173      IF( ln_linssh )        CALL ctl_stop('STOP','domain: key_qco and ln_linssh = T are incompatible') 
  • NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/OCE/DOM/domqco.F90

    r12731 r12732  
    1 MODULE domqe 
     1MODULE domqco 
    22   !!====================================================================== 
    3    !!                       ***  MODULE domqe   *** 
     3   !!                       ***  MODULE domqco   *** 
    44   !! Ocean : 
    55   !!====================================================================== 
     
    1414   !!---------------------------------------------------------------------- 
    1515   !!   dom_qe_init   : define initial vertical scale factors, depths and column thickness 
    16    !!   dom_qe_sf_nxt : Compute next vertical scale factors 
    17    !!   dom_qe_sf_update: Swap vertical scale factors and update the vertical grid 
    18    !!   dom_qe_interpol : Interpolate vertical scale factors from one grid point to another 
    1916   !!   dom_qe_r3c    : Compute ssh/h_0 ratioat t-, u-, v-, and optionally f-points 
    2017   !!       qe_rst_read : read/write restart file 
     
    4037   PRIVATE 
    4138 
    42    PUBLIC  dom_qe_init       ! called by domain.F90 
    43    PUBLIC  dom_qe_zgr        ! called by isfcpl.F90 
    44 !!st   PUBLIC  dom_qe_sf_nxt     ! called by steplf.F90 
    45 !!st   PUBLIC  dom_qe_sf_update  ! called by steplf.F90 
    46 !!st   PUBLIC  dom_h_nxt         ! called by steplf.F90 
    47 !!st   PUBLIC  dom_h_update      ! called by steplf.F90 
    48    PUBLIC  dom_qe_r3c        ! called by steplf.F90 
     39   PUBLIC  dom_qco_init       ! called by domain.F90 
     40   PUBLIC  dom_qco_zgr        ! called by isfcpl.F90 
     41   PUBLIC  dom_qco_r3c        ! called by steplf.F90 
    4942 
    5043   !                                                      !!* Namelist nam_vvl 
     
    7366CONTAINS 
    7467 
    75    SUBROUTINE dom_qe_init( Kbb, Kmm, Kaa ) 
    76       !!---------------------------------------------------------------------- 
    77       !!                ***  ROUTINE dom_qe_init  *** 
    78       !! 
    79       !! ** Purpose :  Initialization of all scale factors, depths 
    80       !!               and water column heights 
     68   SUBROUTINE dom_qco_init( Kbb, Kmm, Kaa ) 
     69      !!---------------------------------------------------------------------- 
     70      !!                ***  ROUTINE dom_qco_init  *** 
     71      !! 
     72      !! ** Purpose :  Initialization of all ssh. to h._0 ratio 
    8173      !! 
    8274      !! ** Method  :  - use restart file and/or initialize 
    83       !!               - interpolate scale factors 
    84       !! 
    85       !! ** Action  : - e3t_(n/b) 
    86       !!              - Regrid: e3[u/v](:,:,:,Kmm) 
    87       !!                        e3[u/v](:,:,:,Kmm) 
    88       !!                        e3w(:,:,:,Kmm) 
    89       !!                        e3[u/v]w_b 
    90       !!                        e3[u/v]w_n 
    91       !!                        gdept(:,:,:,Kmm), gdepw(:,:,:,Kmm) and gde3w 
    92       !!              - h(t/u/v)_0 
    93       !! 
    94       !! Reference  : Leclair, M., and G. Madec, 2011, Ocean Modelling. 
     75      !!               - compute ssh. to h._0 ratio 
     76      !! 
     77      !! ** Action  : - r3(t/u/v)_b 
     78      !!              - r3(t/u/v/f)_n 
     79      !! 
    9580      !!---------------------------------------------------------------------- 
    9681      INTEGER, INTENT(in) :: Kbb, Kmm, Kaa 
    9782      ! 
    9883      IF(lwp) WRITE(numout,*) 
    99       IF(lwp) WRITE(numout,*) 'dom_qe_init : Variable volume activated' 
     84      IF(lwp) WRITE(numout,*) 'dom_qco_init : Variable volume activated' 
    10085      IF(lwp) WRITE(numout,*) '~~~~~~~~~~~~' 
    10186      ! 
    102       CALL dom_qe_ctl     ! choose vertical coordinate (z_star, z_tilde or layer) 
     87      CALL dom_qco_ctl     ! choose vertical coordinate (z_star, z_tilde or layer) 
    10388      ! 
    10489      !                    ! Read or initialize e3t_(b/n), tilde_e3t_(b/n) and hdiv_lf 
    10590      CALL qe_rst_read( nit000, Kbb, Kmm ) 
    106 !!st      e3t(:,:,jpk,Kaa) = e3t_0(:,:,jpk)  ! last level always inside the sea floor set one for all 
    107       ! 
    108       CALL dom_qe_zgr(Kbb, Kmm, Kaa) ! interpolation scale factor, depth and water column 
     91      ! 
     92      CALL dom_qco_zgr(Kbb, Kmm, Kaa) ! interpolation scale factor, depth and water column 
    10993      ! 
    11094      ! IF(lwxios) THEN   ! define variables in restart file when writing with XIOS 
     
    11397      ! ENDIF 
    11498      ! 
    115    END SUBROUTINE dom_qe_init 
    116  
    117  
    118    SUBROUTINE dom_qe_zgr(Kbb, Kmm, Kaa) 
    119       !!---------------------------------------------------------------------- 
    120       !!                ***  ROUTINE dom_qe_init  *** 
    121       !! 
    122       !! ** Purpose :  Interpolation of all scale factors, 
    123       !!               depths and water column heights 
     99   END SUBROUTINE dom_qco_init 
     100 
     101 
     102   SUBROUTINE dom_qco_zgr(Kbb, Kmm, Kaa) 
     103      !!---------------------------------------------------------------------- 
     104      !!                ***  ROUTINE dom_qco_init  *** 
     105      !! 
     106      !! ** Purpose :  Initialization of all ssh. to h._0 ratio 
    124107      !! 
    125108      !! ** Method  :  - interpolate scale factors 
    126109      !! 
    127       !! ** Action  : - e3t_(n/b) 
    128       !!              - Regrid: e3(u/v)_n 
    129       !!                        e3(u/v)_b 
    130       !!                        e3w_n 
    131       !!                        e3(u/v)w_b 
    132       !!                        e3(u/v)w_n 
    133       !!                        gdept_n, gdepw_n and gde3w_n 
    134       !!              - h(t/u/v)_0 
     110      !! ** Action  : - r3(t/u/v)_b 
     111      !!              - r3(t/u/v/f)_n 
    135112      !! 
    136113      !! Reference  : Leclair, M., and G. Madec, 2011, Ocean Modelling. 
     
    145122      !                    !== Set of all other vertical scale factors  ==!  (now and before) 
    146123      !                                ! Horizontal interpolation of e3t 
    147       CALL dom_qe_r3c( ssh(:,:,Kbb), r3t(:,:,Kbb), r3u(:,:,Kbb), r3v(:,:,Kbb) ) 
    148       CALL dom_qe_r3c( ssh(:,:,Kmm), r3t(:,:,Kmm), r3u(:,:,Kmm), r3v(:,:,Kmm), r3f(:,:) ) 
    149       ! 
    150 ! !!st 
    151 !       DO jk = 1, jpkm1                    ! Horizontal interpolation of e3t 
    152 !          e3t(:,:,jk,Kbb) = e3t_0(:,:,jk) * ( 1._wp + r3t(:,:,Kbb) * tmask(:,:,jk) )   ! Kbb time level 
    153 !          e3u(:,:,jk,Kbb) = e3u_0(:,:,jk) * ( 1._wp + r3u(:,:,Kbb) * umask(:,:,jk) ) 
    154 !          e3v(:,:,jk,Kbb) = e3v_0(:,:,jk) * ( 1._wp + r3v(:,:,Kbb) * vmask(:,:,jk) ) 
    155 !          e3t(:,:,jk,Kmm) = e3t_0(:,:,jk) * ( 1._wp + r3t(:,:,Kmm) * tmask(:,:,jk) )   ! Kmm time level 
    156 !          e3u(:,:,jk,Kmm) = e3u_0(:,:,jk) * ( 1._wp + r3u(:,:,Kmm) * umask(:,:,jk) ) 
    157 !          e3v(:,:,jk,Kmm) = e3v_0(:,:,jk) * ( 1._wp + r3v(:,:,Kmm) * vmask(:,:,jk) ) 
    158 !          e3f(:,:,jk)     = e3f_0(:,:,jk) * ( 1._wp + r3f(:,:)     * fmask(:,:,jk) ) 
    159 !       END DO 
    160 !       ! 
    161 !       DO jk = 1, jpk                      ! Vertical interpolation of e3t,u,v 
    162 !          !                                   ! The ratio does not have to be masked at w-level 
    163 !          e3w (:,:,jk,Kbb) =  e3w_0(:,:,jk) * ( 1._wp + r3t(:,:,Kbb) )   ! Kbb time level 
    164 !          e3uw(:,:,jk,Kbb) = e3uw_0(:,:,jk) * ( 1._wp + r3u(:,:,Kbb) ) 
    165 !          e3vw(:,:,jk,Kbb) = e3vw_0(:,:,jk) * ( 1._wp + r3v(:,:,Kbb) ) 
    166 !          e3w (:,:,jk,Kmm) =  e3w_0(:,:,jk) * ( 1._wp + r3t(:,:,Kmm) )   ! Kmm time level 
    167 !          e3uw(:,:,jk,Kmm) = e3uw_0(:,:,jk) * ( 1._wp + r3u(:,:,Kmm) ) 
    168 !          e3vw(:,:,jk,Kmm) = e3vw_0(:,:,jk) * ( 1._wp + r3v(:,:,Kmm) ) 
    169 !       END DO 
    170 !       ! 
    171 !       ! We need to define e3[tuv]_a for AGRIF initialisation (should not be a problem for the restartability...) 
    172 !       e3t(:,:,:,Kaa) = e3t(:,:,:,Kmm) 
    173 !       e3u(:,:,:,Kaa) = e3u(:,:,:,Kmm) 
    174 !       e3v(:,:,:,Kaa) = e3v(:,:,:,Kmm) 
    175 !!st end 
    176       ! 
    177 !!st ATTENTION CAS ISF A GERER !!!  
    178       !                    !==  depth of t and w-point  ==!   (set the isf depth as it is in the initial timestep) 
    179 !!$      IF( ln_isf ) THEN          !** IceShelF cavities 
    180 !!$      !                             ! to be created depending of the new names in isf 
    181 !!$      !                             ! it should be something like that :  (with h_isf = thickness of iceshelf) 
    182 !!$      !                             !  in fact currently, h_isf(:,:) is called : risfdep(:,:) 
    183 !!$!!gm - depth idea 0  : just realize that mask is not needed ===>>>> with ISF, rescale all grid point position below ISF : no mask ! 
    184 !!$         gdept(:,:,1,Kmm) = gdept_0(:,:,1) * ( 1._wp + r3t(:,:,Kmm) ) 
    185 !!$         gdepw(:,:,1,Kmm) = 0._wp                            ! Initialized to zero one for all 
    186 !!$         gde3w(:,:,1)     = gdept(:,:,1,Kmm) - ssh(:,:,Kmm)  ! reference to a common level z=0 for hpg 
    187 !!$         DO jk = 2, jpk 
    188 !!$            gdept(:,:,jk,Kmm) = MIN( risfdep(:,:) , gdept_0(:,:,jk) )            & 
    189 !!$                              + MAX(   0._wp    , gdept_0(:,:,jk)-risfdep(:,:) ) * ( 1._wp + r3t(:,:,Kmm) ) 
    190 !!$            gdepw(:,:,jk,Kmm) = MIN( risfdep(:,:) , gdepw_0(:,:,jk) )    & 
    191 !!$                              + MAX(   0._wp    , gdepw_0(:,:,jk)-risfdep(:,:) ) * ( 1._wp + r3t(:,:,Kmm) ) 
    192 !!$            gde3w(:,:,jk)     = gdept(:,:,jk,Kmm) - ssh(:,:,Kmm) 
    193 !!$            gdept(:,:,jk,Kbb) = MIN( risfdep(:,:) , gdept_0(:,:,jk) )            & 
    194 !!$                              + MAX(   0._wp    , gdept_0(:,:,jk)-risfdep(:,:) ) * ( 1._wp + r3t(:,:,Kbb) ) 
    195 !!$            gdepw(:,:,jk,Kbb) = MIN( risfdep(:,:) , gdepw_0(:,:,jk) )    & 
    196 !!$                              + MAX(   0._wp    , gdepw_0(:,:,jk)-risfdep(:,:) ) * ( 1._wp + r3t(:,:,Kbb) ) 
    197 !!$         END DO 
    198 !!$         ! 
    199 !!$      ELSE                       !** No cavities   (all depth rescaled, even inside topography: no mask) 
    200 !!$         ! 
    201 !!$!!gm idea 0 :   just realize that mask is not needed ===>>>> without ISF, rescale all grid point position : no mask ! 
    202 !!$         DO jk = 1, jpk 
    203 !!$            gdept(:,:,jk,Kmm) = gdept_0(:,:,jk) * ( 1._wp + r3t(:,:,Kmm) ) 
    204 !!$            gdepw(:,:,jk,Kmm) = gdepw_0(:,:,jk) * ( 1._wp + r3t(:,:,Kmm) ) 
    205 !!$            gde3w(:,:,jk)     = gdept  (:,:,jk,Kmm)       - ssh(:,:,Kmm) 
    206 !!$            gdept(:,:,jk,Kbb) = gdept_0(:,:,jk) * ( 1._wp + r3t(:,:,Kbb) ) 
    207 !!$            gdepw(:,:,jk,Kbb) = gdepw_0(:,:,jk) * ( 1._wp + r3t(:,:,Kbb) ) 
    208 !!$         END DO 
    209 !!$         ! 
    210 !!$      ENDIF 
    211       ! 
    212       !                    !==  thickness of the water column  !!   (ocean portion only) 
    213 !!st ht(:,:)     = ht_0(:,:)           + ssh(:,:,Kmm) 
    214 !!$      hu(:,:,Kbb) = hu_0(:,:) * ( 1._wp + r3u(:,:,Kbb) ) 
    215 !!$      hu(:,:,Kmm) = hu_0(:,:) * ( 1._wp + r3u(:,:,Kmm) ) 
    216 !!$      hv(:,:,Kbb) = hv_0(:,:) * ( 1._wp + r3v(:,:,Kbb) ) 
    217 !!$      hv(:,:,Kmm) = hv_0(:,:) * ( 1._wp + r3v(:,:,Kmm) ) 
    218 !!$      ! 
    219 !!$      !                    !==  inverse of water column thickness   ==!   (u- and v- points) 
    220 !!$      r1_hu(:,:,Kbb) = ssumask(:,:) / ( hu(:,:,Kbb) + 1._wp - ssumask(:,:) )    ! _i mask due to ISF 
    221 !!$      r1_hu(:,:,Kmm) = ssumask(:,:) / ( hu(:,:,Kmm) + 1._wp - ssumask(:,:) ) 
    222 !!$      r1_hv(:,:,Kbb) = ssvmask(:,:) / ( hv(:,:,Kbb) + 1._wp - ssvmask(:,:) ) 
    223 !!$      r1_hv(:,:,Kmm) = ssvmask(:,:) / ( hv(:,:,Kmm) + 1._wp - ssvmask(:,:) ) 
    224 !!st end 
    225       ! 
    226    END SUBROUTINE dom_qe_zgr 
    227  
    228 ! !!st 
    229 !    SUBROUTINE dom_qe_sf_nxt( kt, Kbb, Kmm, Kaa, kcall ) 
    230 !       !!---------------------------------------------------------------------- 
    231 !       !!                ***  ROUTINE dom_qe_sf_nxt  *** 
    232 !       !! 
    233 !       !! ** Purpose :  - compute the after scale factors used in tra_zdf, dynnxt, 
    234 !       !!                 tranxt and dynspg routines 
    235 !       !! 
    236 !       !! ** Method  :  - z_star case:  Repartition of ssh INCREMENT proportionnaly to the level thickness. 
    237 !       !! 
    238 !       !! ** Action  :  - hdiv_lf    : restoring towards full baroclinic divergence in z_tilde case 
    239 !       !!               - tilde_e3t_a: after increment of vertical scale factor 
    240 !       !!                              in z_tilde case 
    241 !       !!               - e3(t/u/v)_a 
    242 !       !! 
    243 !       !! Reference  : Leclair, M., and Madec, G. 2011, Ocean Modelling. 
    244 !       !!---------------------------------------------------------------------- 
    245 !       INTEGER, INTENT( in )           ::   kt             ! time step 
    246 !       INTEGER, INTENT( in )           ::   Kbb, Kmm, Kaa  ! time step 
    247 !       INTEGER, INTENT( in ), OPTIONAL ::   kcall          ! optional argument indicating call sequence 
    248 !       ! 
    249 !       INTEGER                ::   ji, jj, jk            ! dummy loop indices 
    250 !       INTEGER , DIMENSION(3) ::   ijk_max, ijk_min      ! temporary integers 
    251 !       REAL(wp)               ::   z2dt, z_tmin, z_tmax  ! local scalars 
    252 !       LOGICAL                ::   ll_do_bclinic         ! local logical 
    253 !       REAL(wp), DIMENSION(jpi,jpj)     ::   zht, z_scale, zwu, zwv, zhdiv 
    254 !       !!---------------------------------------------------------------------- 
    255 !       ! 
    256 !       IF( ln_linssh )   RETURN      ! No calculation in linear free surface 
    257 !       ! 
    258 !       IF( ln_timing )   CALL timing_start('dom_qe_sf_nxt') 
    259 !       ! 
    260 !       IF( kt == nit000 ) THEN 
    261 !          IF(lwp) WRITE(numout,*) 
    262 !          IF(lwp) WRITE(numout,*) 'dom_qe_sf_nxt : compute after scale factors' 
    263 !          IF(lwp) WRITE(numout,*) '~~~~~~~~~~~~~~' 
    264 !       ENDIF 
    265 ! 
    266 ! 
    267 !       ! ******************************* ! 
    268 !       ! After acale factors at t-points ! 
    269 !       ! ******************************* ! 
    270 !       !                                                ! --------------------------------------------- ! 
    271 !       !                                                ! z_star coordinate and barotropic z-tilde part ! 
    272 !       !                                                ! --------------------------------------------- ! 
    273 !       ! 
    274 !       ! 
    275 !       ! *********************************** ! 
    276 !       ! After scale factors at u- v- points ! 
    277 !       ! *********************************** ! 
    278 !       ! 
    279 !       DO jk = 1, jpkm1 
    280 !          e3t(:,:,jk,Kaa) = e3t_0(:,:,jk) * ( 1._wp + r3t(:,:,Kaa) * tmask(:,:,jk) ) 
    281 !          e3u(:,:,jk,Kaa) = e3u_0(:,:,jk) * ( 1._wp + r3u(:,:,Kaa) * umask(:,:,jk) ) 
    282 !          e3v(:,:,jk,Kaa) = e3v_0(:,:,jk) * ( 1._wp + r3v(:,:,Kaa) * vmask(:,:,jk) ) 
    283 !       END DO 
    284 !       ! 
    285 !       ! *********************************** ! 
    286 !       ! After depths at u- v points         ! 
    287 !       ! *********************************** ! 
    288 !       hu(:,:,Kaa) = hu_0(:,:) * ( 1._wp + r3u(:,:,Kaa) ) 
    289 !       hv(:,:,Kaa) = hv_0(:,:) * ( 1._wp + r3v(:,:,Kaa) ) 
    290 !       !                                        ! Inverse of the local depth 
    291 !       r1_hu(:,:,Kaa) = ssumask(:,:) / ( hu(:,:,Kaa) + 1._wp - ssumask(:,:) ) 
    292 !       r1_hv(:,:,Kaa) = ssvmask(:,:) / ( hv(:,:,Kaa) + 1._wp - ssvmask(:,:) ) 
    293 !       ! 
    294 !       IF( ln_timing )   CALL timing_stop('dom_qe_sf_nxt') 
    295 !       ! 
    296 !    END SUBROUTINE dom_qe_sf_nxt 
    297 !!st end 
    298 !!st  
    299 !!$   SUBROUTINE dom_h_nxt( kt, Kbb, Kmm, Kaa, kcall ) 
    300 !!$      !!---------------------------------------------------------------------- 
    301 !!$      !!                ***  ROUTINE dom_qe_sf_nxt  *** 
    302 !!$      !! 
    303 !!$      !! ** Purpose :  - compute the after water heigh used in tra_zdf, dynnxt, 
    304 !!$      !!                 tranxt and dynspg routines 
    305 !!$      !! 
    306 !!$      !! ** Method  :  - z_star case:  Proportionnaly to the water column thickness. 
    307 !!$      !! 
    308 !!$      !! ** Action  :  - h(u/v) update wrt ssh/h(u/v)_0 
    309 !!$      !! 
    310 !!$      !!---------------------------------------------------------------------- 
    311 !!$      INTEGER, INTENT( in )           ::   kt             ! time step 
    312 !!$      INTEGER, INTENT( in )           ::   Kbb, Kmm, Kaa  ! time step 
    313 !!$      INTEGER, INTENT( in ), OPTIONAL ::   kcall          ! optional argument indicating call sequence 
    314 !!$      ! 
    315 !!$      !!---------------------------------------------------------------------- 
    316 !!$      ! 
    317 !!$      IF( ln_linssh )   RETURN      ! No calculation in linear free surface 
    318 !!$      ! 
    319 !!$      IF( ln_timing )   CALL timing_start('dom_h_nxt') 
    320 !!$      ! 
    321 !!$      IF( kt == nit000 ) THEN 
    322 !!$         IF(lwp) WRITE(numout,*) 
    323 !!$         IF(lwp) WRITE(numout,*) 'dom_h_nxt : compute after scale factors' 
    324 !!$         IF(lwp) WRITE(numout,*) '~~~~~~~~~~~~~~' 
    325 !!$      ENDIF 
    326 !!$      ! 
    327 !!$      ! *********************************** ! 
    328 !!$      ! After depths at u- v points         ! 
    329 !!$      ! *********************************** ! 
    330 !!$      hu(:,:,Kaa) = hu_0(:,:) * ( 1._wp + r3u(:,:,Kaa) ) 
    331 !!$      hv(:,:,Kaa) = hv_0(:,:) * ( 1._wp + r3v(:,:,Kaa) ) 
    332 !!$      !                                        ! Inverse of the local depth 
    333 !!$      r1_hu(:,:,Kaa) = ssumask(:,:) / ( hu(:,:,Kaa) + 1._wp - ssumask(:,:) ) 
    334 !!$      r1_hv(:,:,Kaa) = ssvmask(:,:) / ( hv(:,:,Kaa) + 1._wp - ssvmask(:,:) ) 
    335 !!$      ! 
    336 !!$      IF( ln_timing )   CALL timing_stop('dom_h_nxt') 
    337 !!$      ! 
    338 !!$   END SUBROUTINE dom_h_nxt 
    339 !!st end 
    340 ! !!st 
    341 !    SUBROUTINE dom_qe_sf_update( kt, Kbb, Kmm, Kaa ) 
    342 !       !!---------------------------------------------------------------------- 
    343 !       !!                ***  ROUTINE dom_qe_sf_update  *** 
    344 !       !! 
    345 !       !! ** Purpose :  for z tilde case: compute time filter and swap of scale factors 
    346 !       !!               compute all depths and related variables for next time step 
    347 !       !!               write outputs and restart file 
    348 !       !! 
    349 !       !! ** Method  :  - reconstruct scale factor at other grid points (interpolate) 
    350 !       !!               - recompute depths and water height fields 
    351 !       !! 
    352 !       !! ** Action  :  - Recompute: 
    353 !       !!                    e3(u/v)_b 
    354 !       !!                    e3w(:,:,:,Kmm) 
    355 !       !!                    e3(u/v)w_b 
    356 !       !!                    e3(u/v)w_n 
    357 !       !!                    gdept(:,:,:,Kmm), gdepw(:,:,:,Kmm)  and gde3w 
    358 !       !!                    h(u/v) and h(u/v)r 
    359 !       !! 
    360 !       !! Reference  : Leclair, M., and G. Madec, 2009, Ocean Modelling. 
    361 !       !!              Leclair, M., and G. Madec, 2011, Ocean Modelling. 
    362 !       !!---------------------------------------------------------------------- 
    363 !       INTEGER, INTENT( in ) ::   kt              ! time step 
    364 !       INTEGER, INTENT( in ) ::   Kbb, Kmm, Kaa   ! time level indices 
    365 !       ! 
    366 !       INTEGER  ::   ji, jj, jk   ! dummy loop indices 
    367 !       REAL(wp) ::   zcoef        ! local scalar 
    368 !       !!---------------------------------------------------------------------- 
    369 !       ! 
    370 !       IF( ln_linssh )   RETURN      ! No calculation in linear free surface 
    371 !       ! 
    372 !       IF( ln_timing )   CALL timing_start('dom_qe_sf_update') 
    373 !       ! 
    374 !       IF( kt == nit000 )   THEN 
    375 !          IF(lwp) WRITE(numout,*) 
    376 !          IF(lwp) WRITE(numout,*) 'dom_qe_sf_update : - interpolate scale factors and compute depths for next time step' 
    377 !          IF(lwp) WRITE(numout,*) '~~~~~~~~~~~~~~~~~' 
    378 !       ENDIF 
    379 !       ! 
    380 !       ! Compute all missing vertical scale factor and depths 
    381 !       ! ==================================================== 
    382 !       ! Horizontal scale factor interpolations 
    383 !       ! -------------------------------------- 
    384 !       ! - ML - e3u(:,:,:,Kbb) and e3v(:,:,:,Kbb) are already computed in dynnxt 
    385 !       ! - JC - hu(:,:,:,Kbb), hv(:,:,:,:,Kbb), hur_b, hvr_b also 
    386 ! 
    387 ! 
    388 !       ! Scale factor computation 
    389 !       DO jk = 1, jpk             ! Horizontal interpolation 
    390 !          e3f(:,:,jk)      =  e3f_0(:,:,jk) * ( 1._wp + r3f(:,:) * fmask(:,:,jk) )   ! Kmm time level 
    391 !          !                       ! Vertical interpolation 
    392 !        !                                   ! The ratio does not have to be masked at w-level 
    393 !          e3w (:,:,jk,Kmm) =  e3w_0(:,:,jk) * ( 1._wp + r3t(:,:,Kmm) )   ! Kmm time level 
    394 !          e3uw(:,:,jk,Kmm) = e3uw_0(:,:,jk) * ( 1._wp + r3u(:,:,Kmm) ) 
    395 !          e3vw(:,:,jk,Kmm) = e3vw_0(:,:,jk) * ( 1._wp + r3v(:,:,Kmm) ) 
    396 !          e3w (:,:,jk,Kbb) =  e3w_0(:,:,jk) * ( 1._wp + r3t(:,:,Kbb) )   ! Kbb time level 
    397 !          e3uw(:,:,jk,Kbb) = e3uw_0(:,:,jk) * ( 1._wp + r3u(:,:,Kbb) ) 
    398 !          e3vw(:,:,jk,Kbb) = e3vw_0(:,:,jk) * ( 1._wp + r3v(:,:,Kbb) ) 
    399 !       END DO 
    400 ! 
    401 ! 
    402 !       IF( ln_isf ) THEN          !** IceShelF cavities 
    403 !       !                             ! to be created depending of the new names in isf 
    404 !       !                             ! it should be something like that :  (with h_isf = thickness of iceshelf) 
    405 !       !                             !  in fact currently, h_isf(:,:) is called : risfdep(:,:) 
    406 ! !!gm - depth idea 0  : just realize that mask is not needed ===>>>> with ISF, rescale all grid point position below ISF : no mask ! 
    407 !          gdept(:,:,1,Kmm) = gdept_0(:,:,1) * ( 1._wp + r3t(:,:,Kmm) ) 
    408 !          gdepw(:,:,1,Kmm) = 0._wp                            ! Initialized to zero one for all 
    409 !          gde3w(:,:,1)     = gdept(:,:,1,Kmm) - ssh(:,:,Kmm)  ! reference to a common level z=0 for hpg 
    410 !          DO jk = 2, jpk 
    411 !             gdept(:,:,jk,Kmm) = MIN( risfdep(:,:) , gdept_0(:,:,jk) )            & 
    412 !                               + MAX(   0._wp    , gdept_0(:,:,jk)-risfdep(:,:) ) * ( 1._wp + r3t(:,:,Kmm) ) 
    413 !             gdepw(:,:,jk,Kmm) = MIN( risfdep(:,:) , gdepw_0(:,:,jk) )    & 
    414 !                               + MAX(   0._wp    , gdepw_0(:,:,jk)-risfdep(:,:) ) * ( 1._wp + r3t(:,:,Kmm) ) 
    415 !             gde3w(:,:,jk)     = gdept(:,:,jk,Kmm) - ssh(:,:,Kmm) 
    416 !             gdept(:,:,jk,Kbb) = MIN( risfdep(:,:) , gdept_0(:,:,jk) )            & 
    417 !                               + MAX(   0._wp    , gdept_0(:,:,jk)-risfdep(:,:) ) * ( 1._wp + r3t(:,:,Kbb) ) 
    418 !             gdepw(:,:,jk,Kbb) = MIN( risfdep(:,:) , gdepw_0(:,:,jk) )    & 
    419 !                               + MAX(   0._wp    , gdepw_0(:,:,jk)-risfdep(:,:) ) * ( 1._wp + r3t(:,:,Kbb) ) 
    420 !          END DO 
    421 !          ! 
    422 !       ELSE                       !** No cavities   (all depth rescaled, even inside topography: no mask) 
    423 !          ! 
    424 ! !!gm idea 0 :   just realize that mask is not needed ===>>>> without ISF, rescale all grid point position : no mask ! 
    425 !          DO jk = 1, jpk 
    426 !             gdept(:,:,jk,Kmm) = gdept_0(:,:,jk) * ( 1._wp + r3t(:,:,Kmm) ) 
    427 !             gdepw(:,:,jk,Kmm) = gdepw_0(:,:,jk) * ( 1._wp + r3t(:,:,Kmm) ) 
    428 !             gde3w(:,:,jk)     = gdept  (:,:,jk,Kmm)       - ssh(:,:,Kmm) 
    429 !             gdept(:,:,jk,Kbb) = gdept_0(:,:,jk) * ( 1._wp + r3t(:,:,Kbb) ) 
    430 !             gdepw(:,:,jk,Kbb) = gdepw_0(:,:,jk) * ( 1._wp + r3t(:,:,Kbb) ) 
    431 !          END DO 
    432 !          ! 
    433 !       ENDIF 
    434 ! 
    435 !       ! Local depth and Inverse of the local depth of the water 
    436 !       ! ------------------------------------------------------- 
    437 !       ! 
    438 !       ht(:,:) = ht_0(:,:) + ssh(:,:,Kmm) 
    439 ! 
    440 !       ! write restart file 
    441 !       ! ================== 
    442 !       IF( lrst_oce  )   CALL dom_qe_rst( kt, Kbb, Kmm, 'WRITE' ) 
    443 !       ! 
    444 !       IF( ln_timing )   CALL timing_stop('dom_qe_sf_update') 
    445 !       ! 
    446 !    END SUBROUTINE dom_qe_sf_update 
    447 !!st end 
    448  
    449 !!$   SUBROUTINE dom_h_update( kt, Kbb, Kmm, Kaa ) 
    450 !!$      !!---------------------------------------------------------------------- 
    451 !!$      !!                ***  ROUTINE dom_qe_sf_update  *** 
    452 !!$      !! 
    453 !!$      !! ** Purpose :  for z tilde case: compute time filter and swap of scale factors 
    454 !!$      !!               compute all depths and related variables for next time step 
    455 !!$      !!               write outputs and restart file 
    456 !!$      !! 
    457 !!$      !! ** Method  :  - reconstruct scale factor at other grid points (interpolate) 
    458 !!$      !!               - recompute depths and water height fields 
    459 !!$      !! 
    460 !!$      !! ** Action  :  - Recompute: 
    461 !!$      !!                    gdept(:,:,:,Kmm), gdepw(:,:,:,Kmm)  and gde3w 
    462 !!$      !!                    h(u/v) and h(u/v)r 
    463 !!$      !! 
    464 !!$      !! Reference  : Leclair, M., and G. Madec, 2009, Ocean Modelling. 
    465 !!$      !!              Leclair, M., and G. Madec, 2011, Ocean Modelling. 
    466 !!$      !!---------------------------------------------------------------------- 
    467 !!$      INTEGER, INTENT( in ) ::   kt              ! time step 
    468 !!$      INTEGER, INTENT( in ) ::   Kbb, Kmm, Kaa   ! time level indices 
    469 !!$      ! 
    470 !!$      INTEGER  ::   ji, jj, jk   ! dummy loop indices 
    471 !!$      REAL(wp) ::   zcoef        ! local scalar 
    472 !!$      !!---------------------------------------------------------------------- 
    473 !!$      ! 
    474 !!$      IF( ln_linssh )   RETURN      ! No calculation in linear free surface 
    475 !!$      ! 
    476 !!$      IF( ln_timing )   CALL timing_start('dom_qe_sf_update') 
    477 !!$      ! 
    478 !!$      IF( kt == nit000 )   THEN 
    479 !!$         IF(lwp) WRITE(numout,*) 
    480 !!$         IF(lwp) WRITE(numout,*) 'dom_qe_sf_update : - interpolate scale factors and compute depths for next time step' 
    481 !!$         IF(lwp) WRITE(numout,*) '~~~~~~~~~~~~~~~~~' 
    482 !!$      ENDIF 
    483 !!$      ! 
    484 !!$      ! Compute all missing vertical scale factor and depths 
    485 !!$      ! ==================================================== 
    486 !!$      ! Horizontal scale factor interpolations 
    487 !!$      ! -------------------------------------- 
    488 !!$      ! - JC - hu(:,:,:,Kbb), hv(:,:,:,:,Kbb), hur_b, hvr_b also 
    489 !!$ 
    490 !!$      IF( ln_isf ) THEN          !** IceShelF cavities 
    491 !!$      !                             ! to be created depending of the new names in isf 
    492 !!$      !                             ! it should be something like that :  (with h_isf = thickness of iceshelf) 
    493 !!$      !                             !  in fact currently, h_isf(:,:) is called : risfdep(:,:) 
    494 !!$   !!gm - depth idea 0  : just realize that mask is not needed ===>>>> with ISF, rescale all grid point position below ISF : no mask ! 
    495 !!$         gdept(:,:,1,Kmm) = gdept_0(:,:,1) * ( 1._wp + r3t(:,:,Kmm) ) 
    496 !!$         gdepw(:,:,1,Kmm) = 0._wp                            ! Initialized to zero one for all 
    497 !!$         gde3w(:,:,1)     = gdept(:,:,1,Kmm) - ssh(:,:,Kmm)  ! reference to a common level z=0 for hpg 
    498 !!$         DO jk = 2, jpk 
    499 !!$            gdept(:,:,jk,Kmm) = MIN( risfdep(:,:) , gdept_0(:,:,jk) )            & 
    500 !!$                              + MAX(   0._wp    , gdept_0(:,:,jk)-risfdep(:,:) ) * ( 1._wp + r3t(:,:,Kmm) ) 
    501 !!$            gdepw(:,:,jk,Kmm) = MIN( risfdep(:,:) , gdepw_0(:,:,jk) )    & 
    502 !!$                              + MAX(   0._wp    , gdepw_0(:,:,jk)-risfdep(:,:) ) * ( 1._wp + r3t(:,:,Kmm) ) 
    503 !!$            gde3w(:,:,jk)     = gdept(:,:,jk,Kmm) - ssh(:,:,Kmm) 
    504 !!$            gdept(:,:,jk,Kbb) = MIN( risfdep(:,:) , gdept_0(:,:,jk) )            & 
    505 !!$                              + MAX(   0._wp    , gdept_0(:,:,jk)-risfdep(:,:) ) * ( 1._wp + r3t(:,:,Kbb) ) 
    506 !!$            gdepw(:,:,jk,Kbb) = MIN( risfdep(:,:) , gdepw_0(:,:,jk) )    & 
    507 !!$                              + MAX(   0._wp    , gdepw_0(:,:,jk)-risfdep(:,:) ) * ( 1._wp + r3t(:,:,Kbb) ) 
    508 !!$         END DO 
    509 !!$         ! 
    510 !!$      ELSE                       !** No cavities   (all depth rescaled, even inside topography: no mask) 
    511 !!$         ! 
    512 !!$   !!gm idea 0 :   just realize that mask is not needed ===>>>> without ISF, rescale all grid point position : no mask ! 
    513 !!$         DO jk = 1, jpk 
    514 !!$            gdept(:,:,jk,Kmm) = gdept_0(:,:,jk) * ( 1._wp + r3t(:,:,Kmm) ) 
    515 !!$            gdepw(:,:,jk,Kmm) = gdepw_0(:,:,jk) * ( 1._wp + r3t(:,:,Kmm) ) 
    516 !!$            gde3w(:,:,jk)     = gdept  (:,:,jk,Kmm)       - ssh(:,:,Kmm) 
    517 !!$            gdept(:,:,jk,Kbb) = gdept_0(:,:,jk) * ( 1._wp + r3t(:,:,Kbb) ) 
    518 !!$            gdepw(:,:,jk,Kbb) = gdepw_0(:,:,jk) * ( 1._wp + r3t(:,:,Kbb) ) 
    519 !!$         END DO 
    520 !!$         ! 
    521 !!$      ENDIF 
    522 !!$ 
    523 !!$      ! Local depth and Inverse of the local depth of the water 
    524 !!$      ! ------------------------------------------------------- 
    525 !!$      ! 
    526 !!$!!st      ht(:,:) = ht_0(:,:) + ssh(:,:,Kmm) 
    527 !!$ 
    528 !!$      ! write restart file 
    529 !!$      ! ================== 
    530 !!$      IF( ln_timing )   CALL timing_stop('dom_qe_sf_update') 
    531 !!$      ! 
    532 !!$   END SUBROUTINE dom_h_update 
    533 !!st end 
    534  
    535    SUBROUTINE dom_qe_r3c( pssh, pr3t, pr3u, pr3v, pr3f ) 
     124      CALL dom_qco_r3c( ssh(:,:,Kbb), r3t(:,:,Kbb), r3u(:,:,Kbb), r3v(:,:,Kbb) ) 
     125      CALL dom_qco_r3c( ssh(:,:,Kmm), r3t(:,:,Kmm), r3u(:,:,Kmm), r3v(:,:,Kmm), r3f(:,:) ) 
     126      ! 
     127   END SUBROUTINE dom_qco_zgr 
     128 
     129 
     130   SUBROUTINE dom_qco_r3c( pssh, pr3t, pr3u, pr3v, pr3f ) 
    536131      !!--------------------------------------------------------------------- 
    537132      !!                   ***  ROUTINE r3c  *** 
     
    572167      ! 
    573168      IF( .NOT.PRESENT( pr3f ) ) THEN              !- lbc on ratio at u-, v-points only 
    574          CALL lbc_lnk_multi( 'dom_qe_r3c', pr3u, 'U', 1._wp, pr3v, 'V', 1._wp ) 
     169         CALL lbc_lnk_multi( 'dom_qco_r3c', pr3u, 'U', 1._wp, pr3v, 'V', 1._wp ) 
    575170         ! 
    576171         ! 
     
    591186         ENDIF 
    592187         !                                                 ! lbc on ratio at u-,v-,f-points 
    593          CALL lbc_lnk_multi( 'dom_qe_r3c', pr3u, 'U', 1._wp, pr3v, 'V', 1._wp, pr3f, 'F', 1._wp ) 
     188         CALL lbc_lnk_multi( 'dom_qco_r3c', pr3u, 'U', 1._wp, pr3v, 'V', 1._wp, pr3f, 'F', 1._wp ) 
    594189         ! 
    595190      ENDIF 
    596191      ! 
    597    END SUBROUTINE dom_qe_r3c 
     192   END SUBROUTINE dom_qco_r3c 
    598193 
    599194 
     
    704299 
    705300 
    706    SUBROUTINE dom_qe_ctl 
     301   SUBROUTINE dom_qco_ctl 
    707302      !!--------------------------------------------------------------------- 
    708       !!                  ***  ROUTINE dom_qe_ctl  *** 
     303      !!                  ***  ROUTINE dom_qco_ctl  *** 
    709304      !! 
    710305      !! ** Purpose :   Control the consistency between namelist options 
     
    726321      IF(lwp) THEN                    ! Namelist print 
    727322         WRITE(numout,*) 
    728          WRITE(numout,*) 'dom_qe_ctl : choice/control of the variable vertical coordinate' 
     323         WRITE(numout,*) 'dom_qco_ctl : choice/control of the variable vertical coordinate' 
    729324         WRITE(numout,*) '~~~~~~~~~~~' 
    730325         WRITE(numout,*) '   Namelist nam_vvl : chose a vertical coordinate' 
     
    771366#endif 
    772367      ! 
    773    END SUBROUTINE dom_qe_ctl 
     368   END SUBROUTINE dom_qco_ctl 
    774369 
    775370   !!====================================================================== 
    776 END MODULE domqe 
     371END MODULE domqco 
  • NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/OCE/DOM/istate.F90

    r12731 r12732  
    6060      ! 
    6161      INTEGER ::   ji, jj, jk   ! dummy loop indices 
    62       REAL(wp), DIMENSION(jpi,jpj,jpk) ::   zgdept     !!st temporary modif to be able to use gdept subtitute 
     62      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   zgdept     ! 3D table  !!st patch to use gdept subtitute 
    6363!!gm see comment further down 
    6464      REAL(wp), ALLOCATABLE, DIMENSION(:,:,:,:) ::   zuvd    ! U & V data workspace 
     
    117117            ! 
    118118         ELSE                                 ! user defined initial T and S 
    119 !!st zgdept  
    120119            DO jk = 1, jpkm1 
    121120               zgdept(:,:,jk) = gdept(:,:,jk,Kbb) 
  • NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/OCE/DYN/dynatf.F90

    r12731 r12732  
    215215            zwfld(:,:) = emp_b(:,:) - emp(:,:) 
    216216            IF ( ln_rnf ) zwfld(:,:) =  zwfld(:,:) - ( rnf_b(:,:) - rnf(:,:) ) 
    217 !!st 
    218 !!$            DO jk = 1, jpkm1 
    219 !!$               ze3t_f(:,:,jk) = ze3t_f(:,:,jk) - zcoef * zwfld(:,:) * tmask(:,:,jk) & 
    220 !!$                              &                        * pe3t(:,:,jk,Kmm) / ( ht_(:,:) + 1._wp - ssmask(:,:) ) 
    221 !!$            END DO 
    222 !!st end             
    223             DO_3D_11_11( 1, jpkm1 ) 
    224                ze3t_f(ji,jj,jk) = ze3t_f(ji,jj,jk) - zcoef * zwfld(ji,jj) * tmask(ji,jj,jk) & 
    225                               &                * pe3t(ji,jj,jk,Kmm) / ( ht(ji,jj) + 1._wp - ssmask(ji,jj) ) 
    226             END_3D 
     217 
     218            DO jk = 1, jpkm1 
     219               ze3t_f(:,:,jk) = ze3t_f(:,:,jk) - zcoef * zwfld(:,:) * tmask(:,:,jk) & 
     220                              &                        * pe3t(:,:,jk,Kmm) / ( ht_(:,:) + 1._wp - ssmask(:,:) ) 
     221            END DO 
    227222            ! 
    228223            ! ice shelf melting (deal separately as it can be in depth) 
  • NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/OCE/DYN/dynatf_qco.F90

    r12731 r12732  
    147147         ELSE                             ! Variable volume ! 
    148148            !                             ! ================! 
    149             ! Time-filtered scale factor at t-points 
    150             ! ---------------------------------------------------- 
    151             ! DO jk = 1, jpk                                          ! filtered scale factor at T-points 
    152             !    pe3t(:,:,jk,Kmm) = e3t_0(:,:,jk) * ( 1._wp + r3t_f(:,:) * tmask(:,:,jk) ) 
    153             ! END DO 
    154             ! 
    155149            ! 
    156150            IF( ln_dynadv_vec ) THEN      ! Asselin filter applied on velocity 
    157151               ! Before filtered scale factor at (u/v)-points 
    158                ! DO jk = 1, jpk 
    159                !    pe3u(:,:,jk,Kmm) = e3u_0(:,:,jk) * ( 1._wp + r3u_f(:,:) * umask(:,:,jk) ) 
    160                !    pe3v(:,:,jk,Kmm) = e3v_0(:,:,jk) * ( 1._wp + r3v_f(:,:) * vmask(:,:,jk) ) 
    161                ! END DO 
    162                ! 
    163152               DO_3D_11_11( 1, jpkm1 ) 
    164153                  puu(ji,jj,jk,Kmm) = puu(ji,jj,jk,Kmm) + rn_atfp * ( puu(ji,jj,jk,Kbb) - 2._wp * puu(ji,jj,jk,Kmm) + puu(ji,jj,jk,Kaa) ) 
     
    169158               ! 
    170159               DO_3D_11_11( 1, jpkm1 ) 
    171                   ! zue3a = pe3u(ji,jj,jk,Kaa) * puu(ji,jj,jk,Kaa) 
    172                   ! zve3a = pe3v(ji,jj,jk,Kaa) * pvv(ji,jj,jk,Kaa) 
    173                   ! zue3n = pe3u(ji,jj,jk,Kmm) * puu(ji,jj,jk,Kmm) 
    174                   ! zve3n = pe3v(ji,jj,jk,Kmm) * pvv(ji,jj,jk,Kmm) 
    175                   ! zue3b = pe3u(ji,jj,jk,Kbb) * puu(ji,jj,jk,Kbb) 
    176                   ! zve3b = pe3v(ji,jj,jk,Kbb) * pvv(ji,jj,jk,Kbb) 
    177                   ! 
    178160                  zue3a = ( 1._wp + r3u(ji,jj,Kaa) * umask(ji,jj,jk) ) * puu(ji,jj,jk,Kaa) 
    179161                  zve3a = ( 1._wp + r3v(ji,jj,Kaa) * vmask(ji,jj,jk) ) * pvv(ji,jj,jk,Kaa) 
     
    183165                  zve3b = ( 1._wp + r3v(ji,jj,Kbb) * vmask(ji,jj,jk) ) * pvv(ji,jj,jk,Kbb) 
    184166                  !                                                 ! filtered scale factor at U-,V-points 
    185                   ! pe3u(ji,jj,jk,Kmm) = e3u_0(ji,jj,jk) * ( 1._wp + r3u_f(ji,jj) * umask(ji,jj,jk) ) 
    186                   ! pe3v(ji,jj,jk,Kmm) = e3v_0(ji,jj,jk) * ( 1._wp + r3v_f(ji,jj) * vmask(ji,jj,jk) ) 
    187                   ! 
    188                   puu(ji,jj,jk,Kmm) = ( zue3n + rn_atfp * ( zue3b - 2._wp * zue3n  + zue3a ) ) / ( 1._wp + r3u_f(ji,jj)*umask(ji,jj,jk) ) !!st ze3u_f(ji,jj,jk) 
    189                   pvv(ji,jj,jk,Kmm) = ( zve3n + rn_atfp * ( zve3b - 2._wp * zve3n  + zve3a ) ) / ( 1._wp + r3v_f(ji,jj)*vmask(ji,jj,jk) ) !!st ze3v_f(ji,jj,jk) 
     167                  puu(ji,jj,jk,Kmm) = ( zue3n + rn_atfp * ( zue3b - 2._wp * zue3n  + zue3a ) ) / ( 1._wp + r3u_f(ji,jj)*umask(ji,jj,jk) ) 
     168                  pvv(ji,jj,jk,Kmm) = ( zve3n + rn_atfp * ( zve3b - 2._wp * zve3n  + zve3a ) ) / ( 1._wp + r3v_f(ji,jj)*vmask(ji,jj,jk) ) 
    190169               END_3D 
    191170               ! 
     
    221200      ! integration 
    222201      ! 
    223 !!st 
    224 !!$      IF(.NOT.ln_linssh ) THEN 
    225 !!$         hu(:,:,Kmm) = e3u(:,:,1,Kmm ) * umask(:,:,1) 
    226 !!$         hv(:,:,Kmm) = e3v(:,:,1,Kmm ) * vmask(:,:,1) 
    227 !!$         DO jk = 2, jpkm1 
    228 !!$            hu(:,:,Kmm) = hu(:,:,Kmm) + e3u(:,:,jk,Kmm ) * umask(:,:,jk) 
    229 !!$            hv(:,:,Kmm) = hv(:,:,Kmm) + e3v(:,:,jk,Kmm ) * vmask(:,:,jk) 
    230 !!$         END DO 
    231 !!$         r1_hu(:,:,Kmm) = ssumask(:,:) / ( hu(:,:,Kmm) + 1._wp - ssumask(:,:) ) 
    232 !!$         r1_hv(:,:,Kmm) = ssvmask(:,:) / ( hv(:,:,Kmm) + 1._wp - ssvmask(:,:) ) 
    233 !!$      ENDIF 
    234       ! 
    235202      uu_b(:,:,Kaa) = e3u(:,:,1,Kaa) * puu(:,:,1,Kaa) * umask(:,:,1) 
    236203      uu_b(:,:,Kmm) = e3u(:,:,1,Kmm) * puu(:,:,1,Kmm) * umask(:,:,1) 
  • NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/OCE/DYN/dynspg_ts.F90

    r12731 r12732  
    388388         zhup2_e(:,:) = hu(:,:,Kmm) 
    389389         zhvp2_e(:,:) = hv(:,:,Kmm) 
    390 !!st not used ?         zhtp2_e(:,:) = ht_(:,:) 
     390         zhtp2_e(:,:) = ht(:,:) 
    391391      ENDIF 
    392392      ! 
  • NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/OCE/ISF/isfcpl.F90

    r12731 r12732  
    1818   USE domvvl  , ONLY: dom_vvl_zgr      ! vertical scale factor interpolation 
    1919#else 
    20    USE domqe   , ONLY: dom_qe_zgr      ! vertical scale factor interpolation 
     20   USE domqco   , ONLY: dom_qco_zgr      ! vertical scale factor interpolation 
    2121#endif 
    2222   USE domngb  , ONLY: dom_ngb          ! find the closest grid point from a given lon/lat position 
     
    142142      !!---------------------------------------------------------------------- 
    143143      INTEGER :: jk                               ! loop index 
    144       REAL(wp), DIMENSION(jpi,jpj,jpk) :: ze3t, ze3u, ze3v, zgdepw  ! e3t , e3u, e3v 
    145       !!---------------------------------------------------------------------- 
    146       ! 
    147 !!st patch to be able to use substitution 
     144      REAL(wp), DIMENSION(jpi,jpj,jpk) :: ze3t, ze3u, ze3v, zgdepw  ! e3t , e3u, e3v !!st patch to use substitution 
     145      !!---------------------------------------------------------------------- 
     146      ! 
    148147      DO jk = 1, jpk 
    149148         ze3t(:,:,jk) = e3t(:,:,jk,Kmm) 
    150149         ze3u(:,:,jk) = e3u(:,:,jk,Kmm) 
    151150         ze3v(:,:,jk) = e3v(:,:,jk,Kmm) 
     151         ! 
    152152         zgdepw(:,:,jk) = gdepw(:,:,jk,Kmm) 
    153153      END DO  
     
    233233      CALL dom_vvl_zgr(Kbb, Kmm, Kaa) 
    234234#else 
    235       CALL dom_qe_zgr(Kbb, Kmm, Kaa) 
     235      CALL dom_qco_zgr(Kbb, Kmm, Kaa) 
    236236#endif 
    237237      ! 
  • NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/OCE/ISF/isfdynatf.F90

    r12731 r12732  
    1515   USE phycst , ONLY: r1_rho0         ! physical constant 
    1616   USE dom_oce                        ! time and space domain 
    17    USE oce, ONLY : ssh                ! sea-surface height 
    18 !!st 
     17   USE oce, ONLY : ssh                ! sea-surface height !!st needed for substitution 
     18 
    1919   USE in_out_manager 
    2020 
  • NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/OCE/SBC/sbcice_cice.F90

    r12724 r12732  
    1212   USE oce             ! ocean dynamics and tracers 
    1313   USE dom_oce         ! ocean space and time domain 
     14# if ! defined key_qco 
    1415   USE domvvl 
     16# else 
     17   USE domqco 
     18# endif 
    1519   USE phycst, only : rcp, rho0, r1_rho0, rhos, rhoi 
    1620   USE in_out_manager  ! I/O manager 
     
    234238!!gm especially here it is assumed zstar coordinate, but it can be ztilde.... 
    235239#if defined key_qco 
    236             IF( .NOT.ln_linssh )   CALL dom_qe_zgr( Kbb, Kmm, Kaa )   ! interpolation scale factor, depth and water column 
     240            IF( .NOT.ln_linssh )   CALL dom_qco_zgr( Kbb, Kmm, Kaa )   ! interpolation scale factor, depth and water column 
    237241#else 
    238242            IF( .NOT.ln_linssh ) THEN 
  • NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/OCE/TRA/traatf_qco.F90

    r12731 r12732  
    5353 
    5454   PUBLIC   tra_atf_qco       ! routine called by step.F90 
    55    PUBLIC   tra_atf_fix_lf   ! to be used in trcnxt !!st WARNING discrepancy here interpol is used 
    56    PUBLIC   tra_atf_qco_lf    ! to be used in trcnxt !!st WARNING discrepancy here interpol is used 
     55   PUBLIC   tra_atf_fix_lf    ! to be used in trcnxt !!st WARNING discrepancy here interpol is used by PISCES 
     56   PUBLIC   tra_atf_qco_lf    ! to be used in trcnxt !!st WARNING discrepancy here interpol is used by PISCES 
    5757 
    5858   !! * Substitutions 
     
    103103         IF(lwp) WRITE(numout,*) '~~~~~~~' 
    104104      ENDIF 
    105  
    106 !       ! Update after tracer on domain lateral boundaries 
    107 !       ! 
    108 ! #if defined key_agrif 
    109 !       CALL Agrif_tra                     ! AGRIF zoom boundaries 
    110 ! #endif 
    111 !       !                                              ! local domain boundaries  (T-point, unchanged sign) 
    112 !       CALL lbc_lnk_multi( 'traatfLF', pts(:,:,:,jp_tem,Kaa), 'T', 1., pts(:,:,:,jp_sal,Kaa), 'T', 1. ) 
    113 !       ! 
    114 !       IF( ln_bdy )   CALL bdy_tra( kt, Kbb, pts, Kaa )  ! BDY open boundaries 
     105!!st  Update after tracer on domain lateral boundaries as been removed outside  
    115106 
    116107      ! trends computation initialisation 
     
    127118         ! G Nurser 23 Mar 2017. Recalculate trend as Delta(e3t*T)/e3tn; e3tn cancel from pts(Kmm) terms 
    128119         DO jk = 1, jpkm1 
    129             ! ztrdt(:,:,jk) = ( pts(:,:,jk,jp_tem,Kaa)*e3t(:,:,jk,Kaa) / e3t(:,:,jk,Kmm) - pts(:,:,jk,jp_tem,Kmm)) * zfact 
    130             ! ztrds(:,:,jk) = ( pts(:,:,jk,jp_sal,Kaa)*e3t(:,:,jk,Kaa) / e3t(:,:,jk,Kmm) - pts(:,:,jk,jp_sal,Kmm)) * zfact 
    131120            ztrdt(:,:,jk) = ( pts(:,:,jk,jp_tem,Kaa) * (1._wp + r3t(:,:,Kaa) * tmask(:,:,jk))/(1._wp + r3t(:,:,Kmm) * tmask(:,:,jk))  & 
    132121               &            - pts(:,:,jk,jp_tem,Kmm) ) * zfact 
     
    251240      INTEGER  ::   ji, jj, jk, jn              ! dummy loop indices 
    252241      REAL(wp) ::   zfact, zfact1, ztc_a , ztc_n , ztc_b , ztc_f , ztc_d    ! local scalar 
    253       REAL(wp) ::   zfact2, ze3t_b, ze3t_n, ze3t_a, ze3t_f, ze3t_d  !   -      - 
     242      REAL(wp) ::   zfact2, ze3t_b, ze3t_n, ze3t_a, ze3t_f                  !   -      - 
    254243      REAL(wp), ALLOCATABLE, DIMENSION(:,:,:,:) ::   ztrd_atf 
    255244      !!---------------------------------------------------------------------- 
     
    288277            ztc_a  = pt(ji,jj,jk,jn,Kaa) * ze3t_a 
    289278            ! 
    290             ze3t_d = ze3t_a - 2. * ze3t_n + ze3t_b 
    291279            ztc_d  = ztc_a  - 2. * ztc_n  + ztc_b 
    292280            ! 
  • NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/OCE/ZDF/zdfosm.F90

    r12731 r12732  
    475475 
    476476      zhbl_t(:,:) = hbl(:,:) + (zdhdt(:,:) - ww(ji,jj,ibld(ji,jj)))* rn_Dt ! certainly need wb here, so subtract it 
    477 !!st      zhbl_t(:,:) = MIN(zhbl_t(:,:), ht_(:,:)) 
    478       DO_2D_11_11 
    479          zhbl_t(ji,jj) = MIN(zhbl_t(ji,jj), ht(ji,jj)) 
    480       END_2D 
     477      zhbl_t(:,:) = MIN(zhbl_t(:,:), ht(:,:)) 
    481478      zdhdt(:,:) = MIN(zdhdt(:,:), (zhbl_t(:,:) - hbl(:,:))/rn_Dt + ww(ji,jj,ibld(ji,jj))) ! adjustment to represent limiting by ocean bottom 
    482479 
  • NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/OCE/nemogcm.F90

    r12724 r12732  
    6161   USE diamlr         ! IOM context management for multiple-linear-regression analysis 
    6262#if defined key_qco 
    63    USE steplf         ! NEMO time-stepping               (stplf     routine) 
     63   USE stepMLF        ! NEMO time-stepping               (stp_MLF   routine) 
    6464#else 
    6565   USE step           ! NEMO time-stepping               (stp       routine) 
     
    129129      !! 
    130130      !! ** Method  : - model general initialization 
    131       !!              - launch the time-stepping (stplf routine) 
     131      !!              - launch the time-stepping (stp routine) 
    132132      !!              - finalize the run by closing files and communications 
    133133      !! 
     
    187187      DO WHILE( istp <= nitend .AND. nstop == 0 ) 
    188188#if defined key_qco 
    189          CALL stplf 
     189         CALL stp_MLF 
    190190#else 
    191191         CALL stp 
     
    215215 
    216216#if defined key_qco 
    217             CALL stplf        ( istp ) 
     217            CALL stp_MLF      ( istp ) 
    218218#else 
    219219            CALL stp          ( istp ) 
  • NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/OCE/stpMLF.F90

    r12731 r12732  
    1 MODULE steplf 
     1MODULE stepMLF 
    22   !!====================================================================== 
    33   !!                       ***  MODULE step  *** 
     
    3535 
    3636   !!---------------------------------------------------------------------- 
    37    !!   stplf             : OPA system time-stepping 
    38    !!---------------------------------------------------------------------- 
    39    USE step_oce         ! time stepping definition modules 
     37   !!   stp_MLF       : OPA system time-stepping 
     38   !!---------------------------------------------------------------------- 
     39   USE step_oce       ! time stepping definition modules 
    4040   ! 
    41    USE iom              ! xIOs server 
    42    USE domqe 
    43    USE traatfqco         ! time filtering                   (tra_atf_qco routine) 
    44    USE dynatfqco         ! time filtering                   (dyn_atf_qco routine) 
    45    USE dynspg_ts         ! surface pressure gradient: split-explicit scheme (define un_adv) 
    46    USE bdydyn            ! ocean open boundary conditions (define bdy_dyn) 
     41   USE iom            ! xIOs server 
     42   USE domqco 
     43   USE traatfqco      ! time filtering                   (tra_atf_qco routine) 
     44   USE dynatfqco      ! time filtering                   (dyn_atf_qco routine) 
     45   USE dynspg_ts      ! surface pressure gradient: split-explicit scheme (define un_adv) 
     46   USE bdydyn         ! ocean open boundary conditions (define bdy_dyn) 
    4747 
    4848   IMPLICIT NONE 
    4949   PRIVATE 
    5050 
    51    PUBLIC   stplf   ! called by nemogcm.F90 
     51   PUBLIC   stp_MLF   ! called by nemogcm.F90 
    5252 
    5353   !!---------------------------------------------------------------------- 
     
    6464 
    6565#if defined key_agrif 
    66    RECURSIVE SUBROUTINE stplf( ) 
     66   RECURSIVE SUBROUTINE stp_MLF( ) 
    6767      INTEGER             ::   kstp   ! ocean time-step index 
    6868#else 
    69    SUBROUTINE stplf( kstp ) 
     69   SUBROUTINE stp_MLF( kstp ) 
    7070      INTEGER, INTENT(in) ::   kstp   ! ocean time-step index 
    7171#endif 
    7272      !!---------------------------------------------------------------------- 
    73       !!                     ***  ROUTINE stplf  *** 
     73      !!                     ***  ROUTINE stp_MLF  *** 
    7474      !! 
    7575      !! ** Purpose : - Time stepping of OPA  (momentum and active tracer eqs.) 
     
    9191      INTEGER ::   kcall        ! optional integer argument (dom_vvl_sf_nxt) 
    9292!!st patch 
    93       REAL(wp), DIMENSION(jpi,jpj,jpk) :: zgdept  ! st patch 
     93      REAL(wp), DIMENSION(jpi,jpj,jpk) :: zgdept  
    9494      !! --------------------------------------------------------------------- 
    9595#if defined key_agrif 
     
    106106#endif 
    107107      ! 
    108       IF( ln_timing )   CALL timing_start('stplf') 
     108      IF( ln_timing )   CALL timing_start('stp_MLF') 
    109109      ! 
    110110      !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
     
    142142      IF( ln_isf     )   CALL isf_stp ( kstp, Nnn ) 
    143143                         CALL sbc     ( kstp, Nbb, Nnn )              ! Sea Boundary Condition (including sea-ice) 
    144  
    145       !             !!st      !!!!!!!!!!!!!!!!!!!!!!! 
    146       ! 
    147       ! emp = 0._wp 
    148       ! emp_b = 0._wp 
    149       ! qns = 0._wp 
    150       ! qsr = 0._wp 
    151       ! qns_b = 0._wp 
    152       ! 
    153       !             !!st 
    154144 
    155145      !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
     
    196186      !  Ocean dynamics : hdiv, ssh, e3, u, v, w 
    197187      !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
    198 !!st patch 
    199 !!st patch to be able to use substitution 
    200188      DO jk = 1, jpk 
    201189         zgdept(:,:,jk) = gdept(:,:,jk,Nnn) 
    202190      END DO 
    203 !!st end 
    204                             CALL ssh_nxt       ( kstp, Nbb, Nnn, ssh,  Naa )    ! after ssh (includes call to div_hor) 
    205       IF( .NOT.ln_linssh )  CALL dom_qe_r3c    ( ssh(:,:,Naa), r3t(:,:,Naa), r3u(:,:,Naa), r3v(:,:,Naa) ) 
    206 !!st      IF( .NOT.ln_linssh )  CALL dom_h_nxt     ( kstp, Nbb, Nnn,       Naa )    ! after vertical scale factors 
    207       !IF( .NOT.ln_linssh )  CALL dom_qe_sf_nxt ( kstp, Nbb, Nnn,      Naa )    ! after vertical scale factors 
     191                            CALL ssh_nxt       ( kstp, Nbb, Nnn, ssh,  Naa )   ! after ssh (includes call to div_hor) 
     192      IF( .NOT.ln_linssh )  CALL dom_qco_r3c    ( ssh(:,:,Naa), r3t(:,:,Naa), r3u(:,:,Naa), r3v(:,:,Naa) )   ! "after" ssh./h._0 ratio 
    208193                            CALL wzv           ( kstp, Nbb, Nnn, Naa, ww  )    ! Nnn cross-level velocity 
    209       IF( ln_zad_Aimp )     CALL wAimp         ( kstp,      Nnn           )  ! Adaptive-implicit vertical advection partitioning 
    210                             CALL eos    ( ts(:,:,:,:,Nnn), rhd, rhop, zgdept )  ! now in situ density for hpg computation 
     194      IF( ln_zad_Aimp )     CALL wAimp         ( kstp,      Nnn           )    ! Adaptive-implicit vertical advection partitioning 
     195                            CALL eos    ( ts(:,:,:,:,Nnn), rhd, rhop, zgdept ) ! now in situ density for hpg computation 
    211196 
    212197 
     
    231216      IF( ln_dynspg_ts ) THEN                         ! vertical scale factors and vertical velocity need to be updated 
    232217                            CALL div_hor    ( kstp, Nbb, Nnn )                ! Horizontal divergence  (2nd call in time-split case) 
    233          IF(.NOT.ln_linssh) CALL dom_qe_r3c ( ssh(:,:,Naa), r3t(:,:,Naa), r3u(:,:,Naa), r3v(:,:,Naa), r3f(:,:) ) 
    234          !IF(.NOT.ln_linssh) CALL dom_qe_sf_nxt ( kstp, Nbb, Nnn, Naa, kcall=2 )  ! after vertical scale factors (update depth average component) 
    235 !!st         IF(.NOT.ln_linssh) CALL dom_h_nxt  ( kstp, Nbb, Nnn, Naa, kcall=2 )  ! after vertical scale factors (update depth average component) 
     218         IF(.NOT.ln_linssh) CALL dom_qco_r3c ( ssh(:,:,Naa), r3t(:,:,Naa), r3u(:,:,Naa), r3v(:,:,Naa), r3f(:,:) )   ! "after" ssh./h._0 ratio 
    236219      ENDIF 
    237220                            CALL dyn_zdf    ( kstp, Nbb, Nnn, Nrhs, uu, vv, Naa  )  ! vertical diffusion 
     
    311294!!    place. 
    312295!! 
    313                          CALL zdyn_ts       ( Nnn, Naa, uu, vv )                   ! barotrope ajustment 
    314                          CALL finalize_sbc  ( kstp, Nbb, Naa, uu, vv, ts )                   ! boundary condifions 
    315                          CALL ssh_atf       ( kstp, Nbb, Nnn, Naa, ssh )                     ! time filtering of "now" sea surface height 
    316                          CALL dom_qe_r3c    ( ssh(:,:,Nnn), r3t_f, r3u_f, r3v_f )            ! "now" ssh/h_0 ratio from filtrered ssh 
    317                          CALL tra_atf_qco   ( kstp, Nbb, Nnn, Naa, ts )                      ! time filtering of "now" tracer arrays 
    318                          CALL dyn_atf_qco   ( kstp, Nbb, Nnn, Naa, uu, vv  )  ! time filtering of "now" velocities and scale factors 
     296                         CALL zdyn_ts       ( Nnn, Naa, uu, vv )                    ! barotrope ajustment 
     297                         CALL finalize_sbc  ( kstp, Nbb, Naa, uu, vv, ts )          ! boundary condifions 
     298                         CALL ssh_atf       ( kstp, Nbb, Nnn, Naa, ssh )            ! time filtering of "now" sea surface height 
     299                         CALL dom_qco_r3c    ( ssh(:,:,Nnn), r3t_f, r3u_f, r3v_f )   ! "now" ssh/h_0 ratio from filtrered ssh 
     300                         CALL tra_atf_qco   ( kstp, Nbb, Nnn, Naa, ts )             ! time filtering of "now" tracer arrays 
     301                         CALL dyn_atf_qco   ( kstp, Nbb, Nnn, Naa, uu, vv  )        ! time filtering of "now" velocities and scale factors 
    319302                         r3t(:,:,Nnn) = r3t_f(:,:) 
    320303                         r3u(:,:,Nnn) = r3u_f(:,:) 
     
    328311      Naa = Nrhs 
    329312      ! 
    330       !IF(.NOT.ln_linssh) CALL dom_qe_sf_update( kstp, Nbb, Nnn, Naa )  ! recompute vertical scale factors 
    331 !!st      IF(.NOT.ln_linssh) CALL dom_h_update  ( kstp, Nbb, Nnn, Naa )  ! recompute vertical scale factors 
    332313      ! 
    333314      IF( ln_diahsb  )   CALL dia_hsb       ( kstp, Nbb, Nnn )  ! - ML - global conservation diagnostics 
     
    346327      !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
    347328                         Kbb_a = Nbb; Kmm_a = Nnn; Krhs_a = Nrhs      ! agrif_oce module copies of time level indices 
    348                          CALL Agrif_Integrate_ChildGrids( stplf )       ! allows to finish all the Child Grids before updating 
     329                         CALL Agrif_Integrate_ChildGrids( stp_MLF )       ! allows to finish all the Child Grids before updating 
    349330 
    350331                         IF( Agrif_NbStepint() == 0 ) THEN 
     
    385366      ENDIF 
    386367      ! 
    387       IF( ln_timing )   CALL timing_stop('stplf') 
    388       ! 
    389    END SUBROUTINE stplf 
     368      IF( ln_timing )   CALL timing_stop('stp_MLF') 
     369      ! 
     370   END SUBROUTINE stp_MLF 
    390371 
    391372 
     
    481462   ! 
    482463   !!====================================================================== 
    483 END MODULE steplf 
     464END MODULE stepMLF 
Note: See TracChangeset for help on using the changeset viewer.