Initializes internal tidal dissipation scheme for diapycnal mixing.
213 type(time_type),
intent(in) :: Time
214 type(ocean_grid_type),
intent(in) :: G
215 type(verticalGrid_type),
intent(in) :: GV
216 type(unit_scale_type),
intent(in) :: US
217 type(param_file_type),
intent(in) :: param_file
218 type(diag_ctrl),
target,
intent(inout) :: diag
219 type(tidal_mixing_cs),
pointer :: CS
222 logical :: read_tideamp
223 logical :: default_2018_answers
224 character(len=20) :: tmpstr, int_tide_profile_str
225 character(len=20) :: CVMix_tidal_scheme_str, tidal_energy_type
226 character(len=200) :: filename, h2_file, Niku_TKE_input_file
227 character(len=200) :: tidal_energy_file, tideamp_file
228 real :: utide, hamp, prandtl_tidal, max_frac_rough
230 integer :: i, j, is, ie, js, je
231 integer :: isd, ied, jsd, jed
233 # include "version_variable.h"
234 character(len=40) :: mdl =
"MOM_tidal_mixing"
236 if (
associated(cs))
then
237 call mom_error(warning,
"tidal_mixing_init called when control structure "// &
238 "is already associated.")
244 cs%debug = cs%debug.and.is_root_pe()
246 is = g%isc ; ie = g%iec ; js = g%jsc ; je = g%jec
247 isd = g%isd ; ied = g%ied ; jsd = g%jsd ; jed = g%jed
252 call get_param(param_file, mdl,
"USE_CVMix_TIDAL", cs%use_CVMix_tidal, &
253 default=.false., do_not_log=.true.)
254 call get_param(param_file, mdl,
"INT_TIDE_DISSIPATION", cs%int_tide_dissipation, &
255 default=cs%use_CVMix_tidal, do_not_log=.true.)
256 call log_version(param_file, mdl, version, &
257 "Vertical Tidal Mixing Parameterization", &
258 all_default=.not.(cs%use_CVMix_tidal .or. cs%int_tide_dissipation))
259 call get_param(param_file, mdl,
"USE_CVMix_TIDAL", cs%use_CVMix_tidal, &
260 "If true, turns on tidal mixing via CVMix", &
263 call get_param(param_file, mdl,
"INPUTDIR", cs%inputdir, default=
".",do_not_log=.true.)
264 cs%inputdir = slasher(cs%inputdir)
265 call get_param(param_file, mdl,
"INT_TIDE_DISSIPATION", cs%int_tide_dissipation, &
266 "If true, use an internal tidal dissipation scheme to "//&
267 "drive diapycnal mixing, along the lines of St. Laurent "//&
268 "et al. (2002) and Simmons et al. (2004).", default=cs%use_CVMix_tidal)
271 tidal_mixing_init = cs%int_tide_dissipation
272 if (.not. tidal_mixing_init)
return
274 call get_param(param_file, mdl,
"DEFAULT_2018_ANSWERS", default_2018_answers, &
275 "This sets the default value for the various _2018_ANSWERS parameters.", &
277 call get_param(param_file, mdl,
"TIDAL_MIXING_2018_ANSWERS", cs%answers_2018, &
278 "If true, use the order of arithmetic and expressions that recover the "//&
279 "answers from the end of 2018. Otherwise, use updated and more robust "//&
280 "forms of the same expressions.", default=default_2018_answers)
281 call get_param(param_file, mdl,
"REMAPPING_2018_ANSWERS", cs%remap_answers_2018, &
282 "If true, use the order of arithmetic and expressions that recover the "//&
283 "answers from the end of 2018. Otherwise, use updated and more robust "//&
284 "forms of the same expressions.", default=default_2018_answers)
286 if (cs%int_tide_dissipation)
then
289 if (cs%use_CVMix_tidal)
then
290 call get_param(param_file, mdl,
"CVMIX_TIDAL_SCHEME", cvmix_tidal_scheme_str, &
291 "CVMIX_TIDAL_SCHEME selects the CVMix tidal mixing "//&
292 "scheme with INT_TIDE_DISSIPATION. Valid values are:\n"//&
293 "\t SIMMONS - Use the Simmons et al (2004) tidal \n"//&
294 "\t mixing scheme.\n"//&
295 "\t SCHMITTNER - Use the Schmittner et al (2014) tidal \n"//&
296 "\t mixing scheme.", &
297 default=simmons_scheme_string)
298 cvmix_tidal_scheme_str = uppercase(cvmix_tidal_scheme_str)
300 select case (cvmix_tidal_scheme_str)
301 case (simmons_scheme_string) ; cs%CVMix_tidal_scheme = simmons
302 case (schmittner_scheme_string) ; cs%CVMix_tidal_scheme = schmittner
304 call mom_error(fatal,
"tidal_mixing_init: Unrecognized setting "// &
305 "#define CVMIX_TIDAL_SCHEME "//trim(cvmix_tidal_scheme_str)//
" found in input file.")
310 if ( cs%CVMix_tidal_scheme.eq.schmittner .or. .not. cs%use_CVMix_tidal)
then
311 call get_param(param_file, mdl,
"INT_TIDE_PROFILE", int_tide_profile_str, &
312 "INT_TIDE_PROFILE selects the vertical profile of energy "//&
313 "dissipation with INT_TIDE_DISSIPATION. Valid values are:\n"//&
314 "\t STLAURENT_02 - Use the St. Laurent et al exponential \n"//&
315 "\t decay profile.\n"//&
316 "\t POLZIN_09 - Use the Polzin WKB-stretched algebraic \n"//&
317 "\t decay profile.", &
318 default=stlaurent_profile_string)
319 int_tide_profile_str = uppercase(int_tide_profile_str)
321 select case (int_tide_profile_str)
322 case (stlaurent_profile_string) ; cs%int_tide_profile = stlaurent_02
323 case (polzin_profile_string) ; cs%int_tide_profile = polzin_09
325 call mom_error(fatal,
"tidal_mixing_init: Unrecognized setting "// &
326 "#define INT_TIDE_PROFILE "//trim(int_tide_profile_str)//
" found in input file.")
330 elseif (cs%use_CVMix_tidal)
then
331 call mom_error(fatal,
"tidal_mixing_init: Cannot set INT_TIDE_DISSIPATION to False "// &
332 "when USE_CVMix_TIDAL is set to True.")
335 call get_param(param_file, mdl,
"LEE_WAVE_DISSIPATION", cs%Lee_wave_dissipation, &
336 "If true, use an lee wave driven dissipation scheme to "//&
337 "drive diapycnal mixing, along the lines of Nikurashin "//&
338 "(2010) and using the St. Laurent et al. (2002) "//&
339 "and Simmons et al. (2004) vertical profile", default=.false.)
340 if (cs%lee_wave_dissipation)
then
341 if (cs%use_CVMix_tidal)
then
342 call mom_error(fatal,
"tidal_mixing_init: Lee wave driven dissipation scheme cannot "// &
343 "be used when CVMix tidal mixing scheme is active.")
345 call get_param(param_file, mdl,
"LEE_WAVE_PROFILE", tmpstr, &
346 "LEE_WAVE_PROFILE selects the vertical profile of energy "//&
347 "dissipation with LEE_WAVE_DISSIPATION. Valid values are:\n"//&
348 "\t STLAURENT_02 - Use the St. Laurent et al exponential \n"//&
349 "\t decay profile.\n"//&
350 "\t POLZIN_09 - Use the Polzin WKB-stretched algebraic \n"//&
351 "\t decay profile.", &
352 default=stlaurent_profile_string)
353 tmpstr = uppercase(tmpstr)
355 case (stlaurent_profile_string) ; cs%lee_wave_profile = stlaurent_02
356 case (polzin_profile_string) ; cs%lee_wave_profile = polzin_09
358 call mom_error(fatal,
"tidal_mixing_init: Unrecognized setting "// &
359 "#define LEE_WAVE_PROFILE "//trim(tmpstr)//
" found in input file.")
363 call get_param(param_file, mdl,
"INT_TIDE_LOWMODE_DISSIPATION", cs%Lowmode_itidal_dissipation, &
364 "If true, consider mixing due to breaking low modes that "//&
365 "have been remotely generated; as with itidal drag on the "//&
366 "barotropic tide, use an internal tidal dissipation scheme to "//&
367 "drive diapycnal mixing, along the lines of St. Laurent "//&
368 "et al. (2002) and Simmons et al. (2004).", default=.false.)
370 if ((cs%Int_tide_dissipation .and. (cs%int_tide_profile == polzin_09)) .or. &
371 (cs%lee_wave_dissipation .and. (cs%lee_wave_profile == polzin_09)))
then
372 if (cs%use_CVMix_tidal)
then
373 call mom_error(fatal,
"tidal_mixing_init: Polzin scheme cannot "// &
374 "be used when CVMix tidal mixing scheme is active.")
376 call get_param(param_file, mdl,
"NU_POLZIN", cs%Nu_Polzin, &
377 "When the Polzin decay profile is used, this is a "//&
378 "non-dimensional constant in the expression for the "//&
379 "vertical scale of decay for the tidal energy dissipation.", &
380 units=
"nondim", default=0.0697)
381 call get_param(param_file, mdl,
"NBOTREF_POLZIN", cs%Nbotref_Polzin, &
382 "When the Polzin decay profile is used, this is the "//&
383 "reference value of the buoyancy frequency at the ocean "//&
384 "bottom in the Polzin formulation for the vertical "//&
385 "scale of decay for the tidal energy dissipation.", &
386 units=
"s-1", default=9.61e-4, scale=us%T_to_s)
387 call get_param(param_file, mdl,
"POLZIN_DECAY_SCALE_FACTOR", &
388 cs%Polzin_decay_scale_factor, &
389 "When the Polzin decay profile is used, this is a "//&
390 "scale factor for the vertical scale of decay of the tidal "//&
391 "energy dissipation.", default=1.0, units=
"nondim")
392 call get_param(param_file, mdl,
"POLZIN_SCALE_MAX_FACTOR", &
393 cs%Polzin_decay_scale_max_factor, &
394 "When the Polzin decay profile is used, this is a factor "//&
395 "to limit the vertical scale of decay of the tidal "//&
396 "energy dissipation to POLZIN_DECAY_SCALE_MAX_FACTOR "//&
397 "times the depth of the ocean.", units=
"nondim", default=1.0)
398 call get_param(param_file, mdl,
"POLZIN_MIN_DECAY_SCALE", cs%Polzin_min_decay_scale, &
399 "When the Polzin decay profile is used, this is the "//&
400 "minimum vertical decay scale for the vertical profile\n"//&
401 "of internal tide dissipation with the Polzin (2009) formulation", &
402 units=
"m", default=0.0, scale=us%m_to_Z)
405 if (cs%Int_tide_dissipation .or. cs%Lee_wave_dissipation)
then
406 call get_param(param_file, mdl,
"INT_TIDE_DECAY_SCALE", cs%Int_tide_decay_scale, &
407 "The decay scale away from the bottom for tidal TKE with "//&
408 "the new coding when INT_TIDE_DISSIPATION is used.", &
410 units=
"m", default=500.0, scale=us%m_to_Z)
411 call get_param(param_file, mdl,
"MU_ITIDES", cs%Mu_itides, &
412 "A dimensionless turbulent mixing efficiency used with "//&
413 "INT_TIDE_DISSIPATION, often 0.2.", units=
"nondim", default=0.2)
414 call get_param(param_file, mdl,
"GAMMA_ITIDES", cs%Gamma_itides, &
415 "The fraction of the internal tidal energy that is "//&
416 "dissipated locally with INT_TIDE_DISSIPATION. "//&
417 "THIS NAME COULD BE BETTER.", &
418 units=
"nondim", default=0.3333)
419 call get_param(param_file, mdl,
"MIN_ZBOT_ITIDES", cs%min_zbot_itides, &
420 "Turn off internal tidal dissipation when the total "//&
421 "ocean depth is less than this value.", units=
"m", default=0.0, scale=us%m_to_Z)
424 if ( (cs%Int_tide_dissipation .or. cs%Lee_wave_dissipation) .and. &
425 .not. cs%use_CVMix_tidal)
then
427 call safe_alloc_ptr(cs%Nb,isd,ied,jsd,jed)
428 call safe_alloc_ptr(cs%h2,isd,ied,jsd,jed)
429 call safe_alloc_ptr(cs%TKE_itidal,isd,ied,jsd,jed)
430 call safe_alloc_ptr(cs%mask_itidal,isd,ied,jsd,jed) ; cs%mask_itidal(:,:) = 1.0
432 call get_param(param_file, mdl,
"KAPPA_ITIDES", cs%kappa_itides, &
433 "A topographic wavenumber used with INT_TIDE_DISSIPATION. "//&
434 "The default is 2pi/10 km, as in St.Laurent et al. 2002.", &
435 units=
"m-1", default=8.e-4*atan(1.0), scale=us%Z_to_m)
437 call get_param(param_file, mdl,
"UTIDE", cs%utide, &
438 "The constant tidal amplitude used with INT_TIDE_DISSIPATION.", &
439 units=
"m s-1", default=0.0, scale=us%m_to_Z*us%T_to_s)
440 call safe_alloc_ptr(cs%tideamp,is,ie,js,je) ; cs%tideamp(:,:) = cs%utide
442 call get_param(param_file, mdl,
"KAPPA_H2_FACTOR", cs%kappa_h2_factor, &
443 "A scaling factor for the roughness amplitude with "//&
444 "INT_TIDE_DISSIPATION.", units=
"nondim", default=1.0)
445 call get_param(param_file, mdl,
"TKE_ITIDE_MAX", cs%TKE_itide_max, &
446 "The maximum internal tide energy source available to mix "//&
447 "above the bottom boundary layer with INT_TIDE_DISSIPATION.", &
448 units=
"W m-2", default=1.0e3, scale=us%W_m2_to_RZ3_T3)
450 call get_param(param_file, mdl,
"READ_TIDEAMP", read_tideamp, &
451 "If true, read a file (given by TIDEAMP_FILE) containing "//&
452 "the tidal amplitude with INT_TIDE_DISSIPATION.", default=.false.)
453 if (read_tideamp)
then
454 if (cs%use_CVMix_tidal)
then
455 call mom_error(fatal,
"tidal_mixing_init: Tidal amplitude files are "// &
456 "not compatible with CVMix tidal mixing. ")
458 call get_param(param_file, mdl,
"TIDEAMP_FILE", tideamp_file, &
459 "The path to the file containing the spatially varying "//&
460 "tidal amplitudes with INT_TIDE_DISSIPATION.", default=
"tideamp.nc")
461 filename = trim(cs%inputdir) // trim(tideamp_file)
462 call log_param(param_file, mdl,
"INPUTDIR/TIDEAMP_FILE", filename)
463 call mom_read_data(filename,
'tideamp', cs%tideamp, g%domain, timelevel=1, scale=us%m_to_Z*us%T_to_s)
466 call get_param(param_file, mdl,
"H2_FILE", h2_file, &
467 "The path to the file containing the sub-grid-scale "//&
468 "topographic roughness amplitude with INT_TIDE_DISSIPATION.", &
469 fail_if_missing=(.not.cs%use_CVMix_tidal))
470 filename = trim(cs%inputdir) // trim(h2_file)
471 call log_param(param_file, mdl,
"INPUTDIR/H2_FILE", filename)
472 call mom_read_data(filename,
'h2', cs%h2, g%domain, timelevel=1, scale=us%m_to_Z**2)
474 call get_param(param_file, mdl,
"FRACTIONAL_ROUGHNESS_MAX", max_frac_rough, &
475 "The maximum topographic roughness amplitude as a fraction of the mean depth, "//&
476 "or a negative value for no limitations on roughness.", &
477 units=
"nondim", default=0.1)
479 do j=js,je ;
do i=is,ie
480 if (g%bathyT(i,j) < cs%min_zbot_itides) cs%mask_itidal(i,j) = 0.0
481 cs%tideamp(i,j) = cs%tideamp(i,j) * cs%mask_itidal(i,j) * g%mask2dT(i,j)
484 if (cs%answers_2018 .and. (max_frac_rough >= 0.0))
then
485 hamp = min(max_frac_rough*g%bathyT(i,j), sqrt(cs%h2(i,j)))
486 cs%h2(i,j) = hamp*hamp
488 if (max_frac_rough >= 0.0) &
489 cs%h2(i,j) = min((max_frac_rough*g%bathyT(i,j))**2, cs%h2(i,j))
492 utide = cs%tideamp(i,j)
495 cs%TKE_itidal(i,j) = 0.5 * cs%kappa_h2_factor * gv%Rho0 * &
496 cs%kappa_itides * cs%h2(i,j) * utide*utide
501 if (cs%Lee_wave_dissipation)
then
503 call get_param(param_file, mdl,
"NIKURASHIN_TKE_INPUT_FILE",niku_tke_input_file, &
504 "The path to the file containing the TKE input from lee "//&
505 "wave driven mixing. Used with LEE_WAVE_DISSIPATION.", &
506 fail_if_missing=.true.)
507 call get_param(param_file, mdl,
"NIKURASHIN_SCALE",niku_scale, &
508 "A non-dimensional factor by which to scale the lee-wave "//&
509 "driven TKE input. Used with LEE_WAVE_DISSIPATION.", &
510 units=
"nondim", default=1.0)
512 filename = trim(cs%inputdir) // trim(niku_tke_input_file)
513 call log_param(param_file, mdl,
"INPUTDIR/NIKURASHIN_TKE_INPUT_FILE", &
515 call safe_alloc_ptr(cs%TKE_Niku,is,ie,js,je) ; cs%TKE_Niku(:,:) = 0.0
516 call mom_read_data(filename,
'TKE_input', cs%TKE_Niku, g%domain, timelevel=1, &
517 scale=niku_scale*us%W_m2_to_RZ3_T3)
519 call get_param(param_file, mdl,
"GAMMA_NIKURASHIN",cs%Gamma_lee, &
520 "The fraction of the lee wave energy that is dissipated "//&
521 "locally with LEE_WAVE_DISSIPATION.", units=
"nondim", &
523 call get_param(param_file, mdl,
"DECAY_SCALE_FACTOR_LEE",cs%Decay_scale_factor_lee, &
524 "Scaling for the vertical decay scaleof the local "//&
525 "dissipation of lee waves dissipation.", units=
"nondim", &
528 cs%Decay_scale_factor_lee = -9.e99
532 if (cs%use_CVMix_tidal)
then
536 call get_param(param_file, mdl,
"TIDAL_MAX_COEF", cs%tidal_max_coef, &
537 "largest acceptable value for tidal diffusivity", &
538 units=
"m^2/s", default=50e-4)
539 call get_param(param_file, mdl,
"TIDAL_DISS_LIM_TC", cs%tidal_diss_lim_tc, &
540 "Min allowable depth for dissipation for tidal-energy-constituent data. "//&
541 "No dissipation contribution is applied above TIDAL_DISS_LIM_TC.", &
542 units=
"m", default=0.0, scale=us%m_to_Z)
543 call get_param(param_file, mdl,
"TIDAL_ENERGY_FILE",tidal_energy_file, &
544 "The path to the file containing tidal energy "//&
545 "dissipation. Used with CVMix tidal mixing schemes.", &
546 fail_if_missing=.true.)
547 call get_param(param_file, mdl,
'MIN_THICKNESS', cs%min_thickness, default=0.001, &
549 call get_param(param_file, mdl,
"PRANDTL_TIDAL", prandtl_tidal, &
550 "Prandtl number used by CVMix tidal mixing schemes "//&
551 "to convert vertical diffusivities into viscosities.", &
552 units=
"nondim", default=1.0, &
554 call cvmix_put(cs%CVMix_glb_params,
'Prandtl',prandtl_tidal)
556 tidal_energy_file = trim(cs%inputdir) // trim(tidal_energy_file)
557 call get_param(param_file, mdl,
"TIDAL_ENERGY_TYPE",tidal_energy_type, &
558 "The type of input tidal energy flux dataset. Valid values are"//&
561 fail_if_missing=.true.)
564 (uppercase(tidal_energy_type(1:4)).eq.
'JAYN' .and. cs%CVMix_tidal_scheme.eq.simmons).or. &
565 (uppercase(tidal_energy_type(1:4)).eq.
'ER03' .and. cs%CVMix_tidal_scheme.eq.schmittner) ) )
then
566 call mom_error(fatal,
"tidal_mixing_init: Tidal energy file type ("//&
567 trim(tidal_energy_type)//
") is incompatible with CVMix tidal "//&
568 " mixing scheme: "//trim(cvmix_tidal_scheme_str) )
570 cvmix_tidal_scheme_str = lowercase(cvmix_tidal_scheme_str)
573 call cvmix_init_tidal(cvmix_tidal_params_user = cs%CVMix_tidal_params, &
574 mix_scheme = cvmix_tidal_scheme_str, &
575 efficiency = cs%Mu_itides, &
576 vertical_decay_scale = cs%int_tide_decay_scale*us%Z_to_m, &
577 max_coefficient = cs%tidal_max_coef, &
578 local_mixing_frac = cs%Gamma_itides, &
579 depth_cutoff = cs%min_zbot_itides*us%Z_to_m)
581 call read_tidal_energy(g, us, tidal_energy_type, tidal_energy_file, cs)
589 if (cs%Int_tide_dissipation .or. cs%Lee_wave_dissipation .or. &
590 cs%Lowmode_itidal_dissipation)
then
592 cs%id_Kd_itidal = register_diag_field(
'ocean_model',
'Kd_itides',diag%axesTi,time, &
593 'Internal Tide Driven Diffusivity',
'm2 s-1', conversion=us%Z2_T_to_m2_s)
595 if (cs%use_CVMix_tidal)
then
596 cs%id_N2_int = register_diag_field(
'ocean_model',
'N2_int',diag%axesTi,time, &
597 'Bouyancy frequency squared, at interfaces',
's-2', conversion=us%s_to_T**2)
599 cs%id_Simmons_coeff = register_diag_field(
'ocean_model',
'Simmons_coeff',diag%axesT1,time, &
600 'time-invariant portion of the tidal mixing coefficient using the Simmons',
'')
601 cs%id_Schmittner_coeff = register_diag_field(
'ocean_model',
'Schmittner_coeff',diag%axesTL,time, &
602 'time-invariant portion of the tidal mixing coefficient using the Schmittner',
'')
603 cs%id_tidal_qe_md = register_diag_field(
'ocean_model',
'tidal_qe_md',diag%axesTL,time, &
604 'input tidal energy dissipated locally interpolated to model vertical coordinates',
'')
605 cs%id_vert_dep = register_diag_field(
'ocean_model',
'vert_dep',diag%axesTi,time, &
606 'vertical deposition function needed for Simmons et al tidal mixing',
'')
609 cs%id_TKE_itidal = register_diag_field(
'ocean_model',
'TKE_itidal',diag%axesT1,time, &
610 'Internal Tide Driven Turbulent Kinetic Energy', &
611 'W m-2', conversion=us%RZ3_T3_to_W_m2)
612 cs%id_Nb = register_diag_field(
'ocean_model',
'Nb',diag%axesT1,time, &
613 'Bottom Buoyancy Frequency',
's-1', conversion=us%s_to_T)
615 cs%id_Kd_lowmode = register_diag_field(
'ocean_model',
'Kd_lowmode',diag%axesTi,time, &
616 'Internal Tide Driven Diffusivity (from propagating low modes)', &
617 'm2 s-1', conversion=us%Z2_T_to_m2_s)
619 cs%id_Fl_itidal = register_diag_field(
'ocean_model',
'Fl_itides',diag%axesTi,time, &
620 'Vertical flux of tidal turbulent dissipation', &
621 'm3 s-3', conversion=(us%Z_to_m**3*us%s_to_T**3))
623 cs%id_Fl_lowmode = register_diag_field(
'ocean_model',
'Fl_lowmode',diag%axesTi,time, &
624 'Vertical flux of tidal turbulent dissipation (from propagating low modes)', &
625 'm3 s-3', conversion=(us%Z_to_m**3*us%s_to_T**3))
627 cs%id_Polzin_decay_scale = register_diag_field(
'ocean_model',
'Polzin_decay_scale',diag%axesT1,time, &
628 'Vertical decay scale for the tidal turbulent dissipation with Polzin scheme', &
629 'm', conversion=us%Z_to_m)
631 cs%id_Polzin_decay_scale_scaled = register_diag_field(
'ocean_model', &
632 'Polzin_decay_scale_scaled', diag%axesT1, time, &
633 'Vertical decay scale for the tidal turbulent dissipation with Polzin scheme, '// &
634 'scaled by N2_bot/N2_meanz',
'm', conversion=us%Z_to_m)
636 cs%id_N2_bot = register_diag_field(
'ocean_model',
'N2_b',diag%axesT1,time, &
637 'Bottom Buoyancy frequency squared',
's-2', conversion=us%s_to_T**2)
639 cs%id_N2_meanz = register_diag_field(
'ocean_model',
'N2_meanz', diag%axesT1, time, &
640 'Buoyancy frequency squared averaged over the water column',
's-2', conversion=us%s_to_T**2)
642 cs%id_Kd_Itidal_Work = register_diag_field(
'ocean_model',
'Kd_Itidal_Work',diag%axesTL,time, &
643 'Work done by Internal Tide Diapycnal Mixing', &
644 'W m-2', conversion=us%RZ3_T3_to_W_m2)
646 cs%id_Kd_Niku_Work = register_diag_field(
'ocean_model',
'Kd_Nikurashin_Work',diag%axesTL,time, &
647 'Work done by Nikurashin Lee Wave Drag Scheme', &
648 'W m-2', conversion=us%RZ3_T3_to_W_m2)
650 cs%id_Kd_Lowmode_Work = register_diag_field(
'ocean_model',
'Kd_Lowmode_Work',diag%axesTL,time, &
651 'Work done by Internal Tide Diapycnal Mixing (low modes)', &
652 'W m-2', conversion=us%RZ3_T3_to_W_m2)
654 if (cs%Lee_wave_dissipation)
then
655 cs%id_TKE_leewave = register_diag_field(
'ocean_model',
'TKE_leewave',diag%axesT1,time, &
656 'Lee wave Driven Turbulent Kinetic Energy', &
657 'W m-2', conversion=us%RZ3_T3_to_W_m2)
658 cs%id_Kd_Niku = register_diag_field(
'ocean_model',
'Kd_Nikurashin',diag%axesTi,time, &
659 'Lee Wave Driven Diffusivity',
'm2 s-1', conversion=us%Z2_T_to_m2_s)