Skip to content
Get started

eqiora.fluid

← Python API index

Configure incompressible flow and inspect its results.

View source
python
from eqiora.fluid import IncompressibleScaling
scaling = IncompressibleScaling(length_m=0.1, velocity_m_per_s=1.0)
print(scaling.length_m, scaling.velocity_m_per_s)

For the exact-cylinder flow setup in modeling, pass this as scaling= to eqiora.resolve. These reference values scale the numerical system; inlet speed, viscosity, and other physical values belong in the model.

Plan view for incompressible flow: velocity and pressure fields, their spaces, the pressure gauge, and the scales.

python
@final
class IncompressibleFlowPlanView:
@property
def kind(self) -> str: ...
@property
def velocity(self) -> FieldRef: ...
@property
def pressure(self) -> FieldRef: ...
@property
def velocity_space(self) -> str: ...
@property
def pressure_space(self) -> str: ...
@property
def pressure_gauge(self) -> PressureGauge2d | None: ...
@property
def scaling(self) -> IncompressibleScales: ...
@property
def scaling_receipt(self) -> IncompressibleScalingReceipt2d: ...

Scales used by a resolved 2D incompressible-flow Plan.

python
@final
class IncompressibleScales:
@property
def length_m(self) -> float: ...
@property
def velocity_m_per_s(self) -> float: ...
@property
def pressure_pa(self) -> float: ...
@property
def gauge_per_s(self) -> float: ...
@property
def weak_functional_w(self) -> float: ...

Reference scales to set by hand for supported 2D incompressible-flow Plans.

A component left as None is derived automatically when the Plan is resolved.

python
@final
class IncompressibleScaling:
def __new__(cls, *, length_m: float | None=None, velocity_m_per_s: float | None=None, pressure_pa: float | None=None) -> IncompressibleScaling: ...
@property
def length_m(self) -> float | None: ...
@property
def velocity_m_per_s(self) -> float | None: ...
@property
def pressure_pa(self) -> float | None: ...
def __eq__(self, other: object, /) -> bool: ...
def __hash__(self) -> int: ...

Model or geometry value that a scaling component was derived from.

python
@final
class IncompressibleScalingAuthority2d:
@property
def kind(self) -> IncompressibleScalingAuthorityKind: ...
@property
def axis(self) -> int | None: ...
@property
def bounds_m(self) -> tuple[float, float] | None: ...
@property
def coordinate_m(self) -> tuple[float, float] | None: ...
@property
def outward_normal(self) -> tuple[float, float] | None: ...
@property
def velocity_m_per_s(self) -> tuple[float, float] | None: ...
@property
def dynamic_viscosity_pa_s(self) -> float | None: ...

Kind of value a scaling component was derived from.

python
@final
class IncompressibleScalingAuthorityKind:
ManualRequest: ClassVar[IncompressibleScalingAuthorityKind]
ExactGeometrySpan: ClassVar[IncompressibleScalingAuthorityKind]
ModelInletMaximum: ClassVar[IncompressibleScalingAuthorityKind]
ModelDynamicViscosity: ClassVar[IncompressibleScalingAuthorityKind]
def __eq__(self, other: object, /) -> bool: ...
def __hash__(self) -> int: ...

Component of the 2D incompressible-flow scaling.

python
@final
class IncompressibleScalingComponent2d:
Length: ClassVar[IncompressibleScalingComponent2d]
Velocity: ClassVar[IncompressibleScalingComponent2d]
Pressure: ClassVar[IncompressibleScalingComponent2d]
Gauge: ClassVar[IncompressibleScalingComponent2d]
WeakFunctional: ClassVar[IncompressibleScalingComponent2d]
def __eq__(self, other: object, /) -> bool: ...
def __hash__(self) -> int: ...

Value of one scaling component and how it was obtained.

