MOM6
|
A tracer package for using dyes to diagnose regional flows.
This file contains an example of the code that is needed to set up and use a set (in this case two) of dynamically passive tracers for diagnostic purposes. The tracers here are dye tracers which are set to 1 within the geographical region specified. The depth which a tracer is set is determined by calculating the depth from the seafloor upwards through the column.
Data Types | |
type | dye_tracer_cs |
The control structure for the regional dyes tracer package. More... | |
Functions/Subroutines | |
logical function, public | register_dye_tracer (HI, GV, US, param_file, CS, tr_Reg, restart_CS) |
This subroutine is used to register tracer fields and subroutines to be used with MOM. More... | |
subroutine, public | initialize_dye_tracer (restart, day, G, GV, h, diag, OBC, CS, sponge_CSp) |
This subroutine initializes the CSntr tracer fields in tr(:,:,:,:) and it sets up the tracer output. More... | |
subroutine, public | dye_tracer_column_physics (h_old, h_new, ea, eb, fluxes, dt, G, GV, US, CS, evap_CFL_limit, minimum_forcing_depth) |
This subroutine applies diapycnal diffusion and any other column tracer physics or chemistry to the tracers from this file. This is a simple example of a set of advected passive tracers. The arguments to this subroutine are redundant in that h_new(k) = h_old(k) + ea(k) - eb(k-1) + eb(k) - ea(k+1) More... | |
integer function, public | dye_stock (h, stocks, G, GV, CS, names, units, stock_index) |
This function 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 | dye_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 | regional_dyes_end (CS) |
Clean up any allocated memory after the run. More... | |
integer function, public regional_dyes::dye_stock | ( | real, dimension(nimem_,njmem_,nkmem_), intent(in) | h, |
real, dimension(:), intent(out) | stocks, | ||
type(ocean_grid_type), intent(in) | G, | ||
type(verticalgrid_type), intent(in) | GV, | ||
type(dye_tracer_cs), pointer | CS, | ||
character(len=*), dimension(:), intent(out) | names, | ||
character(len=*), dimension(:), intent(out) | units, | ||
integer, intent(in), optional | stock_index | ||
) |
This function 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] | 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]. |
[in] | g | The ocean's grid structure |
[in] | gv | The ocean's vertical grid structure |
cs | The control structure returned by a previous call to register_dye_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 329 of file dye_example.F90.
References mom_io::query_vardesc().
Referenced by mom_tracer_flow_control::call_tracer_stocks().
subroutine, public regional_dyes::dye_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(dye_tracer_cs), pointer | CS, | ||
real, intent(in), optional | evap_CFL_limit, | ||
real, intent(in), optional | minimum_forcing_depth | ||
) |
This subroutine applies diapycnal diffusion and any other column tracer physics or chemistry to the tracers from this file. This is a simple example of a set of advected passive tracers. The arguments to this subroutine are redundant in that h_new(k) = h_old(k) + ea(k) - eb(k-1) + eb(k) - ea(k+1)
[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_dye_tracer. | |
[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 248 of file dye_example.F90.
References mom_tracer_diabatic::applytracerboundaryfluxesinout(), and mom_tracer_diabatic::tracer_vertdiff().
subroutine, public regional_dyes::dye_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(dye_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_dye_tracer. |
Definition at line 376 of file dye_example.F90.
subroutine, public regional_dyes::initialize_dye_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( : , : , : ), intent(in) | h, | ||
type(diag_ctrl), intent(in), target | diag, | ||
type(ocean_obc_type), pointer | OBC, | ||
type(dye_tracer_cs), pointer | CS, | ||
type(sponge_cs), pointer | sponge_CSp | ||
) |
This subroutine initializes the CSntr tracer fields in tr(:,:,:,:) and it sets up the tracer output.
[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 | Structure 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_dye_tracer. | |
sponge_csp | A pointer to the control structure for the sponges, if they are in use. |
Definition at line 187 of file dye_example.F90.
subroutine, public regional_dyes::regional_dyes_end | ( | type(dye_tracer_cs), pointer | CS | ) |
Clean up any allocated memory after the run.
cs | The control structure returned by a previous call to register_dye_tracer. |
Definition at line 407 of file dye_example.F90.
logical function, public regional_dyes::register_dye_tracer | ( | type(hor_index_type), intent(in) | HI, |
type(verticalgrid_type), intent(in) | GV, | ||
type(unit_scale_type), intent(in) | US, | ||
type(param_file_type), intent(in) | param_file, | ||
type(dye_tracer_cs), pointer | CS, | ||
type(tracer_registry_type), pointer | tr_Reg, | ||
type(mom_restart_cs), pointer | restart_CS | ||
) |
This subroutine is used to register tracer fields and subroutines to be used with MOM.
[in] | hi | A horizontal index type structure. |
[in] | gv | The ocean's vertical grid structure |
[in] | us | A dimensional unit scaling type |
[in] | param_file | A structure to parse for run-time parameters |
cs | A pointer that is set to point to the control structure for this module | |
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 69 of file dye_example.F90.
References atmos_ocean_fluxes_mod::aof_set_coupler_flux(), mom_error_handler::mom_error(), mom_io::query_vardesc(), mom_tracer_registry::register_tracer(), and mom_io::var_desc().