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 13899 for NEMO/branches/2020/tickets_icb_1900/src/OCE/TRA/tramle.F90 – NEMO

Ignore:
Timestamp:
2020-11-27T17:26:33+01:00 (4 years ago)
Author:
mathiot
Message:

ticket #1900: update branch to trunk and add ICB test case

Location:
NEMO/branches/2020/tickets_icb_1900
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2020/tickets_icb_1900

    • Property svn:externals
      •  

        old new  
        22^/utils/build/makenemo@HEAD   makenemo 
        33^/utils/build/mk@HEAD         mk 
        4 ^/utils/tools/@HEAD           tools 
         4^/utils/tools@HEAD            tools 
        55^/vendors/AGRIF/dev_r12970_AGRIF_CMEMS      ext/AGRIF 
        66^/vendors/FCM@HEAD            ext/FCM 
         
        88 
        99# SETTE 
        10 ^/utils/CI/sette@12931        sette 
         10^/utils/CI/sette@13559        sette 
  • NEMO/branches/2020/tickets_icb_1900/src/OCE/TRA/tramle.F90

    r13237 r13899  
    100100      inml_mle(:,:) = mbkt(:,:) + 1                    ! init. to number of ocean w-level (T-level + 1) 
    101101      IF ( nla10 > 0 ) THEN                            ! avoid case where first level is thicker than 10m 
    102          DO_3DS_11_11( jpkm1, nlb10, -1 ) 
     102         DO_3DS( 1, 1, 1, 1, jpkm1, nlb10, -1 )        ! from the bottom to nlb10 (10m) 
    103103            IF( rhop(ji,jj,jk) > rhop(ji,jj,nla10) + rn_rho_c_mle )   inml_mle(ji,jj) = jk      ! Mixed layer 
    104104         END_3D 
     
    110110      zbm (:,:) = 0._wp 
    111111      zn2 (:,:) = 0._wp 
    112       DO_3D_11_11( 1, ikmax ) 
     112      DO_3D( 1, 1, 1, 1, 1, ikmax )                    ! MLD and mean buoyancy and N2 over the mixed layer 
    113113         zc = e3t(ji,jj,jk,Kmm) * REAL( MIN( MAX( 0, inml_mle(ji,jj)-jk ) , 1  )  )    ! zc being 0 outside the ML t-points 
    114114         zmld(ji,jj) = zmld(ji,jj) + zc 
     
    119119      SELECT CASE( nn_mld_uv )                         ! MLD at u- & v-pts 
    120120      CASE ( 0 )                                               != min of the 2 neighbour MLDs 
    121          DO_2D_10_10 
     121         DO_2D( 1, 0, 1, 0 ) 
    122122            zhu(ji,jj) = MIN( zmld(ji+1,jj), zmld(ji,jj) ) 
    123123            zhv(ji,jj) = MIN( zmld(ji,jj+1), zmld(ji,jj) ) 
    124124         END_2D 
    125125      CASE ( 1 )                                               != average of the 2 neighbour MLDs 
    126          DO_2D_10_10 
     126         DO_2D( 1, 0, 1, 0 ) 
    127127            zhu(ji,jj) = ( zmld(ji+1,jj) + zmld(ji,jj) ) * 0.5_wp 
    128128            zhv(ji,jj) = ( zmld(ji,jj+1) + zmld(ji,jj) ) * 0.5_wp 
    129129         END_2D 
    130130      CASE ( 2 )                                               != max of the 2 neighbour MLDs 
    131          DO_2D_10_10 
     131         DO_2D( 1, 0, 1, 0 ) 
    132132            zhu(ji,jj) = MAX( zmld(ji+1,jj), zmld(ji,jj) ) 
    133133            zhv(ji,jj) = MAX( zmld(ji,jj+1), zmld(ji,jj) ) 
     
    146146      ! 
    147147      IF( nn_mle == 0 ) THEN           ! Fox-Kemper et al. 2010 formulation 
    148          DO_2D_10_10 
     148         DO_2D( 1, 0, 1, 0 ) 
    149149            zpsim_u(ji,jj) = rn_ce * zhu(ji,jj) * zhu(ji,jj)  * e2_e1u(ji,jj)                                            & 
    150150               &           * ( zbm(ji+1,jj) - zbm(ji,jj) ) * MIN( 111.e3_wp , e1u(ji,jj) )   & 
     
    157157         ! 
    158158      ELSEIF( nn_mle == 1 ) THEN       ! New formulation (Lf = 5km fo/ff with fo=Coriolis parameter at latitude rn_lat) 
    159          DO_2D_10_10 
     159         DO_2D( 1, 0, 1, 0 ) 
    160160            zpsim_u(ji,jj) = rc_f *   zhu(ji,jj)   * zhu(ji,jj)   * e2_e1u(ji,jj)               & 
    161161               &                  * ( zbm(ji+1,jj) - zbm(ji,jj) ) * MIN( 111.e3_wp , e1u(ji,jj) ) 
     
    167167      ! 
    168168      IF( nn_conv == 1 ) THEN              ! No MLE in case of convection 
    169          DO_2D_10_10 
     169         DO_2D( 1, 0, 1, 0 ) 
    170170            IF( MIN( zn2(ji,jj) , zn2(ji+1,jj) ) < 0._wp )   zpsim_u(ji,jj) = 0._wp 
    171171            IF( MIN( zn2(ji,jj) , zn2(ji,jj+1) ) < 0._wp )   zpsim_v(ji,jj) = 0._wp 
     
    174174      ! 
    175175      !                                      !==  structure function value at uw- and vw-points  ==! 
    176       DO_2D_10_10 
     176      DO_2D( 1, 0, 1, 0 ) 
    177177         zhu(ji,jj) = 1._wp / zhu(ji,jj)                   ! hu --> 1/hu 
    178178         zhv(ji,jj) = 1._wp / zhv(ji,jj) 
     
    182182      zpsi_vw(:,:,:) = 0._wp 
    183183      ! 
    184       DO_3D_10_10( 2, ikmax ) 
     184      DO_3D( 1, 0, 1, 0, 2, ikmax )                ! start from 2 : surface value = 0 
    185185         zcuw = 1._wp - ( gdepw(ji+1,jj,jk,Kmm) + gdepw(ji,jj,jk,Kmm) ) * zhu(ji,jj) 
    186186         zcvw = 1._wp - ( gdepw(ji,jj+1,jk,Kmm) + gdepw(ji,jj,jk,Kmm) ) * zhv(ji,jj) 
     
    196196      !                                      !==  transport increased by the MLE induced transport ==! 
    197197      DO jk = 1, ikmax 
    198          DO_2D_10_10 
     198         DO_2D( 1, 0, 1, 0 )                      ! CAUTION pu,pv must be defined at row/column i=1 / j=1 
    199199            pu(ji,jj,jk) = pu(ji,jj,jk) + ( zpsi_uw(ji,jj,jk) - zpsi_uw(ji,jj,jk+1) ) 
    200200            pv(ji,jj,jk) = pv(ji,jj,jk) + ( zpsi_vw(ji,jj,jk) - zpsi_vw(ji,jj,jk+1) ) 
    201201         END_2D 
    202          DO_2D_00_00 
     202         DO_2D( 0, 0, 0, 0 ) 
    203203            pw(ji,jj,jk) = pw(ji,jj,jk) - ( zpsi_uw(ji,jj,jk) - zpsi_uw(ji-1,jj,jk)   & 
    204204               &                          + zpsi_vw(ji,jj,jk) - zpsi_vw(ji,jj-1,jk) ) 
     
    283283            IF( ierr /= 0 )   CALL ctl_stop( 'tra_adv_mle_init: failed to allocate arrays' ) 
    284284            z1_t2 = 1._wp / ( rn_time * rn_time ) 
    285             DO_2D_01_01 
     285            DO_2D( 0, 1, 0, 1 )                      ! "coriolis+ time^-1" at u- & v-points 
    286286               zfu = ( ff_f(ji,jj) + ff_f(ji,jj-1) ) * 0.5_wp 
    287287               zfv = ( ff_f(ji,jj) + ff_f(ji-1,jj) ) * 0.5_wp 
Note: See TracChangeset for help on using the changeset viewer.