- Timestamp:
- 2016-07-19T10:38:35+02:00 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/NERC/dev_r5549_BDY_ZEROGRAD/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_mle.F90
r5215 r6808 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 … … 49 49 50 50 !! * Substitutions 51 # include "domzgr_substitute.h90"52 51 # include "vectopt_loop_substitute.h90" 53 52 !!---------------------------------------------------------------------- 54 !! NEMO/OPA 4.0 , NEMO Consortium (201 1)53 !! NEMO/OPA 4.0 , NEMO Consortium (2015) 55 54 !! $Id$ 56 55 !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt) … … 80 79 !! Fox-Kemper and Ferrari, JPO, 38, 1166-1179, 2008 81 80 !!---------------------------------------------------------------------- 82 !83 81 INTEGER , INTENT(in ) :: kt ! ocean time-step index 84 82 INTEGER , INTENT(in ) :: kit000 ! first time step index … … 93 91 REAL(wp) :: zcvw, zmvw ! - - 94 92 REAL(wp) :: zc ! - - 95 93 ! 96 94 INTEGER :: ii, ij, ik ! local integers 97 95 INTEGER, DIMENSION(3) :: ilocu ! … … 101 99 INTEGER, POINTER, DIMENSION(:,:) :: inml_mle 102 100 !!---------------------------------------------------------------------- 103 101 ! 104 102 IF( nn_timing == 1 ) CALL timing_start('tra_adv_mle') 105 103 CALL wrk_alloc( jpi, jpj, zpsim_u, zpsim_v, zmld, zbm, zhu, zhv, zn2, zLf_NH, zLf_MH) … … 126 124 DO jj = 1, jpj 127 125 DO ji = 1, jpi 128 zc = fse3t(ji,jj,jk) * REAL( MIN( MAX( 0, inml_mle(ji,jj)-jk ) , 1 ) ) ! zc being 0 outside the ML t-points126 zc = e3t_n(ji,jj,jk) * REAL( MIN( MAX( 0, inml_mle(ji,jj)-jk ) , 1 ) ) ! zc being 0 outside the ML t-points 129 127 zmld(ji,jj) = zmld(ji,jj) + zc 130 128 zbm (ji,jj) = zbm (ji,jj) + zc * (rau0 - rhop(ji,jj,jk) ) * r1_rau0 … … 158 156 END SELECT 159 157 ! ! convert density into buoyancy 160 zbm(:,:) = + grav * zbm(:,:) / MAX( fse3t(:,:,1), zmld(:,:) )158 zbm(:,:) = + grav * zbm(:,:) / MAX( e3t_n(:,:,1), zmld(:,:) ) 161 159 ! 162 160 ! … … 171 169 DO jj = 1, jpjm1 172 170 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) ) ) )171 zpsim_u(ji,jj) = rn_ce * zhu(ji,jj) * zhu(ji,jj) * e2_e1u(ji,jj) & 172 & * ( zbm(ji+1,jj) - zbm(ji,jj) ) * MIN( 111.e3_wp , e1u(ji,jj) ) & 173 & / ( MAX( rn_lf * rfu(ji,jj) , SQRT( rb_c * zhu(ji,jj) ) ) ) 176 174 ! 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) ) ) )175 zpsim_v(ji,jj) = rn_ce * zhv(ji,jj) * zhv(ji,jj) * e1_e2v(ji,jj) & 176 & * ( zbm(ji,jj+1) - zbm(ji,jj) ) * MIN( 111.e3_wp , e2v(ji,jj) ) & 177 & / ( MAX( rn_lf * rfv(ji,jj) , SQRT( rb_c * zhv(ji,jj) ) ) ) 180 178 END DO 181 179 END DO … … 184 182 DO jj = 1, jpjm1 185 183 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)&184 zpsim_u(ji,jj) = rc_f * zhu(ji,jj) * zhu(ji,jj) * e2_e1u(ji,jj) & 187 185 & * ( zbm(ji+1,jj) - zbm(ji,jj) ) * MIN( 111.e3_wp , e1u(ji,jj) ) 188 186 ! 189 zpsim_v(ji,jj) = rc_f * zhv(ji,jj) * zhv(ji,jj) * e1 v(ji,jj) / e2v(ji,jj)&187 zpsim_v(ji,jj) = rc_f * zhv(ji,jj) * zhv(ji,jj) * e1_e2v(ji,jj) & 190 188 & * ( zbm(ji,jj+1) - zbm(ji,jj) ) * MIN( 111.e3_wp , e2v(ji,jj) ) 191 189 END DO … … 216 214 DO jj = 1, jpjm1 217 215 DO ji = 1, fs_jpim1 ! vector opt. 218 zcuw = 1._wp - ( fsdepw(ji+1,jj,jk) + fsdepw(ji,jj,jk) ) * zhu(ji,jj)219 zcvw = 1._wp - ( fsdepw(ji,jj+1,jk) + fsdepw(ji,jj,jk) ) * zhv(ji,jj)216 zcuw = 1._wp - ( gdepw_n(ji+1,jj,jk) + gdepw_n(ji,jj,jk) ) * zhu(ji,jj) 217 zcvw = 1._wp - ( gdepw_n(ji,jj+1,jk) + gdepw_n(ji,jj,jk) ) * zhv(ji,jj) 220 218 zcuw = zcuw * zcuw 221 219 zcvw = zcvw * zcvw … … 252 250 ! divide by cross distance to give streamfunction with dimensions m^2/s 253 251 DO jk = 1, ikmax+1 254 zpsi_uw(:,:,jk) = zpsi_uw(:,:,jk) /e2u(:,:)255 zpsi_vw(:,:,jk) = zpsi_vw(:,:,jk) /e1v(:,:)252 zpsi_uw(:,:,jk) = zpsi_uw(:,:,jk) * r1_e2u(:,:) 253 zpsi_vw(:,:,jk) = zpsi_vw(:,:,jk) * r1_e1v(:,:) 256 254 END DO 257 255 CALL iom_put( "psiu_mle", zpsi_uw ) ! i-mle streamfunction … … 281 279 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 280 !!---------------------------------------------------------------------- 283 284 281 285 282 REWIND( numnam_ref ) ! Namelist namtra_adv_mle in reference namelist : Tracer advection scheme
Note: See TracChangeset
for help on using the changeset viewer.