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)        |
|                    -->--->-          |
|-------------------|----|  |          |   
|                   |    |  |     /|\  |
|                   |    |__|______|___|    
|                   |       |      |   |
|  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

         --------------------------------------------------
        | 5(r)      |  1 (s)                 | 2(h)        |
        |           |                        |             |
        |-----------|------------------------|             |   
        | 6(rc)     |                        |             |
        |           |  3 (i)                 |_____________|    
         -----------|                        |             |
           |        |------------------------              |
           |           4(d)                                |
           |                                               |
            -----------------------------------------------

Parameters

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

Methods and Variables for default Parameters

  • do_setup_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     |
 |      |       |        |
  |     |       |       | 
   |    |       |      |
   | 13 |  46   | 79  |  
    -------------------

  :hlat   :gyre   :upw
---------------------------
|  1    |  4    |  9      |
 |      |       |        |
  |     |       |       | 
   |    |       |      |
   | 3  |  8    | 13  |  
   -------------------

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

Black Sea configuration (circname = Black_Sea)

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

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

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

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

variable_links:
    bosph_outflow_*: ocean.oceansurface.*_sms

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

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

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

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

Implementation

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

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

Parameters

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

Methods and Variables

  • do_setup_grid

    • volume (m^3), VT_ReactProperty, description="volume of ocean cells"
    • volume_total (m^3), VT_ReactProperty, description="total volume of ocean cells"
    • Abox (m^2), VT_ReactProperty, description="horizontal area of box"
    • zupper (m), VT_ReactProperty, description="depth of upper surface of box (m) 0 is surface, -100 is depth of 100 m"
    • zlower (m), VT_ReactProperty, description="depth of lower surface of box (m)"
    • zmid (m), VT_ReactProperty, description="mean depth of box"
    • rho_ref (kg m^-3), VT_ReactProperty, description="Ocean transport model density conversion factor (NB: this an artificial model quantity determined by the offline model for tracer transport, and may be distinct from physical ocean density, and from any density anomaly / potl density used by the offline physical model)"
    • pressure (dbar), VT_ReactProperty, description="Ocean pressure"
    • Afloor –> oceanfloor.Afloor (m^2), VT_ReactProperty, description="horizontal area of seafloor at base of box"
    • Afloor_total –> oceanfloor.Afloor_total (m^2), VT_ReactProperty, description="total area of seafloor"
    • zfloor –> oceanfloor.zfloor (m), VT_ReactProperty, description="depth of ocean floor (m, -ve)"
    • Asurf –> oceansurface.Asurf (m^2), VT_ReactProperty, description="horizontal area of oceansurface"
    • sal (psu), VT_ReactProperty, description="Ocean salinity"
    • rho (kg m^-3), VT_ReactProperty, description="physical ocean density"
    • open_area_fraction –> oceansurface.open_area_fraction (), VT_ReactProperty, description="fraction of area open to atmosphere"
  • do_temperature

    • [TEMP] –> global.TEMP (K), VT_ReactDependency, description="global mean temperature"
    • temp (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:
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