From d61f37687e8916e4356c48a1628293ef65054f6b Mon Sep 17 00:00:00 2001 From: "Documenter.jl" Date: Fri, 14 Jun 2024 12:49:03 +0000 Subject: [PATCH] build based on 9081bdd --- dev/.documenter-siteinfo.json | 2 +- dev/PALEOocean_Reactions/index.html | 10 +++++----- dev/PALEOocean_functions/index.html | 8 ++++---- .../transport_examples/README/index.html | 2 +- dev/objects.inv | Bin 2002 -> 2002 bytes 5 files changed, 11 insertions(+), 11 deletions(-) diff --git a/dev/.documenter-siteinfo.json b/dev/.documenter-siteinfo.json index ca08bff..33c5872 100644 --- a/dev/.documenter-siteinfo.json +++ b/dev/.documenter-siteinfo.json @@ -1 +1 @@ -{"documenter":{"julia_version":"1.6.7","generation_timestamp":"2024-06-14T12:48:14","documenter_version":"1.4.1"}} \ No newline at end of file +{"documenter":{"julia_version":"1.6.7","generation_timestamp":"2024-06-14T12:48:58","documenter_version":"1.4.1"}} \ No newline at end of file diff --git a/dev/PALEOocean_Reactions/index.html b/dev/PALEOocean_Reactions/index.html index 25f8651..56323ec 100644 --- a/dev/PALEOocean_Reactions/index.html +++ b/dev/PALEOocean_Reactions/index.html @@ -1,5 +1,5 @@ -PALEOocean Reactions · PALEOocean Documentation

PALEOocean Reactions

Ocean geometry and circulation transport

PALEOocean.Ocean.OceanNoTransport.ReactionOceanNoTransportType
ReactionOceanNoTransport

N ocean boxes (default N=1 ie a single 0-D box), each with a surface and floor, no transport.

Parameters

  • area[Vector{Float64}]=[1.0] (m^2), default_value=[1.0], description="surface / floor area (per box)"
  • depth[Vector{Float64}]=[1.0] (m), default_value=[1.0], description="depth (per box)"

Methods and Variables

  • do_setup_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)"
    • pressure (dbar), VT_ReactProperty, description="Ocean pressure"
    • Afloor –> oceanfloor.Afloor (m^2), VT_ReactProperty, description="horizontal area of seafloor at base of box"
    • Afloor_total –> oceanfloor.Afloor_total (m^2), VT_ReactProperty, description="total area of seafloor"
    • zfloor –> oceanfloor.zfloor (m), VT_ReactProperty, description="depth of ocean floor (m, -ve)"
    • Asurf –> oceansurface.Asurf (m^2), VT_ReactProperty, description="horizontal area of oceansurface"
source
PALEOocean.Ocean.OceanTransport3box.ReactionOceanTransport3boxType
ReactionOceanTransport3box

3-box (Sarmiento and Toggweiler, 1984), (Toggweiler and Sarmiento, 1985) ocean model.

---------------------------------------
+PALEOocean Reactions · PALEOocean Documentation

PALEOocean Reactions

Ocean geometry and circulation transport

PALEOocean.Ocean.OceanNoTransport.ReactionOceanNoTransportType
ReactionOceanNoTransport

N ocean boxes (default N=1 ie a single 0-D box), each with a surface and floor, no transport.

Parameters

  • area[Vector{Float64}]=[1.0] (m^2), default_value=[1.0], description="surface / floor area (per box)"
  • depth[Vector{Float64}]=[1.0] (m), default_value=[1.0], description="depth (per box)"

Methods and Variables

  • do_setup_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)"
    • pressure (dbar), VT_ReactProperty, description="Ocean pressure"
    • Afloor –> oceanfloor.Afloor (m^2), VT_ReactProperty, description="horizontal area of seafloor at base of box"
    • Afloor_total –> oceanfloor.Afloor_total (m^2), VT_ReactProperty, description="total area of seafloor"
    • zfloor –> oceanfloor.zfloor (m), VT_ReactProperty, description="depth of ocean floor (m, -ve)"
    • Asurf –> oceansurface.Asurf (m^2), VT_ReactProperty, description="horizontal area of oceansurface"
source
PALEOocean.Ocean.OceanTransport3box.ReactionOceanTransport3boxType
ReactionOceanTransport3box

3-box (Sarmiento and Toggweiler, 1984), (Toggweiler and Sarmiento, 1985) ocean model.

---------------------------------------
 |  1 (s)                 | 2(h)        |
 |                    -->--->-          |
 |-------------------|----|  |          |   
@@ -9,7 +9,7 @@
 |  3 (d)             -<--<--      \|/  |
 |                  circT          fhd  |
 |                                      |
-----------------------------------------

Parameters

  • circT[Float64]=2.0e7 (m^3 s^-1), default_value=2.0e7, description="overturning circulation"
  • circfhd[Float64]=6.0e7 (m^3 s^-1), default_value=6.0e7, description="high latitude <-> deep exchange rate"
  • temp[Vector{Float64}]=[21.5, 2.5, 2.5] (degrees C), default_value=[21.5, 2.5, 2.5], description="ocean temperature"
  • temp_trackglobal[Bool]=false, default_value=false, description="track global temperature (apply offset of global temp -15C"

Methods and Variables for default Parameters

  • do_setup_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)"
    • pressure (dbar), VT_ReactProperty, description="Ocean pressure"
    • Afloor –> oceanfloor.Afloor (m^2), VT_ReactProperty, description="horizontal area of seafloor at base of box"
    • Afloor_total –> oceanfloor.Afloor_total (m^2), VT_ReactProperty, description="total area of seafloor"
    • zfloor –> oceanfloor.zfloor (m), VT_ReactProperty, description="depth of ocean floor (m, -ve)"
    • Asurf –> oceansurface.Asurf (m^2), VT_ReactProperty, description="horizontal area of oceansurface"
    • sal (psu), VT_ReactProperty, description="Ocean salinity"
    • rho (kg m^-3), VT_ReactProperty, description="physical ocean density"
    • open_area_fraction –> oceansurface.open_area_fraction (), VT_ReactProperty, description="fraction of area open to atmosphere"
  • do_temperature

    • [TEMP] –> global.TEMP (K), VT_ReactDependency, description="global mean temperature"
    • temp (Kelvin), VT_ReactProperty, description="Ocean temperature"
source
PALEOocean.Ocean.OceanTransport6box.ReactionOceanTransport6boxType
ReactionOceanTransport6box

4+2-box ocean model from (Daines and Lenton, 2016) This is based on:

There are two main ingredients here:

  • An open-ocean 'intermediate/thermocline' box(i) from (Hotinski et al., 2000), coupled to the low-latitude surface box via an Ekman pumping term and to high latitude box (h) via an overturning circulation term. This is a more realistic representation of the open ocean than the 3-box (Sarmiento and Toggweiler, 1984), (Toggweiler and Sarmiento, 1985) model.

  • A two-box shelf/slope (boxes r, rc), which can be configured as

    • an upwelling region (k_slopetype='OMZ'), cf Canfield (2006) with upwelling from the intermediate/thermocline box
    • a low-latitude shelf (k_slopetype='shelf') with exchange terms to low-latitude surface (s) and thermocline (i) boxes

    See Oxygen oases\Box Model 20150922\HotinskiCalc5Box.m, HotinskiConstants5Box.m, HotinskiCalcCirc6.m

         --------------------------------------------------
    +----------------------------------------

    Parameters

    • circT[Float64]=2.0e7 (m^3 s^-1), default_value=2.0e7, description="overturning circulation"
    • circfhd[Float64]=6.0e7 (m^3 s^-1), default_value=6.0e7, description="high latitude <-> deep exchange rate"
    • temp[Vector{Float64}]=[21.5, 2.5, 2.5] (degrees C), default_value=[21.5, 2.5, 2.5], description="ocean temperature"
    • temp_trackglobal[Bool]=false, default_value=false, description="track global temperature (apply offset of global temp -15C"

    Methods and Variables for default Parameters

    • do_setup_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)"
      • pressure (dbar), VT_ReactProperty, description="Ocean pressure"
      • Afloor –> oceanfloor.Afloor (m^2), VT_ReactProperty, description="horizontal area of seafloor at base of box"
      • Afloor_total –> oceanfloor.Afloor_total (m^2), VT_ReactProperty, description="total area of seafloor"
      • zfloor –> oceanfloor.zfloor (m), VT_ReactProperty, description="depth of ocean floor (m, -ve)"
      • Asurf –> oceansurface.Asurf (m^2), VT_ReactProperty, description="horizontal area of oceansurface"
      • sal (psu), VT_ReactProperty, description="Ocean salinity"
      • rho (kg m^-3), VT_ReactProperty, description="physical ocean density"
      • open_area_fraction –> oceansurface.open_area_fraction (), VT_ReactProperty, description="fraction of area open to atmosphere"
    • do_temperature

      • [TEMP] –> global.TEMP (K), VT_ReactDependency, description="global mean temperature"
      • temp (Kelvin), VT_ReactProperty, description="Ocean temperature"
source
PALEOocean.Ocean.OceanTransport6box.ReactionOceanTransport6boxType
ReactionOceanTransport6box

4+2-box ocean model from (Daines and Lenton, 2016) This is based on:

There are two main ingredients here:

  • An open-ocean 'intermediate/thermocline' box(i) from (Hotinski et al., 2000), coupled to the low-latitude surface box via an Ekman pumping term and to high latitude box (h) via an overturning circulation term. This is a more realistic representation of the open ocean than the 3-box (Sarmiento and Toggweiler, 1984), (Toggweiler and Sarmiento, 1985) model.

  • A two-box shelf/slope (boxes r, rc), which can be configured as

    • an upwelling region (k_slopetype='OMZ'), cf Canfield (2006) with upwelling from the intermediate/thermocline box
    • a low-latitude shelf (k_slopetype='shelf') with exchange terms to low-latitude surface (s) and thermocline (i) boxes

    See Oxygen oases\Box Model 20150922\HotinskiCalc5Box.m, HotinskiConstants5Box.m, HotinskiCalcCirc6.m

         --------------------------------------------------
         | 5(r)      |  1 (s)                 | 2(h)        |
         |           |                        |             |
         |-----------|------------------------|             |   
    @@ -19,10 +19,10 @@
            |        |------------------------              |
            |           4(d)                                |
            |                                               |
    -        -----------------------------------------------

Parameters

  • slopetype[String]="OMZ", default_value="OMZ", allowed_values=["OMZ", "shelf"], description="type of shelf circulation (boxes r, rc)"
  • circT[Float64]=1.93e7 (m^3 s^-1), default_value=1.93e7, description="overturning circulation (exchange high lat (h) to deep (d) and thermocline (i)"
  • circfhd[Float64]=4.87e7 (m^3 s^-1), default_value=4.87e7, description="high latitude <-> deep exchange rate"
  • circR[Float64]=2.0e7 (m^3 s^-1), default_value=2.0e7, description="upwelling thermocline (i) to slope (rc) to upwell (r) to low lat surface (s)"
  • totalEkman[Float64]=6.0e7 (m^3 s^-1), default_value=6.0e7, description="total wind-driven Ekman pumping"
  • circS[Float64]=1.0e6 (m^3 s^-1), default_value=1.0e6, description="upwell(r) <-> low lat surf box (s) exchange"
  • temp[Vector{Float64}]=[21.5, 2.5, 2.5, 2.5, 21.5, 2.5] (degrees C), default_value=[21.5, 2.5, 2.5, 2.5, 21.5, 2.5], description="ocean temperature"
  • temp_trackglobal[Bool]=false, default_value=false, description="track global temperature (apply offset of global temp -15C"

