MOM6
|
A tracer package to mimic dissolved oil.
By Alistair Adcroft and Robert Hallberg, 2010 *
In the midst of the Deepwater Horizon oil spill, it became evident that models were needed to predict the long-term fate of dissolved oil in the open ocean. This tracer packages mimics the transport, dilution and decay of dissolved oil plumes in the ocean.
This tracer package was central to the simulations used by Adcroft et al., GRL 2010, to prove that the Deepwater Horizon spill was an important regional event, with implications for dissolved oxygen levels in the Gulf of Mexico, but not one that would directly impact the East Coast of the U.S.
Data Types | |
type | oil_tracer_cs |
The control structure for the oil tracer package. More... | |
Functions/Subroutines | |
logical function, public | register_oil_tracer (HI, GV, US, param_file, CS, tr_Reg, restart_CS) |
Register oil tracer fields and subroutines to be used with MOM. More... | |
subroutine, public | initialize_oil_tracer (restart, day, G, GV, US, h, diag, OBC, CS, sponge_CSp) |
Initialize the oil tracers and set up tracer output. More... | |
subroutine, public | oil_tracer_column_physics (h_old, h_new, ea, eb, fluxes, dt, G, GV, US, CS, tv, evap_CFL_limit, minimum_forcing_depth) |
Apply sources, sinks, diapycnal mixing and rising motions to the oil tracers. More... | |
integer function, public | oil_stock (h, stocks, G, GV, CS, names, units, stock_index) |
Calculate the mass-weighted integral of the oil 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 | oil_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 | oil_tracer_end (CS) |
Deallocate memory associated with this tracer package. More... | |
Variables | |
integer, parameter | ntr_max = 20 |
the maximum number of tracers in this module. More... | |
subroutine, public oil_tracer::initialize_oil_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, | ||
type(unit_scale_type), intent(in) | US, | ||
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(oil_tracer_cs), pointer | CS, | ||
type(sponge_cs), pointer | sponge_CSp | ||
) |
Initialize the oil tracers and set up 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] | us | A dimensional unit scaling type |
[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_oil_tracer. | |
sponge_csp | Pointer to the control structure for the sponges. |
Definition at line 206 of file oil_tracer.F90.
References mom_error_handler::mom_error(), mom_io::query_vardesc(), and mom_tracer_z_init::tracer_z_init().
integer function, public oil_tracer::oil_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(oil_tracer_cs), pointer | CS, | ||
character(len=*), dimension(:), intent(out) | names, | ||
character(len=*), dimension(:), intent(out) | units, | ||
integer, intent(in), optional | stock_index | ||
) |
Calculate the mass-weighted integral of the oil 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_oil_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 408 of file oil_tracer.F90.
References mom_io::query_vardesc().
Referenced by mom_tracer_flow_control::call_tracer_stocks().
subroutine, public oil_tracer::oil_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(oil_tracer_cs), pointer | CS, | ||
type(thermo_var_ptrs), intent(in) | tv, | ||
real, intent(in), optional | evap_CFL_limit, | ||
real, intent(in), optional | minimum_forcing_depth | ||
) |
Apply sources, sinks, diapycnal mixing and rising motions to the oil tracers.
[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_oil_tracer. | |
[in] | tv | A structure pointing to various thermodynamic variables |
[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 301 of file oil_tracer.F90.
References mom_tracer_diabatic::applytracerboundaryfluxesinout(), and mom_tracer_diabatic::tracer_vertdiff().
subroutine, public oil_tracer::oil_tracer_end | ( | type(oil_tracer_cs), pointer | CS | ) |
Deallocate memory associated with this tracer package.
cs | The control structure returned by a previous call to register_oil_tracer. |
Definition at line 489 of file oil_tracer.F90.
subroutine, public oil_tracer::oil_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(oil_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_oil_tracer. |
Definition at line 458 of file oil_tracer.F90.
logical function, public oil_tracer::register_oil_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(oil_tracer_cs), pointer | CS, | ||
type(tracer_registry_type), pointer | tr_Reg, | ||
type(mom_restart_cs), pointer | restart_CS | ||
) |
Register oil 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 78 of file oil_tracer.F90.
References atmos_ocean_fluxes_mod::aof_set_coupler_flux(), mom_error_handler::mom_error(), ntr_max, mom_io::query_vardesc(), mom_tracer_registry::register_tracer(), and mom_io::var_desc().
|
private |
the maximum number of tracers in this module.
Definition at line 35 of file oil_tracer.F90.
Referenced by register_oil_tracer().