Abstract
During GSoC 2025, my goal was to make SU2GUI more usable, reliable, and beginner-friendly.
The project brought together three pillars:
- Python wrapper integration — to automate and customize simulation workflows from inside the GUI.
- JSON-based configuration validation — to catch errors before runtime using schema logic.
- A simplified, cross-platform installer — to reduce setup friction and save hours of environment debugging.
This work helps users focus on simulation instead of setup, and improves SU2’s accessibility for both new and experienced users.
How can this help the SU2 Users?
- Lower entry barrier: One-click installer or pip install — no manual compilation.
- Early error detection: Real-time schema validation inside GUI.
- Reproducibility: Export GUI setups as runnable Python scripts.
- Guided workflow: From setup to solver execution, everything stays in the GUI.
Achievements
1. Python Wrapper Integration (Docs)
- Integrated automated SU2’s python wrapper generation functionality into SU2GUI.
- Enabled exporting GUI setups as Python scripts (
run_su2.py) to support serial or MPI execution.
- Added support for a user-defined wall temperature boundary condition in the Python wrapper, allowing custom temperature profiles via mathematical expressions over (x, y, z); e.g.,
560.0 - 260.0*sin(x*pi/4).
- GUI users can now generate and run wrappers with a single click.
2. JSON-based Configuration Validation (Docs)
This was one of the core parts of the project. The validation system is layered in two phases:
Phase 1: Basic Schema Validation
- KEY must be present in the official SU2 key list (defined in
JsonSchema.json).
- VALUE must match the expected data type (boolean, integer, float, string, array).
- Missing keys, extra keys, and wrong types are all reported in a clear, human-readable format.
Example errors caught: MISSING: MARKER_OUTLET, TYPE ERROR: CFL_NUMBER expected float, got string
Phase 2: Cross-Parameter Logic Validation
- If
KIND_TURB_MODEL = SA, then REYNOLDS_NUMBER must be defined.
- If
KIND_TURB_MODEL = NONE, then turbulence-related parameters must not be present.
- If
MARKER_ISOTHERMAL is used, then MARKER_PYTHON_CUSTOM should not be defined on the same boundary.
This cross-validation ensures that even when individual keys are valid, the overall configuration is also logically sound.
Integration into GUI
- Added a “Validate Configuration” button inside SU2GUI.
- Displayed results inline with real-time feedback and guidance.
- Users can re-validate after fixing errors until status shows Valid.
3. Simplified Installer (Docs)
- Developed an interactive Installation Wizard (GUI + CLI).
- Supported pre-compiled binaries for Windows, Linux, macOS.
- Automatic environment variable configuration (
SU2_HOME, SU2_RUN, PATH, PYTHONPATH).
- Automated installation of required dependencies.
- Reduced setup time by automating tedious steps like adding environment variables.
4. Other Enhancements
- Improved GUI error handling & backward compatibility.
- Implemented both GUI and command-line interfaces for the installer.
- Wrote user-facing documentation, troubleshooting guides, and code comments for maintainability.
Deliverables
Documentation
Pull Requests
- SU2GUI: PR #1 — Initial integration of Python wrapper and config validation logic into SU2GUI, laying the foundation for automated workflows and error checking.
- SU2GUI: PR #2 — Python wrapper export (
run_su2.py) with position-based custom wall temperature, validation UX wiring in the GUI (schema + cross-parameter checks surfaced to users), and installer flow improvements with platform-aware extraction and environment setup.
- SU2GUI: PR #3 — Enhanced GUI error handling, improved backward compatibility, and added support for both GUI and CLI installer interfaces, plus user-facing documentation and troubleshooting guides.
Future Work
- Expand cross-parameter validation logic to cover more solver types.
- Extend GUI scripting tab to allow custom Python scripts with CLI args.
- Improve visualization (multi-zone, 3D support).
- Add installer support for HPC modules and conda environments within SU2GUI.
Acknowledgements
I am deeply grateful to my mentors Nijso Beishuizen and Ujjawal Agrawal for their constant feedback, patience, and technical insight.
Their guidance not only shaped the code, but also how I approached problems and structured solutions.
Thanks to the SU2 community for reviewing my PRs, testing features, and providing valuable feedback.
Lastly, I am thankful to Google Summer of Code for giving me this opportunity to contribute to an open-source project that truly helps researchers, students, and engineers around the world.
This project has been both a technical challenge and a personal milestone. I am excited to continue contributing and growing with the SU2 ecosystem.