Methods and Variables for default Parameters

  • do_setup_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)"
    • pressure (dbar), VT_ReactProperty, description="Ocean pressure"
    • Afloor –> oceanfloor.Afloor (m^2), VT_ReactProperty, description="horizontal area of seafloor at base of box"
    • Afloor_total –> oceanfloor.Afloor_total (m^2), VT_ReactProperty, description="total area of seafloor"
    • zfloor –> oceanfloor.zfloor (m), VT_ReactProperty, description="depth of ocean floor (m, -ve)"
    • Asurf –> oceansurface.Asurf (m^2), VT_ReactProperty, description="horizontal area of oceansurface"
    • sal (psu), VT_ReactProperty, description="Ocean salinity"
    • rho (kg m^-3), VT_ReactProperty, description="physical ocean density"
    • open_area_fraction –> oceansurface.open_area_fraction (), VT_ReactProperty, description="fraction of area open to atmosphere"
  • do_temperature

    • [TEMP] –> global.TEMP (K), VT_ReactDependency, description="global mean temperature"
    • temp (Kelvin), VT_ReactProperty, description="Ocean temperature"
source
PALEOocean.Ocean.OceanTransportTMM.ReactionOceanTransportTMMType
ReactionOceanTransportTMM

GCM ocean transport implementation using transport matrices in format defined by (Khatiwala, 2007) Requires download of Samar Khatiwala's TMM files (for MITgcm, UVic models) as described in https://github.com/samarkhatiwala/tmm where TM files are from http://kelvin.earth.ox.ac.uk/spk/Research/TMM/TransportMatrixConfigs/

NB: length(operatorID) must be 2, to define operatorID[1] for explicit and operatorID[2] for implicit matrices.

The base_path parameter sets the top level of the folder structure for the downloaded matrices.

Code based on TMM/tmm/models/petsc3.4/mitgchem/matlab/make_input_files_for_migchem_dic_biotic_model.m

Parameters

  • base_path[String]="$TMMDir$/MITgcm_2.8deg", default_value="$TMMDir$/MITgcm_2.8deg", description="directory containing transport matrices"
  • sal_norm[Bool]=false, default_value=false, description="apply salinity normalisation to transport matrix"
  • use_annualmean[Bool]=false, default_value=false, description="true to read annual mean matrix"
  • num_seasonal[Int64]=12, default_value=12, description="number of seasonal matrices"
  • Aimp_deltat[Int64]=86400 (seconds), default_value=86400, description="timestep to derive upscaling factor for implicit transport matrix"
  • kji_order[Bool]=true, default_value=true, description="true to sort indices into k,j,i order to optimise memory layout"
  • pack_chunk_width[Int64]=4, default_value=4, allowed_values=[0, 2, 4, 8, 16], description="non-zero to enable SIMD packed transport matrix multiply"
  • TMfpsize[Int64]=64 (bits), default_value=64, allowed_values=[32, 64], description="FP size for transport matrix"

Methods and Variables

  • 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)"
    • pressure (dbar), VT_ReactProperty, description="Ocean pressure"
    • Afloor –> oceanfloor.Afloor (m^2), VT_ReactProperty, description="horizontal area of seafloor at base of box"
    • Afloor_total –> oceanfloor.Afloor_total (m^2), VT_ReactProperty, description="total area of seafloor"
    • zfloor –> oceanfloor.zfloor (m), VT_ReactProperty, description="depth of ocean floor (m, -ve)"
    • Asurf –> oceansurface.Asurf (m^2), VT_ReactProperty, description="horizontal area of oceansurface"
source
PALEOocean.Ocean.OceanTransportColumn.ReactionOceanTransportColumnType
ReactionOceanTransportColumn

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)"
  • column_area[Float64]=1.0 (m^2), default_value=1.0, description="column area"

Methods and Variables

METHODS PALEOboxes.DocStrings.Methods(:methods_setup) exception: ErrorException("PALEOocean.Ocean.OceanTransportColumn.ReactionOceanTransportColumn register_methods! not implemented")

METHODS PALEOboxes.DocStrings.Methods(:methods_do) exception: ErrorException("PALEOocean.Ocean.OceanTransportColumn.ReactionOceanTransportColumn register_methods! not implemented")

source

Vertical Transport

PALEOocean.Ocean.VerticalTransport.ReactionLightColumnType
ReactionLightColumn

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.

Parameters

  • background_opacity[Float64]=0.04 (m-1), default_value=0.04, description="background opacity"
source
PALEOocean.Ocean.VerticalTransport.ReactionExportDirectType
ReactionExportDirect

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.

For larger, column-based ocean models use ReactionExportDirectColumn.

Parameters

  • fluxlist[Vector{String}]=["P", "N", "Corg"], default_value=["P", "N", "Corg"], description="names of fluxes to transport"
  • transportocean[Vector{Vector{Float64}}]=Vector{Float64}[], default_value=Vector{Float64}[], description="matrix describing ocean export"
  • transportfloor[Vector{Vector{Float64}}]=Vector{Float64}[], default_value=Vector{Float64}[], description="matrix describing oceanfloor export"
  • conserv_errthresh[Float64]=1.0e-5, default_value=1.0e-5, description="error threshold for conservation check (fraction of input)"
source
PALEOocean.Ocean.VerticalTransport.ReactionExportDirectColumnType
ReactionExportDirectColumn

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"
source
PALEOocean.Ocean.VerticalTransport.ReactionSinkFloatType
ReactionSinkFloat

Vertical particle advection.

Applied to all concentration Variables with non-zero attribute :vertical_movement (m d-1, +ve upwards), using naming convention <name>_conc to identify <name>_sms Deriv Variable to apply to. An optional variable <name>_w may be defined that overrides :vertical_movement to define spatially-variable vertical motion.

Parameters

  • transportfloor[Bool]=true, default_value=true, description="true to provide oceanfloor flux, false to recycle flux into lowest ocean cell"
source

Biological Production

PALEOocean.Ocean.BioProd.ReactionBioProdPrestType
ReactionBioProdPrest

P-limited biological production, configurable to restore P to specified level or to consume fraction of nutrients

Parameters

  • bioprod[Vector{Int64}]=Int64[], default_value=Int64[], allowed_values=[0, 1, 2, 3], description="production type (per cell): 0 - none, 1 - restore to absolute conc, 2 - consume fraction of nutrients supplied, 3 - restore to fraction of ocean mean"
  • bioprodval[Vector{Float64}]=Float64[] (m-3 or none), default_value=Float64[], description="conc or frac corresponding to 'bioprod'"
  • rCorgPO4[Float64]=106.0, default_value=106.0, description="Corg:P Redfield ratio of organic matter produced"
  • rNPO4[Float64]=16.0, default_value=16.0, description="N:P Redfield ratio of organic matter produced"
  • rCcarbCorg[Float64]=0.0, default_value=0.0, description="ratio of Ccarb to Corg produced"
  • trest[Float64]=0.1 (yr), default_value=0.1, description="restoring timescale"
  • CIsotope[external, DataType]=PALEOboxes.ScalarData, default_value=PALEOboxes.ScalarData, allowed_values=Type[PALEOboxes.ScalarData, PALEOboxes.IsotopeLinear], description="disable / enable carbon isotopes and specify isotope type"

Methods and Variables for default Parameters

  • do_bio_prod_Prest
    • volume (m^3), VT_ReactDependency, description="ocean cell volume"
    • volume_total (m^3), VT_ReactDependency, description="ocean total volume"
    • P_conc (mol m^-3), VT_ReactDependency, description="total P concentration"
    • Prod_Corg –> %reaction%Prod_Corg (mol yr-1), VT_ReactProperty, description="organic carbon production rate"
    • Prod_Ccarb –> %reaction%Prod_Ccarb (mol yr-1), VT_ReactProperty, description="carbonate production rate"
    • P_sms (mol yr-1), VT_ReactContributor, description="total dissolved P source minus sink"
    • [O2_sms] (mol yr-1), VT_ReactContributor, description="O2 source minus sink"
    • [TAlk_sms] (mol yr-1), VT_ReactContributor, description="TAlk source minus sink"
    • [DIC_sms] (mol yr-1), VT_ReactContributor, description="DIC source minus sink"
    • [enable_bioprod] –> global.enable_bioprod (), VT_ReactDependency, description="optional forcing, =0.0 to disable, !=0.0 to enable"
    • [PELCALC] –> global.PELCALC (), VT_ReactDependency, description="optional forcing for pelagic calcification"
    • [prod_P] (mol yr-1), VT_ReactContributor, description="flux P"
    • [prod_N] (mol yr-1), VT_ReactContributor, description="flux N"
    • [prod_Corg] (mol yr-1), VT_ReactContributor, description="flux Corg"
    • [prod_Ccarb] (mol yr-1), VT_ReactContributor, description="flux Ccarb"
  • totals
    • Prod_Corg –> %reaction%Prod_Corg (mol yr-1), VT_ReactDependency, description="organic carbon production rate"
    • Prod_Ccarb –> %reaction%Prod_Ccarb (mol yr-1), VT_ReactDependency, description="carbonate production rate"
    • Prod_Corg_total (mol yr-1), VT_ReactProperty, description="total organic carbon production rate"
    • Prod_Ccarb_total (mol yr-1), VT_ReactProperty, description="total carbonate production rate"
source
PALEOocean.Ocean.BioProd.ReactionBioProdMMPopType
ReactionBioProdMMPop

Ocean phytoplankton biological production.

Configurable to represent oxygenic photosynthesizers with P, N limitation, nitrogen fixers, anoxygenic photosynthesis limited by electron donor availability.

Export production or production is represented as a combination of limiting factors:

population_size x nutrient_limitation x light_limitation x temperature_limitation x electron_donor_limitation

population_size may be either implicit (either a constant or ∝ nutrient concentration, generating GENIE-like parameterisations of export production), or represented explicitly as a state variable (in which case production is accumulated into a state variable phytP_conc, and k_grazeresprate defines a background loss rate that is exported).

Export production is than partitioned into DOM flux (components domprod_P, domprod_N, domprod_Corg) and particulate flux (components partprod_P, partprod_N, partprod_Corg, partprod_Ccarb) fractions according to parameter k_nuDOM.

See (Kriest et al., 2010) for a comparison of models of this type.

Production functional forms

population_size

Set by k_poptype parameter:

  • Constant: k_uPO4 (mol P / m-3 / yr) (represents export production)
  • Nutrient: k_mu*P_conc (mol P / m-3 / yr) (represents export production)
  • Pop : k_mu*phytP_conc (mol P / m-3 / yr) (represents growth of explicit population phtyP_conc)

nutrient_limitation

Set by k_nuttype parameter:

  • PO4MM: P_conc / (P_conc + k_KPO4)
  • PO4NMM: P, N limited phytoplankton export production: cf GENIE 2N2T_PO4MM_NO3, (Fennel, 2005)
  • PO4NMMNfix: P limited nitrogen-fixer export production: cf GENIE 2N2T_PO4MM_NO3, (Fennel, 2005)

light_limitation

Set by k_lightlim parameter:

  • fixed: constant k_Irel
  • 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

Examples

k_poptypek_nuttypek_lightlimk_templimk_edonorReference
ConstantPO4MMlinearConstantH2OP and light limited export production, as used by GENIE (Ridgwell et al., 2007)
PopPO4MMQEEppleyH2OP and light limited phytoplankton population

