PALEOocean Reactions
Ocean geometry and circulation transport
PALEOocean.Ocean.OceanNoTransport.ReactionOceanNoTransport — TypeReactionOceanNoTransportN ocean boxes (default N=1 ie a single 0-D box), each with a surface and floor, no transport.
Parameters
area[Vector{Float64}]=[1.0] (m^2),default_value=[1.0],description="surface / floor area (per box)"depth[Vector{Float64}]=[1.0] (m),default_value=[1.0],description="depth (per box)"
Methods and Variables
do_setup_gridvolume(m^3),VT_ReactProperty,description="volume of ocean cells"volume_total(m^3),VT_ReactProperty,description="total volume of ocean cells"Abox(m^2),VT_ReactProperty,description="horizontal area of box"zupper(m),VT_ReactProperty,description="depth of upper surface of box (m) 0 is surface, -100 is depth of 100 m"zlower(m),VT_ReactProperty,description="depth of lower surface of box (m)"zmid(m),VT_ReactProperty,description="mean depth of box"rho_ref(kg m^-3),VT_ReactProperty,description="Ocean transport model density conversion factor (NB: this an artificial model quantity determined by the offline model for tracer transport, and may be distinct from physical ocean density, and from any density anomaly / potl density used by the offline physical model)"pressure(dbar),VT_ReactProperty,description="Ocean pressure"Afloor–> oceanfloor.Afloor (m^2),VT_ReactProperty,description="horizontal area of seafloor at base of box"Afloor_total–> oceanfloor.Afloor_total (m^2),VT_ReactProperty,description="total area of seafloor"zfloor–> oceanfloor.zfloor (m),VT_ReactProperty,description="depth of ocean floor (m, -ve)"Asurf–> oceansurface.Asurf (m^2),VT_ReactProperty,description="horizontal area of oceansurface"
PALEOocean.Ocean.OceanTransport3box.ReactionOceanTransport3box — TypeReactionOceanTransport3box3-box (Sarmiento and Toggweiler, 1984), (Toggweiler and Sarmiento, 1985) ocean model.
---------------------------------------
| 1 (s) | 2(h) |
| -->--->- |
|-------------------|----| | |
| | | | /|\ |
| | |__|______|___|
| | | | |
| 3 (d) -<--<-- \|/ |
| circT fhd |
| |
----------------------------------------Parameters
circT[Float64]=2.0e7 (m^3 s^-1),default_value=2.0e7,description="overturning circulation"circfhd[Float64]=6.0e7 (m^3 s^-1),default_value=6.0e7,description="high latitude <-> deep exchange rate"temp[Vector{Float64}]=[21.5, 2.5, 2.5] (degrees C),default_value=[21.5, 2.5, 2.5],description="ocean temperature"temp_trackglobal[Bool]=false,default_value=false,description="track global temperature (apply offset of global temp -15C"
Methods and Variables for default Parameters
do_setup_gridvolume(m^3),VT_ReactProperty,description="volume of ocean cells"volume_total(m^3),VT_ReactProperty,description="total volume of ocean cells"Abox(m^2),VT_ReactProperty,description="horizontal area of box"zupper(m),VT_ReactProperty,description="depth of upper surface of box (m) 0 is surface, -100 is depth of 100 m"zlower(m),VT_ReactProperty,description="depth of lower surface of box (m)"zmid(m),VT_ReactProperty,description="mean depth of box"rho_ref(kg m^-3),VT_ReactProperty,description="Ocean transport model density conversion factor (NB: this an artificial model quantity determined by the offline model for tracer transport, and may be distinct from physical ocean density, and from any density anomaly / potl density used by the offline physical model)"pressure(dbar),VT_ReactProperty,description="Ocean pressure"Afloor–> oceanfloor.Afloor (m^2),VT_ReactProperty,description="horizontal area of seafloor at base of box"Afloor_total–> oceanfloor.Afloor_total (m^2),VT_ReactProperty,description="total area of seafloor"zfloor–> oceanfloor.zfloor (m),VT_ReactProperty,description="depth of ocean floor (m, -ve)"Asurf–> oceansurface.Asurf (m^2),VT_ReactProperty,description="horizontal area of oceansurface"sal(psu),VT_ReactProperty,description="Ocean salinity"rho(kg m^-3),VT_ReactProperty,description="physical ocean density"open_area_fraction–> oceansurface.open_area_fraction (),VT_ReactProperty,description="fraction of area open to atmosphere"
do_temperature- [
TEMP] –> global.TEMP (K),VT_ReactDependency,description="global mean temperature" temp(K),VT_ReactProperty,description="Ocean temperature"
- [
PALEOocean.Ocean.OceanTransport6box.ReactionOceanTransport6box — TypeReactionOceanTransport6box4+2-box ocean model from (Daines and Lenton, 2016) This is based on:
- the four-box model of (Hotinski et al., 2000)
- the five-box model of (Watson, 1995)
- the upwelling region representation of (Canfield, 2006)
There are two main ingredients here:
An open-ocean 'intermediate/thermocline' box(i) from (Hotinski et al., 2000), coupled to the low-latitude surface box via an Ekman pumping term and to high latitude box (h) via an overturning circulation term. This is a more realistic representation of the open ocean than the 3-box (Sarmiento and Toggweiler, 1984), (Toggweiler and Sarmiento, 1985) model.
A two-box shelf/slope (boxes r, rc), which can be configured as
- an upwelling region (k_slopetype='OMZ'), cf Canfield (2006) with upwelling from the intermediate/thermocline box
- a low-latitude shelf (k_slopetype='shelf') with exchange terms to low-latitude surface (s) and thermocline (i) boxes
See Oxygen oases\Box Model 20150922\HotinskiCalc5Box.m, HotinskiConstants5Box.m, HotinskiCalcCirc6.m
-------------------------------------------------- | 5(r) | 1 (s) | 2(h) | | | | | |-----------|------------------------| | | 6(rc) | | | | | 3 (i) |_____________| -----------| | | | |------------------------ | | 4(d) | | | -----------------------------------------------
Parameters
slopetype[String]="OMZ",default_value="OMZ",allowed_values=["OMZ", "shelf"],description="type of shelf circulation (boxes r, rc)"circT[Float64]=1.93e7 (m^3 s^-1),default_value=1.93e7,description="overturning circulation (exchange high lat (h) to deep (d) and thermocline (i)"circfhd[Float64]=4.87e7 (m^3 s^-1),default_value=4.87e7,description="high latitude <-> deep exchange rate"circR[Float64]=2.0e7 (m^3 s^-1),default_value=2.0e7,description="upwelling thermocline (i) to slope (rc) to upwell (r) to low lat surface (s)"totalEkman[Float64]=6.0e7 (m^3 s^-1),default_value=6.0e7,description="total wind-driven Ekman pumping"circS[Float64]=1.0e6 (m^3 s^-1),default_value=1.0e6,description="upwell(r) <-> low lat surf box (s) exchange"temp[Vector{Float64}]=[21.5, 2.5, 2.5, 2.5, 21.5, 2.5] (degrees C),default_value=[21.5, 2.5, 2.5, 2.5, 21.5, 2.5],description="ocean temperature"temp_trackglobal[Bool]=false,default_value=false,description="track global temperature (apply offset of global temp -15C"
Methods and Variables for default Parameters
do_setup_gridvolume(m^3),VT_ReactProperty,description="volume of ocean cells"volume_total(m^3),VT_ReactProperty,description="total volume of ocean cells"Abox(m^2),VT_ReactProperty,description="horizontal area of box"zupper(m),VT_ReactProperty,description="depth of upper surface of box (m) 0 is surface, -100 is depth of 100 m"zlower(m),VT_ReactProperty,description="depth of lower surface of box (m)"zmid(m),VT_ReactProperty,description="mean depth of box"rho_ref(kg m^-3),VT_ReactProperty,description="Ocean transport model density conversion factor (NB: this an artificial model quantity determined by the offline model for tracer transport, and may be distinct from physical ocean density, and from any density anomaly / potl density used by the offline physical model)"pressure(dbar),VT_ReactProperty,description="Ocean pressure"Afloor–> oceanfloor.Afloor (m^2),VT_ReactProperty,description="horizontal area of seafloor at base of box"Afloor_total–> oceanfloor.Afloor_total (m^2),VT_ReactProperty,description="total area of seafloor"zfloor–> oceanfloor.zfloor (m),VT_ReactProperty,description="depth of ocean floor (m, -ve)"Asurf–> oceansurface.Asurf (m^2),VT_ReactProperty,description="horizontal area of oceansurface"sal(psu),VT_ReactProperty,description="Ocean salinity"rho(kg m^-3),VT_ReactProperty,description="physical ocean density"open_area_fraction–> oceansurface.open_area_fraction (),VT_ReactProperty,description="fraction of area open to atmosphere"
do_temperature- [
TEMP] –> global.TEMP (K),VT_ReactDependency,description="global mean temperature" temp(K),VT_ReactProperty,description="Ocean temperature"
- [
PALEOocean.Ocean.OceanTransportColumn.ReactionOceanTransportColumn — TypeReactionOceanTransportColumnSet up 1D ocean column grid, provide tracer transport using supplied eddy diffusivity Kz.
A netCDF file (name specified by grid_file parameter) should provide zupper, zmid, zlower (m) defining z coordinates of cell surfaces and centres for a 1D column.
Eddy diffusivity on cell upper surfaces should be provided by a variable Kz (m^2 s-1).
Parameters
grid_file[String]="S2P3_depth80_m2amp04.nc",default_value="S2P3_depth80_m2amp04.nc",description="netcdf file with grid data (zmid, zupper, zlower)"column_area[Float64]=1.0 (m^2),default_value=1.0,description="column area"
Methods and Variables
METHODS PALEOboxes.DocStrings.Methods(:methods_setup) exception: ErrorException("PALEOocean.Ocean.OceanTransportColumn.ReactionOceanTransportColumn register_methods! not implemented")
METHODS PALEOboxes.DocStrings.Methods(:methods_do) exception: ErrorException("PALEOocean.Ocean.OceanTransportColumn.ReactionOceanTransportColumn register_methods! not implemented")
PALEOocean.Ocean.OceanTransportRomaniello2010.ReactionOceanTransportRomanielloICBM — TypeReactionOceanTransportRomanielloICBMModern global and Black Sea ocean transport from (Romaniello and Derry, 2010) (Romaniello and Derry, 2010),
Global configurations (circname = Global_79_Box, circname = Global_13_Box):
The ocean Domain consists of three columns, :hlat, :gyre, :upw
Ocean box indices are:
:hlat :gyre :upw
---------------------------
| 1 | 14 | 47 |
| | | |
| | | |
| | | |
| 13 | 46 | 79 |
-------------------
:hlat :gyre :upw
---------------------------
| 1 | 4 | 9 |
| | | |
| | | |
| | | |
| 3 | 8 | 13 |
-------------------The oceansurface Domain has three boxes, the oceanfloor Domain has 1 box per ocean box.
Black Sea configuration (circname = Black_Sea)
The ocean Domain consists of a single column. The oceansurface Domain has one box, the oceanfloor Domain has 1 box per ocean box.
Bosphorus outflow flux (Parameter bosph_outflow) is represented by Variables with default linking to a fluxBosphorusOutflow Domain:
bosph_outflow_<X> --> fluxBosphorusOutflow.flux_<X>The .yaml configuration file can be used to configure a closed system by adding outflow flux back into the ocean surface:
variable_links:
bosph_outflow_*: ocean.oceansurface.*_smsBosphorus inflow (plume) flux is represented by Variables with default linking to concentrations and source - sink fluxes in a BosphorusInflow Domain:
bosph_inflow_<X>_conc --> BosphorusInflow.<X>_conc
bosph_inflow_<X>_sms --> BosphorusInflow.<X>_sms # will be -ve for flux into Black Seathe .yaml configuration file can be used to configure a closed system by sourcing inflow flux from ocean surface:
variable_links:
bosph_inflow_*_conc: ocean.oceansurface.*_conc
bosph_inflow_*_sms: ocean.oceansurface.*_smsImplementation
Reads Matlab .mat files created from the published SI with Matlab commands:
>> circ_global_79_box = Global_79_Box_ICBM_Params
>> circ_global_13_box = Global_13_Box_ICBM_Params
>> circ_black_sea = Black_Sea_ICBM_Params
>> save('romaniello_global79','-struct', 'circ_global_79_box', '-v6')
>> save('romaniello_global13','-struct', 'circ_global_13_box', '-v6')
>> save('romaniello_blacksea','-struct', 'circ_black_sea', '-v6')Parameters
matdir[String]="romaniello2010_transport",default_value="romaniello2010_transport",description="folder with Romaniello (2010) transport and geometry data files"circname[String]="Global_79_Box",default_value="Global_79_Box",allowed_values=["Global79Box", "Global13Box", "Black_Sea"],description="transport matrix from Romaniello(2010) G3"set_temp[Bool]=true,default_value=true,description="true to provide and set ocean.temp variable to (very approximate) values"temp_trackglobal[Bool]=false,default_value=false,description="track global temperature (apply offset of global temp -15C"bosph_outflow[Float64]=6.04e11 (m^3 yr^-1),default_value=6.04e11,description="Bosphorus outflow (Black_Sea only)"bosph_inflow[Float64]=3.05e11 (m^3 yr^-1),default_value=3.05e11,description="Bosphorus inflow (plume, Black_Sea only)"
Methods and Variables
do_setup_gridvolume(m^3),VT_ReactProperty,description="volume of ocean cells"volume_total(m^3),VT_ReactProperty,description="total volume of ocean cells"Abox(m^2),VT_ReactProperty,description="horizontal area of box"zupper(m),VT_ReactProperty,description="depth of upper surface of box (m) 0 is surface, -100 is depth of 100 m"zlower(m),VT_ReactProperty,description="depth of lower surface of box (m)"zmid(m),VT_ReactProperty,description="mean depth of box"rho_ref(kg m^-3),VT_ReactProperty,description="Ocean transport model density conversion factor (NB: this an artificial model quantity determined by the offline model for tracer transport, and may be distinct from physical ocean density, and from any density anomaly / potl density used by the offline physical model)"pressure(dbar),VT_ReactProperty,description="Ocean pressure"Afloor–> oceanfloor.Afloor (m^2),VT_ReactProperty,description="horizontal area of seafloor at base of box"Afloor_total–> oceanfloor.Afloor_total (m^2),VT_ReactProperty,description="total area of seafloor"zfloor–> oceanfloor.zfloor (m),VT_ReactProperty,description="depth of ocean floor (m, -ve)"Asurf–> oceansurface.Asurf (m^2),VT_ReactProperty,description="horizontal area of oceansurface"sal(psu),VT_ReactProperty,description="Ocean salinity"rho(kg m^-3),VT_ReactProperty,description="physical ocean density"open_area_fraction–> oceansurface.open_area_fraction (),VT_ReactProperty,description="fraction of area open to atmosphere"
do_temperature- [
TEMP] –> global.TEMP (K),VT_ReactDependency,description="global mean temperature" temp(K),VT_ReactProperty,description="Ocean temperature"
- [
PALEOocean.Ocean.OceanTransportTMM.ReactionOceanTransportTMM — TypeReactionOceanTransportTMMGCM ocean transport implementation using transport matrices in format defined by (Khatiwala, 2007) Requires download of Samar Khatiwala's TMM files (for MITgcm, UVic models) as described in https://github.com/samarkhatiwala/tmm where TM files are from http://kelvin.earth.ox.ac.uk/spk/Research/TMM/TransportMatrixConfigs/
NB: length(operatorID) must be 2, to define operatorID[1] for explicit and operatorID[2] for implicit matrices.
The base_path parameter sets the top level of the folder structure for the downloaded matrices.
Code based on TMM/tmm/models/petsc3.4/mitgchem/matlab/make_input_files_for_migchem_dic_biotic_model.m
Parameters
base_path[String]="$TMMDir$/MITgcm_2.8deg",default_value="$TMMDir$/MITgcm_2.8deg",description="directory containing transport matrices"sal_norm[Bool]=false,default_value=false,description="apply salinity normalisation to transport matrix"use_annualmean[Bool]=false,default_value=false,description="true to read annual mean matrix"num_seasonal[Int64]=12,default_value=12,description="number of seasonal matrices"Aimp_deltat[Int64]=86400 (seconds),default_value=86400,description="timestep to derive upscaling factor for implicit transport matrix"kji_order[Bool]=true,default_value=true,description="true to sort indices into k,j,i order to optimise memory layout"pack_chunk_width[Int64]=4,default_value=4,allowed_values=[0, 2, 4, 8, 16],description="non-zero to enable SIMD packed transport matrix multiply"TMfpsize[Int64]=64 (bits),default_value=64,allowed_values=[32, 64],description="FP size for transport matrix"
Methods and Variables
METHODS PALEOboxes.DocStrings.Methods(:methods_setup) exception: MethodError(convert, (PALEOboxes.Domain, nothing), 0x0000000000007bcd)
Vertical Transport
PALEOocean.Ocean.VerticalTransport.ReactionLightColumn — TypeReactionLightColumnCalculate light availability insol in ocean interior, given surface insolation surface_insol.
Includes: (i) a background_opacity; (ii) contributions from any Variables representing concentrations with non-zero specific_light_extinction attribute; (iii) any other opacity contributions added to the Target Variable opacity.
Parameters
background_opacity[Float64]=0.04 (m-1),default_value=0.04,description="background opacity"
PALEOocean.Ocean.VerticalTransport.ReactionExportDirect — TypeReactionExportDirectVertical particle sinking represented as instantaneous transport, described by fixed matrices (suitable for small ocean models)
Transports a list of fluxes defined by parameter fluxlist, from input Target Variables with local name export_<flux in fluxlist> to output Contributor Variables remin_<flux in fluxlist>.
Matrices are defined by parameter transportocean for sinking within water column, and parameter transportfloor for flux to ocean floor.
For larger, column-based ocean models use ReactionExportDirectColumn.
Parameters
fluxlist[Vector{String}]=["P", "N", "Corg"],default_value=["P", "N", "Corg"],description="names of fluxes to transport"transportocean[Vector{Vector{Float64}}]=Vector{Float64}[],default_value=Vector{Float64}[],description="matrix describing ocean export"transportfloor[Vector{Vector{Float64}}]=Vector{Float64}[],default_value=Vector{Float64}[],description="matrix describing oceanfloor export"conserv_errthresh[Float64]=1.0e-5,default_value=1.0e-5,description="error threshold for conservation check (fraction of input)"
PALEOocean.Ocean.VerticalTransport.ReactionExportDirectColumn — TypeReactionExportDirectColumnVertical particle sinking represented as instantaneous transport. As ReactionExportDirect, but for regular column-based models with functional form of flux vs depth defined by exportfunction parameter.
Transports a list of fluxes defined by parameter fluxlist, from input Target Variables with local name export_<flux in fluxlist> to output Contributor Variables remin_<flux in fluxlist>.
Parameters
fluxlist[Vector{String}]=String[],default_value=String[],description="names of fluxes to transport"transportfloor[Bool]=true,default_value=true,description="true to provide oceanfloor flux, false to recycle flux into lowest ocean cell"exportfunction[String]="SumExp",default_value="SumExp",allowed_values=["Martin", "SumExp"],description="functional form for particle flux vs depth"input_frac[Vector{Float64}]=[1.0],default_value=[1.0],description="fractions of input for each component ([1.0] for Martin, length=number of components for SumExp"sumexp_scale[Vector{Float64}]=[500.0] (m),default_value=[500.0],description="length scales for each component of exponential decay of flux with depth"martin_rovera[Float64]=0.858,default_value=0.858,description="Martin power law exponent: flux \propto depth^rovera"martin_depthmin[Float64]=100.0 (m),default_value=100.0,description="Martin power law minimum depth for start of decay with depth"
PALEOocean.Ocean.VerticalTransport.ReactionSinkFloat — TypeReactionSinkFloatVertical particle advection.
Applied to all concentration Variables with non-zero attribute :vertical_movement (m d-1, +ve upwards), using naming convention <name>_conc to identify <name>_sms Deriv Variable to apply to. An optional variable <name>_w may be defined that overrides :vertical_movement to define spatially-variable vertical motion.
Parameters
transportfloor[Bool]=true,default_value=true,description="true to provide oceanfloor flux, false to recycle flux into lowest ocean cell"
Biological Production
PALEOocean.Ocean.BioProd.ReactionBioProdPrest — TypeReactionBioProdPrestP-limited biological production, configurable to restore P to specified level or to consume fraction of nutrients
Parameters
bioprod[Vector{Int64}]=Int64[],default_value=Int64[],allowed_values=[0, 1, 2, 3],description="production type (per cell): 0 - none, 1 - restore to absolute conc, 2 - consume fraction of nutrients supplied, 3 - restore to fraction of ocean mean"bioprodval[Vector{Float64}]=Float64[] (m-3 or none),default_value=Float64[],description="conc or frac corresponding to 'bioprod'"rCorgPO4[Float64]=106.0,default_value=106.0,description="Corg:P Redfield ratio of organic matter produced"rNPO4[Float64]=16.0,default_value=16.0,description="N:P Redfield ratio of organic matter produced"rCcarbCorg[Float64]=0.0,default_value=0.0,description="ratio of Ccarb to Corg produced"trest[Float64]=0.1 (yr),default_value=0.1,description="restoring timescale"CIsotope[external, DataType]=PALEOboxes.ScalarData,default_value=PALEOboxes.ScalarData,allowed_values=Type[PALEOboxes.ScalarData, PALEOboxes.IsotopeLinear],description="disable / enable carbon isotopes and specify isotope type"
Methods and Variables for default Parameters
do_bio_prod_Prestvolume(m^3),VT_ReactDependency,description="ocean cell volume"volume_total(m^3),VT_ReactDependency,description="ocean total volume"P_conc(mol m^-3),VT_ReactDependency,description="total P concentration"Prod_Corg–> %reaction%Prod_Corg (mol yr-1),VT_ReactProperty,description="organic carbon production rate"Prod_Ccarb–> %reaction%Prod_Ccarb (mol yr-1),VT_ReactProperty,description="carbonate production rate"P_sms(mol yr-1),VT_ReactContributor,description="total dissolved P source minus sink"- [
O2_sms] (mol yr-1),VT_ReactContributor,description="O2 source minus sink" - [
TAlk_sms] (mol yr-1),VT_ReactContributor,description="TAlk source minus sink" - [
DIC_sms] (mol yr-1),VT_ReactContributor,description="DIC source minus sink" - [
enable_bioprod] –> global.enable_bioprod (),VT_ReactDependency,description="optional forcing, =0.0 to disable, !=0.0 to enable" - [
PELCALC] –> global.PELCALC (),VT_ReactDependency,description="optional forcing for pelagic calcification" - [
prod_P] (mol yr-1),VT_ReactContributor,description="flux P" - [
prod_N] (mol yr-1),VT_ReactContributor,description="flux N" - [
prod_Corg] (mol yr-1),VT_ReactContributor,description="flux Corg" - [
prod_Ccarb] (mol yr-1),VT_ReactContributor,description="flux Ccarb"
totalsProd_Corg–> %reaction%Prod_Corg (mol yr-1),VT_ReactDependency,description="organic carbon production rate"Prod_Ccarb–> %reaction%Prod_Ccarb (mol yr-1),VT_ReactDependency,description="carbonate production rate"Prod_Corg_total(mol yr-1),VT_ReactProperty,description="total organic carbon production rate"Prod_Ccarb_total(mol yr-1),VT_ReactProperty,description="total carbonate production rate"
PALEOocean.Ocean.BioProd.ReactionBioProdMMPop — TypeReactionBioProdMMPopOcean phytoplankton biological production.
Configurable to represent oxygenic photosynthesizers with P, N limitation, nitrogen fixers, anoxygenic photosynthesis limited by electron donor availability.
Export production or production is represented as a combination of limiting factors:
population_size x nutrient_limitation x light_limitation x temperature_limitation x electron_donor_limitation
population_size may be either implicit (either a constant or ∝ nutrient concentration, generating GENIE-like parameterisations of export production), or represented explicitly as a state variable (in which case production is accumulated into a state variable phytP_conc, and k_grazeresprate defines a background loss rate that is exported).
Export production is than partitioned into DOM flux (components domprod_P, domprod_N, domprod_Corg) and particulate flux (components partprod_P, partprod_N, partprod_Corg, partprod_Ccarb) fractions according to parameter k_nuDOM.
See (Kriest et al., 2010) for a comparison of models of this type.
Production functional forms
population_size
Set by k_poptype parameter:
Constant:k_uPO4(mol P / m-3 / yr) (represents export production)Nutrient:k_mu*P_conc(mol P / m-3 / yr) (represents export production)Pop:k_mu*phytP_conc(mol P / m-3 / yr) (represents growth of explicit populationphtyP_conc)
nutrient_limitation
Set by k_nuttype parameter:
PO4MM:P_conc / (P_conc + k_KPO4)PO4NMM: P, N limited phytoplankton export production: cf GENIE2N2T_PO4MM_NO3, (Fennel, 2005)PO4NMMNfix: P limited nitrogen-fixer export production: cf GENIE2N2T_PO4MM_NO3, (Fennel, 2005)
light_limitation
Set by k_lightlim parameter:
fixed: constantk_Irellinear: GENIE-like formk_Irel*insol/PB.Constants.k_solar_presentdaywhereinsol(W m-2) is provided insolation in each cellMM: MITgcm-like saturating formzInsol/(k_Ic + zInsol)wherezInsol = k_Irel*insolandinsolis provided PAR in each cellQE: Saturating light limitation of rate vs (local) PARk_Irel*insol, derived from photosynthetic QEk_alphaQEand chl absorption cross sectionk_thetaChlC. See eg (Geider, 1987) for summary of notation and unit conversions.
temperature_limitation
Set by k_templim parameter:
Constant: constant value 1.0Eppley: Eppley curve, normalized to 1.0 at 0 deg C,exp(0.0633*(temp - PB.Constants.k_CtoK))
electron_donor_limitation
Set by k_edonor parameter:
H2O: constant 1.0, no electron-donor limitation on productionH2S:H2S_conc / (H2S_conc + k_KH2S)production limited by H2S concentration
Examples
k_poptype | k_nuttype | k_lightlim | k_templim | k_edonor | Reference |
|---|---|---|---|---|---|
| Constant | PO4MM | linear | Constant | H2O | P and light limited export production, as used by GENIE (Ridgwell et al., 2007) |
| Pop | PO4MM | QE | Eppley | H2O | P and light limited phytoplankton population |
Parameters
rCorgPO4[Float64]=106.0,default_value=106.0,description="Corg:P Redfield ratio of organic matter produced"rNPO4[Float64]=16.0,default_value=16.0,description="N:P Redfield ratio of organic matter produced"rCcarbCorg[Float64]=0.0,default_value=0.0,description="ratio of Ccarb to Corg produced"rCcarbCorg_fixed[Bool]=true,default_value=true,description="Ccarb:Corg rain ratio true for fixed, false for sat. state dependent"k_r0[Float64]=0.044372,default_value=0.044372,description="initial rain-ratio for sat. state dependent rain ratio"k_eta[Float64]=0.8053406,default_value=0.8053406,description="exponent for sat. state dependent rain ratio"nuDOM[Float64]=0.66,default_value=0.66,description="fraction of production to DOM reservoir"depthlimit[Float64]=-200.0 (m),default_value=-200.0,description="depth limit for production"k_poptype[String]="Constant",default_value="Constant",allowed_values=["Constant", "Nutrient", "Pop"],description="population / growth rate model"k_uPO4[Float64]=0.002 (mol P / m-3 / yr),default_value=0.002,description="for k_poptype = 'Constant': max rate, constant ie of form k_O_uPO4 * (light, nut etc)"k_mu[Float64]=NaN (1/yr),default_value=NaN,description="for k_poptype = 'Nutrient', 'Pop': max prod/growth rate (at 0C if templim=='Eppley')"k_grazeresprate[Float64]=NaN (1/yr),default_value=NaN,description="for k_poptype = 'Pop' imposed const loss (mortality) rate"k_templim[String]="Constant",default_value="Constant",allowed_values=["Constant", "Eppley"],description="temperature limitation factor"k_lightlim[String]="linear",default_value="linear",allowed_values=["linear", "MM", "fixed", "QE"],description="Light limitation function"k_Irel[Float64]=1.0,default_value=1.0,description="multiplier for forcing-supplied insolation"k_Ic[Float64]=30.0 (W/m^2),default_value=30.0,description="saturating irradiance for 'MM' case"k_alphaQE[Float64]=7.0 (mgC/mgChl/Wpar m^-2/d-1),default_value=7.0,description="chla-specific initial slope of the photosynthesis-light curve for lightlim='QE'"k_thetaChlC[Float64]=0.03 (mg Chl / mgC),default_value=0.03,description="Chl:Corg ratio for explicit population k_poptype=Pop"k_epsilonChl[Float64]=0.012 (m^2/mg Chl),default_value=0.012,description="chl absorption coeff (for self shielding) for k_poptype='Pop'"k_nuttype[String]="PO4MM",default_value="PO4MM",allowed_values=["PO4MM", "PO4NMM", "PO4NMMNfix"],description="Nutrient limitation / nitrogen fixation function"k_KPO4[Float64]=NaN (mol P m-3 ),default_value=NaN,description="limitation at low [P] MM half-max constant"k_KN[Float64]=0.0 (mol NO3+NH4 m-3),default_value=0.0,description="limitation at low nitrogen"k_prefNH3[Float64]=10.0,default_value=10.0,description="preference for ammonia over nitrate"k_edonor[String]="H2O",default_value="H2O",allowed_values=["H2O", "H2S"],description="electron donor (H2O for oxygenic phototroph"k_KH2S[Float64]=0.001 (mol H2S m-3),default_value=0.001,description="limitation at low [H2S] MM half-max constant"CIsotope[external, DataType]=PALEOboxes.ScalarData,default_value=PALEOboxes.ScalarData,allowed_values=Type[PALEOboxes.ScalarData, PALEOboxes.IsotopeLinear],description="disable / enable carbon isotopes and specify isotope type"
Methods and Variables for default Parameters
RateStoich_edonorO2eqedonorO2eq(mol O2eq yr-1),VT_ReactDependency,description="O2eq e- donor consumption (H2O) by oxygenic photosynthesis"- [
O2_sms] (mol yr-1),VT_ReactContributor,description="generated by RateStoich rate=edonorO2eq"
do_bio_prod_MM_popvolume(m^3),VT_ReactDependency,description="ocean cell volume"zupper(m),VT_ReactDependency,description="cell depth (-ve)"open_area_fraction–> oceansurface.open_area_fraction (),VT_ReactDependency,description="fraction of area open to atmosphere"P_conc(mol m^-3),VT_ReactDependency,description="total P concentration"- [
OmegaCA] (),VT_ReactDependency,description="calcite saturation state" - [
rate_bioprod] –> global.rate_bioprod (),VT_ReactDependency,description="optional forcing, multiplier for productivity" - [
PELCALC] –> global.PELCALC (),VT_ReactDependency,description="optional forcing for pelagic calcification" Prod_Corg–> %reaction%Prod_Corg (mol yr-1),VT_ReactProperty,description="organic carbon production rate"Prod_Ccarb–> %reaction%Prod_Ccarb (mol yr-1),VT_ReactProperty,description="carbonate production rate"P_sms(mol yr-1),VT_ReactContributor,description="total dissolved P source minus sink"- [
TAlk_sms] (mol yr-1),VT_ReactContributor,description="TAlk source minus sink" - [
DIC_sms] (mol yr-1),VT_ReactContributor,description="DIC source minus sink" - [
partprod_P] (mol yr-1),VT_ReactContributor,description="flux P" - [
partprod_N] (mol yr-1),VT_ReactContributor,description="flux N" - [
partprod_Corg] (mol yr-1),VT_ReactContributor,description="flux Corg" - [
partprod_Ccarb] (mol yr-1),VT_ReactContributor,description="flux Ccarb" - [
domprod_P] (mol yr-1),VT_ReactContributor,description="flux P" - [
domprod_N] (mol yr-1),VT_ReactContributor,description="flux N" - [
domprod_Corg] (mol yr-1),VT_ReactContributor,description="flux Corg" - [
domprod_Ccarb] (mol yr-1),VT_ReactContributor,description="flux Ccarb" edonorO2eq(mol O2eq yr-1),VT_ReactProperty,description="O2eq e- donor consumption (H2O) by oxygenic photosynthesis"insol(W m-2),VT_ReactDependency,description="photosynthetic radiative flux"
totalsProd_Corg–> %reaction%Prod_Corg (mol yr-1),VT_ReactDependency,description="organic carbon production rate"edonorO2eq(mol O2eq yr-1),VT_ReactDependency,description="O2eq e- donor consumption (H2O) by oxygenic photosynthesis"Prod_Ccarb–> %reaction%Prod_Ccarb (mol yr-1),VT_ReactDependency,description="carbonate production rate"Prod_Corg_total(mol yr-1),VT_ReactProperty,description="total organic carbon production rate"edonorO2eq_total(mol O2eq yr-1),VT_ReactProperty,description="total O2eq e- donor consumption (H2O) by oxygenic photosynthesis"Prod_Ccarb_total(mol yr-1),VT_ReactProperty,description="total carbonate production rate"
Ocean surface air-sea flux
PALEOocean.Oceansurface.AirSeaExchange.ReactionAirSea — TypeReactionAirSea(Sc_function, sol_function, frac_function, gas_name)
ReactionAirSeaO2
ReactionAirSeaCO2
ReactionAirSeaCO2
ReactionAirSeaFixedSolubilityCalculate atmosphere to ocean gas flux, mol/yr.
NB: ReactionAirSea not used directly - use as ReactionAirSeaO2 etc.
Runs in oceansurface Domain, calculates per-oceansurface-cell atmosphere to ocean gas flux (mol yr-1) for a gas X using stagnant film model:
flux_X = Asurf * open_area_fraction * vpiston * (solX(pXatm) - X_conc)Asurf and open_area_fraction should be defined by oceansurface variables.
Piston velocity vpiston and gas solutibility solX are defined by gas specific functions (eg an empirical wind-velocity dependent Schmidt factor, and temperature and salinity dependent solubility).
If Parameter moistair = true, atmospheric partial pressure pXatm should be supplied as the equivalent for dry air (~ volume mixing ratio in dry air * pressure ), and is then corrected assuming saturated H2O at the ocean surface temperature.
PALEOocean.Oceansurface.AirSeaExchange.ReactionAirSeaO2 — TypeReactionAirSeaO2See ReactionAirSea
- Piston velocity: Schmidt factor from (Sarmiento and Gruber, 2006)
- Solubility: from (Wanninkhof, 1992)
Parameters
solubility_fixed[Bool]=false,default_value=false,description="use fixed solubility"sol_fix_henry_coeff[Float64]=NaN (mol l-1 atm-1),default_value=NaN,description="Henry's law coefficient for solubility_fixed=true"moistair[Bool]=true,default_value=true,description="apply correction for moist air"piston_fixed[Bool]=true,default_value=true,description="use fixed piston velocity"piston[Float64]=NaN (m d-1),default_value=NaN,description="fixed piston velocity"TempKmin[Float64]=-Inf (K),default_value=-Inf,description="GENIE bug compatibility - lower limit on temperature for solubility"atm_partial_pressure_min_zero[Bool]=false,default_value=false,description="true to clamp -ve values of atmospheric partial pressure to zero when calculating flux"ocean_conc_min_zero[Bool]=false,default_value=false,description="true to clamp -ve values of ocean concentration to zero when calculating flux"
Methods and Variables for default Parameters
do_air_sea_fluxAsurf(m^2),VT_ReactDependency,description="horizontal area of oceansurface"open_area_fraction(),VT_ReactDependency,description="fracton of surface open to atmosphere (0-1.0)"pXatm–> atm.pO2atm (atm),VT_ReactDependency,description="gas X atmospheric partial pressure"X_conc–> ocean.oceansurface.O2_conc (mol m-3),VT_ReactDependency,description="ocean concentration [gas X]"flux_X–> fluxAtmtoOceansurface.flux_O2 (mol yr-1),VT_ReactContributor,description="air -> sea gas X flux"temp–> ocean.oceansurface.temp (K),VT_ReactDependency,description="ocean surface temperature"sal–> ocean.oceansurface.sal (psu),VT_ReactDependency,description="ocean salinity"
PALEOocean.Oceansurface.AirSeaExchange.ReactionAirSeaCO2 — TypeReactionAirSeaCO2See ReactionAirSea
- Piston velocity: Schmidt factor from (Wanninkhof, 1992)
- Solubility: calculated from
ocean.CO2_conc,ocean.pCO2atmdefined by ocean carbonate chemistry. - Isotope fractionation: equilibrium and kinetic fractionation from (Zhang et al., 1995)
Parameters
solubility_fixed[Bool]=false,default_value=false,description="use fixed solubility"sol_fix_henry_coeff[Float64]=NaN (mol l-1 atm-1),default_value=NaN,description="Henry's law coefficient for solubility_fixed=true"moistair[Bool]=true,default_value=true,description="apply correction for moist air"piston_fixed[Bool]=true,default_value=true,description="use fixed piston velocity"piston[Float64]=NaN (m d-1),default_value=NaN,description="fixed piston velocity"TempKmin[Float64]=-Inf (K),default_value=-Inf,description="GENIE bug compatibility - lower limit on temperature for solubility"atm_partial_pressure_min_zero[Bool]=false,default_value=false,description="true to clamp -ve values of atmospheric partial pressure to zero when calculating flux"ocean_conc_min_zero[Bool]=false,default_value=false,description="true to clamp -ve values of ocean concentration to zero when calculating flux"
PALEOocean.Oceansurface.AirSeaExchange.ReactionAirSeaCH4 — TypeReactionAirSeaCH4See ReactionAirSea
- Piston velocity: Schmidt factor from (Wanninkhof, 1992)
- Solubility: from (Wanninkhof, 1992)
- Isotope fractionation: NB: TODO no isotope fractionation
Parameters
solubility_fixed[Bool]=false,default_value=false,description="use fixed solubility"sol_fix_henry_coeff[Float64]=NaN (mol l-1 atm-1),default_value=NaN,description="Henry's law coefficient for solubility_fixed=true"moistair[Bool]=true,default_value=true,description="apply correction for moist air"piston_fixed[Bool]=true,default_value=true,description="use fixed piston velocity"piston[Float64]=NaN (m d-1),default_value=NaN,description="fixed piston velocity"TempKmin[Float64]=-Inf (K),default_value=-Inf,description="GENIE bug compatibility - lower limit on temperature for solubility"atm_partial_pressure_min_zero[Bool]=false,default_value=false,description="true to clamp -ve values of atmospheric partial pressure to zero when calculating flux"ocean_conc_min_zero[Bool]=false,default_value=false,description="true to clamp -ve values of ocean concentration to zero when calculating flux"
PALEOocean.Oceansurface.AirSeaExchange.ReactionAirSeaFixedSolubility — TypeReactionAirSeaFixedSolubilitySee ReactionAirSea
- Piston velocity: fixed value from
pistonParameter - Solubility: fixed value from
sol_fix_henry_coeff
NB: moistair correction is not applied
Parameters
solubility_fixed[Bool]=true,default_value=true,description="use fixed solubility"sol_fix_henry_coeff[Float64]=NaN (mol l-1 atm-1),default_value=NaN,description="Henry's law coefficient for solubility_fixed=true"moistair[Bool]=false,default_value=false,description="apply correction for moist air"piston_fixed[Bool]=true,default_value=true,description="use fixed piston velocity"piston[Float64]=NaN (m d-1),default_value=NaN,description="fixed piston velocity"TempKmin[Float64]=-Inf (K),default_value=-Inf,description="GENIE bug compatibility - lower limit on temperature for solubility"atm_partial_pressure_min_zero[Bool]=false,default_value=false,description="true to clamp -ve values of atmospheric partial pressure to zero when calculating flux"ocean_conc_min_zero[Bool]=false,default_value=false,description="true to clamp -ve values of ocean concentration to zero when calculating flux"
Methods and Variables for default Parameters
do_air_sea_fluxAsurf(m^2),VT_ReactDependency,description="horizontal area of oceansurface"open_area_fraction(),VT_ReactDependency,description="fracton of surface open to atmosphere (0-1.0)"pXatm–> atm.pXatm (atm),VT_ReactDependency,description="gas X atmospheric partial pressure"X_conc–> ocean.oceansurface.X_conc (mol m-3),VT_ReactDependency,description="ocean concentration [gas X]"flux_X–> fluxAtmtoOceansurface.flux_X (mol yr-1),VT_ReactContributor,description="air -> sea gas X flux"
Ocean floor burial
Carbonate burial
PALEOocean.Oceanfloor.Burial.ReactionShelfCarb — TypeReactionShelfCarbShallow-water carbonate burial controlled by carbonate saturation state (after (Caldeira and Rampino, 1993))
Carbonate burial rate in cell i is shelf_Ccarb[i] = carbsedshallow * shelfareanorm[i] * '(OmegaAR[i]-1.0)^1.7wherecarbsedshallow(mol C yr-1) controls the global rate, andshelfareanorm[i]` controls the spatial distribution among ocean shelf cells.
Parameters
carbsedshallow[Float64]=1.4355e12 (mol C yr-1),default_value=1.4355e12,description="total carbonate deposition rate"shelfareanorm[Vector{Float64}]=Float64[],default_value=Float64[],description="per box distribution of carbonate burial (length=Domain size, must sum to 1.0)"CIsotope[external, DataType]=PALEOboxes.ScalarData,default_value=PALEOboxes.ScalarData,allowed_values=Type[PALEOboxes.ScalarData, PALEOboxes.IsotopeLinear],description="disable / enable carbon isotopes and specify isotope type"
Methods and Variables for default Parameters
do_shelf_carbfluxOceanfloor_soluteflux_DIC–> fluxOceanfloor.soluteflux_DIC (mol yr-1),VT_ReactContributor,description="flux DIC"fluxOceanfloor_soluteflux_TAlk–> fluxOceanfloor.soluteflux_TAlk (mol yr-1),VT_ReactContributor,description="flux TAlk"- [
fluxOceanfloor_soluteflux_Ca] –> fluxOceanfloor.soluteflux_Ca (mol yr-1),VT_ReactContributor,description="flux Ca" - [
fluxOceanBurial_flux_Ccarb] –> fluxOceanBurial.flux_Ccarb (mol yr-1),VT_ReactContributor,description="flux Ccarb" - [
shelfarea_force] –> global.shelfarea_force (),VT_ReactDependency,description="optional forcing multiplier for carbsedshallow (defaults to 1.0)" OmegaAR–> ocean.oceanfloor.OmegaAR (),VT_ReactDependency,description="aragonite saturation"shelf_Ccarb(mol yr-1),VT_ReactProperty,description="shelf Ccarb burial"
totalsshelf_Ccarb(mol yr-1),VT_ReactDependency,description="shelf Ccarb burial"shelf_Ccarb_total(mol yr-1),VT_ReactProperty,description="total shelf Ccarb burial"
PALEOocean.Oceanfloor.Burial.ReactionBurialEffCarb — TypeReactionBurialEffCarbDeep ocean carbonate burial as a carbonate-saturation-state-dependent fraction of carbonate flux.
Parameterisation from (Caldeira and Rampino, 1993), intended for use in ocean box models with a single deep ocean box.
Fraction of input carbonate flux buried flys is a function of oceanfloor carbonate saturation state.
Carbonate burial flux flux_Ccarb = particulateflux_Ccarb * flys, where Fraction of input carbonate flux buried flys is a function of carbonate saturation state.
Can be used with a spatially resolved model to provide a saturation-state dependent switch that allows burial of oceanfloor carbonate flux only above the lysocline.
Parameter burial_eff_function sets the functional form used for burial fraction flys:
- "Caldeira1993": flys = 0.5*(1.0+tanh(k0([CO3] -k1)))
(after (Caldeira and Rampino, 1993), intended for use with the single deep ocean box in a 3-box ocean model)
- "OmegaCA": flys = 1 - 0.5 * erfc(m0*(Ω_CA - m1)) (burial efficiency a function of oceanfloor saturation state)
Parameters
burial_eff_function[String]="Caldeira1993",default_value="Caldeira1993",allowed_values=["Caldeira1993", "OmegaCA"],description="functional form for burial efficiency"k0[Float64]=26.0 (m3/mol),default_value=26.0,description="Caldeira1993: burial frac 'steepness' with CO3 concentration"k1[Float64]=0.11 (mol/m3),default_value=0.11,description="Caldeira1993: CO3 concentration at burial frac 0.5"m0[Float64]=10.0,default_value=10.0,description="OmegaCA: burial frac 'steepness' with OmegaCA"m1[Float64]=1.0,default_value=1.0,description="OmegaCA: OmegaCA at burial frac 0.5"hascarbseddeep[Vector{Bool}]=Bool[],default_value=Bool[],description="per box flag to enable (length=Domain size)"CIsotope[external, DataType]=PALEOboxes.ScalarData,default_value=PALEOboxes.ScalarData,allowed_values=Type[PALEOboxes.ScalarData, PALEOboxes.IsotopeLinear],description="disable / enable carbon isotopes and specify isotope type"
Methods and Variables for default Parameters
do_burial_eff_carbfluxOceanfloor_soluteflux_DIC–> fluxOceanfloor.soluteflux_DIC (mol yr-1),VT_ReactContributor,description="flux DIC"fluxOceanfloor_soluteflux_TAlk–> fluxOceanfloor.soluteflux_TAlk (mol yr-1),VT_ReactContributor,description="flux TAlk"- [
fluxOceanfloor_soluteflux_Ca] –> fluxOceanfloor.soluteflux_Ca (mol yr-1),VT_ReactContributor,description="flux Ca" - [
fluxOceanBurial_flux_Ccarb] –> fluxOceanBurial.flux_Ccarb (mol yr-1),VT_ReactContributor,description="flux Ccarb" particulateflux_Ccarb(mol yr-1),VT_ReactTarget,description="input carbonate particulate flux"deep_Ccarb(mol yr-1),VT_ReactProperty,description="deep unresolved Ccarb burial"flys(),VT_ReactProperty,description="fraction of Ccarb export buried"CO3_conc–> ocean.oceanfloor.CO3_conc (mol m-3),VT_ReactDependency,description="CO3 concentration"
totalsdeep_Ccarb(mol yr-1),VT_ReactDependency,description="deep unresolved Ccarb burial"deep_Ccarb_total(mol yr-1),VT_ReactProperty,description="total deep unresolved Ccarb burial"
Organic carbon and phosphorus burial
PALEOocean.Oceanfloor.Burial.ReactionBurialEffCorgP — TypeReactionBurialEffCorgPBurial efficiency (fraction of particulateflux input) for Corg and P.
Input organic matter flux is given by particulateflux_Corg, N, P. A fraction of Corg and P is buried to output flux fluxOceanBurial.flux_, Corg, P, Porg, PFe, Pauth, where P is the total P burial flux and Porg, PFe, Pauth are the three P burial mineral phases. The remainder of the input flux is transferred to reminflux_Corg, N, P, where it would usually be linked to a ReactionRemin to be remineralized.
The fraction of Corg buried is given by a burial efficiency function, with options set by Parameter burial_eff_function:
Prescribed: Corg burial in celli= Corg particulateflux *BECorgNorm*Parameter BECorg[i]Ozaki2011: Corg burial in celli= Corg particulateflux *BECorgNorm*burialEffCorg_Ozaki2011(sedimentation_rate)Dunne2007: corg burial in celli= Corg particulateflux *BECorgNorm*burialEffCorg_Dunne2007(Corg particulateflux, Afloor)ConstantBurialRate: Corg burial in celli=BECorgNorm*Parameter BECorg[i](independent of Corg flux)
It is also possible to set Parameter FixedCorgBurialTotal, in which case the ocean total Corg burial rate is fixed, and the per-cell Corg burial fluxes calculated as above are then normalized to reach this global total rate.
P burial efficiency is defined as P:Corg ratios for components Porg, PFe, Pauth by parameters BPorgCorg, BPFeCorg, BPauthCorg. If these are Vectors of length > 1, they define interpolated functions of oceanfloor [O2] on a grid defined by parameter BPO2. If they are all Vectors of length 1, they define fixed Corg:P ratios.
Parameters
BECorgNorm[Float64]=1.0,default_value=1.0,description="overall normalization factor for Corg burial (or total Corg burial for ConstantBurialRate)"burial_eff_function[String]="Prescribed",default_value="Prescribed",allowed_values=["Prescribed", "Ozaki2011", "Dunne2007", "ConstantBurialRate"],description="Corg burial efficiency parameterisation (or ConstantBurialRate)"BECorg[Vector{Float64}]=Float64[],default_value=Float64[],description="prescribed fraction seafloor Corg flux buried (or per-cell fraction of total Corg for ConstantBurialRate)"FixedCorgBurialTotal[Float64]=NaN (mol C yr-1),default_value=NaN,description="if != NaN, fix total ocean Corg burial rate by renormalizing per-cell fluxes"BPO2[Vector{Float64}]=[NaN] (mol O2 m-3),default_value=[NaN],description="[O2] points for interpolated oxygen-dependent P:Corg (length 1 for O2-independent P:Corg)"BPorgCorg[Vector{Float64}]=[0.0] (mol P (mol Corg)-1),default_value=[0.0],description="P:Corg for organic P burial fraction at each BPO2 (Vector length 1 for O2-independent P:Corg)"BPFeCorg[Vector{Float64}]=[0.0] (mol P (mol Corg)-1),default_value=[0.0],description="P:Corg for Fe-associated P burial fraction at each BPO2 (Vector length 1 for O2-independent P:Corg)"BPauthCorg[Vector{Float64}]=[0.0] (mol P (mol Corg)-1),default_value=[0.0],description="P:Corg for CFA-associated P burial fraction at each BPO2 (Vector length 1 for O2-independent P:Corg)"CIsotope[external, DataType]=PALEOboxes.ScalarData,default_value=PALEOboxes.ScalarData,allowed_values=Type[PALEOboxes.ScalarData, PALEOboxes.IsotopeLinear],description="disable / enable carbon isotopes and specify isotope type"
Methods and Variables
do_burial_eff_CorgPparticulateflux_Corg(mol yr-1),VT_ReactTarget,description="input particulate flux Corg"particulateflux_P(mol yr-1),VT_ReactTarget,description="input particulate flux P"particulateflux_N(mol yr-1),VT_ReactTarget,description="input particulate flux N"reminflux_Corg(mol yr-1),VT_ReactContributor,description="output unburied particulate flux Corg"reminflux_P(mol yr-1),VT_ReactContributor,description="output unburied particulate flux P"reminflux_N(mol yr-1),VT_ReactContributor,description="output unburied particulate flux N"- [
fluxOceanBurial_flux_Corg] –> fluxOceanBurial.flux_Corg (mol yr-1),VT_ReactContributor,description="flux Corg" - [
fluxOceanBurial_flux_Porg] –> fluxOceanBurial.flux_Porg (mol yr-1),VT_ReactContributor,description="flux Porg" - [
fluxOceanBurial_flux_PFe] –> fluxOceanBurial.flux_PFe (mol yr-1),VT_ReactContributor,description="flux PFe" - [
fluxOceanBurial_flux_Pauth] –> fluxOceanBurial.flux_Pauth (mol yr-1),VT_ReactContributor,description="flux Pauth" - [
fluxOceanBurial_flux_P] –> fluxOceanBurial.flux_P (mol yr-1),VT_ReactContributor,description="flux P" burial_eff_Corg(),VT_ReactProperty,description="Corg burial efficiency"- [
sedimentation_rate] (m yr-1),VT_ReactDependency,description="sedimentation rate" - [
O2_conc] –> ocean.oceanfloor.O2_conc (mol m-3),VT_ReactDependency,description="O2 concentration" - [
Afloor] –> oceanfloor.Afloor (m^2),VT_ReactDependency,description="horizontal area of seafloor at base of box"
Global
PALEOocean.Global.Insolation.ReactionForceInsolationModernEarth — TypeReactionForceInsolationModernEarthCalculate time and latitude dependent daily mean modern Earth surface solar insolation.
Daily mean photosynthetically-active surface insolation
`insolation` = TOA flux * (1 - `albedo`) * `parfrac`See insolMITgcmDIC for details.
Parameters
albedo[Float64]=0.6,default_value=0.6,description="mean planetary albedo"parfrac[Float64]=1.0,default_value=1.0,description="fraction of radiation that is photosynthetically active"latitude[Vector{Float64}]=Float64[] (degrees N),default_value=Float64[],description="if non-empty, override grid latitude and set explicitly for each surface cell"
Methods and Variables for default Parameters
do_force_insolationtforce–> global.tforce (yr),VT_ReactDependency,description="historical time at which to apply forcings, present = 0 yr"insolation(W m-2),VT_ReactProperty,description="daily mean surface insolation"lat(),VT_ReactDependency,description="coordinate variable"
PALEOocean.Global.Insolation.insolMITgcmDIC — FunctioninsolMITgcmDIC(Timeyr,latdeg; albedo=0.6, solar=1360.0, parfrac=1.0) -> sfacMITgcm DIC package insol function directly translated from fortran. Similar to (Brock, 1981).
NB: there are three normalization constants here: solar, albedo, parfrac to define top-of-atmosphere flux (from astronomical formulae) -> a crude approx to ground level flux (taking into account clouds etc) -> photosynthetic PAR flux
C !DESCRIPTION:
C find light as function of date and latitude
C based on paltridge and parsonArguments:
Timeyr: yr, model time, NB: year assumed to start in winterlatdeg: deg, latitudesalbedo: planetary albedo (ie correct for top-of-atmosphere to ground-level, clouds etc)solar: W m-2 solar constantparfrac: photosynthetically active fraction
Returns:
sfac: daily average photosynthetically active solar radiation just below surface