- Timestamp:
- 2016-11-28T17:04:10+01:00 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2016/dev_INGV_UKMO_2016/NEMOGCM/NEMO/OPA_SRC/TRA/eosbn2.F90
r5541 r7351 2 2 !!============================================================================== 3 3 !! *** MODULE eosbn2 *** 4 !! Ocean diagnostic variable : equation of state - in situ and potential density 5 !! - Brunt-Vaisala frequency 4 !! Equation Of Seawater : in situ density - Brunt-Vaisala frequency 6 5 !!============================================================================== 7 6 !! History : OPA ! 1989-03 (O. Marti) Original code … … 26 25 27 26 !!---------------------------------------------------------------------- 28 !! eos 29 !! eos_insitu 30 !! eos_insitu_pot 31 !! eos_insitu_2d 32 !! bn2 33 !! eos_rab 34 !! eos_rab_3d 35 !! eos_rab_2d 36 !! eos_fzp_2d 37 !! eos_fzp_0d 38 !! eos_init 27 !! eos : generic interface of the equation of state 28 !! eos_insitu : Compute the in situ density 29 !! eos_insitu_pot: Compute the insitu and surface referenced potential volumic mass 30 !! eos_insitu_2d : Compute the in situ density for 2d fields 31 !! bn2 : Compute the Brunt-Vaisala frequency 32 !! eos_rab : generic interface of in situ thermal/haline expansion ratio 33 !! eos_rab_3d : compute in situ thermal/haline expansion ratio 34 !! eos_rab_2d : compute in situ thermal/haline expansion ratio for 2d fields 35 !! eos_fzp_2d : freezing temperature for 2d fields 36 !! eos_fzp_0d : freezing temperature for scalar 37 !! eos_init : set eos parameters (namelist) 39 38 !!---------------------------------------------------------------------- 40 USE dom_oce ! ocean space and time domain 41 USE phycst ! physical constants 39 USE dom_oce ! ocean space and time domain 40 USE phycst ! physical constants 41 USE stopar ! Stochastic T/S fluctuations 42 USE stopts ! Stochastic T/S fluctuations 42 43 ! 43 USE in_out_manager 44 USE lib_mpp 45 USE lib_fortran 46 USE prtctl 47 USE wrk_nemo 44 USE in_out_manager ! I/O manager 45 USE lib_mpp ! MPP library 46 USE lib_fortran ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined) 47 USE prtctl ! Print control 48 USE wrk_nemo ! Memory Allocation 48 49 USE lbclnk ! ocean lateral boundary conditions 49 USE timing ! Timing 50 USE stopar ! Stochastic T/S fluctuations 51 USE stopts ! Stochastic T/S fluctuations 50 USE timing ! Timing 52 51 53 52 IMPLICIT NONE 54 53 PRIVATE 55 54 56 ! 55 ! !! * Interface 57 56 INTERFACE eos 58 57 MODULE PROCEDURE eos_insitu, eos_insitu_pot, eos_insitu_2d … … 75 74 PUBLIC eos_init ! called by istate module 76 75 77 ! !!* Namelist (nameos) * 78 INTEGER , PUBLIC :: nn_eos ! = 0/1/2 type of eq. of state and Brunt-Vaisala frequ. 79 LOGICAL , PUBLIC :: ln_useCT ! determine if eos_pt_from_ct is used to compute sst_m 80 81 ! !!! simplified eos coefficients 82 ! default value: Vallis 2006 76 ! !!** Namelist nameos ** 77 LOGICAL , PUBLIC :: ln_TEOS10 ! determine if eos_pt_from_ct is used to compute sst_m 78 LOGICAL , PUBLIC :: ln_EOS80 ! determine if eos_pt_from_ct is used to compute sst_m 79 LOGICAL , PUBLIC :: ln_SEOS ! determine if eos_pt_from_ct is used to compute sst_m 80 81 ! Parameters 82 LOGICAL , PUBLIC :: l_useCT ! =T in ln_TEOS10=T (i.e. use eos_pt_from_ct to compute sst_m), =F otherwise 83 INTEGER , PUBLIC :: neos ! Identifier for equation of state used 84 85 INTEGER , PARAMETER :: np_teos10 = -1 ! parameter for using TEOS10 86 INTEGER , PARAMETER :: np_eos80 = 0 ! parameter for using EOS80 87 INTEGER , PARAMETER :: np_seos = 1 ! parameter for using Simplified Equation of state 88 89 ! !!! simplified eos coefficients (default value: Vallis 2006) 83 90 REAL(wp) :: rn_a0 = 1.6550e-1_wp ! thermal expansion coeff. 84 91 REAL(wp) :: rn_b0 = 7.6554e-1_wp ! saline expansion coeff. … … 172 179 173 180 !! * Substitutions 174 # include "domzgr_substitute.h90"175 181 # include "vectopt_loop_substitute.h90" 176 182 !!---------------------------------------------------------------------- … … 187 193 !! ** Purpose : Compute the in situ density (ratio rho/rau0) from 188 194 !! potential temperature and salinity using an equation of state 189 !! defined through the namelist parameter nn_eos.195 !! selected in the nameos namelist 190 196 !! 191 197 !! ** Method : prd(t,s,z) = ( rho(t,s,z) - rau0 ) / rau0 … … 197 203 !! rau0 reference density kg/m^3 198 204 !! 199 !! nn_eos = -1: polynomial TEOS-10 equation of state is used for rho(t,s,z).205 !! ln_teos10 : polynomial TEOS-10 equation of state is used for rho(t,s,z). 200 206 !! Check value: rho = 1028.21993233072 kg/m^3 for z=3000 dbar, ct=3 Celcius, sa=35.5 g/kg 201 207 !! 202 !! nn_eos =0 : polynomial EOS-80 equation of state is used for rho(t,s,z).208 !! ln_eos80 : polynomial EOS-80 equation of state is used for rho(t,s,z). 203 209 !! Check value: rho = 1028.35011066567 kg/m^3 for z=3000 dbar, pt=3 Celcius, sp=35.5 psu 204 210 !! 205 !! nn_eos = 1: simplified equation of state211 !! ln_seos : simplified equation of state 206 212 !! prd(t,s,z) = ( -a0*(1+lambda/2*(T-T0)+mu*z+nu*(S-S0))*(T-T0) + b0*(S-S0) ) / rau0 207 213 !! linear case function of T only: rn_alpha<>0, other coefficients = 0 … … 227 233 IF( nn_timing == 1 ) CALL timing_start('eos-insitu') 228 234 ! 229 SELECT CASE( n n_eos )230 ! 231 CASE( -1,0 ) !== polynomial TEOS-10 / EOS-80 ==!235 SELECT CASE( neos ) 236 ! 237 CASE( np_teos10, np_eos80 ) !== polynomial TEOS-10 / EOS-80 ==! 232 238 ! 233 239 DO jk = 1, jpkm1 … … 269 275 END DO 270 276 ! 271 CASE( 1) !== simplified EOS ==!277 CASE( np_seos ) !== simplified EOS ==! 272 278 ! 273 279 DO jk = 1, jpkm1 … … 303 309 !! ** Purpose : Compute the in situ density (ratio rho/rau0) and the 304 310 !! potential volumic mass (Kg/m3) from potential temperature and 305 !! salinity fields using an equation of state defined throughthe306 !! namelist parameter nn_eos.311 !! salinity fields using an equation of state selected in the 312 !! namelist. 307 313 !! 308 314 !! ** Action : - prd , the in situ density (no units) … … 325 331 IF( nn_timing == 1 ) CALL timing_start('eos-pot') 326 332 ! 327 SELECT CASE ( n n_eos )328 ! 329 CASE( -1,0 ) !== polynomial TEOS-10 / EOS-80 ==!333 SELECT CASE ( neos ) 334 ! 335 CASE( np_teos10, np_eos80 ) !== polynomial TEOS-10 / EOS-80 ==! 330 336 ! 331 337 ! Stochastic equation of state … … 433 439 ENDIF 434 440 435 CASE( 1) !== simplified EOS ==!441 CASE( np_seos ) !== simplified EOS ==! 436 442 ! 437 443 DO jk = 1, jpkm1 … … 470 476 !! ** Purpose : Compute the in situ density (ratio rho/rau0) from 471 477 !! potential temperature and salinity using an equation of state 472 !! defined through the namelist parameter nn_eos. * 2D field case478 !! selected in the nameos namelist. * 2D field case 473 479 !! 474 480 !! ** Action : - prd , the in situ density (no units) (unmasked) … … 489 495 prd(:,:) = 0._wp 490 496 ! 491 SELECT CASE( n n_eos )492 ! 493 CASE( -1,0 ) !== polynomial TEOS-10 / EOS-80 ==!497 SELECT CASE( neos ) 498 ! 499 CASE( np_teos10, np_eos80 ) !== polynomial TEOS-10 / EOS-80 ==! 494 500 ! 495 501 DO jj = 1, jpjm1 … … 530 536 CALL lbc_lnk( prd, 'T', 1. ) ! Lateral boundary conditions 531 537 ! 532 CASE( 1) !== simplified EOS ==!538 CASE( np_seos ) !== simplified EOS ==! 533 539 ! 534 540 DO jj = 1, jpjm1 … … 579 585 IF( nn_timing == 1 ) CALL timing_start('rab_3d') 580 586 ! 581 SELECT CASE ( n n_eos )582 ! 583 CASE( -1,0 ) !== polynomial TEOS-10 / EOS-80 ==!587 SELECT CASE ( neos ) 588 ! 589 CASE( np_teos10, np_eos80 ) !== polynomial TEOS-10 / EOS-80 ==! 584 590 ! 585 591 DO jk = 1, jpkm1 … … 587 593 DO ji = 1, jpi 588 594 ! 589 zh = fsdept(ji,jj,jk) * r1_Z0 ! depth595 zh = gdept_n(ji,jj,jk) * r1_Z0 ! depth 590 596 zt = pts (ji,jj,jk,jp_tem) * r1_T0 ! temperature 591 597 zs = SQRT( ABS( pts(ji,jj,jk,jp_sal) + rdeltaS ) * r1_S0 ) ! square root salinity … … 638 644 END DO 639 645 ! 640 CASE( 1) !== simplified EOS ==!646 CASE( np_seos ) !== simplified EOS ==! 641 647 ! 642 648 DO jk = 1, jpkm1 … … 645 651 zt = pts (ji,jj,jk,jp_tem) - 10._wp ! pot. temperature anomaly (t-T0) 646 652 zs = pts (ji,jj,jk,jp_sal) - 35._wp ! abs. salinity anomaly (s-S0) 647 zh = fsdept(ji,jj,jk)! depth in meters at t-point653 zh = gdept_n(ji,jj,jk) ! depth in meters at t-point 648 654 ztm = tmask(ji,jj,jk) ! land/sea bottom mask = surf. mask 649 655 ! … … 660 666 CASE DEFAULT 661 667 IF(lwp) WRITE(numout,cform_err) 662 IF(lwp) WRITE(numout,*) ' bad flag value for n n_eos = ', nn_eos668 IF(lwp) WRITE(numout,*) ' bad flag value for neos = ', neos 663 669 nstop = nstop + 1 664 670 ! … … 671 677 ! 672 678 END SUBROUTINE rab_3d 679 673 680 674 681 SUBROUTINE rab_2d( pts, pdep, pab ) … … 693 700 pab(:,:,:) = 0._wp 694 701 ! 695 SELECT CASE ( n n_eos )696 ! 697 CASE( -1,0 ) !== polynomial TEOS-10 / EOS-80 ==!702 SELECT CASE ( neos ) 703 ! 704 CASE( np_teos10, np_eos80 ) !== polynomial TEOS-10 / EOS-80 ==! 698 705 ! 699 706 DO jj = 1, jpjm1 … … 753 760 CALL lbc_lnk( pab(:,:,jp_sal), 'T', 1. ) 754 761 ! 755 CASE( 1) !== simplified EOS ==!762 CASE( np_seos ) !== simplified EOS ==! 756 763 ! 757 764 DO jj = 1, jpjm1 … … 776 783 CASE DEFAULT 777 784 IF(lwp) WRITE(numout,cform_err) 778 IF(lwp) WRITE(numout,*) ' bad flag value for n n_eos = ', nn_eos785 IF(lwp) WRITE(numout,*) ' bad flag value for neos = ', neos 779 786 nstop = nstop + 1 780 787 ! … … 809 816 pab(:) = 0._wp 810 817 ! 811 SELECT CASE ( n n_eos )812 ! 813 CASE( -1, 0 )!== polynomial TEOS-10 / EOS-80 ==!818 SELECT CASE ( neos ) 819 ! 820 CASE( np_teos10, np_eos80 ) !== polynomial TEOS-10 / EOS-80 ==! 814 821 ! 815 822 ! … … 862 869 ! 863 870 ! 864 CASE( 1) !== simplified EOS ==!871 CASE( np_seos ) !== simplified EOS ==! 865 872 ! 866 873 zt = pts(jp_tem) - 10._wp ! pot. temperature anomaly (t-T0) 867 874 zs = pts(jp_sal) - 35._wp ! abs. salinity anomaly (s-S0) 868 zh = pdep 875 zh = pdep ! depth at the partial step level 869 876 ! 870 877 zn = rn_a0 * ( 1._wp + rn_lambda1*zt + rn_mu1*zh ) + rn_nu*zs … … 876 883 CASE DEFAULT 877 884 IF(lwp) WRITE(numout,cform_err) 878 IF(lwp) WRITE(numout,*) ' bad flag value for n n_eos = ', nn_eos885 IF(lwp) WRITE(numout,*) ' bad flag value for neos = ', neos 879 886 nstop = nstop + 1 880 887 ! … … 913 920 DO jj = 1, jpj ! surface and bottom value set to zero one for all in istate.F90 914 921 DO ji = 1, jpi 915 zrw = ( fsdepw(ji,jj,jk ) - fsdept(ji,jj,jk) ) &916 & / ( fsdept(ji,jj,jk-1) - fsdept(ji,jj,jk) )922 zrw = ( gdepw_n(ji,jj,jk ) - gdept_n(ji,jj,jk) ) & 923 & / ( gdept_n(ji,jj,jk-1) - gdept_n(ji,jj,jk) ) 917 924 ! 918 925 zaw = pab(ji,jj,jk,jp_tem) * (1. - zrw) + pab(ji,jj,jk-1,jp_tem) * zrw … … 921 928 pn2(ji,jj,jk) = grav * ( zaw * ( pts(ji,jj,jk-1,jp_tem) - pts(ji,jj,jk,jp_tem) ) & 922 929 & - zbw * ( pts(ji,jj,jk-1,jp_sal) - pts(ji,jj,jk,jp_sal) ) ) & 923 & / fse3w(ji,jj,jk) * tmask(ji,jj,jk)930 & / e3w_n(ji,jj,jk) * tmask(ji,jj,jk) 924 931 END DO 925 932 END DO … … 1008 1015 REAL(wp), DIMENSION(jpi,jpj), INTENT(out ) :: ptf ! freezing temperature [Celcius] 1009 1016 ! 1010 INTEGER :: ji, jj ! dummy loop indices 1011 REAL(wp) :: zt, zs ! local scalars 1012 !!---------------------------------------------------------------------- 1013 ! 1014 SELECT CASE ( nn_eos ) 1015 ! 1016 CASE ( -1, 1 ) !== CT,SA (TEOS-10 formulation) ==! 1017 ! 1017 INTEGER :: ji, jj ! dummy loop indices 1018 REAL(wp) :: zt, zs, z1_S0 ! local scalars 1019 !!---------------------------------------------------------------------- 1020 ! 1021 SELECT CASE ( neos ) 1022 ! 1023 CASE ( np_teos10, np_seos ) !== CT,SA (TEOS-10 and S-EOS formulations) ==! 1024 ! 1025 z1_S0 = 1._wp / 35.16504_wp 1018 1026 DO jj = 1, jpj 1019 1027 DO ji = 1, jpi 1020 zs= SQRT( ABS( psal(ji,jj) ) * r1_S0 ) ! square root salinity1028 zs= SQRT( ABS( psal(ji,jj) ) * z1_S0 ) ! square root salinity 1021 1029 ptf(ji,jj) = ((((1.46873e-03_wp*zs-9.64972e-03_wp)*zs+2.28348e-02_wp)*zs & 1022 1030 & - 3.12775e-02_wp)*zs+2.07679e-02_wp)*zs-5.87701e-02_wp … … 1027 1035 IF( PRESENT( pdep ) ) ptf(:,:) = ptf(:,:) - 7.53e-4 * pdep(:,:) 1028 1036 ! 1029 CASE ( 0 )!== PT,SP (UNESCO formulation) ==!1037 CASE ( np_eos80 ) !== PT,SP (UNESCO formulation) ==! 1030 1038 ! 1031 1039 ptf(:,:) = ( - 0.0575_wp + 1.710523e-3_wp * SQRT( psal(:,:) ) & … … 1036 1044 CASE DEFAULT 1037 1045 IF(lwp) WRITE(numout,cform_err) 1038 IF(lwp) WRITE(numout,*) ' bad flag value for n n_eos = ', nn_eos1046 IF(lwp) WRITE(numout,*) ' bad flag value for neos = ', neos 1039 1047 nstop = nstop + 1 1040 1048 ! … … 1042 1050 ! 1043 1051 END SUBROUTINE eos_fzp_2d 1052 1044 1053 1045 1054 SUBROUTINE eos_fzp_0d( psal, ptf, pdep ) … … 1062 1071 !!---------------------------------------------------------------------- 1063 1072 ! 1064 SELECT CASE ( n n_eos )1065 ! 1066 CASE ( -1, 1 ) !== CT,SA (TEOS-10 formulation) ==!1067 ! 1068 zs = SQRT( ABS( psal ) * r1_S0) ! square root salinity1073 SELECT CASE ( neos ) 1074 ! 1075 CASE ( np_teos10, np_seos ) !== CT,SA (TEOS-10 and S-EOS formulations) ==! 1076 ! 1077 zs = SQRT( ABS( psal ) / 35.16504_wp ) ! square root salinity 1069 1078 ptf = ((((1.46873e-03_wp*zs-9.64972e-03_wp)*zs+2.28348e-02_wp)*zs & 1070 1079 & - 3.12775e-02_wp)*zs+2.07679e-02_wp)*zs-5.87701e-02_wp … … 1073 1082 IF( PRESENT( pdep ) ) ptf = ptf - 7.53e-4 * pdep 1074 1083 ! 1075 CASE ( 0 )!== PT,SP (UNESCO formulation) ==!1084 CASE ( np_eos80 ) !== PT,SP (UNESCO formulation) ==! 1076 1085 ! 1077 1086 ptf = ( - 0.0575_wp + 1.710523e-3_wp * SQRT( psal ) & … … 1082 1091 CASE DEFAULT 1083 1092 IF(lwp) WRITE(numout,cform_err) 1084 IF(lwp) WRITE(numout,*) ' bad flag value for n n_eos = ', nn_eos1093 IF(lwp) WRITE(numout,*) ' bad flag value for neos = ', neos 1085 1094 nstop = nstop + 1 1086 1095 ! … … 1121 1130 IF( nn_timing == 1 ) CALL timing_start('eos_pen') 1122 1131 ! 1123 SELECT CASE ( n n_eos )1124 ! 1125 CASE( -1,0 ) !== polynomial TEOS-10 / EOS-80 ==!1132 SELECT CASE ( neos ) 1133 ! 1134 CASE( np_teos10, np_eos80 ) !== polynomial TEOS-10 / EOS-80 ==! 1126 1135 ! 1127 1136 DO jk = 1, jpkm1 … … 1129 1138 DO ji = 1, jpi 1130 1139 ! 1131 zh = fsdept(ji,jj,jk) * r1_Z0 ! depth1140 zh = gdept_n(ji,jj,jk) * r1_Z0 ! depth 1132 1141 zt = pts (ji,jj,jk,jp_tem) * r1_T0 ! temperature 1133 1142 zs = SQRT( ABS( pts(ji,jj,jk,jp_sal) + rdeltaS ) * r1_S0 ) ! square root salinity … … 1186 1195 END DO 1187 1196 ! 1188 CASE( 1) !== Vallis (2006) simplified EOS ==!1197 CASE( np_seos ) !== Vallis (2006) simplified EOS ==! 1189 1198 ! 1190 1199 DO jk = 1, jpkm1 … … 1193 1202 zt = pts(ji,jj,jk,jp_tem) - 10._wp ! temperature anomaly (t-T0) 1194 1203 zs = pts (ji,jj,jk,jp_sal) - 35._wp ! abs. salinity anomaly (s-S0) 1195 zh = fsdept(ji,jj,jk)! depth in meters at t-point1204 zh = gdept_n(ji,jj,jk) ! depth in meters at t-point 1196 1205 ztm = tmask(ji,jj,jk) ! tmask 1197 1206 zn = 0.5_wp * zh * r1_rau0 * ztm … … 1208 1217 CASE DEFAULT 1209 1218 IF(lwp) WRITE(numout,cform_err) 1210 IF(lwp) WRITE(numout,*) ' bad flag value for n n_eos = ', nn_eos1219 IF(lwp) WRITE(numout,*) ' bad flag value for neos = ', neos 1211 1220 nstop = nstop + 1 1212 1221 ! … … 1227 1236 !!---------------------------------------------------------------------- 1228 1237 INTEGER :: ios ! local integer 1229 !! 1230 NAMELIST/nameos/ nn_eos, ln_useCT, rn_a0, rn_b0, rn_lambda1, rn_mu1, & 1238 INTEGER :: ioptio ! local integer 1239 !! 1240 NAMELIST/nameos/ ln_TEOS10, ln_EOS80, ln_SEOS, rn_a0, rn_b0, rn_lambda1, rn_mu1, & 1231 1241 & rn_lambda2, rn_mu2, rn_nu 1232 1242 !!---------------------------------------------------------------------- … … 1248 1258 WRITE(numout,*) 'eos_init : equation of state' 1249 1259 WRITE(numout,*) '~~~~~~~~' 1250 WRITE(numout,*) ' Namelist nameos : set eos parameters' 1251 WRITE(numout,*) ' flag for eq. of state and N^2 nn_eos = ', nn_eos 1252 IF( ln_useCT ) THEN 1253 WRITE(numout,*) ' model uses Conservative Temperature' 1254 WRITE(numout,*) ' Important: model must be initialized with CT and SA fields' 1255 ELSE 1256 WRITE(numout,*) ' model does not use Conservative Temperature' 1257 ENDIF 1260 WRITE(numout,*) ' Namelist nameos : Chosen the Equation Of Seawater (EOS)' 1261 WRITE(numout,*) ' TEOS-10 : rho=F(Conservative Temperature, Absolute Salinity, depth) ln_TEOS10 = ', ln_TEOS10 1262 WRITE(numout,*) ' EOS-80 : rho=F(Potential Temperature, Practical Salinity, depth) ln_EOS80 = ', ln_EOS80 1263 WRITE(numout,*) ' S-EOS : rho=F(Conservative Temperature, Absolute Salinity, depth) ln_SEOS = ', ln_SEOS 1258 1264 ENDIF 1259 ! 1260 SELECT CASE( nn_eos ) ! check option 1261 ! 1262 CASE( -1 ) !== polynomial TEOS-10 ==! 1265 1266 ! Check options for equation of state & set neos based on logical flags 1267 ioptio = 0 1268 IF( ln_TEOS10 ) THEN ; ioptio = ioptio+1 ; neos = np_teos10 ; ENDIF 1269 IF( ln_EOS80 ) THEN ; ioptio = ioptio+1 ; neos = np_eos80 ; ENDIF 1270 IF( ln_SEOS ) THEN ; ioptio = ioptio+1 ; neos = np_seos ; ENDIF 1271 IF( ioptio /= 1 ) CALL ctl_stop("Exactly one equation of state option must be selected") 1272 ! 1273 SELECT CASE( neos ) ! check option 1274 ! 1275 CASE( np_teos10 ) !== polynomial TEOS-10 ==! 1263 1276 IF(lwp) WRITE(numout,*) 1264 1277 IF(lwp) WRITE(numout,*) ' use of TEOS-10 equation of state (cons. temp. and abs. salinity)' 1278 ! 1279 l_useCT = .TRUE. ! model temperature is Conservative temperature 1265 1280 ! 1266 1281 rdeltaS = 32._wp … … 1449 1464 BPE002 = 1.7269476440e-04_wp 1450 1465 ! 1451 CASE( 0 ) !== polynomial EOS-80 formulation ==!1466 CASE( np_eos80 ) !== polynomial EOS-80 formulation ==! 1452 1467 ! 1453 1468 IF(lwp) WRITE(numout,*) 1454 1469 IF(lwp) WRITE(numout,*) ' use of EOS-80 equation of state (pot. temp. and pract. salinity)' 1455 1470 ! 1471 l_useCT = .FALSE. ! model temperature is Potential temperature 1456 1472 rdeltaS = 20._wp 1457 1473 r1_S0 = 1._wp/40._wp … … 1639 1655 BPE002 = 5.3661089288e-04_wp 1640 1656 ! 1641 CASE( 1) !== Simplified EOS ==!1657 CASE( np_seos ) !== Simplified EOS ==! 1642 1658 IF(lwp) THEN 1643 1659 WRITE(numout,*) … … 1654 1670 WRITE(numout,*) ' Caution: rn_beta0=0 incompatible with ddm parameterization ' 1655 1671 ENDIF 1656 ! 1657 CASE DEFAULT !== ERROR in nn_eos ==! 1658 WRITE(ctmp1,*) ' bad flag value for nn_eos = ', nn_eos 1672 l_useCT = .TRUE. ! Use conservative temperature 1673 ! 1674 CASE DEFAULT !== ERROR in neos ==! 1675 WRITE(ctmp1,*) ' bad flag value for neos = ', neos, '. You should never see this error' 1659 1676 CALL ctl_stop( ctmp1 ) 1660 1677 ! … … 1665 1682 r1_rcp = 1._wp / rcp 1666 1683 r1_rau0_rcp = 1._wp / rau0_rcp 1684 ! 1685 IF(lwp) THEN 1686 IF( l_useCT ) THEN 1687 WRITE(numout,*) ' model uses Conservative Temperature' 1688 WRITE(numout,*) ' Important: model must be initialized with CT and SA fields' 1689 ELSE 1690 WRITE(numout,*) ' model does not use Conservative Temperature' 1691 ENDIF 1692 ENDIF 1667 1693 ! 1668 1694 IF(lwp) WRITE(numout,*)
Note: See TracChangeset
for help on using the changeset viewer.