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 14834 for NEMO/trunk/src/OCE/TRA/eosbn2.F90 – NEMO

Ignore:
Timestamp:
2021-05-11T11:24:44+02:00 (3 years ago)
Author:
hadcv
Message:

#2600: Merge in dev_r14273_HPC-02_Daley_Tiling

File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/trunk/src/OCE/TRA/eosbn2.F90

    r14131 r14834  
    577577 
    578578   SUBROUTINE eos_insitu_pot_2d( pts, prhop ) 
     579      !! 
     580      REAL(wp), DIMENSION(:,:,:), INTENT(in   ) ::   pts    ! 1 : potential temperature  [Celsius] 
     581      !                                                     ! 2 : salinity               [psu] 
     582      REAL(wp), DIMENSION(:,:)  , INTENT(  out) ::   prhop  ! potential density (surface referenced) 
     583      !! 
     584      CALL eos_insitu_pot_2d_t( pts, is_tile(pts), prhop, is_tile(prhop) ) 
     585   END SUBROUTINE eos_insitu_pot_2d 
     586 
     587 
     588   SUBROUTINE eos_insitu_pot_2d_t( pts, ktts, prhop, ktrhop ) 
    579589      !!---------------------------------------------------------------------- 
    580590      !!                  ***  ROUTINE eos_insitu_pot  *** 
     
    589599      !! 
    590600      !!---------------------------------------------------------------------- 
    591       REAL(wp), DIMENSION(jpi,jpj,jpts), INTENT(in   ) ::   pts    ! 1 : potential temperature  [Celsius] 
     601      INTEGER                              , INTENT(in   ) ::   ktts, ktrhop 
     602      REAL(wp), DIMENSION(A2D_T(ktts),JPTS), INTENT(in   ) ::   pts    ! 1 : potential temperature  [Celsius] 
    592603      !                                                                ! 2 : salinity               [psu] 
    593       REAL(wp), DIMENSION(jpi,jpj     ), INTENT(  out) ::   prhop  ! potential density (surface referenced) 
     604      REAL(wp), DIMENSION(A2D_T(ktrhop)   ), INTENT(  out) ::   prhop  ! potential density (surface referenced) 
    594605      ! 
    595606      INTEGER  ::   ji, jj, jk, jsmp             ! dummy loop indices 
     
    606617      CASE( np_teos10, np_eos80 )                !==  polynomial TEOS-10 / EOS-80 ==! 
    607618         ! 
    608             DO_2D( 1, 1, 1, 1 ) 
    609                ! 
    610                zt  = pts (ji,jj,jp_tem) * r1_T0                           ! temperature 
    611                zs  = SQRT( ABS( pts(ji,jj,jp_sal) + rdeltaS ) * r1_S0 )   ! square root salinity 
    612                ztm = tmask(ji,jj,1)                                         ! tmask 
    613                ! 
    614                zn0 = (((((EOS060*zt   & 
    615                   &   + EOS150*zs+EOS050)*zt   & 
    616                   &   + (EOS240*zs+EOS140)*zs+EOS040)*zt   & 
    617                   &   + ((EOS330*zs+EOS230)*zs+EOS130)*zs+EOS030)*zt   & 
    618                   &   + (((EOS420*zs+EOS320)*zs+EOS220)*zs+EOS120)*zs+EOS020)*zt   & 
    619                   &   + ((((EOS510*zs+EOS410)*zs+EOS310)*zs+EOS210)*zs+EOS110)*zs+EOS010)*zt   & 
    620                   &   + (((((EOS600*zs+EOS500)*zs+EOS400)*zs+EOS300)*zs+EOS200)*zs+EOS100)*zs+EOS000 
    621                   ! 
    622                ! 
    623                prhop(ji,jj) = zn0 * ztm                           ! potential density referenced at the surface 
    624                ! 
    625             END_2D 
     619         DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) 
     620            ! 
     621            zt  = pts (ji,jj,jp_tem) * r1_T0                           ! temperature 
     622            zs  = SQRT( ABS( pts(ji,jj,jp_sal) + rdeltaS ) * r1_S0 )   ! square root salinity 
     623            ztm = tmask(ji,jj,1)                                         ! tmask 
     624            ! 
     625            zn0 = (((((EOS060*zt   & 
     626               &   + EOS150*zs+EOS050)*zt   & 
     627               &   + (EOS240*zs+EOS140)*zs+EOS040)*zt   & 
     628               &   + ((EOS330*zs+EOS230)*zs+EOS130)*zs+EOS030)*zt   & 
     629               &   + (((EOS420*zs+EOS320)*zs+EOS220)*zs+EOS120)*zs+EOS020)*zt   & 
     630               &   + ((((EOS510*zs+EOS410)*zs+EOS310)*zs+EOS210)*zs+EOS110)*zs+EOS010)*zt   & 
     631               &   + (((((EOS600*zs+EOS500)*zs+EOS400)*zs+EOS300)*zs+EOS200)*zs+EOS100)*zs+EOS000 
     632               ! 
     633            ! 
     634            prhop(ji,jj) = zn0 * ztm                           ! potential density referenced at the surface 
     635            ! 
     636         END_2D 
    626637 
    627638      CASE( np_seos )                !==  simplified EOS  ==! 
    628639         ! 
    629          DO_2D( 1, 1, 1, 1 ) 
     640         DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) 
    630641            zt  = pts  (ji,jj,jp_tem) - 10._wp 
    631642            zs  = pts  (ji,jj,jp_sal) - 35._wp 
     
    646657      IF( ln_timing )   CALL timing_stop('eos-pot') 
    647658      ! 
    648    END SUBROUTINE eos_insitu_pot_2d 
     659   END SUBROUTINE eos_insitu_pot_2d_t 
    649660 
    650661 
Note: See TracChangeset for help on using the changeset viewer.