Parameters

  • rCorgPO4[Float64]=106.0, default_value=106.0, description="Corg:P Redfield ratio of organic matter produced"
  • rNPO4[Float64]=16.0, default_value=16.0, description="N:P Redfield ratio of organic matter produced"
  • rCcarbCorg[Float64]=0.0, default_value=0.0, description="ratio of Ccarb to Corg produced"
  • rCcarbCorg_fixed[Bool]=true, default_value=true, description="Ccarb:Corg rain ratio true for fixed, false for sat. state dependent"
  • k_r0[Float64]=0.044372, default_value=0.044372, description="initial rain-ratio for sat. state dependent rain ratio"
  • k_eta[Float64]=0.8053406, default_value=0.8053406, description="exponent for sat. state dependent rain ratio"
  • nuDOM[Float64]=0.66, default_value=0.66, description="fraction of production to DOM reservoir"
  • depthlimit[Float64]=-200.0 (m), default_value=-200.0, description="depth limit for production"
  • k_poptype[String]="Constant", default_value="Constant", allowed_values=["Constant", "Nutrient", "Pop"], description="population / growth rate model"
  • k_uPO4[Float64]=0.002 (mol P / m-3 / yr), default_value=0.002, description="for k_poptype = 'Constant': max rate, constant ie of form k_O_uPO4 * (light, nut etc)"
  • k_mu[Float64]=NaN (1/yr), default_value=NaN, description="for k_poptype = 'Nutrient', 'Pop': max prod/growth rate (at 0C if templim=='Eppley')"
  • k_grazeresprate[Float64]=NaN (1/yr), default_value=NaN, description="for k_poptype = 'Pop' imposed const loss (mortality) rate"
  • k_templim[String]="Constant", default_value="Constant", allowed_values=["Constant", "Eppley"], description="temperature limitation factor"
  • k_lightlim[String]="linear", default_value="linear", allowed_values=["linear", "MM", "fixed", "QE"], description="Light limitation function"
  • k_Irel[Float64]=1.0, default_value=1.0, description="multiplier for forcing-supplied insolation"
  • k_Ic[Float64]=30.0 (W/m^2), default_value=30.0, description="saturating irradiance for 'MM' case"
  • k_alphaQE[Float64]=7.0 (mgC/mgChl/Wpar m^-2/d-1), default_value=7.0, description="chla-specific initial slope of the photosynthesis-light curve for lightlim='QE'"
  • k_thetaChlC[Float64]=0.03 (mg Chl / mgC), default_value=0.03, description="Chl:Corg ratio for explicit population k_poptype=Pop"
  • k_epsilonChl[Float64]=0.012 (m^2/mg Chl), default_value=0.012, description="chl absorption coeff (for self shielding) for k_poptype='Pop'"
  • k_nuttype[String]="PO4MM", default_value="PO4MM", allowed_values=["PO4MM", "PO4NMM", "PO4NMMNfix"], description="Nutrient limitation / nitrogen fixation function"
  • k_KPO4[Float64]=NaN (mol P m-3 ), default_value=NaN, description="limitation at low [P] MM half-max constant"
  • k_KN[Float64]=0.0 (mol NO3+NH4 m-3), default_value=0.0, description="limitation at low nitrogen"
  • k_prefNH3[Float64]=10.0, default_value=10.0, description="preference for ammonia over nitrate"
  • k_edonor[String]="H2O", default_value="H2O", allowed_values=["H2O", "H2S"], description="electron donor (H2O for oxygenic phototroph"
  • k_KH2S[Float64]=0.001 (mol H2S m-3), default_value=0.001, description="limitation at low [H2S] MM half-max constant"
  • CIsotope[external, DataType]=PALEOboxes.ScalarData, default_value=PALEOboxes.ScalarData, allowed_values=Type[PALEOboxes.ScalarData, PALEOboxes.IsotopeLinear], description="disable / enable carbon isotopes and specify isotope type"

Methods and Variables for default Parameters

  • RateStoich_edonorO2eq
    • edonorO2eq (mol O2eq yr-1), VT_ReactDependency, description="O2eq e- donor consumption (H2O) by oxygenic photosynthesis"
    • [O2_sms] (), VT_ReactContributor, description="generated by RateStoich rate=edonorO2eq"
  • do_bio_prod_MM_pop
    • volume (m^3), VT_ReactDependency, description="ocean cell volume"
    • zupper (m), VT_ReactDependency, description="cell depth (-ve)"
    • open_area_fraction –> oceansurface.open_area_fraction (), VT_ReactDependency, description="fraction of area open to atmosphere"
    • P_conc (mol m^-3), VT_ReactDependency, description="total P concentration"
    • [OmegaCA] (), VT_ReactDependency, description="calcite saturation state"
    • [rate_bioprod] –> global.rate_bioprod (), VT_ReactDependency, description="optional forcing, multiplier for productivity"
    • [PELCALC] –> global.PELCALC (), VT_ReactDependency, description="optional forcing for pelagic calcification"
    • Prod_Corg –> %reaction%Prod_Corg (mol yr-1), VT_ReactProperty, description="organic carbon production rate"
    • Prod_Ccarb –> %reaction%Prod_Ccarb (mol yr-1), VT_ReactProperty, description="carbonate production rate"
    • P_sms (mol yr-1), VT_ReactContributor, description="total dissolved P source minus sink"
    • [TAlk_sms] (mol yr-1), VT_ReactContributor, description="TAlk source minus sink"
    • [DIC_sms] (mol yr-1), VT_ReactContributor, description="DIC source minus sink"
    • [partprod_P] (mol yr-1), VT_ReactContributor, description="flux P"
    • [partprod_N] (mol yr-1), VT_ReactContributor, description="flux N"
    • [partprod_Corg] (mol yr-1), VT_ReactContributor, description="flux Corg"
    • [partprod_Ccarb] (mol yr-1), VT_ReactContributor, description="flux Ccarb"
    • [domprod_P] (mol yr-1), VT_ReactContributor, description="flux P"
    • [domprod_N] (mol yr-1), VT_ReactContributor, description="flux N"
    • [domprod_Corg] (mol yr-1), VT_ReactContributor, description="flux Corg"
    • [domprod_Ccarb] (mol yr-1), VT_ReactContributor, description="flux Ccarb"
    • edonorO2eq (mol O2eq yr-1), VT_ReactProperty, description="O2eq e- donor consumption (H2O) by oxygenic photosynthesis"
    • insol (W m-2), VT_ReactDependency, description="photosynthetic radiative flux"
  • totals
    • Prod_Corg –> %reaction%Prod_Corg (mol yr-1), VT_ReactDependency, description="organic carbon production rate"
    • edonorO2eq (mol O2eq yr-1), VT_ReactDependency, description="O2eq e- donor consumption (H2O) by oxygenic photosynthesis"
    • Prod_Ccarb –> %reaction%Prod_Ccarb (mol yr-1), VT_ReactDependency, description="carbonate production rate"
    • Prod_Corg_total (mol yr-1), VT_ReactProperty, description="total organic carbon production rate"
    • edonorO2eq_total (mol O2eq yr-1), VT_ReactProperty, description="total O2eq e- donor consumption (H2O) by oxygenic photosynthesis"
    • Prod_Ccarb_total (mol yr-1), VT_ReactProperty, description="total carbonate production rate"
source

Ocean surface air-sea flux

PALEOocean.Oceansurface.AirSeaExchange.ReactionAirSeaType
ReactionAirSea(Sc_function, sol_function, frac_function, gas_name)
+        -----------------------------------------------

Parameters

  • slopetype[String]="OMZ", default_value="OMZ", allowed_values=["OMZ", "shelf"], description="type of shelf circulation (boxes r, rc)"
  • circT[Float64]=1.93e7 (m^3 s^-1), default_value=1.93e7, description="overturning circulation (exchange high lat (h) to deep (d) and thermocline (i)"
  • circfhd[Float64]=4.87e7 (m^3 s^-1), default_value=4.87e7, description="high latitude <-> deep exchange rate"
  • circR[Float64]=2.0e7 (m^3 s^-1), default_value=2.0e7, description="upwelling thermocline (i) to slope (rc) to upwell (r) to low lat surface (s)"
  • totalEkman[Float64]=6.0e7 (m^3 s^-1), default_value=6.0e7, description="total wind-driven Ekman pumping"
  • circS[Float64]=1.0e6 (m^3 s^-1), default_value=1.0e6, description="upwell(r) <-> low lat surf box (s) exchange"
  • temp[Vector{Float64}]=[21.5, 2.5, 2.5, 2.5, 21.5, 2.5] (degrees C), default_value=[21.5, 2.5, 2.5, 2.5, 21.5, 2.5], description="ocean temperature"
  • temp_trackglobal[Bool]=false, default_value=false, description="track global temperature (apply offset of global temp -15C"

Methods and Variables for default Parameters

  • do_setup_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)"
    • pressure (dbar), VT_ReactProperty, description="Ocean pressure"
    • Afloor –> oceanfloor.Afloor (m^2), VT_ReactProperty, description="horizontal area of seafloor at base of box"
    • Afloor_total –> oceanfloor.Afloor_total (m^2), VT_ReactProperty, description="total area of seafloor"
    • zfloor –> oceanfloor.zfloor (m), VT_ReactProperty, description="depth of ocean floor (m, -ve)"
    • Asurf –> oceansurface.Asurf (m^2), VT_ReactProperty, description="horizontal area of oceansurface"
    • sal (psu), VT_ReactProperty, description="Ocean salinity"
    • rho (kg m^-3), VT_ReactProperty, description="physical ocean density"
    • open_area_fraction –> oceansurface.open_area_fraction (), VT_ReactProperty, description="fraction of area open to atmosphere"
  • do_temperature

    • [TEMP] –> global.TEMP (K), VT_ReactDependency, description="global mean temperature"
    • temp (Kelvin), VT_ReactProperty, description="Ocean temperature"
source
PALEOocean.Ocean.OceanTransportTMM.ReactionOceanTransportTMMType
ReactionOceanTransportTMM

GCM ocean transport implementation using transport matrices in format defined by (Khatiwala, 2007) Requires download of Samar Khatiwala's TMM files (for MITgcm, UVic models) as described in https://github.com/samarkhatiwala/tmm where TM files are from http://kelvin.earth.ox.ac.uk/spk/Research/TMM/TransportMatrixConfigs/

NB: length(operatorID) must be 2, to define operatorID[1] for explicit and operatorID[2] for implicit matrices.

The base_path parameter sets the top level of the folder structure for the downloaded matrices.

Code based on TMM/tmm/models/petsc3.4/mitgchem/matlab/make_input_files_for_migchem_dic_biotic_model.m

Parameters

  • base_path[String]="$TMMDir$/MITgcm_2.8deg", default_value="$TMMDir$/MITgcm_2.8deg", description="directory containing transport matrices"
  • sal_norm[Bool]=false, default_value=false, description="apply salinity normalisation to transport matrix"
  • use_annualmean[Bool]=false, default_value=false, description="true to read annual mean matrix"
  • num_seasonal[Int64]=12, default_value=12, description="number of seasonal matrices"
  • Aimp_deltat[Int64]=86400 (seconds), default_value=86400, description="timestep to derive upscaling factor for implicit transport matrix"
  • kji_order[Bool]=true, default_value=true, description="true to sort indices into k,j,i order to optimise memory layout"
  • pack_chunk_width[Int64]=4, default_value=4, allowed_values=[0, 2, 4, 8, 16], description="non-zero to enable SIMD packed transport matrix multiply"
  • TMfpsize[Int64]=64 (bits), default_value=64, allowed_values=[32, 64], description="FP size for transport matrix"

