Agate.jl-DARWIN model
Agate.Models.DARWIN.construct — Function
construct(; kw...) -> bgcConstruct a simplified DARWIN-like, size-structured ecosystem model.
TRACERS:
∂t cⱼ = $Uⱼ$DIC - $Mⱼ$ + $Gⱼ$ - $gⱼ$
∂t DIC = ∑($Uⱼ$ DIC) + $R$DOC + $R$POC
∂t DIN = ∑($Uⱼ$DIC * $Qⱼ$N) + $R$DON + $R$PON
∂t PO4 = ∑($Uⱼ$DIC * $Qⱼ$P) + $R$DOP + $R$POP
∂t DOC = ∑($Mⱼ$DOC) + $g$DOC - $R$DOC
∂t DON = ∑($Mⱼ$DOC * $Qⱼ$N) + $g$DON - $R$DON
∂t DOP = ∑($Mⱼ$DOC * $Qⱼ$P) + $g$DOP - $R$DOP
∂t POC = ∑($Mⱼ$POC) + $g$POC - $R$POC
∂t PON = ∑($Mⱼ$POC * $Qⱼ$N) + $g$PON - $R$PON
∂t POP = ∑($Mⱼ$POC * $Qⱼ$P) + $g$POP - $R$POP
where:
- $U$ = uptake
- $R$ = remineralization
- $M$ = mortality
- $g, G$ = grazing losses and gains
- $Q$ = plankton elemental ratios
TRAITS:
μmax, KR, gmax = a*Volume^b
palat = η/(1+($ratio$-$opt$)^2)^σ
where:
- μmax = maximum photosynthetic growth
- KR = nutrient half saturation
- gmax = maximum predation rate
- palat = palatability
- $ratio$ = predator to prey size ratio (diameter)
- $opt$ = predator to prey size optimum (diameter)
- η = prey protection
- σ = predator specificity
The DARWIN model contains two plankton groups: phytoplankton (P) and zooplankton (Z), with size classes defined by their size-structure inputs.
In addition to plankton, the default DARWIN factory includes elemental cycling tracers: dissolved inorganic carbon (DIC), dissolved inorganic nitrogen (DIN), phosphate (PO4), dissolved organic matter (DOC, DON, DOP), and particulate organic matter (POC, PON, POP).
During construction, plankton size (diameter) is used to resolve trait-based parameter vectors and interaction matrices (e.g. palatability and assimilation efficiency). You may override interaction matrices explicitly with palatability_matrix and/or assimilation_matrix.
Size-structure inputs may be a NamedTuple range, for example (n=3, min_esd=1, max_esd=10, splitting=:log_splitting), or an explicit diameter vector such as [1.0, 3.2, 10.0].
The returned biogeochemistry instance includes a photosynthetically active radiation (PAR) auxiliary field.
Keywords
phyto_size_structure=(n=2, min_esd=1.5, max_esd=20.0, splitting=:log_splitting): phytoplankton size structurezoo_size_structure=(n=2, min_esd=20.0, max_esd=100.0, splitting=:log_splitting): zooplankton size structureparameters=(;): parameter overrides (validated against the DARWIN parameter set). Vector parameters may be supplied positionally or as partial NamedTuple overrides keyed by plankton class name.scalar_type=nothing: explicit runtime scalar type. When omitted, construction useseltype(grid)orFloat64if no grid is suppliedpalatability_matrix=nothing: optional palatability matrix override. Must be an explicit rectangular matrix sized to the canonical interaction axes(n_consumer, n_prey).assimilation_matrix=nothing: optional assimilation matrix override. Must be an explicit rectangular matrix sized to the canonical interaction axes(n_consumer, n_prey)grid=BoxModelGrid(): grid used for precision/architecture inference and sinking velocity fieldsarch=nothing: override the architecture (usually inferred fromgrid)sinking_tracers=nothing: sinking speed overrides, e.g.(POC = 10/day, ...)open_bottom=true: whether sinking tracers leave the domain
Returns
An Oceananigans.Biogeochemistry.AbstractContinuousFormBiogeochemistry instance.
Example
using Agate.Models: DARWIN
bgc = DARWIN.construct()Trait-style allometric parameter overrides may be supplied during construction:
using Oceananigans.Units: day
using Agate.Library.Allometry: AllometricParam, PowerLaw
bgc = DARWIN.construct(;
parameters=(;
maximum_growth_rate=AllometricParam(
PowerLaw(); prefactor=2 / day, exponent=-0.15
),
),
)Agate.Models.DARWIN.construct_with_manifest — Function
construct_with_manifest(; kw...) -> bgc, manifestConstruct a model instance and return it with a JSON-compatible model setup manifest.