- Timestamp:
- 2020-09-14T17:40:34+02:00 (4 years ago)
- Location:
- NEMO/branches/2019/dev_r11351_fldread_with_XIOS
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2019/dev_r11351_fldread_with_XIOS
- Property svn:externals
-
old new 3 3 ^/utils/build/mk@HEAD mk 4 4 ^/utils/tools@HEAD tools 5 ^/vendors/AGRIF/dev @HEADext/AGRIF5 ^/vendors/AGRIF/dev_r12970_AGRIF_CMEMS ext/AGRIF 6 6 ^/vendors/FCM@HEAD ext/FCM 7 7 ^/vendors/IOIPSL@HEAD ext/IOIPSL 8 9 # SETTE 10 ^/utils/CI/sette@13382 sette
-
- Property svn:externals
-
NEMO/branches/2019/dev_r11351_fldread_with_XIOS/src/OCE/ZDF/zdfric.F90
r11405 r13463 50 50 51 51 !! * Substitutions 52 # include " vectopt_loop_substitute.h90"52 # include "do_loop_substitute.h90" 53 53 !!---------------------------------------------------------------------- 54 54 !! NEMO/OCE 4.0 , NEMO Consortium (2018) … … 78 78 !!---------------------------------------------------------------------- 79 79 ! 80 REWIND( numnam_ref ) ! Namelist namzdf_ric in reference namelist : Vertical diffusion Kz depends on Richardson number81 80 READ ( numnam_ref, namzdf_ric, IOSTAT = ios, ERR = 901) 82 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namzdf_ric in reference namelist', lwp ) 83 84 REWIND( numnam_cfg ) ! Namelist namzdf_ric in configuration namelist : Vertical diffusion Kz depends on Richardson number 81 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namzdf_ric in reference namelist' ) 82 85 83 READ ( numnam_cfg, namzdf_ric, IOSTAT = ios, ERR = 902 ) 86 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namzdf_ric in configuration namelist' , lwp)84 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namzdf_ric in configuration namelist' ) 87 85 IF(lwm) WRITE ( numond, namzdf_ric ) 88 86 ! … … 112 110 113 111 114 SUBROUTINE zdf_ric( kt, pdept, p_sh2, p_avm, p_avt )112 SUBROUTINE zdf_ric( kt, Kmm, p_sh2, p_avm, p_avt ) 115 113 !!---------------------------------------------------------------------- 116 114 !! *** ROUTINE zdfric *** … … 125 123 !! avt = avm0 / (1 + rn_alp*ri) 126 124 !! with ri = N^2 / dz(u)**2 127 !! = e3w**2 * rn2/[ mi( dk(u b) )+mj( dk(vb) ) ]125 !! = e3w**2 * rn2/[ mi( dk(uu(:,:,:,Kbb)) )+mj( dk(vv(:,:,:,Kbb)) ) ] 128 126 !! avm0= rn_avmri / (1 + rn_alp*Ri)**nn_ric 129 127 !! where ri is the before local Richardson number, … … 152 150 !!---------------------------------------------------------------------- 153 151 INTEGER , INTENT(in ) :: kt ! ocean time-step 154 REAL(wp), DIMENSION(:,:,:), INTENT(in ) :: pdept ! depth of t-point [m]152 INTEGER , INTENT(in ) :: Kmm ! ocean time level index 155 153 REAL(wp), DIMENSION(:,:,:), INTENT(in ) :: p_sh2 ! shear production term 156 154 REAL(wp), DIMENSION(:,:,:), INTENT(inout) :: p_avm, p_avt ! momentum and tracer Kz (w-points) … … 162 160 ! 163 161 ! !== avm and avt = F(Richardson number) ==! 164 DO jk = 2, jpkm1 165 DO jj = 1, jpjm1 166 DO ji = 1, jpim1 ! coefficient = F(richardson number) (avm-weighted Ri) 167 zcfRi = 1._wp / ( 1._wp + rn_alp * MAX( 0._wp , avm(ji,jj,jk) * rn2(ji,jj,jk) / ( p_sh2(ji,jj,jk) + 1.e-20 ) ) ) 168 zav = rn_avmri * zcfRi**nn_ric 169 ! ! avm and avt coefficients 170 p_avm(ji,jj,jk) = MAX( zav , avmb(jk) ) * wmask(ji,jj,jk) 171 p_avt(ji,jj,jk) = MAX( zav * zcfRi , avtb(jk) ) * wmask(ji,jj,jk) 172 END DO 173 END DO 174 END DO 162 DO_3D( 1, 0, 1, 0, 2, jpkm1 ) 163 zcfRi = 1._wp / ( 1._wp + rn_alp * MAX( 0._wp , avm(ji,jj,jk) * rn2(ji,jj,jk) / ( p_sh2(ji,jj,jk) + 1.e-20 ) ) ) 164 zav = rn_avmri * zcfRi**nn_ric 165 ! ! avm and avt coefficients 166 p_avm(ji,jj,jk) = MAX( zav , avmb(jk) ) * wmask(ji,jj,jk) 167 p_avt(ji,jj,jk) = MAX( zav * zcfRi , avtb(jk) ) * wmask(ji,jj,jk) 168 END_3D 175 169 ! 176 170 !!gm BUG <<<<==== This param can't work at low latitude … … 179 173 IF( ln_mldw ) THEN !== set a minimum value in the Ekman layer ==! 180 174 ! 181 DO jj = 2, jpjm1 !* Ekman depth 182 DO ji = 2, jpim1 183 zustar = SQRT( taum(ji,jj) * r1_rau0 ) 184 zhek = rn_ekmfc * zustar / ( ABS( ff_t(ji,jj) ) + rsmall ) ! Ekman depth 185 zh_ekm(ji,jj) = MAX( rn_mldmin , MIN( zhek , rn_mldmax ) ) ! set allowed range 186 END DO 187 END DO 188 DO jk = 2, jpkm1 !* minimum mixing coeff. within the Ekman layer 189 DO jj = 2, jpjm1 190 DO ji = 2, jpim1 191 IF( pdept(ji,jj,jk) < zh_ekm(ji,jj) ) THEN 192 p_avm(ji,jj,jk) = MAX( p_avm(ji,jj,jk), rn_wvmix ) * wmask(ji,jj,jk) 193 p_avt(ji,jj,jk) = MAX( p_avt(ji,jj,jk), rn_wtmix ) * wmask(ji,jj,jk) 194 ENDIF 195 END DO 196 END DO 197 END DO 175 DO_2D( 0, 0, 0, 0 ) 176 zustar = SQRT( taum(ji,jj) * r1_rho0 ) 177 zhek = rn_ekmfc * zustar / ( ABS( ff_t(ji,jj) ) + rsmall ) ! Ekman depth 178 zh_ekm(ji,jj) = MAX( rn_mldmin , MIN( zhek , rn_mldmax ) ) ! set allowed range 179 END_2D 180 DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 181 IF( gdept(ji,jj,jk,Kmm) < zh_ekm(ji,jj) ) THEN 182 p_avm(ji,jj,jk) = MAX( p_avm(ji,jj,jk), rn_wvmix ) * wmask(ji,jj,jk) 183 p_avt(ji,jj,jk) = MAX( p_avt(ji,jj,jk), rn_wtmix ) * wmask(ji,jj,jk) 184 ENDIF 185 END_3D 198 186 ENDIF 199 187 ! … … 227 215 IF( MIN( id1, id2 ) > 0 ) THEN ! restart exists => read it 228 216 IF(lrxios) CALL iom_swap( TRIM(crxios_context) ) 229 CALL iom_get( numror, jpdom_auto glo, 'avt_k', avt_k, ldxios = lrxios )230 CALL iom_get( numror, jpdom_auto glo, 'avm_k', avm_k, ldxios = lrxios )217 CALL iom_get( numror, jpdom_auto, 'avt_k', avt_k, ldxios = lrxios ) 218 CALL iom_get( numror, jpdom_auto, 'avm_k', avm_k, ldxios = lrxios ) 231 219 IF(lrxios) CALL iom_swap( TRIM(cxios_context) ) 232 220 ENDIF
Note: See TracChangeset
for help on using the changeset viewer.