This source-only repository contains the final project workflows selected for
future refinement and publication: a C608 absolute geometric-pitch sweep
(historically named the “AoA” sweep), a refined Spalart–Allmaras (SA) RANS
screen advanced through t = 0.65 s, and a research implementation of
augmented-Burgers atmospheric propagation and Stevens Mark VII perceived-level
(PLdB) evaluation.
The repository name x59_AoA is retained for continuity. The included
computational configuration is NASA's Third AIAA Sonic Boom Prediction
Workshop (SBPW-3) C608 Low Boom Flight Demonstrator test case, an earlier
X-59/LBFD-related workshop configuration—not the as-built X-59 flight geometry.
Results produced with this repository should not be described as X-59 flight
predictions. See the official C608 case
page.
This work began during NASA's STEM Enhancement in Earth Science (SEES) program. The program phase is complete; the repository is now curated for refinement and publication.
The repository connects three independently useful components:
- a maintained OpenFOAM controller for the C608 geometric-pitch screen;
- a separate refined SA RANS off-body waveform screen through
0.65 s, initialized from an external coarse-case checkpoint; and - the installable
beta-boompackage for propagating a near-field pressure trace to ground altitude and evaluating PLdB.
No CFD solution fields, generated meshes, processor directories, extracted traces, logs, plots, reports, or computed tables are included. Accordingly, this repository makes no numerical claim about an optimum pitch, PLdB reduction, or flight-level accuracy.
The end-to-end research path has four stages. Each stage points to its maintained entry point and documentation.
- Configuration: NASA SBPW-3 C608,
M∞ = 1.4, reference lengthL = 27.432 m(1080 in) - Solver: OpenFOAM
rhoCentralFoam - Pitch screen: target geometric pitch
0.00°–4.95°in0.05°increments - Primary task: plan or run cases with
run_c608_aoa.py - Inputs: geometric-pitch case template and workflow guide
The source geometry already contains the workshop's +2.15° design
incidence and NASA's nominal condition uses the unchanged geometry at zero
flow angle of attack. The controller instead applies
target_pitch − 2.15°. Existing paths, environment variables, filenames,
and the aoa_deg field keep their legacy names for compatibility; within
this repository they denote target absolute geometric pitch, not a
conventional fixed-geometry flow-AoA sweep.
The independent refined workflow uses the Spalart–Allmaras turbulence model
through OpenFOAM's RAS framework. Its final-time check is a temporal
waveform-stationarity heuristic based on ParaView samples of reconstructed
fields at 0.600, 0.625, and 0.650 s. It is not a mesh-convergence
study or a complete physical-validation claim. See
run_refine_to_0p65.sh
and the RANS workflow guide.
- Geometric-pitch workflow: ParaView sampling at
R/L = 0.25, 0.50, 1.00;R/L = 0.25is the primary propagation input - SA RANS workflow: SBPW-3 radial probes and reconstructed-field traces;
the time gate uses
R/L = 1, 2, 3 - Tasks: extract final geometric-pitch traces or sample SBPW-3 probes
Here R/L = r/L_body: radial distance from the body axis divided by the
C608 body reference length.
- Model: one-dimensional augmented Burgers equation along a straight Mach-angle slant path
- Operators: nonlinear steepening, thermoviscous absorption, molecular relaxation, and geometrical-spreading approximation
- Task: run
beta-boom propagateusing the documented trace format - Method details: Beta methodology and limitations
This is not three-dimensional refracted ray tracing, and it does not model finite-impedance ground interaction. Its primary modeled output is the incident waveform at ground altitude.
- Metric: Stevens Mark VII PLdB, using the repository implementation that follows NASA/TM-20250003346
- Primary comparison: incident PLdB
- Optional comparisons: configurable
1.9×and ideal rigid-plane2×pressure-scaled series; neither is silently applied as a ground model - Task: fit an interpolation model with
fit_aoa_pldb_regression.py
nasa_2025 remains in data keys and internal function names for compatibility.
It identifies this implementation path; it is not the name of an official NASA
software product.
.
├── beta_solver/
│ ├── src/beta_boom/ # installable propagation and PLdB package
│ ├── tests/ # solver and CLI tests
│ ├── examples/ # synthetic, non-validation example
│ └── docs/ # formats, method, limits, references
├── workflows/
│ ├── aoa_sweep/
│ │ ├── case_template/ # source OpenFOAM inputs only
│ │ ├── simulation/ # maintained rerun/recovery controller
│ │ ├── analysis/ # extraction, propagation, QA, regression
│ │ └── overlays/ # documented endpoint mesh override
│ └── rans_065/
│ ├── case/ # source OpenFOAM dictionaries and geometry
│ ├── scripts/ # mesh, mapping, segmented-run driver
│ ├── mesh/ # corridor-generation source
│ └── postprocessing/ # reconstructed-field and probe samplers
├── docs/ # project provenance and publication checklist
├── tools/verify_source_repo.py # generated-data and path-leak guard
├── requirements-workflows.txt
└── .gitignore
The approved C608 STL appears in both independently stageable OpenFOAM templates. Git stores the identical content as a single blob. Generated mesh files and prior result products are intentionally excluded.
Python 3.10 or newer is required.
python3 -m venv .venv
source .venv/bin/activate
python -m pip install -r requirements-workflows.txtOpenFOAM and ParaView are external and are not installed by this repository. The retained workflows were developed with:
- OpenFOAM.com
v2606for the main geometric-pitch family andv2512for recovery cases; - OpenFOAM.com
v2506for the refined SA RANS screen; and - ParaView/
pvpython5.13.3for sampling reconstructed fields.
Before simulation, verify rhoCentralFoam, snappyHexMesh,
reconstructPar, mpirun, and pvpython are on PATH. Detailed
requirements are recorded in each workflow README.
python tools/verify_source_repo.py
python -m pytestThe verification task rejects generated CFD/results patterns, caches, local absolute paths, and unapproved large files.
C608_PLAN_ONLY=1 \
python workflows/aoa_sweep/simulation/run_c608_aoa.pyTo run selected cases, configure the paths documented in
workflows/aoa_sweep/README.md and use the
legacy-compatible C608_TRIAL_INDICES environment variable. This maintained
controller is suitable for future reruns; it is not claimed to be the
byte-exact controller that produced every historical program result.
workflows/rans_065/scripts/run_refine_to_0p65.sh \
--source-case /path/to/coarse/case \
--source-time 0.6The external checkpoint is required because it is simulation result data and is not distributed here. The refined mesh does not have a validated uniform cold-start route, so the driver does not silently substitute one.
beta-boom propagate \
--trace /path/to/near_field_trace.csv \
--output-dir /path/to/outputSee Beta's README for the complete CLI and output conventions.
python workflows/aoa_sweep/analysis/fit_aoa_pldb_regression.py \
--input /path/to/propagation_summary.csv \
--output-dir /path/to/regression_outputThe regression task performs interpolation only within observed geometric pitch values. It does not infer a flight-optimal angle.
| Parameter | Repository value | Meaning |
|---|---|---|
| C608 body reference length | 27.432 m |
1080 in |
| Freestream Mach number | 1.40 |
C608 workshop condition |
| Embedded design incidence | +2.15° |
already present in source geometry |
| Geometric-pitch grid | 0.00°–4.95°, step 0.05° |
legacy aoa_deg coordinate |
| Geometric-pitch-screen freestream pressure | 10,520 Pa |
template/controller default |
| Beta starting altitude | 16,000 m |
configurable propagation default |
| Refined SA RANS endpoint | 0.650 s |
final scheduled CFD time |
| Time-gate radii | R/L = 1, 2, 3 |
reconstructed-field comparisons |
| Primary Beta input radius | R/L = 0.25 |
geometric-pitch workflow convention |
These are case and software defaults, not universal flight conditions.
This publication branch contains no simulation or regression results.
Previously tracked generated meshes, metadata, figures, and tables are removed
from the current source tree and blocked by .gitignore.
Because the shared repository history is preserved, files published in earlier
commits remain part of that history; this reorganization does not rewrite it.
Historical outputs are not evidence for the former README's claims of 150
simulations, a 1.75° optimum, 3–5 dB reduction, surrogate-model
accuracy, or X-59 flight validation. Those claims are not retained.
Rotating the C608 geometry changes its absolute geometric orientation. It is not equivalent to changing the incoming-flow angle around a fixed workshop geometry. Retaining legacy “AoA” identifiers prevents broken data and automation interfaces; reports should use target geometric pitch.
The geometric-pitch family is a screening workflow. The refined SA RANS case uses a derived watertight two-component C608 approximation, one generic wall, no propulsion patches, and no validation-quality prism-layer stack. Neither workflow should be described as a powered, wall-resolved, flight-validated X-59 computation.
Beta models nonlinear waveform evolution along a prescribed straight slant path. It does not solve three-dimensional atmospheric refraction, neighboring ray-tube spreading, terrain, or finite ground impedance. Use the incident waveform and incident PLdB for like-for-like solver comparisons.
Project citation metadata is not final. Until authorship and licensing are
resolved, cite the repository URL and exact Git commit SHA, and cite the
methods and NASA references listed in
beta_solver/docs/REFERENCES.md and
THIRD_PARTY_NOTICES.md.
Before a formal release, complete
docs/PUBLICATION_CHECKLIST.md, including
author order, contributor permission, code license, geometry attribution, and
archival DOI.
- reproduce the complete geometric-pitch grid with one documented OpenFOAM release and convergence policy;
- develop and validate a source-only cold-start route for the refined SA RANS mesh;
- compare propagated incident signatures with an independent solver and authorized reference data;
- add atmospheric refraction and ray-tube spreading if the research question requires them;
- add a validated finite-impedance ground model before interpreting reflected waveforms; and
- publish result datasets separately with provenance, checksums, and licenses.
Source the intended OpenFOAM environment and set the configurable executable
paths described in the workflow README. Use PVPYTHON=/path/to/pvpython when
pvpython is not on PATH.
Pass a readable coarse case and time to
run_refine_to_0p65.sh --source-case ... --source-time .... No coarse
checkpoint is bundled.
Check the CSV schema, units, pressure convention, and orientation metadata
against beta_solver/docs/INPUT_FORMAT.md.
Do not mix incident, 1.9×, rigid 2×, or legacy PLdB conventions.
Open a GitHub issue for reproducibility defects, portability fixes, or
source-backed method corrections. Before contributing, review
beta_solver/CONTRIBUTING.md and the
publication checklist.
Last Updated: August 2026
Status: Program phase complete; source workflows curated for publication
License: No open-source license selected; see LICENSE.md