PALEOsediment Reactions
Sediment transport
PALEOsediment.Sediment.SedimentGrid.ReactionSedimentGridn1D — TypeReactionSedimentGridn1DSediment 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 — TypeReactionSedimentPhysCalculate 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_smsvariable.
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_physvolume(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_wvolume(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 — TypeReactionSedimentBioRatesCalculate 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 — TypeReactionSedimentTransportSolidSediment 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.ReactionSedSolidReservoirfor 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
totalnamesattribute is not set on a variable<speciesname>_conc, thentotalnameis assumed to be the same asspeciesnameand transport fluxes are accumulated into<speciesname>_<trspt_sms_ext>. - If the
totalnamesattribute 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 — TypeSedimentTransportSoluteSediment 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
totalnamesattribute is not set on a variable<speciesname>_conc, thentotalnameis assumed to be the same asspeciesnameand transport fluxes are accumulated into<speciesname>_sms. - If the
totalnamesattribute 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>_smswith 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, ReactionSedSolidReservoirTotalA 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_smsadds up contributions fromR_smsandR_trspt_smsfor use by the numerical solver.
Isotopes:
- if parameter
field_data <: AbstractIsotopeScalar(egIsotopeLinear), a PropertyR_deltais created. ReactionSedSolidReservoirTotalalso 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_reactionsedsolidreservoirR(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_changeR_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_smsvolume(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"