SciML & UQ Group

Open-source software

Libraries we build and maintain, from GPU flood solvers to Bayesian inversion at a billion unknowns.

GeoSWE

Geophysical Shallow-Water Engine

GeoSWE is a GPU finite-volume solver for the full 2D shallow-water equations, from a 3 m coastal county to the conterminous United States on one multi-GPU node. It solves the nonlinear shallow-water equations with a well-balanced HLLC finite-volume scheme, Manning friction, wetting and drying, rainfall, and an observation-driven coastal stage boundary.

Its distinguishing feature is a compressed active-cell mesh: the cells that matter (land plus a nearshore band) are packed into flat arrays before the run, so memory and work scale with the flooded landscape rather than its bounding rectangle. It runs on NVIDIA and AMD GPUs through CuPy, scales across GPUs with mpi4py, and falls back to NumPy on the CPU for prototyping.

pip install geoswe

72 hours of Hurricane Helene (September 2024) simulated by the same code on three nested domains: MRMS rainfall in purple, flood depth in color, and the NOAA CO-OPS tide gauges that drive the coastal boundary as stars. The application runs are computational demonstrations under stated, uncalibrated settings, not validated flood hindcasts.

hIPPyMFEM

Differentiable programming for infinite-dimensional Bayesian inverse problems, using MFEM on GPUs

hIPPyMFEM is a library for deterministic and Bayesian inverse problems governed by PDEs, built on MFEM, hypre and JAX. The forward PDE is a JAX function of the fields at one quadrature point; JAX differentiates it into the residual, the Jacobian, the adjoint, the parameter derivative and every Hessian block, and the library assembles them straight into hypre's parallel matrices.

On top sits the full workflow of a PDE-constrained Bayesian inverse problem: inexact Newton-CG and L-BFGS for the MAP point, a low-rank Laplace approximation of the posterior, Matérn-class priors, MCMC, and forward uncertainty propagation, in parallel with MPI and on NVIDIA or AMD GPUs. The interface keeps the conventions of hIPPYlib.

The geothermal application. Left, heat flowing through the rock of a reservoir: a forward solve at 1.08 billion state unknowns (5123) on 30 GPUs. Right, the conductivity of the rock inferred on a 1283 mesh from temperatures logged in 60 boreholes: the MAP estimate, samples of the posterior, and its standard deviation, lowest where the boreholes reach.

CLDNet

A conditional latent dynamics network for metropolitan flood forecasting

CLDNet is a fast surrogate of the 2D shallow water equations. A low-dimensional latent state evolves in time, driven by rainfall, and a coordinate-based decoder conditioned on terrain features reconstructs water depth and unit discharges at any query point. On the Des Plaines River basin (greater Chicago; 4.2 million active cells at 30 m) it produces a 96-hour basin-wide forecast in about 29 s on one GPU, about 115 times faster than the simulator it is trained on.

The repository holds the code, input data and trained models of our paper in the Journal of Hydrology.

Architecture of CLDNet: a dynamics network driven by rainfall, and a reconstruction network conditioned on query coordinates and terrain features
Rainfall and the previous latent state drive the dynamics network (Dyn net); the reconstruction network (Rec net) decodes the latent state together with a Fourier embedding of the query coordinate and terrain features into water depth and unit discharges.

SOUPy

Stochastic Optimization under high-dimensional Uncertainty in Python

SOUPy implements scalable algorithms to solve problems of PDE-constrained optimization under uncertainty, with the computational complexity measured in terms of PDE solves independent of the uncertain parameter dimension and optimization variable dimension. SOUPy is built on the open-source hIPPYlib library, which provides state-of-the-art scalable adjoint-based methods for deterministic and Bayesian inverse problems governed by PDEs, which in turn makes use of the FEniCS library for high-level formulation, discretization, and scalable solution of PDEs.

The SOUPy framework: FEniCS, hIPPYlib and SciPy components supporting PDE models, uncertainty and optimization

pSVGD

Projected Stein Variational Gradient Descent for high-dimensional inference

pSVGD implements scalable projection-based Stein variational inference algorithms to solve model-constrained (both PDE models and other models) Bayesian inverse problems with high/infinite-dimensional random parameter field/process. The library also includes implementation of projected Stein variational Newton (pSVN) method and with extension to projected Wasserstein gradient descent (pWGD) method.

SVGD compared with pSVGD, which alternates projection, SVGD in a low-dimensional subspace, and prolongation

LearnROM

Learn Reduced Order Models in high-dimensional spaces

Model reduction is known very challenging for high-dimensional parametric problems whose solutions also live in high-dimensional manifolds. However, often the manifold of some quantity of interest (QoI) depending on the parametric solutions is low-dimensional. LearnROM implements structure-exploiting algorithms to efficiently learn the intrinsic parameter subspace in which the QoI is most sensitive. Both the gradient-based active subspace and Hessian-based subspace are implemented in LearnROM. Samples are drawn from such subspaces to learn the QoI-oriented ROM.

Surface of a quantity of interest that varies along only one direction of a two-parameter space
A blockwise random parameter field
A random field sample shown as a rough surface

SparseQuadrature

Sparse Quadrature for high-dimensional integration

This MATLAB library implements sparse quadrature rule for high-dimensional integration with Gaussian measures. It provides both a-priori (integrand-independent) and a-posteriori (integrand-dependent) construction algorithms to push the integration to very high dimensions (up to 10,000 dimensions tested). Depending on the sparsity of the integrand, it can achieve dimension-independent convergence rates and faster convergence than Monte Carlo for high-dimensional integration problems.

Admissible index sets and the corresponding quadrature points for tensor-product, isotropic sparse, and anisotropic sparse grids

MMLBM

Multiblock and Multigrid Lattice Boltzmann Methods in complex geometries

This MATLAB library implements the examples of lattice Boltzmann methods in the thesis The Lattice Boltzmann Method for Fluid Dynamics: Theory and Applications, which includes Poiseuille flow, lid driven cavity flow, Womersley flow, Taylor-Couette flow, blood flow in aneurysms, etc. This library also implements the most common schemes for imposing boundary conditions on both straight and curved boundaries. In particular, it features multiblock and multigrid implementation that enables the lattice Boltzmann methods to more practical applications in complex geometries, as shown in the following examples of blood flow (velocity and pressure) in cerebral aneurysms and artery with narrowed plaque.

Illustration of a cerebral aneurysm
Multiblock lattice with an inlet and outlets around an aneurysm
Blood flow velocity in the aneurysm
Blood pressure in the aneurysm
Illustration of an arm artery narrowed by plaque
Geometry of the arterial network with the plaque location
Blood flow velocity in the artery with plaque
Blood pressure in the artery with plaque