MOM6
|
A tracer package that mimics salinity.
By Andrew Shao, 2016
This file contains the routines necessary to model a passive tracer that uses the same boundary fluxes as salinity. At the beginning of the run, salt is set to the same as tvS. Any deviations between this salt-like tracer and tvS signifies a difference between how active and passive tracers are treated.
Data Types | |
type | pseudo_salt_tracer_cs |
The control structure for the pseudo-salt tracer. More... | |
Functions/Subroutines | |
logical function, public | register_pseudo_salt_tracer (HI, GV, param_file, CS, tr_Reg, restart_CS) |
Register the pseudo-salt tracer with MOM6. More... | |
subroutine, public | initialize_pseudo_salt_tracer (restart, day, G, GV, h, diag, OBC, CS, sponge_CSp, tv) |
Initialize the pseudo-salt tracer. More... | |
subroutine, public | pseudo_salt_tracer_column_physics (h_old, h_new, ea, eb, fluxes, dt, G, GV, US, CS, tv, debug, evap_CFL_limit, minimum_forcing_depth) |
Apply sources, sinks and diapycnal diffusion to the tracers in this package. More... | |
integer function, public | pseudo_salt_stock (h, stocks, G, GV, CS, names, units, stock_index) |
Calculates the mass-weighted integral of all tracer stocks, returning the number of stocks it has calculated. If the stock_index is present, only the stock corresponding to that coded index is returned. More... | |
subroutine, public | pseudo_salt_tracer_surface_state (state, h, G, CS) |
This subroutine extracts the surface fields from this tracer package that are to be shared with the atmosphere in coupled configurations. This particular tracer package does not report anything back to the coupler. More... | |
subroutine, public | pseudo_salt_tracer_end (CS) |
Deallocate memory associated with this tracer package. More... | |
subroutine, public pseudo_salt_tracer::initialize_pseudo_salt_tracer | ( | logical, intent(in) | restart, |
type(time_type), intent(in), target | day, | ||
type(ocean_grid_type), intent(in) | G, | ||
type(verticalgrid_type), intent(in) | GV, | ||
real, dimension( g %isd: g %ied, g %jsd: g %jed, g %ke), intent(in) | h, | ||
type(diag_ctrl), intent(in), target | diag, | ||
type(ocean_obc_type), pointer | OBC, | ||
type(pseudo_salt_tracer_cs), pointer | CS, | ||
type(sponge_cs), pointer | sponge_CSp, | ||
type(thermo_var_ptrs), intent(in) | tv | ||
) |
Initialize the pseudo-salt tracer.
[in] | restart | .true. if the fields have already been read from a restart file. |
[in] | day | Time of the start of the run. |
[in] | g | The ocean's grid structure |
[in] | gv | The ocean's vertical grid structure |
[in] | h | Layer thicknesses [H ~> m or kg m-2] |
[in] | diag | A structure that is used to regulate diagnostic output. |
obc | This open boundary condition type specifies whether, where, and what open boundary conditions are used. | |
cs | The control structure returned by a previous call to register_pseudo_salt_tracer. | |
sponge_csp | Pointer to the control structure for the sponges. | |
[in] | tv | A structure pointing to various thermodynamic variables |
Definition at line 118 of file pseudo_salt_tracer.F90.
References mom_io::query_vardesc().
integer function, public pseudo_salt_tracer::pseudo_salt_stock | ( | real, dimension(szi_(g),szj_(g),szk_(g)), intent(in) | h, |
real, dimension(:), intent(out) | stocks, | ||
type(ocean_grid_type), intent(in) | G, | ||
type(verticalgrid_type), intent(in) | GV, | ||
type(pseudo_salt_tracer_cs), pointer | CS, | ||
character(len=*), dimension(:), intent(out) | names, | ||
character(len=*), dimension(:), intent(out) | units, | ||
integer, intent(in), optional | stock_index | ||
) |
Calculates the mass-weighted integral of all tracer stocks, returning the number of stocks it has calculated. If the stock_index is present, only the stock corresponding to that coded index is returned.
[in] | g | The ocean's grid structure |
[in] | gv | The ocean's vertical grid structure |
[in] | h | Layer thicknesses [H ~> m or kg m-2] |
[out] | stocks | the mass-weighted integrated amount of each tracer, in kg times concentration units [kg conc]. |
cs | The control structure returned by a previous call to register_pseudo_salt_tracer. | |
[out] | names | The names of the stocks calculated. |
[out] | units | The units of the stocks calculated. |
[in] | stock_index | The coded index of a specific stock being sought. |
Definition at line 254 of file pseudo_salt_tracer.F90.
References mom_io::query_vardesc().
Referenced by mom_tracer_flow_control::call_tracer_stocks().
subroutine, public pseudo_salt_tracer::pseudo_salt_tracer_column_physics | ( | real, dimension(szi_(g),szj_(g),szk_(g)), intent(in) | h_old, |
real, dimension(szi_(g),szj_(g),szk_(g)), intent(in) | h_new, | ||
real, dimension(szi_(g),szj_(g),szk_(g)), intent(in) | ea, | ||
real, dimension(szi_(g),szj_(g),szk_(g)), intent(in) | eb, | ||
type(forcing), intent(in) | fluxes, | ||
real, intent(in) | dt, | ||
type(ocean_grid_type), intent(in) | G, | ||
type(verticalgrid_type), intent(in) | GV, | ||
type(unit_scale_type), intent(in) | US, | ||
type(pseudo_salt_tracer_cs), pointer | CS, | ||
type(thermo_var_ptrs), intent(in) | tv, | ||
logical, intent(in) | debug, | ||
real, intent(in), optional | evap_CFL_limit, | ||
real, intent(in), optional | minimum_forcing_depth | ||
) |
Apply sources, sinks and diapycnal diffusion to the tracers in this package.
[in] | g | The ocean's grid structure |
[in] | gv | The ocean's vertical grid structure |
[in] | h_old | Layer thickness before entrainment [H ~> m or kg m-2]. |
[in] | h_new | Layer thickness after entrainment [H ~> m or kg m-2]. |
[in] | ea | an array to which the amount of fluid entrained |
[in] | eb | an array to which the amount of fluid entrained |
[in] | fluxes | A structure containing pointers to thermodynamic and tracer forcing fields. Unused fields have NULL ptrs. |
[in] | dt | The amount of time covered by this call [T ~> s] |
[in] | us | A dimensional unit scaling type |
cs | The control structure returned by a previous call to register_pseudo_salt_tracer. | |
[in] | tv | A structure pointing to various thermodynamic variables |
[in] | debug | If true calculate checksums |
[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] |
Definition at line 176 of file pseudo_salt_tracer.F90.
References mom_tracer_diabatic::applytracerboundaryfluxesinout(), and mom_tracer_diabatic::tracer_vertdiff().
subroutine, public pseudo_salt_tracer::pseudo_salt_tracer_end | ( | type(pseudo_salt_tracer_cs), pointer | CS | ) |
Deallocate memory associated with this tracer package.
cs | The control structure returned by a previous call to register_pseudo_salt_tracer. |
Definition at line 326 of file pseudo_salt_tracer.F90.
subroutine, public pseudo_salt_tracer::pseudo_salt_tracer_surface_state | ( | type(surface), intent(inout) | state, |
real, dimension( g %isd: g %ied, g %jsd: g %jed, g %ke), intent(in) | h, | ||
type(ocean_grid_type), intent(in) | G, | ||
type(pseudo_salt_tracer_cs), pointer | CS | ||
) |
This subroutine extracts the surface fields from this tracer package that are to be shared with the atmosphere in coupled configurations. This particular tracer package does not report anything back to the coupler.
[in] | g | The ocean's grid structure. |
[in,out] | state | A structure containing fields that describe the surface state of the ocean. |
[in] | h | Layer thickness [H ~> m or kg m-2]. |
cs | The control structure returned by a previous call to register_pseudo_salt_tracer. |
Definition at line 303 of file pseudo_salt_tracer.F90.
logical function, public pseudo_salt_tracer::register_pseudo_salt_tracer | ( | type(hor_index_type), intent(in) | HI, |
type(verticalgrid_type), intent(in) | GV, | ||
type(param_file_type), intent(in) | param_file, | ||
type(pseudo_salt_tracer_cs), pointer | CS, | ||
type(tracer_registry_type), pointer | tr_Reg, | ||
type(mom_restart_cs), pointer | restart_CS | ||
) |
Register the pseudo-salt tracer with MOM6.
[in] | hi | A horizontal index type structure |
[in] | gv | The ocean's vertical grid structure |
[in] | param_file | A structure to parse for run-time parameters |
cs | The control structure returned by a previous call to register_pseudo_salt_tracer. | |
tr_reg | A pointer that is set to point to the control structure for the tracer advection and diffusion module | |
restart_cs | A pointer to the restart control structure |
Definition at line 61 of file pseudo_salt_tracer.F90.
References mom_error_handler::mom_error(), mom_io::query_vardesc(), mom_tracer_registry::register_tracer(), and mom_io::var_desc().