diff --git a/dev/.documenter-siteinfo.json b/dev/.documenter-siteinfo.json index 1efaccb..c113b2e 100644 --- a/dev/.documenter-siteinfo.json +++ b/dev/.documenter-siteinfo.json @@ -1 +1 @@ -{"documenter":{"julia_version":"1.6.7","generation_timestamp":"2024-06-17T18:34:53","documenter_version":"1.4.1"}} \ No newline at end of file +{"documenter":{"julia_version":"1.6.7","generation_timestamp":"2024-06-18T11:05:04","documenter_version":"1.4.1"}} \ No newline at end of file diff --git a/dev/PALEOocean_Domains/index.html b/dev/PALEOocean_Domains/index.html index 85cae4a..73a39e7 100644 --- a/dev/PALEOocean_Domains/index.html +++ b/dev/PALEOocean_Domains/index.html @@ -1,5 +1,5 @@ -PALEOocean Domains, fluxes, and standard Variables · PALEOocean Documentation

PALEOocean Domains, fluxes, and standard Variables

Domains image

Figure 1

Ocean Domains, subDomains, and fluxes. Compare to full Earth system Domains https://paleotoolkit.github.io/PALEOcopse.jl/dev/COPSE_Domains

Domains

The standard Domain configuration for an atmosphere-ocean model is shown in Figure 1.

  • global This is used for model-wide quantities, typically global budgets and global forcings

  • atmosphere A scalar (0-D) Domain with atmospheric variables and Reactions

  • ocean The ocean Domain represents a 3-D ocean as a vector of cells, with geometry and internal transport defined by an OceanTransport Reaction.

  • oceansurface, oceanfloor oceansurface and oceanfloor represent 2-D boundaries as a vector of cells, with geometry defined by the OceanTransport Reaction. There is a 1-to-1 correspondence between the cells in the 2-D oceansurface Domain, the adjacent ocean surface cells defined by the ocean.oceansurface subdomain. Similarly, there is a 1-to-1 correspondence between the cells in the 2-D oceanfloor Domain, the adjacent ocean floor cells defined by the ocean.oceanfloor subdomain.

Fluxes

Flux Domains are used to hold exchange fluxes in Variables defined by FluxTarget Reactions, see https://paleotoolkit.github.io/PALEOboxes.jl/stable/DesignOverview/#Coupling-Spatial-Domains

  • fluxAtmtoOceansurface Air-sea exchange fluxes are defined in the 2-D fluxAtmtoOceansurface Domain, which contains cells with a 1-to-1 correspondence to the oceansurface Domain.

  • fluxOceanfloor Particulate fluxes from ocean to oceanfloor, and solute exchange fluxes between ocean and oceanfloor, are defined in the 2-D fluxOceanfloor Domain. This contains cells with a 1-to-1 correspondence to cells in the oceanfloor Domain.

  • fluxOceanBurial Ocean burial fluxes are defined in the 2-D fluxOceanburial Domain. This contains cells with a 1-to-1 correspondence to cells in the oceanfloor Domain.

Standard Variables

(see Skeleton ocean-atmosphere configuration)

julia> include("PALEO_examples_oceanskeleton.jl")
show(PB.show_variables(model); allrows=true, allcols=true, eltypes=false, show_row_number=false)
48×8 DataFrame
+PALEOocean Domains, fluxes, and standard Variables · PALEOocean Documentation

PALEOocean Domains, fluxes, and standard Variables

Domains image

Figure 1

Ocean Domains, subDomains, and fluxes. Compare to full Earth system Domains https://paleotoolkit.github.io/PALEOcopse.jl/dev/COPSE_Domains

Domains

The standard Domain configuration for an atmosphere-ocean model is shown in Figure 1.

  • global This is used for model-wide quantities, typically global budgets and global forcings

  • atmosphere A scalar (0-D) Domain with atmospheric variables and Reactions

  • ocean The ocean Domain represents a 3-D ocean as a vector of cells, with geometry and internal transport defined by an OceanTransport Reaction.

  • oceansurface, oceanfloor oceansurface and oceanfloor represent 2-D boundaries as a vector of cells, with geometry defined by the OceanTransport Reaction. There is a 1-to-1 correspondence between the cells in the 2-D oceansurface Domain, the adjacent ocean surface cells defined by the ocean.oceansurface subdomain. Similarly, there is a 1-to-1 correspondence between the cells in the 2-D oceanfloor Domain, the adjacent ocean floor cells defined by the ocean.oceanfloor subdomain.