python
@final
class IncompressibleScalingComponentRecord2d:
@property
def component(self) -> IncompressibleScalingComponent2d: ...
@property
def value(self) -> float: ...
@property
def dimension(self) -> tuple[Fraction, Fraction, Fraction, Fraction, Fraction, Fraction, Fraction]: ...
@property
def mode(self) -> IncompressibleScalingMode: ...
@property
def rule(self) -> IncompressibleScalingRule2d: ...
@property
def dependencies(self) -> tuple[IncompressibleScalingComponent2d, ...]: ...
@property
def authorities(self) -> tuple[IncompressibleScalingAuthority2d, ...]: ...

Whether a scaling component was set by hand, chosen automatically, or derived from other components.

python
@final
class IncompressibleScalingMode:
Manual: ClassVar[IncompressibleScalingMode]
Automatic: ClassVar[IncompressibleScalingMode]
Derived: ClassVar[IncompressibleScalingMode]
def __eq__(self, other: object, /) -> bool: ...
def __hash__(self) -> int: ...

Record of all five scaling components and the Model, geometry, and mesh they were derived from.

python
@final
class IncompressibleScalingReceipt2d:
@property
def provenance_digest(self) -> str: ...
@property
def model_digest(self) -> str: ...
@property
def geometry_digest(self) -> str: ...
@property
def correspondence_digest(self) -> str: ...
@property
def mesh_digest(self) -> str: ...
@property
def production_digest(self) -> str | None: ...
@property
def length(self) -> IncompressibleScalingComponentRecord2d: ...
@property
def velocity(self) -> IncompressibleScalingComponentRecord2d: ...
@property
def pressure(self) -> IncompressibleScalingComponentRecord2d: ...
@property
def gauge(self) -> IncompressibleScalingComponentRecord2d: ...
@property
def weak_functional(self) -> IncompressibleScalingComponentRecord2d: ...
@property
def components(self) -> tuple[IncompressibleScalingComponentRecord2d, ...]: ...

Rule used to compute one scaling component.

python
@final
class IncompressibleScalingRule2d:
ManualOverrideV1: ClassVar[IncompressibleScalingRule2d]
ExactChannelHeightV1: ClassVar[IncompressibleScalingRule2d]
ExactInletMaximumV1: ClassVar[IncompressibleScalingRule2d]
ViscousStokesPressureV1: ClassVar[IncompressibleScalingRule2d]
GaugeRateV1: ClassVar[IncompressibleScalingRule2d]
WeakFunctionalV1: ClassVar[IncompressibleScalingRule2d]
def __eq__(self, other: object, /) -> bool: ...
def __hash__(self) -> int: ...

How a transient flow Plan fixes the pressure constant: zero integral or boundary traction.

python
@final
class PressureGauge2d:
ZeroIntegral: ClassVar[PressureGauge2d]
BoundaryTraction: ClassVar[PressureGauge2d]
def __eq__(self, other: object, /) -> bool: ...
def __hash__(self) -> int: ...

Diagnostics from a steady Stokes result: pressure range, net flux, momentum balance, and solver summary.

python
@final
class SteadyStokesEvidence:
@property
def plan_key(self) -> str: ...
@property
def pressure_minimum(self) -> float: ...
@property
def pressure_maximum(self) -> float: ...
@property
def exact_bounds(self) -> tuple[tuple[float, float], tuple[float, float]]: ...
@property
def net_flux(self) -> float: ...
@property
def constrained_reaction(self) -> tuple[float, float]: ...
@property
def integrated_body_force(self) -> tuple[float, float]: ...
@property
def integrated_boundary_traction(self) -> tuple[float, float]: ...
@property
def momentum_closure(self) -> tuple[float, float]: ...
@property
def solve(self) -> LinearSolveSummary: ...
@property
def continuity_residual_norm(self) -> float: ...

Return the diagnostics of a steady Stokes result.

python
def steady_stokes_evidence(result: Result, /) -> SteadyStokesEvidence: ...