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 12616 for NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/OCE/DYN/dynhpg.F90 – NEMO

Ignore:
Timestamp:
2020-03-26T19:24:53+01:00 (4 years ago)
Author:
techene
Message:

all: add e3 substitute (sometimes it requires to add ze3t/u/v/w) and limit precompiled files lines to about 130 character, OCE/ASM/asminc.F90, OCE/DOM/domzgr_substitute.h90, OCE/ISF/isfcpl.F90, OCE/SBC/sbcice_cice, OCE/CRS/crsini.F90 : add key_LF

File:
1 edited

Legend:

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

    r12377 r12616  
    4343   USE in_out_manager  ! I/O manager 
    4444   USE prtctl          ! Print control 
    45    USE lbclnk          ! lateral boundary condition  
     45   USE lbclnk          ! lateral boundary condition 
    4646   USE lib_mpp         ! MPP library 
    4747   USE eosbn2          ! compute density 
     
    7676   !! * Substitutions 
    7777#  include "do_loop_substitute.h90" 
     78#  include "domzgr_substitute.h90" 
     79 
    7880   !!---------------------------------------------------------------------- 
    7981   !! NEMO/OCE 4.0 , NEMO Consortium (2018) 
     
    204206      ! 
    205207      IF( ioptio /= 1 )   CALL ctl_stop( 'NO or several hydrostatic pressure gradient options used' ) 
    206       !  
     208      ! 
    207209      IF(lwp) THEN 
    208210         WRITE(numout,*) 
     
    217219         WRITE(numout,*) 
    218220      ENDIF 
    219       !                           
     221      ! 
    220222   END SUBROUTINE dyn_hpg_init 
    221223 
     
    427429            zcpx(ji,jj) = 0._wp 
    428430          END IF 
    429     
     431 
    430432          ll_tmp1 = MIN(  ssh(ji,jj,Kmm)              ,  ssh(ji,jj+1,Kmm) ) >                & 
    431433               &    MAX( -ht_0(ji,jj)              , -ht_0(ji,jj+1) ) .AND.            & 
     
    452454      DO_2D_00_00 
    453455         ! hydrostatic pressure gradient along s-surfaces 
    454          zhpi(ji,jj,1) = zcoef0 * (  e3w(ji+1,jj  ,1,Kmm) * ( znad + rhd(ji+1,jj  ,1) )    & 
    455             &                      - e3w(ji  ,jj  ,1,Kmm) * ( znad + rhd(ji  ,jj  ,1) )  ) * r1_e1u(ji,jj) 
    456          zhpj(ji,jj,1) = zcoef0 * (  e3w(ji  ,jj+1,1,Kmm) * ( znad + rhd(ji  ,jj+1,1) )    & 
    457             &                      - e3w(ji  ,jj  ,1,Kmm) * ( znad + rhd(ji  ,jj  ,1) )  ) * r1_e2v(ji,jj) 
     456         zhpi(ji,jj,1) =   & 
     457            &  zcoef0 * (  e3w(ji+1,jj  ,1,Kmm) * ( znad + rhd(ji+1,jj  ,1) )    & 
     458            &            - e3w(ji  ,jj  ,1,Kmm) * ( znad + rhd(ji  ,jj  ,1) )  ) & 
     459            &           * r1_e1u(ji,jj) 
     460         zhpj(ji,jj,1) =   & 
     461            &  zcoef0 * (  e3w(ji  ,jj+1,1,Kmm) * ( znad + rhd(ji  ,jj+1,1) )    & 
     462            &            - e3w(ji  ,jj  ,1,Kmm) * ( znad + rhd(ji  ,jj  ,1) )  ) & 
     463            &           * r1_e2v(ji,jj) 
    458464         ! s-coordinate pressure gradient correction 
    459465         zuap = -zcoef0 * ( rhd    (ji+1,jj,1) + rhd    (ji,jj,1) + 2._wp * znad )   & 
     
    464470         IF( ln_wd_il ) THEN 
    465471            zhpi(ji,jj,1) = zhpi(ji,jj,1) * zcpx(ji,jj) 
    466             zhpj(ji,jj,1) = zhpj(ji,jj,1) * zcpy(ji,jj)  
     472            zhpj(ji,jj,1) = zhpj(ji,jj,1) * zcpy(ji,jj) 
    467473            zuap = zuap * zcpx(ji,jj) 
    468474            zvap = zvap * zcpy(ji,jj) 
     
    478484         ! hydrostatic pressure gradient along s-surfaces 
    479485         zhpi(ji,jj,jk) = zhpi(ji,jj,jk-1) + zcoef0 * r1_e1u(ji,jj)   & 
    480             &           * (  e3w(ji+1,jj,jk,Kmm) * ( rhd(ji+1,jj,jk) + rhd(ji+1,jj,jk-1) + 2*znad )   & 
    481             &              - e3w(ji  ,jj,jk,Kmm) * ( rhd(ji  ,jj,jk) + rhd(ji  ,jj,jk-1) + 2*znad )  ) 
     486            &    * (  e3w(ji+1,jj,jk,Kmm) * ( rhd(ji+1,jj,jk) + rhd(ji+1,jj,jk-1) + 2*znad )  & 
     487            &       - e3w(ji  ,jj,jk,Kmm) * ( rhd(ji  ,jj,jk) + rhd(ji  ,jj,jk-1) + 2*znad )  ) 
    482488         zhpj(ji,jj,jk) = zhpj(ji,jj,jk-1) + zcoef0 * r1_e2v(ji,jj)   & 
    483             &           * (  e3w(ji,jj+1,jk,Kmm) * ( rhd(ji,jj+1,jk) + rhd(ji,jj+1,jk-1) + 2*znad )   & 
    484             &              - e3w(ji,jj  ,jk,Kmm) * ( rhd(ji,jj,  jk) + rhd(ji,jj  ,jk-1) + 2*znad )  ) 
     489            &    * (  e3w(ji,jj+1,jk,Kmm) * ( rhd(ji,jj+1,jk) + rhd(ji,jj+1,jk-1) + 2*znad )   & 
     490            &       - e3w(ji,jj  ,jk,Kmm) * ( rhd(ji,jj,  jk) + rhd(ji,jj  ,jk-1) + 2*znad )  ) 
    485491         ! s-coordinate pressure gradient correction 
    486492         zuap = -zcoef0 * ( rhd    (ji+1,jj  ,jk) + rhd    (ji,jj,jk) + 2._wp * znad )   & 
     
    491497         IF( ln_wd_il ) THEN 
    492498            zhpi(ji,jj,jk) = zhpi(ji,jj,jk) * zcpx(ji,jj) 
    493             zhpj(ji,jj,jk) = zhpj(ji,jj,jk) * zcpy(ji,jj)  
     499            zhpj(ji,jj,jk) = zhpj(ji,jj,jk) * zcpy(ji,jj) 
    494500            zuap = zuap * zcpx(ji,jj) 
    495501            zvap = zvap * zcpy(ji,jj) 
     
    522528      !!         pvv(:,:,:,Krhs) = pvv(:,:,:,Krhs) - 1/e2v * zhpj 
    523529      !!      iceload is added 
    524       !!       
     530      !! 
    525531      !! ** Action : - Update (puu(:,:,:,Krhs),pvv(:,:,:,Krhs)) with the now hydrastatic pressure trend 
    526532      !!---------------------------------------------------------------------- 
     
    540546      znad=1._wp                 ! To use density and not density anomaly 
    541547      ! 
    542       !                          ! iniitialised to 0. zhpi zhpi  
     548      !                          ! iniitialised to 0. zhpi zhpi 
    543549      zhpi(:,:,:) = 0._wp   ;   zhpj(:,:,:) = 0._wp 
    544550 
     
    554560      CALL eos( zts_top, risfdep, zrhdtop_oce ) 
    555561 
    556 !==================================================================================      
    557 !===== Compute surface value =====================================================  
     562!================================================================================== 
     563!===== Compute surface value ===================================================== 
    558564!================================================================================== 
    559565      DO_2D_00_00 
     
    567573            &                                  - 0.5_wp * e3w(ji,jj,ikt,Kmm)                                         & 
    568574            &                                    * ( 2._wp * znad + rhd(ji,jj,ikt) + zrhdtop_oce(ji,jj) )          & 
    569             &                                  + ( risfload(ji+1,jj) - risfload(ji,jj))                            )  
     575            &                                  + ( risfload(ji+1,jj) - risfload(ji,jj))                            ) 
    570576         zhpj(ji,jj,1) = zcoef0 / e2v(ji,jj) * ( 0.5_wp * e3w(ji,jj+1,iktp1j,Kmm)                                    & 
    571577            &                                    * ( 2._wp * znad + rhd(ji,jj+1,iktp1j) + zrhdtop_oce(ji,jj+1) )   & 
    572             &                                  - 0.5_wp * e3w(ji,jj,ikt,Kmm)                                         &  
     578            &                                  - 0.5_wp * e3w(ji,jj,ikt,Kmm)                                         & 
    573579            &                                    * ( 2._wp * znad + rhd(ji,jj,ikt) + zrhdtop_oce(ji,jj) )          & 
    574             &                                  + ( risfload(ji,jj+1) - risfload(ji,jj))                            )  
     580            &                                  + ( risfload(ji,jj+1) - risfload(ji,jj))                            ) 
    575581         ! s-coordinate pressure gradient correction (=0 if z coordinate) 
    576582         zuap = -zcoef0 * ( rhd    (ji+1,jj,1) + rhd    (ji,jj,1) + 2._wp * znad )   & 
     
    582588         pvv(ji,jj,1,Krhs) = pvv(ji,jj,1,Krhs) + (zhpj(ji,jj,1) + zvap) * vmask(ji,jj,1) 
    583589      END_2D 
    584 !==================================================================================      
    585 !===== Compute interior value =====================================================  
     590!================================================================================== 
     591!===== Compute interior value ===================================================== 
    586592!================================================================================== 
    587593      ! interior value (2=<jk=<jpkm1) 
     
    589595         ! hydrostatic pressure gradient along s-surfaces 
    590596         zhpi(ji,jj,jk) = zhpi(ji,jj,jk-1) + zcoef0 / e1u(ji,jj)   & 
    591             &           * (  e3w(ji+1,jj,jk,Kmm) * ( rhd(ji+1,jj,jk) + rhd(ji+1,jj,jk-1) + 2*znad ) * wmask(ji+1,jj,jk)   & 
    592             &              - e3w(ji  ,jj,jk,Kmm) * ( rhd(ji  ,jj,jk) + rhd(ji  ,jj,jk-1) + 2*znad ) * wmask(ji  ,jj,jk)   ) 
     597            &           * (  e3w(ji+1,jj,jk,Kmm)                   & 
     598            &                  * ( rhd(ji+1,jj,jk) + rhd(ji+1,jj,jk-1) + 2*znad ) * wmask(ji+1,jj,jk)   & 
     599            &              - e3w(ji  ,jj,jk,Kmm)                   & 
     600            &                  * ( rhd(ji  ,jj,jk) + rhd(ji  ,jj,jk-1) + 2*znad ) * wmask(ji  ,jj,jk)   ) 
    593601         zhpj(ji,jj,jk) = zhpj(ji,jj,jk-1) + zcoef0 / e2v(ji,jj)   & 
    594             &           * (  e3w(ji,jj+1,jk,Kmm) * ( rhd(ji,jj+1,jk) + rhd(ji,jj+1,jk-1) + 2*znad ) * wmask(ji,jj+1,jk)   & 
    595             &              - e3w(ji,jj  ,jk,Kmm) * ( rhd(ji,jj,  jk) + rhd(ji,jj  ,jk-1) + 2*znad ) * wmask(ji,jj  ,jk)   ) 
     602            &           * (  e3w(ji,jj+1,jk,Kmm)                   & 
     603            &                  * ( rhd(ji,jj+1,jk) + rhd(ji,jj+1,jk-1) + 2*znad ) * wmask(ji,jj+1,jk)   & 
     604            &              - e3w(ji,jj  ,jk,Kmm)                   & 
     605            &                  * ( rhd(ji,jj,  jk) + rhd(ji,jj  ,jk-1) + 2*znad ) * wmask(ji,jj  ,jk)   ) 
    596606         ! s-coordinate pressure gradient correction 
    597607         zuap = -zcoef0 * ( rhd   (ji+1,jj  ,jk) + rhd   (ji,jj,jk) + 2._wp * znad )   & 
     
    650660            zcpx(ji,jj) = 0._wp 
    651661          END IF 
    652     
     662 
    653663          ll_tmp1 = MIN(  ssh(ji,jj,Kmm)              ,  ssh(ji,jj+1,Kmm) ) >                & 
    654664               &    MAX( -ht_0(ji,jj)              , -ht_0(ji,jj+1) ) .AND.            & 
     
    771781      !------------------------------------------------------------- 
    772782 
    773 !!bug gm   :  e3w-gde3w = 0.5*e3w  ....  and gde3w(2)-gde3w(1)=e3w(2) ....   to be verified 
     783!!bug gm   :  e3w-gde3w = 0.5*e3w  ....  and gde3w(2)-gde3w(1)=e3w(:,:,2,:) ....   to be verified 
    774784!          true if gde3w is really defined as the sum of the e3w scale factors as, it seems to me, it should be 
    775785 
     
    825835         IF( ln_wd_il ) THEN 
    826836           zhpi(ji,jj,1) = zhpi(ji,jj,1) * zcpx(ji,jj) 
    827            zhpj(ji,jj,1) = zhpj(ji,jj,1) * zcpy(ji,jj)  
     837           zhpj(ji,jj,1) = zhpj(ji,jj,1) * zcpy(ji,jj) 
    828838         ENDIF 
    829839         ! add to the general momentum trend 
     
    845855         IF( ln_wd_il ) THEN 
    846856           zhpi(ji,jj,jk) = zhpi(ji,jj,jk) * zcpx(ji,jj) 
    847            zhpj(ji,jj,jk) = zhpj(ji,jj,jk) * zcpy(ji,jj)  
     857           zhpj(ji,jj,jk) = zhpj(ji,jj,jk) * zcpy(ji,jj) 
    848858         ENDIF 
    849859         ! add to the general momentum trend 
     
    916926            zcpx(ji,jj) = ABS( (ssh(ji+1,jj,Kmm) + ht_0(ji+1,jj) - ssh(ji,jj,Kmm) - ht_0(ji,jj)) & 
    917927                        &    / (ssh(ji+1,jj,Kmm) -  ssh(ji  ,jj,Kmm)) ) 
    918             
     928 
    919929             zcpx(ji,jj) = max(min( zcpx(ji,jj) , 1.0_wp),0.0_wp) 
    920930          ELSE 
    921931            zcpx(ji,jj) = 0._wp 
    922932          END IF 
    923     
     933 
    924934          ll_tmp1 = MIN(  ssh(ji,jj,Kmm)              ,  ssh(ji,jj+1,Kmm) ) >                & 
    925935               &    MAX( -ht_0(ji,jj)              , -ht_0(ji,jj+1) ) .AND.            & 
     
    10021012!!gm BUG ?    if it is ssh at u- & v-point then it should be: 
    10031013!          zsshu_n(ji,jj) = (e1e2t(ji,jj) * ssh(ji,jj,Kmm) + e1e2t(ji+1,jj) * ssh(ji+1,jj,Kmm)) * & 
    1004 !                         & r1_e1e2u(ji,jj) * umask(ji,jj,1) * 0.5_wp  
     1014!                         & r1_e1e2u(ji,jj) * umask(ji,jj,1) * 0.5_wp 
    10051015!          zsshv_n(ji,jj) = (e1e2t(ji,jj) * ssh(ji,jj,Kmm) + e1e2t(ji,jj+1) * ssh(ji,jj+1,Kmm)) * & 
    1006 !                         & r1_e1e2v(ji,jj) * vmask(ji,jj,1) * 0.5_wp  
     1016!                         & r1_e1e2v(ji,jj) * vmask(ji,jj,1) * 0.5_wp 
    10071017!!gm not this: 
    10081018       zsshu_n(ji,jj) = (e1e2u(ji,jj) * ssh(ji,jj,Kmm) + e1e2u(ji+1, jj) * ssh(ji+1,jj,Kmm)) * & 
    1009                       & r1_e1e2u(ji,jj) * umask(ji,jj,1) * 0.5_wp  
     1019                      & r1_e1e2u(ji,jj) * umask(ji,jj,1) * 0.5_wp 
    10101020       zsshv_n(ji,jj) = (e1e2v(ji,jj) * ssh(ji,jj,Kmm) + e1e2v(ji+1, jj) * ssh(ji,jj+1,Kmm)) * & 
    1011                       & r1_e1e2v(ji,jj) * vmask(ji,jj,1) * 0.5_wp  
     1021                      & r1_e1e2v(ji,jj) * vmask(ji,jj,1) * 0.5_wp 
    10121022      END_2D 
    10131023 
     
    10151025 
    10161026      DO_2D_00_00 
    1017        zu(ji,jj,1) = - ( e3u(ji,jj,1,Kmm) - zsshu_n(ji,jj) * znad)  
     1027       zu(ji,jj,1) = - ( e3u(ji,jj,1,Kmm) - zsshu_n(ji,jj) * znad) 
    10181028       zv(ji,jj,1) = - ( e3v(ji,jj,1,Kmm) - zsshv_n(ji,jj) * znad) 
    10191029      END_2D 
     
    10981108            zdpdx2 = zdpdx2 * zcpx(ji,jj) * wdrampu(ji,jj) 
    10991109         ENDIF 
    1100          puu(ji,jj,jk,Krhs) = puu(ji,jj,jk,Krhs) + (zdpdx1 + zdpdx2) * umask(ji,jj,jk)  
     1110         puu(ji,jj,jk,Krhs) = puu(ji,jj,jk,Krhs) + (zdpdx1 + zdpdx2) * umask(ji,jj,jk) 
    11011111      ENDIF 
    11021112 
     
    11541164         ENDIF 
    11551165         IF( ln_wd_il ) THEN 
    1156             zdpdy1 = zdpdy1 * zcpy(ji,jj) * wdrampv(ji,jj)  
    1157             zdpdy2 = zdpdy2 * zcpy(ji,jj) * wdrampv(ji,jj)  
     1166            zdpdy1 = zdpdy1 * zcpy(ji,jj) * wdrampv(ji,jj) 
     1167            zdpdy2 = zdpdy2 * zcpy(ji,jj) * wdrampv(ji,jj) 
    11581168         ENDIF 
    11591169 
     
    11891199      !!---------------------------------------------------------------------- 
    11901200      ! 
    1191 !!gm  WHAT !!!!!   THIS IS VERY DANGEROUS !!!!!   
     1201!!gm  WHAT !!!!!   THIS IS VERY DANGEROUS !!!!! 
    11921202      jpi   = size(fsp,1) 
    11931203      jpj   = size(fsp,2) 
     
    13591369   !!====================================================================== 
    13601370END MODULE dynhpg 
    1361  
Note: See TracChangeset for help on using the changeset viewer.