Expand description
This is OUTRAM PARK’s independent Rust translation of selected
OpenFOAM® primitive/finite-volume algorithms — it is not the official
OpenFOAM® software and is not affiliated with, endorsed by, or
sanctioned by OpenCFD Ltd. or the ESI Group. OpenFOAM® is a registered
trademark of OpenCFD Limited. See TRADEMARKS.md (this crate’s
directory, mirrored from the workspace root) for the full attribution
and non-affiliation notice.
Modules§
- compute
- Cross-layer — where a numerical kernel runs (
ComputeBackend: serial, multi-CPU viarayon, or GPU viawgpu), the worker-count policy, and the backend-selection rule. Dispatch only, no kernels. Where a numerical kernel runs — serial, multi-CPU, or GPU. - fields
- Layer 2 — field containers (
VolField/SurfaceField), boundary conditions, and field-level tensor algebra. Field types: the discretised quantities carried on the mesh. - fluid_
thermo - Layer 4 — field-level fluid and solid thermodynamics (
FluidThermo,SolidThermo,PsiThermo,RhoThermo). - fv_
operators - Layer 3 — finite-volume discretisation operators (
fvcexplicit,fvmimplicit, andadjust_phicontinuity correction). - fv_
options - Layer 3 — optional source terms attached to finite-volume equations,
OpenFOAM’s
fvOptions(FoundationfvModels) mechanism. Optional source terms added to finite-volume equations — OpenFOAM’sfvOptionsmechanism. - interface
- this part is extension in Rust Now under here, I want to expose the openfoam primitives to something that can be human readable
- interpolation
- Layer 1f — one-dimensional data interpolation (linear and spline).
One-dimensional table interpolation over sorted
(xs, ys)samples. - io
- OpenFOAM ASCII case I/O —
FoamFiledictionaries,polyMeshread/write, time-directory field read/write, and whole-case reading. OpenFOAM ASCII case I/O — read and write OpenFOAM cases the way the upstream utilities do. - krylov
- Layer 2 — asymmetric Krylov iterative solvers (BiCGStab, restarted GMRES)
and preconditioners (Jacobi, ILU(0)) for the sparse
LduMatrix. Asymmetric Krylov iterative solvers and preconditioners for sparseA x = b. - ldu_
matrix - Layer 2 — sparse LDU (lower/diagonal/upper) matrices, the assembled
FvMatrix, and iterative linear solvers (CG, Gauss–Seidel, GAMG). Sparse LDU (lower-diagonal-upper) linear algebra for implicit FV solves. - limiters
- TVD flux limiters — field-agnostic
psi(r)functions on plainf64. - linear_
operator - Layer 2 — the discretisation-agnostic
LinearOperatorcontract and the generic Krylov drivers (cg_op,bicgstab_op,gmres_op) written against it, so a finite-element crate can reuse this solver layer without adopting the finite-volumeLduMatrixlayout (GitHub issue #175). Purely additive: the existing finite-volume solvers are unchanged. Discretisation-agnostic linear-algebra contract, plus Krylov solvers written against it. - math
- Layer 1g — mathematical special functions (inverse error function, incomplete gamma functions and their inverse). Special mathematical functions used by the thermophysics and statistics kernels.
- matrix
- Layer 1b — dense
SquareMatrixwith direct (LU) solve. Dense square-matrix linear algebra. - mesh
- Layer 2 — the finite-volume mesh: cells, faces, boundary patches, and geometric metrics. Finite-volume mesh layer: topology and geometry.
- ode
- Layer 1e — ordinary-differential-equation solvers (Euler, RKF45,
Rosenbrock23).
Ordinary differential equation solvers for systems
dy/dx = f(x, y). - polynomial
- Layers 1c/1d — polynomial evaluation and closed-form equation solvers (linear, quadratic, cubic). Closed-form polynomial equation solvers and a fixed-degree polynomial type.
- prelude
- Convenience re-exports of the most commonly used types and functions.
- primitives
- Layer 1a — dimensionless scalar constants and the tensor-algebra
primitives (
Vector3,Tensor,SymmTensor,SphericalTensor). Layer 1a — the primitive numeric types OpenFOAM builds everything on. - thermophysics
- Layer 1h — specie-level thermophysics: equations of state, thermo, and transport models. Specie-level thermophysics: mesh-independent per-species property kernels.