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 12928 for NEMO/branches/2019/dev_r11078_OSMOSIS_IMMERSE_Nurser/src/OCE/ZDF/zdfmxl.F90 – NEMO

Ignore:
Timestamp:
2020-05-14T21:46:00+02:00 (4 years ago)
Author:
smueller
Message:

Synchronizing with /NEMO/trunk@12925 (ticket #2170)

Location:
NEMO/branches/2019/dev_r11078_OSMOSIS_IMMERSE_Nurser
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2019/dev_r11078_OSMOSIS_IMMERSE_Nurser

    • Property svn:externals
      •  

        old new  
        66^/vendors/FCM@HEAD            ext/FCM 
        77^/vendors/IOIPSL@HEAD         ext/IOIPSL 
         8 
         9# SETTE 
         10^/utils/CI/sette@HEAD         sette 
  • NEMO/branches/2019/dev_r11078_OSMOSIS_IMMERSE_Nurser/src/OCE/ZDF/zdfmxl.F90

    r10425 r12928  
    1212   !!---------------------------------------------------------------------- 
    1313   USE oce            ! ocean dynamics and tracers variables 
     14   USE isf_oce        ! ice shelf 
    1415   USE dom_oce        ! ocean space and time domain variables 
    1516   USE trc_oce  , ONLY: l_offline         ! ocean space and time domain variables 
     
    3536   REAL(wp), PUBLIC ::   avt_c = 5.e-4_wp   ! Kz criterion for the turbocline depth 
    3637 
     38   !! * Substitutions 
     39#  include "do_loop_substitute.h90" 
    3740   !!---------------------------------------------------------------------- 
    3841   !! NEMO/OCE 4.0 , NEMO Consortium (2018) 
     
    5760 
    5861 
    59    SUBROUTINE zdf_mxl( kt ) 
     62   SUBROUTINE zdf_mxl( kt, Kmm ) 
    6063      !!---------------------------------------------------------------------- 
    6164      !!                  ***  ROUTINE zdfmxl  *** 
     
    7578      !!---------------------------------------------------------------------- 
    7679      INTEGER, INTENT(in) ::   kt   ! ocean time-step index 
     80      INTEGER, INTENT(in) ::   Kmm  ! ocean time level index 
    7781      ! 
    7882      INTEGER  ::   ji, jj, jk      ! dummy loop indices 
     
    9397      nmln(:,:)  = nlb10               ! Initialization to the number of w ocean point 
    9498      hmlp(:,:)  = 0._wp               ! here hmlp used as a dummy variable, integrating vertically N^2 
    95       zN2_c = grav * rho_c * r1_rau0   ! convert density criteria into N^2 criteria 
    96       DO jk = nlb10, jpkm1 
    97          DO jj = 1, jpj                ! Mixed layer level: w-level  
    98             DO ji = 1, jpi 
    99                ikt = mbkt(ji,jj) 
    100                hmlp(ji,jj) = hmlp(ji,jj) + MAX( rn2b(ji,jj,jk) , 0._wp ) * e3w_n(ji,jj,jk) 
    101                IF( hmlp(ji,jj) < zN2_c )   nmln(ji,jj) = MIN( jk , ikt ) + 1   ! Mixed layer level 
    102             END DO 
    103          END DO 
    104       END DO 
     99      zN2_c = grav * rho_c * r1_rho0   ! convert density criteria into N^2 criteria 
     100      DO_3D_11_11( nlb10, jpkm1 ) 
     101         ikt = mbkt(ji,jj) 
     102         hmlp(ji,jj) = hmlp(ji,jj) + MAX( rn2b(ji,jj,jk) , 0._wp ) * e3w(ji,jj,jk,Kmm) 
     103         IF( hmlp(ji,jj) < zN2_c )   nmln(ji,jj) = MIN( jk , ikt ) + 1   ! Mixed layer level 
     104      END_3D 
    105105      ! 
    106106      ! w-level of the turbocline and mixing layer (iom_use) 
    107107      imld(:,:) = mbkt(:,:) + 1        ! Initialization to the number of w ocean point 
    108       DO jk = jpkm1, nlb10, -1         ! from the bottom to nlb10  
    109          DO jj = 1, jpj 
    110             DO ji = 1, jpi 
    111                IF( avt (ji,jj,jk) < avt_c * wmask(ji,jj,jk) )   imld(ji,jj) = jk      ! Turbocline  
    112             END DO 
    113          END DO 
    114       END DO 
     108      DO_3DS_11_11( jpkm1, nlb10, -1 ) 
     109         IF( avt (ji,jj,jk) < avt_c * wmask(ji,jj,jk) )   imld(ji,jj) = jk      ! Turbocline  
     110      END_3D 
    115111      ! depth of the mixing and mixed layers 
    116       DO jj = 1, jpj 
    117          DO ji = 1, jpi 
    118             iiki = imld(ji,jj) 
    119             iikn = nmln(ji,jj) 
    120             hmld (ji,jj) = gdepw_n(ji,jj,iiki  ) * ssmask(ji,jj)    ! Turbocline depth  
    121             hmlp (ji,jj) = gdepw_n(ji,jj,iikn  ) * ssmask(ji,jj)    ! Mixed layer depth 
    122             hmlpt(ji,jj) = gdept_n(ji,jj,iikn-1) * ssmask(ji,jj)    ! depth of the last T-point inside the mixed layer 
    123          END DO 
    124       END DO 
     112      DO_2D_11_11 
     113         iiki = imld(ji,jj) 
     114         iikn = nmln(ji,jj) 
     115         hmld (ji,jj) = gdepw(ji,jj,iiki  ,Kmm) * ssmask(ji,jj)    ! Turbocline depth  
     116         hmlp (ji,jj) = gdepw(ji,jj,iikn  ,Kmm) * ssmask(ji,jj)    ! Mixed layer depth 
     117         hmlpt(ji,jj) = gdept(ji,jj,iikn-1,Kmm) * ssmask(ji,jj)    ! depth of the last T-point inside the mixed layer 
     118      END_2D 
    125119      ! 
    126120      IF( .NOT.l_offline ) THEN 
     
    137131      ENDIF 
    138132      ! 
    139       IF(ln_ctl)   CALL prt_ctl( tab2d_1=REAL(nmln,wp), clinfo1=' nmln : ', tab2d_2=hmlp, clinfo2=' hmlp : ' ) 
     133      IF(sn_cfctl%l_prtctl)   CALL prt_ctl( tab2d_1=REAL(nmln,wp), clinfo1=' nmln : ', tab2d_2=hmlp, clinfo2=' hmlp : ' ) 
    140134      ! 
    141135   END SUBROUTINE zdf_mxl 
Note: See TracChangeset for help on using the changeset viewer.