Metadata
Component model such as VertexModel
and EdgeModel
can store metadata. We distinguish between two kinds of metadata: component metadata and symbol metadata.
Component Metadata
Component metadata is a Dict{Symbol,Any}
attached to each component to store various information. Use metadata
to retrieve the full dict.
To access the data, you can use the methods has_metadata
, get_metadata
and set_metadata!
(see Component Metadata API).
Special metadata:
:init_residual
: after Component-wise Initialization, this field stores the residual vector of the nonlinear problem.:graphelement
: optional field to specialize the graphelement for each component (vidx
) for vertices,(;src,dst)
named tuple of either vertex names or vertex indices for edges. Has special accessorshas_/get_/set_graphelement
.
Symbol Metadata
Each component stores symbol metadata. The symbol metadata is a Dict{Symbol, Dict{Symbol, Any}}
which stores a metadate dict per symbol. Symbols are everything that appears in sym
, psym
, obssym
and insym
.
To access the data, you can use the methods has_metadata
, get_metadata
and set_metadata!
(see Per Symbol Metadata API).
Special cases for symbol metadata are:
default
: Stores default values for states/parameters. In initialization, those are considered fixed.guess
: Stores a guess for a state/parameter which needs to solved during initialization ("free" variables).bounds
: Store bounds for variables/parametersinit
: Stores the solution of the "free" variables during initialization.
Fore those, there are special functions has_*
, get_*
and set_*!
. See Per Symbol Metadata API.
Those are closely aligned to the metadata use in ModelingToolkit. They are automatically copied from the ODESystem
if you use MTK models to create NetworkDynamics models.