Changeset 5951 for branches/2014/dev_r4650_UKMO14.4_OBS_GENERAL_VINTERP/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_mle.F90
- Timestamp:
- 2015-11-30T12:48:01+01:00 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2014/dev_r4650_UKMO14.4_OBS_GENERAL_VINTERP/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_mle.F90
r5950 r5951 28 28 PUBLIC tra_adv_mle_init ! routine called in traadv.F90 29 29 30 ! 30 ! !!* namelist namtra_adv_mle * 31 31 LOGICAL, PUBLIC :: ln_mle ! flag to activate the Mixed Layer Eddy (MLE) parameterisation 32 32 INTEGER :: nn_mle ! MLE type: =0 standard Fox-Kemper ; =1 new formulation … … 34 34 INTEGER :: nn_conv ! =1 no MLE in case of convection ; =0 always MLE 35 35 REAL(wp) :: rn_ce ! MLE coefficient 36 ! 36 ! ! parameters used in nn_mle = 0 case 37 37 REAL(wp) :: rn_lf ! typical scale of mixed layer front 38 REAL(wp) :: rn_time ! time scale for mixing momentum across the mixed layer39 ! 40 REAL(wp) :: rn_lat 41 REAL(wp) :: rn_rho_c_mle ! Density criterion for definition of MLD used by FK38 REAL(wp) :: rn_time ! time scale for mixing momentum across the mixed layer 39 ! ! parameters used in nn_mle = 1 case 40 REAL(wp) :: rn_lat ! reference latitude for a 5 km scale of ML front 41 REAL(wp) :: rn_rho_c_mle ! Density criterion for definition of MLD used by FK 42 42 43 43 REAL(wp) :: r5_21 = 5.e0 / 21.e0 ! factor used in mle streamfunction computation … … 52 52 # include "vectopt_loop_substitute.h90" 53 53 !!---------------------------------------------------------------------- 54 !! NEMO/OPA 4.0 , NEMO Consortium (201 1)54 !! NEMO/OPA 4.0 , NEMO Consortium (2015) 55 55 !! $Id$ 56 56 !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt) … … 80 80 !! Fox-Kemper and Ferrari, JPO, 38, 1166-1179, 2008 81 81 !!---------------------------------------------------------------------- 82 !83 82 INTEGER , INTENT(in ) :: kt ! ocean time-step index 84 83 INTEGER , INTENT(in ) :: kit000 ! first time step index … … 93 92 REAL(wp) :: zcvw, zmvw ! - - 94 93 REAL(wp) :: zc ! - - 95 94 ! 96 95 INTEGER :: ii, ij, ik ! local integers 97 96 INTEGER, DIMENSION(3) :: ilocu ! … … 101 100 INTEGER, POINTER, DIMENSION(:,:) :: inml_mle 102 101 !!---------------------------------------------------------------------- 103 102 ! 104 103 IF( nn_timing == 1 ) CALL timing_start('tra_adv_mle') 105 104 CALL wrk_alloc( jpi, jpj, zpsim_u, zpsim_v, zmld, zbm, zhu, zhv, zn2, zLf_NH, zLf_MH) … … 171 170 DO jj = 1, jpjm1 172 171 DO ji = 1, fs_jpim1 ! vector opt. 173 zpsim_u(ji,jj) = rn_ce * zhu(ji,jj) * zhu(ji,jj) * e2 u(ji,jj) &174 & * ( zbm(ji+1,jj) - zbm(ji,jj) ) * MIN( 111.e3_wp , e1u(ji,jj)) &175 & / ( e1u(ji,jj) *MAX( rn_lf * rfu(ji,jj) , SQRT( rb_c * zhu(ji,jj) ) ) )172 zpsim_u(ji,jj) = rn_ce * zhu(ji,jj) * zhu(ji,jj) * e2_e1u(ji,jj) & 173 & * ( zbm(ji+1,jj) - zbm(ji,jj) ) * MIN( 111.e3_wp , e1u(ji,jj) ) & 174 & / ( MAX( rn_lf * rfu(ji,jj) , SQRT( rb_c * zhu(ji,jj) ) ) ) 176 175 ! 177 zpsim_v(ji,jj) = rn_ce * zhv(ji,jj) * zhv(ji,jj) * e1 v(ji,jj) &178 & * ( zbm(ji,jj+1) - zbm(ji,jj) ) * MIN( 111.e3_wp , e2v(ji,jj)) &179 & / ( e2v(ji,jj) *MAX( rn_lf * rfv(ji,jj) , SQRT( rb_c * zhv(ji,jj) ) ) )176 zpsim_v(ji,jj) = rn_ce * zhv(ji,jj) * zhv(ji,jj) * e1_e2v(ji,jj) & 177 & * ( zbm(ji,jj+1) - zbm(ji,jj) ) * MIN( 111.e3_wp , e2v(ji,jj) ) & 178 & / ( MAX( rn_lf * rfv(ji,jj) , SQRT( rb_c * zhv(ji,jj) ) ) ) 180 179 END DO 181 180 END DO … … 184 183 DO jj = 1, jpjm1 185 184 DO ji = 1, fs_jpim1 ! vector opt. 186 zpsim_u(ji,jj) = rc_f * zhu(ji,jj) * zhu(ji,jj) * e2 u(ji,jj) / e1u(ji,jj)&185 zpsim_u(ji,jj) = rc_f * zhu(ji,jj) * zhu(ji,jj) * e2_e1u(ji,jj) & 187 186 & * ( zbm(ji+1,jj) - zbm(ji,jj) ) * MIN( 111.e3_wp , e1u(ji,jj) ) 188 187 ! 189 zpsim_v(ji,jj) = rc_f * zhv(ji,jj) * zhv(ji,jj) * e1 v(ji,jj) / e2v(ji,jj)&188 zpsim_v(ji,jj) = rc_f * zhv(ji,jj) * zhv(ji,jj) * e1_e2v(ji,jj) & 190 189 & * ( zbm(ji,jj+1) - zbm(ji,jj) ) * MIN( 111.e3_wp , e2v(ji,jj) ) 191 190 END DO … … 252 251 ! divide by cross distance to give streamfunction with dimensions m^2/s 253 252 DO jk = 1, ikmax+1 254 zpsi_uw(:,:,jk) = zpsi_uw(:,:,jk) /e2u(:,:)255 zpsi_vw(:,:,jk) = zpsi_vw(:,:,jk) /e1v(:,:)253 zpsi_uw(:,:,jk) = zpsi_uw(:,:,jk) * r1_e2u(:,:) 254 zpsi_vw(:,:,jk) = zpsi_vw(:,:,jk) * r1_e1v(:,:) 256 255 END DO 257 256 CALL iom_put( "psiu_mle", zpsi_uw ) ! i-mle streamfunction … … 281 280 NAMELIST/namtra_adv_mle/ ln_mle , nn_mle, rn_ce, rn_lf, rn_time, rn_lat, nn_mld_uv, nn_conv, rn_rho_c_mle 282 281 !!---------------------------------------------------------------------- 283 284 282 285 283 REWIND( numnam_ref ) ! Namelist namtra_adv_mle in reference namelist : Tracer advection scheme
Note: See TracChangeset
for help on using the changeset viewer.