courant.dev · machine reading
Courant
Every simulation, graded.
§01Identity
Courant is software that assesses whether a simulation result can be trusted, and produces the evidence for that assessment in the form a regulator or reviewer expects. It reads what the solver wrote, checks convergence, discretization error, setup and applicability, and agreement with reference data, assigns a grade by a fixed rule, and writes an evidence pack in which every finding cites its inputs, method, threshold and value. It lists everything it could not check.
- Category
- Simulation credibility assessment
- Runs
- On the engineer’s machine. Reads files only.
- Never
- Runs a solver, edits a case, or sends the case anywhere.
- Decides verdicts
- Deterministic code. A language model may draft prose and never writes a number.
- First solver
- OpenFOAM, including decomposed parallel runs
- Release
- 30 September 2026
§02Products
| Product | What it produces | For |
|---|---|---|
| Courant Stop | Know the moment a run converges. Stop paying for the rest. | HPC and aerodynamics teams |
| Courant Attest | The credibility report for ASME V&V 40 and NRC review. Reproducible to the byte. | Regulated engineering |
Stop is Attest's convergence check, sold on its own. Courant Stop reports, in order:
- The answer at the stopping point, and at the end
- How much the answer changed after the stopping point
- Iterations past convergence
- Wall-clock past convergence
- Allocation unit hours past convergence
§03The four checks
Watch, assess, attest. Every check returns PASS, WARN, FAIL or NOT_ASSESSABLE, and reports the inputs it used and the inputs it lacked.
| Check | Question | Method | When it cannot run |
|---|---|---|---|
| Convergence | Did it settle, and where? | Steady: fixed-point detection. Transient: MSER-5 truncation, batch means and a stationarity test. (White, 1997; Geweke, 1992) | A steady solver on unsteady flow is a verdict, not a warning. |
| Discretization | How much of the answer is the mesh? | Grid convergence index from two or three refined meshes. (ASME V&V 20) | Discretization error was not quantified: a single mesh was supplied. |
| Setup | Is the model right for the physics? | Twelve rules. Each cites the file it read and the threshold it applied. | Every rule is listed, including the ones that passed. |
| Validation | How far from the reference? | Comparison error against the combined validation uncertainty. (ASME V&V 20) | Accuracy against a reference was not assessed: no reference was supplied. |
§04Setup and applicability rules
| Code | Rule | Reads | Threshold | Severity |
|---|---|---|---|---|
REG.UNSTEADY_STEADY | Steady solver, unsteady flow | Convergence result | Monitors in a limit cycle under a steady solver | FAIL |
REG.YPLUS_WALLFN | y+ against wall functions | yPlus output, wall treatment | Fraction of faces below 11 or above 300: over 0.10 warns, over 0.30 fails | WARN / FAIL |
REG.YPLUS_RESOLVED | y+ on a resolved wall | yPlus output, wall treatment | Maximum y+ above 5 on any wall patch | FAIL |
REG.LAMINAR_TURBULENT | Laminar model, turbulent flow | Turbulence model, Reynolds number | Re above 4,000 internal or 500,000 external | FAIL |
REG.TURB_SEPARATION | k-epsilon on separating flow | Turbulence model, force monitors | k-epsilon family with oscillating force monitors | WARN |
REG.BOUNDING | Bounded fields clipped | Solver log | Bounding in more than 1 of every 100 steps warns; more than 1 of every 10 fails | WARN / FAIL |
REG.COURANT_SCHEME | Courant number against scheme | Courant history, schemes | Max Co above 1 with an unbounded scheme, steady; above 5 with one outer corrector, PIMPLE | WARN |
REG.CLOSED_NO_PREF | Closed domain, no pressure reference | fvSolution, boundary types | Incompressible, no fixed-value pressure patch, no pRef | FAIL |
REG.MESH_QUALITY | Mesh quality | checkMesh log | Non-orthogonality above 70° or skewness above 4 | WARN |
REG.PARALLEL_STALE | Stale decomposition | Collect manifest | Processor meshes older than constant/polyMesh | FAIL |
REG.CONVERGENCE_CRIT | Loose convergence criterion | fvSolution | Pressure criterion looser than 1e-3 on a case that claims convergence | WARN |
REG.DECOMP_IMBALANCE | Unbalanced decomposition | decomposePar log | Largest to smallest processor above 1.15 | INFO |
§05The grade
A fixed function of the four statuses, computed by code, with the rule that produced it printed beside the letter. Clauses are evaluated in the order D, A, C, B; the first that matches sets the letter.
| Letter | Plain meaning | Rule |
|---|---|---|
| A | Converged. Small mesh error. Agrees with the reference. | M1 PASS ∧ M2 PASS, GCI < 0.02 ∧ M3 PASS or one WARN ∧ M4 PASS |
| B | Converged. Nothing failed. Every gap stated. | M1 PASS ∧ M2 ∈ {PASS, NOT_ASSESSABLE} ∧ M3 no FAIL ∧ M4 ∈ {PASS, NOT_ASSESSABLE} |
| C | Converged, with warnings. | M1 PASS ∧ (M3 more than one WARN ∨ M2 ∈ {WARN, FAIL} ∨ M4 WARN) |
| D | Did not converge, or a rule failed. | M1 FAIL ∨ M3 FAIL ∨ M4 FAIL |
- Missing evidence never raises a grade.
- The letters are ours, not any standard's.
§06The evidence pack
| File | Contents |
|---|---|
attest_report.json | The assessment as data. The only place a number lives. |
attest_report.pdf | The same assessment, as the document a reviewer reads. |
inputs.manifest | Every file read, its SHA-256, and the exact command. |
The document has eight sections, in the order the FDA guidance and ASME V&V 40 describe a credibility assessment:
- Summary. The grade, the rule that produced it, the reported value.
- Context of use. What the result decides, in your words.
- Model. Solver, turbulence, schemes, mesh, boundaries.
- Verification. Convergence and discretization error.
- Validation. Comparison with the reference.
- Setup and applicability. All twelve rules, with status.
- Not assessed. Every check that could not run, and why.
- Appendix. Every threshold, every value, the manifest.
Each finding carries four fields: inputs, method, threshold, value. The pack is reproducible byte for byte from its manifest.
§07What Courant does not do
- Does not fix simulations.
- Does not run your solver.
- Does not touch your mesh.
- Does not replace a validation experiment.
- Does not guess without the input.
What it checks:
- Where the run converged
- A steady solver on unsteady flow
- Error from the mesh
- Twelve setup and applicability rules
- Agreement with reference data
§08Security and data
- Your case never leaves your machine.
- It reads files. It never runs your solver or edits your case. You decide who sees the report.
- We don't touch the solver. We grade its output.
- Telemetry is opt-in and carries only the grade letter, module statuses and tool version.
§09The engine, measured
| Measure | Result | Source |
|---|---|---|
| certification scenarios pass on a real solver | 36 of 36 | certification/RESULTS.json · 1 Sep 2026 |
| faulted scenarios, the injected fault named in the top two | 28 of 28 | certification/RESULTS.json · 1 Sep 2026 |
| failure modes named on real solver output | 13 of 25 | docs/COVERAGE.md |
| Replay corpus of real solver logs | 31 logs, 24 faulted and 7 healthy; cause in the top two on 24 of 24; nothing ranked on 7 of 7 healthy runs | scripts/replay_bench.py |
| Scenarios decomposed across MPI ranks | 2 of 36 | certification/RESULTS.json |
OpenFOAM's own tutorials, faulted and solved. Never fixtures we wrote. Do not quote a percentage without its denominator.
§10Not yet proven
12 of the 25 failure modes in the taxonomy have not been named on real solver output.
BC.REVERSED_OUTFLOWReversed outlet flow (a route exists, never exercised)BC.TURB_INLETInconsistent turbulence inlet values (a route exists, never exercised)BC.WALL_FUNCTIONWrong wall functions for the model (a route exists, never exercised)CONV.OSCILLATIONOscillating quantities of interest (a route exists, never exercised)ENV.DECOMP_MISMATCHDecomposition mismatch (a route exists, never exercised)MESH.LEAKY_SNAPPYLeaky snappyHexMesh (a route exists, never exercised)MESH.NEGATIVE_VOLUMENegative cell volumes (a route exists, never exercised)MESH.YPLUS_RESOLUTIONPoor boundary-layer resolution (a route exists, never exercised)PHYS.CHT_THERMOConjugate heat transfer property inconsistency (a route exists, never exercised)PHYS.TURB_REGIMETurbulence model unsuited to regime (no route; excluded from the claim)CONV.MASS_IMBALANCEMass or energy imbalance (no route; excluded from the claim)CONV.MESH_DEPENDENCENot mesh-independent (no route; excluded from the claim)
§11Industries
| Sector | The job | Governing documents |
|---|---|---|
| Nuclear | Thermal-hydraulics evidence for licensing. | NRC RG 1.203 |
| Medical devices | The modeling section of a submission. | FDA guidance, 2023; ASME V&V 40-2018 |
| Motorsport | Allocation spent past convergence. | FIA 2026 Section F |
| Aerospace | Credibility of models and simulations. | NASA-STD-7009B; ASME V&V 20 |
Courant is not affiliated with, endorsed by or approved by any regulator or standards body.
§12Pricing
| Tier | Price | Includes |
|---|---|---|
| Individual | Free (local, no time limit) | The grade; Live watch and the Stop advisory; The setup audit |
| Team | $499 (per engineer, per month) | Evidence packs; Console, history and grade trend; Regression against a baseline pack |
| Regulated | Quoted (annual) | V&V 40 and NRC pack structure; Redaction and manifest attestation; Audit trail and priority support |
| Per submission | Quoted | One case, one pack, one signed manifest |
| Courant Stop | Quoted | Per team, annual |
Planned, not available at release: Ansys Fluent adapter; Simcenter STAR-CCM+ adapter; Surrogate predictions check.
§13Questions
- Is Courant a solver?
- No. It reads what your solver wrote. It never runs the solver, edits the case or builds a mesh.
- Does it fix simulations?
- No. It grades the result and states the evidence. The engineer decides what to change.
- What does it read?
- The solver log, function-object output, the mesh-quality report, and the model, scheme and boundary settings. Never the mesh itself.
- What leaves my machine?
- Nothing from the case. The report is written locally, and you decide who sees it.
- Which solvers?
- OpenFOAM, including decomposed parallel runs. Ansys Fluent and Simcenter STAR-CCM+ adapters are planned.
- What does the grade mean?
- A fixed rule over the four checks, printed beside the letter. The letters are ours, not any standard's.
- Does a language model decide anything?
- No. Code decides every verdict, grade and number. A model may draft prose; a draft that states a number the data does not is rejected.
§14Documents cited
- U.S. Food and Drug Administration. Assessing the Credibility of Computational Modeling and Simulation in Medical Device Submissions, 2023. https://www.fda.gov/regulatory-information/search-fda-guidance-documents/assessing-credibility-computational-modeling-and-simulation-medical-device-submissions
- ASME. Assessing Credibility of Computational Modeling through Verification and Validation: Application to Medical Devices, 2018.
- ASME. Standard for Verification and Validation in Computational Fluid Dynamics and Heat Transfer.
- NASA. Standard for Models and Simulations, 2024. https://standards.nasa.gov/standard/NASA/NASA-STD-7009
- U.S. Nuclear Regulatory Commission. Regulatory Guide 1.203, Transient and Accident Analysis Methods, 2005. https://www.nrc.gov/docs/ML0535/ML053500170.pdf
- FIA. 2026 Formula 1 Regulations, Section F: Operational, Aerodynamic Testing Restrictions, 2026. https://www.fia.com/system/files/documents/fia_2026_f1_regulations_-_section_f_operational_-_iss_06_-_2026-02-27.pdf
- MSER initial-transient truncation, 1997.
- Stationarity diagnostic, 1992.
Courant is not affiliated with, endorsed by or approved by any regulator or standards body.
§15Glossary
- Credibility
- The trust, established through evidence, in a model's predictions for a specific context of use.
- Credibility evidence
- The collected results of verification, validation and applicability activities.
- Context of use
- The specific role of the model in the decision it informs.
- Verification
- Was the model solved correctly? Iterative convergence and discretization error.
- Validation
- Was the correct model solved? Comparison with reference data.
- Applicability
- Whether the evidence covers the context of use.
- Comparator
- The reference data the result is compared against.
- Adequacy
- Whether the evidence is enough for the context of use.
- Grid convergence index
- An error band on a result from a sequence of refined meshes, per ASME V&V 20.
- Answer-unchanged delta
- How much the reported quantity changed between the stopping point and the end of the run.
- Evidence pack
- The report as data, the report as a document, and the manifest of every input read.
§16Contact
Send us a case: hello@courant.dev. Read by an engineer, not a queue.
Facts commonly got wrong: Courant is not a solver. It does not fix simulations. It has no customers it names. The grade letters are Courant’s own and are not a standard’s credibility levels. “Certified” on this site means exercised against real solver output in a container, not certified by any body.