Fluxes

Flux Domains are used to hold exchange fluxes in Variables defined by FluxTarget Reactions, see https://paleotoolkit.github.io/PALEOboxes.jl/stable/DesignOverview/#Coupling-Spatial-Domains

  • fluxAtmtoOceansurface Air-sea exchange fluxes are defined in the 2-D fluxAtmtoOceansurface Domain, which contains cells with a 1-to-1 correspondence to the oceansurface Domain.

  • fluxOceanfloor Particulate fluxes from ocean to oceanfloor, and solute exchange fluxes between ocean and oceanfloor, are defined in the 2-D fluxOceanfloor Domain. This contains cells with a 1-to-1 correspondence to cells in the oceanfloor Domain.

  • fluxOceanBurial Ocean burial fluxes are defined in the 2-D fluxOceanburial Domain. This contains cells with a 1-to-1 correspondence to cells in the oceanfloor Domain.

Standard Variables

(see Skeleton ocean-atmosphere configuration)

julia> include("PALEO_examples_oceanskeleton.jl")
show(PB.show_variables(model); allrows=true, allcols=true, eltypes=false, show_row_number=false)
48×8 DataFrame
  domain                 name                         type                      units     vfunction     space        field_data     description
 ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
  fluxAtmtoOceansurface  flux_CO2                     VariableDomContribTarget  mol yr-1  VF_Undefined  CellSpace    IsotopeLinear  flux input
@@ -49,4 +49,4 @@
  oceanfloor             Afloor_total                 VariableDomPropDep        m^2       VF_Undefined  ScalarSpace  ScalarData     total area of seafloor
  oceanfloor             zfloor                       VariableDomPropDep        m         VF_Undefined  CellSpace    ScalarData     depth of ocean floor (m, -ve)
  oceansurface           Asurf                        VariableDomPropDep        m^2       VF_Undefined  CellSpace    ScalarData     horizontal area of oceansurface
- oceansurface           open_area_fraction           VariableDomPropDep                  VF_Undefined  CellSpace    ScalarData     fraction of area open to atmosph…

ocean, oceansurface, and oceanfloor Variables are standard grid variables, provided by the ocean transport Reaction (a ReactionOceanTransport3box in this case).

Flux target Variables to accumulate exchange fluxes are provided by ReactionFluxTarget Reactions, the illustrative configuration here defines fluxes for a C, O, P model with atmospheric state variables CO2, O2, and ocean state variables including DIC, TAlk, O2 and P.

+ oceansurface open_area_fraction VariableDomPropDep VF_Undefined CellSpace ScalarData fraction of area open to atmosph…

ocean, oceansurface, and oceanfloor Variables are standard grid variables, provided by the ocean transport Reaction (a ReactionOceanTransport3box in this case).

Flux target Variables to accumulate exchange fluxes are provided by ReactionFluxTarget Reactions, the illustrative configuration here defines fluxes for a C, O, P model with atmospheric state variables CO2, O2, and ocean state variables including DIC, TAlk, O2 and P.

diff --git a/dev/PALEOocean_Reactions/index.html b/dev/PALEOocean_Reactions/index.html index 0d9aec8..a05d644 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,35 @@
            |        |------------------------              |
            |           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.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
PALEOocean.Ocean.OceanTransportRomaniello2010.ReactionOceanTransportRomanielloICBMType
ReactionOceanTransportRomanielloICBM

Modern global and Black Sea ocean transport from (Romaniello and Derry, 2010) (Romaniello and Derry, 2010),

Global configurations (circname = Global_79_Box, circname = Global_13_Box):

The ocean Domain consists of three columns, :hlat, :gyre, :upw

Ocean box indices are:

  :hlat   :gyre   :upw
+---------------------------
+|  1    |  14   |  47     |
+ |      |       |        |
+  |     |       |       | 
+   |    |       |      |
+   | 13 |  46   | 79  |  
+    -------------------
+
+  :hlat   :gyre   :upw
+---------------------------
+|  1    |  4    |  9      |
+ |      |       |        |
+  |     |       |       | 
+   |    |       |      |
+   | 3  |  8    | 13  |  
+   -------------------

The oceansurface Domain has three boxes, the oceanfloor Domain has 1 box per ocean box.

Black Sea configuration (circname = Black_Sea)

The ocean Domain consists of a single column. The oceansurface Domain has one box, the oceanfloor Domain has 1 box per ocean box.

