1 Introduction
CMPS is a cell-centred, unstructured finite-volume solver for coupled fluid-flow and multiphysics calculations. Its central numerical design is a fully implicit solution of the governing equations using a block-sparse Jacobian whose columns are the active primitive solution variables. Convective, diffusive, boundary, and source terms are assembled in a common residual, and the corresponding derivatives are generated by forward-mode automatic differentiation (AD) in the active coupled path. The same assembly is used by the serial solver and by MPI worker partitions.
The solver architecture is intended for problems in which the characteristic time scales and physical couplings differ strongly. Typical examples combine high-speed compressible flow, low-speed regions, heat transfer, turbulence, passive species, and a dilute dispersed phase. A segregated equation-by-equation procedure can become slow or fragile for such systems because a correction to one field immediately changes the residuals of several other fields. CMPS instead constructs one coupled update, \[\mathbf{A}\,\delta\mathbf{q}=\mathbf{B}, \](1.1) where the block rows correspond to the active conservation equations and the block columns correspond to primitive-variable corrections such as velocity, pressure, temperature, turbulence quantities, particle variables, and independent species mass fractions.
1.1 Flow regimes
The current solver contains two distinct carrier-flow formulations.
Compressible formulation. Density follows the material equation of state. Carrier convection is evaluated with the selected compressible numerical flux, including AUSM-family methods and HLLC where configured. Low-Mach stiffness can be reduced using time-derivative preconditioning while retaining a density-based conservative residual.
Constant-density incompressible formulation. Physical carrier density is fixed and pressure-velocity coupling is created with an artificial-compressibility equation. The active carrier flux is a dedicated AUSM+-up-type artificial-compressibility flux. Gauge pressure is retained as a signed primitive variable, including negative gauge values. The artificial-compressibility coefficient belongs to the pseudo-time mass matrix; the stored pressure state itself is the pressure \(p\), not \(p/c_{ac}^{2}\).
These regimes share the coupled matrix infrastructure, AD linearization, viscous/source assembly, multigrid infrastructure, and MPI decomposition, but their continuity/pressure equations are mathematically different. The incompressible formulation is therefore documented separately in Chapter 4 rather than being described as a limiting form of the compressible equation of state.
1.2 Why primitive-variable coupling is used
A conservative finite-volume residual does not require the Newton correction itself to be expressed in conservative variables. CMPS uses primitive-variable columns because pressure and temperature are directly useful thermodynamic and coupling variables. The residual rows nevertheless retain their physical conservative meaning. For the aerodynamic block in \(d\) spatial dimensions, \[\mathbf{q}= [u_1,\ldots,u_d,p,T]^T,\] but the corresponding rows represent \(d\) momentum equations, continuity in the pressure-index row, and total energy in the temperature-index row. Turbulence, particle, and species equations extend this block when enabled.
This distinction is important when reading the source or interpreting a Jacobian: an index named for pressure identifies a column variable \(p\) and also the row slot used for the mass/continuity equation. It does not imply that CMPS solves a pressure conservation law.
1.3 Numerical fluxes and pressure-velocity coupling
For compressible flow, CMPS uses upwind flux formulations appropriate to wave propagation. AUSM+-up is especially useful because the mass and pressure fluxes are constructed with separate Mach- and pressure-splitting functions and include low-speed pressure/velocity dissipation terms (Liou 2006). The implementation differentiates the complete face expression with AD, so pressure-to-mass-flux and velocity-to-momentum couplings enter the assembled Jacobian directly.
For the constant-density incompressible regime, an artificial acoustic speed \(c_{ac}\) replaces the physical acoustic scale in the pressure-velocity coupling. This preserves a finite pseudo-time pressure equation at stagnation and allows a density-based coupled infrastructure to solve a constant-density system without introducing an equation-of-state density response.
1.4 Multiphysics scope
The active CMPS equation set can be extended by GE \(k\)–\(\omega\) turbulence transport, passive \(N-1\) species equations, dilute dispersed-phase transport, interfacial-area transport, body-force/source terms, and wall heat-transfer models. More recent CMPS developments also include a boundary-attached one-dimensional charring-material response model for compressible RANS calculations. Each model must be interpreted together with its implementation assumptions; for example, the dilute dispersed model does not become a dense two-fluid formulation merely because a packing regularization is used, and the charring model predicts conversion and thermal response rather than geometric surface recession.
1.5 Parallel and multilevel execution
In MPI execution, rank 0 is the GUI/driver process. Numerical partitions and matrices are owned by worker ranks. Workers execute the same coupled assembly used in serial calculations, exchange partition-interface data, solve their distributed linear system, and participate in collective convergence operations. The active geometric/agglomeration multigrid hierarchy is likewise worker-owned; coarse levels rediscretize the governing equations using the same solver options rather than switching to a different set of physics equations. The scalable linear-algebra layer additionally provides AMG, AMG-preconditioned flexible Krylov solvers, an Intel MKL CPU implementation, and an NVIDIA CUDA GPU implementation. The same coupled system can therefore be solved on CPU clusters or on CUDA GPU-equipped cluster workers without changing the finite-volume formulation.
1.6 Purpose and verification language of this guide
This document is an implementation guide rather than a validation report. It uses three levels of wording deliberately:
Mathematical formulation describes an equation or algorithm independently of software status.
Implemented means that the corresponding active source path has been traced in the current implementation record.
Validated is reserved for behavior demonstrated by an executable verification or benchmark. Source connectivity alone is not called validation.
The August 2026 implementation review used for this revision traced the current solver selection, assembly, time discretization, multigrid, MPI, restart, wall, and dispersed-phase paths. It also identified several open conservation and robustness issues. Those limitations are summarized in Chapter 20; they are retained in the guide so that the mathematical description does not overstate the present software status.