- Timestamp:
- 2019-12-05T18:41:39+01:00 (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2019/UKMO_MERGE_2019/tests/ISOMIP+/MY_SRC/eosbn2.F90
r11889 r12077 29 29 !! eos_insitu_pot: Compute the insitu and surface referenced potential volumic mass 30 30 !! 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 32 33 !! eos_rab : generic interface of in situ thermal/haline expansion ratio 33 34 !! eos_rab_3d : compute in situ thermal/haline expansion ratio … … 74 75 75 76 ! !!** Namelist nameos ** 76 LOGICAL , PUBLIC :: ln_TEOS10 ! determine if eos_pt_from_ct is used to compute sst_m77 LOGICAL , PUBLIC :: ln_EOS80 ! determine if eos_pt_from_ct is used to compute sst_m78 LOGICAL , PUBLIC :: ln_SEOS ! determine if eos_pt_from_ct is used to compute sst_m77 LOGICAL , PUBLIC :: ln_TEOS10 78 LOGICAL , PUBLIC :: ln_EOS80 79 LOGICAL , PUBLIC :: ln_SEOS 79 80 LOGICAL , PUBLIC :: ln_LEOS ! determine if linear eos is used 80 81 … … 624 625 625 626 626 SUBROUTINE rab_3d( pts, pab )627 SUBROUTINE rab_3d( pts, pab, Kmm ) 627 628 !!---------------------------------------------------------------------- 628 629 !! *** ROUTINE rab_3d *** … … 634 635 !! ** Action : - pab : thermal/haline expansion ratio at T-points 635 636 !!---------------------------------------------------------------------- 637 INTEGER , INTENT(in ) :: Kmm ! time level index 636 638 REAL(wp), DIMENSION(jpi,jpj,jpk,jpts), INTENT(in ) :: pts ! pot. temperature & salinity 637 639 REAL(wp), DIMENSION(jpi,jpj,jpk,jpts), INTENT( out) :: pab ! thermal/haline expansion ratio … … 652 654 DO ji = 1, jpi 653 655 ! 654 zh = gdept _n(ji,jj,jk) * r1_Z0 ! depth656 zh = gdept(ji,jj,jk,Kmm) * r1_Z0 ! depth 655 657 zt = pts (ji,jj,jk,jp_tem) * r1_T0 ! temperature 656 658 zs = SQRT( ABS( pts(ji,jj,jk,jp_sal) + rdeltaS ) * r1_S0 ) ! square root salinity … … 710 712 zt = pts (ji,jj,jk,jp_tem) - 10._wp ! pot. temperature anomaly (t-T0) 711 713 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-point714 zh = gdept(ji,jj,jk,Kmm) ! depth in meters at t-point 713 715 ztm = tmask(ji,jj,jk) ! land/sea bottom mask = surf. mask 714 716 ! … … 730 732 zt = pts (ji,jj,jk,jp_tem) - (-1._wp) 731 733 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-point734 zh = gdept(ji,jj,jk,Kmm) ! depth in meters at t-point 733 735 ztm = tmask(ji,jj,jk) ! land/sea bottom mask = surf. mask 734 736 ! … … 757 759 758 760 759 SUBROUTINE rab_2d( pts, pdep, pab )761 SUBROUTINE rab_2d( pts, pdep, pab, Kmm ) 760 762 !!---------------------------------------------------------------------- 761 763 !! *** ROUTINE rab_2d *** … … 765 767 !! ** Action : - pab : thermal/haline expansion ratio at T-points 766 768 !!---------------------------------------------------------------------- 769 INTEGER , INTENT(in ) :: Kmm ! time level index 767 770 REAL(wp), DIMENSION(jpi,jpj,jpts) , INTENT(in ) :: pts ! pot. temperature & salinity 768 771 REAL(wp), DIMENSION(jpi,jpj) , INTENT(in ) :: pdep ! depth [m] … … 891 894 892 895 893 SUBROUTINE rab_0d( pts, pdep, pab )896 SUBROUTINE rab_0d( pts, pdep, pab, Kmm ) 894 897 !!---------------------------------------------------------------------- 895 898 !! *** ROUTINE rab_0d *** … … 899 902 !! ** Action : - pab : thermal/haline expansion ratio at T-points 900 903 !!---------------------------------------------------------------------- 904 INTEGER , INTENT(in ) :: Kmm ! time level index 901 905 REAL(wp), DIMENSION(jpts) , INTENT(in ) :: pts ! pot. temperature & salinity 902 906 REAL(wp), INTENT(in ) :: pdep ! depth [m] … … 999 1003 1000 1004 1001 SUBROUTINE bn2( pts, pab, pn2 )1005 SUBROUTINE bn2( pts, pab, pn2, Kmm ) 1002 1006 !!---------------------------------------------------------------------- 1003 1007 !! *** ROUTINE bn2 *** … … 1013 1017 !! 1014 1018 !!---------------------------------------------------------------------- 1019 INTEGER , INTENT(in ) :: Kmm ! time level index 1015 1020 REAL(wp), DIMENSION(jpi,jpj,jpk,jpts), INTENT(in ) :: pts ! pot. temperature and salinity [Celsius,psu] 1016 1021 REAL(wp), DIMENSION(jpi,jpj,jpk,jpts), INTENT(in ) :: pab ! thermal/haline expansion coef. [Celsius-1,psu-1] … … 1026 1031 DO jj = 1, jpj ! surface and bottom value set to zero one for all in istate.F90 1027 1032 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) ) 1030 1035 ! 1031 1036 zaw = pab(ji,jj,jk,jp_tem) * (1. - zrw) + pab(ji,jj,jk-1,jp_tem) * zrw … … 1034 1039 pn2(ji,jj,jk) = grav * ( zaw * ( pts(ji,jj,jk-1,jp_tem) - pts(ji,jj,jk,jp_tem) ) & 1035 1040 & - 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) 1037 1042 END DO 1038 1043 END DO … … 1203 1208 1204 1209 1205 SUBROUTINE eos_pen( pts, pab_pe, ppen )1210 SUBROUTINE eos_pen( pts, pab_pe, ppen, Kmm ) 1206 1211 !!---------------------------------------------------------------------- 1207 1212 !! *** ROUTINE eos_pen *** … … 1223 1228 !! pab_pe(:,:,:,jp_sal) is beta_pe 1224 1229 !!---------------------------------------------------------------------- 1230 INTEGER , INTENT(in ) :: Kmm ! time level index 1225 1231 REAL(wp), DIMENSION(jpi,jpj,jpk,jpts), INTENT(in ) :: pts ! pot. temperature & salinity 1226 1232 REAL(wp), DIMENSION(jpi,jpj,jpk,jpts), INTENT( out) :: pab_pe ! alpha_pe and beta_pe … … 1242 1248 DO ji = 1, jpi 1243 1249 ! 1244 zh = gdept _n(ji,jj,jk) * r1_Z0 ! depth1250 zh = gdept(ji,jj,jk,Kmm) * r1_Z0 ! depth 1245 1251 zt = pts (ji,jj,jk,jp_tem) * r1_T0 ! temperature 1246 1252 zs = SQRT( ABS( pts(ji,jj,jk,jp_sal) + rdeltaS ) * r1_S0 ) ! square root salinity … … 1306 1312 zt = pts(ji,jj,jk,jp_tem) - 10._wp ! temperature anomaly (t-T0) 1307 1313 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-point1314 zh = gdept(ji,jj,jk,Kmm) ! depth in meters at t-point 1309 1315 ztm = tmask(ji,jj,jk) ! tmask 1310 1316 zn = 0.5_wp * zh * r1_rau0 * ztm … … 1326 1332 zt = pts(ji,jj,jk,jp_tem) - (-1._wp) ! temperature anomaly (t-T0) 1327 1333 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-point1334 zh = gdept(ji,jj,jk,Kmm) ! depth in meters at t-point 1329 1335 ztm = tmask(ji,jj,jk) ! tmask 1330 1336 zn = 0.5_wp * zh * r1_rau0 * ztm … … 1368 1374 REWIND( numnam_ref ) ! Namelist nameos in reference namelist : equation of state 1369 1375 READ ( numnam_ref, nameos, IOSTAT = ios, ERR = 901 ) 1370 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nameos in reference namelist' , lwp)1376 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nameos in reference namelist' ) 1371 1377 ! 1372 1378 REWIND( numnam_cfg ) ! Namelist nameos in configuration namelist : equation of state 1373 1379 READ ( numnam_cfg, nameos, IOSTAT = ios, ERR = 902 ) 1374 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'nameos in configuration namelist' , lwp)1380 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'nameos in configuration namelist' ) 1375 1381 IF(lwm) WRITE( numond, nameos ) 1376 1382 ! … … 1782 1788 ! 1783 1789 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 1784 1793 IF(lwp) THEN 1785 1794 WRITE(numout,*)
Note: See TracChangeset
for help on using the changeset viewer.