Bosphorus outflow flux (Parameter bosph_outflow) is represented by Variables with default linking to a fluxBosphorusOutflow Domain:

bosph_outflow_<X> --> fluxBosphorusOutflow.flux_<X>

The .yaml configuration file can be used to configure a closed system by adding outflow flux back into the ocean surface:

variable_links:
+    bosph_outflow_*: ocean.oceansurface.*_sms

Bosphorus inflow (plume) flux is represented by Variables with default linking to concentrations and source - sink fluxes in a BosphorusInflow Domain:

bosph_inflow_<X>_conc --> BosphorusInflow.<X>_conc
+bosph_inflow_<X>_sms --> BosphorusInflow.<X>_sms    # will be -ve for flux into Black Sea

the .yaml configuration file can be used to configure a closed system by sourcing inflow flux from ocean surface:

variable_links:
+    bosph_inflow_*_conc: ocean.oceansurface.*_conc
+    bosph_inflow_*_sms: ocean.oceansurface.*_sms

Implementation

Reads Matlab .mat files created from the published SI with Matlab commands:

>> circ_global_79_box = Global_79_Box_ICBM_Params
+>> circ_global_13_box = Global_13_Box_ICBM_Params
+>> circ_black_sea = Black_Sea_ICBM_Params
+>> save('romaniello_global79','-struct', 'circ_global_79_box',  '-v6')
+>> save('romaniello_global13','-struct', 'circ_global_13_box',  '-v6')
+>> save('romaniello_blacksea','-struct', 'circ_black_sea',  '-v6')

Parameters

  • matdir[String]="romaniello2010_transport", default_value="romaniello2010_transport", description="folder with Romaniello (2010) transport and geometry data files"
  • circname[String]="Global_79_Box", default_value="Global_79_Box", allowed_values=["Global79Box", "Global13Box", "Black_Sea"], description="transport matrix from Romaniello(2010) G3"
  • set_temp[Bool]=true, default_value=true, description="true to provide and set ocean.temp variable to (very approximate) values"
  • temp_trackglobal[Bool]=false, default_value=false, description="track global temperature (apply offset of global temp -15C"
  • bosph_outflow[Float64]=6.04e11 (m^3 yr^-1), default_value=6.04e11, description="Bosphorus outflow (Black_Sea only)"
  • bosph_inflow[Float64]=3.05e11 (m^3 yr^-1), default_value=3.05e11, description="Bosphorus inflow (plume, Black_Sea only)"

Methods and Variables

  • do_setup_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

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 30d7cbc..9807fdc 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/References/index.html b/dev/References/index.html index 6391328..5640daa 100644 --- a/dev/References/index.html +++ b/dev/References/index.html @@ -1,2 +1,2 @@ -References · PALEOocean Documentation

References

+References · PALEOocean Documentation

References

diff --git a/dev/collated_examples/PTBClarkson2014/README/index.html b/dev/collated_examples/PTBClarkson2014/README/index.html index 2a295f0..e9b4761 100644 --- a/dev/collated_examples/PTBClarkson2014/README/index.html +++ b/dev/collated_examples/PTBClarkson2014/README/index.html @@ -1,2 +1,2 @@ -PTB land-atmosphere-ocean model (Clarkson 2015) · PALEOocean Documentation
+PTB land-atmosphere-ocean model (Clarkson 2015) · PALEOocean Documentation
diff --git a/dev/collated_examples/blacksea/README/index.html b/dev/collated_examples/blacksea/README/index.html new file mode 100644 index 0000000..6d7b58c --- /dev/null +++ b/dev/collated_examples/blacksea/README/index.html @@ -0,0 +1,2 @@ + +Black Sea intermediate-complexity box model · PALEOocean Documentation

Black Sea intermediate-complexity box model

Black sea examples and test cases, using the 1-column model for the Black sea circulation from (Romaniello and Derry, 2010).

Installation

These examples use ReactionOceanTransportRomanielloICBM to read Matlab data files with the Black sea circulation from (Romaniello and Derry, 2010).

The Matlab datafiles are available as a zip file from https://github.com/PALEOtoolkit/PALEOocean.jl/releases, generated from the Matlab model code available as Supplementary Information to (Romaniello and Derry, 2010).

The examples assume the zip file has been downloaded and unpacked to subfolder ../romglb/romaniello2010_transport (NB: a subfolder of romglb, not this folder blacksea, as the zip file contains both global and Black sea data files)

O2 only air-sea exchange and transport test

