From 828d6d4ffb4ee21899980c2f9de0b526e4b2f15b Mon Sep 17 00:00:00 2001 From: "Documenter.jl" Date: Fri, 21 Jun 2024 11:05:35 +0000 Subject: [PATCH] build based on e4b7fd1 --- dev/.documenter-siteinfo.json | 2 +- dev/PALEOocean_Domains/index.html | 2 +- dev/PALEOocean_Reactions/index.html | 12 ++++++------ dev/PALEOocean_functions/index.html | 8 ++++---- dev/References/index.html | 2 +- .../PTBClarkson2014/README/index.html | 2 +- dev/collated_examples/blacksea/README/index.html | 2 +- dev/collated_examples/mitgcm/README/index.html | 2 +- dev/collated_examples/ocean3box/README/index.html | 2 +- dev/collated_examples/romglb/README/index.html | 2 +- dev/collated_examples/shelf1D/README/index.html | 2 +- .../skeleton_configuration/README/index.html | 2 +- .../transport_examples/README/index.html | 2 +- dev/index.html | 2 +- dev/indexpage/index.html | 2 +- 15 files changed, 23 insertions(+), 23 deletions(-) diff --git a/dev/.documenter-siteinfo.json b/dev/.documenter-siteinfo.json index 2227390..f08ebcb 100644 --- a/dev/.documenter-siteinfo.json +++ b/dev/.documenter-siteinfo.json @@ -1 +1 @@ -{"documenter":{"julia_version":"1.10.4","generation_timestamp":"2024-06-20T21:56:06","documenter_version":"1.4.1"}} \ No newline at end of file +{"documenter":{"julia_version":"1.10.4","generation_timestamp":"2024-06-21T11:05:32","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 a812b55..2abf21a 100644 --- a/dev/PALEOocean_Domains/index.html +++ b/dev/PALEOocean_Domains/index.html @@ -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 8bb0b41..c042847 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 (K), 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 (K), 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,7 +19,7 @@
            |        |------------------------              |
            |           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 (K), 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
+        -----------------------------------------------

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 (K), 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     |
  |      |       |        |
@@ -44,10 +44,10 @@
 >> 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 (K), 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] (mol yr-1), 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)
+>> 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 (K), 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] (mol yr-1), 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 301fafb..26cba94 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 b0f87e1..553fe30 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 5e843b8..f961fcc 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 index e33c2a1..063df82 100644 --- a/dev/collated_examples/blacksea/README/index.html +++ b/dev/collated_examples/blacksea/README/index.html @@ -1,4 +1,4 @@ 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). The script download_data_files.jl provides a function to do this:

include("../romglob/download_romaniello2010_files.jl")
 
-download_romaniello2010_files()  # download and unzip

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.

+download_romaniello2010_files() # download and unzip

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 a21c029..a3d9dbb 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 e80d5f3..8760ef1 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 index 8b26b79..5c98465 100644 --- a/dev/collated_examples/romglb/README/index.html +++ b/dev/collated_examples/romglb/README/index.html @@ -1,4 +1,4 @@ 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, the script download_romaniello2010_files.jl provides a function to do this:

include("download_romaniello2010_files.jl")
 
-download_romaniello2010_files()  # download and unzip

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

+download_romaniello2010_files() # download and unzip

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 5f7cbcc..c344bcc 100644 --- a/dev/collated_examples/shelf1D/README/index.html +++ b/dev/collated_examples/shelf1D/README/index.html @@ -1,4 +1,4 @@ 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, the script download_S2P3_files.jl provides a function to do this:

include("download_S2P3_files.jl")
 
-download_romaniello_S2P3_files()  # download and unzip

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

+download_romaniello_S2P3_files() # download and unzip

(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 a6e8595..5957db4 100644 --- a/dev/collated_examples/skeleton_configuration/README/index.html +++ b/dev/collated_examples/skeleton_configuration/README/index.html @@ -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 cae9c56..c96680d 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 1129da8..7d7ffd6 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
 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 c32b188..14b8ae3 100644 --- a/dev/indexpage/index.html +++ b/dev/indexpage/index.html @@ -1,2 +1,2 @@ -Index · PALEOocean Documentation

Index

+Index · PALEOocean Documentation

Index