MOM6
|
This module contains routines that implement physical fluxes of tracers (e.g. due to surface fluxes or mixing). These are intended to be called from call_tracer_column_fns in the MOM_tracer_flow_control module.
Functions/Subroutines | |
subroutine, public | tracer_vertdiff (h_old, ea, eb, dt, tr, G, GV, sfc_flux, btm_flux, btm_reservoir, sink_rate, convert_flux_in) |
This subroutine solves a tridiagonal equation for the final tracer concentrations after the dual-entrainments, and possibly sinking or surface and bottom sources, are applied. The sinking is implemented with an fully implicit upwind advection scheme. Alternate time units can be used for the timestep, surface and bottom fluxes and sink_rate provided they are all consistent. More... | |
subroutine, public | applytracerboundaryfluxesinout (G, GV, Tr, dt, fluxes, h, evap_CFL_limit, minimum_forcing_depth, in_flux_optional, out_flux_optional, update_h_opt) |
This routine is modeled after applyBoundaryFluxesInOut in MOM_diabatic_aux.F90 NOTE: Please note that in this routine sfc_flux gets set to zero to ensure that the surface flux of the tracer does not get applied again during a subsequent call to tracer_vertdif. More... | |
subroutine, public mom_tracer_diabatic::applytracerboundaryfluxesinout | ( | type(ocean_grid_type), intent(in) | G, |
type(verticalgrid_type), intent(in) | GV, | ||
real, dimension(szi_(g),szj_(g),szk_(g)), intent(inout) | Tr, | ||
real, intent(in) | dt, | ||
type(forcing), intent(in) | fluxes, | ||
real, dimension(szi_(g),szj_(g),szk_(g)), intent(inout) | h, | ||
real, intent(in) | evap_CFL_limit, | ||
real, intent(in) | minimum_forcing_depth, | ||
real, dimension(szi_(g),szj_(g)), intent(in), optional | in_flux_optional, | ||
real, dimension(szi_(g),szj_(g)), intent(in), optional | out_flux_optional, | ||
logical, intent(in), optional | update_h_opt | ||
) |
This routine is modeled after applyBoundaryFluxesInOut in MOM_diabatic_aux.F90 NOTE: Please note that in this routine sfc_flux gets set to zero to ensure that the surface flux of the tracer does not get applied again during a subsequent call to tracer_vertdif.
[in] | g | Grid structure |
[in] | gv | ocean vertical grid structure |
[in,out] | tr | Tracer concentration on T-cell |
[in] | dt | Time-step over which forcing is applied [T ~> s] |
[in] | fluxes | Surface fluxes container |
[in,out] | h | Layer thickness [H ~> m or kg m-2] |
[in] | evap_cfl_limit | Limit on the fraction of the water that can be fluxed out of the top layer in a timestep [nondim] |
[in] | minimum_forcing_depth | The smallest depth over which fluxes can be applied [H ~> m or kg m-2] |
[in] | in_flux_optional | The total time-integrated amount of tracer that enters with freshwater |
[in] | out_flux_optional | The total time-integrated amount of tracer that leaves with freshwater |
[in] | update_h_opt | Optional flag to determine whether h should be updated |
Definition at line 230 of file MOM_tracer_diabatic.F90.
References mom_error_handler::mom_error().
Referenced by advection_test_tracer::advection_test_tracer_column_physics(), boundary_impulse_tracer::boundary_impulse_tracer_column_physics(), dome_tracer::dome_tracer_column_physics(), regional_dyes::dye_tracer_column_physics(), dyed_obc_tracer::dyed_obc_tracer_column_physics(), ideal_age_example::ideal_age_tracer_column_physics(), isomip_tracer::isomip_tracer_column_physics(), mom_ocmip2_cfc::ocmip2_cfc_column_physics(), mom_offline_main::offline_fw_fluxes_into_ocean(), mom_offline_main::offline_fw_fluxes_out_ocean(), oil_tracer::oil_tracer_column_physics(), pseudo_salt_tracer::pseudo_salt_tracer_column_physics(), and rgc_tracer::rgc_tracer_column_physics().
subroutine, public mom_tracer_diabatic::tracer_vertdiff | ( | real, dimension( g %isd: g %ied, g %jsd: g %jed, gv %ke), intent(in) | h_old, |
real, dimension( g %isd: g %ied, g %jsd: g %jed, gv %ke), intent(in) | ea, | ||
real, dimension( g %isd: g %ied, g %jsd: g %jed, gv %ke), intent(in) | eb, | ||
real, intent(in) | dt, | ||
real, dimension( g %isd: g %ied, g %jsd: g %jed, gv %ke), intent(inout) | tr, | ||
type(ocean_grid_type), intent(in) | G, | ||
type(verticalgrid_type), intent(in) | GV, | ||
real, dimension( g %isd: g %ied, g %jsd: g %jed), intent(in), optional | sfc_flux, | ||
real, dimension( g %isd: g %ied, g %jsd: g %jed), intent(in), optional | btm_flux, | ||
real, dimension( g %isd: g %ied, g %jsd: g %jed), intent(inout), optional | btm_reservoir, | ||
real, intent(in), optional | sink_rate, | ||
logical, intent(in), optional | convert_flux_in | ||
) |
This subroutine solves a tridiagonal equation for the final tracer concentrations after the dual-entrainments, and possibly sinking or surface and bottom sources, are applied. The sinking is implemented with an fully implicit upwind advection scheme. Alternate time units can be used for the timestep, surface and bottom fluxes and sink_rate provided they are all consistent.
[in] | g | ocean grid structure |
[in] | gv | ocean vertical grid structure |
[in] | h_old | layer thickness before entrainment [H ~> m or kg m-2] |
[in] | ea | amount of fluid entrained from the layer above [H ~> m or kg m-2] |
[in] | eb | amount of fluid entrained from the layer below [H ~> m or kg m-2] |
[in,out] | tr | tracer concentration in concentration units [CU] |
[in] | dt | amount of time covered by this call [T ~> s] |
[in] | sfc_flux | surface flux of the tracer in units of [CU kg m-2 T-1 ~> CU kg m-2 s-1] or [CU H ~> CU m or CU kg m-2] if convert_flux_in is .false. |
[in] | btm_flux | The (negative upward) bottom flux of the tracer in [CU kg m-2 T-1 ~> CU kg m-2 s-1] or [CU H ~> CU m or CU kg m-2] if |
[in,out] | btm_reservoir | amount of tracer in a bottom reservoir [CU kg m-2]; formerly [CU m] |
[in] | sink_rate | rate at which the tracer sinks [m T-1 ~> m s-1] |
[in] | convert_flux_in | True if the specified sfc_flux needs to be integrated in time |
Definition at line 27 of file MOM_tracer_diabatic.F90.
References mom_error_handler::mom_error().
Referenced by advection_test_tracer::advection_test_tracer_column_physics(), boundary_impulse_tracer::boundary_impulse_tracer_column_physics(), mom_diabatic_driver::diabatic_ale(), mom_diabatic_driver::diabatic_ale_legacy(), dome_tracer::dome_tracer_column_physics(), regional_dyes::dye_tracer_column_physics(), dyed_obc_tracer::dyed_obc_tracer_column_physics(), ideal_age_example::ideal_age_tracer_column_physics(), isomip_tracer::isomip_tracer_column_physics(), mom_diabatic_driver::layered_diabatic(), mom_ocmip2_cfc::ocmip2_cfc_column_physics(), oil_tracer::oil_tracer_column_physics(), pseudo_salt_tracer::pseudo_salt_tracer_column_physics(), and rgc_tracer::rgc_tracer_column_physics().