- Timestamp:
- 2020-12-04T12:36:47+01:00 (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2020/dev_r13787_doc_latex_recovery/src/OCE/ZDF/zdfphy.F90
r14066 r14085 9 9 !!---------------------------------------------------------------------- 10 10 !! zdf_phy_init : initialization of all vertical physics packages 11 !! zdf_phy : upadate at each time-step the vertical mixing coeff. 11 !! zdf_phy : upadate at each time-step the vertical mixing coeff. 12 12 !!---------------------------------------------------------------------- 13 13 USE oce ! ocean dynamics and tracers variables 14 USE zdf_oce ! vertical physics: shared variables 14 USE zdf_oce ! vertical physics: shared variables 15 15 USE zdfdrg ! vertical physics: top/bottom drag coef. 16 16 USE zdfsh2 ! vertical physics: shear production term of TKE 17 USE zdfric ! vertical physics: RIChardson dependent vertical mixing 17 USE zdfric ! vertical physics: RIChardson dependent vertical mixing 18 18 USE zdftke ! vertical physics: TKE vertical mixing 19 19 USE zdfgls ! vertical physics: GLS vertical mixing 20 20 USE zdfosm ! vertical physics: OSMOSIS vertical mixing 21 USE zdfddm ! vertical physics: double diffusion mixing 22 USE zdfevd ! vertical physics: convection via enhanced vertical diffusion 23 USE zdfmfc ! vertical physics: Mass Flux Convection 24 USE zdfiwm ! vertical physics: internal wave-induced mixing 21 USE zdfddm ! vertical physics: double diffusion mixing 22 USE zdfevd ! vertical physics: convection via enhanced vertical diffusion 23 USE zdfmfc ! vertical physics: Mass Flux Convection 24 USE zdfiwm ! vertical physics: internal wave-induced mixing 25 25 USE zdfswm ! vertical physics: surface wave-induced mixing 26 26 USE zdfmxl ! vertical physics: mixed layer 27 27 USE tranpc ! convection: non penetrative adjustment 28 USE trc_oce ! variables shared between passive tracer & ocean 28 USE trc_oce ! variables shared between passive tracer & ocean 29 29 USE sbc_oce ! surface module (only for nn_isf in the option compatibility test) 30 30 USE sbcrnf ! surface boundary condition: runoff variables … … 46 46 PUBLIC zdf_phy ! called by step.F90 47 47 48 INTEGER :: nzdf_phy ! type of vertical closure used 48 INTEGER :: nzdf_phy ! type of vertical closure used 49 49 ! ! associated indicators 50 50 INTEGER, PARAMETER :: np_CST = 1 ! Constant Kz … … 66 66 !!---------------------------------------------------------------------- 67 67 !! *** ROUTINE zdf_phy_init *** 68 !! 68 !! 69 69 !! ** Purpose : initializations of the vertical ocean physics 70 70 !! 71 !! ** Method : Read namelist namzdf, control logicals 71 !! ** Method : Read namelist namzdf, control logicals 72 72 !! set horizontal shape and vertical profile of background mixing coef. 73 73 !!---------------------------------------------------------------------- … … 143 143 IF( nn_avb == 0 ) THEN ! Define avmb, avtb from namelist parameter 144 144 avmb(:) = rn_avm0 145 avtb(:) = rn_avt0 145 avtb(:) = rn_avt0 146 146 ELSE ! Background profile of avt (fit a theoretical/observational profile (Krauss 1990) 147 147 avmb(:) = rn_avm0 … … 150 150 ENDIF 151 151 ! ! 2D shape of the avtb 152 avtb_2d(:,:) = 1._wp ! uniform 152 avtb_2d(:,:) = 1._wp ! uniform 153 153 ! 154 154 IF( nn_havtb == 1 ) THEN ! decrease avtb by a factor of ten in the equatorial band … … 198 198 199 199 ! !== type of vertical turbulent closure ==! (set nzdf_phy) 200 ioptio = 0 200 ioptio = 0 201 201 IF( ln_zdfcst ) THEN ; ioptio = ioptio + 1 ; nzdf_phy = np_CST ; ENDIF 202 202 IF( ln_zdfric ) THEN ; ioptio = ioptio + 1 ; nzdf_phy = np_RIC ; CALL zdf_ric_init ; ENDIF … … 236 236 !! ** Purpose : Update ocean physics at each time-step 237 237 !! 238 !! ** Method : 238 !! ** Method : 239 239 !! 240 240 !! ** Action : avm, avt vertical eddy viscosity and diffusivity at w-points … … 254 254 ! 255 255 ! !* bottom drag 256 CALL zdf_drg( kt, Kmm, mbkt , r_Cdmin_bot, r_Cdmax_bot, & ! <<== in 256 CALL zdf_drg( kt, Kmm, mbkt , r_Cdmin_bot, r_Cdmax_bot, & ! <<== in 257 257 & r_z0_bot, r_ke0_bot, rCd0_bot, & 258 258 & rCdU_bot ) ! ==>> out : bottom drag [m/s] 259 259 IF( ln_isfcav ) THEN !* top drag (ocean cavities) 260 CALL zdf_drg( kt, Kmm, mikt , r_Cdmin_top, r_Cdmax_top, & ! <<== in 260 CALL zdf_drg( kt, Kmm, mikt , r_Cdmin_top, r_Cdmax_top, & ! <<== in 261 261 & r_z0_top, r_ke0_top, rCd0_top, & 262 262 & rCdU_top ) ! ==>> out : bottom drag [m/s] … … 273 273 ENDIF 274 274 #endif 275 ! 275 ! 276 276 ! !== Kz from chosen turbulent closure ==! (avm_k, avt_k) 277 277 ! … … 290 290 !!gm avm(2:jpim1,2:jpjm1,1:jpkm1) = rn_avm0 * wmask(2:jpim1,2:jpjm1,1:jpkm1) 291 291 END SELECT 292 ! 292 ! 293 293 ! !== ocean Kz ==! (avt, avs, avm) 294 294 ! … … 312 312 ENDIF 313 313 ! 314 ! !* wave-induced mixing 315 IF( ln_zdfswm ) CALL zdf_swm( kt, Kmm, avm, avt, avs ) ! surface wave (Qiao et al. 2004) 314 ! !* wave-induced mixing 315 IF( ln_zdfswm ) CALL zdf_swm( kt, Kmm, avm, avt, avs ) ! surface wave (Qiao et al. 2004) 316 316 IF( ln_zdfiwm ) CALL zdf_iwm( kt, Kmm, avm, avt, avs ) ! internal wave (de Lavergne et al 2017) 317 317 318 #if defined key_agrif 318 #if defined key_agrif 319 319 ! interpolation parent grid => child grid for avm_k ( ex : at west border: update column 1 and 2) 320 320 IF( l_zdfsh2 ) CALL Agrif_avm … … 340 340 IF( ln_zdftke ) CALL tke_rst( kt, 'WRITE' ) 341 341 IF( ln_zdfgls ) CALL gls_rst( kt, 'WRITE' ) 342 IF( ln_zdfric ) CALL ric_rst( kt, 'WRITE' ) 342 IF( ln_zdfric ) CALL ric_rst( kt, 'WRITE' ) 343 343 ! NB. OSMOSIS restart (osm_rst) will be called in step.F90 after ww has been updated 344 344 ENDIF
Note: See TracChangeset
for help on using the changeset viewer.