PALEOsediment Reactions
Sediment transport
PALEOsediment.Sediment.SedimentGrid.ReactionSedimentGridn1D
— TypeReactionSedimentGridn1D
Sediment grid for n x 1D sediment columns.
A grid with n columns is created in a Domain
sediment
, bounded at the top by Domain
oceanfloor
and at the base by Domain
sedimentfloor
. Boundary cells at the sediment surface are therefore in subdomain sediment.oceanfloor
.
The number of columns, and column area are set by oceanfloor
Variables.
Parameters
L[Float64]
=0.15 (m),default_value
=0.15,description
="depth of sediment column"ncellspercol[Int64]
=60,default_value
=60,description
="number of cells per column"f_grid[String]
="linear",default_value
="linear",allowed_values
=["linear", "quadratic"],description
="vertical grid transformation"grid_eta[Float64]
=NaN (m),default_value
=NaN,description
="length scale for vertical grid transformation"rho_ref[Float64]
=1027.0 (kg m-3),default_value
=1027.0,description
="assumed constant sw density conversion factor"
Methods and Variables for default Parameters
PALEOsediment.Sediment.SedimentPhys.ReactionSedimentPhys
— TypeReactionSedimentPhys
Calculate sediment physical parameters: porosity, advection velociy, salinity, temperature.
The sediment grid is defined by eg PALEOsediment.Sediment.SedimentGrid.ReactionSedimentGridn1D
.
Porosity is set to a prescribed time-independent functional form defined by f_porosity
parameter.
Advection velocity may calculated in two ways:
- as a time-independent function of depth calculated from
oceanfloor.w_accum
, and assuming no volume changes in solid phase. - calculated from solid-phase volume changes accumulated into
volume_change_sms
variable.
Physical environment
Per-column environment is defined by oceanfloor
variables.
Parameters for prescribed time-independent porosity are set by oceanfloor.phi
and optionally oceanfloor.phimin
Prescribed accumulation rate is set by oceanfloor.w_accum
(omit or set to zero to calculate accumulation rate from solid-phase volume changes).
Temperature and salinity are set by oceanfloor.sal
, oceanfloor.temp
.
Parameters
f_porosity[String]
="Const",default_value
="Const",allowed_values
=["Const", "ExpAtten"],description
="functional form for porosity vs depth"zpor[Float64]
=0.1 (m),default_value
=0.1,description
="lengthscale for porosity if f_porosity=ExpAtten"w_solute[Bool]
=false,default_value
=false,description
="true to assume w_solute = w_solid at base of column, false to set w_solute=0.0 (ie zero solute velocity at great depth)"
Methods and Variables for default Parameters
do_sediment_phys
volume
(m^3),VT_ReactDependency
,description
="volume of sediment cells"volume_total
(m^3),VT_ReactDependency
,description
="total volume of sediment cells"Abox
(m^2),VT_ReactDependency
,description
="horizontal area of box"zupper
(m),VT_ReactDependency
,description
="depth of upper surface of box (m) 0 is surface, -100 is depth of 100 m"zlower
(m),VT_ReactDependency
,description
="depth of lower surface of box (m)"zmid
(m),VT_ReactDependency
,description
="mean depth of box"pressure
(dbar),VT_ReactDependency
,description
="sediment pressure"rho_ref
(kg m^-3),VT_ReactDependency
,description
="density conversion factor"oceanfloor_temp
–> oceanfloor.temp (K),VT_ReactDependency
,description
="oceanfloor temperature"oceanfloor_sal
–> oceanfloor.sal (psu),VT_ReactDependency
,description
="oceanfloor salinity"oceanfloor_phi
–> oceanfloor.phi (),VT_ReactDependency
,description
="sediment surface porosity"- [
oceanfloor_phimin
] –> oceanfloor.phimin (),VT_ReactDependency
,description
="sediment porosity at infinite depth" - [
oceanfloor_w_accum
] –> oceanfloor.w_accum (m yr-1),VT_ReactDependency
,description
="sediment accumulation rate (+ve)" phi
(),VT_ReactProperty
,description
="cell mean porosity (volume fraction of solute phase)"phi_solid
(),VT_ReactProperty
,description
="1.0 - cell mean porosity (volume fraction of solid phase)"phi_upper
(),VT_ReactProperty
,description
="porosity (volume fraction of solute phase) at cell upper face"phi_solid_upper
(),VT_ReactProperty
,description
="1.0 - porosity (volume fraction of solid phase) at cell upper face"phi_lower
(),VT_ReactProperty
,description
="porosity (volume fraction of solute phase) at cell lower face"phi_solid_lower
(),VT_ReactProperty
,description
="1.0 - porosity (volume fraction of solid phase) at cell lower face"volume_solute
(m^3),VT_ReactProperty
,description
="solute volume of sediment cells"volume_solid
(m^3),VT_ReactProperty
,description
="solid volume of sediment cells"temp
(Kelvin),VT_ReactProperty
,description
="sediment temperature"sal
(psu),VT_ReactProperty
,description
="sediment salinity"Dfac
(),VT_ReactProperty
,description
="tortuoisity-dependent multiplier for solute diffusivity"
do_sediment_w
volume
(m^3),VT_ReactDependency
,description
="volume of sediment cells"volume_total
(m^3),VT_ReactDependency
,description
="total volume of sediment cells"Abox
(m^2),VT_ReactDependency
,description
="horizontal area of box"zupper
(m),VT_ReactDependency
,description
="depth of upper surface of box (m) 0 is surface, -100 is depth of 100 m"zlower
(m),VT_ReactDependency
,description
="depth of lower surface of box (m)"zmid
(m),VT_ReactDependency
,description
="mean depth of box"pressure
(dbar),VT_ReactDependency
,description
="sediment pressure"rho_ref
(kg m^-3),VT_ReactDependency
,description
="density conversion factor"oceanfloor_temp
–> oceanfloor.temp (K),VT_ReactDependency
,description
="oceanfloor temperature"oceanfloor_sal
–> oceanfloor.sal (psu),VT_ReactDependency
,description
="oceanfloor salinity"oceanfloor_phi
–> oceanfloor.phi (),VT_ReactDependency
,description
="sediment surface porosity"- [
oceanfloor_phimin
] –> oceanfloor.phimin (),VT_ReactDependency
,description
="sediment porosity at infinite depth" - [
oceanfloor_w_accum
] –> oceanfloor.w_accum (m yr-1),VT_ReactDependency
,description
="sediment accumulation rate (+ve)" phi
(),VT_ReactDependency
,description
="cell mean porosity (volume fraction of solute phase)"phi_solid
(),VT_ReactDependency
,description
="1.0 - cell mean porosity (volume fraction of solid phase)"phi_upper
(),VT_ReactDependency
,description
="porosity (volume fraction of solute phase) at cell upper face"phi_solid_upper
(),VT_ReactDependency
,description
="1.0 - porosity (volume fraction of solid phase) at cell upper face"phi_lower
(),VT_ReactDependency
,description
="porosity (volume fraction of solute phase) at cell lower face"phi_solid_lower
(),VT_ReactDependency
,description
="1.0 - porosity (volume fraction of solid phase) at cell lower face"volume_solute
(m^3),VT_ReactDependency
,description
="solute volume of sediment cells"volume_solid
(m^3),VT_ReactDependency
,description
="solid volume of sediment cells"temp
(Kelvin),VT_ReactDependency
,description
="sediment temperature"sal
(psu),VT_ReactDependency
,description
="sediment salinity"Dfac
(),VT_ReactDependency
,description
="tortuoisity-dependent multiplier for solute diffusivity"volume_change_sms
(m^3 yr-1),VT_ReactTarget
,description
="change in volume due to production and consumption of solid phase components"w_solid_upper
(m yr-1),VT_ReactProperty
,description
="solid phase advection velocity (downwards is -ve) across upper cell face"w_solid_lower
(m yr-1),VT_ReactProperty
,description
="solid phase advection velocity (downwards is -ve) across lower cell face"w_solute_upper
(m yr-1),VT_ReactProperty
,description
="solute phase advection velocity (downwards is -ve) across upper cell face"w_solute_lower
(m yr-1),VT_ReactProperty
,description
="solute phase advection velocity (downwards is -ve) across lower cell face"
PALEOsediment.Sediment.SedimentBioRates.ReactionSedimentBioRates
— TypeReactionSedimentBioRates
Calculate sediment bioturbation and bioirrigation rates (for use by sediment transport).
Literature compilation of functional forms for dependency on oceanfloor oxygen, Corg flux, and depth within sediment, from (Boudreau, 1996), (Archer, 2002), (Arndt et al., 2011), (Dale et al., 2015)
Parameters
f_bioTurbRate[String]
="Prescribed",default_value
="Prescribed",allowed_values
=["Prescribed", "CorgArcher2002"],description
="functional form for bioturbation max rate"f_bioTurbDepth[String]
="ConstCutoff",default_value
="ConstCutoff",allowed_values
=["ConstCutoff", "ErfcCutoff", "Exp1Cutoff", "Exp2Cutoff"],description
="functional form of bioturbation rate with depth in sediment"f_bioIrrigDepth[String]
="ConstCutoff",default_value
="ConstCutoff",allowed_values
=["ConstCutoff", "ErfcCutoff", "Exp1Cutoff", "Exp2Cutoff"],description
="functional form of bioirrigation rate with depth in sediment"f_bioO2[String]
="None",default_value
="None",allowed_values
=["None", "MM", "Dale2015"],description
="functional form of bioturbation and bioirrigation sensitivity to oceanfloor oxygen"bioO2halfmax[Float64]
=0.02 (mol m-3),default_value
=0.02,description
="oceanfloor [O2] for 50% decrease in bioturbation/bioirrigation"bioO2decreaserate[Float64]
=0.012 (mol m-3),default_value
=0.012,description
="oceanfloor [O2] sharpness of decrease in bioturbation/bioirrigation"separate_zbio[Bool]
=false,default_value
=false,description
="true to use zbioturb, zbioirrig variables, false to use zbio for both bioturbation and bioirrigation"
Methods and Variables for default Parameters
METHODS PALEOboxes.DocStrings.Methods(:methods_do) exception: ErrorException("PALEOsediment.Sediment.SedimentBioRates.ReactionSedimentBioRates register_methods! not implemented")
PALEOsediment.Sediment.SedimentTransport.ReactionSedimentTransportSolid
— TypeReactionSedimentTransportSolid
Sediment solid-phase transport for n x 1D sediment columns.
The sediment grid is defined by eg PALEOsediment.Sediment.SedimentGrid.ReactionSedimentGridn1D
.
Physical parameters (porosity, advection velocity) are defined by eg `PALEOsediment.Sediment.SedimentPhys.ReactionSedimentPhys.
Physical environment
Bioturbation rates should be supplied on the sediment grid by eg PALEOsediment.Sediment.SedimentBioRates.ReactionSedimentBioRates
.
Transport fluxes
The variable name suffix for transport source-minus-sink flux can be set by the trspt_sms_ext
parameter:
"_sms"
(default value) adds transport fluxes to the same"_sms
` variable used for biogeochemical fluxes, for use with a sediment configuration that prescribes advection velocity."_trspt_sms"
adds transport fluxes to a separate variable provided by eg aPALEOsediment.Sediment.SedimentReservoirs.ReactionSedSolidReservoir
for use with a sediment or mat configuration that calculates advection velocity from solid-phase volume changes due to non-transport processes. NB: this is consistent with bioturbation exchanging equal volumes of material so it doesn't result in advection.
Transport components and species
Each component <totalname>
to be transported should be defined by a source-minus-sink flux <totalname>_<trspt_sms_ext>
, and one or more concentration Variables with names of form <speciesname>_conc
Solid concentration Variables are identified by attributes vphase == VP_Solid
and advect == true
, and are transported by bioturbation and advection.
Transport fluxes are then accumulated into vectors <totalname>_<trspt_sms_ext>
:
- If the
totalnames
attribute is not set on a variable<speciesname>_conc
, thentotalname
is assumed to be the same asspeciesname
and transport fluxes are accumulated into<speciesname>_<trspt_sms_ext>
. - If the
totalnames
attribute is set to a Vector of strings["mult_1*totalname_1", ... "mult_n*totalname_n"]
, then this is used to define the appropriate vector of[<totalname_n>_sms]
fluxes (allowing multiple species concentrations with different transport properties or phases for each<totalname>_<trspt_sms_ext>
, and each species to contribute to multiple<totalname_n>_<trspt_sms_ext>
with a stoichiometry multipliermult_n
).
Boundary conditions
Input particulate fluxes should be added by the fluxOceanfloor
flux coupler to the surface sediment cells by linking to Variables in the sediment.oceanfloor
subdomain, ie to sediment.oceanfloor.<totalname>_sms
.
Burial fluxes are the base of the sediment columns are defined in the Domain
fluxOceanBurial
.
Parameters
trspt_sms_ext[String]
="_sms",default_value
="_sms",allowed_values
=["sms", "trspt_sms"],description
="extension to use to accumulate advective transport contributions"
Methods and Variables for default Parameters
PALEOsediment.Sediment.SedimentTransport.ReactionSedimentTransportSolute
— TypeSedimentTransportSolute
Sediment solute transport for n x 1D sediment columns.
The sediment grid is defined by eg PALEOsediment.Sediment.SedimentGrid.ReactionSedimentGridn1D
.
Physical parameters (porosity, advection velocity) are defined by eg `PALEOsediment.Sediment.SedimentPhys.ReactionSedimentPhys.
Physical environment
Bioturbation and bioirrigation rates should be supplied on the sediment grid by eg PALEOsediment.Sediment.SedimentBioRates.ReactionSedimentBioRates
.
Transport components and species
Each component <totalname>
to be transported should be defined by a source-minus-sink flux <totalname>_sms
, and one or more concentration Variables with names of form <speciesname>_conc
Solute concentration Variables are identified by attributes vphase == VP_Solute
and advect == true
, and are transported by diffusion, bioturbation and bioirrigation, and advection. Species-specific solute diffusivities are calculated either based on the attribute diffusivity_speciesname
of the <speciesname>_conc
solute Variables, which should be one of the names available from PALEOaqchem.MolecularDiffusion.create_solute_diffusivity_func
, or (if diffusivity_speciesname
is not set ie an empty string) by the attribute diffusivity
(units cm^2 s-1).
Transport fluxes are then accumulated into vectors <totalname>_sms
:
- If the
totalnames
attribute is not set on a variable<speciesname>_conc
, thentotalname
is assumed to be the same asspeciesname
and transport fluxes are accumulated into<speciesname>_sms
. - If the
totalnames
attribute is set to a Vector of strings["mult_1*totalname_1", ... "mult_n*totalname_n"]
, then this is used to define the appropriate vector of[<totalname_n>_sms]
fluxes (allowing multiple species concentrations with different transport properties or phases for each<totalname>_sms
, and each species to contribute to multiple<totalname_n>_sms
with a stoichiometry multipliermult_n
).
Boundary conditions
Oceanfloor solute fluxes should be defined in the Domain
fluxOceanfloor
, with names fluxOceanfloor.soluteflux_<totalname>
.
Burial fluxes are the base of the sediment columns are defined in the Domain
fluxOceanBurial
.
Parameters
zdbl[Float64]
=0.0004 (m),default_value
=0.0004,description
="diffusive boundary layer thickness at sediment - water column interface"solute_burial_flux[Bool]
=false,default_value
=false,description
="true to include solute burial flux terms"
Methods and Variables for default Parameters
Sediment reservoirs
PALEOsediment.Sediment.SedimentReservoirs.ReactionSedSolidReservoir
— TypeReactionSedSolidReservoir, ReactionSedSolidReservoirTotal
A single (vector) reservoir (state variable) representing a solid phase biogeochemical tracer in a sediment
Parameter molar_volume
defines density, used to calculate R_volume_frac
(fraction of solid phase volume) and add a contribution to volume_change_sms (m^3 yr-1)
calculated from R_sms
Creates R_conc
(mol m-3) and R_conc_sms
(mol m-3 yr-1) as state variable and source-sink provided to the solver, and calculates R
(mol).
Accumulation of fluxes into _sms
is split into R_sms
and R_trspt_sms
to allow calculation of advective velocity from volume_change_sms
:
- biogeochemical transformations and diffusive transport (bioturbation) should be added to
R_sms
(mol yr-1) (these are included involume_change_sms
) - advective transport should be added to
R_trspt_sms
(not included involume_change_sms
). R_conc_sms
adds up contributions fromR_sms
andR_trspt_sms
for use by the numerical solver.
Isotopes:
- if parameter
field_data <: AbstractIsotopeScalar
(egIsotopeLinear
), a PropertyR_delta
is created. ReactionSedSolidReservoirTotal
also calculates the Domain totalR_total
(units mol), eg to check budgets.
Local name prefix R
should then be renamed using variable_links:
in the configuration file.
Initialisation
Initial value is set using variable_attributes:
in the configuration file, using R_conc:initial_value (mol m-3 solid phase)
and R_conc:initial_delta
.
Example configuration in .yaml file
reservoir_Corg: # sediment Corg
class: ReactionSedSolidReservoirTotal # include _total (mol)
parameters:
molar_volume: 12e-6 # m^3 / mol M (Cx 30 g mol, density 2.5 g / cm3 = 30 / 2.5 * 1e-6 )
variable_links:
R*: Corg*
volume: volume_solid
variable_attributes:
R_conc:vphase: VP_Solid
R_conc:initial_value: 0.0 # concentration m-3 solid phase
R_conc:norm_value: 8.3e4 # mol m-3 solid (~ 1 / molar_volume)
See also
ReactionReservoir
Parameters
field_data[DataType]
=PALEOboxes.ScalarData,default_value
=PALEOboxes.ScalarData,allowed_values
=Type[PALEOboxes.ScalarData, PALEOboxes.IsotopeLinear],description
="disable / enable isotopes and specify isotope type"total[Bool]
=false,default_value
=false,description
="true to calculate R_total"molar_volume[Float64]
=1000.0 (m^3 mol-1),default_value
=1000.0,description
="molar volume"limit_delta_conc[Float64]
=0.0 (mol m-3),default_value
=0.0,description
="**EXPERIMENTAL** attempt to limit delta for low/-ve concentrations (0.0 to disable)"
Methods and Variables for default Parameters
do_reactionsedsolidreservoir
R
(mol),VT_ReactProperty
,description
="vector reservoir"R_volume_frac
(),VT_ReactProperty
,description
="fraction of solid phase volume"R_conc
(mol m-3),VT_ReactDependency
,VF_StateExplicit
,description
="concentration"volume
(m3),VT_ReactDependency
,description
="cell volume (or cell phase volume eg for a sediment with solid and liquid phases)"
do_reactionsedsolidreservoir_volume_change
R_sms
(mol yr-1),VT_ReactTarget
,description
="vector reservoir biogeochemical source-sinks"volume_change_sms
(m^3 yr-1),VT_ReactContributor
,description
="change in volume due to production and consumption of solid phase components"
do_reactionsedsolidreservoirconc_sms
volume
(m3),VT_ReactDependency
,description
="cell volume (or cell phase volume eg for a sediment with solid and liquid phases)"R_conc_sms
(mol m-3 yr-1),VT_ReactContributor
,VF_Deriv
,description
="vector reservoir source-sinks"R_sms
(mol yr-1),VT_ReactDependency
,description
="vector reservoir biogeochemical source-sinks"R_trspt_sms
(mol yr-1),VT_ReactTarget
,description
="vector reservoir transport source-sinks"