include("PALEO_examples_blacksea_O2_only.jl")

P, O2 with parameterized export production

include("PALEO_examples_blacksea_P_O2.jl")

Phosphorus and oxygen, with a parameterization of export production based on light and nutrient availability.

Configured to create a closed circulation by returning Bosphorus outflow back to surface box, and sourcing Bosphorus inflow from surface box.

No burial fluxes (ie oceanfloor phosphorus flux is recycled into water column), so the Black sea is effectively a closed system for phosphorus.

P, O2, S with parameterized export production

include("PALEO_examples_blacksea_P_O2_SO4.jl")

Phosphorus, oxygen, sulphur, with a parameterization of export production based on light and nutrient availability.

diff --git a/dev/collated_examples/mitgcm/README/index.html b/dev/collated_examples/mitgcm/README/index.html index 12a3eda..9069679 100644 --- a/dev/collated_examples/mitgcm/README/index.html +++ b/dev/collated_examples/mitgcm/README/index.html @@ -1,2 +1,2 @@ -MITgcm transport matrix ocean-only examples · PALEOocean Documentation

MITgcm transport matrix ocean-only examples

GCM ocean transport test cases using transport matrices in format defined by (Khatiwala, 2007)

Examples require a download of Samar Khatiwala's TMM files (for MITgcm, UVic models) as described in https://github.com/samarkhatiwala/tmm where TM files are from http://kelvin.earth.ox.ac.uk/spk/Research/TMM/TransportMatrixConfigs/. The TMMDir key in examples\LocalPreferences.toml should then be set to the folder location on the local machine.

Default configurations are set to run for ~10 model yr, single core, single fixed timestep. See comments in .jl files to change run time and enable threading and split-timestep solver (with fast timestep for biogeochemistry and vertical transport).

Approximate model CPU times below are for a single laptop core (a CPU i5-6300U from ~2015).

2.8 degree O2 only abiotic

Minimal test case for ocean transport and air-sea exchange.

Tracers: atmosphere O2, ocean O2

julia> include("MITgcm_2deg8_abiotic.jl")

Wallclock time: 10.3 s core-1 (model yr)-1 with default timestep = 86400 s (1 day)

2.8 degree P, O2

Minimal test case for biotic ocean.

Tracers: atmosphere O2, ocean O2, P, DOP

julia> include("MITgcm_2deg8_PO4MMbase.jl")

Wallclock time: 10.0 s core-1 (model yr)-1 with default timestep = 86400 s (1 day)

2.8 degree P, O2, S, DIC/TAlk

Minimal test case for a biotic ocean with carbonate chemistry, SO4/H2S and CH4.

Modern Earth configuration with O2 set to 0.1 PAL with to provide an anoxic ocean test case.

Tracers: atmosphere O2, CO2(x2), ocean O2, P, DOC(x2), H2S(x2), SO4(x2), CH4(x2), DIC(x2), TAlk (13 ocean tracers, including d13C and d34S isotopes)

julia> include("MITgcm_2deg8_PO4MMcarbSCH4.jl")

Wallclock time: 27.2 s core-1 (model yr)-1 with default timestep = 86400 s (1 day)

Surface P

Figure 1

Surface P concentration at 2000yr. Red lines indicate longitudinal sections

H2S sections 2 H2S sections 1

Figure 2

H2S concentration at 2000yr, sections at longitudes corresponding to red lines in Figure 1

+MITgcm transport matrix ocean-only examples · PALEOocean Documentation

MITgcm transport matrix ocean-only examples

GCM ocean transport test cases using transport matrices in format defined by (Khatiwala, 2007)

Examples require a download of Samar Khatiwala's TMM files (for MITgcm, UVic models) as described in https://github.com/samarkhatiwala/tmm where TM files are from http://kelvin.earth.ox.ac.uk/spk/Research/TMM/TransportMatrixConfigs/. The TMMDir key in examples\LocalPreferences.toml should then be set to the folder location on the local machine.

Default configurations are set to run for ~10 model yr, single core, single fixed timestep. See comments in .jl files to change run time and enable threading and split-timestep solver (with fast timestep for biogeochemistry and vertical transport).

Approximate model CPU times below are for a single laptop core (a CPU i5-6300U from ~2015).

2.8 degree O2 only abiotic

Minimal test case for ocean transport and air-sea exchange.

Tracers: atmosphere O2, ocean O2

julia> include("MITgcm_2deg8_abiotic.jl")

