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 12724 for NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/OCE/TRA/eosbn2.F90 – NEMO

Ignore:
Timestamp:
2020-04-08T21:37:59+02:00 (4 years ago)
Author:
techene
Message:

branch KERNEL-06 : merge with trunk@12698 #2385 - in duplcated files : changes to comply to the new trunk variables and some loop bug fixes

Location:
NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3

    • Property svn:externals
      •  

        old new  
        33^/utils/build/mk@HEAD         mk 
        44^/utils/tools@HEAD            tools 
        5 ^/vendors/AGRIF/dev_r11615_ENHANCE-04_namelists_as_internalfiles_agrif@HEAD      ext/AGRIF 
         5^/vendors/AGRIF/dev@HEAD      ext/AGRIF 
        66^/vendors/FCM@HEAD            ext/FCM 
        77^/vendors/IOIPSL@HEAD         ext/IOIPSL 
         8 
         9# SETTE 
         10^/utils/CI/sette@HEAD         sette 
  • NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/OCE/TRA/eosbn2.F90

    r12622 r12724  
    192192      !!                   ***  ROUTINE eos_insitu  *** 
    193193      !! 
    194       !! ** Purpose :   Compute the in situ density (ratio rho/rau0) from 
     194      !! ** Purpose :   Compute the in situ density (ratio rho/rho0) from 
    195195      !!       potential temperature and salinity using an equation of state 
    196196      !!       selected in the nameos namelist 
    197197      !! 
    198       !! ** Method  :   prd(t,s,z) = ( rho(t,s,z) - rau0 ) / rau0 
     198      !! ** Method  :   prd(t,s,z) = ( rho(t,s,z) - rho0 ) / rho0 
    199199      !!         with   prd    in situ density anomaly      no units 
    200200      !!                t      TEOS10: CT or EOS80: PT      Celsius 
     
    202202      !!                z      depth                        meters 
    203203      !!                rho    in situ density              kg/m^3 
    204       !!                rau0   reference density            kg/m^3 
     204      !!                rho0   reference density            kg/m^3 
    205205      !! 
    206206      !!     ln_teos10 : polynomial TEOS-10 equation of state is used for rho(t,s,z). 
     
    211211      !! 
    212212      !!     ln_seos : simplified equation of state 
    213       !!              prd(t,s,z) = ( -a0*(1+lambda/2*(T-T0)+mu*z+nu*(S-S0))*(T-T0) + b0*(S-S0) ) / rau0 
     213      !!              prd(t,s,z) = ( -a0*(1+lambda/2*(T-T0)+mu*z+nu*(S-S0))*(T-T0) + b0*(S-S0) ) / rho0 
    214214      !!              linear case function of T only: rn_alpha<>0, other coefficients = 0 
    215215      !!              linear eos function of T and S: rn_alpha and rn_beta<>0, other coefficients=0 
     
    268268            zn  = ( ( zn3 * zh + zn2 ) * zh + zn1 ) * zh + zn0 
    269269            ! 
    270             prd(ji,jj,jk) = (  zn * r1_rau0 - 1._wp  ) * ztm  ! density anomaly (masked) 
     270            prd(ji,jj,jk) = (  zn * r1_rho0 - 1._wp  ) * ztm  ! density anomaly (masked) 
    271271            ! 
    272272         END_3D 
     
    284284               &  - rn_nu * zt * zs 
    285285               !                                  
    286             prd(ji,jj,jk) = zn * r1_rau0 * ztm                ! density anomaly (masked) 
     286            prd(ji,jj,jk) = zn * r1_rho0 * ztm                ! density anomaly (masked) 
    287287         END_3D 
    288288         ! 
     
    300300      !!                  ***  ROUTINE eos_insitu_pot  *** 
    301301      !! 
    302       !! ** Purpose :   Compute the in situ density (ratio rho/rau0) and the 
     302      !! ** Purpose :   Compute the in situ density (ratio rho/rho0) and the 
    303303      !!      potential volumic mass (Kg/m3) from potential temperature and 
    304304      !!      salinity fields using an equation of state selected in the 
     
    380380                  prhop(ji,jj,jk) = prhop(ji,jj,jk) + zn0_sto(jsmp)                      ! potential density referenced at the surface 
    381381                  ! 
    382                   prd(ji,jj,jk) = prd(ji,jj,jk) + (  zn_sto(jsmp) * r1_rau0 - 1._wp  )   ! density anomaly (masked) 
     382                  prd(ji,jj,jk) = prd(ji,jj,jk) + (  zn_sto(jsmp) * r1_rho0 - 1._wp  )   ! density anomaly (masked) 
    383383               END DO 
    384384               prhop(ji,jj,jk) = 0.5_wp * prhop(ji,jj,jk) * ztm / nn_sto_eos 
     
    420420               prhop(ji,jj,jk) = zn0 * ztm                           ! potential density referenced at the surface 
    421421               ! 
    422                prd(ji,jj,jk) = (  zn * r1_rau0 - 1._wp  ) * ztm      ! density anomaly (masked) 
     422               prd(ji,jj,jk) = (  zn * r1_rho0 - 1._wp  ) * ztm      ! density anomaly (masked) 
    423423            END_3D 
    424424         ENDIF 
     
    435435               &  + rn_b0 * ( 1._wp - 0.5_wp*rn_lambda2*zs ) * zs   & 
    436436               &  - rn_nu * zt * zs 
    437             prhop(ji,jj,jk) = ( rau0 + zn ) * ztm 
     437            prhop(ji,jj,jk) = ( rho0 + zn ) * ztm 
    438438            !                                                     ! density anomaly (masked) 
    439439            zn = zn - ( rn_a0 * rn_mu1 * zt + rn_b0 * rn_mu2 * zs ) * zh 
    440             prd(ji,jj,jk) = zn * r1_rau0 * ztm 
     440            prd(ji,jj,jk) = zn * r1_rho0 * ztm 
    441441            ! 
    442442         END_3D 
     
    455455      !!                  ***  ROUTINE eos_insitu_2d  *** 
    456456      !! 
    457       !! ** Purpose :   Compute the in situ density (ratio rho/rau0) from 
     457      !! ** Purpose :   Compute the in situ density (ratio rho/rho0) from 
    458458      !!      potential temperature and salinity using an equation of state 
    459459      !!      selected in the nameos namelist. * 2D field case 
     
    509509            zn  = ( ( zn3 * zh + zn2 ) * zh + zn1 ) * zh + zn0 
    510510            ! 
    511             prd(ji,jj) = zn * r1_rau0 - 1._wp               ! unmasked in situ density anomaly 
     511            prd(ji,jj) = zn * r1_rho0 - 1._wp               ! unmasked in situ density anomaly 
    512512            ! 
    513513         END_2D 
     
    525525               &  - rn_nu * zt * zs 
    526526               ! 
    527             prd(ji,jj) = zn * r1_rau0               ! unmasked in situ density anomaly 
     527            prd(ji,jj) = zn * r1_rho0               ! unmasked in situ density anomaly 
    528528            ! 
    529529         END_2D 
     
    589589            zn  = ( ( zn3 * zh + zn2 ) * zh + zn1 ) * zh + zn0 
    590590            ! 
    591             pab(ji,jj,jk,jp_tem) = zn * r1_rau0 * ztm 
     591            pab(ji,jj,jk,jp_tem) = zn * r1_rho0 * ztm 
    592592            ! 
    593593            ! beta 
     
    610610            zn  = ( ( zn3 * zh + zn2 ) * zh + zn1 ) * zh + zn0 
    611611            ! 
    612             pab(ji,jj,jk,jp_sal) = zn / zs * r1_rau0 * ztm 
     612            pab(ji,jj,jk,jp_sal) = zn / zs * r1_rho0 * ztm 
    613613            ! 
    614614         END_3D 
     
    623623            ! 
    624624            zn  = rn_a0 * ( 1._wp + rn_lambda1*zt + rn_mu1*zh ) + rn_nu*zs 
    625             pab(ji,jj,jk,jp_tem) = zn * r1_rau0 * ztm   ! alpha 
     625            pab(ji,jj,jk,jp_tem) = zn * r1_rho0 * ztm   ! alpha 
    626626            ! 
    627627            zn  = rn_b0 * ( 1._wp - rn_lambda2*zs - rn_mu2*zh ) - rn_nu*zt 
    628             pab(ji,jj,jk,jp_sal) = zn * r1_rau0 * ztm   ! beta 
     628            pab(ji,jj,jk,jp_sal) = zn * r1_rho0 * ztm   ! beta 
    629629            ! 
    630630         END_3D 
     
    695695            zn  = ( ( zn3 * zh + zn2 ) * zh + zn1 ) * zh + zn0 
    696696            ! 
    697             pab(ji,jj,jp_tem) = zn * r1_rau0 
     697            pab(ji,jj,jp_tem) = zn * r1_rho0 
    698698            ! 
    699699            ! beta 
     
    716716            zn  = ( ( zn3 * zh + zn2 ) * zh + zn1 ) * zh + zn0 
    717717            ! 
    718             pab(ji,jj,jp_sal) = zn / zs * r1_rau0 
     718            pab(ji,jj,jp_sal) = zn / zs * r1_rho0 
    719719            ! 
    720720            ! 
     
    730730            ! 
    731731            zn  = rn_a0 * ( 1._wp + rn_lambda1*zt + rn_mu1*zh ) + rn_nu*zs 
    732             pab(ji,jj,jp_tem) = zn * r1_rau0   ! alpha 
     732            pab(ji,jj,jp_tem) = zn * r1_rho0   ! alpha 
    733733            ! 
    734734            zn  = rn_b0 * ( 1._wp - rn_lambda2*zs - rn_mu2*zh ) - rn_nu*zt 
    735             pab(ji,jj,jp_sal) = zn * r1_rau0   ! beta 
     735            pab(ji,jj,jp_sal) = zn * r1_rho0   ! beta 
    736736            ! 
    737737         END_2D 
     
    800800         zn  = ( ( zn3 * zh + zn2 ) * zh + zn1 ) * zh + zn0 
    801801         ! 
    802          pab(jp_tem) = zn * r1_rau0 
     802         pab(jp_tem) = zn * r1_rho0 
    803803         ! 
    804804         ! beta 
     
    821821         zn  = ( ( zn3 * zh + zn2 ) * zh + zn1 ) * zh + zn0 
    822822         ! 
    823          pab(jp_sal) = zn / zs * r1_rau0 
     823         pab(jp_sal) = zn / zs * r1_rho0 
    824824         ! 
    825825         ! 
     
    832832         ! 
    833833         zn  = rn_a0 * ( 1._wp + rn_lambda1*zt + rn_mu1*zh ) + rn_nu*zs 
    834          pab(jp_tem) = zn * r1_rau0   ! alpha 
     834         pab(jp_tem) = zn * r1_rho0   ! alpha 
    835835         ! 
    836836         zn  = rn_b0 * ( 1._wp - rn_lambda2*zs - rn_mu2*zh ) - rn_nu*zt 
    837          pab(jp_sal) = zn * r1_rau0   ! beta 
     837         pab(jp_sal) = zn * r1_rho0   ! beta 
    838838         ! 
    839839      CASE DEFAULT 
     
    10531053      !! ** Method  :   PE is defined analytically as the vertical  
    10541054      !!                   primitive of EOS times -g integrated between 0 and z>0. 
    1055       !!                pen is the nonlinear bsq-PE anomaly: pen = ( PE - rau0 gz ) / rau0 gz - rd 
     1055      !!                pen is the nonlinear bsq-PE anomaly: pen = ( PE - rho0 gz ) / rho0 gz - rd 
    10561056      !!                                                      = 1/z * /int_0^z rd dz - rd  
    10571057      !!                                where rd is the density anomaly (see eos_rhd function) 
    10581058      !!                ab_pe are partial derivatives of PE anomaly with respect to T and S: 
    1059       !!                    ab_pe(1) = - 1/(rau0 gz) * dPE/dT + drd/dT = - d(pen)/dT 
    1060       !!                    ab_pe(2) =   1/(rau0 gz) * dPE/dS + drd/dS =   d(pen)/dS 
     1059      !!                    ab_pe(1) = - 1/(rho0 gz) * dPE/dT + drd/dT = - d(pen)/dT 
     1060      !!                    ab_pe(2) =   1/(rho0 gz) * dPE/dS + drd/dS =   d(pen)/dS 
    10611061      !! 
    10621062      !! ** Action  : - pen         : PE anomaly given at T-points 
     
    11041104            zn  = ( zn2 * zh + zn1 ) * zh + zn0 
    11051105            ! 
    1106             ppen(ji,jj,jk)  = zn * zh * r1_rau0 * ztm 
     1106            ppen(ji,jj,jk)  = zn * zh * r1_rho0 * ztm 
    11071107            ! 
    11081108            ! alphaPE non-linear anomaly 
     
    11191119            zn  = ( zn2 * zh + zn1 ) * zh + zn0 
    11201120            !                               
    1121             pab_pe(ji,jj,jk,jp_tem) = zn * zh * r1_rau0 * ztm 
     1121            pab_pe(ji,jj,jk,jp_tem) = zn * zh * r1_rho0 * ztm 
    11221122            ! 
    11231123            ! betaPE non-linear anomaly 
     
    11341134            zn  = ( zn2 * zh + zn1 ) * zh + zn0 
    11351135            !                               
    1136             pab_pe(ji,jj,jk,jp_sal) = zn / zs * zh * r1_rau0 * ztm 
     1136            pab_pe(ji,jj,jk,jp_sal) = zn / zs * zh * r1_rho0 * ztm 
    11371137            ! 
    11381138         END_3D 
     
    11451145            zh  = gdept(ji,jj,jk,Kmm)              ! depth in meters  at t-point 
    11461146            ztm = tmask(ji,jj,jk)                ! tmask 
    1147             zn  = 0.5_wp * zh * r1_rau0 * ztm 
     1147            zn  = 0.5_wp * zh * r1_rho0 * ztm 
    11481148            !                                    ! Potential Energy 
    11491149            ppen(ji,jj,jk) = ( rn_a0 * rn_mu1 * zt + rn_b0 * rn_mu2 * zs ) * zn 
     
    11871187      IF(lwm) WRITE( numond, nameos ) 
    11881188      ! 
    1189       rau0        = 1026._wp                 !: volumic mass of reference     [kg/m3] 
     1189      rho0        = 1026._wp                 !: volumic mass of reference     [kg/m3] 
    11901190      rcp         = 3991.86795711963_wp      !: heat capacity     [J/K] 
    11911191      ! 
     
    15991599            WRITE(numout,*) '   ==>>>   use of simplified eos:    ' 
    16001600            WRITE(numout,*) '              rhd(dT=T-10,dS=S-35,Z) = [-a0*(1+lambda1/2*dT+mu1*Z)*dT ' 
    1601             WRITE(numout,*) '                                       + b0*(1+lambda2/2*dT+mu2*Z)*dS - nu*dT*dS] / rau0' 
     1601            WRITE(numout,*) '                                       + b0*(1+lambda2/2*dT+mu2*Z)*dS - nu*dT*dS] / rho0' 
    16021602            WRITE(numout,*) '              with the following coefficients :' 
    16031603            WRITE(numout,*) '                 thermal exp. coef.    rn_a0      = ', rn_a0 
     
    16181618      END SELECT 
    16191619      ! 
    1620       rau0_rcp    = rau0 * rcp  
    1621       r1_rau0     = 1._wp / rau0 
     1620      rho0_rcp    = rho0 * rcp  
     1621      r1_rho0     = 1._wp / rho0 
    16221622      r1_rcp      = 1._wp / rcp 
    1623       r1_rau0_rcp = 1._wp / rau0_rcp  
     1623      r1_rho0_rcp = 1._wp / rho0_rcp  
    16241624      ! 
    16251625      IF(lwp) THEN 
     
    16361636      IF(lwp) WRITE(numout,*) 
    16371637      IF(lwp) WRITE(numout,*) '   Associated physical constant' 
    1638       IF(lwp) WRITE(numout,*) '      volumic mass of reference           rau0  = ', rau0   , ' kg/m^3' 
    1639       IF(lwp) WRITE(numout,*) '      1. / rau0                        r1_rau0  = ', r1_rau0, ' m^3/kg' 
     1638      IF(lwp) WRITE(numout,*) '      volumic mass of reference           rho0  = ', rho0   , ' kg/m^3' 
     1639      IF(lwp) WRITE(numout,*) '      1. / rho0                        r1_rho0  = ', r1_rho0, ' m^3/kg' 
    16401640      IF(lwp) WRITE(numout,*) '      ocean specific heat                 rcp   = ', rcp    , ' J/Kelvin' 
    1641       IF(lwp) WRITE(numout,*) '      rau0 * rcp                       rau0_rcp = ', rau0_rcp 
    1642       IF(lwp) WRITE(numout,*) '      1. / ( rau0 * rcp )           r1_rau0_rcp = ', r1_rau0_rcp 
     1641      IF(lwp) WRITE(numout,*) '      rho0 * rcp                       rho0_rcp = ', rho0_rcp 
     1642      IF(lwp) WRITE(numout,*) '      1. / ( rho0 * rcp )           r1_rho0_rcp = ', r1_rho0_rcp 
    16431643      ! 
    16441644   END SUBROUTINE eos_init 
Note: See TracChangeset for help on using the changeset viewer.