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/DYN/dynhpg.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/DYN/dynhpg.F90

    r13237 r13899  
    257257 
    258258      ! Surface value 
    259       DO_2D_00_00 
     259      DO_2D( 0, 0, 0, 0 ) 
    260260         zcoef1 = zcoef0 * e3w(ji,jj,1,Kmm) 
    261261         ! hydrostatic pressure gradient 
     
    269269      ! 
    270270      ! interior value (2=<jk=<jpkm1) 
    271       DO_3D_00_00( 2, jpkm1 ) 
     271      DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
    272272         zcoef1 = zcoef0 * e3w(ji,jj,jk,Kmm) 
    273273         ! hydrostatic pressure gradient 
     
    319319 
    320320      !  Surface value (also valid in partial step case) 
    321       DO_2D_00_00 
     321      DO_2D( 0, 0, 0, 0 ) 
    322322         zcoef1 = zcoef0 * e3w(ji,jj,1,Kmm) 
    323323         ! hydrostatic pressure gradient 
     
    330330 
    331331      ! interior value (2=<jk=<jpkm1) 
    332       DO_3D_00_00( 2, jpkm1 ) 
     332      DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
    333333         zcoef1 = zcoef0 * e3w(ji,jj,jk,Kmm) 
    334334         ! hydrostatic pressure gradient 
     
    346346 
    347347      ! partial steps correction at the last level  (use zgru & zgrv computed in zpshde.F90) 
    348       DO_2D_00_00 
     348      DO_2D( 0, 0, 0, 0 ) 
    349349         iku = mbku(ji,jj) 
    350350         ikv = mbkv(ji,jj) 
     
    411411      ! 
    412412      IF( ln_wd_il ) THEN 
    413         DO_2D_00_00 
     413        DO_2D( 0, 0, 0, 0 ) 
    414414          ll_tmp1 = MIN(  ssh(ji,jj,Kmm)               ,  ssh(ji+1,jj,Kmm) ) >                & 
    415415               &    MAX( -ht_0(ji,jj)               , -ht_0(ji+1,jj) ) .AND.            & 
     
    452452 
    453453      ! Surface value 
    454       DO_2D_00_00 
     454      DO_2D( 0, 0, 0, 0 ) 
    455455         ! hydrostatic pressure gradient along s-surfaces 
    456456         zhpi(ji,jj,1) =   & 
     
    481481 
    482482      ! interior value (2=<jk=<jpkm1) 
    483       DO_3D_00_00( 2, jpkm1 ) 
     483      DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
    484484         ! hydrostatic pressure gradient along s-surfaces 
    485485         zhpi(ji,jj,jk) = zhpi(ji,jj,jk-1) + zcoef0 * r1_e1u(ji,jj)   & 
     
    563563!===== Compute surface value =====================================================  
    564564!================================================================================== 
    565       DO_2D_00_00 
     565      DO_2D( 0, 0, 0, 0 ) 
    566566         ikt    = mikt(ji,jj) 
    567567         iktp1i = mikt(ji+1,jj) 
     
    592592!================================================================================== 
    593593      ! interior value (2=<jk=<jpkm1) 
    594       DO_3D_00_00( 2, jpkm1 ) 
     594      DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
    595595         ! hydrostatic pressure gradient along s-surfaces 
    596596         zhpi(ji,jj,jk) = zhpi(ji,jj,jk-1) + zcoef0 / e1u(ji,jj)   & 
     
    643643      IF( ln_wd_il ) THEN 
    644644         ALLOCATE( zcpx(jpi,jpj) , zcpy(jpi,jpj) ) 
    645         DO_2D_00_00 
     645        DO_2D( 0, 0, 0, 0 ) 
    646646          ll_tmp1 = MIN(  ssh(ji,jj,Kmm)              ,  ssh(ji+1,jj,Kmm) ) >                & 
    647647               &    MAX( -ht_0(ji,jj)              , -ht_0(ji+1,jj) ) .AND.            & 
     
    699699!!bug gm   Not a true bug, but... dzz=e3w  for dzx, dzy verify what it is really 
    700700 
    701       DO_3D_00_00( 2, jpkm1 ) 
     701      DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
    702702         drhoz(ji,jj,jk) = rhd    (ji  ,jj  ,jk) - rhd    (ji,jj,jk-1) 
    703703         dzz  (ji,jj,jk) = gde3w(ji  ,jj  ,jk) - gde3w(ji,jj,jk-1) 
     
    716716!!bug  gm  idem for drhox, drhoy et ji=jpi and jj=jpj 
    717717 
    718       DO_3D_00_00( 2, jpkm1 ) 
     718      DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
    719719         cffw = 2._wp * drhoz(ji  ,jj  ,jk) * drhoz(ji,jj,jk-1) 
    720720 
     
    784784!          true if gde3w(:,:,:) is really defined as the sum of the e3w scale factors as, it seems to me, it should be 
    785785 
    786       DO_2D_00_00 
     786      DO_2D( 0, 0, 0, 0 ) 
    787787         rho_k(ji,jj,1) = -grav * ( e3w(ji,jj,1,Kmm) - gde3w(ji,jj,1) )               & 
    788788            &                   * (  rhd(ji,jj,1)                                     & 
     
    795795!!bug gm    : optimisation: 1/10 and 1/12 the division should be done before the loop 
    796796 
    797       DO_3D_00_00( 2, jpkm1 ) 
     797      DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
    798798 
    799799         rho_k(ji,jj,jk) = zcoef0 * ( rhd    (ji,jj,jk) + rhd    (ji,jj,jk-1) )                                   & 
     
    830830      !  Surface value 
    831831      ! --------------- 
    832       DO_2D_00_00 
     832      DO_2D( 0, 0, 0, 0 ) 
    833833         zhpi(ji,jj,1) = ( rho_k(ji+1,jj  ,1) - rho_k(ji,jj,1) - rho_i(ji,jj,1) ) * r1_e1u(ji,jj) 
    834834         zhpj(ji,jj,1) = ( rho_k(ji  ,jj+1,1) - rho_k(ji,jj,1) - rho_j(ji,jj,1) ) * r1_e2v(ji,jj) 
     
    845845      !  interior value   (2=<jk=<jpkm1) 
    846846      ! ---------------- 
    847       DO_3D_00_00( 2, jpkm1 ) 
     847      DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
    848848         ! hydrostatic pressure gradient along s-surfaces 
    849849         zhpi(ji,jj,jk) = zhpi(ji,jj,jk-1)                                & 
     
    911911      IF( ln_wd_il ) THEN 
    912912         ALLOCATE( zcpx(jpi,jpj) , zcpy(jpi,jpj) ) 
    913          DO_2D_00_00 
     913         DO_2D( 0, 0, 0, 0 ) 
    914914          ll_tmp1 = MIN(  ssh(ji,jj,Kmm)              ,  ssh(ji+1,jj,Kmm) ) >                & 
    915915               &    MAX( -ht_0(ji,jj)              , -ht_0(ji+1,jj) ) .AND.            & 
     
    960960 
    961961      ! Preparing vertical density profile "zrhh(:,:,:)" for hybrid-sco coordinate 
    962       DO_2D_11_11 
    963        jk = mbkt(ji,jj)+1 
    964        IF(     jk <=  0   ) THEN   ;   zrhh(ji,jj,    :   ) = 0._wp 
    965        ELSEIF( jk ==  1   ) THEN   ;   zrhh(ji,jj,jk+1:jpk) = rhd(ji,jj,jk) 
     962      DO_2D( 1, 1, 1, 1 ) 
     963       jk = mbkt(ji,jj) 
     964       IF(     jk <=  1   ) THEN   ;   zrhh(ji,jj,    :   ) = 0._wp 
     965       ELSEIF( jk ==  2   ) THEN   ;   zrhh(ji,jj,jk+1:jpk) = rhd(ji,jj,jk) 
    966966       ELSEIF( jk < jpkm1 ) THEN 
    967967          DO jkk = jk+1, jpk 
    968968             zrhh(ji,jj,jkk) = interp1(gde3w(ji,jj,jkk  ), gde3w(ji,jj,jkk-1),   & 
    969                 &                      gde3w(ji,jj,jkk-2), rhd    (ji,jj,jkk-1), rhd(ji,jj,jkk-2)) 
     969                &                      gde3w(ji,jj,jkk-2), zrhh (ji,jj,jkk-1), zrhh(ji,jj,jkk-2)) 
    970970          END DO 
    971971       ENDIF 
     
    973973 
    974974      ! Transfer the depth of "T(:,:,:)" to vertical coordinate "zdept(:,:,:)" 
    975       DO_2D_11_11 
     975      DO_2D( 1, 1, 1, 1 ) 
    976976         zdept(ji,jj,1) = 0.5_wp * e3w(ji,jj,1,Kmm) - ssh(ji,jj,Kmm) * znad 
    977977      END_2D 
    978978 
    979       DO_3D_11_11( 2, jpk ) 
     979      DO_3D( 1, 1, 1, 1, 2, jpk ) 
    980980         zdept(ji,jj,jk) = zdept(ji,jj,jk-1) + e3w(ji,jj,jk,Kmm) 
    981981      END_3D 
     
    990990 
    991991      ! Integrate the hydrostatic pressure "zhpi(:,:,:)" at "T(ji,jj,1)" 
    992       DO_2D_01_01 
     992      DO_2D( 0, 1, 0, 1 ) 
    993993       zrhdt1 = zrhh(ji,jj,1) - interp3( zdept(ji,jj,1), asp(ji,jj,1), bsp(ji,jj,1),  & 
    994994          &                                              csp(ji,jj,1), dsp(ji,jj,1) ) * 0.25_wp * e3w(ji,jj,1,Kmm) 
     
    999999 
    10001000      ! Calculate the pressure "zhpi(:,:,:)" at "T(ji,jj,2:jpkm1)" 
    1001       DO_3D_01_01( 2, jpkm1 ) 
     1001      DO_3D( 0, 1, 0, 1, 2, jpkm1 ) 
    10021002      zhpi(ji,jj,jk) = zhpi(ji,jj,jk-1) +                                  & 
    10031003         &             integ_spline( zdept(ji,jj,jk-1), zdept(ji,jj,jk),   & 
     
    10091009 
    10101010      ! Prepare zsshu_n and zsshv_n 
    1011       DO_2D_00_00 
     1011      DO_2D( 0, 0, 0, 0 ) 
    10121012!!gm BUG ?    if it is ssh at u- & v-point then it should be: 
    10131013!          zsshu_n(ji,jj) = (e1e2t(ji,jj) * ssh(ji,jj,Kmm) + e1e2t(ji+1,jj) * ssh(ji+1,jj,Kmm)) * & 
     
    10241024      CALL lbc_lnk_multi ('dynhpg', zsshu_n, 'U', 1.0_wp, zsshv_n, 'V', 1.0_wp ) 
    10251025 
    1026       DO_2D_00_00 
     1026      DO_2D( 0, 0, 0, 0 ) 
    10271027       zu(ji,jj,1) = - ( e3u(ji,jj,1,Kmm) - zsshu_n(ji,jj) * znad)  
    10281028       zv(ji,jj,1) = - ( e3v(ji,jj,1,Kmm) - zsshv_n(ji,jj) * znad) 
    10291029      END_2D 
    10301030 
    1031       DO_3D_00_00( 2, jpkm1 ) 
     1031      DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
    10321032      zu(ji,jj,jk) = zu(ji,jj,jk-1) - e3u(ji,jj,jk,Kmm) 
    10331033      zv(ji,jj,jk) = zv(ji,jj,jk-1) - e3v(ji,jj,jk,Kmm) 
    10341034      END_3D 
    10351035 
    1036       DO_3D_00_00( 1, jpkm1 ) 
     1036      DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
    10371037      zu(ji,jj,jk) = zu(ji,jj,jk) + 0.5_wp * e3u(ji,jj,jk,Kmm) 
    10381038      zv(ji,jj,jk) = zv(ji,jj,jk) + 0.5_wp * e3v(ji,jj,jk,Kmm) 
    10391039      END_3D 
    10401040 
    1041       DO_3D_00_00( 1, jpkm1 ) 
     1041      DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
    10421042      zu(ji,jj,jk) = MIN(  zu(ji,jj,jk) , MAX( -zdept(ji,jj,jk) , -zdept(ji+1,jj,jk) )  ) 
    10431043      zu(ji,jj,jk) = MAX(  zu(ji,jj,jk) , MIN( -zdept(ji,jj,jk) , -zdept(ji+1,jj,jk) )  ) 
     
    10471047 
    10481048 
    1049       DO_3D_00_00( 1, jpkm1 ) 
     1049      DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
    10501050      zpwes = 0._wp; zpwed = 0._wp 
    10511051      zpnss = 0._wp; zpnsd = 0._wp 
Note: See TracChangeset for help on using the changeset viewer.