Methods and Variables

  • 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)"
    • pressure (dbar), VT_ReactProperty, description="Ocean pressure"
    • Afloor –> oceanfloor.Afloor (m^2), VT_ReactProperty, description="horizontal area of seafloor at base of box"
    • Afloor_total –> oceanfloor.Afloor_total (m^2), VT_ReactProperty, description="total area of seafloor"
    • zfloor –> oceanfloor.zfloor (m), VT_ReactProperty, description="depth of ocean floor (m, -ve)"
    • Asurf –> oceansurface.Asurf (m^2), VT_ReactProperty, description="horizontal area of oceansurface"
source
PALEOocean.Ocean.OceanTransportColumn.ReactionOceanTransportColumnType
ReactionOceanTransportColumn

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)"
  • column_area[Float64]=1.0 (m^2), default_value=1.0, description="column area"

Methods and Variables

METHODS PALEOboxes.DocStrings.Methods(:methods_setup) exception: ErrorException("PALEOocean.Ocean.OceanTransportColumn.ReactionOceanTransportColumn register_methods! not implemented")

METHODS PALEOboxes.DocStrings.Methods(:methods_do) exception: ErrorException("PALEOocean.Ocean.OceanTransportColumn.ReactionOceanTransportColumn register_methods! not implemented")

source

Vertical Transport

PALEOocean.Ocean.VerticalTransport.ReactionLightColumnType
ReactionLightColumn

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.

Parameters

  • background_opacity[Float64]=0.04 (m-1), default_value=0.04, description="background opacity"
source
PALEOocean.Ocean.VerticalTransport.ReactionExportDirectType
ReactionExportDirect

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.

For larger, column-based ocean models use ReactionExportDirectColumn.

Parameters

  • fluxlist[Vector{String}]=["P", "N", "Corg"], default_value=["P", "N", "Corg"], description="names of fluxes to transport"
  • transportocean[Vector{Vector{Float64}}]=Vector{Float64}[], default_value=Vector{Float64}[], description="matrix describing ocean export"
  • transportfloor[Vector{Vector{Float64}}]=Vector{Float64}[], default_value=Vector{Float64}[], description="matrix describing oceanfloor export"
  • conserv_errthresh[Float64]=1.0e-5, default_value=1.0e-5, description="error threshold for conservation check (fraction of input)"
source
PALEOocean.Ocean.VerticalTransport.ReactionExportDirectColumnType
ReactionExportDirectColumn

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"
source
PALEOocean.Ocean.VerticalTransport.ReactionSinkFloatType
ReactionSinkFloat

Vertical particle advection.

Applied to all concentration Variables with non-zero attribute :vertical_movement (m d-1, +ve upwards), using naming convention <name>_conc to identify <name>_sms Deriv Variable to apply to. An optional variable <name>_w may be defined that overrides :vertical_movement to define spatially-variable vertical motion.

Parameters

  • transportfloor[Bool]=true, default_value=true, description="true to provide oceanfloor flux, false to recycle flux into lowest ocean cell"
source

Biological Production

PALEOocean.Ocean.BioProd.ReactionBioProdPrestType
ReactionBioProdPrest

P-limited biological production, configurable to restore P to specified level or to consume fraction of nutrients

Parameters

  • bioprod[Vector{Int64}]=Int64[], default_value=Int64[], allowed_values=[0, 1, 2, 3], description="production type (per cell): 0 - none, 1 - restore to absolute conc, 2 - consume fraction of nutrients supplied, 3 - restore to fraction of ocean mean"
  • bioprodval[Vector{Float64}]=Float64[] (m-3 or none), default_value=Float64[], description="conc or frac corresponding to 'bioprod'"
  • rCorgPO4[Float64]=106.0, default_value=106.0, description="Corg:P Redfield ratio of organic matter produced"
  • rNPO4[Float64]=16.0, default_value=16.0, description="N:P Redfield ratio of organic matter produced"
  • rCcarbCorg[Float64]=0.0, default_value=0.0, description="ratio of Ccarb to Corg produced"
  • trest[Float64]=0.1 (yr), default_value=0.1, description="restoring timescale"
  • CIsotope[external, DataType]=PALEOboxes.ScalarData, default_value=PALEOboxes.ScalarData, allowed_values=Type[PALEOboxes.ScalarData, PALEOboxes.IsotopeLinear], description="disable / enable carbon isotopes and specify isotope type"

Methods and Variables for default Parameters

  • do_bio_prod_Prest
    • volume (m^3), VT_ReactDependency, description="ocean cell volume"
    • volume_total (m^3), VT_ReactDependency, description="ocean total volume"
    • P_conc (mol m^-3), VT_ReactDependency, description="total P concentration"
    • Prod_Corg –> %reaction%Prod_Corg (mol yr-1), VT_ReactProperty, description="organic carbon production rate"
    • Prod_Ccarb –> %reaction%Prod_Ccarb (mol yr-1), VT_ReactProperty, description="carbonate production rate"
    • P_sms (mol yr-1), VT_ReactContributor, description="total dissolved P source minus sink"
    • [O2_sms] (mol yr-1), VT_ReactContributor, description="O2 source minus sink"
    • [TAlk_sms] (mol yr-1), VT_ReactContributor, description="TAlk source minus sink"
    • [DIC_sms] (mol yr-1), VT_ReactContributor, description="DIC source minus sink"
    • [enable_bioprod] –> global.enable_bioprod (), VT_ReactDependency, description="optional forcing, =0.0 to disable, !=0.0 to enable"
    • [PELCALC] –> global.PELCALC (), VT_ReactDependency, description="optional forcing for pelagic calcification"
    • [prod_P] (mol yr-1), VT_ReactContributor, description="flux P"
    • [prod_N] (mol yr-1), VT_ReactContributor, description="flux N"
    • [prod_Corg] (mol yr-1), VT_ReactContributor, description="flux Corg"
    • [prod_Ccarb] (mol yr-1), VT_ReactContributor, description="flux Ccarb"
  • totals
    • Prod_Corg –> %reaction%Prod_Corg (mol yr-1), VT_ReactDependency, description="organic carbon production rate"
    • Prod_Ccarb –> %reaction%Prod_Ccarb (mol yr-1), VT_ReactDependency, description="carbonate production rate"
    • Prod_Corg_total (mol yr-1), VT_ReactProperty, description="total organic carbon production rate"
    • Prod_Ccarb_total (mol yr-1), VT_ReactProperty, description="total carbonate production rate"
source
PALEOocean.Ocean.BioProd.ReactionBioProdMMPopType
ReactionBioProdMMPop

Ocean phytoplankton biological production.

Configurable to represent oxygenic photosynthesizers with P, N limitation, nitrogen fixers, anoxygenic photosynthesis limited by electron donor availability.

Export production or production is represented as a combination of limiting factors:

population_size x nutrient_limitation x light_limitation x temperature_limitation x electron_donor_limitation

population_size may be either implicit (either a constant or ∝ nutrient concentration, generating GENIE-like parameterisations of export production), or represented explicitly as a state variable (in which case production is accumulated into a state variable phytP_conc, and k_grazeresprate defines a background loss rate that is exported).

Export production is than partitioned into DOM flux (components domprod_P, domprod_N, domprod_Corg) and particulate flux (components partprod_P, partprod_N, partprod_Corg, partprod_Ccarb) fractions according to parameter k_nuDOM.

See (Kriest et al., 2010) for a comparison of models of this type.

Production functional forms

population_size

Set by k_poptype parameter:

  • Constant: k_uPO4 (mol P / m-3 / yr) (represents export production)
  • Nutrient: k_mu*P_conc (mol P / m-3 / yr) (represents export production)
  • Pop : k_mu*phytP_conc (mol P / m-3 / yr) (represents growth of explicit population phtyP_conc)

nutrient_limitation

Set by k_nuttype parameter:

  • PO4MM: P_conc / (P_conc + k_KPO4)
  • PO4NMM: P, N limited phytoplankton export production: cf GENIE 2N2T_PO4MM_NO3, (Fennel, 2005)
  • PO4NMMNfix: P limited nitrogen-fixer export production: cf GENIE 2N2T_PO4MM_NO3, (Fennel, 2005)

light_limitation

Set by k_lightlim parameter:

  • fixed: constant k_Irel
  • 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

Examples

k_poptypek_nuttypek_lightlimk_templimk_edonorReference
ConstantPO4MMlinearConstantH2OP and light limited export production, as used by GENIE (Ridgwell et al., 2007)
PopPO4MMQEEppleyH2OP and light limited phytoplankton population

Parameters

  • rCorgPO4[Float64]=106.0, default_value=106.0, description="Corg:P Redfield ratio of organic matter produced"
  • rNPO4[Float64]=16.0, default_value=16.0, description="N:P Redfield ratio of organic matter produced"
  • rCcarbCorg[Float64]=0.0, default_value=0.0, description="ratio of Ccarb to Corg produced"
  • rCcarbCorg_fixed[Bool]=true, default_value=true, description="Ccarb:Corg rain ratio true for fixed, false for sat. state dependent"
  • k_r0[Float64]=0.044372, default_value=0.044372, description="initial rain-ratio for sat. state dependent rain ratio"
  • k_eta[Float64]=0.8053406, default_value=0.8053406, description="exponent for sat. state dependent rain ratio"
  • nuDOM[Float64]=0.66, default_value=0.66, description="fraction of production to DOM reservoir"
  • depthlimit[Float64]=-200.0 (m), default_value=-200.0, description="depth limit for production"
  • k_poptype[String]="Constant", default_value="Constant", allowed_values=["Constant", "Nutrient", "Pop"], description="population / growth rate model"
  • k_uPO4[Float64]=0.002 (mol P / m-3 / yr), default_value=0.002, description="for k_poptype = 'Constant': max rate, constant ie of form k_O_uPO4 * (light, nut etc)"
  • k_mu[Float64]=NaN (1/yr), default_value=NaN, description="for k_poptype = 'Nutrient', 'Pop': max prod/growth rate (at 0C if templim=='Eppley')"
  • k_grazeresprate[Float64]=NaN (1/yr), default_value=NaN, description="for k_poptype = 'Pop' imposed const loss (mortality) rate"
  • k_templim[String]="Constant", default_value="Constant", allowed_values=["Constant", "Eppley"], description="temperature limitation factor"
  • k_lightlim[String]="linear", default_value="linear", allowed_values=["linear", "MM", "fixed", "QE"], description="Light limitation function"
  • k_Irel[Float64]=1.0, default_value=1.0, description="multiplier for forcing-supplied insolation"
  • k_Ic[Float64]=30.0 (W/m^2), default_value=30.0, description="saturating irradiance for 'MM' case"
  • k_alphaQE[Float64]=7.0 (mgC/mgChl/Wpar m^-2/d-1), default_value=7.0, description="chla-specific initial slope of the photosynthesis-light curve for lightlim='QE'"
  • k_thetaChlC[Float64]=0.03 (mg Chl / mgC), default_value=0.03, description="Chl:Corg ratio for explicit population k_poptype=Pop"
  • k_epsilonChl[Float64]=0.012 (m^2/mg Chl), default_value=0.012, description="chl absorption coeff (for self shielding) for k_poptype='Pop'"
  • k_nuttype[String]="PO4MM", default_value="PO4MM", allowed_values=["PO4MM", "PO4NMM", "PO4NMMNfix"], description="Nutrient limitation / nitrogen fixation function"
  • k_KPO4[Float64]=NaN (mol P m-3 ), default_value=NaN, description="limitation at low [P] MM half-max constant"
  • k_KN[Float64]=0.0 (mol NO3+NH4 m-3), default_value=0.0, description="limitation at low nitrogen"
  • k_prefNH3[Float64]=10.0, default_value=10.0, description="preference for ammonia over nitrate"
  • k_edonor[String]="H2O", default_value="H2O", allowed_values=["H2O", "H2S"], description="electron donor (H2O for oxygenic phototroph"
  • k_KH2S[Float64]=0.001 (mol H2S m-3), default_value=0.001, description="limitation at low [H2S] MM half-max constant"
  • CIsotope[external, DataType]=PALEOboxes.ScalarData, default_value=PALEOboxes.ScalarData, allowed_values=Type[PALEOboxes.ScalarData, PALEOboxes.IsotopeLinear], description="disable / enable carbon isotopes and specify isotope type"

