31 lines
1.4 KiB
Markdown
31 lines
1.4 KiB
Markdown
# Accuracy experiments
|
|
|
|
This directory is deliberately separate from `tests/`. It uses Catch2 only as
|
|
an MPI-aware runner, selector, configuration host, and failure reporter. A run
|
|
fails only when the calculation is invalid (for example, non-finite output or a
|
|
failed linear solve); measured accuracy is written as data, not as a regression
|
|
tolerance.
|
|
|
|
`experiment_main.cpp` registers the `experiment` Catch2 reporter. It collects
|
|
rows recorded with `record_experiment_result` and writes one wide CSV table on
|
|
MPI rank zero. Each row carries sweep parameters and numerical metrics, so
|
|
results can be plotted or compared across commits.
|
|
|
|
The initial budget has three sweeps at fixed mesh and polynomial orders:
|
|
|
|
1. linear-solver tolerance: `1e-8`, `1e-10`, `1e-12`, `1e-14`;
|
|
2. production quadrature boost: `0`, `4`, `8`;
|
|
3. reference-space decomposition: numerical field/potential error, analytic
|
|
projection error, and numerical-to-projection gap.
|
|
|
|
Run only the budget and choose its output path with:
|
|
|
|
```text
|
|
./mean_field_experiments --experiment-output gravity_budget.csv --catch2 "[accuracy]"
|
|
```
|
|
|
|
The executable needs the same dependencies, generated module mapping, and
|
|
configuration registration as the existing Catch2 test executable. Add
|
|
`experiment_main.cpp` and `gravity_accuracy_budget.cpp` as a second executable
|
|
next to that target; do not add them to the ordinary test executable.
|