oil_tracer module reference
A tracer package to mimic dissolved oil.
Data Types
The control structure for the oil tracer package. |
Functions/Subroutines
Register oil tracer fields and subroutines to be used with MOM. |
|
Initialize the oil tracers and set up tracer output. |
|
Apply sources, sinks, diapycnal mixing and rising motions to the oil tracers. |
|
Calculate the mass-weighted integral of the oil tracer stocks, returning the number of stocks it has calculated. |
|
This subroutine extracts the surface fields from this tracer package that are to be shared with the atmosphere in coupled configurations. |
|
Deallocate memory associated with this tracer package. |
Detailed Description
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 certains regions, see above reference for details.
Type Documentation
- type oil_tracer/oil_tracer_cs
The control structure for the oil tracer package.
- Type fields:
% ntr ::
integerThe number of tracers that are actually used.% coupled_tracers ::
logicalThese tracers are not offered to the coupler.% ic_file ::
character(len=200)The file in which the age-tracer initial values can be found, or an empty string for internal initialization.% z_ic_file ::
logicalIf true, the IC_file is in Z-space. The default is false.% oil_source_longitude ::
realLatitude of source location (geographic) [degrees_N].% oil_source_latitude ::
realLongitude of source location (geographic) [degrees_E].% oil_source_i ::
integerLocal i of source location (computational index location)% oil_source_j ::
integerLocal j of source location (computational index location)% oil_source_rate ::
realRate of oil injection [kg T-1 ~> kg s-1].% oil_start_year ::
realThe time at which the oil source starts [years].% oil_end_year ::
realThe time at which the oil source ends [years].% time ::
type(time_type), pointerA pointer to the ocean model’s clock.% tr_reg ::
type(tracer_registry_type), pointerA pointer to the MOM tracer registry.% tr ::
real, dimension(:,:,:,:), pointerThe array of tracers used in this subroutine, [kg m-3].% ic_val ::
real, dimension(ntr_max)The (uniform) initial condition value [kg m-3].% land_val ::
real, dimension(ntr_max)The value of tr used where land is masked out [kg m-3].% oil_decay_rate ::
real, dimension(ntr_max)Decay rate of oil [T-1 ~> s-1] calculated from oil_decay_days.% oil_source_k ::
integer, dimension(ntr_max)Layer of source.% oil_may_reinit ::
logicalIf true, oil tracers may be reset by the initialization code if they are not found in the restart files.% ind_tr ::
integer, dimension(ntr_max)Indices returned by atmos_ocn_coupler_flux if it is used and the surface tracer concentrations are to be provided to the coupler.% tr_desc ::
type(vardesc), dimension(ntr_max)Descriptions and metadata for the tracers.% diag ::
type(diag_ctrl), pointerA structure that is used to regulate the timing of diagnostic output.% restart_csp ::
type(mom_restart_cs), pointerA pointer to the restart control structure.
Function/Subroutine Documentation
- function oil_tracer/register_oil_tracer(HI, GV, US, param_file, CS, tr_Reg, restart_CS)
Register oil tracer fields and subroutines to be used with MOM.
- Parameters:
hi :: [in] A horizontal index type structure
gv :: [in] The ocean’s vertical grid structure
us :: [in] A dimensional unit scaling type
param_file ::
param_file[in] A structure to parse for run-time parameterscs :: 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 :: [inout] MOM restart control struct
- Call to:
mom_error_handler::mom_errorntr_maxmom_io::query_vardescmom_tracer_registry::register_tracermom_io::var_desc
- subroutine oil_tracer/initialize_oil_tracer(restart, day, G, GV, US, h, diag, OBC, CS, sponge_CSp)
Initialize the oil tracers and set up tracer output.
- Parameters:
restart ::
restart[in] .true. if the fields have already been read from a restart file.day ::
day[in] Time of the start of the run.g :: [in] The ocean’s grid structure
gv :: [in] The ocean’s vertical grid structure
us :: [in] A dimensional unit scaling type
h ::
h[in] Layer thicknesses [H ~> m or kg m-2]diag ::
diag[in] 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.
- Call to:
mom_error_handler::mom_errormom_io::query_vardescmom_tracer_z_init::tracer_z_init
- subroutine oil_tracer/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.
- Parameters:
g :: [in] The ocean’s grid structure
gv :: [in] The ocean’s vertical grid structure
h_old ::
h_old[in] Layer thickness before entrainment [H ~> m or kg m-2].h_new ::
h_new[in] Layer thickness after entrainment [H ~> m or kg m-2].ea ::
ea[in] an array to which the amount of fluid entrainedeb ::
eb[in] an array to which the amount of fluid entrainedfluxes ::
fluxes[in] A structure containing pointers to thermodynamic and tracer forcing fields. Unused fields have NULL ptrs.dt ::
dt[in] The amount of time covered by this call [T ~> s]us :: [in] A dimensional unit scaling type
cs :: The control structure returned by a previous call to register_oil_tracer.
tv ::
tv[in] A structure pointing to various thermodynamic variablesevap_cfl_limit :: [in] Limit on the fraction of the water that can be fluxed out of the top layer in a timestep [nondim]
minimum_forcing_depth ::
minimum_forcing_depth[in] The smallest depth over which fluxes can be applied [H ~> m or kg m-2]
- Call to:
mom_tracer_diabatic::applytracerboundaryfluxesinoutmom_tracer_diabatic::tracer_vertdiff
- function oil_tracer/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.
- Parameters:
g :: [in] The ocean’s grid structure
gv :: [in] The ocean’s vertical grid structure
h ::
h[in] Layer thicknesses [H ~> m or kg m-2]stocks ::
stocks[out] 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.
names ::
names[out] the names of the stocks calculated.units ::
units[out] the units of the stocks calculated.stock_index ::
stock_index[in] the coded index of a specific stock being sought.
- Return:
undefined :: The number of stocks calculated here.
- Call to:
mom_spatial_means::global_mass_int_efpmom_io::query_vardesc- Called from:
- subroutine oil_tracer/oil_tracer_surface_state(sfc_state, h, G, GV, 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.
- Parameters:
g :: [in] The ocean’s grid structure.
gv :: [in] The ocean’s vertical grid structure
sfc_state ::
sfc_state[inout] A structure containing fields that describe the surface state of the ocean.h ::
h[in] Layer thickness [H ~> m or kg m-2].cs :: The control structure returned by a previous call to register_oil_tracer.
- Call to:
- subroutine oil_tracer/oil_tracer_end(CS)
Deallocate memory associated with this tracer package.
- Parameters:
cs :: The control structure returned by a previous call to register_oil_tracer.
- Called from: