Standardizing EM Simulation Validation through Automated CI/CD & Geometric Integrity Gates.
This repository serves as the Proof of Concept (PoC) for the GSoC '26 proposal: "CI/CD + Physics Automation for gprMax." It bridges the gap between raw simulation output and scientific accuracy by implementing a fully automated validation pass.
This project simulates a complete user workflow in a single automated pass:
- Model Execution: Dynamically provisions a Python environment to run gprMax models.
- Output Extraction: Programmatically extracts simulation results from
.outfiles. - Fidelity Verification: Compares live results against a 'Golden Reference' dataset.
The workflow doesn't just run code; it builds the environment:
- Dynamic Provisioning: Automatically installs gprMax directly from the source repository.
- Environment Locking: Ensures reproducibility across different runner architectures.
To ensure scientific integrity, we implement Normalized Root Mean Square Error (NRMSE) calculations.
- Logic: If the deviation between the live simulation and the Golden Reference exceeds the precision threshold ($\pm 0.001$m), the build fails.
- Goal: Catch regressions in the simulation engine before they reach production.
- Automated validation of geometric models to ensure spatial accuracy in EM simulations.
- Terminal Output: End-to-end synchronization verified between the engine and validation logic.
- Integration Tests: Verifying data flow from solver to post-processor.
- Language: Python 3.x
- Automation: GitHub Actions
- Physics Engine: gprMax (Source-built)
- Math/Stats: NumPy (for NRMSE calculation), Matplotlib (for visualization)
scripts/: Integration and regression testing logic..github/workflows/: CI configuration for automated environment setup.data/: Golden Reference datasets for validation.


