|
MOM6
|
Control structure for this module.
Definition at line 92 of file MOM_diabatic_driver.F90.
Public variables and constants | |
| logical | use_legacy_diabatic |
| If true (default), use the a legacy version of the diabatic algorithm. This is temporary and is needed to avoid change in answers. | |
| logical | bulkmixedlayer |
| If true, a refined bulk mixed layer is used with nkml sublayers (and additional buffer layers). | |
| logical | use_energetic_pbl |
| If true, use the implicit energetics planetary boundary layer scheme to determine the diffusivity in the surface boundary layer. | |
| logical | use_kpp |
| If true, use CVMix/KPP boundary layer scheme to determine the OBLD and the diffusivities within this layer. | |
| logical | use_kappa_shear |
| If true, use the kappa_shear module to find the shear-driven diapycnal diffusivity. | |
| logical | use_cvmix_shear |
| If true, use the CVMix module to find the shear-driven diapycnal diffusivity. | |
| logical | use_cvmix_ddiff |
| If true, use the CVMix double diffusion module. | |
| logical | use_tidal_mixing |
| If true, activate tidal mixing diffusivity. | |
| logical | use_cvmix_conv |
| If true, use the CVMix module to get enhanced mixing due to convection. | |
| logical | use_sponge |
| If true, sponges may be applied anywhere in the domain. The exact location and properties of those sponges are set by calls to initialize_sponge and set_up_sponge_field. | |
| logical | use_geothermal |
| If true, apply geothermal heating. | |
| logical | use_int_tides |
| If true, use the code that advances a separate set of equations for the internal tide energy density. | |
| logical | epbl_is_additive |
| If true, the diffusivity from ePBL is added to all other diffusivities. Otherwise, the larger of kappa- shear and ePBL diffusivities are used. | |
| integer | nmode = 1 |
| Number of baroclinic modes to consider. | |
| real | uniform_test_cg |
| Uniform group velocity of internal tide for testing internal tides [m s-1] (BDM) | |
| logical | usealealgorithm |
| If true, use the ALE algorithm rather than layered isopycnal/stacked shallow water mode. This logical passed by argument to diabatic_driver_init. | |
| logical | aggregate_fw_forcing |
| Determines whether net incoming/outgoing surface FW fluxes are applied separately or combined before being applied. | |
| real | ml_mix_first |
| The nondimensional fraction of the mixed layer algorithm that is applied before diffusive mixing. The default is 0, while 0.5 gives Strang splitting and 1 is a sensible value too. Note that if there are convective instabilities in the initial state, the first call may do much more than the second. | |
| integer | nkbl |
| The number of buffer layers (if bulk_mixed_layer) | |
| logical | massless_match_targets |
| If true (the default), keep the T & S consistent with the target values. | |
| logical | mix_boundary_tracers |
| If true, mix the passive tracers in massless layers at the bottom into the interior as though a diffusivity of Kd_min_tr (see below) were operating. | |
| real | kd_bbl_tr |
| A bottom boundary layer tracer diffusivity that will allow for explicitly specified bottom fluxes [Z2 T-1 ~> m2 s-1]. The entrainment at the bottom is at least sqrt(Kd_BBL_tr*dt) over the same distance. | |
| real | kd_min_tr |
| A minimal diffusivity that should always be applied to tracers, especially in massless layers near the bottom [Z2 T-1 ~> m2 s-1]. | |
| real | minimum_forcing_depth = 0.001 |
| The smallest depth over which heat and freshwater fluxes are applied [m]. | |
| real | evap_cfl_limit = 0.8 |
| The largest fraction of a layer that can be evaporated in one time-step [nondim]. | |
| integer | halo_ts_diff = 0 |
| The temperature, salinity and thickness halo size that must be valid for the diffusivity calculations. | |
| logical | usekpp = .false. |
| use CVMix/KPP diffusivities and non-local transport | |
| logical | salt_reject_below_ml |
| If true, add salt below mixed layer (layer mode only) | |
| logical | kppispassive |
| If true, KPP is in passive mode, not changing answers. | |
| logical | debug |
| If true, write verbose checksums for debugging purposes. | |
| logical | debugconservation |
| If true, monitor conservation and extrema. | |
| logical | tracer_tridiag |
| If true, use tracer_vertdiff instead of tridiagTS for vertical diffusion of T and S. | |
| logical | debug_energy_req |
| If true, test the mixing energy requirement code. | |
| type(diag_ctrl), pointer | diag |
| structure used to regulate timing of diagnostic output | |
| real | mlddensitydifference |
| Density difference used to determine MLD_user. | |
| real | dz_subml_n2 |
| The distance over which to calculate a diagnostic of the average stratification at the base of the mixed layer [Z ~> m]. | |
| integer | id_cg1 = -1 |
| Diagnostic IDs. | |
| integer, dimension(:), allocatable | id_cn |
| Diagnostic IDs. | |
| integer | id_wd = -1 |
| Diagnostic IDs. | |
| integer | id_ea = -1 |
| Diagnostic IDs. | |
| integer | id_eb = -1 |
| Diagnostic IDs. | |
| integer | id_dudt_dia = -1 |
| Diagnostic IDs. | |
| integer | id_dvdt_dia = -1 |
| Diagnostic IDs. | |
| integer | id_ea_s = -1 |
| Diagnostic IDs. | |
| integer | id_eb_s = -1 |
| Diagnostic IDs. | |
| integer | id_ea_t = -1 |
| Diagnostic IDs. | |
| integer | id_eb_t = -1 |
| Diagnostic IDs. | |
| integer | id_kd_heat = -1 |
| Diagnostic IDs. | |
| integer | id_kd_salt = -1 |
| Diagnostic IDs. | |
| integer | id_kd_interface = -1 |
| Diagnostic IDs. | |
| integer | id_kd_epbl = -1 |
| Diagnostic IDs. | |
| integer | id_tdif = -1 |
| Diagnostic IDs. | |
| integer | id_tadv = -1 |
| Diagnostic IDs. | |
| integer | id_sdif = -1 |
| Diagnostic IDs. | |
| integer | id_sadv = -1 |
| Diagnostic IDs. | |
| integer | id_mld_003 = -1 |
| Diagnostic IDs. | |
| integer | id_mld_0125 = -1 |
| Diagnostic IDs. | |
| integer | id_mld_user = -1 |
| Diagnostic IDs. | |
| integer | id_mlotstsq = -1 |
| Diagnostic IDs. | |
| integer | id_submln2 = -1 |
| Diagnostic IDs. | |
| integer | id_brine_lay = -1 |
| Diagnostic IDs. | |
| integer | id_u_predia = -1 |
| Diagnostic IDs. | |
| integer | id_v_predia = -1 |
| Diagnostic IDs. | |
| integer | id_h_predia = -1 |
| Diagnostic IDs. | |
| integer | id_t_predia = -1 |
| Diagnostic IDs. | |
| integer | id_s_predia = -1 |
| Diagnostic IDs. | |
| integer | id_e_predia = -1 |
| Diagnostic IDs. | |
| integer | id_diabatic_diff_temp_tend = -1 |
| Diagnostic IDs. | |
| integer | id_diabatic_diff_saln_tend = -1 |
| Diagnostic IDs. | |
| integer | id_diabatic_diff_heat_tend = -1 |
| Diagnostic IDs. | |
| integer | id_diabatic_diff_salt_tend = -1 |
| Diagnostic IDs. | |
| integer | id_diabatic_diff_heat_tend_2d = -1 |
| Diagnostic IDs. | |
| integer | id_diabatic_diff_salt_tend_2d = -1 |
| Diagnostic IDs. | |
| integer | id_diabatic_diff_h = -1 |
| Diagnostic IDs. | |
| integer | id_boundary_forcing_h = -1 |
| Diagnostic IDs. | |
| integer | id_boundary_forcing_h_tendency = -1 |
| Diagnostic IDs. | |
| integer | id_boundary_forcing_temp_tend = -1 |
| Diagnostic IDs. | |
| integer | id_boundary_forcing_saln_tend = -1 |
| Diagnostic IDs. | |
| integer | id_boundary_forcing_heat_tend = -1 |
| Diagnostic IDs. | |
| integer | id_boundary_forcing_salt_tend = -1 |
| Diagnostic IDs. | |
| integer | id_boundary_forcing_heat_tend_2d = -1 |
| Diagnostic IDs. | |
| integer | id_boundary_forcing_salt_tend_2d = -1 |
| Diagnostic IDs. | |
| integer | id_frazil_h = -1 |
| Diagnostic IDs. | |
| integer | id_frazil_temp_tend = -1 |
| Diagnostic IDs. | |
| integer | id_frazil_heat_tend = -1 |
| Diagnostic IDs. | |
| integer | id_frazil_heat_tend_2d = -1 |
| Diagnostic IDs. | |
| logical | diabatic_diff_tendency_diag = .false. |
| If true calculate diffusive tendency diagnostics. | |
| logical | boundary_forcing_tendency_diag = .false. |
| If true calculate frazil diagnostics. | |
| logical | frazil_tendency_diag = .false. |
| If true calculate frazil tendency diagnostics. | |
| real, dimension(:,:,:), allocatable | frazil_heat_diag |
| diagnose 3d heat tendency from frazil | |
| real, dimension(:,:,:), allocatable | frazil_temp_diag |
| diagnose 3d temp tendency from frazil | |
| type(diabatic_aux_cs), pointer | diabatic_aux_csp => NULL() |
| Control structure for a child module. | |
| type(entrain_diffusive_cs), pointer | entrain_diffusive_csp => NULL() |
| Control structure for a child module. | |
| type(bulkmixedlayer_cs), pointer | bulkmixedlayer_csp => NULL() |
| Control structure for a child module. | |
| type(energetic_pbl_cs), pointer | energetic_pbl_csp => NULL() |
| Control structure for a child module. | |
| type(regularize_layers_cs), pointer | regularize_layers_csp => NULL() |
| Control structure for a child module. | |
| type(geothermal_cs), pointer | geothermal_csp => NULL() |
| Control structure for a child module. | |
| type(int_tide_cs), pointer | int_tide_csp => NULL() |
| Control structure for a child module. | |
| type(int_tide_input_cs), pointer | int_tide_input_csp => NULL() |
| Control structure for a child module. | |
| type(int_tide_input_type), pointer | int_tide_input => NULL() |
| Control structure for a child module. | |
| type(opacity_cs), pointer | opacity_csp => NULL() |
| Control structure for a child module. | |
| type(set_diffusivity_cs), pointer | set_diff_csp => NULL() |
| Control structure for a child module. | |
| type(sponge_cs), pointer | sponge_csp => NULL() |
| Control structure for a child module. | |
| type(ale_sponge_cs), pointer | ale_sponge_csp => NULL() |
| Control structure for a child module. | |
| type(tracer_flow_control_cs), pointer | tracer_flow_csp => NULL() |
| Control structure for a child module. | |
| type(optics_type), pointer | optics => NULL() |
| Control structure for a child module. | |
| type(kpp_cs), pointer | kpp_csp => NULL() |
| Control structure for a child module. | |
| type(tidal_mixing_cs), pointer | tidal_mixing_csp => NULL() |
| Control structure for a child module. | |
| type(cvmix_conv_cs), pointer | cvmix_conv_csp => NULL() |
| Control structure for a child module. | |
| type(diapyc_energy_req_cs), pointer | diapyc_en_rec_csp => NULL() |
| Control structure for a child module. | |
| type(group_pass_type) | pass_hold_eb_ea |
| For group halo pass. | |
| type(group_pass_type) | pass_kv |
| For group halo pass. | |
| type(diag_grid_storage) | diag_grids_prev |
| Stores diagnostic grids at some previous point in the algorithm. | |
| real, dimension(:,:,:), allocatable | kpp_nltheat |
| KPP non-local transport for heat [m s-1]. | |
| real, dimension(:,:,:), allocatable | kpp_nltscalar |
| KPP non-local transport for scalars [m s-1]. | |
| real, dimension(:,:,:), allocatable | kpp_buoy_flux |
| KPP forcing buoyancy flux [L2 T-3 ~> m2 s-3]. | |
| real, dimension(:,:), allocatable | kpp_temp_flux |
| KPP effective temperature flux [degC m s-1]. | |
| real, dimension(:,:), allocatable | kpp_salt_flux |
| KPP effective salt flux [ppt m s-1]. | |
| type(time_type), pointer | time |
| Pointer to model time (needed for sponges) | |