Methods and Variables for default Parameters

  • RateStoich_edonorO2eq
    • edonorO2eq (mol O2eq yr-1), VT_ReactDependency, description="O2eq e- donor consumption (H2O) by oxygenic photosynthesis"
    • [O2_sms] (), VT_ReactContributor, description="generated by RateStoich rate=edonorO2eq"
  • do_bio_prod_MM_pop
    • volume (m^3), VT_ReactDependency, description="ocean cell volume"
    • zupper (m), VT_ReactDependency, description="cell depth (-ve)"
    • open_area_fraction –> oceansurface.open_area_fraction (), VT_ReactDependency, description="fraction of area open to atmosphere"
    • P_conc (mol m^-3), VT_ReactDependency, description="total P concentration"
    • [OmegaCA] (), VT_ReactDependency, description="calcite saturation state"
    • [rate_bioprod] –> global.rate_bioprod (), VT_ReactDependency, description="optional forcing, multiplier for productivity"
    • [PELCALC] –> global.PELCALC (), VT_ReactDependency, description="optional forcing for pelagic calcification"
    • Prod_Corg –> %reaction%Prod_Corg (mol yr-1), VT_ReactProperty, description="organic carbon production rate"
    • Prod_Ccarb –> %reaction%Prod_Ccarb (mol yr-1), VT_ReactProperty, description="carbonate production rate"
    • P_sms (mol yr-1), VT_ReactContributor, description="total dissolved P source minus sink"
    • [TAlk_sms] (mol yr-1), VT_ReactContributor, description="TAlk source minus sink"
    • [DIC_sms] (mol yr-1), VT_ReactContributor, description="DIC source minus sink"
    • [partprod_P] (mol yr-1), VT_ReactContributor, description="flux P"
    • [partprod_N] (mol yr-1), VT_ReactContributor, description="flux N"
    • [partprod_Corg] (mol yr-1), VT_ReactContributor, description="flux Corg"
    • [partprod_Ccarb] (mol yr-1), VT_ReactContributor, description="flux Ccarb"
    • [domprod_P] (mol yr-1), VT_ReactContributor, description="flux P"
    • [domprod_N] (mol yr-1), VT_ReactContributor, description="flux N"
    • [domprod_Corg] (mol yr-1), VT_ReactContributor, description="flux Corg"
    • [domprod_Ccarb] (mol yr-1), VT_ReactContributor, description="flux Ccarb"
    • edonorO2eq (mol O2eq yr-1), VT_ReactProperty, description="O2eq e- donor consumption (H2O) by oxygenic photosynthesis"
    • insol (W m-2), VT_ReactDependency, description="photosynthetic radiative flux"
  • totals
    • Prod_Corg –> %reaction%Prod_Corg (mol yr-1), VT_ReactDependency, description="organic carbon production rate"
    • edonorO2eq (mol O2eq yr-1), VT_ReactDependency, description="O2eq e- donor consumption (H2O) by oxygenic photosynthesis"
    • Prod_Ccarb –> %reaction%Prod_Ccarb (mol yr-1), VT_ReactDependency, description="carbonate production rate"
    • Prod_Corg_total (mol yr-1), VT_ReactProperty, description="total organic carbon production rate"
    • edonorO2eq_total (mol O2eq yr-1), VT_ReactProperty, description="total O2eq e- donor consumption (H2O) by oxygenic photosynthesis"
    • Prod_Ccarb_total (mol yr-1), VT_ReactProperty, description="total carbonate production rate"
source

Ocean surface air-sea flux

PALEOocean.Oceansurface.AirSeaExchange.ReactionAirSeaType
ReactionAirSea(Sc_function, sol_function, frac_function, gas_name)
 ReactionAirSeaO2
 ReactionAirSeaCO2
 ReactionAirSeaCO2
-ReactionAirSeaFixedSolubility

Calculate atmosphere to ocean gas flux, mol/yr.

NB: ReactionAirSea not used directly - use as ReactionAirSeaO2 etc.

Runs in oceansurface Domain, calculates per-oceansurface-cell atmosphere to ocean gas flux (mol yr-1) for a gas X using stagnant film model:

flux_X = Asurf * open_area_fraction * vpiston * (solX(pXatm) - X_conc)

Asurf and open_area_fraction should be defined by oceansurface variables.

Piston velocity vpiston and gas solutibility solX are defined by gas specific functions (eg an empirical wind-velocity dependent Schmidt factor, and temperature and salinity dependent solubility).

If Parameter moistair = true, atmospheric partial pressure pXatm should be supplied as the equivalent for dry air (~ volume mixing ratio in dry air * pressure ), and is then corrected assuming saturated H2O at the ocean surface temperature.

source
PALEOocean.Oceansurface.AirSeaExchange.ReactionAirSeaO2Type
ReactionAirSeaO2

See ReactionAirSea

Parameters

  • solubility_fixed[Bool]=false, default_value=false, description="use fixed solubility"
  • sol_fix_henry_coeff[Float64]=NaN (mol l-1 atm-1), default_value=NaN, description="Henry's law coefficient for solubility_fixed=true"
  • moistair[Bool]=true, default_value=true, description="apply correction for moist air"
  • piston_fixed[Bool]=true, default_value=true, description="use fixed piston velocity"
  • piston[Float64]=NaN (m d-1), default_value=NaN, description="fixed piston velocity"
  • TempKmin[Float64]=-Inf (K), default_value=-Inf, description="GENIE bug compatibility - lower limit on temperature for solubility"
  • atm_partial_pressure_min_zero[Bool]=false, default_value=false, description="true to clamp -ve values of atmospheric partial pressure to zero when calculating flux"
  • ocean_conc_min_zero[Bool]=false, default_value=false, description="true to clamp -ve values of ocean concentration to zero when calculating flux"

Methods and Variables for default Parameters

  • do_air_sea_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"
    • X_conc –> ocean.oceansurface.O2_conc (mol m-3), VT_ReactDependency, description="ocean concentration [gas X]"
    • flux_X –> fluxAtmtoOceansurface.flux_O2 (mol yr-1), VT_ReactContributor, description="air -> sea gas X flux"
    • temp –> ocean.oceansurface.temp (K), VT_ReactDependency, description="ocean surface temperature"
    • sal –> ocean.oceansurface.sal (psu), VT_ReactDependency, description="ocean salinity"
source
PALEOocean.Oceansurface.AirSeaExchange.ReactionAirSeaCO2Type
ReactionAirSeaCO2

See ReactionAirSea

  • Piston velocity: Schmidt factor from (Wanninkhof, 1992)
  • Solubility: calculated from ocean.CO2_conc, ocean.pCO2atm defined by ocean carbonate chemistry.
  • Isotope fractionation: equilibrium and kinetic fractionation from (Zhang et al., 1995)

Parameters

  • solubility_fixed[Bool]=false, default_value=false, description="use fixed solubility"
  • sol_fix_henry_coeff[Float64]=NaN (mol l-1 atm-1), default_value=NaN, description="Henry's law coefficient for solubility_fixed=true"
  • moistair[Bool]=true, default_value=true, description="apply correction for moist air"
  • piston_fixed[Bool]=true, default_value=true, description="use fixed piston velocity"
  • piston[Float64]=NaN (m d-1), default_value=NaN, description="fixed piston velocity"
  • TempKmin[Float64]=-Inf (K), default_value=-Inf, description="GENIE bug compatibility - lower limit on temperature for solubility"
  • atm_partial_pressure_min_zero[Bool]=false, default_value=false, description="true to clamp -ve values of atmospheric partial pressure to zero when calculating flux"
  • ocean_conc_min_zero[Bool]=false, default_value=false, description="true to clamp -ve values of ocean concentration to zero when calculating flux"
source
PALEOocean.Oceansurface.AirSeaExchange.ReactionAirSeaCH4Type
ReactionAirSeaCH4

See ReactionAirSea

Parameters

  • solubility_fixed[Bool]=false, default_value=false, description="use fixed solubility"
  • sol_fix_henry_coeff[Float64]=NaN (mol l-1 atm-1), default_value=NaN, description="Henry's law coefficient for solubility_fixed=true"
  • moistair[Bool]=true, default_value=true, description="apply correction for moist air"
  • piston_fixed[Bool]=true, default_value=true, description="use fixed piston velocity"
  • piston[Float64]=NaN (m d-1), default_value=NaN, description="fixed piston velocity"
  • TempKmin[Float64]=-Inf (K), default_value=-Inf, description="GENIE bug compatibility - lower limit on temperature for solubility"
  • atm_partial_pressure_min_zero[Bool]=false, default_value=false, description="true to clamp -ve values of atmospheric partial pressure to zero when calculating flux"
  • ocean_conc_min_zero[Bool]=false, default_value=false, description="true to clamp -ve values of ocean concentration to zero when calculating flux"
source
PALEOocean.Oceansurface.AirSeaExchange.ReactionAirSeaFixedSolubilityType
ReactionAirSeaFixedSolubility

See ReactionAirSea

  • Piston velocity: fixed value from piston Parameter
  • Solubility: fixed value from sol_fix_henry_coeff

NB: moistair correction is not applied

Parameters

  • solubility_fixed[Bool]=true, default_value=true, description="use fixed solubility"
  • sol_fix_henry_coeff[Float64]=NaN (mol l-1 atm-1), default_value=NaN, description="Henry's law coefficient for solubility_fixed=true"
  • moistair[Bool]=false, default_value=false, description="apply correction for moist air"
  • piston_fixed[Bool]=true, default_value=true, description="use fixed piston velocity"
  • piston[Float64]=NaN (m d-1), default_value=NaN, description="fixed piston velocity"
  • TempKmin[Float64]=-Inf (K), default_value=-Inf, description="GENIE bug compatibility - lower limit on temperature for solubility"
  • atm_partial_pressure_min_zero[Bool]=false, default_value=false, description="true to clamp -ve values of atmospheric partial pressure to zero when calculating flux"
  • ocean_conc_min_zero[Bool]=false, default_value=false, description="true to clamp -ve values of ocean concentration to zero when calculating flux"

Methods and Variables for default Parameters

  • do_air_sea_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"
    • X_conc –> ocean.oceansurface.X_conc (mol m-3), VT_ReactDependency, description="ocean concentration [gas X]"
    • flux_X –> fluxAtmtoOceansurface.flux_X (mol yr-1), VT_ReactContributor, description="air -> sea gas X flux"
source

Ocean floor burial

Carbonate burial

PALEOocean.Oceanfloor.Burial.ReactionShelfCarbType
ReactionShelfCarb

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)"
  • CIsotope[external, DataType]=PALEOboxes.ScalarData, default_value=PALEOboxes.ScalarData, allowed_values=Type[PALEOboxes.ScalarData, PALEOboxes.IsotopeLinear], description="disable / enable carbon isotopes and specify isotope type"

