Skip to content

ludus::physics::fluid::Field

Ludus Wiki · API overview · Browse API

Class

Single-owner CPU shallow-water field.
All storage is private. Initialization allocates; equal-resolution reinitialization, reset, forcing, stepping and sampling reuse it. No renderer, callbacks, game types or global state.

Declared in modules/physics/fluid/include/ludus/physics/fluid/field.h

#include <ludus/physics/fluid/field.h>
class ludus::physics::fluid::Field final

Methods

Field

ludus::physics::fluid::Field::Field() noexcept=default

Declared in modules/physics/fluid/include/ludus/physics/fluid/field.h

~Field

ludus::physics::fluid::Field::~Field() noexcept

Declared in modules/physics/fluid/include/ludus/physics/fluid/field.h

Field

ludus::physics::fluid::Field::Field(const Field &)=delete

Declared in modules/physics/fluid/include/ludus/physics/fluid/field.h

operator=

Field & ludus::physics::fluid::Field::operator=(const Field &)=delete

Related types: Field

Declared in modules/physics/fluid/include/ludus/physics/fluid/field.h

Field

ludus::physics::fluid::Field::Field(Field &&other) noexcept

Declared in modules/physics/fluid/include/ludus/physics/fluid/field.h

operator=

Field & ludus::physics::fluid::Field::operator=(Field &&other) noexcept

Related types: Field

Declared in modules/physics/fluid/include/ludus/physics/fluid/field.h

TryInitialize

Status ludus::physics::fluid::Field::TryInitialize(const Config &config) noexcept
Invalid configuration or failed allocation preserves the old field.

Related types: Status · Config

Declared in modules/physics/fluid/include/ludus/physics/fluid/field.h

IsReady

bool ludus::physics::fluid::Field::IsReady() const noexcept

Declared in modules/physics/fluid/include/ludus/physics/fluid/field.h

IsActive

bool ludus::physics::fluid::Field::IsActive() const noexcept

Declared in modules/physics/fluid/include/ludus/physics/fluid/field.h

GetConfig

Config ludus::physics::fluid::Field::GetConfig() const noexcept

Related types: Config

Declared in modules/physics/fluid/include/ludus/physics/fluid/field.h

TryReset

Status ludus::physics::fluid::Field::TryReset(std::span< const uint8 > solids={}, std::span< const CellState > initial={}) noexcept
Empty views mean all-fluid / zero initial state.
Nonempty views must be Width*Height, row-major. Values and total depth are validated before reset. Solid cells have zero state; initial foam is 0..1, displacement is +/-12 m.

Related types: uint8 · Status · CellState

Declared in modules/physics/fluid/include/ludus/physics/fluid/field.h

TrySetVelocity

Status ludus::physics::fluid::Field::TrySetVelocity(std::span< const float64 > u, std::span< const float64 > v) noexcept
MAC face arrays: (Width+1)*Height U and Width*(Height+1) V.
Closed faces are forced to zero. Invalid inputs preserve state.

Related types: float64 · Status

Declared in modules/physics/fluid/include/ludus/physics/fluid/field.h

TrySetPressure

Status ludus::physics::fluid::Field::TrySetPressure(std::span< const float64 > pressure) noexcept
Surface pressure divided by density, in m^2/s^2.
Held until replaced. Empty clears it; otherwise Width*Height values, bounded by MaxPressure.

Related types: float64 · Status

Declared in modules/physics/fluid/include/ludus/physics/fluid/field.h

TryAddStroke

Status ludus::physics::fluid::Field::TryAddStroke(const Stroke &stroke) noexcept
Compact momentum brush integrated along a segment.
Rejects segments that cross solid cells. Work is bounded; rejection applies no partial forcing.

Related types: Status · Stroke

Declared in modules/physics/fluid/include/ludus/physics/fluid/field.h

TryGetStepLimit

Status ludus::physics::fluid::Field::TryGetStepLimit(float64 &seconds) const noexcept
Conservative step bound for the CURRENT state.
Call again after each substep when updating external sources; pressure is already held by the field.

Related types: float64 · Status

Declared in modules/physics/fluid/include/ludus/physics/fluid/field.h

TryAdvance

Status ludus::physics::fluid::Field::TryAdvance(float64 seconds, StepInfo &info) noexcept
Accepts 0..0.25 seconds, with adaptive substeps.
Invalid input preserves state and output. WorkLimit reports explicit partial progress in info.

Related types: float64 · Status · StepInfo

Declared in modules/physics/fluid/include/ludus/physics/fluid/field.h

TrySample

Status ludus::physics::fluid::Field::TrySample(Point world, Sample &output) const noexcept
Success writes output; invalid/outside/solid queries preserve it.

Related types: Status · Point · Sample

Declared in modules/physics/fluid/include/ludus/physics/fluid/field.h

IsFluid

bool ludus::physics::fluid::Field::IsFluid(usize x, usize y) const noexcept

Related types: usize

Declared in modules/physics/fluid/include/ludus/physics/fluid/field.h

GetCell

CellState ludus::physics::fluid::Field::GetCell(usize x, usize y) const noexcept
Invalid/solid indices return zero; no borrowed storage escapes the field.

Related types: usize · CellState

Declared in modules/physics/fluid/include/ludus/physics/fluid/field.h

GetDiagnostics

Diagnostics ludus::physics::fluid::Field::GetDiagnostics() const noexcept

Related types: Diagnostics

Declared in modules/physics/fluid/include/ludus/physics/fluid/field.h