Skip to content

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.