Methods and Variables for default Parameters

  • do_shelf_carb
    • fluxOceanfloor_soluteflux_DIC –> fluxOceanfloor.soluteflux_DIC (mol yr-1), VT_ReactContributor, description="flux DIC"
    • fluxOceanfloor_soluteflux_TAlk –> fluxOceanfloor.soluteflux_TAlk (mol yr-1), VT_ReactContributor, description="flux TAlk"
    • [fluxOceanfloor_soluteflux_Ca] –> fluxOceanfloor.soluteflux_Ca (mol yr-1), VT_ReactContributor, description="flux Ca"
    • [fluxOceanBurial_flux_Ccarb] –> fluxOceanBurial.flux_Ccarb (mol yr-1), VT_ReactContributor, description="flux Ccarb"
    • [shelfarea_force] –> global.shelfarea_force (), VT_ReactDependency, description="optional forcing multiplier for carbsedshallow (defaults to 1.0)"
    • OmegaAR –> ocean.oceanfloor.OmegaAR (), VT_ReactDependency, description="aragonite saturation"
    • shelf_Ccarb (mol yr-1), VT_ReactProperty, description="shelf Ccarb burial"
  • totals
    • shelf_Ccarb (mol yr-1), VT_ReactDependency, description="shelf Ccarb burial"
    • shelf_Ccarb_total (mol yr-1), VT_ReactProperty, description="total shelf Ccarb burial"
source
PALEOocean.Oceanfloor.Burial.ReactionBurialEffCarbType
ReactionBurialEffCarb

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:

  • "Caldeira1993": flys = 0.5*(1.0+tanh(k0([CO3] -k1)))

(after (Caldeira and Rampino, 1993), intended for use with the single deep ocean box in a 3-box ocean model)

  • "OmegaCA": flys = 1 - 0.5 * erfc(m0*(Ω_CA - m1)) (burial efficiency a function of oceanfloor saturation state)

Parameters

  • burial_eff_function[String]="Caldeira1993", default_value="Caldeira1993", allowed_values=["Caldeira1993", "OmegaCA"], description="functional form for burial efficiency"
  • k0[Float64]=26.0 (m3/mol), default_value=26.0, description="Caldeira1993: burial frac 'steepness' with CO3 concentration"
  • k1[Float64]=0.11 (mol/m3), default_value=0.11, description="Caldeira1993: CO3 concentration at burial frac 0.5"
  • m0[Float64]=10.0, default_value=10.0, description="OmegaCA: burial frac 'steepness' with OmegaCA"
  • m1[Float64]=1.0, default_value=1.0, description="OmegaCA: OmegaCA at burial frac 0.5"
  • hascarbseddeep[Vector{Bool}]=Bool[], default_value=Bool[], description="per box flag to enable (length=Domain size)"
  • CIsotope[external, DataType]=PALEOboxes.ScalarData, default_value=PALEOboxes.ScalarData, allowed_values=Type[PALEOboxes.ScalarData, PALEOboxes.IsotopeLinear], description="disable / enable carbon isotopes and specify isotope type"

Methods and Variables for default Parameters

  • do_burial_eff_carb
    • fluxOceanfloor_soluteflux_DIC –> fluxOceanfloor.soluteflux_DIC (mol yr-1), VT_ReactContributor, description="flux DIC"
    • fluxOceanfloor_soluteflux_TAlk –> fluxOceanfloor.soluteflux_TAlk (mol yr-1), VT_ReactContributor, description="flux TAlk"
    • [fluxOceanfloor_soluteflux_Ca] –> fluxOceanfloor.soluteflux_Ca (mol yr-1), VT_ReactContributor, description="flux Ca"
    • [fluxOceanBurial_flux_Ccarb] –> fluxOceanBurial.flux_Ccarb (mol yr-1), VT_ReactContributor, description="flux Ccarb"
    • particulateflux_Ccarb (mol yr-1), VT_ReactTarget, description="input carbonate particulate flux"
    • deep_Ccarb (mol yr-1), VT_ReactProperty, description="deep unresolved Ccarb burial"
    • flys (), VT_ReactProperty, description="fraction of Ccarb export buried"
    • CO3_conc –> ocean.oceanfloor.CO3_conc (mol m-3), VT_ReactDependency, description="CO3 concentration"
  • totals
    • deep_Ccarb (mol yr-1), VT_ReactDependency, description="deep unresolved Ccarb burial"
    • deep_Ccarb_total (mol yr-1), VT_ReactProperty, description="total deep unresolved Ccarb burial"
source

Organic carbon and phosphorus burial

PALEOocean.Oceanfloor.Burial.ReactionBurialEffCorgPType
ReactionBurialEffCorgP

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)"
  • burial_eff_function[String]="Prescribed", default_value="Prescribed", allowed_values=["Prescribed", "Ozaki2011", "Dunne2007", "ConstantBurialRate"], description="Corg burial efficiency parameterisation (or ConstantBurialRate)"
  • BECorg[Vector{Float64}]=Float64[], default_value=Float64[], description="prescribed fraction seafloor Corg flux buried (or per-cell fraction of total Corg for ConstantBurialRate)"
  • FixedCorgBurialTotal[Float64]=NaN (mol C yr-1), default_value=NaN, description="if != NaN, fix total ocean Corg burial rate by renormalizing per-cell fluxes"
  • BPO2[Vector{Float64}]=[NaN] (mol O2 m-3), default_value=[NaN], description="[O2] points for interpolated oxygen-dependent P:Corg (length 1 for O2-independent P:Corg)"
  • BPorgCorg[Vector{Float64}]=[0.0] (mol P (mol Corg)-1), default_value=[0.0], description="P:Corg for organic P burial fraction at each BPO2 (Vector length 1 for O2-independent P:Corg)"
  • BPFeCorg[Vector{Float64}]=[0.0] (mol P (mol Corg)-1), default_value=[0.0], description="P:Corg for Fe-associated P burial fraction at each BPO2 (Vector length 1 for O2-independent P:Corg)"
  • BPauthCorg[Vector{Float64}]=[0.0] (mol P (mol Corg)-1), default_value=[0.0], description="P:Corg for CFA-associated P burial fraction at each BPO2 (Vector length 1 for O2-independent P:Corg)"
  • CIsotope[external, DataType]=PALEOboxes.ScalarData, default_value=PALEOboxes.ScalarData, allowed_values=Type[PALEOboxes.ScalarData, PALEOboxes.IsotopeLinear], description="disable / enable carbon isotopes and specify isotope type"

Methods and Variables

  • do_burial_eff_CorgP
    • particulateflux_Corg (mol yr-1), VT_ReactTarget, description="input particulate flux Corg"
    • particulateflux_P (mol yr-1), VT_ReactTarget, description="input particulate flux P"
    • particulateflux_N (mol yr-1), VT_ReactTarget, description="input particulate flux N"
    • reminflux_Corg (mol yr-1), VT_ReactContributor, description="output unburied particulate flux Corg"
    • reminflux_P (mol yr-1), VT_ReactContributor, description="output unburied particulate flux P"
    • reminflux_N (mol yr-1), VT_ReactContributor, description="output unburied particulate flux N"
    • [fluxOceanBurial_flux_Corg] –> fluxOceanBurial.flux_Corg (mol yr-1), VT_ReactContributor, description="flux Corg"
    • [fluxOceanBurial_flux_Porg] –> fluxOceanBurial.flux_Porg (mol yr-1), VT_ReactContributor, description="flux Porg"
    • [fluxOceanBurial_flux_PFe] –> fluxOceanBurial.flux_PFe (mol yr-1), VT_ReactContributor, description="flux PFe"
    • [fluxOceanBurial_flux_Pauth] –> fluxOceanBurial.flux_Pauth (mol yr-1), VT_ReactContributor, description="flux Pauth"
    • [fluxOceanBurial_flux_P] –> fluxOceanBurial.flux_P (mol yr-1), VT_ReactContributor, description="flux P"
    • burial_eff_Corg (), VT_ReactProperty, description="Corg burial efficiency"
    • [sedimentation_rate] (m yr-1), VT_ReactDependency, description="sedimentation rate"
    • [O2_conc] –> ocean.oceanfloor.O2_conc (mol m-3), VT_ReactDependency, description="O2 concentration"
    • [Afloor] –> oceanfloor.Afloor (m^2), VT_ReactDependency, description="horizontal area of seafloor at base of box"
source

Global

PALEOocean.Global.Insolation.ReactionForceInsolationModernEarthType
ReactionForceInsolationModernEarth

Calculate time and latitude dependent daily mean modern Earth surface solar insolation.

Daily mean photosynthetically-active surface insolation

`insolation` = TOA flux * (1 - `albedo`) * `parfrac`

See insolMITgcmDIC for details.

Parameters

  • albedo[Float64]=0.6, default_value=0.6, description="mean planetary albedo"
  • parfrac[Float64]=1.0, default_value=1.0, description="fraction of radiation that is photosynthetically active"
  • latitude[Vector{Float64}]=Float64[] (degrees N), default_value=Float64[], description="if non-empty, override grid latitude and set explicitly for each surface cell"

Methods and Variables for default Parameters

  • do_force_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"
source
PALEOocean.Global.Insolation.insolMITgcmDICFunction
insolMITgcmDIC(Timeyr,latdeg; albedo=0.6, solar=1360.0, parfrac=1.0) -> sfac

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:
+ReactionAirSeaFixedSolubility

Calculate atmosphere to ocean gas flux, mol/yr.

NB: ReactionAirSea not used directly - use as ReactionAirSeaO2 etc.

Runs in oceansurface Domain, calculates per-oceansurface-cell atmosphere to ocean gas flux (mol yr-1) for a gas X using stagnant film model:

flux_X = Asurf * open_area_fraction * vpiston * (solX(pXatm) - X_conc)

Asurf and open_area_fraction should be defined by oceansurface variables.

Piston velocity vpiston and gas solutibility solX are defined by gas specific functions (eg an empirical wind-velocity dependent Schmidt factor, and temperature and salinity dependent solubility).

If Parameter moistair = true, atmospheric partial pressure pXatm should be supplied as the equivalent for dry air (~ volume mixing ratio in dry air * pressure ), and is then corrected assuming saturated H2O at the ocean surface temperature.

source
PALEOocean.Oceansurface.AirSeaExchange.ReactionAirSeaO2Type
ReactionAirSeaO2

See ReactionAirSea

Parameters

  • solubility_fixed[Bool]=false, default_value=false, description="use fixed solubility"
  • sol_fix_henry_coeff[Float64]=NaN (mol l-1 atm-1), default_value=NaN, description="Henry's law coefficient for solubility_fixed=true"
  • moistair[Bool]=true, default_value=true, description="apply correction for moist air"
  • piston_fixed[Bool]=true, default_value=true, description="use fixed piston velocity"
  • piston[Float64]=NaN (m d-1), default_value=NaN, description="fixed piston velocity"
  • TempKmin[Float64]=-Inf (K), default_value=-Inf, description="GENIE bug compatibility - lower limit on temperature for solubility"
  • atm_partial_pressure_min_zero[Bool]=false, default_value=false, description="true to clamp -ve values of atmospheric partial pressure to zero when calculating flux"
  • ocean_conc_min_zero[Bool]=false, default_value=false, description="true to clamp -ve values of ocean concentration to zero when calculating flux"

Methods and Variables for default Parameters

  • do_air_sea_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"
    • X_conc –> ocean.oceansurface.O2_conc (mol m-3), VT_ReactDependency, description="ocean concentration [gas X]"
    • flux_X –> fluxAtmtoOceansurface.flux_O2 (mol yr-1), VT_ReactContributor, description="air -> sea gas X flux"
    • temp –> ocean.oceansurface.temp (K), VT_ReactDependency, description="ocean surface temperature"
    • sal –> ocean.oceansurface.sal (psu), VT_ReactDependency, description="ocean salinity"
