Changeset 6140 for trunk/NEMOGCM/NEMO/OPA_SRC/TRA/eosbn2.F90
- Timestamp:
- 2015-12-21T12:35:23+01:00 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMOGCM/NEMO/OPA_SRC/TRA/eosbn2.F90
r5541 r6140 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)*76 ! !!** Namelist nameos ** 78 77 INTEGER , PUBLIC :: nn_eos ! = 0/1/2 type of eq. of state and Brunt-Vaisala frequ. 79 78 LOGICAL , PUBLIC :: ln_useCT ! determine if eos_pt_from_ct is used to compute sst_m 80 79 81 ! !!! simplified eos coefficients 82 ! default value: Vallis 2006 80 ! !!! simplified eos coefficients (default value: Vallis 2006) 83 81 REAL(wp) :: rn_a0 = 1.6550e-1_wp ! thermal expansion coeff. 84 82 REAL(wp) :: rn_b0 = 7.6554e-1_wp ! saline expansion coeff. … … 172 170 173 171 !! * Substitutions 174 # include "domzgr_substitute.h90"175 172 # include "vectopt_loop_substitute.h90" 176 173 !!---------------------------------------------------------------------- … … 587 584 DO ji = 1, jpi 588 585 ! 589 zh = fsdept(ji,jj,jk) * r1_Z0 ! depth586 zh = gdept_n(ji,jj,jk) * r1_Z0 ! depth 590 587 zt = pts (ji,jj,jk,jp_tem) * r1_T0 ! temperature 591 588 zs = SQRT( ABS( pts(ji,jj,jk,jp_sal) + rdeltaS ) * r1_S0 ) ! square root salinity … … 645 642 zt = pts (ji,jj,jk,jp_tem) - 10._wp ! pot. temperature anomaly (t-T0) 646 643 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-point644 zh = gdept_n(ji,jj,jk) ! depth in meters at t-point 648 645 ztm = tmask(ji,jj,jk) ! land/sea bottom mask = surf. mask 649 646 ! … … 913 910 DO jj = 1, jpj ! surface and bottom value set to zero one for all in istate.F90 914 911 DO ji = 1, jpi 915 zrw = ( fsdepw(ji,jj,jk ) - fsdept(ji,jj,jk) ) &916 & / ( fsdept(ji,jj,jk-1) - fsdept(ji,jj,jk) )912 zrw = ( gdepw_n(ji,jj,jk ) - gdept_n(ji,jj,jk) ) & 913 & / ( gdept_n(ji,jj,jk-1) - gdept_n(ji,jj,jk) ) 917 914 ! 918 915 zaw = pab(ji,jj,jk,jp_tem) * (1. - zrw) + pab(ji,jj,jk-1,jp_tem) * zrw … … 921 918 pn2(ji,jj,jk) = grav * ( zaw * ( pts(ji,jj,jk-1,jp_tem) - pts(ji,jj,jk,jp_tem) ) & 922 919 & - zbw * ( pts(ji,jj,jk-1,jp_sal) - pts(ji,jj,jk,jp_sal) ) ) & 923 & / fse3w(ji,jj,jk) * tmask(ji,jj,jk)920 & / e3w_n(ji,jj,jk) * tmask(ji,jj,jk) 924 921 END DO 925 922 END DO … … 1129 1126 DO ji = 1, jpi 1130 1127 ! 1131 zh = fsdept(ji,jj,jk) * r1_Z0 ! depth1128 zh = gdept_n(ji,jj,jk) * r1_Z0 ! depth 1132 1129 zt = pts (ji,jj,jk,jp_tem) * r1_T0 ! temperature 1133 1130 zs = SQRT( ABS( pts(ji,jj,jk,jp_sal) + rdeltaS ) * r1_S0 ) ! square root salinity … … 1193 1190 zt = pts(ji,jj,jk,jp_tem) - 10._wp ! temperature anomaly (t-T0) 1194 1191 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-point1192 zh = gdept_n(ji,jj,jk) ! depth in meters at t-point 1196 1193 ztm = tmask(ji,jj,jk) ! tmask 1197 1194 zn = 0.5_wp * zh * r1_rau0 * ztm
Note: See TracChangeset
for help on using the changeset viewer.