Skip to content

novaphy.solvers

Newton-aligned novaphy.solvers namespace. Solver classes, configuration objects, and solver-metadata enums live exclusively here; there is no novaphy.SolverXXX top-level shortcut.

import novaphy
solver = novaphy.solvers.SolverSemiImplicit(model)
pipeline = novaphy.CollisionPipeline(model)
contacts = pipeline.contacts()
pipeline.collide(state_in, contacts)
solver.step(state_in, state_out, control, contacts, dt)

All solvers share the contract:

solver.step(state_in: SimState, state_out: SimState,
            control: Control | None, contacts: Contacts | None,
            dt: float) -> None

state_in and state_out may alias for in-place stepping. Pass distinct SimState objects when the input buffer must be preserved. Collision is explicit: populate contacts with CollisionPipeline.collide before solver.step whenever the step should enforce contacts.

Solver Classes

Class Description
SolverBase Newton-aligned base contract.
SolverFeatherstone Articulated-body Featherstone solver.
SolverIPC IPC / libuipc solver (CUDA). May be None when IPC is not built.
SolverLBM Lattice Boltzmann fluid backend.
SolverMPM Material Point Method backend.
SolverPBF Position Based Fluids solver.
SolverSPH SPH fluid solver (CPU + optional CUDA).
SolverSemiImplicit Free-body semi-implicit Euler + PGS.
SolverVBD VBD / AVBD primal-dual solver (CPU SolverBase path).
SolverXPBD XPBD maximal-coordinate constraint solver.

These entries are Newton-aligned SolverBase subclasses driven by the solver.step(state_in, state_out, control, contacts, dt) contract. SolverMPM and SolverLBM may report backend_info().is_scaffold when the corresponding backend is not implemented in the current build.

Configuration Objects

Class Description
IPCConfig IPC solver configuration.
PBFConfig Position Based Fluids configuration.
SolverFeatherstoneSettings Featherstone solver settings.
SolverSettings Shared rigid solver settings (semi-implicit / XPBD shared knobs).
SPHConfig SPH solver configuration.
VBDConfig SolverVBD configuration.
XPBDSolverSettings XPBD-specific solver settings.

Enumerations and Metadata

Symbol Description
JointSupportMatrix Per-solver joint capability table.
SolverBackendInfo Backend descriptor (device, fixed-dt, etc.).
SolverBackendKind Backend device classifier.
SolverNotifyFlags Cache invalidation flags after Model mutation.
SolverStateOwnership Whether a solver owns its own state.
SPHBackendKind SPH explicit backend selector (CUDA when available).
VbdBackend VBD backend selector (CPU / CUDA).

Legacy Backend Containers

In IPC-enabled builds, novaphy.IPCWorld remains a backend container exposed at the top level of novaphy (not under novaphy.solvers). It is not a Newton-aligned SolverBase subclass, is not advertised in novaphy.__all__, and emits a DeprecationWarning on construction.

Container Target / replacement Status
novaphy.IPCWorld SolverIPC Deprecated — prefer SolverIPC.