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

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
Changeset 5989 for branches/2014/dev_r4650_UKMO10_Tidally_Meaned_Diagnostics/NEMOGCM/NEMO/OPA_SRC/DYN/dynldf_iso.F90 – NEMO

Ignore:
Timestamp:
2015-12-03T09:10:32+01:00 (8 years ago)
Author:
deazer
Message:

Merging TMB and 25h diagnostics to head of trunk
added brief documentation

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2014/dev_r4650_UKMO10_Tidally_Meaned_Diagnostics/NEMOGCM/NEMO/OPA_SRC/DYN/dynldf_iso.F90

    r5260 r5989  
    22   !!====================================================================== 
    33   !!                     ***  MODULE  dynldf_iso  *** 
    4    !! Ocean dynamics:  lateral viscosity trend 
     4   !! Ocean dynamics:   lateral viscosity trend (rotated laplacian operator) 
    55   !!====================================================================== 
    66   !! History :  OPA  !  97-07  (G. Madec)  Original code 
     
    88   !!             -   !  2004-08  (C. Talandier) New trends organization 
    99   !!            2.0  !  2005-11  (G. Madec)  s-coordinate: horizontal diffusion 
     10   !!            3.7  !  2014-01  (F. Lemarie, G. Madec)  restructuration/simplification of ahm specification, 
     11   !!                 !                                   add velocity dependent coefficient and optional read in file 
    1012   !!---------------------------------------------------------------------- 
    11 #if defined key_ldfslp   ||   defined key_esopa 
    12    !!---------------------------------------------------------------------- 
    13    !!   'key_ldfslp'                      slopes of the direction of mixing 
     13 
    1414   !!---------------------------------------------------------------------- 
    1515   !!   dyn_ldf_iso  : update the momentum trend with the horizontal part 
     
    1919   USE oce             ! ocean dynamics and tracers 
    2020   USE dom_oce         ! ocean space and time domain 
    21    USE ldfdyn_oce      ! ocean dynamics lateral physics 
    22    USE ldftra_oce      ! ocean tracer   lateral physics 
     21   USE ldfdyn          ! lateral diffusion: eddy viscosity coef. 
     22   USE ldftra          ! lateral physics: eddy diffusivity 
    2323   USE zdf_oce         ! ocean vertical physics 
    2424   USE ldfslp          ! iso-neutral slopes  
    2525   ! 
    26    USE lbclnk          ! ocean lateral boundary conditions (or mpp link) 
    2726   USE in_out_manager  ! I/O manager 
    2827   USE lib_mpp         ! MPP library 
     28   USE lbclnk          ! ocean lateral boundary conditions (or mpp link) 
    2929   USE prtctl          ! Print control 
    3030   USE wrk_nemo        ! Memory Allocation 
     
    4242   !! * Substitutions 
    4343#  include "domzgr_substitute.h90" 
    44 #  include "ldfdyn_substitute.h90" 
    4544#  include "vectopt_loop_substitute.h90" 
    4645   !!---------------------------------------------------------------------- 
     
    8382      !!      horizontal fluxes associated with the rotated lateral mixing: 
    8483      !!      u-component: 
    85       !!         ziut = ( ahmt + ahmb0 ) e2t * e3t / e1t  di[ ub ] 
    86       !!               -      ahmt       e2t * mi-1(uslp) dk[ mi(mk(ub)) ] 
    87       !!         zjuf = ( ahmf + ahmb0 ) e1f * e3f / e2f  dj[ ub ] 
    88       !!               -      ahmf       e1f * mi(vslp)   dk[ mj(mk(ub)) ] 
     84      !!         ziut = ( ahmt + rn_ahm_b ) e2t * e3t / e1t  di[ ub ] 
     85      !!               -  ahmt              e2t * mi-1(uslp) dk[ mi(mk(ub)) ] 
     86      !!         zjuf = ( ahmf + rn_ahm_b ) e1f * e3f / e2f  dj[ ub ] 
     87      !!               -  ahmf              e1f * mi(vslp)   dk[ mj(mk(ub)) ] 
    8988      !!      v-component: 
    90       !!         zivf = ( ahmf + ahmb0 ) e2t * e3t / e1t  di[ vb ] 
    91       !!               -      ahmf       e2t * mj(uslp)   dk[ mi(mk(vb)) ] 
    92       !!         zjvt = ( ahmt + ahmb0 ) e1f * e3f / e2f  dj[ ub ] 
    93       !!               -      ahmt       e1f * mj-1(vslp) dk[ mj(mk(vb)) ] 
     89      !!         zivf = ( ahmf + rn_ahm_b ) e2t * e3t / e1t  di[ vb ] 
     90      !!               -  ahmf              e2t * mj(uslp)   dk[ mi(mk(vb)) ] 
     91      !!         zjvt = ( ahmt + rn_ahm_b ) e1f * e3f / e2f  dj[ ub ] 
     92      !!               -  ahmt              e1f * mj-1(vslp) dk[ mj(mk(vb)) ] 
    9493      !!      take the horizontal divergence of the fluxes: 
    9594      !!         diffu = 1/(e1u*e2u*e3u) {  di  [ ziut ] + dj-1[ zjuf ]  } 
     
    106105      !!      of the rotated operator in dynzdf module 
    107106      !!---------------------------------------------------------------------- 
    108       ! 
    109107      INTEGER, INTENT( in ) ::   kt   ! ocean time-step index 
    110108      ! 
    111109      INTEGER  ::   ji, jj, jk   ! dummy loop indices 
    112110      REAL(wp) ::   zabe1, zabe2, zcof1, zcof2                       ! local scalars 
    113       REAL(wp) ::   zmskt, zmskf, zbu, zbv, zuah, zvah               !   -      - 
     111      REAL(wp) ::   zmskt, zmskf                                     !   -      - 
    114112      REAL(wp) ::   zcoef0, zcoef3, zcoef4, zmkt, zmkf               !   -      - 
    115113      REAL(wp) ::   zuav, zvav, zuwslpi, zuwslpj, zvwslpi, zvwslpj   !   -      - 
     
    130128      ENDIF 
    131129 
    132       ! s-coordinate: Iso-level diffusion on tracer, but geopotential level diffusion on momentum 
     130!!gm bug is dyn_ldf_iso called before tra_ldf_iso ....   <<<<<===== TO BE CHECKED 
     131      ! s-coordinate: Iso-level diffusion on momentum but not on tracer 
    133132      IF( ln_dynldf_hor .AND. ln_traldf_iso ) THEN 
    134133         ! 
     
    136135            DO jj = 2, jpjm1 
    137136               DO ji = 2, jpim1 
    138                   uslp (ji,jj,jk) = -1./e1u(ji,jj) * ( fsdept_b(ji+1,jj,jk) - fsdept_b(ji ,jj ,jk) ) * umask(ji,jj,jk) 
    139                   vslp (ji,jj,jk) = -1./e2v(ji,jj) * ( fsdept_b(ji,jj+1,jk) - fsdept_b(ji ,jj ,jk) ) * vmask(ji,jj,jk) 
    140                   wslpi(ji,jj,jk) = -1./e1t(ji,jj) * ( fsdepw_b(ji+1,jj,jk) - fsdepw_b(ji-1,jj,jk) ) * tmask(ji,jj,jk) * 0.5 
    141                   wslpj(ji,jj,jk) = -1./e2t(ji,jj) * ( fsdepw_b(ji,jj+1,jk) - fsdepw_b(ji,jj-1,jk) ) * tmask(ji,jj,jk) * 0.5 
     137                  uslp (ji,jj,jk) = - ( fsdept_b(ji+1,jj,jk) - fsdept_b(ji ,jj ,jk) ) * r1_e1u(ji,jj) * umask(ji,jj,jk) 
     138                  vslp (ji,jj,jk) = - ( fsdept_b(ji,jj+1,jk) - fsdept_b(ji ,jj ,jk) ) * r1_e2v(ji,jj) * vmask(ji,jj,jk) 
     139                  wslpi(ji,jj,jk) = - ( fsdepw_b(ji+1,jj,jk) - fsdepw_b(ji-1,jj,jk) ) * r1_e1t(ji,jj) * tmask(ji,jj,jk) * 0.5 
     140                  wslpj(ji,jj,jk) = - ( fsdepw_b(ji,jj+1,jk) - fsdepw_b(ji,jj-1,jk) ) * r1_e2t(ji,jj) * tmask(ji,jj,jk) * 0.5 
    142141               END DO 
    143142            END DO 
     
    184183            DO jj = 2, jpjm1 
    185184               DO ji = fs_2, jpi   ! vector opt. 
    186                   zabe1 = (fsahmt(ji,jj,jk)+ahmb0) * e2t(ji,jj) * MIN( fse3u(ji,jj,jk), fse3u(ji-1,jj,jk) ) / e1t(ji,jj) 
    187  
    188                   zmskt = 1./MAX(  umask(ji-1,jj,jk  )+umask(ji,jj,jk+1)   & 
    189                      &           + umask(ji-1,jj,jk+1)+umask(ji,jj,jk  ), 1. ) 
    190  
    191                   zcof1 = - aht0 * e2t(ji,jj) * zmskt * 0.5  * ( uslp(ji-1,jj,jk) + uslp(ji,jj,jk) ) 
     185                  zabe1 = ( ahmt(ji,jj,jk)+rn_ahm_b ) * e2t(ji,jj) * MIN( fse3u(ji,jj,jk), fse3u(ji-1,jj,jk) ) * r1_e1t(ji,jj) 
     186 
     187                  zmskt = 1._wp / MAX(   umask(ji-1,jj,jk  )+umask(ji,jj,jk+1)     & 
     188                     &                 + umask(ji-1,jj,jk+1)+umask(ji,jj,jk  ) , 1._wp ) 
     189 
     190                  zcof1 = - rn_aht_0 * e2t(ji,jj) * zmskt * 0.5  * ( uslp(ji-1,jj,jk) + uslp(ji,jj,jk) ) 
    192191    
     192                  ziut(ji,jj) = (  zabe1 * ( ub(ji,jj,jk) - ub(ji-1,jj,jk) )    & 
     193                     &           + zcof1 * ( zdku (ji,jj) + zdk1u(ji-1,jj)      & 
     194                     &                      +zdk1u(ji,jj) + zdku (ji-1,jj) )  ) * tmask(ji,jj,jk) 
     195               END DO 
     196            END DO 
     197         ELSE                   ! other coordinate system (zco or sco) : e3t 
     198            DO jj = 2, jpjm1 
     199               DO ji = fs_2, jpi   ! vector opt. 
     200                  zabe1 = ( ahmt(ji,jj,jk)+rn_ahm_b ) * e2t(ji,jj) * fse3t(ji,jj,jk) * r1_e1t(ji,jj) 
     201 
     202                  zmskt = 1._wp / MAX(   umask(ji-1,jj,jk  ) + umask(ji,jj,jk+1)     & 
     203                     &                 + umask(ji-1,jj,jk+1) + umask(ji,jj,jk  ) , 1._wp ) 
     204 
     205                  zcof1 = - rn_aht_0 * e2t(ji,jj) * zmskt * 0.5  * ( uslp(ji-1,jj,jk) + uslp(ji,jj,jk) ) 
     206 
    193207                  ziut(ji,jj) = (  zabe1 * ( ub(ji,jj,jk) - ub(ji-1,jj,jk) )   & 
    194208                     &           + zcof1 * ( zdku (ji,jj) + zdk1u(ji-1,jj)     & 
     
    196210               END DO 
    197211            END DO 
    198          ELSE                   ! other coordinate system (zco or sco) : e3t 
    199             DO jj = 2, jpjm1 
    200                DO ji = fs_2, jpi   ! vector opt. 
    201                   zabe1 = (fsahmt(ji,jj,jk)+ahmb0) * e2t(ji,jj) * fse3t(ji,jj,jk) / e1t(ji,jj) 
    202  
    203                   zmskt = 1./MAX(  umask(ji-1,jj,jk  )+umask(ji,jj,jk+1)   & 
    204                      &           + umask(ji-1,jj,jk+1)+umask(ji,jj,jk  ), 1. ) 
    205  
    206                   zcof1 = - aht0 * e2t(ji,jj) * zmskt * 0.5  * ( uslp(ji-1,jj,jk) + uslp(ji,jj,jk) ) 
    207  
    208                   ziut(ji,jj) = (  zabe1 * ( ub(ji,jj,jk) - ub(ji-1,jj,jk) )   & 
    209                      &           + zcof1 * ( zdku (ji,jj) + zdk1u(ji-1,jj)     & 
    210                      &                      +zdk1u(ji,jj) + zdku (ji-1,jj) )  ) * tmask(ji,jj,jk) 
    211                END DO 
    212             END DO 
    213212         ENDIF 
    214213 
     
    216215         DO jj = 1, jpjm1 
    217216            DO ji = 1, fs_jpim1   ! vector opt. 
    218                zabe2 = ( fsahmf(ji,jj,jk) + ahmb0 ) * e1f(ji,jj) * fse3f(ji,jj,jk) / e2f(ji,jj) 
    219  
    220                zmskf = 1./MAX(  umask(ji,jj+1,jk  )+umask(ji,jj,jk+1)   & 
    221                   &           + umask(ji,jj+1,jk+1)+umask(ji,jj,jk  ), 1. ) 
    222  
    223                zcof2 = - aht0 * e1f(ji,jj) * zmskf * 0.5  * ( vslp(ji+1,jj,jk) + vslp(ji,jj,jk) ) 
     217               zabe2 = ( ahmf(ji,jj,jk) + rn_ahm_b ) * e1f(ji,jj) * fse3f(ji,jj,jk) * r1_e2f(ji,jj) 
     218 
     219               zmskf = 1._wp / MAX(   umask(ji,jj+1,jk  )+umask(ji,jj,jk+1)     & 
     220                  &                 + umask(ji,jj+1,jk+1)+umask(ji,jj,jk  ) , 1._wp ) 
     221 
     222               zcof2 = - rn_aht_0 * e1f(ji,jj) * zmskf * 0.5  * ( vslp(ji+1,jj,jk) + vslp(ji,jj,jk) ) 
    224223 
    225224               zjuf(ji,jj) = (  zabe2 * ( ub(ji,jj+1,jk) - ub(ji,jj,jk) )   & 
     
    237236         DO jj = 2, jpjm1 
    238237            DO ji = 1, fs_jpim1   ! vector opt. 
    239                zabe1 = ( fsahmf(ji,jj,jk) + ahmb0 ) * e2f(ji,jj) * fse3f(ji,jj,jk) / e1f(ji,jj) 
    240  
    241                zmskf = 1./MAX(  vmask(ji+1,jj,jk  )+vmask(ji,jj,jk+1)   & 
    242                   &           + vmask(ji+1,jj,jk+1)+vmask(ji,jj,jk  ), 1. ) 
    243  
    244                zcof1 = - aht0 * e2f(ji,jj) * zmskf * 0.5 * ( uslp(ji,jj+1,jk) + uslp(ji,jj,jk) ) 
    245  
    246                zivf(ji,jj) = (  zabe1 * ( vb(ji+1,jj,jk) - vb(ji,jj,jk) )   & 
    247                   &           + zcof1 * ( zdkv (ji,jj) + zdk1v(ji+1,jj)     & 
    248                   &                      +zdk1v(ji,jj) + zdkv (ji+1,jj) )  ) * fmask(ji,jj,jk) 
     238               zabe1 = ( ahmf(ji,jj,jk) + rn_ahm_b ) * e2f(ji,jj) * fse3f(ji,jj,jk) * r1_e1f(ji,jj) 
     239 
     240               zmskf = 1._wp / MAX(  vmask(ji+1,jj,jk  )+vmask(ji,jj,jk+1)     & 
     241                  &                + vmask(ji+1,jj,jk+1)+vmask(ji,jj,jk  ) , 1._wp ) 
     242 
     243               zcof1 = - rn_aht_0 * e2f(ji,jj) * zmskf * 0.5 * ( uslp(ji,jj+1,jk) + uslp(ji,jj,jk) ) 
     244 
     245               zivf(ji,jj) = (  zabe1 * ( vb(ji+1,jj,jk) - vb(ji,jj,jk) )    & 
     246                  &           + zcof1 * (  zdkv (ji,jj) + zdk1v(ji+1,jj)      & 
     247                  &                      + zdk1v(ji,jj) + zdkv (ji+1,jj) )  ) * fmask(ji,jj,jk) 
    249248            END DO 
    250249         END DO 
     
    254253            DO jj = 2, jpj 
    255254               DO ji = 1, fs_jpim1   ! vector opt. 
    256                   zabe2 = (fsahmt(ji,jj,jk)+ahmb0) * e1t(ji,jj) * MIN( fse3v(ji,jj,jk), fse3v(ji,jj-1,jk) ) / e2t(ji,jj) 
     255                  zabe2 = ( ahmt(ji,jj,jk)+rn_ahm_b ) * e1t(ji,jj) * MIN( fse3v(ji,jj,jk), fse3v(ji,jj-1,jk) ) * r1_e2t(ji,jj) 
     256 
     257                  zmskt = 1._wp / MAX(  vmask(ji,jj-1,jk  )+vmask(ji,jj,jk+1)     & 
     258                     &                + vmask(ji,jj-1,jk+1)+vmask(ji,jj,jk  ) , 1._wp ) 
     259 
     260                  zcof2 = - rn_aht_0 * e1t(ji,jj) * zmskt * 0.5 * ( vslp(ji,jj-1,jk) + vslp(ji,jj,jk) ) 
     261 
     262                  zjvt(ji,jj) = (  zabe2 * ( vb(ji,jj,jk) - vb(ji,jj-1,jk) )    & 
     263                     &           + zcof2 * ( zdkv (ji,jj-1) + zdk1v(ji,jj)      & 
     264                     &                      +zdk1v(ji,jj-1) + zdkv (ji,jj) )  ) * tmask(ji,jj,jk) 
     265               END DO 
     266            END DO 
     267         ELSE                   ! other coordinate system (zco or sco) : e3t 
     268            DO jj = 2, jpj 
     269               DO ji = 1, fs_jpim1   ! vector opt. 
     270                  zabe2 = ( ahmt(ji,jj,jk)+rn_ahm_b ) * e1t(ji,jj) * fse3t(ji,jj,jk) * r1_e2t(ji,jj) 
    257271 
    258272                  zmskt = 1./MAX(  vmask(ji,jj-1,jk  )+vmask(ji,jj,jk+1)   & 
    259273                     &           + vmask(ji,jj-1,jk+1)+vmask(ji,jj,jk  ), 1. ) 
    260274 
    261                   zcof2 = - aht0 * e1t(ji,jj) * zmskt * 0.5 * ( vslp(ji,jj-1,jk) + vslp(ji,jj,jk) ) 
     275                  zcof2 = - rn_aht_0 * e1t(ji,jj) * zmskt * 0.5 * ( vslp(ji,jj-1,jk) + vslp(ji,jj,jk) ) 
    262276 
    263277                  zjvt(ji,jj) = (  zabe2 * ( vb(ji,jj,jk) - vb(ji,jj-1,jk) )   & 
     
    266280               END DO 
    267281            END DO 
    268          ELSE                   ! other coordinate system (zco or sco) : e3t 
    269             DO jj = 2, jpj 
    270                DO ji = 1, fs_jpim1   ! vector opt. 
    271                   zabe2 = (fsahmt(ji,jj,jk)+ahmb0) * e1t(ji,jj) * fse3t(ji,jj,jk) / e2t(ji,jj) 
    272  
    273                   zmskt = 1./MAX(  vmask(ji,jj-1,jk  )+vmask(ji,jj,jk+1)   & 
    274                      &           + vmask(ji,jj-1,jk+1)+vmask(ji,jj,jk  ), 1. ) 
    275  
    276                   zcof2 = - aht0 * e1t(ji,jj) * zmskt * 0.5 * ( vslp(ji,jj-1,jk) + vslp(ji,jj,jk) ) 
    277  
    278                   zjvt(ji,jj) = (  zabe2 * ( vb(ji,jj,jk) - vb(ji,jj-1,jk) )   & 
    279                      &           + zcof2 * ( zdkv (ji,jj-1) + zdk1v(ji,jj)     & 
    280                      &                      +zdk1v(ji,jj-1) + zdkv (ji,jj) )  ) * tmask(ji,jj,jk) 
    281                END DO 
    282             END DO 
    283282         ENDIF 
    284283 
     
    286285         ! Second derivative (divergence) and add to the general trend 
    287286         ! ----------------------------------------------------------- 
    288  
    289287         DO jj = 2, jpjm1 
    290             DO ji = 2, jpim1          !! Question vectop possible??? !!bug 
    291                ! volume elements 
    292                zbu = e1u(ji,jj) * e2u(ji,jj) * fse3u(ji,jj,jk) 
    293                zbv = e1v(ji,jj) * e2v(ji,jj) * fse3v(ji,jj,jk) 
    294                ! horizontal component of isopycnal momentum diffusive trends 
    295                zuah =( ziut (ji+1,jj) - ziut (ji,jj  ) +   & 
    296                   &    zjuf (ji  ,jj) - zjuf (ji,jj-1)  ) / zbu 
    297                zvah =( zivf (ji,jj  ) - zivf (ji-1,jj) +   & 
    298                   &    zjvt (ji,jj+1) - zjvt (ji,jj  )  ) / zbv 
    299                ! add the trends to the general trends 
    300                ua (ji,jj,jk) = ua (ji,jj,jk) + zuah 
    301                va (ji,jj,jk) = va (ji,jj,jk) + zvah 
     288            DO ji = 2, jpim1          !!gm Question vectop possible??? !!bug 
     289               ua(ji,jj,jk) = ua(ji,jj,jk) + ( ziut(ji+1,jj) - ziut(ji,jj  )    & 
     290                  &                          + zjuf(ji  ,jj) - zjuf(ji,jj-1)  ) / ( e1e2u(ji,jj) * fse3u(ji,jj,jk) ) 
     291               va(ji,jj,jk) = va(ji,jj,jk) + ( zivf(ji,jj  ) - zivf(ji-1,jj)    & 
     292                  &                          + zjvt(ji,jj+1) - zjvt(ji,jj  )  ) / ( e1e2v(ji,jj) * fse3v(ji,jj,jk) ) 
    302293            END DO 
    303294         END DO 
     
    358349         DO jk = 2, jpkm1 
    359350            DO ji = 2, jpim1 
    360                zcoef0= 0.5 * aht0 * umask(ji,jj,jk) 
    361  
     351               zcoef0= 0.5 * rn_aht_0 * umask(ji,jj,jk) 
     352               ! 
    362353               zuwslpi = zcoef0 * ( wslpi(ji+1,jj,jk) + wslpi(ji,jj,jk) ) 
    363354               zuwslpj = zcoef0 * ( wslpj(ji+1,jj,jk) + wslpj(ji,jj,jk) ) 
    364  
     355               ! 
    365356               zmkt = 1./MAX(  tmask(ji,jj,jk-1)+tmask(ji+1,jj,jk-1)   & 
    366357                             + tmask(ji,jj,jk  )+tmask(ji+1,jj,jk  ), 1. ) 
    367                zmkf = 1./MAX(  fmask(ji,jj-1,jk-1)+fmask(ji,jj,jk-1)   & 
    368                              + fmask(ji,jj-1,jk  )+fmask(ji,jj,jk  ), 1. ) 
     358               zmkf = 1./MAX(  fmask(ji,jj-1,jk-1) + fmask(ji,jj,jk-1)   & 
     359                             + fmask(ji,jj-1,jk  ) + fmask(ji,jj,jk  ), 1. ) 
    369360 
    370361               zcoef3 = - e2u(ji,jj) * zmkt * zuwslpi 
     
    376367                                       +zdj1u(ji,jk  ) + zdju (ji  ,jk  ) ) 
    377368               ! update avmu (add isopycnal vertical coefficient to avmu) 
    378                ! Caution: zcoef0 include aht0, so divided by aht0 to obtain slp^2 * aht0 
    379                avmu(ji,jj,jk) = avmu(ji,jj,jk) + ( zuwslpi * zuwslpi + zuwslpj * zuwslpj ) / aht0 
     369               ! Caution: zcoef0 include rn_aht_0, so divided by rn_aht_0 to obtain slp^2 * rn_aht_0 
     370               avmu(ji,jj,jk) = avmu(ji,jj,jk) + ( zuwslpi * zuwslpi + zuwslpj * zuwslpj ) / rn_aht_0 
    380371            END DO 
    381372         END DO 
     
    384375         DO jk = 2, jpkm1 
    385376            DO ji = 2, jpim1 
    386                zcoef0= 0.5 * aht0 * vmask(ji,jj,jk) 
     377               zcoef0 = 0.5 * rn_aht_0 * vmask(ji,jj,jk) 
    387378 
    388379               zvwslpi = zcoef0 * ( wslpi(ji,jj+1,jk) + wslpi(ji,jj,jk) ) 
     
    398389               ! vertical flux on v field 
    399390               zfvw(ji,jk) = zcoef3 * ( zdiv (ji,jk-1) + zdiv (ji-1,jk-1)     & 
    400                                        +zdiv (ji,jk  ) + zdiv (ji-1,jk  ) )   & 
    401                            + zcoef4 * ( zdjv (ji,jk-1) + zdj1v(ji  ,jk-1)     & 
    402                                        +zdjv (ji,jk  ) + zdj1v(ji  ,jk  ) ) 
     391                  &                    +zdiv (ji,jk  ) + zdiv (ji-1,jk  ) )   & 
     392                  &        + zcoef4 * ( zdjv (ji,jk-1) + zdj1v(ji  ,jk-1)     & 
     393                  &                    +zdjv (ji,jk  ) + zdj1v(ji  ,jk  ) ) 
    403394               ! update avmv (add isopycnal vertical coefficient to avmv) 
    404                ! Caution: zcoef0 include aht0, so divided by aht0 to obtain slp^2 * aht0 
    405                avmv(ji,jj,jk) = avmv(ji,jj,jk) + ( zvwslpi * zvwslpi + zvwslpj * zvwslpj ) / aht0 
     395               ! Caution: zcoef0 include rn_aht_0, so divided by rn_aht_0 to obtain slp^2 * rn_aht_0 
     396               avmv(ji,jj,jk) = avmv(ji,jj,jk) + ( zvwslpi * zvwslpi + zvwslpj * zvwslpj ) / rn_aht_0 
    406397            END DO 
    407398         END DO 
     
    412403         DO jk = 1, jpkm1 
    413404            DO ji = 2, jpim1 
    414                ! volume elements 
    415                zbu = e1u(ji,jj) * e2u(ji,jj) * fse3u(ji,jj,jk) 
    416                zbv = e1v(ji,jj) * e2v(ji,jj) * fse3v(ji,jj,jk) 
    417                ! part of the k-component of isopycnal momentum diffusive trends 
    418                zuav = ( zfuw(ji,jk) - zfuw(ji,jk+1) ) / zbu 
    419                zvav = ( zfvw(ji,jk) - zfvw(ji,jk+1) ) / zbv 
    420                ! add the trends to the general trends 
    421                ua(ji,jj,jk) = ua(ji,jj,jk) + zuav 
    422                va(ji,jj,jk) = va(ji,jj,jk) + zvav 
     405               ua(ji,jj,jk) = ua(ji,jj,jk) + ( zfuw(ji,jk) - zfuw(ji,jk+1) ) / ( e1e2u(ji,jj) * fse3u(ji,jj,jk) ) 
     406               va(ji,jj,jk) = va(ji,jj,jk) + ( zfvw(ji,jk) - zfvw(ji,jk+1) ) / ( e1e2v(ji,jj) * fse3v(ji,jj,jk) ) 
    423407            END DO 
    424408         END DO 
     
    432416   END SUBROUTINE dyn_ldf_iso 
    433417 
    434 # else 
    435    !!---------------------------------------------------------------------- 
    436    !!   Dummy module                           NO rotation of mixing tensor 
    437    !!---------------------------------------------------------------------- 
    438 CONTAINS 
    439    SUBROUTINE dyn_ldf_iso( kt )               ! Empty routine 
    440       INTEGER, INTENT(in) :: kt 
    441       WRITE(*,*) 'dyn_ldf_iso: You should not have seen this print! error?', kt 
    442    END SUBROUTINE dyn_ldf_iso 
    443 #endif 
    444  
    445418   !!====================================================================== 
    446419END MODULE dynldf_iso 
Note: See TracChangeset for help on using the changeset viewer.