Agate.jl-NiPiZD model
Agate.Models.NiPiZD.construct — Function
construct(; kw...) -> bgcConstruct a size-structured NiPiZD ecosystem model.
The NiPiZD 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 NiPiZD factory includes idealized nutrient (N) and detritus (D) cycling. The returned biogeochemistry instance includes a photosynthetically active radiation (PAR) auxiliary field.
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].
Keywords
phyto_size_structure=(n=2, min_esd=2, max_esd=10, splitting=:log_splitting): phytoplankton size structurezoo_size_structure=(n=2, min_esd=20, max_esd=100, splitting=:linear_splitting): zooplankton size structureparameters=(;): parameter overrides (validated against the NiPiZD parameter set). Vector parameters may be supplied positionally, as partial NamedTuple overrides keyed by plankton class name, or as allometric definitions for diameter-indexed plankton vectors.palatability_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 architecture inference and default scalar-type selectionscalar_type=nothing: explicit runtime scalar type. When omitted, construction useseltype(grid)orFloat64if no grid is suppliedarch=nothing: override the architecture (usually inferred fromgrid)sinking_tracers=nothing: sinking speed overrides, e.g.(D = 2/day, P1 = 0.1/day, ...)open_bottom=true: whether sinking tracers leave the domain
Returns
An Oceananigans.Biogeochemistry.AbstractContinuousFormBiogeochemistry instance.
Example
using Agate.Models: NiPiZD
bgc = NiPiZD.construct()Trait-style allometric parameter overrides may be supplied during construction:
using Oceananigans.Units: day
using Agate.Library.Allometry: AllometricParam, PowerLaw
bgc = NiPiZD.construct(;
parameters=(;
maximum_growth_rate=AllometricParam(
PowerLaw(); prefactor=2 / day, exponent=-0.15
),
),
)Agate.Models.NiPiZD.construct_with_manifest — Function
construct_with_manifest(; kw...) -> bgc, manifestConstruct a model instance and return it with a JSON-compatible model setup manifest.