Wallclock time: 10.3 s core-1 (model yr)-1 with default timestep = 86400 s (1 day)

2.8 degree P, O2

Minimal test case for biotic ocean.

Tracers: atmosphere O2, ocean O2, P, DOP

julia> include("MITgcm_2deg8_PO4MMbase.jl")

Wallclock time: 10.0 s core-1 (model yr)-1 with default timestep = 86400 s (1 day)

2.8 degree P, O2, S, DIC/TAlk

Minimal test case for a biotic ocean with carbonate chemistry, SO4/H2S and CH4.

Modern Earth configuration with O2 set to 0.1 PAL with to provide an anoxic ocean test case.

Tracers: atmosphere O2, CO2(x2), ocean O2, P, DOC(x2), H2S(x2), SO4(x2), CH4(x2), DIC(x2), TAlk (13 ocean tracers, including d13C and d34S isotopes)

julia> include("MITgcm_2deg8_PO4MMcarbSCH4.jl")

Wallclock time: 27.2 s core-1 (model yr)-1 with default timestep = 86400 s (1 day)

Surface P

Figure 1

Surface P concentration at 2000yr. Red lines indicate longitudinal sections

H2S sections 2 H2S sections 1

Figure 2

H2S concentration at 2000yr, sections at longitudes corresponding to red lines in Figure 1

diff --git a/dev/collated_examples/ocean3box/README/index.html b/dev/collated_examples/ocean3box/README/index.html index 793d293..7027dc7 100644 --- a/dev/collated_examples/ocean3box/README/index.html +++ b/dev/collated_examples/ocean3box/README/index.html @@ -1,2 +1,2 @@ -3 Box Ocean Examples · PALEOocean Documentation

3 Box Ocean Examples

These examples demonstrate the 3-box (Sarmiento and Toggweiler, 1984), (Toggweiler and Sarmiento, 1985) ocean model, standalone and coupled to the COPSE land surface and sediment/crust (as used in (Clarkson et al., 2015)).

Abiotic CO2/DIC only atmosphere-ocean

julia> include("PALEO_examples_oaonly_abiotic.jl")

Abiotic atmosphere-ocean with atmosphere CO2, ocean DIC, TAlk. Test case cf Sarmiento & Toggweiler (2007) book, Fig 10.4, p436-7

Commented-out options in file to set k_piston to show effect of default/fast/slow air-sea exchange rates

Biotic atmosphere-ocean (no weathering or burial)

julia> include("PALEO_examples_oaonly.jl")

Biotic atmosphere-ocean with atmosphere O2, CO2, ocean P, O2, SO4/H2S, CH4, DIC, TAlk (no weathering or burial).

Use in conjunction with expt='killbio' (disables production at t=0 yr) to demonstrate effect of biological pump.

Open atmosphere-ocean with silicate/carbonate weathering and burial

julia> include("PALEO_examples_oaopencarb.jl")

Biotic atmosphere-ocean with atmosphere O2, CO2, ocean P, O2, SO4/H2S, CH4, DIC, TAlk

Open atm-ocean carbonate system, with carbonate/silicate weathering input, degassing input, and carbonate burial output

Closed ocean organic carbon, sulphur systems (no burial)

+3 Box Ocean Examples · PALEOocean Documentation

3 Box Ocean Examples

These examples demonstrate the 3-box (Sarmiento and Toggweiler, 1984), (Toggweiler and Sarmiento, 1985) ocean model, standalone and coupled to the COPSE land surface and sediment/crust (as used in (Clarkson et al., 2015)).

Abiotic CO2/DIC only atmosphere-ocean

julia> include("PALEO_examples_oaonly_abiotic.jl")

Abiotic atmosphere-ocean with atmosphere CO2, ocean DIC, TAlk. Test case cf Sarmiento & Toggweiler (2007) book, Fig 10.4, p436-7

Commented-out options in file to set k_piston to show effect of default/fast/slow air-sea exchange rates

Biotic atmosphere-ocean (no weathering or burial)

julia> include("PALEO_examples_oaonly.jl")

Biotic atmosphere-ocean with atmosphere O2, CO2, ocean P, O2, SO4/H2S, CH4, DIC, TAlk (no weathering or burial).

Use in conjunction with expt='killbio' (disables production at t=0 yr) to demonstrate effect of biological pump.

Open atmosphere-ocean with silicate/carbonate weathering and burial

julia> include("PALEO_examples_oaopencarb.jl")

Biotic atmosphere-ocean with atmosphere O2, CO2, ocean P, O2, SO4/H2S, CH4, DIC, TAlk

