A simulation answers one question per run. What the flow would have done under other conditions is a second question, and it costs a second run; that run starts from the beginning, or from a checkpoint fixed before the first one began. Neither shares a history with the other. Each alternative is rebuilt rather than continued, so whatever the first run discovered on the way has to be reached again.
Counterfactual CFD branches instead. The run pauses at a state the physics reaches; from there every candidate continues, and the outcomes are scored against stated limits in a single table. The work is carried out in Counterfactual Fluid Dynamics, an open-source Rust library built on the Effect Propagation Process.
Forking a running simulation
The pause is set by a test on the flow, not by a step number. In the reference case a vehicle reenters the atmosphere and the plasma sheath around it thickens as it descends. The run marches until the electron density in that sheath passes the point where the GPS L1 signal can no longer reach the receiver. That state is the fork. Seventeen candidate bank angles then continue from it at once, sharing the flow state instead of copying it, and the run commits to the one that scores best. Each candidate records which baseline it departed from.
One field, one process
Flow, reacting chemistry, regime classification, navigation and control all step the same field in the same program. Nothing is exported between them. There is no coupling file, no adapter and no exchange format, so an interaction between any two of them reaches the answer instead of being lost where two codes meet.
In the powered descent case, a vehicle at twenty percent throttle decelerates at 7.472 m/s2; coasting, the same vehicle decelerates at 10.595 m/s2. Firing the engine slows the deceleration down. A drag model solved on its own and applied to the trajectory afterwards gives the opposite order.
Where the governing model changes
Nothing fixes the governing regime in advance. It is classified from the state at every step, along three axes that move independently. The Knudsen number of the freestream selects the flow model. Which integrator applies follows from the ratio of aerodynamic to gravitational acceleration; that same ratio marks entry into and exit from orbit. Electron density sets the plasma frequency, and the plasma frequency decides whether the navigation link exists at all.
A single descent can therefore cross orbital dynamics, slip flow, continuum flow, radio blackout and reacquisition without leaving the program. Each crossing is recorded as it happens.
Provenance
Every run keeps an append-only log of its effects, and that log continues across regime and physics boundaries. Each branch of a fork keeps its own. Reading two of them side by side shows where the candidates diverged and what the losing one did next.
The log also survives intervention. Inject a sensor failure to stress a run, and the log holds the injected value, the value it replaced, and every step derived from it afterwards.
Precision as a parameter
Every theory, solver, stage and observable is generic over one real
scalar. Changing a single type alias reruns the whole computation at
another precision: f32, f64, or a 106-bit
type carrying about thirty significant digits.
This makes round-off measurable instead of assumed. One chaotic rate field run at all three precisions in a single program puts the forecast horizon at t ≈ 21.5, 44.5 and roughly 81. What limits the prediction is round-off, not the step size.
Verification
The library ships the evidence for its claims and its continuous integration runs it. Thirteen programs check results against analytic solutions, against published references, or against invariants of the code itself. Each check states which of the three its bound came from, so a passing check also says whether it was measured against an outside reference or against this code's earlier output.
Claims are reported at the strength the measurement supports. The finite-rate ionization network is uncalibrated; it is checked against the RAM-C II flight anchor only to order of magnitude, inside a band of ±0.70 decades. That result is a prediction landing in the right decade, not an accuracy claim at any individual point.
Relation to the other research areas
Counterfactual CFD is the Center's applied area. It takes three pieces of the Effect Propagation Process into engineering work: context alternation, the append-only effect log, and the causal state machine. Results are released as open source within the DeepCausality project.
Resources
- cfd.deepcausality.com — project site: tutorial, blueprints, worked examples, validation records, and capability boundaries
- deep_causality_cfd on GitHub — source, verification programs, design studies, and benchmarks
- Avionics examples — the reentry, weather dispersion, and powered descent cases
- Dynamic causality — the foundation this project is built on
← Previous: dynamic causality · All research areas · Next: dynamic knowledge →