Validation Overview
Helicon maintains a suite of physics validation tests against published experimental and numerical benchmarks.
Running All Validation Cases
Or from Python:
from helicon.validate.runner import run_all_validations
results = run_all_validations()
for name, result in results.items():
status = "PASS" if result.passed else "FAIL"
print(f"[{status}] {name}: {result.summary}")
Validation Cases
| Case | Reference | Observable | Tolerance |
|---|---|---|---|
| Free Expansion | Andersen et al. (1969) | Velocity distribution | < 5% RMS |
| Merino-Ahedo | Merino & Ahedo (2011) | Detachment efficiency vs R_B | < 10% |
| VASIMR VX-200 | Olsen et al. (2015) | Thrust, Isp | < 15% |
| Resistive Detachment | Dimov & Taskaev (2003) | Hall parameter threshold | within range |
Validation Report
from helicon.validate.report import generate_html_report
generate_html_report(results, output_dir="docs/validation_results/")
HTML reports with field plots are saved to docs/validation_results/.
Adding Custom Validation Cases
Subclass ValidationCase:
from helicon.validate.base import ValidationCase, ValidationResult
class MyBenchmark(ValidationCase):
name = "my_benchmark"
reference = "Author et al. (2020)"
def get_config(self):
return SimConfig.from_yaml("benchmarks/my_case.yaml")
def run(self, output_dir, dry_run=False):
...
return ValidationResult(passed=True, summary="Error < 5%")