diff --git a/dev/.documenter-siteinfo.json b/dev/.documenter-siteinfo.json
index 5d8f291..ca08bff 100644
--- a/dev/.documenter-siteinfo.json
+++ b/dev/.documenter-siteinfo.json
@@ -1 +1 @@
-{"documenter":{"julia_version":"1.6.7","generation_timestamp":"2024-04-24T06:49:16","documenter_version":"1.4.0"}}
\ No newline at end of file
+{"documenter":{"julia_version":"1.6.7","generation_timestamp":"2024-06-14T12:48:14","documenter_version":"1.4.1"}}
\ No newline at end of file
diff --git a/dev/PALEOocean_Domains/index.html b/dev/PALEOocean_Domains/index.html
index 4233739..3f7697a 100644
--- a/dev/PALEOocean_Domains/index.html
+++ b/dev/PALEOocean_Domains/index.html
@@ -1,5 +1,5 @@
-
PALEOocean Domains, fluxes, and standard Variables · PALEOocean Documentation
The standard Domain configuration for an atmosphere-ocean model is shown in Figure 1.
global This is used for model-wide quantities, typically global budgets and global forcings
atmosphere A scalar (0-D) Domain with atmospheric variables and Reactions
ocean The ocean Domain represents a 3-D ocean as a vector of cells, with geometry and internal transport defined by an OceanTransport Reaction.
oceansurface, oceanflooroceansurface and oceanfloor represent 2-D boundaries as a vector of cells, with geometry defined by the OceanTransport Reaction. There is a 1-to-1 correspondence between the cells in the 2-D oceansurface Domain, the adjacent ocean surface cells defined by the ocean.oceansurface subdomain. Similarly, there is a 1-to-1 correspondence between the cells in the 2-D oceanfloor Domain, the adjacent ocean floor cells defined by the ocean.oceanfloor subdomain.
fluxAtmtoOceansurface Air-sea exchange fluxes are defined in the 2-D fluxAtmtoOceansurface Domain, which contains cells with a 1-to-1 correspondence to the oceansurface Domain.
fluxOceanfloor Particulate fluxes from ocean to oceanfloor, and solute exchange fluxes between ocean and oceanfloor, are defined in the 2-D fluxOceanfloor Domain. This contains cells with a 1-to-1 correspondence to cells in the oceanfloor Domain.
fluxOceanBurial Ocean burial fluxes are defined in the 2-D fluxOceanburial Domain. This contains cells with a 1-to-1 correspondence to cells in the oceanfloor Domain.
The standard Domain configuration for an atmosphere-ocean model is shown in Figure 1.
global This is used for model-wide quantities, typically global budgets and global forcings
atmosphere A scalar (0-D) Domain with atmospheric variables and Reactions
ocean The ocean Domain represents a 3-D ocean as a vector of cells, with geometry and internal transport defined by an OceanTransport Reaction.
oceansurface, oceanflooroceansurface and oceanfloor represent 2-D boundaries as a vector of cells, with geometry defined by the OceanTransport Reaction. There is a 1-to-1 correspondence between the cells in the 2-D oceansurface Domain, the adjacent ocean surface cells defined by the ocean.oceansurface subdomain. Similarly, there is a 1-to-1 correspondence between the cells in the 2-D oceanfloor Domain, the adjacent ocean floor cells defined by the ocean.oceanfloor subdomain.
fluxAtmtoOceansurface Air-sea exchange fluxes are defined in the 2-D fluxAtmtoOceansurface Domain, which contains cells with a 1-to-1 correspondence to the oceansurface Domain.
fluxOceanfloor Particulate fluxes from ocean to oceanfloor, and solute exchange fluxes between ocean and oceanfloor, are defined in the 2-D fluxOceanfloor Domain. This contains cells with a 1-to-1 correspondence to cells in the oceanfloor Domain.
fluxOceanBurial Ocean burial fluxes are defined in the 2-D fluxOceanburial Domain. This contains cells with a 1-to-1 correspondence to cells in the oceanfloor Domain.
48×8 DataFrame
domain name type units vfunction space field_data description
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
fluxAtmtoOceansurface flux_CO2 VariableDomContribTarget mol yr-1 VF_Undefined CellSpace IsotopeLinear flux input
@@ -49,4 +49,4 @@
oceanfloor Afloor_total VariableDomPropDep m^2 VF_Undefined ScalarSpace ScalarData total area of seafloor
oceanfloor zfloor VariableDomPropDep m VF_Undefined CellSpace ScalarData depth of ocean floor (m, -ve)
oceansurface Asurf VariableDomPropDep m^2 VF_Undefined CellSpace ScalarData horizontal area of oceansurface
- oceansurface open_area_fraction VariableDomPropDep VF_Undefined CellSpace ScalarData fraction of area open to atmosph…
ocean, oceansurface, and oceanfloor Variables are standard grid variables, provided by the ocean transport Reaction (a ReactionOceanTransport3box in this case).
Flux target Variables to accumulate exchange fluxes are provided by ReactionFluxTarget Reactions, the illustrative configuration here defines fluxes for a C, O, P model with atmospheric state variables CO2, O2, and ocean state variables including DIC, TAlk, O2 and P.
Settings
This document was generated with Documenter.jl version 1.4.0 on Wednesday 24 April 2024. Using Julia version 1.6.7.
+ oceansurface open_area_fraction VariableDomPropDep VF_Undefined CellSpace ScalarData fraction of area open to atmosph…
ocean, oceansurface, and oceanfloor Variables are standard grid variables, provided by the ocean transport Reaction (a ReactionOceanTransport3box in this case).
Flux target Variables to accumulate exchange fluxes are provided by ReactionFluxTarget Reactions, the illustrative configuration here defines fluxes for a C, O, P model with atmospheric state variables CO2, O2, and ocean state variables including DIC, TAlk, O2 and P.
Settings
This document was generated with Documenter.jl version 1.4.1 on Friday 14 June 2024. Using Julia version 1.6.7.
volume (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)"
volume (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)"
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_grid
volume (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)"
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
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_grid
volume (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)"
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
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_grid
volume (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)"
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
setup_grid_TMM
volume (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)"
Calculate 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.
Vertical 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.
Vertical 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"
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"
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.
linear: GENIE-like form k_Irel*insol/PB.Constants.k_solar_presentday where insol (W m-2) is provided insolation in each cell
MM: MITgcm-like saturating form zInsol/(k_Ic + zInsol) where zInsol = k_Irel*insol and insol is provided PAR in each cell
QE: Saturating light limitation of rate vs (local) PAR k_Irel*insol, derived from photosynthetic QE k_alphaQE and chl absorption cross section k_thetaChlC. See eg (Geider, 1987) for summary of notation and unit conversions.
temperature_limitation
Set by k_templim parameter:
Constant: constant value 1.0
Eppley: 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 production
H2S: H2S_conc / (H2S_conc + k_KH2S) production limited by H2S concentration
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"
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_grid
volume (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)"
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
setup_grid_TMM
volume (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)"
Set 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)"
Calculate 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.
Vertical 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.
Vertical 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"
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"
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.
linear: GENIE-like form k_Irel*insol/PB.Constants.k_solar_presentday where insol (W m-2) is provided insolation in each cell
MM: MITgcm-like saturating form zInsol/(k_Ic + zInsol) where zInsol = k_Irel*insol and insol is provided PAR in each cell
QE: Saturating light limitation of rate vs (local) PAR k_Irel*insol, derived from photosynthetic QE k_alphaQE and chl absorption cross section k_thetaChlC. See eg (Geider, 1987) for summary of notation and unit conversions.
temperature_limitation
Set by k_templim parameter:
Constant: constant value 1.0
Eppley: 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 production
H2S: H2S_conc / (H2S_conc + k_KH2S) production limited by H2S concentration
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"
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.
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_flux
Asurf (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"
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"
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"
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_flux
Asurf (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"
Shallow-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)"
Deep 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:
(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)"
Burial 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 cell i = Corg particulateflux * BECorgNorm*Parameter BECorg[i]
Ozaki2011: Corg burial in cell i = Corg particulateflux * BECorgNorm*burialEffCorg_Ozaki2011(sedimentation_rate)
Dunne2007: corg burial in cell i = Corg particulateflux * BECorgNorm*burialEffCorg_Dunne2007(Corg particulateflux, Afloor)
ConstantBurialRate: Corg burial in cell i = 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)"
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)"
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.
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_flux
Asurf (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"
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"
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"
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_flux
Asurf (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"
Shallow-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)"
Deep 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:
(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)"
Burial 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 cell i = Corg particulateflux * BECorgNorm*Parameter BECorg[i]
Ozaki2011: Corg burial in cell i = Corg particulateflux * BECorgNorm*burialEffCorg_Ozaki2011(sedimentation_rate)
Dunne2007: corg burial in cell i = Corg particulateflux * BECorgNorm*burialEffCorg_Dunne2007(Corg particulateflux, Afloor)
ConstantBurialRate: Corg burial in cell i = 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)"
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)"
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_insolation
tforce –> 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"
MITgcm 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 parson
Arguments:
Timeyr: yr, model time, NB: year assumed to start in winter
latdeg: deg, latitudes
albedo: planetary albedo (ie correct for top-of-atmosphere to ground-level, clouds etc)
solar: W m-2 solar constant
parfrac: photosynthetically active fraction
Returns:
sfac: daily average photosynthetically active solar radiation just below surface
Find all variables in domain with attribute :advect == true, and then use naming convention <rootname>_conc to identify <rootname>_sms Variables to add transport flux to.
If transport_input_components = true, also define input_components as <varname>_transport_input to calculate advective transport input into each cell (slow)
Add an additional buffer for do_transport. conc_components, sms_components, optional input_components are Vectors of data Arrays (as created by VarList_components from lists generated by find_transport_vars).
Find all variables in domain with attribute :advect == true, and then use naming convention <rootname>_conc to identify <rootname>_sms Variables to add transport flux to.
If transport_input_components = true, also define input_components as <varname>_transport_input to calculate advective transport input into each cell (slow)
Add an additional buffer for do_transport. conc_components, sms_components, optional input_components are Vectors of data Arrays (as created by VarList_components from lists generated by find_transport_vars).
Memory-bandwidth optimised version of do_transport using transposed matrix dtm_tr. This is an optimisation specifically tied to the Compressed Sparse Column storage layout (Julia SparseMatrixCSC).
If two matrices are supplied with a common sparsity pattern specified by colptr, rowptr, applies a linear combination with (wt1, wt2)
Buffer Arrays for optimized SIMD transport using elements of type SIMD.Vec{pack_chunk_width, pack_eltype}. Creates packed_conc_array for packed and padded Variable concentrations, and an additional workspace buffer. Uses additional type parameters to allow do_transport_tr specialization on number of Variable components etc as well as SIMD chunk width.
Memory-bandwidth optimised version of do_transport using transposed matrix dtm_tr. This is an optimisation specifically tied to the Compressed Sparse Column storage layout (Julia SparseMatrixCSC).
If two matrices are supplied with a common sparsity pattern specified by colptr, rowptr, applies a linear combination with (wt1, wt2)
Buffer Arrays for optimized SIMD transport using elements of type SIMD.Vec{pack_chunk_width, pack_eltype}. Creates packed_conc_array for packed and padded Variable concentrations, and an additional workspace buffer. Uses additional type parameters to allow do_transport_tr specialization on number of Variable components etc as well as SIMD chunk width.
Watson, A. J. (1995). Are upwelling zones sources or sinks of CO2? In: Upwelling in the ocean: Modern processes and ancient records, edited by Summerhayes, C. (Wiley); pp. 321–336.
Watson, A. J. (1995). Are upwelling zones sources or sinks of CO2? In: Upwelling in the ocean: Modern processes and ancient records, edited by Summerhayes, C. (Wiley); pp. 321–336.
GCM ocean transport test cases using transport matrices in format defined by (Khatiwala, 2007)
Examples require a 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/. The TMMDir key in examples\LocalPreferences.toml should then be set to the folder location on the local machine.
Default configurations are set to run for ~10 model yr, single core, single fixed timestep. See comments in .jl files to change run time and enable threading and split-timestep solver (with fast timestep for biogeochemistry and vertical transport).
Approximate model CPU times below are for a single laptop core (a CPU i5-6300U from ~2015).
GCM ocean transport test cases using transport matrices in format defined by (Khatiwala, 2007)
Examples require a 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/. The TMMDir key in examples\LocalPreferences.toml should then be set to the folder location on the local machine.
Default configurations are set to run for ~10 model yr, single core, single fixed timestep. See comments in .jl files to change run time and enable threading and split-timestep solver (with fast timestep for biogeochemistry and vertical transport).
Approximate model CPU times below are for a single laptop core (a CPU i5-6300U from ~2015).
These examples require netcdf files defining an annual cycle of physical variables:
water column eddy diffusivity Kz, temperature, density
surface windspeed
The example configurations assume a zip file (available from https://github.com/PALEOtoolkit/PALEOocean.jl/releases) with an illustrative 80m deep seasonally-stratifying shelf (50N, Celtic sea) derived from the S2P3 model has been unpacked to subfolder S2P3_transport_20240614
(this is collated output from the Windows 'Physics Biology Model' (s2p3.exe), http://pcwww.liv.ac.uk/~jons/model.htm see 'Introduction to the Physical and Biological Oceanography of Shelf Seas', Simpson & Sharples (2012), CUP)
A "skeleton" ocean-atmosphere configuration, defining Domains and fluxes but no biogeochemistry. Illustrative fluxes are configured for a C, O, P model.
A "skeleton" ocean-atmosphere configuration, defining Domains and fluxes but no biogeochemistry. Illustrative fluxes are configured for a C, O, P model.
The model configuration (file examples/skeleton_configuration/PALEO_examples_oceanskeleton_cfg.yaml) contains:
# skeleton atmosphere-ocean configuration
@@ -156,4 +156,4 @@
oceanfloor Afloor_total VariableDomPropDep m^2 VF_Undefined ScalarSpace ScalarData total area of seafloor
oceanfloor zfloor VariableDomPropDep m VF_Undefined CellSpace ScalarData depth of ocean floor (m, -ve)
oceansurface Asurf VariableDomPropDep m^2 VF_Undefined CellSpace ScalarData horizontal area of oceansurface
- oceansurface open_area_fraction VariableDomPropDep VF_Undefined CellSpace ScalarData fraction of area open to atmosph…
ocean, oceansurface, and oceanfloor Variables are standard grid variables, provided by the ocean transport Reaction (a ReactionOceanTransport3box in this case).
Flux target Variables to accumulate exchange fluxes are provided by ReactionFluxTarget Reactions, the illustrative configuration here defines fluxes for a C, O, P model with atmospheric state variables CO2, O2, and ocean state variables including DIC, TAlk, O2 and P.
Settings
This document was generated with Documenter.jl version 1.4.0 on Wednesday 24 April 2024. Using Julia version 1.6.7.
+ oceansurface open_area_fraction VariableDomPropDep VF_Undefined CellSpace ScalarData fraction of area open to atmosph…
ocean, oceansurface, and oceanfloor Variables are standard grid variables, provided by the ocean transport Reaction (a ReactionOceanTransport3box in this case).
Flux target Variables to accumulate exchange fluxes are provided by ReactionFluxTarget Reactions, the illustrative configuration here defines fluxes for a C, O, P model with atmospheric state variables CO2, O2, and ocean state variables including DIC, TAlk, O2 and P.
Settings
This document was generated with Documenter.jl version 1.4.1 on Friday 14 June 2024. Using Julia version 1.6.7.
PALEOocean/examples/transport_examples contains two examples showing the construction of (ocean) transport matrices, using PALEOocean.Ocean.add_loop! to construct a transport matrix by adding circulation around closed loops.
This uses TransportExamples.ReactionTransportAdvectExample defined in TransportExamples.jl to construct a transport matrix with a closed loop circulation down the first column and up the second column of a column-based model.
Closed loop circulation down col :a and up column :b resulting in advection of a tracer T down column :a and up column b:. Area of :a is 10x that of :b, hence the advection velocity in :b is 10x that in :a. NB: advection using CVODE, an implicit stiff ODE integrator, is quite diffusive
PALEOocean/examples/transport_examples contains two examples showing the construction of (ocean) transport matrices, using PALEOocean.Ocean.add_loop! to construct a transport matrix by adding circulation around closed loops.
This uses TransportExamples.ReactionTransportAdvectExample defined in TransportExamples.jl to construct a transport matrix with a closed loop circulation down the first column and up the second column of a column-based model.
Closed loop circulation down col :a and up column :b resulting in advection of a tracer T down column :a and up column b:. Area of :a is 10x that of :b, hence the advection velocity in :b is 10x that in :a. NB: advection using CVODE, an implicit stiff ODE integrator, is quite diffusive
Start julia and navigate to the PALEOocean/examples folder, and run setup.jl to configure the PALEOocean/examples Julia environment to use the local (downloaded) version of the PALEOocean package:
Start julia and navigate to the PALEOocean/examples folder, and run setup.jl to configure the PALEOocean/examples Julia environment to use the local (downloaded) version of the PALEOocean package:
julia> cd("PALEOocean/examples")
julia> include("setup.jl") # use the local version of PALEOocean packages to allow local modifications
The PALEO Reactions comprising the PALEOocean models are available when the registered PALEOocean package is loaded (without downloading the repository), ie
This document was generated with Documenter.jl version 1.4.1 on Friday 14 June 2024. Using Julia version 1.6.7.
diff --git a/dev/objects.inv b/dev/objects.inv
index 2e76295..69b4c8e 100644
Binary files a/dev/objects.inv and b/dev/objects.inv differ
diff --git a/dev/paleo_references.bib b/dev/paleo_references.bib
index ad09c0b..428c946 100644
--- a/dev/paleo_references.bib
+++ b/dev/paleo_references.bib
@@ -1,3 +1,16 @@
+@article{Brock1981,
+author = {Brock, Thomas D},
+doi = {10.1016/0304-3800(81)90011-9},
+journal = {Ecological Modelling},
+month = {nov},
+number = {1-2},
+pages = {1--19},
+title = {{Calculating solar radiation for ecological studies}},
+volume = {14},
+year = {1981}
+}
+
+
@article{Caldeira1993,
author = {Caldeira, Ken and Rampino, Michael R},
doi = {10.1029/93PA01163},
diff --git a/dev/search_index.js b/dev/search_index.js
index 078b5b2..f995939 100644
--- a/dev/search_index.js
+++ b/dev/search_index.js
@@ -1,3 +1,3 @@
var documenterSearchIndex = {"docs":
-[{"location":"indexpage/#Index","page":"Index","title":"Index","text":"","category":"section"},{"location":"indexpage/","page":"Index","title":"Index","text":"","category":"page"},{"location":"collated_examples/transport_examples/README/#Transport-examples","page":"Transport examples","title":"Transport examples","text":"","category":"section"},{"location":"collated_examples/transport_examples/README/","page":"Transport examples","title":"Transport examples","text":"PALEOocean/examples/transport_examples contains two examples showing the construction of (ocean) transport matrices, using PALEOocean.Ocean.add_loop! to construct a transport matrix by adding circulation around closed loops.","category":"page"},{"location":"collated_examples/transport_examples/README/#Advection","page":"Transport examples","title":"Advection","text":"","category":"section"},{"location":"collated_examples/transport_examples/README/","page":"Transport examples","title":"Transport examples","text":"julia> include(\"PALEO_examples_transport_advect.jl\")","category":"page"},{"location":"collated_examples/transport_examples/README/","page":"Transport examples","title":"Transport examples","text":"This uses TransportExamples.ReactionTransportAdvectExample defined in TransportExamples.jl to construct a transport matrix with a closed loop circulation down the first column and up the second column of a column-based model.","category":"page"},{"location":"collated_examples/transport_examples/README/","page":"Transport examples","title":"Transport examples","text":"(Image: Tracer advection image)","category":"page"},{"location":"collated_examples/transport_examples/README/#Figure-1","page":"Transport examples","title":"Figure 1","text":"","category":"section"},{"location":"collated_examples/transport_examples/README/","page":"Transport examples","title":"Transport examples","text":"Closed loop circulation down col :a and up column :b resulting in advection of a tracer T down column :a and up column b:. Area of :a is 10x that of :b, hence the advection velocity in :b is 10x that in :a. NB: advection using CVODE, an implicit stiff ODE integrator, is quite diffusive","category":"page"},{"location":"collated_examples/transport_examples/README/#Diffusion","page":"Transport examples","title":"Diffusion","text":"","category":"section"},{"location":"collated_examples/transport_examples/README/","page":"Transport examples","title":"Transport examples","text":"julia> include(\"PALEO_examples_transport_diffuse.jl\")","category":"page"},{"location":"collated_examples/transport_examples/README/","page":"Transport examples","title":"Transport examples","text":"This uses TransportExamples.ReactionTransportDiffuseExample defined in TransportExamples.jl to construct a transport matrix with constant vertical diffusivity Kz.","category":"page"},{"location":"collated_examples/transport_examples/README/","page":"Transport examples","title":"Transport examples","text":"(Image: Tracer diffusion image)","category":"page"},{"location":"collated_examples/transport_examples/README/#Figure-2","page":"Transport examples","title":"Figure 2","text":"","category":"section"},{"location":"collated_examples/transport_examples/README/","page":"Transport examples","title":"Transport examples","text":"Constant diffusivity Kz columns :a and :b. Cell thickness in :b is 10x that of :a","category":"page"},{"location":"collated_examples/transport_examples/README/#Additional-Reactions","page":"Transport examples","title":"Additional Reactions","text":"","category":"section"},{"location":"collated_examples/transport_examples/README/","page":"Transport examples","title":"Transport examples","text":"CurrentModule = TransportExamples","category":"page"},{"location":"collated_examples/transport_examples/README/","page":"Transport examples","title":"Transport examples","text":"ReactionTransportAdvectExample\nReactionTransportDiffuseExample","category":"page"},{"location":"collated_examples/transport_examples/README/#Main.TransportExamples.ReactionTransportAdvectExample","page":"Transport examples","title":"Main.TransportExamples.ReactionTransportAdvectExample","text":"ReactionTransportAdvectExample\n\nAdvection around two columns\n\nParameters\n\nT[Float64]=2.0e7 (m^3 s^-1), default_value=2.0e7, description=\"advective flux\"\n\n\n\n\n\n","category":"type"},{"location":"collated_examples/transport_examples/README/#Main.TransportExamples.ReactionTransportDiffuseExample","page":"Transport examples","title":"Main.TransportExamples.ReactionTransportDiffuseExample","text":"ReactionTransportDiffuseExample\n\nEddy diffusion N columns\n\nParameters\n\nKz[Float64]=1.0e-5 (m^2 s^-1), default_value=1.0e-5, description=\"eddy diffusivity\"\n\n\n\n\n\n","category":"type"},{"location":"PALEOocean_Reactions/#PALEOocean-Reactions","page":"PALEOocean Reactions","title":"PALEOocean Reactions","text":"","category":"section"},{"location":"PALEOocean_Reactions/#Ocean-geometry-and-circulation-transport","page":"PALEOocean Reactions","title":"Ocean geometry and circulation transport","text":"","category":"section"},{"location":"PALEOocean_Reactions/","page":"PALEOocean Reactions","title":"PALEOocean Reactions","text":"CurrentModule = PALEOocean.Ocean","category":"page"},{"location":"PALEOocean_Reactions/","page":"PALEOocean Reactions","title":"PALEOocean Reactions","text":"OceanNoTransport.ReactionOceanNoTransport\nOceanTransport3box.ReactionOceanTransport3box\nOceanTransport6box.ReactionOceanTransport6box\nOceanTransportTMM.ReactionOceanTransportTMM","category":"page"},{"location":"PALEOocean_Reactions/#PALEOocean.Ocean.OceanNoTransport.ReactionOceanNoTransport","page":"PALEOocean Reactions","title":"PALEOocean.Ocean.OceanNoTransport.ReactionOceanNoTransport","text":"ReactionOceanNoTransport\n\nN ocean boxes (default N=1 ie a single 0-D box), each with a surface and floor, no transport.\n\nParameters\n\narea[Vector{Float64}]=[1.0] (m^2), default_value=[1.0], description=\"surface / floor area (per box)\"\ndepth[Vector{Float64}]=[1.0] (m), default_value=[1.0], description=\"depth (per box)\"\n\nMethods and Variables\n\ndo_setup_grid\nvolume (m^3), VT_ReactProperty, description=\"volume of ocean cells\"\nvolume_total (m^3), VT_ReactProperty, description=\"total volume of ocean cells\"\nAbox (m^2), VT_ReactProperty, description=\"horizontal area of box\"\nzupper (m), VT_ReactProperty, description=\"depth of upper surface of box (m) 0 is surface, -100 is depth of 100 m\"\nzlower (m), VT_ReactProperty, description=\"depth of lower surface of box (m)\"\nzmid (m), VT_ReactProperty, description=\"mean depth of box\"\nrho_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)\"\npressure (dbar), VT_ReactProperty, description=\"Ocean pressure\"\nAfloor –> oceanfloor.Afloor (m^2), VT_ReactProperty, description=\"horizontal area of seafloor at base of box\"\nAfloor_total –> oceanfloor.Afloor_total (m^2), VT_ReactProperty, description=\"total area of seafloor\"\nzfloor –> oceanfloor.zfloor (m), VT_ReactProperty, description=\"depth of ocean floor (m, -ve)\"\nAsurf –> oceansurface.Asurf (m^2), VT_ReactProperty, description=\"horizontal area of oceansurface\"\n\n\n\n\n\n","category":"type"},{"location":"PALEOocean_Reactions/#PALEOocean.Ocean.OceanTransport3box.ReactionOceanTransport3box","page":"PALEOocean Reactions","title":"PALEOocean.Ocean.OceanTransport3box.ReactionOceanTransport3box","text":"ReactionOceanTransport3box\n\n3-box (Sarmiento and Toggweiler, 1984), (Toggweiler and Sarmiento, 1985) ocean model.\n\n---------------------------------------\n| 1 (s) | 2(h) |\n| -->--->- |\n|-------------------|----| | | \n| | | | /|\\ |\n| | |__|______|___| \n| | | | |\n| 3 (d) -<--<-- \\|/ |\n| circT fhd |\n| |\n----------------------------------------\n\nParameters\n\ncircT[Float64]=2.0e7 (m^3 s^-1), default_value=2.0e7, description=\"overturning circulation\"\ncircfhd[Float64]=6.0e7 (m^3 s^-1), default_value=6.0e7, description=\"high latitude <-> deep exchange rate\"\ntemp[Vector{Float64}]=[21.5, 2.5, 2.5] (degrees C), default_value=[21.5, 2.5, 2.5], description=\"ocean temperature\"\ntemp_trackglobal[Bool]=false, default_value=false, description=\"track global temperature (apply offset of global temp -15C\"\n\nMethods and Variables for default Parameters\n\ndo_setup_grid\nvolume (m^3), VT_ReactProperty, description=\"volume of ocean cells\"\nvolume_total (m^3), VT_ReactProperty, description=\"total volume of ocean cells\"\nAbox (m^2), VT_ReactProperty, description=\"horizontal area of box\"\nzupper (m), VT_ReactProperty, description=\"depth of upper surface of box (m) 0 is surface, -100 is depth of 100 m\"\nzlower (m), VT_ReactProperty, description=\"depth of lower surface of box (m)\"\nzmid (m), VT_ReactProperty, description=\"mean depth of box\"\nrho_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)\"\npressure (dbar), VT_ReactProperty, description=\"Ocean pressure\"\nAfloor –> oceanfloor.Afloor (m^2), VT_ReactProperty, description=\"horizontal area of seafloor at base of box\"\nAfloor_total –> oceanfloor.Afloor_total (m^2), VT_ReactProperty, description=\"total area of seafloor\"\nzfloor –> oceanfloor.zfloor (m), VT_ReactProperty, description=\"depth of ocean floor (m, -ve)\"\nAsurf –> oceansurface.Asurf (m^2), VT_ReactProperty, description=\"horizontal area of oceansurface\"\nsal (psu), VT_ReactProperty, description=\"Ocean salinity\"\nrho (kg m^-3), VT_ReactProperty, description=\"physical ocean density\"\nopen_area_fraction –> oceansurface.open_area_fraction (), VT_ReactProperty, description=\"fraction of area open to atmosphere\"\ndo_temperature\n[TEMP] –> global.TEMP (K), VT_ReactDependency, description=\"global mean temperature\"\ntemp (Kelvin), VT_ReactProperty, description=\"Ocean temperature\"\n\n\n\n\n\n","category":"type"},{"location":"PALEOocean_Reactions/#PALEOocean.Ocean.OceanTransport6box.ReactionOceanTransport6box","page":"PALEOocean Reactions","title":"PALEOocean.Ocean.OceanTransport6box.ReactionOceanTransport6box","text":"ReactionOceanTransport6box\n\n4+2-box ocean model from (Daines and Lenton, 2016) This is based on:\n\nthe four-box model of (Hotinski et al., 2000)\nthe five-box model of (Watson, 1995)\nthe upwelling region representation of (Canfield, 2006)\n\nThere are two main ingredients here:\n\nAn 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.\nA two-box shelf/slope (boxes r, rc), which can be configured as \nan upwelling region (k_slopetype='OMZ'), cf Canfield (2006) with upwelling from the intermediate/thermocline box\na low-latitude shelf (k_slopetype='shelf') with exchange terms to low-latitude surface (s) and thermocline (i) boxes\nSee Oxygen oases\\Box Model 20150922\\HotinskiCalc5Box.m, HotinskiConstants5Box.m, HotinskiCalcCirc6.m\n --------------------------------------------------\n | 5(r) | 1 (s) | 2(h) |\n | | | |\n |-----------|------------------------| | \n | 6(rc) | | |\n | | 3 (i) |_____________| \n -----------| | |\n | |------------------------ |\n | 4(d) |\n | |\n -----------------------------------------------\n\nParameters\n\nslopetype[String]=\"OMZ\", default_value=\"OMZ\", allowed_values=[\"OMZ\", \"shelf\"], description=\"type of shelf circulation (boxes r, rc)\"\ncircT[Float64]=1.93e7 (m^3 s^-1), default_value=1.93e7, description=\"overturning circulation (exchange high lat (h) to deep (d) and thermocline (i)\"\ncircfhd[Float64]=4.87e7 (m^3 s^-1), default_value=4.87e7, description=\"high latitude <-> deep exchange rate\"\ncircR[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)\"\ntotalEkman[Float64]=6.0e7 (m^3 s^-1), default_value=6.0e7, description=\"total wind-driven Ekman pumping\"\ncircS[Float64]=1.0e6 (m^3 s^-1), default_value=1.0e6, description=\"upwell(r) <-> low lat surf box (s) exchange\"\ntemp[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\"\ntemp_trackglobal[Bool]=false, default_value=false, description=\"track global temperature (apply offset of global temp -15C\"\n\nMethods and Variables for default Parameters\n\ndo_setup_grid\nvolume (m^3), VT_ReactProperty, description=\"volume of ocean cells\"\nvolume_total (m^3), VT_ReactProperty, description=\"total volume of ocean cells\"\nAbox (m^2), VT_ReactProperty, description=\"horizontal area of box\"\nzupper (m), VT_ReactProperty, description=\"depth of upper surface of box (m) 0 is surface, -100 is depth of 100 m\"\nzlower (m), VT_ReactProperty, description=\"depth of lower surface of box (m)\"\nzmid (m), VT_ReactProperty, description=\"mean depth of box\"\nrho_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)\"\npressure (dbar), VT_ReactProperty, description=\"Ocean pressure\"\nAfloor –> oceanfloor.Afloor (m^2), VT_ReactProperty, description=\"horizontal area of seafloor at base of box\"\nAfloor_total –> oceanfloor.Afloor_total (m^2), VT_ReactProperty, description=\"total area of seafloor\"\nzfloor –> oceanfloor.zfloor (m), VT_ReactProperty, description=\"depth of ocean floor (m, -ve)\"\nAsurf –> oceansurface.Asurf (m^2), VT_ReactProperty, description=\"horizontal area of oceansurface\"\nsal (psu), VT_ReactProperty, description=\"Ocean salinity\"\nrho (kg m^-3), VT_ReactProperty, description=\"physical ocean density\"\nopen_area_fraction –> oceansurface.open_area_fraction (), VT_ReactProperty, description=\"fraction of area open to atmosphere\"\ndo_temperature\n[TEMP] –> global.TEMP (K), VT_ReactDependency, description=\"global mean temperature\"\ntemp (Kelvin), VT_ReactProperty, description=\"Ocean temperature\"\n\n\n\n\n\n","category":"type"},{"location":"PALEOocean_Reactions/#PALEOocean.Ocean.OceanTransportTMM.ReactionOceanTransportTMM","page":"PALEOocean Reactions","title":"PALEOocean.Ocean.OceanTransportTMM.ReactionOceanTransportTMM","text":"ReactionOceanTransportTMM\n\nGCM 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/\n\nNB: length(operatorID) must be 2, to define operatorID[1] for explicit and operatorID[2] for implicit matrices.\n\nThe base_path parameter sets the top level of the folder structure for the downloaded matrices.\n\nCode based on TMM/tmm/models/petsc3.4/mitgchem/matlab/make_input_files_for_migchem_dic_biotic_model.m\n\nParameters\n\nbase_path[String]=\"$TMMDir$/MITgcm_2.8deg\", default_value=\"$TMMDir$/MITgcm_2.8deg\", description=\"directory containing transport matrices\"\nsal_norm[Bool]=false, default_value=false, description=\"apply salinity normalisation to transport matrix\"\nuse_annualmean[Bool]=false, default_value=false, description=\"true to read annual mean matrix\"\nnum_seasonal[Int64]=12, default_value=12, description=\"number of seasonal matrices\"\nAimp_deltat[Int64]=86400 (seconds), default_value=86400, description=\"timestep to derive upscaling factor for implicit transport matrix\"\nkji_order[Bool]=true, default_value=true, description=\"true to sort indices into k,j,i order to optimise memory layout\"\npack_chunk_width[Int64]=4, default_value=4, allowed_values=[0, 2, 4, 8, 16], description=\"non-zero to enable SIMD packed transport matrix multiply\"\nTMfpsize[Int64]=64 (bits), default_value=64, allowed_values=[32, 64], description=\"FP size for transport matrix\"\n\nMethods and Variables\n\nsetup_grid_TMM\nvolume (m^3), VT_ReactProperty, description=\"volume of ocean cells\"\nvolume_total (m^3), VT_ReactProperty, description=\"total volume of ocean cells\"\nAbox (m^2), VT_ReactProperty, description=\"horizontal area of box\"\nzupper (m), VT_ReactProperty, description=\"depth of upper surface of box (m) 0 is surface, -100 is depth of 100 m\"\nzlower (m), VT_ReactProperty, description=\"depth of lower surface of box (m)\"\nzmid (m), VT_ReactProperty, description=\"mean depth of box\"\nrho_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)\"\npressure (dbar), VT_ReactProperty, description=\"Ocean pressure\"\nAfloor –> oceanfloor.Afloor (m^2), VT_ReactProperty, description=\"horizontal area of seafloor at base of box\"\nAfloor_total –> oceanfloor.Afloor_total (m^2), VT_ReactProperty, description=\"total area of seafloor\"\nzfloor –> oceanfloor.zfloor (m), VT_ReactProperty, description=\"depth of ocean floor (m, -ve)\"\nAsurf –> oceansurface.Asurf (m^2), VT_ReactProperty, description=\"horizontal area of oceansurface\"\n\n\n\n\n\n","category":"type"},{"location":"PALEOocean_Reactions/#Vertical-Transport","page":"PALEOocean Reactions","title":"Vertical Transport","text":"","category":"section"},{"location":"PALEOocean_Reactions/","page":"PALEOocean Reactions","title":"PALEOocean Reactions","text":"VerticalTransport.ReactionLightColumn\nVerticalTransport.ReactionExportDirect\nVerticalTransport.ReactionExportDirectColumn\nVerticalTransport.ReactionSinkFloat","category":"page"},{"location":"PALEOocean_Reactions/#PALEOocean.Ocean.VerticalTransport.ReactionLightColumn","page":"PALEOocean Reactions","title":"PALEOocean.Ocean.VerticalTransport.ReactionLightColumn","text":"ReactionLightColumn\n\nCalculate light availability insol in ocean interior, given surface insolation surface_insol.\n\nIncludes: (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.\n\nParameters\n\nbackground_opacity[Float64]=0.04 (m-1), default_value=0.04, description=\"background opacity\"\n\n\n\n\n\n","category":"type"},{"location":"PALEOocean_Reactions/#PALEOocean.Ocean.VerticalTransport.ReactionExportDirect","page":"PALEOocean Reactions","title":"PALEOocean.Ocean.VerticalTransport.ReactionExportDirect","text":"ReactionExportDirect\n\nVertical particle sinking represented as instantaneous transport, described by fixed matrices (suitable for small ocean models)\n\nTransports a list of fluxes defined by parameter fluxlist, from input Target Variables with local name export_ to output Contributor Variables remin_.\n\nMatrices are defined by parameter transportocean for sinking within water column, and parameter transportfloor for flux to ocean floor.\n\nFor larger, column-based ocean models use ReactionExportDirectColumn.\n\nParameters\n\nfluxlist[Vector{String}]=[\"P\", \"N\", \"Corg\"], default_value=[\"P\", \"N\", \"Corg\"], description=\"names of fluxes to transport\"\ntransportocean[Vector{Vector{Float64}}]=Vector{Float64}[], default_value=Vector{Float64}[], description=\"matrix describing ocean export\"\ntransportfloor[Vector{Vector{Float64}}]=Vector{Float64}[], default_value=Vector{Float64}[], description=\"matrix describing oceanfloor export\"\nconserv_errthresh[Float64]=1.0e-5, default_value=1.0e-5, description=\"error threshold for conservation check (fraction of input)\"\n\n\n\n\n\n","category":"type"},{"location":"PALEOocean_Reactions/#PALEOocean.Ocean.VerticalTransport.ReactionExportDirectColumn","page":"PALEOocean Reactions","title":"PALEOocean.Ocean.VerticalTransport.ReactionExportDirectColumn","text":"ReactionExportDirectColumn\n\nVertical 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.\n\nTransports a list of fluxes defined by parameter fluxlist, from input Target Variables with local name export_ to output Contributor Variables remin_.\n\nParameters\n\nfluxlist[Vector{String}]=String[], default_value=String[], description=\"names of fluxes to transport\"\ntransportfloor[Bool]=true, default_value=true, description=\"true to provide oceanfloor flux, false to recycle flux into lowest ocean cell\"\nexportfunction[String]=\"SumExp\", default_value=\"SumExp\", allowed_values=[\"Martin\", \"SumExp\"], description=\"functional form for particle flux vs depth\"\ninput_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\"\nsumexp_scale[Vector{Float64}]=[500.0] (m), default_value=[500.0], description=\"length scales for each component of exponential decay of flux with depth\"\nmartin_rovera[Float64]=0.858, default_value=0.858, description=\"Martin power law exponent: flux \\propto depth^rovera\"\nmartin_depthmin[Float64]=100.0 (m), default_value=100.0, description=\"Martin power law minimum depth for start of decay with depth\"\n\n\n\n\n\n","category":"type"},{"location":"PALEOocean_Reactions/#PALEOocean.Ocean.VerticalTransport.ReactionSinkFloat","page":"PALEOocean Reactions","title":"PALEOocean.Ocean.VerticalTransport.ReactionSinkFloat","text":"ReactionSinkFloat\n\nVertical particle advection. \n\nApplied to all concentration Variables with non-zero attribute :vertical_movement (m d-1, +ve upwards), using naming convention _conc to identify _sms Deriv Variable to apply to. An optional variable _w may be defined that overrides :vertical_movement to define spatially-variable vertical motion.\n\nParameters\n\ntransportfloor[Bool]=true, default_value=true, description=\"true to provide oceanfloor flux, false to recycle flux into lowest ocean cell\"\n\n\n\n\n\n","category":"type"},{"location":"PALEOocean_Reactions/#Biological-Production","page":"PALEOocean Reactions","title":"Biological Production","text":"","category":"section"},{"location":"PALEOocean_Reactions/","page":"PALEOocean Reactions","title":"PALEOocean Reactions","text":"BioProd.ReactionBioProdPrest\nBioProd.ReactionBioProdMMPop","category":"page"},{"location":"PALEOocean_Reactions/#PALEOocean.Ocean.BioProd.ReactionBioProdPrest","page":"PALEOocean Reactions","title":"PALEOocean.Ocean.BioProd.ReactionBioProdPrest","text":"ReactionBioProdPrest\n\nP-limited biological production, configurable to restore P to specified level or to consume fraction of nutrients\n\nParameters\n\nbioprod[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\"\nbioprodval[Vector{Float64}]=Float64[] (m-3 or none), default_value=Float64[], description=\"conc or frac corresponding to 'bioprod'\"\nrCorgPO4[Float64]=106.0, default_value=106.0, description=\"Corg:P Redfield ratio of organic matter produced\"\nrNPO4[Float64]=16.0, default_value=16.0, description=\"N:P Redfield ratio of organic matter produced\"\nrCcarbCorg[Float64]=0.0, default_value=0.0, description=\"ratio of Ccarb to Corg produced\"\ntrest[Float64]=0.1 (yr), default_value=0.1, description=\"restoring timescale\"\nCIsotope[external, DataType]=PALEOboxes.ScalarData, default_value=PALEOboxes.ScalarData, allowed_values=Type[PALEOboxes.ScalarData, PALEOboxes.IsotopeLinear], description=\"disable / enable carbon isotopes and specify isotope type\"\n\nMethods and Variables for default Parameters\n\ndo_bio_prod_Prest\nvolume (m^3), VT_ReactDependency, description=\"ocean cell volume\"\nvolume_total (m^3), VT_ReactDependency, description=\"ocean total volume\"\nP_conc (mol m^-3), VT_ReactDependency, description=\"total P concentration\"\nProd_Corg –> %reaction%Prod_Corg (mol yr-1), VT_ReactProperty, description=\"organic carbon production rate\"\nProd_Ccarb –> %reaction%Prod_Ccarb (mol yr-1), VT_ReactProperty, description=\"carbonate production rate\"\nP_sms (mol yr-1), VT_ReactContributor, description=\"total dissolved P source minus sink\"\n[O2_sms] (mol yr-1), VT_ReactContributor, description=\"O2 source minus sink\"\n[TAlk_sms] (mol yr-1), VT_ReactContributor, description=\"TAlk source minus sink\"\n[DIC_sms] (mol yr-1), VT_ReactContributor, description=\"DIC source minus sink\"\n[enable_bioprod] –> global.enable_bioprod (), VT_ReactDependency, description=\"optional forcing, =0.0 to disable, !=0.0 to enable\"\n[PELCALC] –> global.PELCALC (), VT_ReactDependency, description=\"optional forcing for pelagic calcification\"\n[prod_P] (mol yr-1), VT_ReactContributor, description=\"flux P\"\n[prod_N] (mol yr-1), VT_ReactContributor, description=\"flux N\"\n[prod_Corg] (mol yr-1), VT_ReactContributor, description=\"flux Corg\"\n[prod_Ccarb] (mol yr-1), VT_ReactContributor, description=\"flux Ccarb\"\ntotals\nProd_Corg –> %reaction%Prod_Corg (mol yr-1), VT_ReactDependency, description=\"organic carbon production rate\"\nProd_Ccarb –> %reaction%Prod_Ccarb (mol yr-1), VT_ReactDependency, description=\"carbonate production rate\"\nProd_Corg_total (mol yr-1), VT_ReactProperty, description=\"total organic carbon production rate\"\nProd_Ccarb_total (mol yr-1), VT_ReactProperty, description=\"total carbonate production rate\"\n\n\n\n\n\n","category":"type"},{"location":"PALEOocean_Reactions/#PALEOocean.Ocean.BioProd.ReactionBioProdMMPop","page":"PALEOocean Reactions","title":"PALEOocean.Ocean.BioProd.ReactionBioProdMMPop","text":"ReactionBioProdMMPop\n\nOcean phytoplankton biological production.\n\nConfigurable to represent oxygenic photosynthesizers with P, N limitation, nitrogen fixers, anoxygenic photosynthesis limited by electron donor availability.\n\nExport production or production is represented as a combination of limiting factors:\n\npopulation_size x nutrient_limitation x light_limitation x temperature_limitation x electron_donor_limitation\n\npopulation_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).\n\nExport 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.\n\nSee (Kriest et al., 2010) for a comparison of models of this type.\n\nProduction functional forms\n\npopulation_size\n\nSet by k_poptype parameter:\n\nConstant: k_uPO4 (mol P / m-3 / yr) (represents export production)\nNutrient: k_mu*P_conc (mol P / m-3 / yr) (represents export production)\nPop : k_mu*phytP_conc (mol P / m-3 / yr) (represents growth of explicit population phtyP_conc)\n\nnutrient_limitation\n\nSet by k_nuttype parameter:\n\nPO4MM: P_conc / (P_conc + k_KPO4)\nPO4NMM: P, N limited phytoplankton export production: cf GENIE 2N2T_PO4MM_NO3, (Fennel, 2005)\nPO4NMMNfix: P limited nitrogen-fixer export production: cf GENIE 2N2T_PO4MM_NO3, (Fennel, 2005)\n\nlight_limitation\n\nSet by k_lightlim parameter:\n\nfixed: constant k_Irel\nlinear: GENIE-like form k_Irel*insol/PB.Constants.k_solar_presentday where insol (W m-2) is provided insolation in each cell\nMM: MITgcm-like saturating form zInsol/(k_Ic + zInsol) where zInsol = k_Irel*insol and insol is provided PAR in each cell\nQE: Saturating light limitation of rate vs (local) PAR k_Irel*insol, derived from photosynthetic QE k_alphaQE and chl absorption cross section k_thetaChlC. See eg (Geider, 1987) for summary of notation and unit conversions.\n\ntemperature_limitation\n\nSet by k_templim parameter:\n\nConstant: constant value 1.0\nEppley: Eppley curve, normalized to 1.0 at 0 deg C, exp(0.0633*(temp - PB.Constants.k_CtoK))\n\nelectron_donor_limitation\n\nSet by k_edonor parameter:\n\nH2O: constant 1.0, no electron-donor limitation on production\nH2S: H2S_conc / (H2S_conc + k_KH2S) production limited by H2S concentration\n\nExamples\n\nk_poptype k_nuttype k_lightlim k_templim k_edonor Reference\nConstant PO4MM linear Constant H2O P and light limited export production, as used by GENIE (Ridgwell et al., 2007)\nPop PO4MM QE Eppley H2O P and light limited phytoplankton population\n\nParameters\n\nrCorgPO4[Float64]=106.0, default_value=106.0, description=\"Corg:P Redfield ratio of organic matter produced\"\nrNPO4[Float64]=16.0, default_value=16.0, description=\"N:P Redfield ratio of organic matter produced\"\nrCcarbCorg[Float64]=0.0, default_value=0.0, description=\"ratio of Ccarb to Corg produced\"\nrCcarbCorg_fixed[Bool]=true, default_value=true, description=\"Ccarb:Corg rain ratio true for fixed, false for sat. state dependent\"\nk_r0[Float64]=0.044372, default_value=0.044372, description=\"initial rain-ratio for sat. state dependent rain ratio\"\nk_eta[Float64]=0.8053406, default_value=0.8053406, description=\"exponent for sat. state dependent rain ratio\"\nnuDOM[Float64]=0.66, default_value=0.66, description=\"fraction of production to DOM reservoir\"\ndepthlimit[Float64]=-200.0 (m), default_value=-200.0, description=\"depth limit for production\"\nk_poptype[String]=\"Constant\", default_value=\"Constant\", allowed_values=[\"Constant\", \"Nutrient\", \"Pop\"], description=\"population / growth rate model\"\nk_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)\"\nk_mu[Float64]=NaN (1/yr), default_value=NaN, description=\"for k_poptype = 'Nutrient', 'Pop': max prod/growth rate (at 0C if templim=='Eppley')\"\nk_grazeresprate[Float64]=NaN (1/yr), default_value=NaN, description=\"for k_poptype = 'Pop' imposed const loss (mortality) rate\"\nk_templim[String]=\"Constant\", default_value=\"Constant\", allowed_values=[\"Constant\", \"Eppley\"], description=\"temperature limitation factor\"\nk_lightlim[String]=\"linear\", default_value=\"linear\", allowed_values=[\"linear\", \"MM\", \"fixed\", \"QE\"], description=\"Light limitation function\"\nk_Irel[Float64]=1.0, default_value=1.0, description=\"multiplier for forcing-supplied insolation\"\nk_Ic[Float64]=30.0 (W/m^2), default_value=30.0, description=\"saturating irradiance for 'MM' case\"\nk_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'\"\nk_thetaChlC[Float64]=0.03 (mg Chl / mgC), default_value=0.03, description=\"Chl:Corg ratio for explicit population k_poptype=Pop\"\nk_epsilonChl[Float64]=0.012 (m^2/mg Chl), default_value=0.012, description=\"chl absorption coeff (for self shielding) for k_poptype='Pop'\"\nk_nuttype[String]=\"PO4MM\", default_value=\"PO4MM\", allowed_values=[\"PO4MM\", \"PO4NMM\", \"PO4NMMNfix\"], description=\"Nutrient limitation / nitrogen fixation function\"\nk_KPO4[Float64]=NaN (mol P m-3 ), default_value=NaN, description=\"limitation at low [P] MM half-max constant\"\nk_KN[Float64]=0.0 (mol NO3+NH4 m-3), default_value=0.0, description=\"limitation at low nitrogen\"\nk_prefNH3[Float64]=10.0, default_value=10.0, description=\"preference for ammonia over nitrate\"\nk_edonor[String]=\"H2O\", default_value=\"H2O\", allowed_values=[\"H2O\", \"H2S\"], description=\"electron donor (H2O for oxygenic phototroph\"\nk_KH2S[Float64]=0.001 (mol H2S m-3), default_value=0.001, description=\"limitation at low [H2S] MM half-max constant\"\nCIsotope[external, DataType]=PALEOboxes.ScalarData, default_value=PALEOboxes.ScalarData, allowed_values=Type[PALEOboxes.ScalarData, PALEOboxes.IsotopeLinear], description=\"disable / enable carbon isotopes and specify isotope type\"\n\nMethods and Variables for default Parameters\n\nRateStoich_edonorO2eq\nedonorO2eq (mol O2eq yr-1), VT_ReactDependency, description=\"O2eq e- donor consumption (H2O) by oxygenic photosynthesis\"\n[O2_sms] (), VT_ReactContributor, description=\"generated by RateStoich rate=edonorO2eq\"\ndo_bio_prod_MM_pop\nvolume (m^3), VT_ReactDependency, description=\"ocean cell volume\"\nzupper (m), VT_ReactDependency, description=\"cell depth (-ve)\"\nopen_area_fraction –> oceansurface.open_area_fraction (), VT_ReactDependency, description=\"fraction of area open to atmosphere\"\nP_conc (mol m^-3), VT_ReactDependency, description=\"total P concentration\"\n[OmegaCA] (), VT_ReactDependency, description=\"calcite saturation state\"\n[rate_bioprod] –> global.rate_bioprod (), VT_ReactDependency, description=\"optional forcing, multiplier for productivity\"\n[PELCALC] –> global.PELCALC (), VT_ReactDependency, description=\"optional forcing for pelagic calcification\"\nProd_Corg –> %reaction%Prod_Corg (mol yr-1), VT_ReactProperty, description=\"organic carbon production rate\"\nProd_Ccarb –> %reaction%Prod_Ccarb (mol yr-1), VT_ReactProperty, description=\"carbonate production rate\"\nP_sms (mol yr-1), VT_ReactContributor, description=\"total dissolved P source minus sink\"\n[TAlk_sms] (mol yr-1), VT_ReactContributor, description=\"TAlk source minus sink\"\n[DIC_sms] (mol yr-1), VT_ReactContributor, description=\"DIC source minus sink\"\n[partprod_P] (mol yr-1), VT_ReactContributor, description=\"flux P\"\n[partprod_N] (mol yr-1), VT_ReactContributor, description=\"flux N\"\n[partprod_Corg] (mol yr-1), VT_ReactContributor, description=\"flux Corg\"\n[partprod_Ccarb] (mol yr-1), VT_ReactContributor, description=\"flux Ccarb\"\n[domprod_P] (mol yr-1), VT_ReactContributor, description=\"flux P\"\n[domprod_N] (mol yr-1), VT_ReactContributor, description=\"flux N\"\n[domprod_Corg] (mol yr-1), VT_ReactContributor, description=\"flux Corg\"\n[domprod_Ccarb] (mol yr-1), VT_ReactContributor, description=\"flux Ccarb\"\nedonorO2eq (mol O2eq yr-1), VT_ReactProperty, description=\"O2eq e- donor consumption (H2O) by oxygenic photosynthesis\"\ninsol (W m-2), VT_ReactDependency, description=\"photosynthetic radiative flux\"\ntotals\nProd_Corg –> %reaction%Prod_Corg (mol yr-1), VT_ReactDependency, description=\"organic carbon production rate\"\nedonorO2eq (mol O2eq yr-1), VT_ReactDependency, description=\"O2eq e- donor consumption (H2O) by oxygenic photosynthesis\"\nProd_Ccarb –> %reaction%Prod_Ccarb (mol yr-1), VT_ReactDependency, description=\"carbonate production rate\"\nProd_Corg_total (mol yr-1), VT_ReactProperty, description=\"total organic carbon production rate\"\nedonorO2eq_total (mol O2eq yr-1), VT_ReactProperty, description=\"total O2eq e- donor consumption (H2O) by oxygenic photosynthesis\"\nProd_Ccarb_total (mol yr-1), VT_ReactProperty, description=\"total carbonate production rate\"\n\n\n\n\n\n","category":"type"},{"location":"PALEOocean_Reactions/#Ocean-surface-air-sea-flux","page":"PALEOocean Reactions","title":"Ocean surface air-sea flux","text":"","category":"section"},{"location":"PALEOocean_Reactions/","page":"PALEOocean Reactions","title":"PALEOocean Reactions","text":"CurrentModule = PALEOocean.Oceansurface","category":"page"},{"location":"PALEOocean_Reactions/","page":"PALEOocean Reactions","title":"PALEOocean Reactions","text":"AirSeaExchange.ReactionAirSea\nAirSeaExchange.ReactionAirSeaO2\nAirSeaExchange.ReactionAirSeaCO2\nAirSeaExchange.ReactionAirSeaCH4\nAirSeaExchange.ReactionAirSeaFixedSolubility","category":"page"},{"location":"PALEOocean_Reactions/#PALEOocean.Oceansurface.AirSeaExchange.ReactionAirSea","page":"PALEOocean Reactions","title":"PALEOocean.Oceansurface.AirSeaExchange.ReactionAirSea","text":"ReactionAirSea(Sc_function, sol_function, frac_function, gas_name)\nReactionAirSeaO2\nReactionAirSeaCO2\nReactionAirSeaCO2\nReactionAirSeaFixedSolubility\n\nCalculate atmosphere to ocean gas flux, mol/yr.\n\nNB: ReactionAirSea not used directly - use as ReactionAirSeaO2 etc.\n\nRuns in oceansurface Domain, calculates per-oceansurface-cell atmosphere to ocean gas flux (mol yr-1) for a gas X using stagnant film model:\n\nflux_X = Asurf * open_area_fraction * vpiston * (solX(pXatm) - X_conc)\n\nAsurf and open_area_fraction should be defined by oceansurface variables.\n\nPiston 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).\n\nIf 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.\n\n\n\n\n\n","category":"type"},{"location":"PALEOocean_Reactions/#PALEOocean.Oceansurface.AirSeaExchange.ReactionAirSeaO2","page":"PALEOocean Reactions","title":"PALEOocean.Oceansurface.AirSeaExchange.ReactionAirSeaO2","text":"ReactionAirSeaO2\n\nSee ReactionAirSea\n\nPiston velocity: Schmidt factor from (Sarmiento and Gruber, 2006)\nSolubility: from (Wanninkhof, 1992)\n\nParameters\n\nsolubility_fixed[Bool]=false, default_value=false, description=\"use fixed solubility\"\nsol_fix_henry_coeff[Float64]=NaN (mol l-1 atm-1), default_value=NaN, description=\"Henry's law coefficient for solubility_fixed=true\"\nmoistair[Bool]=true, default_value=true, description=\"apply correction for moist air\"\npiston_fixed[Bool]=true, default_value=true, description=\"use fixed piston velocity\"\npiston[Float64]=NaN (m d-1), default_value=NaN, description=\"fixed piston velocity\"\nTempKmin[Float64]=-Inf (K), default_value=-Inf, description=\"GENIE bug compatibility - lower limit on temperature for solubility\"\natm_partial_pressure_min_zero[Bool]=false, default_value=false, description=\"true to clamp -ve values of atmospheric partial pressure to zero when calculating flux\"\nocean_conc_min_zero[Bool]=false, default_value=false, description=\"true to clamp -ve values of ocean concentration to zero when calculating flux\"\n\nMethods and Variables for default Parameters\n\ndo_air_sea_flux\nAsurf (m^2), VT_ReactDependency, description=\"horizontal area of oceansurface\"\nopen_area_fraction (), VT_ReactDependency, description=\"fracton of surface open to atmosphere (0-1.0)\"\npXatm –> atm.pO2atm (atm), VT_ReactDependency, description=\"gas X atmospheric partial pressure\"\nX_conc –> ocean.oceansurface.O2_conc (mol m-3), VT_ReactDependency, description=\"ocean concentration [gas X]\"\nflux_X –> fluxAtmtoOceansurface.flux_O2 (mol yr-1), VT_ReactContributor, description=\"air -> sea gas X flux\"\ntemp –> ocean.oceansurface.temp (K), VT_ReactDependency, description=\"ocean surface temperature\"\nsal –> ocean.oceansurface.sal (psu), VT_ReactDependency, description=\"ocean salinity\"\n\n\n\n\n\n","category":"type"},{"location":"PALEOocean_Reactions/#PALEOocean.Oceansurface.AirSeaExchange.ReactionAirSeaCO2","page":"PALEOocean Reactions","title":"PALEOocean.Oceansurface.AirSeaExchange.ReactionAirSeaCO2","text":"ReactionAirSeaCO2\n\nSee ReactionAirSea\n\nPiston velocity: Schmidt factor from (Wanninkhof, 1992)\nSolubility: calculated from ocean.CO2_conc, ocean.pCO2atm defined by ocean carbonate chemistry.\nIsotope fractionation: equilibrium and kinetic fractionation from (Zhang et al., 1995)\n\nParameters\n\nsolubility_fixed[Bool]=false, default_value=false, description=\"use fixed solubility\"\nsol_fix_henry_coeff[Float64]=NaN (mol l-1 atm-1), default_value=NaN, description=\"Henry's law coefficient for solubility_fixed=true\"\nmoistair[Bool]=true, default_value=true, description=\"apply correction for moist air\"\npiston_fixed[Bool]=true, default_value=true, description=\"use fixed piston velocity\"\npiston[Float64]=NaN (m d-1), default_value=NaN, description=\"fixed piston velocity\"\nTempKmin[Float64]=-Inf (K), default_value=-Inf, description=\"GENIE bug compatibility - lower limit on temperature for solubility\"\natm_partial_pressure_min_zero[Bool]=false, default_value=false, description=\"true to clamp -ve values of atmospheric partial pressure to zero when calculating flux\"\nocean_conc_min_zero[Bool]=false, default_value=false, description=\"true to clamp -ve values of ocean concentration to zero when calculating flux\"\n\n\n\n\n\n","category":"type"},{"location":"PALEOocean_Reactions/#PALEOocean.Oceansurface.AirSeaExchange.ReactionAirSeaCH4","page":"PALEOocean Reactions","title":"PALEOocean.Oceansurface.AirSeaExchange.ReactionAirSeaCH4","text":"ReactionAirSeaCH4\n\nSee ReactionAirSea\n\nPiston velocity: Schmidt factor from (Wanninkhof, 1992)\nSolubility: from (Wanninkhof, 1992)\nIsotope fractionation: NB: TODO no isotope fractionation\n\nParameters\n\nsolubility_fixed[Bool]=false, default_value=false, description=\"use fixed solubility\"\nsol_fix_henry_coeff[Float64]=NaN (mol l-1 atm-1), default_value=NaN, description=\"Henry's law coefficient for solubility_fixed=true\"\nmoistair[Bool]=true, default_value=true, description=\"apply correction for moist air\"\npiston_fixed[Bool]=true, default_value=true, description=\"use fixed piston velocity\"\npiston[Float64]=NaN (m d-1), default_value=NaN, description=\"fixed piston velocity\"\nTempKmin[Float64]=-Inf (K), default_value=-Inf, description=\"GENIE bug compatibility - lower limit on temperature for solubility\"\natm_partial_pressure_min_zero[Bool]=false, default_value=false, description=\"true to clamp -ve values of atmospheric partial pressure to zero when calculating flux\"\nocean_conc_min_zero[Bool]=false, default_value=false, description=\"true to clamp -ve values of ocean concentration to zero when calculating flux\"\n\n\n\n\n\n","category":"type"},{"location":"PALEOocean_Reactions/#PALEOocean.Oceansurface.AirSeaExchange.ReactionAirSeaFixedSolubility","page":"PALEOocean Reactions","title":"PALEOocean.Oceansurface.AirSeaExchange.ReactionAirSeaFixedSolubility","text":"ReactionAirSeaFixedSolubility\n\nSee ReactionAirSea\n\nPiston velocity: fixed value from piston Parameter\nSolubility: fixed value from sol_fix_henry_coeff\n\nNB: moistair correction is not applied\n\nParameters\n\nsolubility_fixed[Bool]=true, default_value=true, description=\"use fixed solubility\"\nsol_fix_henry_coeff[Float64]=NaN (mol l-1 atm-1), default_value=NaN, description=\"Henry's law coefficient for solubility_fixed=true\"\nmoistair[Bool]=false, default_value=false, description=\"apply correction for moist air\"\npiston_fixed[Bool]=true, default_value=true, description=\"use fixed piston velocity\"\npiston[Float64]=NaN (m d-1), default_value=NaN, description=\"fixed piston velocity\"\nTempKmin[Float64]=-Inf (K), default_value=-Inf, description=\"GENIE bug compatibility - lower limit on temperature for solubility\"\natm_partial_pressure_min_zero[Bool]=false, default_value=false, description=\"true to clamp -ve values of atmospheric partial pressure to zero when calculating flux\"\nocean_conc_min_zero[Bool]=false, default_value=false, description=\"true to clamp -ve values of ocean concentration to zero when calculating flux\"\n\nMethods and Variables for default Parameters\n\ndo_air_sea_flux\nAsurf (m^2), VT_ReactDependency, description=\"horizontal area of oceansurface\"\nopen_area_fraction (), VT_ReactDependency, description=\"fracton of surface open to atmosphere (0-1.0)\"\npXatm –> atm.pXatm (atm), VT_ReactDependency, description=\"gas X atmospheric partial pressure\"\nX_conc –> ocean.oceansurface.X_conc (mol m-3), VT_ReactDependency, description=\"ocean concentration [gas X]\"\nflux_X –> fluxAtmtoOceansurface.flux_X (mol yr-1), VT_ReactContributor, description=\"air -> sea gas X flux\"\n\n\n\n\n\n","category":"type"},{"location":"PALEOocean_Reactions/#Ocean-floor-burial","page":"PALEOocean Reactions","title":"Ocean floor burial","text":"","category":"section"},{"location":"PALEOocean_Reactions/","page":"PALEOocean Reactions","title":"PALEOocean Reactions","text":"CurrentModule = PALEOocean.Oceanfloor","category":"page"},{"location":"PALEOocean_Reactions/#Carbonate-burial","page":"PALEOocean Reactions","title":"Carbonate burial","text":"","category":"section"},{"location":"PALEOocean_Reactions/","page":"PALEOocean Reactions","title":"PALEOocean Reactions","text":"Burial.ReactionShelfCarb\nBurial.ReactionBurialEffCarb","category":"page"},{"location":"PALEOocean_Reactions/#PALEOocean.Oceanfloor.Burial.ReactionShelfCarb","page":"PALEOocean Reactions","title":"PALEOocean.Oceanfloor.Burial.ReactionShelfCarb","text":"ReactionShelfCarb\n\nShallow-water carbonate burial controlled by carbonate saturation state (after (Caldeira and Rampino, 1993))\n\nCarbonate 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.\n\nParameters\n\ncarbsedshallow[Float64]=1.4355e12 (mol C yr-1), default_value=1.4355e12, description=\"total carbonate deposition rate\"\nshelfareanorm[Vector{Float64}]=Float64[], default_value=Float64[], description=\"per box distribution of carbonate burial (length=Domain size, must sum to 1.0)\"\nCIsotope[external, DataType]=PALEOboxes.ScalarData, default_value=PALEOboxes.ScalarData, allowed_values=Type[PALEOboxes.ScalarData, PALEOboxes.IsotopeLinear], description=\"disable / enable carbon isotopes and specify isotope type\"\n\nMethods and Variables for default Parameters\n\ndo_shelf_carb\nfluxOceanfloor_soluteflux_DIC –> fluxOceanfloor.soluteflux_DIC (mol yr-1), VT_ReactContributor, description=\"flux DIC\"\nfluxOceanfloor_soluteflux_TAlk –> fluxOceanfloor.soluteflux_TAlk (mol yr-1), VT_ReactContributor, description=\"flux TAlk\"\n[fluxOceanfloor_soluteflux_Ca] –> fluxOceanfloor.soluteflux_Ca (mol yr-1), VT_ReactContributor, description=\"flux Ca\"\n[fluxOceanBurial_flux_Ccarb] –> fluxOceanBurial.flux_Ccarb (mol yr-1), VT_ReactContributor, description=\"flux Ccarb\"\n[shelfarea_force] –> global.shelfarea_force (), VT_ReactDependency, description=\"optional forcing multiplier for carbsedshallow (defaults to 1.0)\"\nOmegaAR –> ocean.oceanfloor.OmegaAR (), VT_ReactDependency, description=\"aragonite saturation\"\nshelf_Ccarb (mol yr-1), VT_ReactProperty, description=\"shelf Ccarb burial\"\ntotals\nshelf_Ccarb (mol yr-1), VT_ReactDependency, description=\"shelf Ccarb burial\"\nshelf_Ccarb_total (mol yr-1), VT_ReactProperty, description=\"total shelf Ccarb burial\"\n\n\n\n\n\n","category":"type"},{"location":"PALEOocean_Reactions/#PALEOocean.Oceanfloor.Burial.ReactionBurialEffCarb","page":"PALEOocean Reactions","title":"PALEOocean.Oceanfloor.Burial.ReactionBurialEffCarb","text":"ReactionBurialEffCarb\n\nDeep ocean carbonate burial as a carbonate-saturation-state-dependent fraction of carbonate flux.\n\nParameterisation from (Caldeira and Rampino, 1993), intended for use in ocean box models with a single deep ocean box.\n\nFraction of input carbonate flux buried flys is a function of oceanfloor carbonate saturation state.\n\nCarbonate burial flux flux_Ccarb = particulateflux_Ccarb * flys, where Fraction of input carbonate flux buried flys is a function of carbonate saturation state.\n\nCan 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.\n\nParameter burial_eff_function sets the functional form used for burial fraction flys:\n\n\"Caldeira1993\": flys = 0.5*(1.0+tanh(k0([CO3] -k1)))\n\n(after (Caldeira and Rampino, 1993), intended for use with the single deep ocean box in a 3-box ocean model)\n\n\"OmegaCA\": flys = 1 - 0.5 * erfc(m0*(Ω_CA - m1)) (burial efficiency a function of oceanfloor saturation state)\n\nParameters\n\nburial_eff_function[String]=\"Caldeira1993\", default_value=\"Caldeira1993\", allowed_values=[\"Caldeira1993\", \"OmegaCA\"], description=\"functional form for burial efficiency\"\nk0[Float64]=26.0 (m3/mol), default_value=26.0, description=\"Caldeira1993: burial frac 'steepness' with CO3 concentration\"\nk1[Float64]=0.11 (mol/m3), default_value=0.11, description=\"Caldeira1993: CO3 concentration at burial frac 0.5\"\nm0[Float64]=10.0, default_value=10.0, description=\"OmegaCA: burial frac 'steepness' with OmegaCA\"\nm1[Float64]=1.0, default_value=1.0, description=\"OmegaCA: OmegaCA at burial frac 0.5\"\nhascarbseddeep[Vector{Bool}]=Bool[], default_value=Bool[], description=\"per box flag to enable (length=Domain size)\"\nCIsotope[external, DataType]=PALEOboxes.ScalarData, default_value=PALEOboxes.ScalarData, allowed_values=Type[PALEOboxes.ScalarData, PALEOboxes.IsotopeLinear], description=\"disable / enable carbon isotopes and specify isotope type\"\n\nMethods and Variables for default Parameters\n\ndo_burial_eff_carb\nfluxOceanfloor_soluteflux_DIC –> fluxOceanfloor.soluteflux_DIC (mol yr-1), VT_ReactContributor, description=\"flux DIC\"\nfluxOceanfloor_soluteflux_TAlk –> fluxOceanfloor.soluteflux_TAlk (mol yr-1), VT_ReactContributor, description=\"flux TAlk\"\n[fluxOceanfloor_soluteflux_Ca] –> fluxOceanfloor.soluteflux_Ca (mol yr-1), VT_ReactContributor, description=\"flux Ca\"\n[fluxOceanBurial_flux_Ccarb] –> fluxOceanBurial.flux_Ccarb (mol yr-1), VT_ReactContributor, description=\"flux Ccarb\"\nparticulateflux_Ccarb (mol yr-1), VT_ReactTarget, description=\"input carbonate particulate flux\"\ndeep_Ccarb (mol yr-1), VT_ReactProperty, description=\"deep unresolved Ccarb burial\"\nflys (), VT_ReactProperty, description=\"fraction of Ccarb export buried\"\nCO3_conc –> ocean.oceanfloor.CO3_conc (mol m-3), VT_ReactDependency, description=\"CO3 concentration\"\ntotals\ndeep_Ccarb (mol yr-1), VT_ReactDependency, description=\"deep unresolved Ccarb burial\"\ndeep_Ccarb_total (mol yr-1), VT_ReactProperty, description=\"total deep unresolved Ccarb burial\"\n\n\n\n\n\n","category":"type"},{"location":"PALEOocean_Reactions/#Organic-carbon-and-phosphorus-burial","page":"PALEOocean Reactions","title":"Organic carbon and phosphorus burial","text":"","category":"section"},{"location":"PALEOocean_Reactions/","page":"PALEOocean Reactions","title":"PALEOocean Reactions","text":"Burial.ReactionBurialEffCorgP","category":"page"},{"location":"PALEOocean_Reactions/#PALEOocean.Oceanfloor.Burial.ReactionBurialEffCorgP","page":"PALEOocean Reactions","title":"PALEOocean.Oceanfloor.Burial.ReactionBurialEffCorgP","text":"ReactionBurialEffCorgP\n\nBurial efficiency (fraction of particulateflux input) for Corg and P.\n\nInput 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.\n\nThe fraction of Corg buried is given by a burial efficiency function, with options set by Parameter burial_eff_function:\n\nPrescribed: Corg burial in cell i = Corg particulateflux * BECorgNorm*Parameter BECorg[i]\nOzaki2011: Corg burial in cell i = Corg particulateflux * BECorgNorm*burialEffCorg_Ozaki2011(sedimentation_rate)\nDunne2007: corg burial in cell i = Corg particulateflux * BECorgNorm*burialEffCorg_Dunne2007(Corg particulateflux, Afloor)\nConstantBurialRate: Corg burial in cell i = BECorgNorm*Parameter BECorg[i] (independent of Corg flux)\n\nIt 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.\n\nP 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.\n\nParameters\n\nBECorgNorm[Float64]=1.0, default_value=1.0, description=\"overall normalization factor for Corg burial (or total Corg burial for ConstantBurialRate)\"\nburial_eff_function[String]=\"Prescribed\", default_value=\"Prescribed\", allowed_values=[\"Prescribed\", \"Ozaki2011\", \"Dunne2007\", \"ConstantBurialRate\"], description=\"Corg burial efficiency parameterisation (or ConstantBurialRate)\"\nBECorg[Vector{Float64}]=Float64[], default_value=Float64[], description=\"prescribed fraction seafloor Corg flux buried (or per-cell fraction of total Corg for ConstantBurialRate)\"\nFixedCorgBurialTotal[Float64]=NaN (mol C yr-1), default_value=NaN, description=\"if != NaN, fix total ocean Corg burial rate by renormalizing per-cell fluxes\"\nBPO2[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)\"\nBPorgCorg[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)\"\nBPFeCorg[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)\"\nBPauthCorg[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)\"\nCIsotope[external, DataType]=PALEOboxes.ScalarData, default_value=PALEOboxes.ScalarData, allowed_values=Type[PALEOboxes.ScalarData, PALEOboxes.IsotopeLinear], description=\"disable / enable carbon isotopes and specify isotope type\"\n\nMethods and Variables\n\ndo_burial_eff_CorgP\nparticulateflux_Corg (mol yr-1), VT_ReactTarget, description=\"input particulate flux Corg\"\nparticulateflux_P (mol yr-1), VT_ReactTarget, description=\"input particulate flux P\"\nparticulateflux_N (mol yr-1), VT_ReactTarget, description=\"input particulate flux N\"\nreminflux_Corg (mol yr-1), VT_ReactContributor, description=\"output unburied particulate flux Corg\"\nreminflux_P (mol yr-1), VT_ReactContributor, description=\"output unburied particulate flux P\"\nreminflux_N (mol yr-1), VT_ReactContributor, description=\"output unburied particulate flux N\"\n[fluxOceanBurial_flux_Corg] –> fluxOceanBurial.flux_Corg (mol yr-1), VT_ReactContributor, description=\"flux Corg\"\n[fluxOceanBurial_flux_Porg] –> fluxOceanBurial.flux_Porg (mol yr-1), VT_ReactContributor, description=\"flux Porg\"\n[fluxOceanBurial_flux_PFe] –> fluxOceanBurial.flux_PFe (mol yr-1), VT_ReactContributor, description=\"flux PFe\"\n[fluxOceanBurial_flux_Pauth] –> fluxOceanBurial.flux_Pauth (mol yr-1), VT_ReactContributor, description=\"flux Pauth\"\n[fluxOceanBurial_flux_P] –> fluxOceanBurial.flux_P (mol yr-1), VT_ReactContributor, description=\"flux P\"\nburial_eff_Corg (), VT_ReactProperty, description=\"Corg burial efficiency\"\n[sedimentation_rate] (m yr-1), VT_ReactDependency, description=\"sedimentation rate\"\n[O2_conc] –> ocean.oceanfloor.O2_conc (mol m-3), VT_ReactDependency, description=\"O2 concentration\"\n[Afloor] –> oceanfloor.Afloor (m^2), VT_ReactDependency, description=\"horizontal area of seafloor at base of box\"\n\n\n\n\n\n","category":"type"},{"location":"PALEOocean_functions/#PALEOocean-functions","page":"PALEOocean functions","title":"PALEOocean functions","text":"","category":"section"},{"location":"PALEOocean_functions/","page":"PALEOocean functions","title":"PALEOocean functions","text":"Helper functions for use by Reactions.","category":"page"},{"location":"PALEOocean_functions/","page":"PALEOocean functions","title":"PALEOocean functions","text":"CurrentModule = PALEOocean.Ocean","category":"page"},{"location":"PALEOocean_functions/#Configuring-Domains-and-Variables","page":"PALEOocean functions","title":"Configuring Domains and Variables","text":"","category":"section"},{"location":"PALEOocean_functions/","page":"PALEOocean functions","title":"PALEOocean functions","text":"set_model_domains\nfind_transport_vars","category":"page"},{"location":"PALEOocean_functions/#PALEOocean.Ocean.set_model_domains","page":"PALEOocean functions","title":"PALEOocean.Ocean.set_model_domains","text":"set_model_domains(model::PB.Model, oceangrid, surfacegrid, floorgrid)\n\nSet model Domain sizes and Subdomains for ocean, oceansurface, oceanfloor Domains. (Helper function for a Reaction implementing ocean transport.)\n\n\n\n\n\n","category":"function"},{"location":"PALEOocean_functions/#PALEOocean.Ocean.find_transport_vars","page":"PALEOocean functions","title":"PALEOocean.Ocean.find_transport_vars","text":"find_transport_vars(domain::PB.AbstractDomain; transport_input_components=false) \n -> (conc_vars, sms_vars, input_components, num_components)\n\nFind all variables in domain with attribute :advect == true, and then use naming convention _conc to identify _sms Variables to add transport flux to.\n\nIf transport_input_components = true, also define input_components as _transport_input to calculate advective transport input into each cell (slow)\n\n\n\n\n\n","category":"function"},{"location":"PALEOocean_functions/#Constructing-and-using-transport-matrices","page":"PALEOocean functions","title":"Constructing and using transport matrices","text":"","category":"section"},{"location":"PALEOocean_functions/","page":"PALEOocean functions","title":"PALEOocean functions","text":"add_loop!\nprepare_transport\ndo_transport\ndo_transport_tr","category":"page"},{"location":"PALEOocean_functions/#PALEOocean.Ocean.add_loop!","page":"PALEOocean functions","title":"PALEOocean.Ocean.add_loop!","text":"add_loop!(A::AbstractMatrix, vm::AbstractVector, L::Real, loopindices)\n\nAdd circulation with flux L to transport matrix A, around a closed loop loopindices.\n\nTransport matrix A (s^{-1}) represents tracer transport,\n\ndc/dt = A * c\n\nwhere c is Vector of tracer concentrations\n\nloopindices is a list of cell indices representing a closed loop, eg [2, 3, 4, 2]\n\nUnits for tracers and fluxes are:\n\nOcean / volume based:\nc: mol m-3 tracer concentration\nvm: m^3. volume per cell\nL: m^3 s-1 (volume flux, cf 1 Sverdrup = 1e6 m^3 s-1)\nAtmosphere / mass based\nc: kg / total kg, tracer mass mixing ratio \nvm: kg, total mass per call\nL: kg s-1 (mass flux)\n\n\n\n\n\n","category":"function"},{"location":"PALEOocean_functions/#PALEOocean.Ocean.prepare_transport","page":"PALEOocean functions","title":"PALEOocean.Ocean.prepare_transport","text":"prepare_transport(m::ReactionMethod, (grid_vars, conc_components, sms_components, input_components)) -> \n (grid_vars, conc_components, sms_components, input_components, buffer)\n\nAdd an additional buffer for do_transport. conc_components, sms_components, optional input_components are Vectors of data Arrays (as created by VarList_components from lists generated by find_transport_vars).\n\n\n\n\n\n","category":"function"},{"location":"PALEOocean_functions/#PALEOocean.Ocean.do_transport","page":"PALEOocean functions","title":"PALEOocean.Ocean.do_transport","text":"do_transport(grid_vars, conc_components, sms_components, input_components, buffer, dtm::AbstractMatrix, cr::AbstractCellRange)\n\nCalculate transport rates. \n\nArguments\n\ngrid_vars, conc_components, sms_components, input_components: Vectors of data Arrays (created by VarList_components)\nbuffer: buffer arrays created by prepare_transport\ndtm::AbstractMatrix: transport matrix (units yr-1)\n\n\n\n\n\n","category":"function"},{"location":"PALEOocean_functions/#PALEOocean.Ocean.do_transport_tr","page":"PALEOocean functions","title":"PALEOocean.Ocean.do_transport_tr","text":"do_transport_tr(grid_vars, conc_components, sms_components, input_components, buffer, \n dtm_tr::SparseArrays.SparseMatrixCSC, cr::PB.AbstractCellRange)\n\ndo_transport_tr(grid_vars, conc_components, sms_components, input_components, buffer,\n colptr, rowval, (nzval1, nzval2), (wt1, wt2), cr::PB.AbstractCellRange)\n\nMemory-bandwidth optimised version of do_transport using transposed matrix dtm_tr. This is an optimisation specifically tied to the Compressed Sparse Column storage layout (Julia SparseMatrixCSC).\n\nIf two matrices are supplied with a common sparsity pattern specified by colptr, rowptr, applies a linear combination with (wt1, wt2)\n\n\n\n\n\nOptimized SIMD transport matrix x contiguous packed conc data array\n\n\n\n\n\n","category":"function"},{"location":"PALEOocean_functions/#Optimized-transport-using-transport-matrices-with-a-common-sparsity-pattern","page":"PALEOocean functions","title":"Optimized transport using transport matrices with a common sparsity pattern","text":"","category":"section"},{"location":"PALEOocean_functions/","page":"PALEOocean functions","title":"PALEOocean functions","text":"TrsptCSC\ncreate_common_sparsity_tr!","category":"page"},{"location":"PALEOocean_functions/#PALEOocean.Ocean.TrsptCSC","page":"PALEOocean functions","title":"PALEOocean.Ocean.TrsptCSC","text":"TrsptCSC\n\nStore multiple SparseArrays.SparseMatrixCSC with a common sparsity pattern.\n\nThis allows fast interpolation for eg a time-series of transport matrices over a seasonal cycle.\n\nSparseMatrixCSC format, except with a Vector of nzval, ie:\n\ncolptr: Column j is in colptr[j]:(colptr[j+1]-1)\nrowval: Row indices of stored values\nnzval: Vector of Vector of non-zero values\n\n\n\n\n\n","category":"type"},{"location":"PALEOocean_functions/#PALEOocean.Ocean.create_common_sparsity_tr!","page":"PALEOocean functions","title":"PALEOocean.Ocean.create_common_sparsity_tr!","text":"create_common_sparsity_tr!(a_matrices; do_transpose, TMeltype=Float64) -> TrsptCSC\n\nReduce a collection of matrices to common sparsity pattern, optionally transposing.\n\nNB: a_matrices is used as workspace and contents deleted.\n\n\n\n\n\n","category":"function"},{"location":"PALEOocean_functions/#Optimized-transport-using-SIMD-packed-vectors","page":"PALEOocean functions","title":"Optimized transport using SIMD packed vectors","text":"","category":"section"},{"location":"PALEOocean_functions/","page":"PALEOocean functions","title":"PALEOocean functions","text":"PackedBuffer","category":"page"},{"location":"PALEOocean_functions/#PALEOocean.Ocean.PackedBuffer","page":"PALEOocean functions","title":"PALEOocean.Ocean.PackedBuffer","text":"PackedBuffer\n\nBuffer Arrays for optimized SIMD transport using elements of type SIMD.Vec{pack_chunk_width, pack_eltype}. Creates packed_conc_array for packed and padded Variable concentrations, and an additional workspace buffer. Uses additional type parameters to allow do_transport_tr specialization on number of Variable components etc as well as SIMD chunk width.\n\n\n\n\n\n","category":"type"},{"location":"collated_examples/skeleton_configuration/README/#Skeleton-ocean-atmosphere-configuration","page":"Skeleton ocean-atmosphere configuration","title":"Skeleton ocean-atmosphere configuration","text":"","category":"section"},{"location":"collated_examples/skeleton_configuration/README/","page":"Skeleton ocean-atmosphere configuration","title":"Skeleton ocean-atmosphere configuration","text":"A \"skeleton\" ocean-atmosphere configuration, defining Domains and fluxes but no biogeochemistry. Illustrative fluxes are configured for a C, O, P model.","category":"page"},{"location":"collated_examples/skeleton_configuration/README/#yaml-configuration-file","page":"Skeleton ocean-atmosphere configuration","title":"yaml configuration file","text":"","category":"section"},{"location":"collated_examples/skeleton_configuration/README/","page":"Skeleton ocean-atmosphere configuration","title":"Skeleton ocean-atmosphere configuration","text":"The model configuration (file examples/skeleton_configuration/PALEO_examples_oceanskeleton_cfg.yaml) contains:","category":"page"},{"location":"collated_examples/skeleton_configuration/README/","page":"Skeleton ocean-atmosphere configuration","title":"Skeleton ocean-atmosphere configuration","text":"import Markdown\nMarkdown.parse(\n \"\"\"```julia\n $(read(joinpath(ENV[\"PALEO_EXAMPLES\"], \"skeleton_configuration/PALEO_examples_oceanskeleton_cfg.yaml\"), String))\n ```\"\"\"\n)","category":"page"},{"location":"collated_examples/skeleton_configuration/README/#Variables-defined","page":"Skeleton ocean-atmosphere configuration","title":"Variables defined","text":"","category":"section"},{"location":"collated_examples/skeleton_configuration/README/","page":"Skeleton ocean-atmosphere configuration","title":"Skeleton ocean-atmosphere configuration","text":"julia> include(\"PALEO_examples_oceanskeleton.jl\")","category":"page"},{"location":"collated_examples/skeleton_configuration/README/","page":"Skeleton ocean-atmosphere configuration","title":"Skeleton ocean-atmosphere configuration","text":"include(joinpath(ENV[\"PALEO_EXAMPLES\"], \"skeleton_configuration/PALEO_examples_oceanskeleton.jl\")) # hide","category":"page"},{"location":"collated_examples/skeleton_configuration/README/","page":"Skeleton ocean-atmosphere configuration","title":"Skeleton ocean-atmosphere configuration","text":"show(PB.show_variables(model); allrows=true, allcols=true, eltypes=false, show_row_number=false)","category":"page"},{"location":"collated_examples/skeleton_configuration/README/","page":"Skeleton ocean-atmosphere configuration","title":"Skeleton ocean-atmosphere configuration","text":"ocean, oceansurface, and oceanfloor Variables are standard grid variables, provided by the ocean transport Reaction (a ReactionOceanTransport3box in this case).","category":"page"},{"location":"collated_examples/skeleton_configuration/README/","page":"Skeleton ocean-atmosphere configuration","title":"Skeleton ocean-atmosphere configuration","text":"Flux target Variables to accumulate exchange fluxes are provided by ReactionFluxTarget Reactions, the illustrative configuration here defines fluxes for a C, O, P model with atmospheric state variables CO2, O2, and ocean state variables including DIC, TAlk, O2 and P.","category":"page"},{"location":"References/#References","page":"References","title":"References","text":"","category":"section"},{"location":"References/","page":"References","title":"References","text":"Caldeira, K. and Rampino, M. R. (1993). Aftermath of the end-Cretaceous mass extinction: Possible biogeochemical stabilization of the carbon cycle and climate. Paleoceanography 8, 515–525.\n\n\n\nCanfield, D. E. (2006). Models of oxic respiration, denitrification and sulfate reduction in zones of coastal upwelling. Geochimica et Cosmochimica Acta 70, 5753–5765.\n\n\n\nClarkson, M. O.; Kasemann, S. A.; Wood, R. A.; Lenton, T. M.; Daines, S. J.; Richoz, S.; Ohnemueller, F.; Meixner, A.; Poulton, S. W. and Tipper, E. T. (2015). Ocean acidification and the Permo-Triassic mass extinction. Science 348, 229–232.\n\n\n\nDaines, S. J. and Lenton, T. M. (2016). The effect of widespread early aerobic marine ecosystems on methane cycling and the Great Oxidation. Earth and Planetary Science Letters 434, 42–51.\n\n\n\nFennel, K. (2005). The co-evolution of the nitrogen, carbon and oxygen cycles in the Proterozoic ocean. American Journal of Science 305, 526–545.\n\n\n\nGeider, R. J. (1987). LIGHT AND TEMPERATURE DEPENDENCE OF THE CARBON TO CHLOROPHYLL a RATIO IN MICROALGAE AND CYANOBACTERIA: IMPLICATIONS FOR PHYSIOLOGY AND GROWTH OF PHYTOPLANKTON. New Phytologist 106, 1–34.\n\n\n\nHotinski, R. M.; Kump, L. R. and Najjar, R. G. (2000). Opening Pandora's Box: The impact of open system modeling on interpretations of anoxia. Paleoceanography 15, 267.\n\n\n\nKhatiwala, S. (2007). A computational framework for simulation of biogeochemical tracers in the ocean. Global Biogeochemical Cycles 21, 1–14.\n\n\n\nKriest, I.; Khatiwala, S. and Oschlies, A. (2010). Towards an assessment of simple global marine biogeochemical models of different complexity. Progress in Oceanography 86, 337–360. ISBN: 0079-6611 Publisher: Elsevier Ltd.\n\n\n\nRidgwell, A.; Hargreaves, J. C.; Edwards, N. R.; Annan, J. D.; Lenton, T. M.; Marsh, R.; Yool, A. and Watson, A. (2007). Marine geochemical data assimilation in an efficient Earth System Model of global biogeochemical cycling. Biogeosciences 4, 87–104.\n\n\n\nSarmiento, J. L. and Toggweiler, J. R. (1984). A new model for the role of the oceans in determining atmospheric P CO2. Nature 308, 621–624.\n\n\n\nSarmiento, J. L. and Gruber, N. (2006). Ocean biogeochemical dynamics (Princeton University Press, Princeton). OCLC: ocm60651167.\n\n\n\nToggweiler, J. R. and Sarmiento, J. L. (1985). Glacial to Interglacial Changes in Atmospheric Carbon Dioxide: The Critical Role of Ocean Surface Water in High Latitudes. In: The Carbon cycle and atmospheric CO2: Natural variations Archean to present., Vol. 1 (Wiley); pp. 163–184.\n\n\n\nWanninkhof, R. (1992). Relationship Between Wind Speed and Gas Exchange Over the Ocean. Journal of Geophysical Research 97, 7373–7382.\n\n\n\nWatson, A. J. (1995). Are upwelling zones sources or sinks of CO2? In: Upwelling in the ocean: Modern processes and ancient records, edited by Summerhayes, C. (Wiley); pp. 321–336.\n\n\n\nZhang, J.; Quay, P. and Wilbur, D. (1995). Carbon isotope fractionation during gas-water exchange and dissolution of CO2. Geochimica et Cosmochimica Acta 59, 107–114.\n\n\n\n","category":"page"},{"location":"PALEOocean_Domains/#PALEOocean-Domains,-fluxes,-and-standard-Variables","page":"PALEOocean Domains, fluxes, and standard Variables","title":"PALEOocean Domains, fluxes, and standard Variables","text":"","category":"section"},{"location":"PALEOocean_Domains/","page":"PALEOocean Domains, fluxes, and standard Variables","title":"PALEOocean Domains, fluxes, and standard Variables","text":"(Image: Domains image)","category":"page"},{"location":"PALEOocean_Domains/#Figure-1","page":"PALEOocean Domains, fluxes, and standard Variables","title":"Figure 1","text":"","category":"section"},{"location":"PALEOocean_Domains/","page":"PALEOocean Domains, fluxes, and standard Variables","title":"PALEOocean Domains, fluxes, and standard Variables","text":"Ocean Domains, subDomains, and fluxes. Compare to full Earth system Domains https://paleotoolkit.github.io/PALEOcopse.jl/dev/COPSE_Domains","category":"page"},{"location":"PALEOocean_Domains/#Domains","page":"PALEOocean Domains, fluxes, and standard Variables","title":"Domains","text":"","category":"section"},{"location":"PALEOocean_Domains/","page":"PALEOocean Domains, fluxes, and standard Variables","title":"PALEOocean Domains, fluxes, and standard Variables","text":"The standard Domain configuration for an atmosphere-ocean model is shown in Figure 1.","category":"page"},{"location":"PALEOocean_Domains/","page":"PALEOocean Domains, fluxes, and standard Variables","title":"PALEOocean Domains, fluxes, and standard Variables","text":"global This is used for model-wide quantities, typically global budgets and global forcings\natmosphere A scalar (0-D) Domain with atmospheric variables and Reactions\nocean The ocean Domain represents a 3-D ocean as a vector of cells, with geometry and internal transport defined by an OceanTransport Reaction. \noceansurface, oceanfloor oceansurface and oceanfloor represent 2-D boundaries as a vector of cells, with geometry defined by the OceanTransport Reaction. There is a 1-to-1 correspondence between the cells in the 2-D oceansurface Domain, the adjacent ocean surface cells defined by the ocean.oceansurface subdomain. Similarly, there is a 1-to-1 correspondence between the cells in the 2-D oceanfloor Domain, the adjacent ocean floor cells defined by the ocean.oceanfloor subdomain.","category":"page"},{"location":"PALEOocean_Domains/#Fluxes","page":"PALEOocean Domains, fluxes, and standard Variables","title":"Fluxes","text":"","category":"section"},{"location":"PALEOocean_Domains/","page":"PALEOocean Domains, fluxes, and standard Variables","title":"PALEOocean Domains, fluxes, and standard Variables","text":"Flux Domains are used to hold exchange fluxes in Variables defined by FluxTarget Reactions, see https://paleotoolkit.github.io/PALEOboxes.jl/stable/DesignOverview/#Coupling-Spatial-Domains","category":"page"},{"location":"PALEOocean_Domains/","page":"PALEOocean Domains, fluxes, and standard Variables","title":"PALEOocean Domains, fluxes, and standard Variables","text":"fluxAtmtoOceansurface Air-sea exchange fluxes are defined in the 2-D fluxAtmtoOceansurface Domain, which contains cells with a 1-to-1 correspondence to the oceansurface Domain.\nfluxOceanfloor Particulate fluxes from ocean to oceanfloor, and solute exchange fluxes between ocean and oceanfloor, are defined in the 2-D fluxOceanfloor Domain. This contains cells with a 1-to-1 correspondence to cells in the oceanfloor Domain.\nfluxOceanBurial Ocean burial fluxes are defined in the 2-D fluxOceanburial Domain. This contains cells with a 1-to-1 correspondence to cells in the oceanfloor Domain.","category":"page"},{"location":"PALEOocean_Domains/#Standard-Variables","page":"PALEOocean Domains, fluxes, and standard Variables","title":"Standard Variables","text":"","category":"section"},{"location":"PALEOocean_Domains/","page":"PALEOocean Domains, fluxes, and standard Variables","title":"PALEOocean Domains, fluxes, and standard Variables","text":"(see Skeleton ocean-atmosphere configuration)","category":"page"},{"location":"PALEOocean_Domains/","page":"PALEOocean Domains, fluxes, and standard Variables","title":"PALEOocean Domains, fluxes, and standard Variables","text":"julia> include(\"PALEO_examples_oceanskeleton.jl\")","category":"page"},{"location":"PALEOocean_Domains/","page":"PALEOocean Domains, fluxes, and standard Variables","title":"PALEOocean Domains, fluxes, and standard Variables","text":"include(joinpath(ENV[\"PALEO_EXAMPLES\"], \"skeleton_configuration/PALEO_examples_oceanskeleton.jl\")) # hide","category":"page"},{"location":"PALEOocean_Domains/","page":"PALEOocean Domains, fluxes, and standard Variables","title":"PALEOocean Domains, fluxes, and standard Variables","text":"show(PB.show_variables(model); allrows=true, allcols=true, eltypes=false, show_row_number=false)","category":"page"},{"location":"PALEOocean_Domains/","page":"PALEOocean Domains, fluxes, and standard Variables","title":"PALEOocean Domains, fluxes, and standard Variables","text":"ocean, oceansurface, and oceanfloor Variables are standard grid variables, provided by the ocean transport Reaction (a ReactionOceanTransport3box in this case).","category":"page"},{"location":"PALEOocean_Domains/","page":"PALEOocean Domains, fluxes, and standard Variables","title":"PALEOocean Domains, fluxes, and standard Variables","text":"Flux target Variables to accumulate exchange fluxes are provided by ReactionFluxTarget Reactions, the illustrative configuration here defines fluxes for a C, O, P model with atmospheric state variables CO2, O2, and ocean state variables including DIC, TAlk, O2 and P.","category":"page"},{"location":"collated_examples/ocean3box/README/#3-Box-Ocean-Examples","page":"3 Box Ocean Examples","title":"3 Box Ocean Examples","text":"","category":"section"},{"location":"collated_examples/ocean3box/README/","page":"3 Box Ocean Examples","title":"3 Box Ocean Examples","text":"These examples demonstrate the 3-box (Sarmiento and Toggweiler, 1984), (Toggweiler and Sarmiento, 1985) ocean model, standalone and coupled to the COPSE land surface and sediment/crust (as used in (Clarkson et al., 2015)).","category":"page"},{"location":"collated_examples/ocean3box/README/#Abiotic-CO2/DIC-only-atmosphere-ocean","page":"3 Box Ocean Examples","title":"Abiotic CO2/DIC only atmosphere-ocean","text":"","category":"section"},{"location":"collated_examples/ocean3box/README/","page":"3 Box Ocean Examples","title":"3 Box Ocean Examples","text":"julia> include(\"PALEO_examples_oaonly_abiotic.jl\")","category":"page"},{"location":"collated_examples/ocean3box/README/","page":"3 Box Ocean Examples","title":"3 Box Ocean Examples","text":"Abiotic atmosphere-ocean with atmosphere CO2, ocean DIC, TAlk. Test case cf Sarmiento & Toggweiler (2007) book, Fig 10.4, p436-7","category":"page"},{"location":"collated_examples/ocean3box/README/","page":"3 Box Ocean Examples","title":"3 Box Ocean Examples","text":"Commented-out options in file to set k_piston to show effect of default/fast/slow air-sea exchange rates","category":"page"},{"location":"collated_examples/ocean3box/README/#Biotic-atmosphere-ocean-(no-weathering-or-burial)","page":"3 Box Ocean Examples","title":"Biotic atmosphere-ocean (no weathering or burial)","text":"","category":"section"},{"location":"collated_examples/ocean3box/README/","page":"3 Box Ocean Examples","title":"3 Box Ocean Examples","text":"julia> include(\"PALEO_examples_oaonly.jl\")","category":"page"},{"location":"collated_examples/ocean3box/README/","page":"3 Box Ocean Examples","title":"3 Box Ocean Examples","text":"Biotic atmosphere-ocean with atmosphere O2, CO2, ocean P, O2, SO4/H2S, CH4, DIC, TAlk (no weathering or burial).","category":"page"},{"location":"collated_examples/ocean3box/README/","page":"3 Box Ocean Examples","title":"3 Box Ocean Examples","text":"Use in conjunction with expt='killbio' (disables production at t=0 yr) to demonstrate effect of biological pump.","category":"page"},{"location":"collated_examples/ocean3box/README/#Open-atmosphere-ocean-with-silicate/carbonate-weathering-and-burial","page":"3 Box Ocean Examples","title":"Open atmosphere-ocean with silicate/carbonate weathering and burial","text":"","category":"section"},{"location":"collated_examples/ocean3box/README/","page":"3 Box Ocean Examples","title":"3 Box Ocean Examples","text":"julia> include(\"PALEO_examples_oaopencarb.jl\")","category":"page"},{"location":"collated_examples/ocean3box/README/","page":"3 Box Ocean Examples","title":"3 Box Ocean Examples","text":"Biotic atmosphere-ocean with atmosphere O2, CO2, ocean P, O2, SO4/H2S, CH4, DIC, TAlk","category":"page"},{"location":"collated_examples/ocean3box/README/","page":"3 Box Ocean Examples","title":"3 Box Ocean Examples","text":"Open atm-ocean carbonate system, with carbonate/silicate weathering input, degassing input, and carbonate burial output","category":"page"},{"location":"collated_examples/ocean3box/README/","page":"3 Box Ocean Examples","title":"3 Box Ocean Examples","text":"Closed ocean organic carbon, sulphur systems (no burial)","category":"page"},{"location":"collated_examples/mitgcm/README/#MITgcm-transport-matrix-ocean-only-examples","page":"MITgcm transport matrix ocean-only examples","title":"MITgcm transport matrix ocean-only examples","text":"","category":"section"},{"location":"collated_examples/mitgcm/README/","page":"MITgcm transport matrix ocean-only examples","title":"MITgcm transport matrix ocean-only examples","text":"GCM ocean transport test cases using transport matrices in format defined by (Khatiwala, 2007)","category":"page"},{"location":"collated_examples/mitgcm/README/","page":"MITgcm transport matrix ocean-only examples","title":"MITgcm transport matrix ocean-only examples","text":"Examples require a 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/. The TMMDir key in examples\\LocalPreferences.toml should then be set to the folder location on the local machine.","category":"page"},{"location":"collated_examples/mitgcm/README/","page":"MITgcm transport matrix ocean-only examples","title":"MITgcm transport matrix ocean-only examples","text":"Default configurations are set to run for ~10 model yr, single core, single fixed timestep. See comments in .jl files to change run time and enable threading and split-timestep solver (with fast timestep for biogeochemistry and vertical transport). ","category":"page"},{"location":"collated_examples/mitgcm/README/","page":"MITgcm transport matrix ocean-only examples","title":"MITgcm transport matrix ocean-only examples","text":"Approximate model CPU times below are for a single laptop core (a CPU i5-6300U from ~2015).","category":"page"},{"location":"collated_examples/mitgcm/README/#2.8-degree-O2-only-abiotic","page":"MITgcm transport matrix ocean-only examples","title":"2.8 degree O2 only abiotic","text":"","category":"section"},{"location":"collated_examples/mitgcm/README/","page":"MITgcm transport matrix ocean-only examples","title":"MITgcm transport matrix ocean-only examples","text":"Minimal test case for ocean transport and air-sea exchange.","category":"page"},{"location":"collated_examples/mitgcm/README/","page":"MITgcm transport matrix ocean-only examples","title":"MITgcm transport matrix ocean-only examples","text":"Tracers: atmosphere O2, ocean O2","category":"page"},{"location":"collated_examples/mitgcm/README/","page":"MITgcm transport matrix ocean-only examples","title":"MITgcm transport matrix ocean-only examples","text":"julia> include(\"MITgcm_2deg8_abiotic.jl\")","category":"page"},{"location":"collated_examples/mitgcm/README/","page":"MITgcm transport matrix ocean-only examples","title":"MITgcm transport matrix ocean-only examples","text":"Wallclock time: 10.3 s core-1 (model yr)-1 with default timestep = 86400 s (1 day)","category":"page"},{"location":"collated_examples/mitgcm/README/#2.8-degree-P,-O2","page":"MITgcm transport matrix ocean-only examples","title":"2.8 degree P, O2","text":"","category":"section"},{"location":"collated_examples/mitgcm/README/","page":"MITgcm transport matrix ocean-only examples","title":"MITgcm transport matrix ocean-only examples","text":"Minimal test case for biotic ocean.","category":"page"},{"location":"collated_examples/mitgcm/README/","page":"MITgcm transport matrix ocean-only examples","title":"MITgcm transport matrix ocean-only examples","text":"Tracers: atmosphere O2, ocean O2, P, DOP","category":"page"},{"location":"collated_examples/mitgcm/README/","page":"MITgcm transport matrix ocean-only examples","title":"MITgcm transport matrix ocean-only examples","text":"julia> include(\"MITgcm_2deg8_PO4MMbase.jl\")","category":"page"},{"location":"collated_examples/mitgcm/README/","page":"MITgcm transport matrix ocean-only examples","title":"MITgcm transport matrix ocean-only examples","text":"Wallclock time: 10.0 s core-1 (model yr)-1 with default timestep = 86400 s (1 day)","category":"page"},{"location":"collated_examples/mitgcm/README/#2.8-degree-P,-O2,-S,-DIC/TAlk","page":"MITgcm transport matrix ocean-only examples","title":"2.8 degree P, O2, S, DIC/TAlk","text":"","category":"section"},{"location":"collated_examples/mitgcm/README/","page":"MITgcm transport matrix ocean-only examples","title":"MITgcm transport matrix ocean-only examples","text":"Minimal test case for a biotic ocean with carbonate chemistry, SO4/H2S and CH4.","category":"page"},{"location":"collated_examples/mitgcm/README/","page":"MITgcm transport matrix ocean-only examples","title":"MITgcm transport matrix ocean-only examples","text":"Modern Earth configuration with O2 set to 0.1 PAL with to provide an anoxic ocean test case.","category":"page"},{"location":"collated_examples/mitgcm/README/","page":"MITgcm transport matrix ocean-only examples","title":"MITgcm transport matrix ocean-only examples","text":"Tracers: atmosphere O2, CO2(x2), ocean O2, P, DOC(x2), H2S(x2), SO4(x2), CH4(x2), DIC(x2), TAlk (13 ocean tracers, including d13C and d34S isotopes)","category":"page"},{"location":"collated_examples/mitgcm/README/","page":"MITgcm transport matrix ocean-only examples","title":"MITgcm transport matrix ocean-only examples","text":"julia> include(\"MITgcm_2deg8_PO4MMcarbSCH4.jl\")","category":"page"},{"location":"collated_examples/mitgcm/README/","page":"MITgcm transport matrix ocean-only examples","title":"MITgcm transport matrix ocean-only examples","text":"Wallclock time: 27.2 s core-1 (model yr)-1 with default timestep = 86400 s (1 day)","category":"page"},{"location":"collated_examples/mitgcm/README/","page":"MITgcm transport matrix ocean-only examples","title":"MITgcm transport matrix ocean-only examples","text":"(Image: Surface P)","category":"page"},{"location":"collated_examples/mitgcm/README/#Figure-1","page":"MITgcm transport matrix ocean-only examples","title":"Figure 1","text":"","category":"section"},{"location":"collated_examples/mitgcm/README/","page":"MITgcm transport matrix ocean-only examples","title":"MITgcm transport matrix ocean-only examples","text":"Surface P concentration at 2000yr. Red lines indicate longitudinal sections","category":"page"},{"location":"collated_examples/mitgcm/README/","page":"MITgcm transport matrix ocean-only examples","title":"MITgcm transport matrix ocean-only examples","text":"(Image: H2S sections 2) (Image: H2S sections 1)","category":"page"},{"location":"collated_examples/mitgcm/README/#Figure-2","page":"MITgcm transport matrix ocean-only examples","title":"Figure 2","text":"","category":"section"},{"location":"collated_examples/mitgcm/README/","page":"MITgcm transport matrix ocean-only examples","title":"MITgcm transport matrix ocean-only examples","text":"H2S concentration at 2000yr, sections at longitudes corresponding to red lines in Figure 1","category":"page"},{"location":"collated_examples/PTBClarkson2014/README/#PTB-land-atmosphere-ocean-model-(Clarkson-2015)","page":"PTB land-atmosphere-ocean model (Clarkson 2015)","title":"PTB land-atmosphere-ocean model (Clarkson 2015)","text":"","category":"section"},{"location":"collated_examples/PTBClarkson2014/README/","page":"PTB land-atmosphere-ocean model (Clarkson 2015)","title":"PTB land-atmosphere-ocean model (Clarkson 2015)","text":"3-box (Sarmiento and Toggweiler, 1984), (Toggweiler and Sarmiento, 1985) ocean model, coupled to the COPSE land surface and sediment/crust.","category":"page"},{"location":"collated_examples/PTBClarkson2014/README/","page":"PTB land-atmosphere-ocean model (Clarkson 2015)","title":"PTB land-atmosphere-ocean model (Clarkson 2015)","text":"Combination of forcings are as used in (Clarkson et al., 2015). See paper SI for model description.","category":"page"},{"location":"collated_examples/PTBClarkson2014/README/","page":"PTB land-atmosphere-ocean model (Clarkson 2015)","title":"PTB land-atmosphere-ocean model (Clarkson 2015)","text":"NB: this is an untested PALEO configuration intended to reproduce the Matlab code from the original paper.","category":"page"},{"location":"collated_examples/PTBClarkson2014/README/","page":"PTB land-atmosphere-ocean model (Clarkson 2015)","title":"PTB land-atmosphere-ocean model (Clarkson 2015)","text":"julia> include(\"PALEO_examples_PTB3box.jl\")","category":"page"},{"location":"#PALEOocean.jl-documentation","page":"PALEOocean.jl documentation","title":"PALEOocean.jl documentation","text":"","category":"section"},{"location":"#Installation-and-running-the-examples","page":"PALEOocean.jl documentation","title":"Installation and running the examples","text":"","category":"section"},{"location":"#Installation","page":"PALEOocean.jl documentation","title":"Installation","text":"","category":"section"},{"location":"","page":"PALEOocean.jl documentation","title":"PALEOocean.jl documentation","text":"NB: requires Julia 1.6 or later. To check the Julia version:","category":"page"},{"location":"","page":"PALEOocean.jl documentation","title":"PALEOocean.jl documentation","text":"julia> versioninfo()","category":"page"},{"location":"","page":"PALEOocean.jl documentation","title":"PALEOocean.jl documentation","text":"Clone this github repository to local directory PALEOocean: from a linux bash prompt or a Windows terminal,","category":"page"},{"location":"","page":"PALEOocean.jl documentation","title":"PALEOocean.jl documentation","text":"$ git clone https://github.com/PALEOtoolkit/PALEOocean.jl.git PALEOcopse","category":"page"},{"location":"","page":"PALEOocean.jl documentation","title":"PALEOocean.jl documentation","text":"Start julia and navigate to the PALEOocean/examples folder, and run setup.jl to configure the PALEOocean/examples Julia environment to use the local (downloaded) version of the PALEOocean package:","category":"page"},{"location":"","page":"PALEOocean.jl documentation","title":"PALEOocean.jl documentation","text":"julia> cd(\"PALEOocean/examples\")\njulia> include(\"setup.jl\") # use the local version of PALEOocean packages to allow local modifications","category":"page"},{"location":"#Running-a-minimal-transport-example","page":"PALEOocean.jl documentation","title":"Running a minimal transport example","text":"","category":"section"},{"location":"","page":"PALEOocean.jl documentation","title":"PALEOocean.jl documentation","text":"Start julia and navigate to the PALEOocean folder, then:","category":"page"},{"location":"","page":"PALEOocean.jl documentation","title":"PALEOocean.jl documentation","text":"julia> cd(\"examples/transport_examples\")\njulia> import Pkg\njulia> Pkg.activate(\"..\") # use the PALEOocean/examples environment\n\njulia> include(\"PALEO_examples_transport_advect.jl\")","category":"page"},{"location":"#Using-PALEOocean-Reactions-from-other-models","page":"PALEOocean.jl documentation","title":"Using PALEOocean Reactions from other models","text":"","category":"section"},{"location":"","page":"PALEOocean.jl documentation","title":"PALEOocean.jl documentation","text":"The PALEO Reactions comprising the PALEOocean models are available when the registered PALEOocean package is loaded (without downloading the repository), ie","category":"page"},{"location":"","page":"PALEOocean.jl documentation","title":"PALEOocean.jl documentation","text":"julia> Pkg.add(\"PALEOocean\")\njulia> import PALEOocean","category":"page"}]
+[{"location":"indexpage/#Index","page":"Index","title":"Index","text":"","category":"section"},{"location":"indexpage/","page":"Index","title":"Index","text":"","category":"page"},{"location":"collated_examples/transport_examples/README/#Transport-examples","page":"Transport examples","title":"Transport examples","text":"","category":"section"},{"location":"collated_examples/transport_examples/README/","page":"Transport examples","title":"Transport examples","text":"PALEOocean/examples/transport_examples contains two examples showing the construction of (ocean) transport matrices, using PALEOocean.Ocean.add_loop! to construct a transport matrix by adding circulation around closed loops.","category":"page"},{"location":"collated_examples/transport_examples/README/#Advection","page":"Transport examples","title":"Advection","text":"","category":"section"},{"location":"collated_examples/transport_examples/README/","page":"Transport examples","title":"Transport examples","text":"julia> include(\"PALEO_examples_transport_advect.jl\")","category":"page"},{"location":"collated_examples/transport_examples/README/","page":"Transport examples","title":"Transport examples","text":"This uses TransportExamples.ReactionTransportAdvectExample defined in TransportExamples.jl to construct a transport matrix with a closed loop circulation down the first column and up the second column of a column-based model.","category":"page"},{"location":"collated_examples/transport_examples/README/","page":"Transport examples","title":"Transport examples","text":"(Image: Tracer advection image)","category":"page"},{"location":"collated_examples/transport_examples/README/#Figure-1","page":"Transport examples","title":"Figure 1","text":"","category":"section"},{"location":"collated_examples/transport_examples/README/","page":"Transport examples","title":"Transport examples","text":"Closed loop circulation down col :a and up column :b resulting in advection of a tracer T down column :a and up column b:. Area of :a is 10x that of :b, hence the advection velocity in :b is 10x that in :a. NB: advection using CVODE, an implicit stiff ODE integrator, is quite diffusive","category":"page"},{"location":"collated_examples/transport_examples/README/#Diffusion","page":"Transport examples","title":"Diffusion","text":"","category":"section"},{"location":"collated_examples/transport_examples/README/","page":"Transport examples","title":"Transport examples","text":"julia> include(\"PALEO_examples_transport_diffuse.jl\")","category":"page"},{"location":"collated_examples/transport_examples/README/","page":"Transport examples","title":"Transport examples","text":"This uses TransportExamples.ReactionTransportDiffuseExample defined in TransportExamples.jl to construct a transport matrix with constant vertical diffusivity Kz.","category":"page"},{"location":"collated_examples/transport_examples/README/","page":"Transport examples","title":"Transport examples","text":"(Image: Tracer diffusion image)","category":"page"},{"location":"collated_examples/transport_examples/README/#Figure-2","page":"Transport examples","title":"Figure 2","text":"","category":"section"},{"location":"collated_examples/transport_examples/README/","page":"Transport examples","title":"Transport examples","text":"Constant diffusivity Kz columns :a and :b. Cell thickness in :b is 10x that of :a","category":"page"},{"location":"collated_examples/transport_examples/README/#Additional-Reactions","page":"Transport examples","title":"Additional Reactions","text":"","category":"section"},{"location":"collated_examples/transport_examples/README/","page":"Transport examples","title":"Transport examples","text":"CurrentModule = TransportExamples","category":"page"},{"location":"collated_examples/transport_examples/README/","page":"Transport examples","title":"Transport examples","text":"ReactionTransportAdvectExample\nReactionTransportDiffuseExample","category":"page"},{"location":"collated_examples/transport_examples/README/#Main.TransportExamples.ReactionTransportAdvectExample","page":"Transport examples","title":"Main.TransportExamples.ReactionTransportAdvectExample","text":"ReactionTransportAdvectExample\n\nAdvection around two columns\n\nParameters\n\nT[Float64]=2.0e7 (m^3 s^-1), default_value=2.0e7, description=\"advective flux\"\n\n\n\n\n\n","category":"type"},{"location":"collated_examples/transport_examples/README/#Main.TransportExamples.ReactionTransportDiffuseExample","page":"Transport examples","title":"Main.TransportExamples.ReactionTransportDiffuseExample","text":"ReactionTransportDiffuseExample\n\nEddy diffusion N columns\n\nParameters\n\nKz[Float64]=1.0e-5 (m^2 s^-1), default_value=1.0e-5, description=\"eddy diffusivity\"\n\n\n\n\n\n","category":"type"},{"location":"PALEOocean_Reactions/#PALEOocean-Reactions","page":"PALEOocean Reactions","title":"PALEOocean Reactions","text":"","category":"section"},{"location":"PALEOocean_Reactions/#Ocean-geometry-and-circulation-transport","page":"PALEOocean Reactions","title":"Ocean geometry and circulation transport","text":"","category":"section"},{"location":"PALEOocean_Reactions/","page":"PALEOocean Reactions","title":"PALEOocean Reactions","text":"CurrentModule = PALEOocean.Ocean","category":"page"},{"location":"PALEOocean_Reactions/","page":"PALEOocean Reactions","title":"PALEOocean Reactions","text":"OceanNoTransport.ReactionOceanNoTransport\nOceanTransport3box.ReactionOceanTransport3box\nOceanTransport6box.ReactionOceanTransport6box\nOceanTransportTMM.ReactionOceanTransportTMM\nOceanTransportColumn.ReactionOceanTransportColumn","category":"page"},{"location":"PALEOocean_Reactions/#PALEOocean.Ocean.OceanNoTransport.ReactionOceanNoTransport","page":"PALEOocean Reactions","title":"PALEOocean.Ocean.OceanNoTransport.ReactionOceanNoTransport","text":"ReactionOceanNoTransport\n\nN ocean boxes (default N=1 ie a single 0-D box), each with a surface and floor, no transport.\n\nParameters\n\narea[Vector{Float64}]=[1.0] (m^2), default_value=[1.0], description=\"surface / floor area (per box)\"\ndepth[Vector{Float64}]=[1.0] (m), default_value=[1.0], description=\"depth (per box)\"\n\nMethods and Variables\n\ndo_setup_grid\nvolume (m^3), VT_ReactProperty, description=\"volume of ocean cells\"\nvolume_total (m^3), VT_ReactProperty, description=\"total volume of ocean cells\"\nAbox (m^2), VT_ReactProperty, description=\"horizontal area of box\"\nzupper (m), VT_ReactProperty, description=\"depth of upper surface of box (m) 0 is surface, -100 is depth of 100 m\"\nzlower (m), VT_ReactProperty, description=\"depth of lower surface of box (m)\"\nzmid (m), VT_ReactProperty, description=\"mean depth of box\"\nrho_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)\"\npressure (dbar), VT_ReactProperty, description=\"Ocean pressure\"\nAfloor –> oceanfloor.Afloor (m^2), VT_ReactProperty, description=\"horizontal area of seafloor at base of box\"\nAfloor_total –> oceanfloor.Afloor_total (m^2), VT_ReactProperty, description=\"total area of seafloor\"\nzfloor –> oceanfloor.zfloor (m), VT_ReactProperty, description=\"depth of ocean floor (m, -ve)\"\nAsurf –> oceansurface.Asurf (m^2), VT_ReactProperty, description=\"horizontal area of oceansurface\"\n\n\n\n\n\n","category":"type"},{"location":"PALEOocean_Reactions/#PALEOocean.Ocean.OceanTransport3box.ReactionOceanTransport3box","page":"PALEOocean Reactions","title":"PALEOocean.Ocean.OceanTransport3box.ReactionOceanTransport3box","text":"ReactionOceanTransport3box\n\n3-box (Sarmiento and Toggweiler, 1984), (Toggweiler and Sarmiento, 1985) ocean model.\n\n---------------------------------------\n| 1 (s) | 2(h) |\n| -->--->- |\n|-------------------|----| | | \n| | | | /|\\ |\n| | |__|______|___| \n| | | | |\n| 3 (d) -<--<-- \\|/ |\n| circT fhd |\n| |\n----------------------------------------\n\nParameters\n\ncircT[Float64]=2.0e7 (m^3 s^-1), default_value=2.0e7, description=\"overturning circulation\"\ncircfhd[Float64]=6.0e7 (m^3 s^-1), default_value=6.0e7, description=\"high latitude <-> deep exchange rate\"\ntemp[Vector{Float64}]=[21.5, 2.5, 2.5] (degrees C), default_value=[21.5, 2.5, 2.5], description=\"ocean temperature\"\ntemp_trackglobal[Bool]=false, default_value=false, description=\"track global temperature (apply offset of global temp -15C\"\n\nMethods and Variables for default Parameters\n\ndo_setup_grid\nvolume (m^3), VT_ReactProperty, description=\"volume of ocean cells\"\nvolume_total (m^3), VT_ReactProperty, description=\"total volume of ocean cells\"\nAbox (m^2), VT_ReactProperty, description=\"horizontal area of box\"\nzupper (m), VT_ReactProperty, description=\"depth of upper surface of box (m) 0 is surface, -100 is depth of 100 m\"\nzlower (m), VT_ReactProperty, description=\"depth of lower surface of box (m)\"\nzmid (m), VT_ReactProperty, description=\"mean depth of box\"\nrho_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)\"\npressure (dbar), VT_ReactProperty, description=\"Ocean pressure\"\nAfloor –> oceanfloor.Afloor (m^2), VT_ReactProperty, description=\"horizontal area of seafloor at base of box\"\nAfloor_total –> oceanfloor.Afloor_total (m^2), VT_ReactProperty, description=\"total area of seafloor\"\nzfloor –> oceanfloor.zfloor (m), VT_ReactProperty, description=\"depth of ocean floor (m, -ve)\"\nAsurf –> oceansurface.Asurf (m^2), VT_ReactProperty, description=\"horizontal area of oceansurface\"\nsal (psu), VT_ReactProperty, description=\"Ocean salinity\"\nrho (kg m^-3), VT_ReactProperty, description=\"physical ocean density\"\nopen_area_fraction –> oceansurface.open_area_fraction (), VT_ReactProperty, description=\"fraction of area open to atmosphere\"\ndo_temperature\n[TEMP] –> global.TEMP (K), VT_ReactDependency, description=\"global mean temperature\"\ntemp (Kelvin), VT_ReactProperty, description=\"Ocean temperature\"\n\n\n\n\n\n","category":"type"},{"location":"PALEOocean_Reactions/#PALEOocean.Ocean.OceanTransport6box.ReactionOceanTransport6box","page":"PALEOocean Reactions","title":"PALEOocean.Ocean.OceanTransport6box.ReactionOceanTransport6box","text":"ReactionOceanTransport6box\n\n4+2-box ocean model from (Daines and Lenton, 2016) This is based on:\n\nthe four-box model of (Hotinski et al., 2000)\nthe five-box model of (Watson, 1995)\nthe upwelling region representation of (Canfield, 2006)\n\nThere are two main ingredients here:\n\nAn 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.\nA two-box shelf/slope (boxes r, rc), which can be configured as \nan upwelling region (k_slopetype='OMZ'), cf Canfield (2006) with upwelling from the intermediate/thermocline box\na low-latitude shelf (k_slopetype='shelf') with exchange terms to low-latitude surface (s) and thermocline (i) boxes\nSee Oxygen oases\\Box Model 20150922\\HotinskiCalc5Box.m, HotinskiConstants5Box.m, HotinskiCalcCirc6.m\n --------------------------------------------------\n | 5(r) | 1 (s) | 2(h) |\n | | | |\n |-----------|------------------------| | \n | 6(rc) | | |\n | | 3 (i) |_____________| \n -----------| | |\n | |------------------------ |\n | 4(d) |\n | |\n -----------------------------------------------\n\nParameters\n\nslopetype[String]=\"OMZ\", default_value=\"OMZ\", allowed_values=[\"OMZ\", \"shelf\"], description=\"type of shelf circulation (boxes r, rc)\"\ncircT[Float64]=1.93e7 (m^3 s^-1), default_value=1.93e7, description=\"overturning circulation (exchange high lat (h) to deep (d) and thermocline (i)\"\ncircfhd[Float64]=4.87e7 (m^3 s^-1), default_value=4.87e7, description=\"high latitude <-> deep exchange rate\"\ncircR[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)\"\ntotalEkman[Float64]=6.0e7 (m^3 s^-1), default_value=6.0e7, description=\"total wind-driven Ekman pumping\"\ncircS[Float64]=1.0e6 (m^3 s^-1), default_value=1.0e6, description=\"upwell(r) <-> low lat surf box (s) exchange\"\ntemp[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\"\ntemp_trackglobal[Bool]=false, default_value=false, description=\"track global temperature (apply offset of global temp -15C\"\n\nMethods and Variables for default Parameters\n\ndo_setup_grid\nvolume (m^3), VT_ReactProperty, description=\"volume of ocean cells\"\nvolume_total (m^3), VT_ReactProperty, description=\"total volume of ocean cells\"\nAbox (m^2), VT_ReactProperty, description=\"horizontal area of box\"\nzupper (m), VT_ReactProperty, description=\"depth of upper surface of box (m) 0 is surface, -100 is depth of 100 m\"\nzlower (m), VT_ReactProperty, description=\"depth of lower surface of box (m)\"\nzmid (m), VT_ReactProperty, description=\"mean depth of box\"\nrho_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)\"\npressure (dbar), VT_ReactProperty, description=\"Ocean pressure\"\nAfloor –> oceanfloor.Afloor (m^2), VT_ReactProperty, description=\"horizontal area of seafloor at base of box\"\nAfloor_total –> oceanfloor.Afloor_total (m^2), VT_ReactProperty, description=\"total area of seafloor\"\nzfloor –> oceanfloor.zfloor (m), VT_ReactProperty, description=\"depth of ocean floor (m, -ve)\"\nAsurf –> oceansurface.Asurf (m^2), VT_ReactProperty, description=\"horizontal area of oceansurface\"\nsal (psu), VT_ReactProperty, description=\"Ocean salinity\"\nrho (kg m^-3), VT_ReactProperty, description=\"physical ocean density\"\nopen_area_fraction –> oceansurface.open_area_fraction (), VT_ReactProperty, description=\"fraction of area open to atmosphere\"\ndo_temperature\n[TEMP] –> global.TEMP (K), VT_ReactDependency, description=\"global mean temperature\"\ntemp (Kelvin), VT_ReactProperty, description=\"Ocean temperature\"\n\n\n\n\n\n","category":"type"},{"location":"PALEOocean_Reactions/#PALEOocean.Ocean.OceanTransportTMM.ReactionOceanTransportTMM","page":"PALEOocean Reactions","title":"PALEOocean.Ocean.OceanTransportTMM.ReactionOceanTransportTMM","text":"ReactionOceanTransportTMM\n\nGCM 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/\n\nNB: length(operatorID) must be 2, to define operatorID[1] for explicit and operatorID[2] for implicit matrices.\n\nThe base_path parameter sets the top level of the folder structure for the downloaded matrices.\n\nCode based on TMM/tmm/models/petsc3.4/mitgchem/matlab/make_input_files_for_migchem_dic_biotic_model.m\n\nParameters\n\nbase_path[String]=\"$TMMDir$/MITgcm_2.8deg\", default_value=\"$TMMDir$/MITgcm_2.8deg\", description=\"directory containing transport matrices\"\nsal_norm[Bool]=false, default_value=false, description=\"apply salinity normalisation to transport matrix\"\nuse_annualmean[Bool]=false, default_value=false, description=\"true to read annual mean matrix\"\nnum_seasonal[Int64]=12, default_value=12, description=\"number of seasonal matrices\"\nAimp_deltat[Int64]=86400 (seconds), default_value=86400, description=\"timestep to derive upscaling factor for implicit transport matrix\"\nkji_order[Bool]=true, default_value=true, description=\"true to sort indices into k,j,i order to optimise memory layout\"\npack_chunk_width[Int64]=4, default_value=4, allowed_values=[0, 2, 4, 8, 16], description=\"non-zero to enable SIMD packed transport matrix multiply\"\nTMfpsize[Int64]=64 (bits), default_value=64, allowed_values=[32, 64], description=\"FP size for transport matrix\"\n\nMethods and Variables\n\nsetup_grid_TMM\nvolume (m^3), VT_ReactProperty, description=\"volume of ocean cells\"\nvolume_total (m^3), VT_ReactProperty, description=\"total volume of ocean cells\"\nAbox (m^2), VT_ReactProperty, description=\"horizontal area of box\"\nzupper (m), VT_ReactProperty, description=\"depth of upper surface of box (m) 0 is surface, -100 is depth of 100 m\"\nzlower (m), VT_ReactProperty, description=\"depth of lower surface of box (m)\"\nzmid (m), VT_ReactProperty, description=\"mean depth of box\"\nrho_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)\"\npressure (dbar), VT_ReactProperty, description=\"Ocean pressure\"\nAfloor –> oceanfloor.Afloor (m^2), VT_ReactProperty, description=\"horizontal area of seafloor at base of box\"\nAfloor_total –> oceanfloor.Afloor_total (m^2), VT_ReactProperty, description=\"total area of seafloor\"\nzfloor –> oceanfloor.zfloor (m), VT_ReactProperty, description=\"depth of ocean floor (m, -ve)\"\nAsurf –> oceansurface.Asurf (m^2), VT_ReactProperty, description=\"horizontal area of oceansurface\"\n\n\n\n\n\n","category":"type"},{"location":"PALEOocean_Reactions/#PALEOocean.Ocean.OceanTransportColumn.ReactionOceanTransportColumn","page":"PALEOocean Reactions","title":"PALEOocean.Ocean.OceanTransportColumn.ReactionOceanTransportColumn","text":"ReactionOceanTransportColumn\n\nSet up 1D ocean column grid, provide tracer transport using supplied eddy diffusivity Kz.\n\nA 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.\n\nEddy diffusivity on cell upper surfaces should be provided by a variable Kz (m^2 s-1).\n\nParameters\n\ngrid_file[String]=\"S2P3_depth80_m2amp04.nc\", default_value=\"S2P3_depth80_m2amp04.nc\", description=\"netcdf file with grid data (zmid, zupper, zlower)\"\ncolumn_area[Float64]=1.0 (m^2), default_value=1.0, description=\"column area\"\n\nMethods and Variables\n\nMETHODS PALEOboxes.DocStrings.Methods(:methods_setup) exception: ErrorException(\"PALEOocean.Ocean.OceanTransportColumn.ReactionOceanTransportColumn register_methods! not implemented\")\n\nMETHODS PALEOboxes.DocStrings.Methods(:methods_do) exception: ErrorException(\"PALEOocean.Ocean.OceanTransportColumn.ReactionOceanTransportColumn register_methods! not implemented\")\n\n\n\n\n\n","category":"type"},{"location":"PALEOocean_Reactions/#Vertical-Transport","page":"PALEOocean Reactions","title":"Vertical Transport","text":"","category":"section"},{"location":"PALEOocean_Reactions/","page":"PALEOocean Reactions","title":"PALEOocean Reactions","text":"VerticalTransport.ReactionLightColumn\nVerticalTransport.ReactionExportDirect\nVerticalTransport.ReactionExportDirectColumn\nVerticalTransport.ReactionSinkFloat","category":"page"},{"location":"PALEOocean_Reactions/#PALEOocean.Ocean.VerticalTransport.ReactionLightColumn","page":"PALEOocean Reactions","title":"PALEOocean.Ocean.VerticalTransport.ReactionLightColumn","text":"ReactionLightColumn\n\nCalculate light availability insol in ocean interior, given surface insolation surface_insol.\n\nIncludes: (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.\n\nParameters\n\nbackground_opacity[Float64]=0.04 (m-1), default_value=0.04, description=\"background opacity\"\n\n\n\n\n\n","category":"type"},{"location":"PALEOocean_Reactions/#PALEOocean.Ocean.VerticalTransport.ReactionExportDirect","page":"PALEOocean Reactions","title":"PALEOocean.Ocean.VerticalTransport.ReactionExportDirect","text":"ReactionExportDirect\n\nVertical particle sinking represented as instantaneous transport, described by fixed matrices (suitable for small ocean models)\n\nTransports a list of fluxes defined by parameter fluxlist, from input Target Variables with local name export_ to output Contributor Variables remin_.\n\nMatrices are defined by parameter transportocean for sinking within water column, and parameter transportfloor for flux to ocean floor.\n\nFor larger, column-based ocean models use ReactionExportDirectColumn.\n\nParameters\n\nfluxlist[Vector{String}]=[\"P\", \"N\", \"Corg\"], default_value=[\"P\", \"N\", \"Corg\"], description=\"names of fluxes to transport\"\ntransportocean[Vector{Vector{Float64}}]=Vector{Float64}[], default_value=Vector{Float64}[], description=\"matrix describing ocean export\"\ntransportfloor[Vector{Vector{Float64}}]=Vector{Float64}[], default_value=Vector{Float64}[], description=\"matrix describing oceanfloor export\"\nconserv_errthresh[Float64]=1.0e-5, default_value=1.0e-5, description=\"error threshold for conservation check (fraction of input)\"\n\n\n\n\n\n","category":"type"},{"location":"PALEOocean_Reactions/#PALEOocean.Ocean.VerticalTransport.ReactionExportDirectColumn","page":"PALEOocean Reactions","title":"PALEOocean.Ocean.VerticalTransport.ReactionExportDirectColumn","text":"ReactionExportDirectColumn\n\nVertical 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.\n\nTransports a list of fluxes defined by parameter fluxlist, from input Target Variables with local name export_ to output Contributor Variables remin_.\n\nParameters\n\nfluxlist[Vector{String}]=String[], default_value=String[], description=\"names of fluxes to transport\"\ntransportfloor[Bool]=true, default_value=true, description=\"true to provide oceanfloor flux, false to recycle flux into lowest ocean cell\"\nexportfunction[String]=\"SumExp\", default_value=\"SumExp\", allowed_values=[\"Martin\", \"SumExp\"], description=\"functional form for particle flux vs depth\"\ninput_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\"\nsumexp_scale[Vector{Float64}]=[500.0] (m), default_value=[500.0], description=\"length scales for each component of exponential decay of flux with depth\"\nmartin_rovera[Float64]=0.858, default_value=0.858, description=\"Martin power law exponent: flux \\propto depth^rovera\"\nmartin_depthmin[Float64]=100.0 (m), default_value=100.0, description=\"Martin power law minimum depth for start of decay with depth\"\n\n\n\n\n\n","category":"type"},{"location":"PALEOocean_Reactions/#PALEOocean.Ocean.VerticalTransport.ReactionSinkFloat","page":"PALEOocean Reactions","title":"PALEOocean.Ocean.VerticalTransport.ReactionSinkFloat","text":"ReactionSinkFloat\n\nVertical particle advection. \n\nApplied to all concentration Variables with non-zero attribute :vertical_movement (m d-1, +ve upwards), using naming convention _conc to identify _sms Deriv Variable to apply to. An optional variable _w may be defined that overrides :vertical_movement to define spatially-variable vertical motion.\n\nParameters\n\ntransportfloor[Bool]=true, default_value=true, description=\"true to provide oceanfloor flux, false to recycle flux into lowest ocean cell\"\n\n\n\n\n\n","category":"type"},{"location":"PALEOocean_Reactions/#Biological-Production","page":"PALEOocean Reactions","title":"Biological Production","text":"","category":"section"},{"location":"PALEOocean_Reactions/","page":"PALEOocean Reactions","title":"PALEOocean Reactions","text":"BioProd.ReactionBioProdPrest\nBioProd.ReactionBioProdMMPop","category":"page"},{"location":"PALEOocean_Reactions/#PALEOocean.Ocean.BioProd.ReactionBioProdPrest","page":"PALEOocean Reactions","title":"PALEOocean.Ocean.BioProd.ReactionBioProdPrest","text":"ReactionBioProdPrest\n\nP-limited biological production, configurable to restore P to specified level or to consume fraction of nutrients\n\nParameters\n\nbioprod[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\"\nbioprodval[Vector{Float64}]=Float64[] (m-3 or none), default_value=Float64[], description=\"conc or frac corresponding to 'bioprod'\"\nrCorgPO4[Float64]=106.0, default_value=106.0, description=\"Corg:P Redfield ratio of organic matter produced\"\nrNPO4[Float64]=16.0, default_value=16.0, description=\"N:P Redfield ratio of organic matter produced\"\nrCcarbCorg[Float64]=0.0, default_value=0.0, description=\"ratio of Ccarb to Corg produced\"\ntrest[Float64]=0.1 (yr), default_value=0.1, description=\"restoring timescale\"\nCIsotope[external, DataType]=PALEOboxes.ScalarData, default_value=PALEOboxes.ScalarData, allowed_values=Type[PALEOboxes.ScalarData, PALEOboxes.IsotopeLinear], description=\"disable / enable carbon isotopes and specify isotope type\"\n\nMethods and Variables for default Parameters\n\ndo_bio_prod_Prest\nvolume (m^3), VT_ReactDependency, description=\"ocean cell volume\"\nvolume_total (m^3), VT_ReactDependency, description=\"ocean total volume\"\nP_conc (mol m^-3), VT_ReactDependency, description=\"total P concentration\"\nProd_Corg –> %reaction%Prod_Corg (mol yr-1), VT_ReactProperty, description=\"organic carbon production rate\"\nProd_Ccarb –> %reaction%Prod_Ccarb (mol yr-1), VT_ReactProperty, description=\"carbonate production rate\"\nP_sms (mol yr-1), VT_ReactContributor, description=\"total dissolved P source minus sink\"\n[O2_sms] (mol yr-1), VT_ReactContributor, description=\"O2 source minus sink\"\n[TAlk_sms] (mol yr-1), VT_ReactContributor, description=\"TAlk source minus sink\"\n[DIC_sms] (mol yr-1), VT_ReactContributor, description=\"DIC source minus sink\"\n[enable_bioprod] –> global.enable_bioprod (), VT_ReactDependency, description=\"optional forcing, =0.0 to disable, !=0.0 to enable\"\n[PELCALC] –> global.PELCALC (), VT_ReactDependency, description=\"optional forcing for pelagic calcification\"\n[prod_P] (mol yr-1), VT_ReactContributor, description=\"flux P\"\n[prod_N] (mol yr-1), VT_ReactContributor, description=\"flux N\"\n[prod_Corg] (mol yr-1), VT_ReactContributor, description=\"flux Corg\"\n[prod_Ccarb] (mol yr-1), VT_ReactContributor, description=\"flux Ccarb\"\ntotals\nProd_Corg –> %reaction%Prod_Corg (mol yr-1), VT_ReactDependency, description=\"organic carbon production rate\"\nProd_Ccarb –> %reaction%Prod_Ccarb (mol yr-1), VT_ReactDependency, description=\"carbonate production rate\"\nProd_Corg_total (mol yr-1), VT_ReactProperty, description=\"total organic carbon production rate\"\nProd_Ccarb_total (mol yr-1), VT_ReactProperty, description=\"total carbonate production rate\"\n\n\n\n\n\n","category":"type"},{"location":"PALEOocean_Reactions/#PALEOocean.Ocean.BioProd.ReactionBioProdMMPop","page":"PALEOocean Reactions","title":"PALEOocean.Ocean.BioProd.ReactionBioProdMMPop","text":"ReactionBioProdMMPop\n\nOcean phytoplankton biological production.\n\nConfigurable to represent oxygenic photosynthesizers with P, N limitation, nitrogen fixers, anoxygenic photosynthesis limited by electron donor availability.\n\nExport production or production is represented as a combination of limiting factors:\n\npopulation_size x nutrient_limitation x light_limitation x temperature_limitation x electron_donor_limitation\n\npopulation_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).\n\nExport 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.\n\nSee (Kriest et al., 2010) for a comparison of models of this type.\n\nProduction functional forms\n\npopulation_size\n\nSet by k_poptype parameter:\n\nConstant: k_uPO4 (mol P / m-3 / yr) (represents export production)\nNutrient: k_mu*P_conc (mol P / m-3 / yr) (represents export production)\nPop : k_mu*phytP_conc (mol P / m-3 / yr) (represents growth of explicit population phtyP_conc)\n\nnutrient_limitation\n\nSet by k_nuttype parameter:\n\nPO4MM: P_conc / (P_conc + k_KPO4)\nPO4NMM: P, N limited phytoplankton export production: cf GENIE 2N2T_PO4MM_NO3, (Fennel, 2005)\nPO4NMMNfix: P limited nitrogen-fixer export production: cf GENIE 2N2T_PO4MM_NO3, (Fennel, 2005)\n\nlight_limitation\n\nSet by k_lightlim parameter:\n\nfixed: constant k_Irel\nlinear: GENIE-like form k_Irel*insol/PB.Constants.k_solar_presentday where insol (W m-2) is provided insolation in each cell\nMM: MITgcm-like saturating form zInsol/(k_Ic + zInsol) where zInsol = k_Irel*insol and insol is provided PAR in each cell\nQE: Saturating light limitation of rate vs (local) PAR k_Irel*insol, derived from photosynthetic QE k_alphaQE and chl absorption cross section k_thetaChlC. See eg (Geider, 1987) for summary of notation and unit conversions.\n\ntemperature_limitation\n\nSet by k_templim parameter:\n\nConstant: constant value 1.0\nEppley: Eppley curve, normalized to 1.0 at 0 deg C, exp(0.0633*(temp - PB.Constants.k_CtoK))\n\nelectron_donor_limitation\n\nSet by k_edonor parameter:\n\nH2O: constant 1.0, no electron-donor limitation on production\nH2S: H2S_conc / (H2S_conc + k_KH2S) production limited by H2S concentration\n\nExamples\n\nk_poptype k_nuttype k_lightlim k_templim k_edonor Reference\nConstant PO4MM linear Constant H2O P and light limited export production, as used by GENIE (Ridgwell et al., 2007)\nPop PO4MM QE Eppley H2O P and light limited phytoplankton population\n\nParameters\n\nrCorgPO4[Float64]=106.0, default_value=106.0, description=\"Corg:P Redfield ratio of organic matter produced\"\nrNPO4[Float64]=16.0, default_value=16.0, description=\"N:P Redfield ratio of organic matter produced\"\nrCcarbCorg[Float64]=0.0, default_value=0.0, description=\"ratio of Ccarb to Corg produced\"\nrCcarbCorg_fixed[Bool]=true, default_value=true, description=\"Ccarb:Corg rain ratio true for fixed, false for sat. state dependent\"\nk_r0[Float64]=0.044372, default_value=0.044372, description=\"initial rain-ratio for sat. state dependent rain ratio\"\nk_eta[Float64]=0.8053406, default_value=0.8053406, description=\"exponent for sat. state dependent rain ratio\"\nnuDOM[Float64]=0.66, default_value=0.66, description=\"fraction of production to DOM reservoir\"\ndepthlimit[Float64]=-200.0 (m), default_value=-200.0, description=\"depth limit for production\"\nk_poptype[String]=\"Constant\", default_value=\"Constant\", allowed_values=[\"Constant\", \"Nutrient\", \"Pop\"], description=\"population / growth rate model\"\nk_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)\"\nk_mu[Float64]=NaN (1/yr), default_value=NaN, description=\"for k_poptype = 'Nutrient', 'Pop': max prod/growth rate (at 0C if templim=='Eppley')\"\nk_grazeresprate[Float64]=NaN (1/yr), default_value=NaN, description=\"for k_poptype = 'Pop' imposed const loss (mortality) rate\"\nk_templim[String]=\"Constant\", default_value=\"Constant\", allowed_values=[\"Constant\", \"Eppley\"], description=\"temperature limitation factor\"\nk_lightlim[String]=\"linear\", default_value=\"linear\", allowed_values=[\"linear\", \"MM\", \"fixed\", \"QE\"], description=\"Light limitation function\"\nk_Irel[Float64]=1.0, default_value=1.0, description=\"multiplier for forcing-supplied insolation\"\nk_Ic[Float64]=30.0 (W/m^2), default_value=30.0, description=\"saturating irradiance for 'MM' case\"\nk_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'\"\nk_thetaChlC[Float64]=0.03 (mg Chl / mgC), default_value=0.03, description=\"Chl:Corg ratio for explicit population k_poptype=Pop\"\nk_epsilonChl[Float64]=0.012 (m^2/mg Chl), default_value=0.012, description=\"chl absorption coeff (for self shielding) for k_poptype='Pop'\"\nk_nuttype[String]=\"PO4MM\", default_value=\"PO4MM\", allowed_values=[\"PO4MM\", \"PO4NMM\", \"PO4NMMNfix\"], description=\"Nutrient limitation / nitrogen fixation function\"\nk_KPO4[Float64]=NaN (mol P m-3 ), default_value=NaN, description=\"limitation at low [P] MM half-max constant\"\nk_KN[Float64]=0.0 (mol NO3+NH4 m-3), default_value=0.0, description=\"limitation at low nitrogen\"\nk_prefNH3[Float64]=10.0, default_value=10.0, description=\"preference for ammonia over nitrate\"\nk_edonor[String]=\"H2O\", default_value=\"H2O\", allowed_values=[\"H2O\", \"H2S\"], description=\"electron donor (H2O for oxygenic phototroph\"\nk_KH2S[Float64]=0.001 (mol H2S m-3), default_value=0.001, description=\"limitation at low [H2S] MM half-max constant\"\nCIsotope[external, DataType]=PALEOboxes.ScalarData, default_value=PALEOboxes.ScalarData, allowed_values=Type[PALEOboxes.ScalarData, PALEOboxes.IsotopeLinear], description=\"disable / enable carbon isotopes and specify isotope type\"\n\nMethods and Variables for default Parameters\n\nRateStoich_edonorO2eq\nedonorO2eq (mol O2eq yr-1), VT_ReactDependency, description=\"O2eq e- donor consumption (H2O) by oxygenic photosynthesis\"\n[O2_sms] (), VT_ReactContributor, description=\"generated by RateStoich rate=edonorO2eq\"\ndo_bio_prod_MM_pop\nvolume (m^3), VT_ReactDependency, description=\"ocean cell volume\"\nzupper (m), VT_ReactDependency, description=\"cell depth (-ve)\"\nopen_area_fraction –> oceansurface.open_area_fraction (), VT_ReactDependency, description=\"fraction of area open to atmosphere\"\nP_conc (mol m^-3), VT_ReactDependency, description=\"total P concentration\"\n[OmegaCA] (), VT_ReactDependency, description=\"calcite saturation state\"\n[rate_bioprod] –> global.rate_bioprod (), VT_ReactDependency, description=\"optional forcing, multiplier for productivity\"\n[PELCALC] –> global.PELCALC (), VT_ReactDependency, description=\"optional forcing for pelagic calcification\"\nProd_Corg –> %reaction%Prod_Corg (mol yr-1), VT_ReactProperty, description=\"organic carbon production rate\"\nProd_Ccarb –> %reaction%Prod_Ccarb (mol yr-1), VT_ReactProperty, description=\"carbonate production rate\"\nP_sms (mol yr-1), VT_ReactContributor, description=\"total dissolved P source minus sink\"\n[TAlk_sms] (mol yr-1), VT_ReactContributor, description=\"TAlk source minus sink\"\n[DIC_sms] (mol yr-1), VT_ReactContributor, description=\"DIC source minus sink\"\n[partprod_P] (mol yr-1), VT_ReactContributor, description=\"flux P\"\n[partprod_N] (mol yr-1), VT_ReactContributor, description=\"flux N\"\n[partprod_Corg] (mol yr-1), VT_ReactContributor, description=\"flux Corg\"\n[partprod_Ccarb] (mol yr-1), VT_ReactContributor, description=\"flux Ccarb\"\n[domprod_P] (mol yr-1), VT_ReactContributor, description=\"flux P\"\n[domprod_N] (mol yr-1), VT_ReactContributor, description=\"flux N\"\n[domprod_Corg] (mol yr-1), VT_ReactContributor, description=\"flux Corg\"\n[domprod_Ccarb] (mol yr-1), VT_ReactContributor, description=\"flux Ccarb\"\nedonorO2eq (mol O2eq yr-1), VT_ReactProperty, description=\"O2eq e- donor consumption (H2O) by oxygenic photosynthesis\"\ninsol (W m-2), VT_ReactDependency, description=\"photosynthetic radiative flux\"\ntotals\nProd_Corg –> %reaction%Prod_Corg (mol yr-1), VT_ReactDependency, description=\"organic carbon production rate\"\nedonorO2eq (mol O2eq yr-1), VT_ReactDependency, description=\"O2eq e- donor consumption (H2O) by oxygenic photosynthesis\"\nProd_Ccarb –> %reaction%Prod_Ccarb (mol yr-1), VT_ReactDependency, description=\"carbonate production rate\"\nProd_Corg_total (mol yr-1), VT_ReactProperty, description=\"total organic carbon production rate\"\nedonorO2eq_total (mol O2eq yr-1), VT_ReactProperty, description=\"total O2eq e- donor consumption (H2O) by oxygenic photosynthesis\"\nProd_Ccarb_total (mol yr-1), VT_ReactProperty, description=\"total carbonate production rate\"\n\n\n\n\n\n","category":"type"},{"location":"PALEOocean_Reactions/#Ocean-surface-air-sea-flux","page":"PALEOocean Reactions","title":"Ocean surface air-sea flux","text":"","category":"section"},{"location":"PALEOocean_Reactions/","page":"PALEOocean Reactions","title":"PALEOocean Reactions","text":"CurrentModule = PALEOocean.Oceansurface","category":"page"},{"location":"PALEOocean_Reactions/","page":"PALEOocean Reactions","title":"PALEOocean Reactions","text":"AirSeaExchange.ReactionAirSea\nAirSeaExchange.ReactionAirSeaO2\nAirSeaExchange.ReactionAirSeaCO2\nAirSeaExchange.ReactionAirSeaCH4\nAirSeaExchange.ReactionAirSeaFixedSolubility","category":"page"},{"location":"PALEOocean_Reactions/#PALEOocean.Oceansurface.AirSeaExchange.ReactionAirSea","page":"PALEOocean Reactions","title":"PALEOocean.Oceansurface.AirSeaExchange.ReactionAirSea","text":"ReactionAirSea(Sc_function, sol_function, frac_function, gas_name)\nReactionAirSeaO2\nReactionAirSeaCO2\nReactionAirSeaCO2\nReactionAirSeaFixedSolubility\n\nCalculate atmosphere to ocean gas flux, mol/yr.\n\nNB: ReactionAirSea not used directly - use as ReactionAirSeaO2 etc.\n\nRuns in oceansurface Domain, calculates per-oceansurface-cell atmosphere to ocean gas flux (mol yr-1) for a gas X using stagnant film model:\n\nflux_X = Asurf * open_area_fraction * vpiston * (solX(pXatm) - X_conc)\n\nAsurf and open_area_fraction should be defined by oceansurface variables.\n\nPiston 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).\n\nIf 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.\n\n\n\n\n\n","category":"type"},{"location":"PALEOocean_Reactions/#PALEOocean.Oceansurface.AirSeaExchange.ReactionAirSeaO2","page":"PALEOocean Reactions","title":"PALEOocean.Oceansurface.AirSeaExchange.ReactionAirSeaO2","text":"ReactionAirSeaO2\n\nSee ReactionAirSea\n\nPiston velocity: Schmidt factor from (Sarmiento and Gruber, 2006)\nSolubility: from (Wanninkhof, 1992)\n\nParameters\n\nsolubility_fixed[Bool]=false, default_value=false, description=\"use fixed solubility\"\nsol_fix_henry_coeff[Float64]=NaN (mol l-1 atm-1), default_value=NaN, description=\"Henry's law coefficient for solubility_fixed=true\"\nmoistair[Bool]=true, default_value=true, description=\"apply correction for moist air\"\npiston_fixed[Bool]=true, default_value=true, description=\"use fixed piston velocity\"\npiston[Float64]=NaN (m d-1), default_value=NaN, description=\"fixed piston velocity\"\nTempKmin[Float64]=-Inf (K), default_value=-Inf, description=\"GENIE bug compatibility - lower limit on temperature for solubility\"\natm_partial_pressure_min_zero[Bool]=false, default_value=false, description=\"true to clamp -ve values of atmospheric partial pressure to zero when calculating flux\"\nocean_conc_min_zero[Bool]=false, default_value=false, description=\"true to clamp -ve values of ocean concentration to zero when calculating flux\"\n\nMethods and Variables for default Parameters\n\ndo_air_sea_flux\nAsurf (m^2), VT_ReactDependency, description=\"horizontal area of oceansurface\"\nopen_area_fraction (), VT_ReactDependency, description=\"fracton of surface open to atmosphere (0-1.0)\"\npXatm –> atm.pO2atm (atm), VT_ReactDependency, description=\"gas X atmospheric partial pressure\"\nX_conc –> ocean.oceansurface.O2_conc (mol m-3), VT_ReactDependency, description=\"ocean concentration [gas X]\"\nflux_X –> fluxAtmtoOceansurface.flux_O2 (mol yr-1), VT_ReactContributor, description=\"air -> sea gas X flux\"\ntemp –> ocean.oceansurface.temp (K), VT_ReactDependency, description=\"ocean surface temperature\"\nsal –> ocean.oceansurface.sal (psu), VT_ReactDependency, description=\"ocean salinity\"\n\n\n\n\n\n","category":"type"},{"location":"PALEOocean_Reactions/#PALEOocean.Oceansurface.AirSeaExchange.ReactionAirSeaCO2","page":"PALEOocean Reactions","title":"PALEOocean.Oceansurface.AirSeaExchange.ReactionAirSeaCO2","text":"ReactionAirSeaCO2\n\nSee ReactionAirSea\n\nPiston velocity: Schmidt factor from (Wanninkhof, 1992)\nSolubility: calculated from ocean.CO2_conc, ocean.pCO2atm defined by ocean carbonate chemistry.\nIsotope fractionation: equilibrium and kinetic fractionation from (Zhang et al., 1995)\n\nParameters\n\nsolubility_fixed[Bool]=false, default_value=false, description=\"use fixed solubility\"\nsol_fix_henry_coeff[Float64]=NaN (mol l-1 atm-1), default_value=NaN, description=\"Henry's law coefficient for solubility_fixed=true\"\nmoistair[Bool]=true, default_value=true, description=\"apply correction for moist air\"\npiston_fixed[Bool]=true, default_value=true, description=\"use fixed piston velocity\"\npiston[Float64]=NaN (m d-1), default_value=NaN, description=\"fixed piston velocity\"\nTempKmin[Float64]=-Inf (K), default_value=-Inf, description=\"GENIE bug compatibility - lower limit on temperature for solubility\"\natm_partial_pressure_min_zero[Bool]=false, default_value=false, description=\"true to clamp -ve values of atmospheric partial pressure to zero when calculating flux\"\nocean_conc_min_zero[Bool]=false, default_value=false, description=\"true to clamp -ve values of ocean concentration to zero when calculating flux\"\n\n\n\n\n\n","category":"type"},{"location":"PALEOocean_Reactions/#PALEOocean.Oceansurface.AirSeaExchange.ReactionAirSeaCH4","page":"PALEOocean Reactions","title":"PALEOocean.Oceansurface.AirSeaExchange.ReactionAirSeaCH4","text":"ReactionAirSeaCH4\n\nSee ReactionAirSea\n\nPiston velocity: Schmidt factor from (Wanninkhof, 1992)\nSolubility: from (Wanninkhof, 1992)\nIsotope fractionation: NB: TODO no isotope fractionation\n\nParameters\n\nsolubility_fixed[Bool]=false, default_value=false, description=\"use fixed solubility\"\nsol_fix_henry_coeff[Float64]=NaN (mol l-1 atm-1), default_value=NaN, description=\"Henry's law coefficient for solubility_fixed=true\"\nmoistair[Bool]=true, default_value=true, description=\"apply correction for moist air\"\npiston_fixed[Bool]=true, default_value=true, description=\"use fixed piston velocity\"\npiston[Float64]=NaN (m d-1), default_value=NaN, description=\"fixed piston velocity\"\nTempKmin[Float64]=-Inf (K), default_value=-Inf, description=\"GENIE bug compatibility - lower limit on temperature for solubility\"\natm_partial_pressure_min_zero[Bool]=false, default_value=false, description=\"true to clamp -ve values of atmospheric partial pressure to zero when calculating flux\"\nocean_conc_min_zero[Bool]=false, default_value=false, description=\"true to clamp -ve values of ocean concentration to zero when calculating flux\"\n\n\n\n\n\n","category":"type"},{"location":"PALEOocean_Reactions/#PALEOocean.Oceansurface.AirSeaExchange.ReactionAirSeaFixedSolubility","page":"PALEOocean Reactions","title":"PALEOocean.Oceansurface.AirSeaExchange.ReactionAirSeaFixedSolubility","text":"ReactionAirSeaFixedSolubility\n\nSee ReactionAirSea\n\nPiston velocity: fixed value from piston Parameter\nSolubility: fixed value from sol_fix_henry_coeff\n\nNB: moistair correction is not applied\n\nParameters\n\nsolubility_fixed[Bool]=true, default_value=true, description=\"use fixed solubility\"\nsol_fix_henry_coeff[Float64]=NaN (mol l-1 atm-1), default_value=NaN, description=\"Henry's law coefficient for solubility_fixed=true\"\nmoistair[Bool]=false, default_value=false, description=\"apply correction for moist air\"\npiston_fixed[Bool]=true, default_value=true, description=\"use fixed piston velocity\"\npiston[Float64]=NaN (m d-1), default_value=NaN, description=\"fixed piston velocity\"\nTempKmin[Float64]=-Inf (K), default_value=-Inf, description=\"GENIE bug compatibility - lower limit on temperature for solubility\"\natm_partial_pressure_min_zero[Bool]=false, default_value=false, description=\"true to clamp -ve values of atmospheric partial pressure to zero when calculating flux\"\nocean_conc_min_zero[Bool]=false, default_value=false, description=\"true to clamp -ve values of ocean concentration to zero when calculating flux\"\n\nMethods and Variables for default Parameters\n\ndo_air_sea_flux\nAsurf (m^2), VT_ReactDependency, description=\"horizontal area of oceansurface\"\nopen_area_fraction (), VT_ReactDependency, description=\"fracton of surface open to atmosphere (0-1.0)\"\npXatm –> atm.pXatm (atm), VT_ReactDependency, description=\"gas X atmospheric partial pressure\"\nX_conc –> ocean.oceansurface.X_conc (mol m-3), VT_ReactDependency, description=\"ocean concentration [gas X]\"\nflux_X –> fluxAtmtoOceansurface.flux_X (mol yr-1), VT_ReactContributor, description=\"air -> sea gas X flux\"\n\n\n\n\n\n","category":"type"},{"location":"PALEOocean_Reactions/#Ocean-floor-burial","page":"PALEOocean Reactions","title":"Ocean floor burial","text":"","category":"section"},{"location":"PALEOocean_Reactions/","page":"PALEOocean Reactions","title":"PALEOocean Reactions","text":"CurrentModule = PALEOocean.Oceanfloor","category":"page"},{"location":"PALEOocean_Reactions/#Carbonate-burial","page":"PALEOocean Reactions","title":"Carbonate burial","text":"","category":"section"},{"location":"PALEOocean_Reactions/","page":"PALEOocean Reactions","title":"PALEOocean Reactions","text":"Burial.ReactionShelfCarb\nBurial.ReactionBurialEffCarb","category":"page"},{"location":"PALEOocean_Reactions/#PALEOocean.Oceanfloor.Burial.ReactionShelfCarb","page":"PALEOocean Reactions","title":"PALEOocean.Oceanfloor.Burial.ReactionShelfCarb","text":"ReactionShelfCarb\n\nShallow-water carbonate burial controlled by carbonate saturation state (after (Caldeira and Rampino, 1993))\n\nCarbonate 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.\n\nParameters\n\ncarbsedshallow[Float64]=1.4355e12 (mol C yr-1), default_value=1.4355e12, description=\"total carbonate deposition rate\"\nshelfareanorm[Vector{Float64}]=Float64[], default_value=Float64[], description=\"per box distribution of carbonate burial (length=Domain size, must sum to 1.0)\"\nCIsotope[external, DataType]=PALEOboxes.ScalarData, default_value=PALEOboxes.ScalarData, allowed_values=Type[PALEOboxes.ScalarData, PALEOboxes.IsotopeLinear], description=\"disable / enable carbon isotopes and specify isotope type\"\n\nMethods and Variables for default Parameters\n\ndo_shelf_carb\nfluxOceanfloor_soluteflux_DIC –> fluxOceanfloor.soluteflux_DIC (mol yr-1), VT_ReactContributor, description=\"flux DIC\"\nfluxOceanfloor_soluteflux_TAlk –> fluxOceanfloor.soluteflux_TAlk (mol yr-1), VT_ReactContributor, description=\"flux TAlk\"\n[fluxOceanfloor_soluteflux_Ca] –> fluxOceanfloor.soluteflux_Ca (mol yr-1), VT_ReactContributor, description=\"flux Ca\"\n[fluxOceanBurial_flux_Ccarb] –> fluxOceanBurial.flux_Ccarb (mol yr-1), VT_ReactContributor, description=\"flux Ccarb\"\n[shelfarea_force] –> global.shelfarea_force (), VT_ReactDependency, description=\"optional forcing multiplier for carbsedshallow (defaults to 1.0)\"\nOmegaAR –> ocean.oceanfloor.OmegaAR (), VT_ReactDependency, description=\"aragonite saturation\"\nshelf_Ccarb (mol yr-1), VT_ReactProperty, description=\"shelf Ccarb burial\"\ntotals\nshelf_Ccarb (mol yr-1), VT_ReactDependency, description=\"shelf Ccarb burial\"\nshelf_Ccarb_total (mol yr-1), VT_ReactProperty, description=\"total shelf Ccarb burial\"\n\n\n\n\n\n","category":"type"},{"location":"PALEOocean_Reactions/#PALEOocean.Oceanfloor.Burial.ReactionBurialEffCarb","page":"PALEOocean Reactions","title":"PALEOocean.Oceanfloor.Burial.ReactionBurialEffCarb","text":"ReactionBurialEffCarb\n\nDeep ocean carbonate burial as a carbonate-saturation-state-dependent fraction of carbonate flux.\n\nParameterisation from (Caldeira and Rampino, 1993), intended for use in ocean box models with a single deep ocean box.\n\nFraction of input carbonate flux buried flys is a function of oceanfloor carbonate saturation state.\n\nCarbonate burial flux flux_Ccarb = particulateflux_Ccarb * flys, where Fraction of input carbonate flux buried flys is a function of carbonate saturation state.\n\nCan 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.\n\nParameter burial_eff_function sets the functional form used for burial fraction flys:\n\n\"Caldeira1993\": flys = 0.5*(1.0+tanh(k0([CO3] -k1)))\n\n(after (Caldeira and Rampino, 1993), intended for use with the single deep ocean box in a 3-box ocean model)\n\n\"OmegaCA\": flys = 1 - 0.5 * erfc(m0*(Ω_CA - m1)) (burial efficiency a function of oceanfloor saturation state)\n\nParameters\n\nburial_eff_function[String]=\"Caldeira1993\", default_value=\"Caldeira1993\", allowed_values=[\"Caldeira1993\", \"OmegaCA\"], description=\"functional form for burial efficiency\"\nk0[Float64]=26.0 (m3/mol), default_value=26.0, description=\"Caldeira1993: burial frac 'steepness' with CO3 concentration\"\nk1[Float64]=0.11 (mol/m3), default_value=0.11, description=\"Caldeira1993: CO3 concentration at burial frac 0.5\"\nm0[Float64]=10.0, default_value=10.0, description=\"OmegaCA: burial frac 'steepness' with OmegaCA\"\nm1[Float64]=1.0, default_value=1.0, description=\"OmegaCA: OmegaCA at burial frac 0.5\"\nhascarbseddeep[Vector{Bool}]=Bool[], default_value=Bool[], description=\"per box flag to enable (length=Domain size)\"\nCIsotope[external, DataType]=PALEOboxes.ScalarData, default_value=PALEOboxes.ScalarData, allowed_values=Type[PALEOboxes.ScalarData, PALEOboxes.IsotopeLinear], description=\"disable / enable carbon isotopes and specify isotope type\"\n\nMethods and Variables for default Parameters\n\ndo_burial_eff_carb\nfluxOceanfloor_soluteflux_DIC –> fluxOceanfloor.soluteflux_DIC (mol yr-1), VT_ReactContributor, description=\"flux DIC\"\nfluxOceanfloor_soluteflux_TAlk –> fluxOceanfloor.soluteflux_TAlk (mol yr-1), VT_ReactContributor, description=\"flux TAlk\"\n[fluxOceanfloor_soluteflux_Ca] –> fluxOceanfloor.soluteflux_Ca (mol yr-1), VT_ReactContributor, description=\"flux Ca\"\n[fluxOceanBurial_flux_Ccarb] –> fluxOceanBurial.flux_Ccarb (mol yr-1), VT_ReactContributor, description=\"flux Ccarb\"\nparticulateflux_Ccarb (mol yr-1), VT_ReactTarget, description=\"input carbonate particulate flux\"\ndeep_Ccarb (mol yr-1), VT_ReactProperty, description=\"deep unresolved Ccarb burial\"\nflys (), VT_ReactProperty, description=\"fraction of Ccarb export buried\"\nCO3_conc –> ocean.oceanfloor.CO3_conc (mol m-3), VT_ReactDependency, description=\"CO3 concentration\"\ntotals\ndeep_Ccarb (mol yr-1), VT_ReactDependency, description=\"deep unresolved Ccarb burial\"\ndeep_Ccarb_total (mol yr-1), VT_ReactProperty, description=\"total deep unresolved Ccarb burial\"\n\n\n\n\n\n","category":"type"},{"location":"PALEOocean_Reactions/#Organic-carbon-and-phosphorus-burial","page":"PALEOocean Reactions","title":"Organic carbon and phosphorus burial","text":"","category":"section"},{"location":"PALEOocean_Reactions/","page":"PALEOocean Reactions","title":"PALEOocean Reactions","text":"Burial.ReactionBurialEffCorgP","category":"page"},{"location":"PALEOocean_Reactions/#PALEOocean.Oceanfloor.Burial.ReactionBurialEffCorgP","page":"PALEOocean Reactions","title":"PALEOocean.Oceanfloor.Burial.ReactionBurialEffCorgP","text":"ReactionBurialEffCorgP\n\nBurial efficiency (fraction of particulateflux input) for Corg and P.\n\nInput 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.\n\nThe fraction of Corg buried is given by a burial efficiency function, with options set by Parameter burial_eff_function:\n\nPrescribed: Corg burial in cell i = Corg particulateflux * BECorgNorm*Parameter BECorg[i]\nOzaki2011: Corg burial in cell i = Corg particulateflux * BECorgNorm*burialEffCorg_Ozaki2011(sedimentation_rate)\nDunne2007: corg burial in cell i = Corg particulateflux * BECorgNorm*burialEffCorg_Dunne2007(Corg particulateflux, Afloor)\nConstantBurialRate: Corg burial in cell i = BECorgNorm*Parameter BECorg[i] (independent of Corg flux)\n\nIt 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.\n\nP 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.\n\nParameters\n\nBECorgNorm[Float64]=1.0, default_value=1.0, description=\"overall normalization factor for Corg burial (or total Corg burial for ConstantBurialRate)\"\nburial_eff_function[String]=\"Prescribed\", default_value=\"Prescribed\", allowed_values=[\"Prescribed\", \"Ozaki2011\", \"Dunne2007\", \"ConstantBurialRate\"], description=\"Corg burial efficiency parameterisation (or ConstantBurialRate)\"\nBECorg[Vector{Float64}]=Float64[], default_value=Float64[], description=\"prescribed fraction seafloor Corg flux buried (or per-cell fraction of total Corg for ConstantBurialRate)\"\nFixedCorgBurialTotal[Float64]=NaN (mol C yr-1), default_value=NaN, description=\"if != NaN, fix total ocean Corg burial rate by renormalizing per-cell fluxes\"\nBPO2[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)\"\nBPorgCorg[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)\"\nBPFeCorg[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)\"\nBPauthCorg[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)\"\nCIsotope[external, DataType]=PALEOboxes.ScalarData, default_value=PALEOboxes.ScalarData, allowed_values=Type[PALEOboxes.ScalarData, PALEOboxes.IsotopeLinear], description=\"disable / enable carbon isotopes and specify isotope type\"\n\nMethods and Variables\n\ndo_burial_eff_CorgP\nparticulateflux_Corg (mol yr-1), VT_ReactTarget, description=\"input particulate flux Corg\"\nparticulateflux_P (mol yr-1), VT_ReactTarget, description=\"input particulate flux P\"\nparticulateflux_N (mol yr-1), VT_ReactTarget, description=\"input particulate flux N\"\nreminflux_Corg (mol yr-1), VT_ReactContributor, description=\"output unburied particulate flux Corg\"\nreminflux_P (mol yr-1), VT_ReactContributor, description=\"output unburied particulate flux P\"\nreminflux_N (mol yr-1), VT_ReactContributor, description=\"output unburied particulate flux N\"\n[fluxOceanBurial_flux_Corg] –> fluxOceanBurial.flux_Corg (mol yr-1), VT_ReactContributor, description=\"flux Corg\"\n[fluxOceanBurial_flux_Porg] –> fluxOceanBurial.flux_Porg (mol yr-1), VT_ReactContributor, description=\"flux Porg\"\n[fluxOceanBurial_flux_PFe] –> fluxOceanBurial.flux_PFe (mol yr-1), VT_ReactContributor, description=\"flux PFe\"\n[fluxOceanBurial_flux_Pauth] –> fluxOceanBurial.flux_Pauth (mol yr-1), VT_ReactContributor, description=\"flux Pauth\"\n[fluxOceanBurial_flux_P] –> fluxOceanBurial.flux_P (mol yr-1), VT_ReactContributor, description=\"flux P\"\nburial_eff_Corg (), VT_ReactProperty, description=\"Corg burial efficiency\"\n[sedimentation_rate] (m yr-1), VT_ReactDependency, description=\"sedimentation rate\"\n[O2_conc] –> ocean.oceanfloor.O2_conc (mol m-3), VT_ReactDependency, description=\"O2 concentration\"\n[Afloor] –> oceanfloor.Afloor (m^2), VT_ReactDependency, description=\"horizontal area of seafloor at base of box\"\n\n\n\n\n\n","category":"type"},{"location":"PALEOocean_Reactions/#Global","page":"PALEOocean Reactions","title":"Global","text":"","category":"section"},{"location":"PALEOocean_Reactions/","page":"PALEOocean Reactions","title":"PALEOocean Reactions","text":"CurrentModule = PALEOocean.Global","category":"page"},{"location":"PALEOocean_Reactions/","page":"PALEOocean Reactions","title":"PALEOocean Reactions","text":"Insolation.ReactionForceInsolationModernEarth\nInsolation.insolMITgcmDIC","category":"page"},{"location":"PALEOocean_Reactions/#PALEOocean.Global.Insolation.ReactionForceInsolationModernEarth","page":"PALEOocean Reactions","title":"PALEOocean.Global.Insolation.ReactionForceInsolationModernEarth","text":"ReactionForceInsolationModernEarth\n\nCalculate time and latitude dependent daily mean modern Earth surface solar insolation.\n\nDaily mean photosynthetically-active surface insolation \n\n`insolation` = TOA flux * (1 - `albedo`) * `parfrac`\n\nSee insolMITgcmDIC for details.\n\nParameters\n\nalbedo[Float64]=0.6, default_value=0.6, description=\"mean planetary albedo\"\nparfrac[Float64]=1.0, default_value=1.0, description=\"fraction of radiation that is photosynthetically active\"\nlatitude[Vector{Float64}]=Float64[] (degrees N), default_value=Float64[], description=\"if non-empty, override grid latitude and set explicitly for each surface cell\"\n\nMethods and Variables for default Parameters\n\ndo_force_insolation\ntforce –> global.tforce (yr), VT_ReactDependency, description=\"historical time at which to apply forcings, present = 0 yr\"\ninsolation (W m-2), VT_ReactProperty, description=\"daily mean surface insolation\"\n\n\n\n\n\n","category":"type"},{"location":"PALEOocean_Reactions/#PALEOocean.Global.Insolation.insolMITgcmDIC","page":"PALEOocean Reactions","title":"PALEOocean.Global.Insolation.insolMITgcmDIC","text":"insolMITgcmDIC(Timeyr,latdeg; albedo=0.6, solar=1360.0, parfrac=1.0) -> sfac\n\nMITgcm DIC package insol function directly translated from fortran. Similar to (Brock, 1981).\n\nNB: 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\n\nC !DESCRIPTION:\nC find light as function of date and latitude\nC based on paltridge and parson\n\nArguments:\n\nTimeyr: yr, model time, NB: year assumed to start in winter\nlatdeg: deg, latitudes\nalbedo: planetary albedo (ie correct for top-of-atmosphere to ground-level, clouds etc)\nsolar: W m-2 solar constant\nparfrac: photosynthetically active fraction\n\nReturns:\n\nsfac: daily average photosynthetically active solar radiation just below surface\n\n\n\n\n\n","category":"function"},{"location":"PALEOocean_functions/#PALEOocean-functions","page":"PALEOocean functions","title":"PALEOocean functions","text":"","category":"section"},{"location":"PALEOocean_functions/","page":"PALEOocean functions","title":"PALEOocean functions","text":"Helper functions for use by Reactions.","category":"page"},{"location":"PALEOocean_functions/","page":"PALEOocean functions","title":"PALEOocean functions","text":"CurrentModule = PALEOocean.Ocean","category":"page"},{"location":"PALEOocean_functions/#Configuring-Domains-and-Variables","page":"PALEOocean functions","title":"Configuring Domains and Variables","text":"","category":"section"},{"location":"PALEOocean_functions/","page":"PALEOocean functions","title":"PALEOocean functions","text":"set_model_domains\nfind_transport_vars","category":"page"},{"location":"PALEOocean_functions/#PALEOocean.Ocean.set_model_domains","page":"PALEOocean functions","title":"PALEOocean.Ocean.set_model_domains","text":"set_model_domains(model::PB.Model, oceangrid, surfacegrid, floorgrid)\n\nSet model Domain sizes and Subdomains for ocean, oceansurface, oceanfloor Domains. (Helper function for a Reaction implementing ocean transport.)\n\n\n\n\n\n","category":"function"},{"location":"PALEOocean_functions/#PALEOocean.Ocean.find_transport_vars","page":"PALEOocean functions","title":"PALEOocean.Ocean.find_transport_vars","text":"find_transport_vars(domain::PB.AbstractDomain; transport_input_components=false) \n -> (conc_vars, sms_vars, input_components, num_components)\n\nFind all variables in domain with attribute :advect == true, and then use naming convention _conc to identify _sms Variables to add transport flux to.\n\nIf transport_input_components = true, also define input_components as _transport_input to calculate advective transport input into each cell (slow)\n\n\n\n\n\n","category":"function"},{"location":"PALEOocean_functions/#Constructing-and-using-transport-matrices","page":"PALEOocean functions","title":"Constructing and using transport matrices","text":"","category":"section"},{"location":"PALEOocean_functions/","page":"PALEOocean functions","title":"PALEOocean functions","text":"add_loop!\nprepare_transport\ndo_transport\ndo_transport_tr","category":"page"},{"location":"PALEOocean_functions/#PALEOocean.Ocean.add_loop!","page":"PALEOocean functions","title":"PALEOocean.Ocean.add_loop!","text":"add_loop!(A::AbstractMatrix, vm::AbstractVector, L::Real, loopindices)\n\nAdd circulation with flux L to transport matrix A, around a closed loop loopindices.\n\nTransport matrix A (s^{-1}) represents tracer transport,\n\ndc/dt = A * c\n\nwhere c is Vector of tracer concentrations\n\nloopindices is a list of cell indices representing a closed loop, eg [2, 3, 4, 2]\n\nUnits for tracers and fluxes are:\n\nOcean / volume based:\nc: mol m-3 tracer concentration\nvm: m^3. volume per cell\nL: m^3 s-1 (volume flux, cf 1 Sverdrup = 1e6 m^3 s-1)\nAtmosphere / mass based\nc: kg / total kg, tracer mass mixing ratio \nvm: kg, total mass per call\nL: kg s-1 (mass flux)\n\n\n\n\n\n","category":"function"},{"location":"PALEOocean_functions/#PALEOocean.Ocean.prepare_transport","page":"PALEOocean functions","title":"PALEOocean.Ocean.prepare_transport","text":"prepare_transport(m::ReactionMethod, (grid_vars, conc_components, sms_components, input_components)) -> \n (grid_vars, conc_components, sms_components, input_components, buffer)\n\nAdd an additional buffer for do_transport. conc_components, sms_components, optional input_components are Vectors of data Arrays (as created by VarList_components from lists generated by find_transport_vars).\n\n\n\n\n\n","category":"function"},{"location":"PALEOocean_functions/#PALEOocean.Ocean.do_transport","page":"PALEOocean functions","title":"PALEOocean.Ocean.do_transport","text":"do_transport(grid_vars, conc_components, sms_components, input_components, buffer, dtm::AbstractMatrix, cr::AbstractCellRange)\n\nCalculate transport rates. \n\nArguments\n\ngrid_vars, conc_components, sms_components, input_components: Vectors of data Arrays (created by VarList_components)\nbuffer: buffer arrays created by prepare_transport\ndtm::AbstractMatrix: transport matrix (units yr-1)\n\n\n\n\n\n","category":"function"},{"location":"PALEOocean_functions/#PALEOocean.Ocean.do_transport_tr","page":"PALEOocean functions","title":"PALEOocean.Ocean.do_transport_tr","text":"do_transport_tr(grid_vars, conc_components, sms_components, input_components, buffer, \n dtm_tr::SparseArrays.SparseMatrixCSC, cr::PB.AbstractCellRange)\n\ndo_transport_tr(grid_vars, conc_components, sms_components, input_components, buffer,\n colptr, rowval, (nzval1, nzval2), (wt1, wt2), cr::PB.AbstractCellRange)\n\nMemory-bandwidth optimised version of do_transport using transposed matrix dtm_tr. This is an optimisation specifically tied to the Compressed Sparse Column storage layout (Julia SparseMatrixCSC).\n\nIf two matrices are supplied with a common sparsity pattern specified by colptr, rowptr, applies a linear combination with (wt1, wt2)\n\n\n\n\n\nOptimized SIMD transport matrix x contiguous packed conc data array\n\n\n\n\n\n","category":"function"},{"location":"PALEOocean_functions/#Optimized-transport-using-transport-matrices-with-a-common-sparsity-pattern","page":"PALEOocean functions","title":"Optimized transport using transport matrices with a common sparsity pattern","text":"","category":"section"},{"location":"PALEOocean_functions/","page":"PALEOocean functions","title":"PALEOocean functions","text":"TrsptCSC\ncreate_common_sparsity_tr!","category":"page"},{"location":"PALEOocean_functions/#PALEOocean.Ocean.TrsptCSC","page":"PALEOocean functions","title":"PALEOocean.Ocean.TrsptCSC","text":"TrsptCSC\n\nStore multiple SparseArrays.SparseMatrixCSC with a common sparsity pattern.\n\nThis allows fast interpolation for eg a time-series of transport matrices over a seasonal cycle.\n\nSparseMatrixCSC format, except with a Vector of nzval, ie:\n\ncolptr: Column j is in colptr[j]:(colptr[j+1]-1)\nrowval: Row indices of stored values\nnzval: Vector of Vector of non-zero values\n\n\n\n\n\n","category":"type"},{"location":"PALEOocean_functions/#PALEOocean.Ocean.create_common_sparsity_tr!","page":"PALEOocean functions","title":"PALEOocean.Ocean.create_common_sparsity_tr!","text":"create_common_sparsity_tr!(a_matrices; do_transpose, TMeltype=Float64) -> TrsptCSC\n\nReduce a collection of matrices to common sparsity pattern, optionally transposing.\n\nNB: a_matrices is used as workspace and contents deleted.\n\n\n\n\n\n","category":"function"},{"location":"PALEOocean_functions/#Optimized-transport-using-SIMD-packed-vectors","page":"PALEOocean functions","title":"Optimized transport using SIMD packed vectors","text":"","category":"section"},{"location":"PALEOocean_functions/","page":"PALEOocean functions","title":"PALEOocean functions","text":"PackedBuffer","category":"page"},{"location":"PALEOocean_functions/#PALEOocean.Ocean.PackedBuffer","page":"PALEOocean functions","title":"PALEOocean.Ocean.PackedBuffer","text":"PackedBuffer\n\nBuffer Arrays for optimized SIMD transport using elements of type SIMD.Vec{pack_chunk_width, pack_eltype}. Creates packed_conc_array for packed and padded Variable concentrations, and an additional workspace buffer. Uses additional type parameters to allow do_transport_tr specialization on number of Variable components etc as well as SIMD chunk width.\n\n\n\n\n\n","category":"type"},{"location":"collated_examples/skeleton_configuration/README/#Skeleton-ocean-atmosphere-configuration","page":"Skeleton ocean-atmosphere configuration","title":"Skeleton ocean-atmosphere configuration","text":"","category":"section"},{"location":"collated_examples/skeleton_configuration/README/","page":"Skeleton ocean-atmosphere configuration","title":"Skeleton ocean-atmosphere configuration","text":"A \"skeleton\" ocean-atmosphere configuration, defining Domains and fluxes but no biogeochemistry. Illustrative fluxes are configured for a C, O, P model.","category":"page"},{"location":"collated_examples/skeleton_configuration/README/#yaml-configuration-file","page":"Skeleton ocean-atmosphere configuration","title":"yaml configuration file","text":"","category":"section"},{"location":"collated_examples/skeleton_configuration/README/","page":"Skeleton ocean-atmosphere configuration","title":"Skeleton ocean-atmosphere configuration","text":"The model configuration (file examples/skeleton_configuration/PALEO_examples_oceanskeleton_cfg.yaml) contains:","category":"page"},{"location":"collated_examples/skeleton_configuration/README/","page":"Skeleton ocean-atmosphere configuration","title":"Skeleton ocean-atmosphere configuration","text":"import Markdown\nMarkdown.parse(\n \"\"\"```julia\n $(read(joinpath(ENV[\"PALEO_EXAMPLES\"], \"skeleton_configuration/PALEO_examples_oceanskeleton_cfg.yaml\"), String))\n ```\"\"\"\n)","category":"page"},{"location":"collated_examples/skeleton_configuration/README/#Variables-defined","page":"Skeleton ocean-atmosphere configuration","title":"Variables defined","text":"","category":"section"},{"location":"collated_examples/skeleton_configuration/README/","page":"Skeleton ocean-atmosphere configuration","title":"Skeleton ocean-atmosphere configuration","text":"julia> include(\"PALEO_examples_oceanskeleton.jl\")","category":"page"},{"location":"collated_examples/skeleton_configuration/README/","page":"Skeleton ocean-atmosphere configuration","title":"Skeleton ocean-atmosphere configuration","text":"include(joinpath(ENV[\"PALEO_EXAMPLES\"], \"skeleton_configuration/PALEO_examples_oceanskeleton.jl\")) # hide","category":"page"},{"location":"collated_examples/skeleton_configuration/README/","page":"Skeleton ocean-atmosphere configuration","title":"Skeleton ocean-atmosphere configuration","text":"show(PB.show_variables(model); allrows=true, allcols=true, eltypes=false, show_row_number=false)","category":"page"},{"location":"collated_examples/skeleton_configuration/README/","page":"Skeleton ocean-atmosphere configuration","title":"Skeleton ocean-atmosphere configuration","text":"ocean, oceansurface, and oceanfloor Variables are standard grid variables, provided by the ocean transport Reaction (a ReactionOceanTransport3box in this case).","category":"page"},{"location":"collated_examples/skeleton_configuration/README/","page":"Skeleton ocean-atmosphere configuration","title":"Skeleton ocean-atmosphere configuration","text":"Flux target Variables to accumulate exchange fluxes are provided by ReactionFluxTarget Reactions, the illustrative configuration here defines fluxes for a C, O, P model with atmospheric state variables CO2, O2, and ocean state variables including DIC, TAlk, O2 and P.","category":"page"},{"location":"References/#References","page":"References","title":"References","text":"","category":"section"},{"location":"References/","page":"References","title":"References","text":"Brock, T. D. (1981). Calculating solar radiation for ecological studies. Ecological Modelling 14, 1–19.\n\n\n\nCaldeira, K. and Rampino, M. R. (1993). Aftermath of the end-Cretaceous mass extinction: Possible biogeochemical stabilization of the carbon cycle and climate. Paleoceanography 8, 515–525.\n\n\n\nCanfield, D. E. (2006). Models of oxic respiration, denitrification and sulfate reduction in zones of coastal upwelling. Geochimica et Cosmochimica Acta 70, 5753–5765.\n\n\n\nClarkson, M. O.; Kasemann, S. A.; Wood, R. A.; Lenton, T. M.; Daines, S. J.; Richoz, S.; Ohnemueller, F.; Meixner, A.; Poulton, S. W. and Tipper, E. T. (2015). Ocean acidification and the Permo-Triassic mass extinction. Science 348, 229–232.\n\n\n\nDaines, S. J. and Lenton, T. M. (2016). The effect of widespread early aerobic marine ecosystems on methane cycling and the Great Oxidation. Earth and Planetary Science Letters 434, 42–51.\n\n\n\nFennel, K. (2005). The co-evolution of the nitrogen, carbon and oxygen cycles in the Proterozoic ocean. American Journal of Science 305, 526–545.\n\n\n\nGeider, R. J. (1987). LIGHT AND TEMPERATURE DEPENDENCE OF THE CARBON TO CHLOROPHYLL a RATIO IN MICROALGAE AND CYANOBACTERIA: IMPLICATIONS FOR PHYSIOLOGY AND GROWTH OF PHYTOPLANKTON. New Phytologist 106, 1–34.\n\n\n\nHotinski, R. M.; Kump, L. R. and Najjar, R. G. (2000). Opening Pandora's Box: The impact of open system modeling on interpretations of anoxia. Paleoceanography 15, 267.\n\n\n\nKhatiwala, S. (2007). A computational framework for simulation of biogeochemical tracers in the ocean. Global Biogeochemical Cycles 21, 1–14.\n\n\n\nKriest, I.; Khatiwala, S. and Oschlies, A. (2010). Towards an assessment of simple global marine biogeochemical models of different complexity. Progress in Oceanography 86, 337–360. ISBN: 0079-6611 Publisher: Elsevier Ltd.\n\n\n\nRidgwell, A.; Hargreaves, J. C.; Edwards, N. R.; Annan, J. D.; Lenton, T. M.; Marsh, R.; Yool, A. and Watson, A. (2007). Marine geochemical data assimilation in an efficient Earth System Model of global biogeochemical cycling. Biogeosciences 4, 87–104.\n\n\n\nSarmiento, J. L. and Toggweiler, J. R. (1984). A new model for the role of the oceans in determining atmospheric P CO2. Nature 308, 621–624.\n\n\n\nSarmiento, J. L. and Gruber, N. (2006). Ocean biogeochemical dynamics (Princeton University Press, Princeton). OCLC: ocm60651167.\n\n\n\nToggweiler, J. R. and Sarmiento, J. L. (1985). Glacial to Interglacial Changes in Atmospheric Carbon Dioxide: The Critical Role of Ocean Surface Water in High Latitudes. In: The Carbon cycle and atmospheric CO2: Natural variations Archean to present., Vol. 1 (Wiley); pp. 163–184.\n\n\n\nWanninkhof, R. (1992). Relationship Between Wind Speed and Gas Exchange Over the Ocean. Journal of Geophysical Research 97, 7373–7382.\n\n\n\nWatson, A. J. (1995). Are upwelling zones sources or sinks of CO2? In: Upwelling in the ocean: Modern processes and ancient records, edited by Summerhayes, C. (Wiley); pp. 321–336.\n\n\n\nZhang, J.; Quay, P. and Wilbur, D. (1995). Carbon isotope fractionation during gas-water exchange and dissolution of CO2. Geochimica et Cosmochimica Acta 59, 107–114.\n\n\n\n","category":"page"},{"location":"PALEOocean_Domains/#PALEOocean-Domains,-fluxes,-and-standard-Variables","page":"PALEOocean Domains, fluxes, and standard Variables","title":"PALEOocean Domains, fluxes, and standard Variables","text":"","category":"section"},{"location":"PALEOocean_Domains/","page":"PALEOocean Domains, fluxes, and standard Variables","title":"PALEOocean Domains, fluxes, and standard Variables","text":"(Image: Domains image)","category":"page"},{"location":"PALEOocean_Domains/#Figure-1","page":"PALEOocean Domains, fluxes, and standard Variables","title":"Figure 1","text":"","category":"section"},{"location":"PALEOocean_Domains/","page":"PALEOocean Domains, fluxes, and standard Variables","title":"PALEOocean Domains, fluxes, and standard Variables","text":"Ocean Domains, subDomains, and fluxes. Compare to full Earth system Domains https://paleotoolkit.github.io/PALEOcopse.jl/dev/COPSE_Domains","category":"page"},{"location":"PALEOocean_Domains/#Domains","page":"PALEOocean Domains, fluxes, and standard Variables","title":"Domains","text":"","category":"section"},{"location":"PALEOocean_Domains/","page":"PALEOocean Domains, fluxes, and standard Variables","title":"PALEOocean Domains, fluxes, and standard Variables","text":"The standard Domain configuration for an atmosphere-ocean model is shown in Figure 1.","category":"page"},{"location":"PALEOocean_Domains/","page":"PALEOocean Domains, fluxes, and standard Variables","title":"PALEOocean Domains, fluxes, and standard Variables","text":"global This is used for model-wide quantities, typically global budgets and global forcings\natmosphere A scalar (0-D) Domain with atmospheric variables and Reactions\nocean The ocean Domain represents a 3-D ocean as a vector of cells, with geometry and internal transport defined by an OceanTransport Reaction. \noceansurface, oceanfloor oceansurface and oceanfloor represent 2-D boundaries as a vector of cells, with geometry defined by the OceanTransport Reaction. There is a 1-to-1 correspondence between the cells in the 2-D oceansurface Domain, the adjacent ocean surface cells defined by the ocean.oceansurface subdomain. Similarly, there is a 1-to-1 correspondence between the cells in the 2-D oceanfloor Domain, the adjacent ocean floor cells defined by the ocean.oceanfloor subdomain.","category":"page"},{"location":"PALEOocean_Domains/#Fluxes","page":"PALEOocean Domains, fluxes, and standard Variables","title":"Fluxes","text":"","category":"section"},{"location":"PALEOocean_Domains/","page":"PALEOocean Domains, fluxes, and standard Variables","title":"PALEOocean Domains, fluxes, and standard Variables","text":"Flux Domains are used to hold exchange fluxes in Variables defined by FluxTarget Reactions, see https://paleotoolkit.github.io/PALEOboxes.jl/stable/DesignOverview/#Coupling-Spatial-Domains","category":"page"},{"location":"PALEOocean_Domains/","page":"PALEOocean Domains, fluxes, and standard Variables","title":"PALEOocean Domains, fluxes, and standard Variables","text":"fluxAtmtoOceansurface Air-sea exchange fluxes are defined in the 2-D fluxAtmtoOceansurface Domain, which contains cells with a 1-to-1 correspondence to the oceansurface Domain.\nfluxOceanfloor Particulate fluxes from ocean to oceanfloor, and solute exchange fluxes between ocean and oceanfloor, are defined in the 2-D fluxOceanfloor Domain. This contains cells with a 1-to-1 correspondence to cells in the oceanfloor Domain.\nfluxOceanBurial Ocean burial fluxes are defined in the 2-D fluxOceanburial Domain. This contains cells with a 1-to-1 correspondence to cells in the oceanfloor Domain.","category":"page"},{"location":"PALEOocean_Domains/#Standard-Variables","page":"PALEOocean Domains, fluxes, and standard Variables","title":"Standard Variables","text":"","category":"section"},{"location":"PALEOocean_Domains/","page":"PALEOocean Domains, fluxes, and standard Variables","title":"PALEOocean Domains, fluxes, and standard Variables","text":"(see Skeleton ocean-atmosphere configuration)","category":"page"},{"location":"PALEOocean_Domains/","page":"PALEOocean Domains, fluxes, and standard Variables","title":"PALEOocean Domains, fluxes, and standard Variables","text":"julia> include(\"PALEO_examples_oceanskeleton.jl\")","category":"page"},{"location":"PALEOocean_Domains/","page":"PALEOocean Domains, fluxes, and standard Variables","title":"PALEOocean Domains, fluxes, and standard Variables","text":"include(joinpath(ENV[\"PALEO_EXAMPLES\"], \"skeleton_configuration/PALEO_examples_oceanskeleton.jl\")) # hide","category":"page"},{"location":"PALEOocean_Domains/","page":"PALEOocean Domains, fluxes, and standard Variables","title":"PALEOocean Domains, fluxes, and standard Variables","text":"show(PB.show_variables(model); allrows=true, allcols=true, eltypes=false, show_row_number=false)","category":"page"},{"location":"PALEOocean_Domains/","page":"PALEOocean Domains, fluxes, and standard Variables","title":"PALEOocean Domains, fluxes, and standard Variables","text":"ocean, oceansurface, and oceanfloor Variables are standard grid variables, provided by the ocean transport Reaction (a ReactionOceanTransport3box in this case).","category":"page"},{"location":"PALEOocean_Domains/","page":"PALEOocean Domains, fluxes, and standard Variables","title":"PALEOocean Domains, fluxes, and standard Variables","text":"Flux target Variables to accumulate exchange fluxes are provided by ReactionFluxTarget Reactions, the illustrative configuration here defines fluxes for a C, O, P model with atmospheric state variables CO2, O2, and ocean state variables including DIC, TAlk, O2 and P.","category":"page"},{"location":"collated_examples/ocean3box/README/#3-Box-Ocean-Examples","page":"3 Box Ocean Examples","title":"3 Box Ocean Examples","text":"","category":"section"},{"location":"collated_examples/ocean3box/README/","page":"3 Box Ocean Examples","title":"3 Box Ocean Examples","text":"These examples demonstrate the 3-box (Sarmiento and Toggweiler, 1984), (Toggweiler and Sarmiento, 1985) ocean model, standalone and coupled to the COPSE land surface and sediment/crust (as used in (Clarkson et al., 2015)).","category":"page"},{"location":"collated_examples/ocean3box/README/#Abiotic-CO2/DIC-only-atmosphere-ocean","page":"3 Box Ocean Examples","title":"Abiotic CO2/DIC only atmosphere-ocean","text":"","category":"section"},{"location":"collated_examples/ocean3box/README/","page":"3 Box Ocean Examples","title":"3 Box Ocean Examples","text":"julia> include(\"PALEO_examples_oaonly_abiotic.jl\")","category":"page"},{"location":"collated_examples/ocean3box/README/","page":"3 Box Ocean Examples","title":"3 Box Ocean Examples","text":"Abiotic atmosphere-ocean with atmosphere CO2, ocean DIC, TAlk. Test case cf Sarmiento & Toggweiler (2007) book, Fig 10.4, p436-7","category":"page"},{"location":"collated_examples/ocean3box/README/","page":"3 Box Ocean Examples","title":"3 Box Ocean Examples","text":"Commented-out options in file to set k_piston to show effect of default/fast/slow air-sea exchange rates","category":"page"},{"location":"collated_examples/ocean3box/README/#Biotic-atmosphere-ocean-(no-weathering-or-burial)","page":"3 Box Ocean Examples","title":"Biotic atmosphere-ocean (no weathering or burial)","text":"","category":"section"},{"location":"collated_examples/ocean3box/README/","page":"3 Box Ocean Examples","title":"3 Box Ocean Examples","text":"julia> include(\"PALEO_examples_oaonly.jl\")","category":"page"},{"location":"collated_examples/ocean3box/README/","page":"3 Box Ocean Examples","title":"3 Box Ocean Examples","text":"Biotic atmosphere-ocean with atmosphere O2, CO2, ocean P, O2, SO4/H2S, CH4, DIC, TAlk (no weathering or burial).","category":"page"},{"location":"collated_examples/ocean3box/README/","page":"3 Box Ocean Examples","title":"3 Box Ocean Examples","text":"Use in conjunction with expt='killbio' (disables production at t=0 yr) to demonstrate effect of biological pump.","category":"page"},{"location":"collated_examples/ocean3box/README/#Open-atmosphere-ocean-with-silicate/carbonate-weathering-and-burial","page":"3 Box Ocean Examples","title":"Open atmosphere-ocean with silicate/carbonate weathering and burial","text":"","category":"section"},{"location":"collated_examples/ocean3box/README/","page":"3 Box Ocean Examples","title":"3 Box Ocean Examples","text":"julia> include(\"PALEO_examples_oaopencarb.jl\")","category":"page"},{"location":"collated_examples/ocean3box/README/","page":"3 Box Ocean Examples","title":"3 Box Ocean Examples","text":"Biotic atmosphere-ocean with atmosphere O2, CO2, ocean P, O2, SO4/H2S, CH4, DIC, TAlk","category":"page"},{"location":"collated_examples/ocean3box/README/","page":"3 Box Ocean Examples","title":"3 Box Ocean Examples","text":"Open atm-ocean carbonate system, with carbonate/silicate weathering input, degassing input, and carbonate burial output","category":"page"},{"location":"collated_examples/ocean3box/README/","page":"3 Box Ocean Examples","title":"3 Box Ocean Examples","text":"Closed ocean organic carbon, sulphur systems (no burial)","category":"page"},{"location":"collated_examples/mitgcm/README/#MITgcm-transport-matrix-ocean-only-examples","page":"MITgcm transport matrix ocean-only examples","title":"MITgcm transport matrix ocean-only examples","text":"","category":"section"},{"location":"collated_examples/mitgcm/README/","page":"MITgcm transport matrix ocean-only examples","title":"MITgcm transport matrix ocean-only examples","text":"GCM ocean transport test cases using transport matrices in format defined by (Khatiwala, 2007)","category":"page"},{"location":"collated_examples/mitgcm/README/","page":"MITgcm transport matrix ocean-only examples","title":"MITgcm transport matrix ocean-only examples","text":"Examples require a 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/. The TMMDir key in examples\\LocalPreferences.toml should then be set to the folder location on the local machine.","category":"page"},{"location":"collated_examples/mitgcm/README/","page":"MITgcm transport matrix ocean-only examples","title":"MITgcm transport matrix ocean-only examples","text":"Default configurations are set to run for ~10 model yr, single core, single fixed timestep. See comments in .jl files to change run time and enable threading and split-timestep solver (with fast timestep for biogeochemistry and vertical transport). ","category":"page"},{"location":"collated_examples/mitgcm/README/","page":"MITgcm transport matrix ocean-only examples","title":"MITgcm transport matrix ocean-only examples","text":"Approximate model CPU times below are for a single laptop core (a CPU i5-6300U from ~2015).","category":"page"},{"location":"collated_examples/mitgcm/README/#2.8-degree-O2-only-abiotic","page":"MITgcm transport matrix ocean-only examples","title":"2.8 degree O2 only abiotic","text":"","category":"section"},{"location":"collated_examples/mitgcm/README/","page":"MITgcm transport matrix ocean-only examples","title":"MITgcm transport matrix ocean-only examples","text":"Minimal test case for ocean transport and air-sea exchange.","category":"page"},{"location":"collated_examples/mitgcm/README/","page":"MITgcm transport matrix ocean-only examples","title":"MITgcm transport matrix ocean-only examples","text":"Tracers: atmosphere O2, ocean O2","category":"page"},{"location":"collated_examples/mitgcm/README/","page":"MITgcm transport matrix ocean-only examples","title":"MITgcm transport matrix ocean-only examples","text":"julia> include(\"MITgcm_2deg8_abiotic.jl\")","category":"page"},{"location":"collated_examples/mitgcm/README/","page":"MITgcm transport matrix ocean-only examples","title":"MITgcm transport matrix ocean-only examples","text":"Wallclock time: 10.3 s core-1 (model yr)-1 with default timestep = 86400 s (1 day)","category":"page"},{"location":"collated_examples/mitgcm/README/#2.8-degree-P,-O2","page":"MITgcm transport matrix ocean-only examples","title":"2.8 degree P, O2","text":"","category":"section"},{"location":"collated_examples/mitgcm/README/","page":"MITgcm transport matrix ocean-only examples","title":"MITgcm transport matrix ocean-only examples","text":"Minimal test case for biotic ocean.","category":"page"},{"location":"collated_examples/mitgcm/README/","page":"MITgcm transport matrix ocean-only examples","title":"MITgcm transport matrix ocean-only examples","text":"Tracers: atmosphere O2, ocean O2, P, DOP","category":"page"},{"location":"collated_examples/mitgcm/README/","page":"MITgcm transport matrix ocean-only examples","title":"MITgcm transport matrix ocean-only examples","text":"julia> include(\"MITgcm_2deg8_PO4MMbase.jl\")","category":"page"},{"location":"collated_examples/mitgcm/README/","page":"MITgcm transport matrix ocean-only examples","title":"MITgcm transport matrix ocean-only examples","text":"Wallclock time: 10.0 s core-1 (model yr)-1 with default timestep = 86400 s (1 day)","category":"page"},{"location":"collated_examples/mitgcm/README/#2.8-degree-P,-O2,-S,-DIC/TAlk","page":"MITgcm transport matrix ocean-only examples","title":"2.8 degree P, O2, S, DIC/TAlk","text":"","category":"section"},{"location":"collated_examples/mitgcm/README/","page":"MITgcm transport matrix ocean-only examples","title":"MITgcm transport matrix ocean-only examples","text":"Minimal test case for a biotic ocean with carbonate chemistry, SO4/H2S and CH4.","category":"page"},{"location":"collated_examples/mitgcm/README/","page":"MITgcm transport matrix ocean-only examples","title":"MITgcm transport matrix ocean-only examples","text":"Modern Earth configuration with O2 set to 0.1 PAL with to provide an anoxic ocean test case.","category":"page"},{"location":"collated_examples/mitgcm/README/","page":"MITgcm transport matrix ocean-only examples","title":"MITgcm transport matrix ocean-only examples","text":"Tracers: atmosphere O2, CO2(x2), ocean O2, P, DOC(x2), H2S(x2), SO4(x2), CH4(x2), DIC(x2), TAlk (13 ocean tracers, including d13C and d34S isotopes)","category":"page"},{"location":"collated_examples/mitgcm/README/","page":"MITgcm transport matrix ocean-only examples","title":"MITgcm transport matrix ocean-only examples","text":"julia> include(\"MITgcm_2deg8_PO4MMcarbSCH4.jl\")","category":"page"},{"location":"collated_examples/mitgcm/README/","page":"MITgcm transport matrix ocean-only examples","title":"MITgcm transport matrix ocean-only examples","text":"Wallclock time: 27.2 s core-1 (model yr)-1 with default timestep = 86400 s (1 day)","category":"page"},{"location":"collated_examples/mitgcm/README/","page":"MITgcm transport matrix ocean-only examples","title":"MITgcm transport matrix ocean-only examples","text":"(Image: Surface P)","category":"page"},{"location":"collated_examples/mitgcm/README/#Figure-1","page":"MITgcm transport matrix ocean-only examples","title":"Figure 1","text":"","category":"section"},{"location":"collated_examples/mitgcm/README/","page":"MITgcm transport matrix ocean-only examples","title":"MITgcm transport matrix ocean-only examples","text":"Surface P concentration at 2000yr. Red lines indicate longitudinal sections","category":"page"},{"location":"collated_examples/mitgcm/README/","page":"MITgcm transport matrix ocean-only examples","title":"MITgcm transport matrix ocean-only examples","text":"(Image: H2S sections 2) (Image: H2S sections 1)","category":"page"},{"location":"collated_examples/mitgcm/README/#Figure-2","page":"MITgcm transport matrix ocean-only examples","title":"Figure 2","text":"","category":"section"},{"location":"collated_examples/mitgcm/README/","page":"MITgcm transport matrix ocean-only examples","title":"MITgcm transport matrix ocean-only examples","text":"H2S concentration at 2000yr, sections at longitudes corresponding to red lines in Figure 1","category":"page"},{"location":"collated_examples/shelf1D/README/#1D-shelf-sea-examples-and-test-cases","page":"1D shelf sea examples and test cases","title":"1D shelf sea examples and test cases","text":"","category":"section"},{"location":"collated_examples/shelf1D/README/#Installation-and-configuration","page":"1D shelf sea examples and test cases","title":"Installation and configuration","text":"","category":"section"},{"location":"collated_examples/shelf1D/README/","page":"1D shelf sea examples and test cases","title":"1D shelf sea examples and test cases","text":"These examples require netcdf files defining an annual cycle of physical variables: ","category":"page"},{"location":"collated_examples/shelf1D/README/","page":"1D shelf sea examples and test cases","title":"1D shelf sea examples and test cases","text":"water column eddy diffusivity Kz, temperature, density\nsurface windspeed","category":"page"},{"location":"collated_examples/shelf1D/README/","page":"1D shelf sea examples and test cases","title":"1D shelf sea examples and test cases","text":"The example configurations assume a zip file (available from https://github.com/PALEOtoolkit/PALEOocean.jl/releases) with an illustrative 80m deep seasonally-stratifying shelf (50N, Celtic sea) derived from the S2P3 model has been unpacked to subfolder S2P3_transport_20240614","category":"page"},{"location":"collated_examples/shelf1D/README/","page":"1D shelf sea examples and test cases","title":"1D shelf sea examples and test cases","text":"(this is collated output from the Windows 'Physics Biology Model' (s2p3.exe), http://pcwww.liv.ac.uk/~jons/model.htm see 'Introduction to the Physical and Biological Oceanography of Shelf Seas', Simpson & Sharples (2012), CUP)","category":"page"},{"location":"collated_examples/shelf1D/README/#1D-shelf-examples","page":"1D shelf sea examples and test cases","title":"1D shelf examples","text":"","category":"section"},{"location":"collated_examples/shelf1D/README/#O2-and-passive-tracer-test-case","page":"1D shelf sea examples and test cases","title":"O2 and passive tracer test case","text":"","category":"section"},{"location":"collated_examples/shelf1D/README/","page":"1D shelf sea examples and test cases","title":"1D shelf sea examples and test cases","text":"julia> include(\"PALEO_examples_shelf1D_O2_only.jl\")","category":"page"},{"location":"collated_examples/shelf1D/README/","page":"1D shelf sea examples and test cases","title":"1D shelf sea examples and test cases","text":"Test case demonstrating O2 air-sea exchange, and mixing of fast and slow sinking passive tracers.","category":"page"},{"location":"collated_examples/shelf1D/README/#Minimal-phytoplankton-P,-O2","page":"1D shelf sea examples and test cases","title":"Minimal phytoplankton P, O2","text":"","category":"section"},{"location":"collated_examples/shelf1D/README/","page":"1D shelf sea examples and test cases","title":"1D shelf sea examples and test cases","text":"julia> include(\"PALEO_examples_shelf1D_P_O2.jl\")","category":"page"},{"location":"collated_examples/shelf1D/README/","page":"1D shelf sea examples and test cases","title":"1D shelf sea examples and test cases","text":"Minimal single-nutrient (parameterized as phosphorus) and light-limited phytoplankton population.","category":"page"},{"location":"collated_examples/shelf1D/README/#Sulphur-and-carbonate-system","page":"1D shelf sea examples and test cases","title":"Sulphur and carbonate system","text":"","category":"section"},{"location":"collated_examples/shelf1D/README/","page":"1D shelf sea examples and test cases","title":"1D shelf sea examples and test cases","text":"julia> include(\"PALEO_examples_shelf1D_P_O2_S_CH4_carb.jl\")","category":"page"},{"location":"collated_examples/shelf1D/README/","page":"1D shelf sea examples and test cases","title":"1D shelf sea examples and test cases","text":"Oxygenic and anoxygenic phytoplankton populations, with sulphur + methane and marine carbonate system.","category":"page"},{"location":"collated_examples/shelf1D/README/#1D-shelf-sediment-examples","page":"1D shelf sea examples and test cases","title":"1D shelf + sediment examples","text":"","category":"section"},{"location":"collated_examples/shelf1D/README/#Minimal-phytoplankton-water-column-sediment","page":"1D shelf sea examples and test cases","title":"Minimal phytoplankton water-column sediment","text":"","category":"section"},{"location":"collated_examples/shelf1D/README/","page":"1D shelf sea examples and test cases","title":"1D shelf sea examples and test cases","text":"julia> include(\"PALEO_examples_shelf1Dsed.jl\")","category":"page"},{"location":"collated_examples/shelf1D/README/","page":"1D shelf sea examples and test cases","title":"1D shelf sea examples and test cases","text":"Coupled water-column - sediment configuration, with single phytoplankton population, sulphur + methane.","category":"page"},{"location":"collated_examples/PTBClarkson2014/README/#PTB-land-atmosphere-ocean-model-(Clarkson-2015)","page":"PTB land-atmosphere-ocean model (Clarkson 2015)","title":"PTB land-atmosphere-ocean model (Clarkson 2015)","text":"","category":"section"},{"location":"collated_examples/PTBClarkson2014/README/","page":"PTB land-atmosphere-ocean model (Clarkson 2015)","title":"PTB land-atmosphere-ocean model (Clarkson 2015)","text":"3-box (Sarmiento and Toggweiler, 1984), (Toggweiler and Sarmiento, 1985) ocean model, coupled to the COPSE land surface and sediment/crust.","category":"page"},{"location":"collated_examples/PTBClarkson2014/README/","page":"PTB land-atmosphere-ocean model (Clarkson 2015)","title":"PTB land-atmosphere-ocean model (Clarkson 2015)","text":"Combination of forcings are as used in (Clarkson et al., 2015). See paper SI for model description.","category":"page"},{"location":"collated_examples/PTBClarkson2014/README/","page":"PTB land-atmosphere-ocean model (Clarkson 2015)","title":"PTB land-atmosphere-ocean model (Clarkson 2015)","text":"NB: this is an untested PALEO configuration intended to reproduce the Matlab code from the original paper.","category":"page"},{"location":"collated_examples/PTBClarkson2014/README/","page":"PTB land-atmosphere-ocean model (Clarkson 2015)","title":"PTB land-atmosphere-ocean model (Clarkson 2015)","text":"julia> include(\"PALEO_examples_PTB3box.jl\")","category":"page"},{"location":"#PALEOocean.jl-documentation","page":"PALEOocean.jl documentation","title":"PALEOocean.jl documentation","text":"","category":"section"},{"location":"#Installation-and-running-the-examples","page":"PALEOocean.jl documentation","title":"Installation and running the examples","text":"","category":"section"},{"location":"#Installation","page":"PALEOocean.jl documentation","title":"Installation","text":"","category":"section"},{"location":"","page":"PALEOocean.jl documentation","title":"PALEOocean.jl documentation","text":"NB: requires Julia 1.6 or later. To check the Julia version:","category":"page"},{"location":"","page":"PALEOocean.jl documentation","title":"PALEOocean.jl documentation","text":"julia> versioninfo()","category":"page"},{"location":"","page":"PALEOocean.jl documentation","title":"PALEOocean.jl documentation","text":"Clone this github repository to local directory PALEOocean: from a linux bash prompt or a Windows terminal,","category":"page"},{"location":"","page":"PALEOocean.jl documentation","title":"PALEOocean.jl documentation","text":"$ git clone https://github.com/PALEOtoolkit/PALEOocean.jl.git PALEOcopse","category":"page"},{"location":"","page":"PALEOocean.jl documentation","title":"PALEOocean.jl documentation","text":"Start julia and navigate to the PALEOocean/examples folder, and run setup.jl to configure the PALEOocean/examples Julia environment to use the local (downloaded) version of the PALEOocean package:","category":"page"},{"location":"","page":"PALEOocean.jl documentation","title":"PALEOocean.jl documentation","text":"julia> cd(\"PALEOocean/examples\")\njulia> include(\"setup.jl\") # use the local version of PALEOocean packages to allow local modifications","category":"page"},{"location":"#Running-a-minimal-transport-example","page":"PALEOocean.jl documentation","title":"Running a minimal transport example","text":"","category":"section"},{"location":"","page":"PALEOocean.jl documentation","title":"PALEOocean.jl documentation","text":"Start julia and navigate to the PALEOocean folder, then:","category":"page"},{"location":"","page":"PALEOocean.jl documentation","title":"PALEOocean.jl documentation","text":"julia> cd(\"examples/transport_examples\")\njulia> import Pkg\njulia> Pkg.activate(\"..\") # use the PALEOocean/examples environment\n\njulia> include(\"PALEO_examples_transport_advect.jl\")","category":"page"},{"location":"#Using-PALEOocean-Reactions-from-other-models","page":"PALEOocean.jl documentation","title":"Using PALEOocean Reactions from other models","text":"","category":"section"},{"location":"","page":"PALEOocean.jl documentation","title":"PALEOocean.jl documentation","text":"The PALEO Reactions comprising the PALEOocean models are available when the registered PALEOocean package is loaded (without downloading the repository), ie","category":"page"},{"location":"","page":"PALEOocean.jl documentation","title":"PALEOocean.jl documentation","text":"julia> Pkg.add(\"PALEOocean\")\njulia> import PALEOocean","category":"page"}]
}