Theory¶
This section explains the numerical methods and solver technology behind Exasim. It connects the mathematical PDE model to the generated C++ backend: spatial discretization, time integration, nonlinear solution, linear Krylov solution, preconditioning, MPI parallelism, and GPU execution.
The requested source document Exasim.tex was not present in the repository or
attached files when this section was revised. The content here is therefore
grounded in the current Exasim implementation, the existing internal LDG notes,
and the public configuration fields documented in the reference pages.
Numerical Pipeline¶
Exasim transforms a user PDE model into a sequence of algebraic problems:
flowchart LR
PDE["PDE model<br/>u, q, w, v, fluxes, sources"] --> DG["DG spatial discretization"]
DG --> TIME["Steady / DIRK / BDF / ERK time discretization"]
TIME --> NEWTON["Newton nonlinear iteration"]
NEWTON --> GMRES["GMRES Krylov solve"]
GMRES --> PREC["Preconditioner"]
PREC --> UPDATE["Solution update"]
The main choices are:
| Layer | Exasim concept | Main user-facing controls |
|---|---|---|
| PDE model | ModelC, ModelD, ModelW, callbacks, generated kernels |
model, modelfile, physicsparam |
| Spatial discretization | LDG or HDG-style DG discretization | discretization, hybrid, spatialScheme |
| Time integration | steady solve, DIRK, BDF, ERK selectors | tdep, temporalscheme, torder, nstage, dt |
| Nonlinear solve | Newton iteration | NewtonIter, NewtonTol, NLiter, NLtol |
| Linear solve | GMRES and related Krylov controls | GMRESiter, GMRESrestart, GMREStol |
| Preconditioning | local, Schwarz, polynomial, reduced-basis controls | preconditioner, ppdegree, RBdim |
| Parallelism | MPI domain decomposition | mpiprocs, generated dmd, partition files |
| GPU execution | CUDA/HIP/Kokkos backend variants | build options and installed package target |
How To Use This Section¶
| Page | Purpose |
|---|---|
| DG methods | Common DG ideas: broken polynomial spaces, numerical fluxes, conservation, and high-order accuracy. |
| LDG | LDG formulation used by Exasim, including matrix-free Newton-GMRES. |
| HDG | HDG formulation, trace variables, static condensation, and matrix-based trace solves. |
| Temporal discretization | Steady-state and time-dependent workflows, with emphasis on DIRK stage equations. |
| Nonlinear solvers | Newton residuals, Jacobians, updates, and convergence controls. |
| Linear solvers | GMRES, restarted Krylov methods, and LDG/HDG matrix-vector products. |
| Preconditioning | Implemented preconditioner families and practical selection guidance. |
| Parallel computing | MPI decomposition, communication patterns, and distributed-memory implications. |
| GPU computing | CUDA/HIP/Kokkos execution model and memory-movement considerations. |
| Scalability | Strong/weak scaling, arithmetic intensity, memory footprint, and practical tradeoffs. |
| Algorithmic flow | End-to-end HDG and LDG solve workflows. |
| LDG implementation deep dive | Detailed LDG weak form and residual construction. |
| Block-diagonal Jacobian | Exact element-block Jacobian of the LDG residual path. |
| References | Background literature and implementation references. |
Relationship To Other Documentation¶
- Use Physics Models to decide how to represent a
PDE system in terms of
u,q,w,v, EOS, AV, and coupling terms. - Use Frontend Configuration and pdeapp.txt fields to set solver options.
- Use Application Modes to choose a built-in, shared-library, frontend, parameter-sweep, or postprocessing workflow.
- Use Internals when debugging backend object construction, generated files, and runtime data flow.