source
PALEOocean.Oceansurface.AirSeaExchange.ReactionAirSeaCO2Type
ReactionAirSeaCO2

See ReactionAirSea

  • Piston velocity: Schmidt factor from (Wanninkhof, 1992)
  • Solubility: calculated from ocean.CO2_conc, ocean.pCO2atm defined by ocean carbonate chemistry.
  • Isotope fractionation: equilibrium and kinetic fractionation from (Zhang et al., 1995)

Parameters

  • solubility_fixed[Bool]=false, default_value=false, description="use fixed solubility"
  • sol_fix_henry_coeff[Float64]=NaN (mol l-1 atm-1), default_value=NaN, description="Henry's law coefficient for solubility_fixed=true"
  • moistair[Bool]=true, default_value=true, description="apply correction for moist air"
  • piston_fixed[Bool]=true, default_value=true, description="use fixed piston velocity"
  • piston[Float64]=NaN (m d-1), default_value=NaN, description="fixed piston velocity"
  • TempKmin[Float64]=-Inf (K), default_value=-Inf, description="GENIE bug compatibility - lower limit on temperature for solubility"
  • atm_partial_pressure_min_zero[Bool]=false, default_value=false, description="true to clamp -ve values of atmospheric partial pressure to zero when calculating flux"
  • ocean_conc_min_zero[Bool]=false, default_value=false, description="true to clamp -ve values of ocean concentration to zero when calculating flux"
source
PALEOocean.Oceansurface.AirSeaExchange.ReactionAirSeaCH4Type
ReactionAirSeaCH4

See ReactionAirSea

Parameters

  • solubility_fixed[Bool]=false, default_value=false, description="use fixed solubility"
  • sol_fix_henry_coeff[Float64]=NaN (mol l-1 atm-1), default_value=NaN, description="Henry's law coefficient for solubility_fixed=true"
  • moistair[Bool]=true, default_value=true, description="apply correction for moist air"
  • piston_fixed[Bool]=true, default_value=true, description="use fixed piston velocity"
  • piston[Float64]=NaN (m d-1), default_value=NaN, description="fixed piston velocity"
  • TempKmin[Float64]=-Inf (K), default_value=-Inf, description="GENIE bug compatibility - lower limit on temperature for solubility"
  • atm_partial_pressure_min_zero[Bool]=false, default_value=false, description="true to clamp -ve values of atmospheric partial pressure to zero when calculating flux"
  • ocean_conc_min_zero[Bool]=false, default_value=false, description="true to clamp -ve values of ocean concentration to zero when calculating flux"
source
PALEOocean.Oceansurface.AirSeaExchange.ReactionAirSeaFixedSolubilityType
ReactionAirSeaFixedSolubility

See ReactionAirSea

  • Piston velocity: fixed value from piston Parameter
  • Solubility: fixed value from sol_fix_henry_coeff

NB: moistair correction is not applied

Parameters

  • solubility_fixed[Bool]=true, default_value=true, description="use fixed solubility"
  • sol_fix_henry_coeff[Float64]=NaN (mol l-1 atm-1), default_value=NaN, description="Henry's law coefficient for solubility_fixed=true"
  • moistair[Bool]=false, default_value=false, description="apply correction for moist air"
  • piston_fixed[Bool]=true, default_value=true, description="use fixed piston velocity"
  • piston[Float64]=NaN (m d-1), default_value=NaN, description="fixed piston velocity"
  • TempKmin[Float64]=-Inf (K), default_value=-Inf, description="GENIE bug compatibility - lower limit on temperature for solubility"
  • atm_partial_pressure_min_zero[Bool]=false, default_value=false, description="true to clamp -ve values of atmospheric partial pressure to zero when calculating flux"
  • ocean_conc_min_zero[Bool]=false, default_value=false, description="true to clamp -ve values of ocean concentration to zero when calculating flux"

Methods and Variables for default Parameters

  • do_air_sea_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"
    • X_conc –> ocean.oceansurface.X_conc (mol m-3), VT_ReactDependency, description="ocean concentration [gas X]"
    • flux_X –> fluxAtmtoOceansurface.flux_X (mol yr-1), VT_ReactContributor, description="air -> sea gas X flux"
source

Ocean floor burial

Carbonate burial

PALEOocean.Oceanfloor.Burial.ReactionShelfCarbType
ReactionShelfCarb

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)"
  • CIsotope[external, DataType]=PALEOboxes.ScalarData, default_value=PALEOboxes.ScalarData, allowed_values=Type[PALEOboxes.ScalarData, PALEOboxes.IsotopeLinear], description="disable / enable carbon isotopes and specify isotope type"

Methods and Variables for default Parameters

  • do_shelf_carb
    • fluxOceanfloor_soluteflux_DIC –> fluxOceanfloor.soluteflux_DIC (mol yr-1), VT_ReactContributor, description="flux DIC"
    • fluxOceanfloor_soluteflux_TAlk –> fluxOceanfloor.soluteflux_TAlk (mol yr-1), VT_ReactContributor, description="flux TAlk"
    • [fluxOceanfloor_soluteflux_Ca] –> fluxOceanfloor.soluteflux_Ca (mol yr-1), VT_ReactContributor, description="flux Ca"
    • [fluxOceanBurial_flux_Ccarb] –> fluxOceanBurial.flux_Ccarb (mol yr-1), VT_ReactContributor, description="flux Ccarb"
    • [shelfarea_force] –> global.shelfarea_force (), VT_ReactDependency, description="optional forcing multiplier for carbsedshallow (defaults to 1.0)"
    • OmegaAR –> ocean.oceanfloor.OmegaAR (), VT_ReactDependency, description="aragonite saturation"
    • shelf_Ccarb (mol yr-1), VT_ReactProperty, description="shelf Ccarb burial"
  • totals
    • shelf_Ccarb (mol yr-1), VT_ReactDependency, description="shelf Ccarb burial"
    • shelf_Ccarb_total (mol yr-1), VT_ReactProperty, description="total shelf Ccarb burial"
source
PALEOocean.Oceanfloor.Burial.ReactionBurialEffCarbType
ReactionBurialEffCarb

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:

  • "Caldeira1993": flys = 0.5*(1.0+tanh(k0([CO3] -k1)))

(after (Caldeira and Rampino, 1993), intended for use with the single deep ocean box in a 3-box ocean model)

  • "OmegaCA": flys = 1 - 0.5 * erfc(m0*(Ω_CA - m1)) (burial efficiency a function of oceanfloor saturation state)

Parameters

  • burial_eff_function[String]="Caldeira1993", default_value="Caldeira1993", allowed_values=["Caldeira1993", "OmegaCA"], description="functional form for burial efficiency"
  • k0[Float64]=26.0 (m3/mol), default_value=26.0, description="Caldeira1993: burial frac 'steepness' with CO3 concentration"
  • k1[Float64]=0.11 (mol/m3), default_value=0.11, description="Caldeira1993: CO3 concentration at burial frac 0.5"
  • m0[Float64]=10.0, default_value=10.0, description="OmegaCA: burial frac 'steepness' with OmegaCA"
  • m1[Float64]=1.0, default_value=1.0, description="OmegaCA: OmegaCA at burial frac 0.5"
  • hascarbseddeep[Vector{Bool}]=Bool[], default_value=Bool[], description="per box flag to enable (length=Domain size)"
  • CIsotope[external, DataType]=PALEOboxes.ScalarData, default_value=PALEOboxes.ScalarData, allowed_values=Type[PALEOboxes.ScalarData, PALEOboxes.IsotopeLinear], description="disable / enable carbon isotopes and specify isotope type"

Methods and Variables for default Parameters

  • do_burial_eff_carb
    • fluxOceanfloor_soluteflux_DIC –> fluxOceanfloor.soluteflux_DIC (mol yr-1), VT_ReactContributor, description="flux DIC"
    • fluxOceanfloor_soluteflux_TAlk –> fluxOceanfloor.soluteflux_TAlk (mol yr-1), VT_ReactContributor, description="flux TAlk"
    • [fluxOceanfloor_soluteflux_Ca] –> fluxOceanfloor.soluteflux_Ca (mol yr-1), VT_ReactContributor, description="flux Ca"
    • [fluxOceanBurial_flux_Ccarb] –> fluxOceanBurial.flux_Ccarb (mol yr-1), VT_ReactContributor, description="flux Ccarb"
    • particulateflux_Ccarb (mol yr-1), VT_ReactTarget, description="input carbonate particulate flux"
    • deep_Ccarb (mol yr-1), VT_ReactProperty, description="deep unresolved Ccarb burial"
    • flys (), VT_ReactProperty, description="fraction of Ccarb export buried"
    • CO3_conc –> ocean.oceanfloor.CO3_conc (mol m-3), VT_ReactDependency, description="CO3 concentration"
  • totals
    • deep_Ccarb (mol yr-1), VT_ReactDependency, description="deep unresolved Ccarb burial"
    • deep_Ccarb_total (mol yr-1), VT_ReactProperty, description="total deep unresolved Ccarb burial"
source

Organic carbon and phosphorus burial

PALEOocean.Oceanfloor.Burial.ReactionBurialEffCorgPType
ReactionBurialEffCorgP

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)"
  • burial_eff_function[String]="Prescribed", default_value="Prescribed", allowed_values=["Prescribed", "Ozaki2011", "Dunne2007", "ConstantBurialRate"], description="Corg burial efficiency parameterisation (or ConstantBurialRate)"
  • BECorg[Vector{Float64}]=Float64[], default_value=Float64[], description="prescribed fraction seafloor Corg flux buried (or per-cell fraction of total Corg for ConstantBurialRate)"
  • FixedCorgBurialTotal[Float64]=NaN (mol C yr-1), default_value=NaN, description="if != NaN, fix total ocean Corg burial rate by renormalizing per-cell fluxes"
  • BPO2[Vector{Float64}]=[NaN] (mol O2 m-3), default_value=[NaN], description="[O2] points for interpolated oxygen-dependent P:Corg (length 1 for O2-independent P:Corg)"
  • BPorgCorg[Vector{Float64}]=[0.0] (mol P (mol Corg)-1), default_value=[0.0], description="P:Corg for organic P burial fraction at each BPO2 (Vector length 1 for O2-independent P:Corg)"
  • BPFeCorg[Vector{Float64}]=[0.0] (mol P (mol Corg)-1), default_value=[0.0], description="P:Corg for Fe-associated P burial fraction at each BPO2 (Vector length 1 for O2-independent P:Corg)"
  • BPauthCorg[Vector{Float64}]=[0.0] (mol P (mol Corg)-1), default_value=[0.0], description="P:Corg for CFA-associated P burial fraction at each BPO2 (Vector length 1 for O2-independent P:Corg)"
  • CIsotope[external, DataType]=PALEOboxes.ScalarData, default_value=PALEOboxes.ScalarData, allowed_values=Type[PALEOboxes.ScalarData, PALEOboxes.IsotopeLinear], description="disable / enable carbon isotopes and specify isotope type"

