zoomy_core.numerics.diffusion

zoomy_core.numerics.diffusion#

Structure of a system’s diffusion tensor A in div(A : grad Q), read off diffusion_matrix only. Tells the solver templates which discretisation (none, isotropic, diagonal, dense) the NumericalSystemModel needs.

Module Contents#

Classes#

DiffusionStructure

Classification of the diffusion tensor: kind (none | isotropic | diagonal | dense), whether it is state dependent, and its coefficients.

Functions#

classify_diffusion

Classify sm.<slot> as none, isotropic (one scalar per row), diagonal (direction dependent) or dense (cross-row or cross-derivative entries).

API#

class zoomy_core.numerics.diffusion.DiffusionStructure#

Classification of the diffusion tensor: kind (none | isotropic | diagonal | dense), whether it is state dependent, and its coefficients.

kind: str#

None

state_dependent: bool#

False

coefficients: dict#

‘field(…)’

axis_coefficients: dict#

‘field(…)’

zoomy_core.numerics.diffusion.classify_diffusion(sm, slot: str = 'diffusion_matrix') → zoomy_core.numerics.diffusion.DiffusionStructure#

Classify sm.<slot> as none, isotropic (one scalar per row), diagonal (direction dependent) or dense (cross-row or cross-derivative entries).

Returns

A DiffusionStructure; coefficients are the tensor’s own entries, never looked up by parameter name.