- Timestamp:
- 2020-04-08T21:37:59+02:00 (4 years ago)
- 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 3 3 ^/utils/build/mk@HEAD mk 4 4 ^/utils/tools@HEAD tools 5 ^/vendors/AGRIF/dev _r11615_ENHANCE-04_namelists_as_internalfiles_agrif@HEAD ext/AGRIF5 ^/vendors/AGRIF/dev@HEAD ext/AGRIF 6 6 ^/vendors/FCM@HEAD ext/FCM 7 7 ^/vendors/IOIPSL@HEAD ext/IOIPSL 8 9 # SETTE 10 ^/utils/CI/sette@HEAD sette
-
- Property svn:externals
-
NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/OCE/TRA/eosbn2.F90
r12622 r12724 192 192 !! *** ROUTINE eos_insitu *** 193 193 !! 194 !! ** Purpose : Compute the in situ density (ratio rho/r au0) from194 !! ** Purpose : Compute the in situ density (ratio rho/rho0) from 195 195 !! potential temperature and salinity using an equation of state 196 196 !! selected in the nameos namelist 197 197 !! 198 !! ** Method : prd(t,s,z) = ( rho(t,s,z) - r au0 ) / rau0198 !! ** Method : prd(t,s,z) = ( rho(t,s,z) - rho0 ) / rho0 199 199 !! with prd in situ density anomaly no units 200 200 !! t TEOS10: CT or EOS80: PT Celsius … … 202 202 !! z depth meters 203 203 !! rho in situ density kg/m^3 204 !! r au0 reference density kg/m^3204 !! rho0 reference density kg/m^3 205 205 !! 206 206 !! ln_teos10 : polynomial TEOS-10 equation of state is used for rho(t,s,z). … … 211 211 !! 212 212 !! 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) ) / r au0213 !! prd(t,s,z) = ( -a0*(1+lambda/2*(T-T0)+mu*z+nu*(S-S0))*(T-T0) + b0*(S-S0) ) / rho0 214 214 !! linear case function of T only: rn_alpha<>0, other coefficients = 0 215 215 !! linear eos function of T and S: rn_alpha and rn_beta<>0, other coefficients=0 … … 268 268 zn = ( ( zn3 * zh + zn2 ) * zh + zn1 ) * zh + zn0 269 269 ! 270 prd(ji,jj,jk) = ( zn * r1_r au0 - 1._wp ) * ztm ! density anomaly (masked)270 prd(ji,jj,jk) = ( zn * r1_rho0 - 1._wp ) * ztm ! density anomaly (masked) 271 271 ! 272 272 END_3D … … 284 284 & - rn_nu * zt * zs 285 285 ! 286 prd(ji,jj,jk) = zn * r1_r au0 * ztm ! density anomaly (masked)286 prd(ji,jj,jk) = zn * r1_rho0 * ztm ! density anomaly (masked) 287 287 END_3D 288 288 ! … … 300 300 !! *** ROUTINE eos_insitu_pot *** 301 301 !! 302 !! ** Purpose : Compute the in situ density (ratio rho/r au0) and the302 !! ** Purpose : Compute the in situ density (ratio rho/rho0) and the 303 303 !! potential volumic mass (Kg/m3) from potential temperature and 304 304 !! salinity fields using an equation of state selected in the … … 380 380 prhop(ji,jj,jk) = prhop(ji,jj,jk) + zn0_sto(jsmp) ! potential density referenced at the surface 381 381 ! 382 prd(ji,jj,jk) = prd(ji,jj,jk) + ( zn_sto(jsmp) * r1_r au0 - 1._wp ) ! density anomaly (masked)382 prd(ji,jj,jk) = prd(ji,jj,jk) + ( zn_sto(jsmp) * r1_rho0 - 1._wp ) ! density anomaly (masked) 383 383 END DO 384 384 prhop(ji,jj,jk) = 0.5_wp * prhop(ji,jj,jk) * ztm / nn_sto_eos … … 420 420 prhop(ji,jj,jk) = zn0 * ztm ! potential density referenced at the surface 421 421 ! 422 prd(ji,jj,jk) = ( zn * r1_r au0 - 1._wp ) * ztm ! density anomaly (masked)422 prd(ji,jj,jk) = ( zn * r1_rho0 - 1._wp ) * ztm ! density anomaly (masked) 423 423 END_3D 424 424 ENDIF … … 435 435 & + rn_b0 * ( 1._wp - 0.5_wp*rn_lambda2*zs ) * zs & 436 436 & - rn_nu * zt * zs 437 prhop(ji,jj,jk) = ( r au0 + zn ) * ztm437 prhop(ji,jj,jk) = ( rho0 + zn ) * ztm 438 438 ! ! density anomaly (masked) 439 439 zn = zn - ( rn_a0 * rn_mu1 * zt + rn_b0 * rn_mu2 * zs ) * zh 440 prd(ji,jj,jk) = zn * r1_r au0 * ztm440 prd(ji,jj,jk) = zn * r1_rho0 * ztm 441 441 ! 442 442 END_3D … … 455 455 !! *** ROUTINE eos_insitu_2d *** 456 456 !! 457 !! ** Purpose : Compute the in situ density (ratio rho/r au0) from457 !! ** Purpose : Compute the in situ density (ratio rho/rho0) from 458 458 !! potential temperature and salinity using an equation of state 459 459 !! selected in the nameos namelist. * 2D field case … … 509 509 zn = ( ( zn3 * zh + zn2 ) * zh + zn1 ) * zh + zn0 510 510 ! 511 prd(ji,jj) = zn * r1_r au0 - 1._wp ! unmasked in situ density anomaly511 prd(ji,jj) = zn * r1_rho0 - 1._wp ! unmasked in situ density anomaly 512 512 ! 513 513 END_2D … … 525 525 & - rn_nu * zt * zs 526 526 ! 527 prd(ji,jj) = zn * r1_r au0 ! unmasked in situ density anomaly527 prd(ji,jj) = zn * r1_rho0 ! unmasked in situ density anomaly 528 528 ! 529 529 END_2D … … 589 589 zn = ( ( zn3 * zh + zn2 ) * zh + zn1 ) * zh + zn0 590 590 ! 591 pab(ji,jj,jk,jp_tem) = zn * r1_r au0 * ztm591 pab(ji,jj,jk,jp_tem) = zn * r1_rho0 * ztm 592 592 ! 593 593 ! beta … … 610 610 zn = ( ( zn3 * zh + zn2 ) * zh + zn1 ) * zh + zn0 611 611 ! 612 pab(ji,jj,jk,jp_sal) = zn / zs * r1_r au0 * ztm612 pab(ji,jj,jk,jp_sal) = zn / zs * r1_rho0 * ztm 613 613 ! 614 614 END_3D … … 623 623 ! 624 624 zn = rn_a0 * ( 1._wp + rn_lambda1*zt + rn_mu1*zh ) + rn_nu*zs 625 pab(ji,jj,jk,jp_tem) = zn * r1_r au0 * ztm ! alpha625 pab(ji,jj,jk,jp_tem) = zn * r1_rho0 * ztm ! alpha 626 626 ! 627 627 zn = rn_b0 * ( 1._wp - rn_lambda2*zs - rn_mu2*zh ) - rn_nu*zt 628 pab(ji,jj,jk,jp_sal) = zn * r1_r au0 * ztm ! beta628 pab(ji,jj,jk,jp_sal) = zn * r1_rho0 * ztm ! beta 629 629 ! 630 630 END_3D … … 695 695 zn = ( ( zn3 * zh + zn2 ) * zh + zn1 ) * zh + zn0 696 696 ! 697 pab(ji,jj,jp_tem) = zn * r1_r au0697 pab(ji,jj,jp_tem) = zn * r1_rho0 698 698 ! 699 699 ! beta … … 716 716 zn = ( ( zn3 * zh + zn2 ) * zh + zn1 ) * zh + zn0 717 717 ! 718 pab(ji,jj,jp_sal) = zn / zs * r1_r au0718 pab(ji,jj,jp_sal) = zn / zs * r1_rho0 719 719 ! 720 720 ! … … 730 730 ! 731 731 zn = rn_a0 * ( 1._wp + rn_lambda1*zt + rn_mu1*zh ) + rn_nu*zs 732 pab(ji,jj,jp_tem) = zn * r1_r au0 ! alpha732 pab(ji,jj,jp_tem) = zn * r1_rho0 ! alpha 733 733 ! 734 734 zn = rn_b0 * ( 1._wp - rn_lambda2*zs - rn_mu2*zh ) - rn_nu*zt 735 pab(ji,jj,jp_sal) = zn * r1_r au0 ! beta735 pab(ji,jj,jp_sal) = zn * r1_rho0 ! beta 736 736 ! 737 737 END_2D … … 800 800 zn = ( ( zn3 * zh + zn2 ) * zh + zn1 ) * zh + zn0 801 801 ! 802 pab(jp_tem) = zn * r1_r au0802 pab(jp_tem) = zn * r1_rho0 803 803 ! 804 804 ! beta … … 821 821 zn = ( ( zn3 * zh + zn2 ) * zh + zn1 ) * zh + zn0 822 822 ! 823 pab(jp_sal) = zn / zs * r1_r au0823 pab(jp_sal) = zn / zs * r1_rho0 824 824 ! 825 825 ! … … 832 832 ! 833 833 zn = rn_a0 * ( 1._wp + rn_lambda1*zt + rn_mu1*zh ) + rn_nu*zs 834 pab(jp_tem) = zn * r1_r au0 ! alpha834 pab(jp_tem) = zn * r1_rho0 ! alpha 835 835 ! 836 836 zn = rn_b0 * ( 1._wp - rn_lambda2*zs - rn_mu2*zh ) - rn_nu*zt 837 pab(jp_sal) = zn * r1_r au0 ! beta837 pab(jp_sal) = zn * r1_rho0 ! beta 838 838 ! 839 839 CASE DEFAULT … … 1053 1053 !! ** Method : PE is defined analytically as the vertical 1054 1054 !! primitive of EOS times -g integrated between 0 and z>0. 1055 !! pen is the nonlinear bsq-PE anomaly: pen = ( PE - r au0 gz ) / rau0 gz - rd1055 !! pen is the nonlinear bsq-PE anomaly: pen = ( PE - rho0 gz ) / rho0 gz - rd 1056 1056 !! = 1/z * /int_0^z rd dz - rd 1057 1057 !! where rd is the density anomaly (see eos_rhd function) 1058 1058 !! ab_pe are partial derivatives of PE anomaly with respect to T and S: 1059 !! ab_pe(1) = - 1/(r au0 gz) * dPE/dT + drd/dT = - d(pen)/dT1060 !! ab_pe(2) = 1/(r au0 gz) * dPE/dS + drd/dS = d(pen)/dS1059 !! 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 1061 1061 !! 1062 1062 !! ** Action : - pen : PE anomaly given at T-points … … 1104 1104 zn = ( zn2 * zh + zn1 ) * zh + zn0 1105 1105 ! 1106 ppen(ji,jj,jk) = zn * zh * r1_r au0 * ztm1106 ppen(ji,jj,jk) = zn * zh * r1_rho0 * ztm 1107 1107 ! 1108 1108 ! alphaPE non-linear anomaly … … 1119 1119 zn = ( zn2 * zh + zn1 ) * zh + zn0 1120 1120 ! 1121 pab_pe(ji,jj,jk,jp_tem) = zn * zh * r1_r au0 * ztm1121 pab_pe(ji,jj,jk,jp_tem) = zn * zh * r1_rho0 * ztm 1122 1122 ! 1123 1123 ! betaPE non-linear anomaly … … 1134 1134 zn = ( zn2 * zh + zn1 ) * zh + zn0 1135 1135 ! 1136 pab_pe(ji,jj,jk,jp_sal) = zn / zs * zh * r1_r au0 * ztm1136 pab_pe(ji,jj,jk,jp_sal) = zn / zs * zh * r1_rho0 * ztm 1137 1137 ! 1138 1138 END_3D … … 1145 1145 zh = gdept(ji,jj,jk,Kmm) ! depth in meters at t-point 1146 1146 ztm = tmask(ji,jj,jk) ! tmask 1147 zn = 0.5_wp * zh * r1_r au0 * ztm1147 zn = 0.5_wp * zh * r1_rho0 * ztm 1148 1148 ! ! Potential Energy 1149 1149 ppen(ji,jj,jk) = ( rn_a0 * rn_mu1 * zt + rn_b0 * rn_mu2 * zs ) * zn … … 1187 1187 IF(lwm) WRITE( numond, nameos ) 1188 1188 ! 1189 r au0 = 1026._wp !: volumic mass of reference [kg/m3]1189 rho0 = 1026._wp !: volumic mass of reference [kg/m3] 1190 1190 rcp = 3991.86795711963_wp !: heat capacity [J/K] 1191 1191 ! … … 1599 1599 WRITE(numout,*) ' ==>>> use of simplified eos: ' 1600 1600 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] / r au0'1601 WRITE(numout,*) ' + b0*(1+lambda2/2*dT+mu2*Z)*dS - nu*dT*dS] / rho0' 1602 1602 WRITE(numout,*) ' with the following coefficients :' 1603 1603 WRITE(numout,*) ' thermal exp. coef. rn_a0 = ', rn_a0 … … 1618 1618 END SELECT 1619 1619 ! 1620 r au0_rcp = rau0 * rcp1621 r1_r au0 = 1._wp / rau01620 rho0_rcp = rho0 * rcp 1621 r1_rho0 = 1._wp / rho0 1622 1622 r1_rcp = 1._wp / rcp 1623 r1_r au0_rcp = 1._wp / rau0_rcp1623 r1_rho0_rcp = 1._wp / rho0_rcp 1624 1624 ! 1625 1625 IF(lwp) THEN … … 1636 1636 IF(lwp) WRITE(numout,*) 1637 1637 IF(lwp) WRITE(numout,*) ' Associated physical constant' 1638 IF(lwp) WRITE(numout,*) ' volumic mass of reference r au0 = ', rau0 , ' kg/m^3'1639 IF(lwp) WRITE(numout,*) ' 1. / r au0 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' 1640 1640 IF(lwp) WRITE(numout,*) ' ocean specific heat rcp = ', rcp , ' J/Kelvin' 1641 IF(lwp) WRITE(numout,*) ' r au0 * rcp rau0_rcp = ', rau0_rcp1642 IF(lwp) WRITE(numout,*) ' 1. / ( r au0 * rcp ) r1_rau0_rcp = ', r1_rau0_rcp1641 IF(lwp) WRITE(numout,*) ' rho0 * rcp rho0_rcp = ', rho0_rcp 1642 IF(lwp) WRITE(numout,*) ' 1. / ( rho0 * rcp ) r1_rho0_rcp = ', r1_rho0_rcp 1643 1643 ! 1644 1644 END SUBROUTINE eos_init
Note: See TracChangeset
for help on using the changeset viewer.