|
| 1 | +[](https://github.com/pratiktech28/gprmax_integration_test/actions/workflows/integration.yml) |
| 2 | + |
| 3 | +<img width="412" height="122" alt="download" src="https://github.com/user-attachments/assets/0191f5d7-407a-4217-b9c4-023a624c7d1d" /> <img width="225" height="225" alt="download" src="https://github.com/user-attachments/assets/556ce370-2f83-47c5-8a2c-642ebc10e113" /> |
| 4 | + |
| 5 | + |
| 6 | + |
| 7 | +# gprMax Automated Integration & Fidelity Testing |
| 8 | + |
| 9 | +> **Standardizing EM Simulation Validation through Automated CI/CD & Geometric Integrity Gates.** |
| 10 | +
|
| 11 | +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. |
| 12 | + |
| 13 | +--- |
| 14 | + |
| 15 | +## 🚀 The Core Workflow |
| 16 | +This project simulates a complete user workflow in a single automated pass: |
| 17 | +1. **Model Execution:** Dynamically provisions a Python environment to run gprMax models. |
| 18 | +2. **Output Extraction:** Programmatically extracts simulation results from `.out` files. |
| 19 | +3. **Fidelity Verification:** Compares live results against a **'Golden Reference'** dataset. |
| 20 | + |
| 21 | +## 🛠️ Key Technical Features |
| 22 | + |
| 23 | +### 1. Continuous Integration (GitHub Actions) |
| 24 | +The workflow doesn't just run code; it builds the environment: |
| 25 | +* **Dynamic Provisioning:** Automatically installs gprMax directly from the source repository. |
| 26 | +* **Environment Locking:** Ensures reproducibility across different runner architectures. |
| 27 | + |
| 28 | +### 2. Regression Testing (NRMSE Logic) |
| 29 | +To ensure scientific integrity, we implement **Normalized Root Mean Square Error (NRMSE)** calculations. |
| 30 | +* **Logic:** If the deviation between the live simulation and the Golden Reference exceeds the precision threshold ($\pm 0.001$m), the build fails. |
| 31 | +* **Goal:** Catch regressions in the simulation engine before they reach production. |
| 32 | + |
| 33 | +### 3. Geometric Fidelity |
| 34 | +* Automated validation of geometric models to ensure spatial accuracy in EM simulations. |
| 35 | + |
| 36 | +--- |
| 37 | + |
| 38 | +## 📊 Proof of Implementation |
| 39 | +* **Terminal Output:** End-to-end synchronization verified between the engine and validation logic. |
| 40 | +* **Integration Tests:** Verifying data flow from solver to post-processor. |
| 41 | + |
| 42 | +--- |
| 43 | + |
| 44 | +## 🛠️ Tech Stack |
| 45 | +* **Language:** Python 3.x |
| 46 | +* **Automation:** GitHub Actions |
| 47 | +* **Physics Engine:** gprMax (Source-built) |
| 48 | +* **Math/Stats:** NumPy (for NRMSE calculation), Matplotlib (for visualization) |
| 49 | + |
| 50 | +--- |
| 51 | + |
| 52 | +## 📂 Repository Structure |
| 53 | +* `scripts/`: Integration and regression testing logic. |
| 54 | +* `.github/workflows/`: CI configuration for automated environment setup. |
| 55 | +* `data/`: Golden Reference datasets for validation. |
0 commit comments