Changeset 12377 for NEMO/trunk/src/OCE/ZDF/zdfphy.F90
- Timestamp:
- 2020-02-12T15:39:06+01:00 (4 years ago)
- Location:
- NEMO/trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/trunk
- Property svn:externals
-
old new 3 3 ^/utils/build/mk@HEAD mk 4 4 ^/utils/tools@HEAD tools 5 ^/vendors/AGRIF/dev @HEAD ext/AGRIF5 ^/vendors/AGRIF/dev_r11615_ENHANCE-04_namelists_as_internalfiles_agrif@HEAD ext/AGRIF 6 6 ^/vendors/FCM@HEAD ext/FCM 7 7 ^/vendors/IOIPSL@HEAD ext/IOIPSL
-
- Property svn:externals
-
NEMO/trunk/src/OCE/ZDF/zdfphy.F90
r11536 r12377 61 61 CONTAINS 62 62 63 SUBROUTINE zdf_phy_init 63 SUBROUTINE zdf_phy_init( Kmm ) 64 64 !!---------------------------------------------------------------------- 65 65 !! *** ROUTINE zdf_phy_init *** … … 70 70 !! set horizontal shape and vertical profile of background mixing coef. 71 71 !!---------------------------------------------------------------------- 72 INTEGER, INTENT(in) :: Kmm ! time level index (middle) 73 ! 72 74 INTEGER :: jk ! dummy loop indices 73 75 INTEGER :: ioptio, ios ! local integers … … 91 93 ! 92 94 ! !== Namelist ==! 93 REWIND( numnam_ref ) ! Namelist namzdf in reference namelist : Vertical mixing parameters94 95 READ ( numnam_ref, namzdf, IOSTAT = ios, ERR = 901) 95 96 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namzdf in reference namelist' ) 96 97 ! 97 REWIND( numnam_cfg ) ! Namelist namzdf in reference namelist : Vertical mixing parameters98 98 READ ( numnam_cfg, namzdf, IOSTAT = ios, ERR = 902 ) 99 99 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namzdf in configuration namelist' ) … … 191 191 ioptio = 0 192 192 IF( ln_zdfcst ) THEN ; ioptio = ioptio + 1 ; nzdf_phy = np_CST ; ENDIF 193 IF( ln_zdfric ) THEN ; ioptio = ioptio + 1 ; nzdf_phy = np_RIC ; CALL zdf_ric_init ; ENDIF194 IF( ln_zdftke ) THEN ; ioptio = ioptio + 1 ; nzdf_phy = np_TKE ; CALL zdf_tke_init ; ENDIF195 IF( ln_zdfgls ) THEN ; ioptio = ioptio + 1 ; nzdf_phy = np_GLS ; CALL zdf_gls_init ; ENDIF196 IF( ln_zdfosm ) THEN ; ioptio = ioptio + 1 ; nzdf_phy = np_OSM ; CALL zdf_osm_init ; ENDIF193 IF( ln_zdfric ) THEN ; ioptio = ioptio + 1 ; nzdf_phy = np_RIC ; CALL zdf_ric_init ; ENDIF 194 IF( ln_zdftke ) THEN ; ioptio = ioptio + 1 ; nzdf_phy = np_TKE ; CALL zdf_tke_init( Kmm ) ; ENDIF 195 IF( ln_zdfgls ) THEN ; ioptio = ioptio + 1 ; nzdf_phy = np_GLS ; CALL zdf_gls_init ; ENDIF 196 IF( ln_zdfosm ) THEN ; ioptio = ioptio + 1 ; nzdf_phy = np_OSM ; CALL zdf_osm_init( Kmm ) ; ENDIF 197 197 ! 198 198 IF( ioptio /= 1 ) CALL ctl_stop( 'zdf_phy_init: one and only one vertical diffusion option has to be defined ' ) … … 219 219 220 220 221 SUBROUTINE zdf_phy( kt )221 SUBROUTINE zdf_phy( kt, Kbb, Kmm, Krhs ) 222 222 !!---------------------------------------------------------------------- 223 223 !! *** ROUTINE zdf_phy *** … … 231 231 !! bottom stress..... <<<<====verifier ! 232 232 !!---------------------------------------------------------------------- 233 INTEGER, INTENT(in) :: kt ! ocean time-step index 233 INTEGER, INTENT(in) :: kt ! ocean time-step index 234 INTEGER, INTENT(in) :: Kbb, Kmm, Krhs ! ocean time level indices 234 235 ! 235 236 INTEGER :: ji, jj, jk ! dummy loop indice … … 242 243 ! 243 244 ! !* bottom drag 244 CALL zdf_drg( kt, mbkt, r_Cdmin_bot, r_Cdmax_bot, & ! <<== in245 CALL zdf_drg( kt, Kmm, mbkt , r_Cdmin_bot, r_Cdmax_bot, & ! <<== in 245 246 & r_z0_bot, r_ke0_bot, rCd0_bot, & 246 247 & rCdU_bot ) ! ==>> out : bottom drag [m/s] 247 248 IF( ln_isfcav ) THEN !* top drag (ocean cavities) 248 CALL zdf_drg( kt, mikt, r_Cdmin_top, r_Cdmax_top, & ! <<== in249 CALL zdf_drg( kt, Kmm, mikt , r_Cdmin_top, r_Cdmax_top, & ! <<== in 249 250 & r_z0_top, r_ke0_top, rCd0_top, & 250 251 & rCdU_top ) ! ==>> out : bottom drag [m/s] … … 255 256 ! 256 257 IF( l_zdfsh2 ) & !* shear production at w-points (energy conserving form) 257 CALL zdf_sh2( ub, vb, un, vn, avm_k, & ! <<== in258 & 258 CALL zdf_sh2( Kbb, Kmm, avm_k, & ! <<== in 259 & zsh2 ) ! ==>> out : shear production 259 260 ! 260 261 SELECT CASE ( nzdf_phy ) !* Vertical eddy viscosity and diffusivity coefficients at w-points 261 CASE( np_RIC ) ; CALL zdf_ric( kt, gdept_n, zsh2, avm_k, avt_k ) ! Richardson number dependent Kz262 CASE( np_TKE ) ; CALL zdf_tke( kt 263 CASE( np_GLS ) ; CALL zdf_gls( kt 264 CASE( np_OSM ) ; CALL zdf_osm( kt 262 CASE( np_RIC ) ; CALL zdf_ric( kt, Kmm, zsh2, avm_k, avt_k ) ! Richardson number dependent Kz 263 CASE( np_TKE ) ; CALL zdf_tke( kt, Kbb, Kmm, zsh2, avm_k, avt_k ) ! TKE closure scheme for Kz 264 CASE( np_GLS ) ; CALL zdf_gls( kt, Kbb, Kmm, zsh2, avm_k, avt_k ) ! GLS closure scheme for Kz 265 CASE( np_OSM ) ; CALL zdf_osm( kt, Kbb, Kmm, Krhs, avm_k, avt_k ) ! OSMOSIS closure scheme for Kz 265 266 ! CASE( np_CST ) ! Constant Kz (reset avt, avm to the background value) 266 267 ! ! avt_k and avm_k set one for all at initialisation phase … … 281 282 ENDIF 282 283 ! 283 IF( ln_zdfevd ) CALL zdf_evd( kt, avm, avt ) !* convection: enhanced vertical eddy diffusivity284 IF( ln_zdfevd ) CALL zdf_evd( kt, Kmm, Krhs, avm, avt ) !* convection: enhanced vertical eddy diffusivity 284 285 ! 285 286 ! !* double diffusive mixing 286 287 IF( ln_zdfddm ) THEN ! update avt and compute avs 287 CALL zdf_ddm( kt, avm, avt, avs )288 CALL zdf_ddm( kt, Kmm, avm, avt, avs ) 288 289 ELSE ! same mixing on all tracers 289 290 avs(2:jpim1,2:jpjm1,1:jpkm1) = avt(2:jpim1,2:jpjm1,1:jpkm1) … … 291 292 ! 292 293 ! !* wave-induced mixing 293 IF( ln_zdfswm ) CALL zdf_swm( kt, avm, avt, avs ) ! surface wave (Qiao et al. 2004)294 IF( ln_zdfiwm ) CALL zdf_iwm( kt, avm, avt, avs ) ! internal wave (de Lavergne et al 2017)294 IF( ln_zdfswm ) CALL zdf_swm( kt, Kmm, avm, avt, avs ) ! surface wave (Qiao et al. 2004) 295 IF( ln_zdfiwm ) CALL zdf_iwm( kt, Kmm, avm, avt, avs ) ! internal wave (de Lavergne et al 2017) 295 296 296 297 #if defined key_agrif … … 313 314 ENDIF 314 315 ! 315 CALL zdf_mxl( kt ) !* mixed layer depth, and level316 CALL zdf_mxl( kt, Kmm ) !* mixed layer depth, and level 316 317 ! 317 318 IF( lrst_oce ) THEN !* write TKE, GLS or RIC fields in the restart file … … 319 320 IF( ln_zdfgls ) CALL gls_rst( kt, 'WRITE' ) 320 321 IF( ln_zdfric ) CALL ric_rst( kt, 'WRITE' ) 321 ! NB. OSMOSIS restart (osm_rst) will be called in step.F90 after w nhas been updated322 ! NB. OSMOSIS restart (osm_rst) will be called in step.F90 after ww has been updated 322 323 ENDIF 323 324 !
Note: See TracChangeset
for help on using the changeset viewer.