Methods and Variables

  • do_burial_eff_CorgP
    • particulateflux_Corg (mol yr-1), VT_ReactTarget, description="input particulate flux Corg"
    • particulateflux_P (mol yr-1), VT_ReactTarget, description="input particulate flux P"
    • particulateflux_N (mol yr-1), VT_ReactTarget, description="input particulate flux N"
    • reminflux_Corg (mol yr-1), VT_ReactContributor, description="output unburied particulate flux Corg"
    • reminflux_P (mol yr-1), VT_ReactContributor, description="output unburied particulate flux P"
    • reminflux_N (mol yr-1), VT_ReactContributor, description="output unburied particulate flux N"
    • [fluxOceanBurial_flux_Corg] –> fluxOceanBurial.flux_Corg (mol yr-1), VT_ReactContributor, description="flux Corg"
    • [fluxOceanBurial_flux_Porg] –> fluxOceanBurial.flux_Porg (mol yr-1), VT_ReactContributor, description="flux Porg"
    • [fluxOceanBurial_flux_PFe] –> fluxOceanBurial.flux_PFe (mol yr-1), VT_ReactContributor, description="flux PFe"
    • [fluxOceanBurial_flux_Pauth] –> fluxOceanBurial.flux_Pauth (mol yr-1), VT_ReactContributor, description="flux Pauth"
    • [fluxOceanBurial_flux_P] –> fluxOceanBurial.flux_P (mol yr-1), VT_ReactContributor, description="flux P"
    • burial_eff_Corg (), VT_ReactProperty, description="Corg burial efficiency"
    • [sedimentation_rate] (m yr-1), VT_ReactDependency, description="sedimentation rate"
    • [O2_conc] –> ocean.oceanfloor.O2_conc (mol m-3), VT_ReactDependency, description="O2 concentration"
    • [Afloor] –> oceanfloor.Afloor (m^2), VT_ReactDependency, description="horizontal area of seafloor at base of box"
source

Global

PALEOocean.Global.Insolation.ReactionForceInsolationModernEarthType
ReactionForceInsolationModernEarth

Calculate time and latitude dependent daily mean modern Earth surface solar insolation.

Daily mean photosynthetically-active surface insolation

`insolation` = TOA flux * (1 - `albedo`) * `parfrac`

See insolMITgcmDIC for details.

Parameters

  • albedo[Float64]=0.6, default_value=0.6, description="mean planetary albedo"
  • parfrac[Float64]=1.0, default_value=1.0, description="fraction of radiation that is photosynthetically active"
  • latitude[Vector{Float64}]=Float64[] (degrees N), default_value=Float64[], description="if non-empty, override grid latitude and set explicitly for each surface cell"

Methods and Variables for default Parameters

  • do_force_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"
source
PALEOocean.Global.Insolation.insolMITgcmDICFunction
insolMITgcmDIC(Timeyr,latdeg; albedo=0.6, solar=1360.0, parfrac=1.0) -> sfac

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
source
+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
source
diff --git a/dev/PALEOocean_functions/index.html b/dev/PALEOocean_functions/index.html index a968885..f242740 100644 --- a/dev/PALEOocean_functions/index.html +++ b/dev/PALEOocean_functions/index.html @@ -1,8 +1,8 @@ -PALEOocean functions · PALEOocean Documentation

PALEOocean functions

Helper functions for use by Reactions.

Configuring Domains and Variables

PALEOocean.Ocean.set_model_domainsFunction
set_model_domains(model::PB.Model, oceangrid, surfacegrid, floorgrid)

Set model Domain sizes and Subdomains for ocean, oceansurface, oceanfloor Domains. (Helper function for a Reaction implementing ocean transport.)

source
PALEOocean.Ocean.find_transport_varsFunction
find_transport_vars(domain::PB.AbstractDomain; transport_input_components=false) 
-    -> (conc_vars, sms_vars, input_components, num_components)

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)

source

Constructing and using transport matrices

PALEOocean.Ocean.add_loop!Function
add_loop!(A::AbstractMatrix, vm::AbstractVector, L::Real, loopindices)

Add circulation with flux L to transport matrix A, around a closed loop loopindices.

Transport matrix A (s^{-1}) represents tracer transport,

dc/dt = A * c

where c is Vector of tracer concentrations

loopindices is a list of cell indices representing a closed loop, eg [2, 3, 4, 2]

Units for tracers and fluxes are:

  • Ocean / volume based:
    • c: mol m-3 tracer concentration
    • vm: m^3. volume per cell
    • L: m^3 s-1 (volume flux, cf 1 Sverdrup = 1e6 m^3 s-1)
  • Atmosphere / mass based
    • c: kg / total kg, tracer mass mixing ratio
    • vm: kg, total mass per call
    • L: kg s-1 (mass flux)
source
PALEOocean.Ocean.prepare_transportFunction
prepare_transport(m::ReactionMethod, (grid_vars, conc_components, sms_components, input_components)) -> 
-    (grid_vars, conc_components, sms_components, input_components, buffer)

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).

source
PALEOocean.Ocean.do_transportFunction
do_transport(grid_vars, conc_components, sms_components, input_components, buffer, dtm::AbstractMatrix, cr::AbstractCellRange)

Calculate transport rates.

Arguments

  • grid_vars, conc_components, sms_components, input_components: Vectors of data Arrays (created by VarList_components)
  • buffer: buffer arrays created by prepare_transport
  • dtm::AbstractMatrix: transport matrix (units yr-1)
source
PALEOocean.Ocean.do_transport_trFunction
do_transport_tr(grid_vars, conc_components, sms_components, input_components, buffer, 
+PALEOocean functions · PALEOocean Documentation

PALEOocean functions

Helper functions for use by Reactions.

Configuring Domains and Variables

PALEOocean.Ocean.set_model_domainsFunction
set_model_domains(model::PB.Model, oceangrid, surfacegrid, floorgrid)

Set model Domain sizes and Subdomains for ocean, oceansurface, oceanfloor Domains. (Helper function for a Reaction implementing ocean transport.)

source
PALEOocean.Ocean.find_transport_varsFunction
find_transport_vars(domain::PB.AbstractDomain; transport_input_components=false) 
+    -> (conc_vars, sms_vars, input_components, num_components)

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)

source

Constructing and using transport matrices

PALEOocean.Ocean.add_loop!Function
add_loop!(A::AbstractMatrix, vm::AbstractVector, L::Real, loopindices)

Add circulation with flux L to transport matrix A, around a closed loop loopindices.

Transport matrix A (s^{-1}) represents tracer transport,

dc/dt = A * c

where c is Vector of tracer concentrations

loopindices is a list of cell indices representing a closed loop, eg [2, 3, 4, 2]

Units for tracers and fluxes are:

  • Ocean / volume based:
    • c: mol m-3 tracer concentration
    • vm: m^3. volume per cell
    • L: m^3 s-1 (volume flux, cf 1 Sverdrup = 1e6 m^3 s-1)
  • Atmosphere / mass based
    • c: kg / total kg, tracer mass mixing ratio
    • vm: kg, total mass per call
    • L: kg s-1 (mass flux)
source
PALEOocean.Ocean.prepare_transportFunction
prepare_transport(m::ReactionMethod, (grid_vars, conc_components, sms_components, input_components)) -> 
+    (grid_vars, conc_components, sms_components, input_components, buffer)

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).

source
PALEOocean.Ocean.do_transportFunction
do_transport(grid_vars, conc_components, sms_components, input_components, buffer, dtm::AbstractMatrix, cr::AbstractCellRange)

Calculate transport rates.

Arguments

  • grid_vars, conc_components, sms_components, input_components: Vectors of data Arrays (created by VarList_components)
  • buffer: buffer arrays created by prepare_transport
  • dtm::AbstractMatrix: transport matrix (units yr-1)
source
PALEOocean.Ocean.do_transport_trFunction
do_transport_tr(grid_vars, conc_components, sms_components, input_components, buffer, 
     dtm_tr::SparseArrays.SparseMatrixCSC, cr::PB.AbstractCellRange)
 
 do_transport_tr(grid_vars, conc_components, sms_components, input_components, buffer,
-    colptr, rowval, (nzval1, nzval2), (wt1, wt2), cr::PB.AbstractCellRange)

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)

source

Optimized SIMD transport matrix x contiguous packed conc data array

source

Optimized transport using transport matrices with a common sparsity pattern

PALEOocean.Ocean.TrsptCSCType
TrsptCSC

Store multiple SparseArrays.SparseMatrixCSC with a common sparsity pattern.

This allows fast interpolation for eg a time-series of transport matrices over a seasonal cycle.

SparseMatrixCSC format, except with a Vector of nzval, ie:

  • colptr: Column j is in colptr[j]:(colptr[j+1]-1)
  • rowval: Row indices of stored values
  • nzval: Vector of Vector of non-zero values
source
PALEOocean.Ocean.create_common_sparsity_tr!Function
create_common_sparsity_tr!(a_matrices; do_transpose, TMeltype=Float64) -> TrsptCSC

Reduce a collection of matrices to common sparsity pattern, optionally transposing.

NB: a_matrices is used as workspace and contents deleted.

source

Optimized transport using SIMD packed vectors

PALEOocean.Ocean.PackedBufferType
PackedBuffer

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.

source
+ colptr, rowval, (nzval1, nzval2), (wt1, wt2), cr::PB.AbstractCellRange)

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)

source

Optimized SIMD transport matrix x contiguous packed conc data array

source

Optimized transport using transport matrices with a common sparsity pattern

PALEOocean.Ocean.TrsptCSCType
TrsptCSC

Store multiple SparseArrays.SparseMatrixCSC with a common sparsity pattern.

This allows fast interpolation for eg a time-series of transport matrices over a seasonal cycle.

SparseMatrixCSC format, except with a Vector of nzval, ie:

  • colptr: Column j is in colptr[j]:(colptr[j+1]-1)
  • rowval: Row indices of stored values
  • nzval: Vector of Vector of non-zero values
source
PALEOocean.Ocean.create_common_sparsity_tr!Function
create_common_sparsity_tr!(a_matrices; do_transpose, TMeltype=Float64) -> TrsptCSC

Reduce a collection of matrices to common sparsity pattern, optionally transposing.

NB: a_matrices is used as workspace and contents deleted.

source

Optimized transport using SIMD packed vectors

PALEOocean.Ocean.PackedBufferType
PackedBuffer

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.

source
diff --git a/dev/collated_examples/transport_examples/README/index.html b/dev/collated_examples/transport_examples/README/index.html index a7d1884..77a1c82 100644 --- a/dev/collated_examples/transport_examples/README/index.html +++ b/dev/collated_examples/transport_examples/README/index.html @@ -1,2 +1,2 @@ -Transport examples · PALEOocean Documentation

Transport examples

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.

Advection

julia> include("PALEO_examples_transport_advect.jl")

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.

Tracer advection image

Figure 1

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

Diffusion

julia> include("PALEO_examples_transport_diffuse.jl")

This uses TransportExamples.ReactionTransportDiffuseExample defined in TransportExamples.jl to construct a transport matrix with constant vertical diffusivity Kz.

Tracer diffusion image

Figure 2

Constant diffusivity Kz columns :a and :b. Cell thickness in :b is 10x that of :a

Additional Reactions

+Transport examples · PALEOocean Documentation

Transport examples

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.

Advection

julia> include("PALEO_examples_transport_advect.jl")

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.

Tracer advection image

Figure 1

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

Diffusion

julia> include("PALEO_examples_transport_diffuse.jl")

This uses TransportExamples.ReactionTransportDiffuseExample defined in TransportExamples.jl to construct a transport matrix with constant vertical diffusivity Kz.

Tracer diffusion image

Figure 2

Constant diffusivity Kz columns :a and :b. Cell thickness in :b is 10x that of :a

Additional Reactions

diff --git a/dev/objects.inv b/dev/objects.inv index 69b4c8eabd55c1c183207c380a9f96be3e73b2f7..8a161b8b0729f238fcbfba2a3d203844d2dad043 100644 GIT binary patch delta 12 Tcmcb_e~EuW0Hf)~z(#feAHxJ= delta 12 Tcmcb_e~EuW0Hevqz(#feAHD=)