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. 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 (s) |
[in] | fluxes | Surface fluxes container |
[in,out] | h | Layer thickness in H units |
[in] | out_flux_optional | Optional flag to determine whether h should be updated |
Definition at line 214 of file MOM_tracer_diabatic.F90.
Referenced by advection_test_tracer::advection_test_tracer_column_physics(), boundary_impulse_tracer::boundary_impulse_tracer_column_physics(), ideal_age_example::ideal_age_tracer_column_physics(), isomip_tracer::isomip_tracer_column_physics(), mom_ocmip2_cfc::ocmip2_cfc_column_physics(), and pseudo_salt_tracer::pseudo_salt_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.
[in] | g | ocean grid structure |
[in] | gv | ocean vertical grid structure |
[in] | h_old | layer thickness before entrainment (m or kg m-2) |
[in] | ea | amount of fluid entrained from the layer above (units of h_work) |
[in] | eb | amount of fluid entrained from the layer below (units of h_work) |
[in,out] | tr | tracer concentration (in concentration units CU) |
[in] | dt | amount of time covered by this call (seconds) |
[in] | sfc_flux | surface flux of the tracer (in CU * kg m-2 s-1) |
[in] | btm_flux | The (negative upward) bottom flux of the tracer, in units of (CU * kg m-2 s-1) |
[in,out] | btm_reservoir | amount of tracer in a bottom reservoir (units of CU kg m-2; formerly CU m) |
[in] | sink_rate | rate at which the tracer sinks, in m s-1 |
[in] | convert_flux_in | True if the specified sfc_flux needs to be integrated in time |
Definition at line 26 of file MOM_tracer_diabatic.F90.
Referenced by advection_test_tracer::advection_test_tracer_column_physics(), boundary_impulse_tracer::boundary_impulse_tracer_column_physics(), mom_diabatic_driver::diabatic(), ideal_age_example::ideal_age_tracer_column_physics(), isomip_tracer::isomip_tracer_column_physics(), mom_ocmip2_cfc::ocmip2_cfc_column_physics(), and pseudo_salt_tracer::pseudo_salt_tracer_column_physics().