Open atm-ocean carbonate system, with carbonate/silicate weathering input, degassing input, and carbonate burial output

Closed ocean organic carbon, sulphur systems (no burial)

diff --git a/dev/collated_examples/romglb/README/index.html b/dev/collated_examples/romglb/README/index.html new file mode 100644 index 0000000..d8c159e --- /dev/null +++ b/dev/collated_examples/romglb/README/index.html @@ -0,0 +1,2 @@ + +Intermediate-complexity global ocean · PALEOocean Documentation

Intermediate-complexity global ocean

Intermediate-complexity global ocean examples and test cases, using the 3-column box model for the global ocean circulation from (Romaniello and Derry, 2010).

Installation

These examples use ReactionOceanTransportRomanielloICBM to read Matlab data files with the 3-column box model circulation from (Romaniello and Derry, 2010).

The Matlab datafiles are available as a zip file from https://github.com/PALEOtoolkit/PALEOocean.jl/releases, generated from the Matlab model code available as Supplementary Information to (Romaniello and Derry, 2010).

The examples assume the zip file has been downloaded and unpacked to subfolder romaniello2010_transport

O2 only air-sea exchange and transport test

include("PALEO_examples_romglb_O2_only.jl")

P, O2 with parameterized export production

include("PALEO_examples_romglb_P_O2.jl")

Phosphorus and oxygen, with a parameterization of export production based on light and nutrient availability.

No burial fluxes (ie oceanfloor phosphorus flux is recycled into water column), so the ocean is effectively a closed system for phosphorus.

P, O2 with organic carbon and phosphorus burial

include("PALEO_examples_romglb_P_O2_open.jl")

Phosphorus and oxygen, with a parameterization of export production based on light and nutrient availability.

Burial efficiency parameterization for burial fluxes of organic carbon and phosphorus, with ocean phosphorus restored to modern level.

P, O2, S, DIC with organic carbon, phosphorus, and carbonate burial

include("PALEO_examples_romglb_P_O2_S_Carb_open.jl")

Phosphorus, oxygen, sulphur and DIC, with a parameterization of export production based on light and nutrient availability.

Burial efficiency parameterization for burial fluxes of organic carbon and phosphorus, with ocean phosphorus restored to modern level.

Burial efficiency parameterisation of carbonate burial, with shelf carbonate burial based on saturation state and shelf area, and deep carbonate burial based on oceanfloor flux and saturation state. Ocean TAlk and atmosphere pCO2 are restored to constant values (so restoring fluxes will balance CaCO3 burial).

No pyrite or gypsum burial (so ocean is a closed system for sulphur).

diff --git a/dev/collated_examples/shelf1D/README/index.html b/dev/collated_examples/shelf1D/README/index.html index eeb4f5c..bc38fcf 100644 --- a/dev/collated_examples/shelf1D/README/index.html +++ b/dev/collated_examples/shelf1D/README/index.html @@ -1,2 +1,2 @@ -1D shelf sea examples and test cases · PALEOocean Documentation

1D shelf sea examples and test cases

Shelf Domains and Processes

Figure 1

1D shelf configuration Domains and processes. Blue dots: tracers. Red arrows: circulation transport represented as eddy diffusivivity Kz, implmented by PALEOocean.Ocean.OceanTransportColumn.ReactionOceanTransportColumn. Black arrow: vertical transport, implemented by PALEOocean.Ocean.VerticalTransport.ReactionSinkFloat

Installation and configuration

These examples require netcdf files defining an annual cycle of physical variables:

  • water column eddy diffusivity Kz, temperature, density
  • surface windspeed

