Introduction
This is the documentation for FiniteVolumeMethod.jl. Click here to go back to the GitHub repository.
FiniteVolumeMethod.jl is a Julia package for solving partial differential equations (PDEs) using the finite volume method. The package provides two complementary solvers for different classes of PDEs, together with research-support tooling such as validation reporting, dashboard export, and optional archival I/O.
Research Contract
This repository publishes an explicit scientific contract:
- the Capability Matrix is the authoritative statement of feature maturity and claim policy
- the Verification & Validation section is the authoritative statement of automated scientific evidence
- the v2 Migration page summarizes the canonical SciML path, backend claim boundary, and local release workflow
- only
stableclaim-bearing solver features should be treated as publication-grade - provisional and experimental features remain available for development and internal research, but they are not covered by the same scientific claim policy
The repository's release-supported Julia targets are the current Julia stable release and the current Julia LTS release.
Parabolic and Elliptic PDEs (Cell-Vertex Solver)
The cell-vertex solver handles PDEs of the form
\[\pdv{u(\vb x, t)}{t} + \div \vb q(\vb x, t, u) = S(\vb x, t, u), \quad (x, y)^{\mkern-1.5mu\mathsf{T}} \in \Omega \subset \mathbb R^2,\,t>0,\]
using the finite volume method on triangular meshes, with additional support for steady-state problems and for systems of PDEs of the above form. We support Neumann, Dirichlet, and boundary conditions on $\mathrm du/\mathrm dt$, as well as internal conditions and custom constraints. We also provide an interface for solving special cases of the above PDE, namely reaction-diffusion equations
\[\pdv{u(\vb x, t)}{t} = \div\left[D(\vb x, t, u)\grad u(\vb x, t)\right] + S(\vb x, t, u).\]
The tutorials in the sidebar demonstrate the many possibilities of this solver. In addition to these two generic forms, we also provide support for specific problems that can be solved in a more efficient manner, namely:
DiffusionEquations: $\partial_tu = \div[D(\vb x)\grad u]$.MeanExitTimeProblems: $\div[D(\vb x)\grad T(\vb x)] = -1$.LinearReactionDiffusionEquations: $\partial_tu = \div[D(\vb x)\grad u] + f(\vb x)u$.PoissonsEquation: $\div[D(\vb x)\grad u] = f(\vb x)$.LaplacesEquation: $\div[D(\vb x)\grad u] = 0$.
See the Solvers for Specific Problems, and Writing Your Own section for more information on these templates.
Hyperbolic Conservation Laws (Cell-Centered Solver)
The cell-centered solver targets hyperbolic conservation laws of the form
\[\pdv{\vb U}{t} + \nabla \cdot \vb F(\vb U) = \vb S(\vb U)\]
on structured Cartesian meshes in 1D, 2D, and 3D. Supported physics includes:
- Euler equations for compressible gas dynamics
- Ideal MHD with divergence-free constrained transport
- Compressible Navier-Stokes with viscous stress and heat conduction
- Special relativistic MHD (SRMHD) with iterative conserved-to-primitive conversion
- General relativistic MHD (GRMHD) in the Valencia formulation with Schwarzschild and Kerr metrics
Numerical features include MUSCL and WENO (3rd/5th order) reconstruction, Lax-Friedrichs/HLL/HLLC/HLLD Riemann solvers, SSP-RK3 and IMEX time integration, and block-structured adaptive mesh refinement (AMR) with Berger-Colella flux correction.
See the hyperbolic tutorials for examples and the hyperbolic interface for the full API reference.