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 12077 for NEMO/branches/2019/UKMO_MERGE_2019/tests/ISOMIP+/MY_SRC/eosbn2.F90 – NEMO

Ignore:
Timestamp:
2019-12-05T18:41:39+01:00 (4 years ago)
Author:
mathiot
Message:

include ENHANCE-02_ISF_nemo in UKMO merge branch

File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2019/UKMO_MERGE_2019/tests/ISOMIP+/MY_SRC/eosbn2.F90

    r11889 r12077  
    2929   !!   eos_insitu_pot: Compute the insitu and surface referenced potential volumic mass 
    3030   !!   eos_insitu_2d : Compute the in situ density for 2d fields 
    31    !!   bn2           : Compute the Brunt-Vaisala frequency 
     31   !!   bn2           : compute the Brunt-Vaisala frequency 
     32   !!   eos_pt_from_ct: compute the potential temperature from the Conservative Temperature 
    3233   !!   eos_rab       : generic interface of in situ thermal/haline expansion ratio  
    3334   !!   eos_rab_3d    : compute in situ thermal/haline expansion ratio 
     
    7475 
    7576   !                               !!** Namelist nameos ** 
    76    LOGICAL , PUBLIC ::   ln_TEOS10   ! determine if eos_pt_from_ct is used to compute sst_m 
    77    LOGICAL , PUBLIC ::   ln_EOS80   ! determine if eos_pt_from_ct is used to compute sst_m 
    78    LOGICAL , PUBLIC ::   ln_SEOS   ! determine if eos_pt_from_ct is used to compute sst_m 
     77   LOGICAL , PUBLIC ::   ln_TEOS10 
     78   LOGICAL , PUBLIC ::   ln_EOS80 
     79   LOGICAL , PUBLIC ::   ln_SEOS 
    7980   LOGICAL , PUBLIC ::   ln_LEOS   ! determine if linear eos is used  
    8081 
     
    624625 
    625626 
    626    SUBROUTINE rab_3d( pts, pab ) 
     627   SUBROUTINE rab_3d( pts, pab, Kmm ) 
    627628      !!---------------------------------------------------------------------- 
    628629      !!                 ***  ROUTINE rab_3d  *** 
     
    634635      !! ** Action  : - pab     : thermal/haline expansion ratio at T-points 
    635636      !!---------------------------------------------------------------------- 
     637      INTEGER                              , INTENT(in   ) ::   Kmm   ! time level index 
    636638      REAL(wp), DIMENSION(jpi,jpj,jpk,jpts), INTENT(in   ) ::   pts   ! pot. temperature & salinity 
    637639      REAL(wp), DIMENSION(jpi,jpj,jpk,jpts), INTENT(  out) ::   pab   ! thermal/haline expansion ratio 
     
    652654               DO ji = 1, jpi 
    653655                  ! 
    654                   zh  = gdept_n(ji,jj,jk) * r1_Z0                                ! depth 
     656                  zh  = gdept(ji,jj,jk,Kmm) * r1_Z0                                ! depth 
    655657                  zt  = pts (ji,jj,jk,jp_tem) * r1_T0                           ! temperature 
    656658                  zs  = SQRT( ABS( pts(ji,jj,jk,jp_sal) + rdeltaS ) * r1_S0 )   ! square root salinity 
     
    710712                  zt  = pts (ji,jj,jk,jp_tem) - 10._wp   ! pot. temperature anomaly (t-T0) 
    711713                  zs  = pts (ji,jj,jk,jp_sal) - 35._wp   ! abs. salinity anomaly (s-S0) 
    712                   zh  = gdept_n(ji,jj,jk)                ! depth in meters at t-point 
     714                  zh  = gdept(ji,jj,jk,Kmm)                ! depth in meters at t-point 
    713715                  ztm = tmask(ji,jj,jk)                  ! land/sea bottom mask = surf. mask 
    714716                  ! 
     
    730732                  zt  = pts (ji,jj,jk,jp_tem) - (-1._wp) 
    731733                  zs  = pts (ji,jj,jk,jp_sal) - 34.2_wp   ! abs. salinity anomaly (s-S0) 
    732                   zh  = gdept_n(ji,jj,jk)                 ! depth in meters at t-point 
     734                  zh  = gdept(ji,jj,jk,Kmm)                 ! depth in meters at t-point 
    733735                  ztm = tmask(ji,jj,jk)                   ! land/sea bottom mask = surf. mask 
    734736                  ! 
     
    757759 
    758760 
    759    SUBROUTINE rab_2d( pts, pdep, pab ) 
     761   SUBROUTINE rab_2d( pts, pdep, pab, Kmm ) 
    760762      !!---------------------------------------------------------------------- 
    761763      !!                 ***  ROUTINE rab_2d  *** 
     
    765767      !! ** Action  : - pab     : thermal/haline expansion ratio at T-points 
    766768      !!---------------------------------------------------------------------- 
     769      INTEGER                              , INTENT(in   ) ::   Kmm   ! time level index 
    767770      REAL(wp), DIMENSION(jpi,jpj,jpts)    , INTENT(in   ) ::   pts    ! pot. temperature & salinity 
    768771      REAL(wp), DIMENSION(jpi,jpj)         , INTENT(in   ) ::   pdep   ! depth                  [m] 
     
    891894 
    892895 
    893    SUBROUTINE rab_0d( pts, pdep, pab ) 
     896   SUBROUTINE rab_0d( pts, pdep, pab, Kmm ) 
    894897      !!---------------------------------------------------------------------- 
    895898      !!                 ***  ROUTINE rab_0d  *** 
     
    899902      !! ** Action  : - pab     : thermal/haline expansion ratio at T-points 
    900903      !!---------------------------------------------------------------------- 
     904      INTEGER                              , INTENT(in   ) ::   Kmm   ! time level index 
    901905      REAL(wp), DIMENSION(jpts)    , INTENT(in   ) ::   pts    ! pot. temperature & salinity 
    902906      REAL(wp),                      INTENT(in   ) ::   pdep   ! depth                  [m] 
     
    9991003 
    10001004 
    1001    SUBROUTINE bn2( pts, pab, pn2 ) 
     1005   SUBROUTINE bn2( pts, pab, pn2, Kmm ) 
    10021006      !!---------------------------------------------------------------------- 
    10031007      !!                  ***  ROUTINE bn2  *** 
     
    10131017      !! 
    10141018      !!---------------------------------------------------------------------- 
     1019      INTEGER                              , INTENT(in   ) ::   Kmm   ! time level index 
    10151020      REAL(wp), DIMENSION(jpi,jpj,jpk,jpts), INTENT(in   ) ::  pts   ! pot. temperature and salinity   [Celsius,psu] 
    10161021      REAL(wp), DIMENSION(jpi,jpj,jpk,jpts), INTENT(in   ) ::  pab   ! thermal/haline expansion coef.  [Celsius-1,psu-1] 
     
    10261031         DO jj = 1, jpj          ! surface and bottom value set to zero one for all in istate.F90 
    10271032            DO ji = 1, jpi 
    1028                zrw =   ( gdepw_n(ji,jj,jk  ) - gdept_n(ji,jj,jk) )   & 
    1029                   &  / ( gdept_n(ji,jj,jk-1) - gdept_n(ji,jj,jk) )  
     1033               zrw =   ( gdepw(ji,jj,jk  ,Kmm) - gdept(ji,jj,jk,Kmm) )   & 
     1034                  &  / ( gdept(ji,jj,jk-1,Kmm) - gdept(ji,jj,jk,Kmm) )  
    10301035                  ! 
    10311036               zaw = pab(ji,jj,jk,jp_tem) * (1. - zrw) + pab(ji,jj,jk-1,jp_tem) * zrw  
     
    10341039               pn2(ji,jj,jk) = grav * (  zaw * ( pts(ji,jj,jk-1,jp_tem) - pts(ji,jj,jk,jp_tem) )     & 
    10351040                  &                    - zbw * ( pts(ji,jj,jk-1,jp_sal) - pts(ji,jj,jk,jp_sal) )  )  & 
    1036                   &            / e3w_n(ji,jj,jk) * wmask(ji,jj,jk) 
     1041                  &            / e3w(ji,jj,jk,Kmm) * wmask(ji,jj,jk) 
    10371042            END DO 
    10381043         END DO 
     
    12031208 
    12041209 
    1205    SUBROUTINE eos_pen( pts, pab_pe, ppen ) 
     1210   SUBROUTINE eos_pen( pts, pab_pe, ppen, Kmm ) 
    12061211      !!---------------------------------------------------------------------- 
    12071212      !!                 ***  ROUTINE eos_pen  *** 
     
    12231228      !!                    pab_pe(:,:,:,jp_sal) is beta_pe 
    12241229      !!---------------------------------------------------------------------- 
     1230      INTEGER                              , INTENT(in   ) ::   Kmm   ! time level index 
    12251231      REAL(wp), DIMENSION(jpi,jpj,jpk,jpts), INTENT(in   ) ::   pts     ! pot. temperature & salinity 
    12261232      REAL(wp), DIMENSION(jpi,jpj,jpk,jpts), INTENT(  out) ::   pab_pe  ! alpha_pe and beta_pe 
     
    12421248               DO ji = 1, jpi 
    12431249                  ! 
    1244                   zh  = gdept_n(ji,jj,jk) * r1_Z0                                ! depth 
     1250                  zh  = gdept(ji,jj,jk,Kmm) * r1_Z0                                ! depth 
    12451251                  zt  = pts (ji,jj,jk,jp_tem) * r1_T0                           ! temperature 
    12461252                  zs  = SQRT( ABS( pts(ji,jj,jk,jp_sal) + rdeltaS ) * r1_S0 )   ! square root salinity 
     
    13061312                  zt  = pts(ji,jj,jk,jp_tem) - 10._wp  ! temperature anomaly (t-T0) 
    13071313                  zs = pts (ji,jj,jk,jp_sal) - 35._wp  ! abs. salinity anomaly (s-S0) 
    1308                   zh  = gdept_n(ji,jj,jk)              ! depth in meters  at t-point 
     1314                  zh  = gdept(ji,jj,jk,Kmm)              ! depth in meters  at t-point 
    13091315                  ztm = tmask(ji,jj,jk)                ! tmask 
    13101316                  zn  = 0.5_wp * zh * r1_rau0 * ztm 
     
    13261332                  zt  = pts(ji,jj,jk,jp_tem) - (-1._wp)  ! temperature anomaly (t-T0) 
    13271333                  zs = pts (ji,jj,jk,jp_sal) - 34.2_wp   ! abs. salinity anomaly (s-S0) 
    1328                   zh  = gdept_n(ji,jj,jk)                ! depth in meters  at t-point 
     1334                  zh  = gdept(ji,jj,jk,Kmm)                ! depth in meters  at t-point 
    13291335                  ztm = tmask(ji,jj,jk)                  ! tmask 
    13301336                  zn  = 0.5_wp * zh * r1_rau0 * ztm 
     
    13681374      REWIND( numnam_ref )              ! Namelist nameos in reference namelist : equation of state 
    13691375      READ  ( numnam_ref, nameos, IOSTAT = ios, ERR = 901 ) 
    1370 901   IF( ios /= 0 )   CALL ctl_nam ( ios , 'nameos in reference namelist', lwp ) 
     1376901   IF( ios /= 0 )   CALL ctl_nam ( ios , 'nameos in reference namelist' ) 
    13711377      ! 
    13721378      REWIND( numnam_cfg )              ! Namelist nameos in configuration namelist : equation of state 
    13731379      READ  ( numnam_cfg, nameos, IOSTAT = ios, ERR = 902 ) 
    1374 902   IF( ios >  0 )   CALL ctl_nam ( ios , 'nameos in configuration namelist', lwp ) 
     1380902   IF( ios >  0 )   CALL ctl_nam ( ios , 'nameos in configuration namelist' ) 
    13751381      IF(lwm) WRITE( numond, nameos ) 
    13761382      ! 
     
    17821788         ! 
    17831789      CASE( np_seos )                        !==  Simplified EOS     ==! 
     1790 
     1791         r1_S0  = 0.875_wp/35.16504_wp   ! Used to convert CT in potential temperature when using bulk formulae (eos_pt_from_ct) 
     1792          
    17841793         IF(lwp) THEN 
    17851794            WRITE(numout,*) 
Note: See TracChangeset for help on using the changeset viewer.