The example configurations assume a zip file (available from https://github.com/PALEOtoolkit/PALEOocean.jl/releases) with an illustrative 80m deep seasonally-stratifying shelf (50N, Celtic sea) derived from the S2P3 model has been unpacked to subfolder S2P3_transport_20240614

(this is collated output from the Windows 'Physics Biology Model' (s2p3.exe), http://pcwww.liv.ac.uk/~jons/model.htm see 'Introduction to the Physical and Biological Oceanography of Shelf Seas', Simpson & Sharples (2012), CUP)

1D shelf examples

O2 and passive tracer test case

julia> include("PALEO_examples_shelf1D_O2_only.jl")

Test case demonstrating O2 air-sea exchange, and mixing of fast and slow sinking passive tracers.

Minimal phytoplankton P, O2

julia> include("PALEO_examples_shelf1D_P_O2.jl")

Minimal single-nutrient (parameterized as phosphorus) and light-limited phytoplankton population.

Sulphur and carbonate system

julia> include("PALEO_examples_shelf1D_P_O2_S_CH4_carb.jl")

Oxygenic and anoxygenic phytoplankton populations, with sulphur + methane and marine carbonate system.

1D shelf + sediment examples

Minimal phytoplankton water-column sediment

julia> include("PALEO_examples_shelf1Dsed.jl")

Coupled water-column - sediment configuration, with single phytoplankton population, sulphur + methane.

Reading output with python xarray

Test xarray netcdf.ipynb demonstrates reading PALEO netcdf output using Python xarray.

+1D shelf sea examples and test cases · PALEOocean Documentation

1D shelf sea examples and test cases

Shelf Domains and Processes

Figure 1

1D shelf configuration Domains and processes. Blue dots: tracers. Red arrows: circulation transport represented as eddy diffusivivity Kz, implmented by PALEOocean.Ocean.OceanTransportColumn.ReactionOceanTransportColumn. Black arrow: vertical transport, implemented by PALEOocean.Ocean.VerticalTransport.ReactionSinkFloat

Installation and configuration

These examples require netcdf files defining an annual cycle of physical variables:

  • water column eddy diffusivity Kz, temperature, density
  • surface windspeed

The example configurations assume a zip file (available from https://github.com/PALEOtoolkit/PALEOocean.jl/releases) with an illustrative 80m deep seasonally-stratifying shelf (50N, Celtic sea) derived from the S2P3 model has been unpacked to subfolder S2P3_transport_20240614

(this is collated output from the Windows 'Physics Biology Model' (s2p3.exe), http://pcwww.liv.ac.uk/~jons/model.htm see 'Introduction to the Physical and Biological Oceanography of Shelf Seas', Simpson & Sharples (2012), CUP)

1D shelf examples

O2 and passive tracer test case

julia> include("PALEO_examples_shelf1D_O2_only.jl")

Test case demonstrating O2 air-sea exchange, and mixing of fast and slow sinking passive tracers.

Minimal phytoplankton P, O2

julia> include("PALEO_examples_shelf1D_P_O2.jl")

Minimal single-nutrient (parameterized as phosphorus) and light-limited phytoplankton population.

Sulphur and carbonate system

julia> include("PALEO_examples_shelf1D_P_O2_S_CH4_carb.jl")

Oxygenic and anoxygenic phytoplankton populations, with sulphur + methane and marine carbonate system.

1D shelf + sediment examples

Minimal phytoplankton water-column sediment

julia> include("PALEO_examples_shelf1Dsed.jl")

Coupled water-column - sediment configuration, with single phytoplankton population, sulphur + methane.

Reading output with python xarray

Test xarray netcdf.ipynb demonstrates reading PALEO netcdf output using Python xarray.

diff --git a/dev/collated_examples/skeleton_configuration/README/index.html b/dev/collated_examples/skeleton_configuration/README/index.html index cbf6fc2..0a20299 100644 --- a/dev/collated_examples/skeleton_configuration/README/index.html +++ b/dev/collated_examples/skeleton_configuration/README/index.html @@ -1,5 +1,5 @@ -Skeleton ocean-atmosphere configuration · PALEOocean Documentation

Skeleton ocean-atmosphere configuration

A "skeleton" ocean-atmosphere configuration, defining Domains and fluxes but no biogeochemistry. Illustrative fluxes are configured for a C, O, P model.

yaml configuration file

The model configuration (file examples/skeleton_configuration/PALEO_examples_oceanskeleton_cfg.yaml) contains:


+Skeleton ocean-atmosphere configuration · PALEOocean Documentation

Skeleton ocean-atmosphere configuration

A "skeleton" ocean-atmosphere configuration, defining Domains and fluxes but no biogeochemistry. Illustrative fluxes are configured for a C, O, P model.

yaml configuration file

The model configuration (file examples/skeleton_configuration/PALEO_examples_oceanskeleton_cfg.yaml) contains:


 
 
 # skeleton atmosphere-ocean configuration
@@ -156,4 +156,4 @@
  oceanfloor             Afloor_total                 VariableDomPropDep        m^2       VF_Undefined  ScalarSpace  ScalarData     total area of seafloor
  oceanfloor             zfloor                       VariableDomPropDep        m         VF_Undefined  CellSpace    ScalarData     depth of ocean floor (m, -ve)
  oceansurface           Asurf                        VariableDomPropDep        m^2       VF_Undefined  CellSpace    ScalarData     horizontal area of oceansurface
- oceansurface           open_area_fraction           VariableDomPropDep                  VF_Undefined  CellSpace    ScalarData     fraction of area open to atmosph…

ocean, oceansurface, and oceanfloor Variables are standard grid variables, provided by the ocean transport Reaction (a ReactionOceanTransport3box in this case).

Flux target Variables to accumulate exchange fluxes are provided by ReactionFluxTarget Reactions, the illustrative configuration here defines fluxes for a C, O, P model with atmospheric state variables CO2, O2, and ocean state variables including DIC, TAlk, O2 and P.

+ oceansurface open_area_fraction VariableDomPropDep VF_Undefined CellSpace ScalarData fraction of area open to atmosph…

ocean, oceansurface, and oceanfloor Variables are standard grid variables, provided by the ocean transport Reaction (a ReactionOceanTransport3box in this case).

Flux target Variables to accumulate exchange fluxes are provided by ReactionFluxTarget Reactions, the illustrative configuration here defines fluxes for a C, O, P model with atmospheric state variables CO2, O2, and ocean state variables including DIC, TAlk, O2 and P.

diff --git a/dev/collated_examples/transport_examples/README/index.html b/dev/collated_examples/transport_examples/README/index.html index 364f8e1..b81eac3 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/index.html b/dev/index.html index 7175f5c..c266dbd 100644 --- a/dev/index.html +++ b/dev/index.html @@ -1,4 +1,4 @@ -PALEOocean.jl documentation · PALEOocean Documentation

PALEOocean.jl documentation

Ocean components for the PALEOtoolkit biogeochemical model framework.

The PALEOocean package provides:

  • a catalog of ocean circulation models, including low-dimensional box models and GCM transport-matrix representations of the global ocean at resolutions up to 1 deg.
  • air-sea exchange
  • vertical tracer and light transport
  • biological production
  • parameterisations of burial fluxes

Installation

Using PALEOocean Reactions from other models

The PALEOocean Reactions are available to the PALEOtoolkit framework when the registered PALEOocean package is installed and loaded:

julia> Pkg.add("PALEOocean") #  install PALEOocean package in the currently active Julia environment
+PALEOocean.jl documentation · PALEOocean Documentation

PALEOocean.jl documentation

Ocean components for the PALEOtoolkit biogeochemical model framework.

The PALEOocean package provides:

  • a catalog of ocean circulation models, including low-dimensional box models and GCM transport-matrix representations of the global ocean at resolutions up to 1 deg.
  • air-sea exchange
  • vertical tracer and light transport
  • biological production
  • parameterisations of burial fluxes

Installation

Using PALEOocean Reactions from other models

The PALEOocean Reactions are available to the PALEOtoolkit framework when the registered PALEOocean package is installed and loaded:

julia> Pkg.add("PALEOocean") #  install PALEOocean package in the currently active Julia environment
 julia> import PALEOocean

Running PALEOocean examples

To install and run the PALEOocean examples, clone this github repository to local directory PALEOocean and run the examples from the Julia REPL.

Quickstart assuming a recent Julia installation: from a linux bash prompt or a Windows terminal,

$ git clone https://github.com/PALEOtoolkit/PALEOocean.jl.git PALEOocean

Start julia and navigate to the PALEOocean/examples folder, and run setup.jl to configure the PALEOocean/examples Julia environment to use the local (downloaded) version of the PALEOocean package:

julia> cd("PALEOocean/examples")
-julia> include("setup.jl") # use the local version of PALEOocean packages to allow local modifications

Examples are in subfolders of PALEOocean/examples/ and use the PALEOocean/examples Julia environment.

See Installation and getting started in the PALEOtutorials repository for more details including installation and configuration of Julia.

+julia> include("setup.jl") # use the local version of PALEOocean packages to allow local modifications

Examples are in subfolders of PALEOocean/examples/ and use the PALEOocean/examples Julia environment.

See Installation and getting started in the PALEOtutorials repository for more details including installation and configuration of Julia.

diff --git a/dev/indexpage/index.html b/dev/indexpage/index.html index e6dbec0..4e6b20c 100644 --- a/dev/indexpage/index.html +++ b/dev/indexpage/index.html @@ -1,2 +1,2 @@ -Index · PALEOocean Documentation

Index

+Index · PALEOocean Documentation

Index

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