Overview
The CHAMPS+ solver is driven by a single human-readable input file that specifies everything about a simulation case: physical parameters, geometry, mesh generation, numerical schemes, boundary conditions, time integration, and output controls.
This file is parsed at runtime and provides a reproducible record of every setting that influences the solution.
Format
The input file uses the Scientific Computing Input Data Format, which allows for command-line options, user functions, and C-style comments.
High-level Structure
The input file is divided into a series of top-level sections, each enclosed in braces and written in a simple key–value / nested-block syntax.
A typical input file might include:
Dictionary { ... }
Geometries { ... }
Domain { ... }
Restart { ... }
Integration { ... }
IO { ... }
Each of these major blocks has its own purpose:
| Section | Purpose |
|---|---|
| Dictionary | Defines named constants and expressions for reuse anywhere in the file. Think of this as a lightweight variables-and-formulas block. |
| Geometries | Imports and manipulates external CAD or surface meshes and allows you to group or replicate components via transforms and instances. |
| Domain | Specifies the computational domain, mesh generation, physics models, boundary conditions, and numerical algorithms. This is the heart of the solver setup. |
| Restart | Controls whether to read or write checkpoints for continuing a simulation. |
| Integration | Sets time-integration parameters such as CFL target, timestep strategy, and maximum step count. |
| IO | Defines output directories, slice/profile sampling, and how/when field data and derived quantities are written. |
Relationship of Domain and Subdomains
The Domain block is the primary description of the CFD domain.
It contains:
- Grid definition: block counts, extents, refinement strategies, adaptive mesh refinement, etc.
- Physics and models: properties, turbulence or wall models.
- Boundary conditions: farfield, wall, symmetry, or immersed-boundary options.
- Initial conditions: initial fields for pressure, temperature, and velocity.
- Numerical controls: flux schemes, stabilization parameters, and solver options.
Inside Domain, you may optionally define a Subdomains block:
Domain
{
...
Subdomains
{
blade1dom
{
Grid
{
num_blocks = [ ... ]
bounds = [ ... ]
Transforms { ... }
}
// other optional overrides...
}
// more subdomains...
}
}
A subdomain is a localized region of the main domain with its own grid and optional transforms.
This is especially useful for:
- Refining the mesh or applying special refinement criteria around a specific body (e.g., around a blade tip).
- Adding local moving frames or embedded overset grids.
- Simulating a region of the domain using a different physical model than the primary domain.
The subdomain / multi-domain capability in CHAMPS+ is still under development.
Inheritance and Overrides
Every subdomain inherits settings from its parent Domain block unless you explicitly override them.
This means:
- Physics models (
Properties,WallModel), numerical schemes (Numerical), and boundary-condition defaults defined at the domain level automatically apply to all subdomains. - A subdomain can override any subset of these if needed (for example, specifying a finer AMR threshold or different output frequency for a local region).
Different Physical Models
In addition to overriding numerical or grid-related parameters, a subdomain can solve a completely different physical model than its parent domain.
This capability allows for multi-physics simulations—for example:
- Embedding a liquid droplet subdomain inside an external airflow domain, where the droplet uses a compressible liquid model while the parent uses a compressible-gas model.
- Running a moving-frame subdomain around a rotating blade while the parent domain remains in an inertial frame.
Putting It Together
A typical input file therefore has a layered structure:
Dictionarydefines reusable values and expressions.Geometriesdescribes the physical components and how they’re placed.Domainspecifies the global simulation space and physics.- Optional
SubdomainsinsideDomaininherit and specialize those settings, and can even run different physics. - Global runtime control blocks (
Restart,Integration,IO).
Because all quantities are explicit and text-based, the input file doubles as a reproducible record of the simulation setup and can be version-controlled alongside code and meshes.