Paroto Examples#
This directory contains example files and configurations for the Paroto optimization framework.
📁 Contents#
Python Examples#
EXAMPLE_MODEL_USAGE.py - Demonstrates different model fidelities and the model registry
Compares breakdown voltage models at different fidelity levels
Shows how to use the model registry
Exports architecture to STONE format
Subdirectories#
VDEF_optim/ - Voltage-gap-Distance-Energy-Frequency (VDEF) optimization
Complete parameter sweep example with OpenMDAO
Parallel execution (multiprocessing/MPI)
Advanced pairwise grid visualization
See VDEF_optim/README.rst for details
Configuration Files#
config_example.yml - Basic configuration template with all available options
config_low_fidelity.yml - Fast exploration with low-fidelity models
config_with_models.yml - Recommended balanced configuration (medium fidelity)
config_high_fidelity.yml - High accuracy with physical models
Results#
example_results/ - Sample output from running optimizations
cases.db - OpenMDAO case database
problem_summary.txt - Problem structure summary
config.json - Configuration used for the run
example_architecture.yml - Generated STONE format architecture file
🚀 Quick Start#
Run the Python Example#
conda activate paroto
python examples/EXAMPLE_MODEL_USAGE.py
Run Optimization with Different Fidelities#
# Fast exploration (low fidelity)
paroto-optimize --config examples/config_low_fidelity.yml --out results_low/
# Recommended balance (medium fidelity)
paroto-optimize --config examples/config_with_models.yml --out results_medium/
# High accuracy (high fidelity)
paroto-optimize --config examples/config_high_fidelity.yml --out results_high/
Single-Point Evaluation#
Test a configuration without optimization:
paroto-optimize --config examples/config_example.yml --out results/ --driver none
Model Validation#
Validate breakdown voltage models against experimental data:
conda activate paroto
python -m paroto.validation.validate_breakdown_models
This will:
Compare all 5 breakdown models against Paschen curve data
Validate temperature correction factors
Test spark breakdown transition (G-S) with field enhancement
Generate validation plots with statistical metrics
See paroto/validation/README.md for details.
📚 Documentation#
For more details, see:
Main documentation
QUICK_START_MODELS.md - Quick start guide
MODEL_SELECTION_GUIDE.md - Complete model selection guide
🎓 Recommended Learning Path#
Start here: Run EXAMPLE_MODEL_USAGE.py to understand model differences
Single evaluation: Try config_example.yml with –driver none
DOE sweep: Use config_low_fidelity.yml with –driver doe –generations 50
Optimization: Run config_with_models.yml with –driver gradient or –driver nsga2
Validation: Use config_high_fidelity.yml for final designs
Advanced: Explore VDEF_optim/ for comprehensive parameter space analysis
📊 Advanced Examples#
VDEF MDAO Parameter Space Exploration#
For a complete example of parameter space exploration using OpenMDAO with parallel execution and advanced visualization:
cd VDEF_optim/
python example_vdef_mdao.py # Run parameter sweep
python analyze_vdef_pairwise.py # Generate pairwise grid visualization
See VDEF_optim/README.rst for complete documentation.
sphx_glr_auto_examples_EXAMPLE_MODEL_USAGE.py
sphx_glr_auto_examples_VALIDATION_EXAMPLE.py
sphx_glr_auto_examples_example_problem_graph.py
sphx_glr_auto_examples_gallery_hierarchical_viz.py
sphx_glr_auto_examples_plot_generator_operating_window.py
VDEF MDAO Optimization Example#
This folder contains a comprehensive example of using the paroto library for Voltage-gap-Distance-Energy-Frequency (VDEF) optimization in plasma torch design, using Multidisciplinary Analysis and Optimization (MDAO) with OpenMDAO.
Overview#
The example demonstrates:
Parameter sweep of plasma torch operating conditions
Constraint satisfaction (25 kW power target, breakdown voltage limits)
Parallel execution using Python multiprocessing (Windows) or MPI (Linux)
Data persistence using SQLite databases
Advanced visualization with pairwise grid (corner plot) analysis
Files#
1. example_vdef_mdao.py#
Main parameter sweep script that explores the plasma torch design space.
Features:
Uses OpenMDAO’s
TorchDesignGroupwith physics-based modelsExplores 3D parameter space: Voltage × gap-Distance × Frequency
Computes Energy per pulse as output (satisfying power constraint)
Implements power constraint (25 kW) via balance component
Tracks convergence status for all evaluations
Saves results to SQLite database (
parameter_sweep_cases.sql)
Usage:
# Run parameter sweep (default: multiprocessing)
python example_vdef_mdao.py
# Generate N2 diagram only
python example_vdef_mdao.py --n2
Parameters Explored (VDEF):
Voltage (V): HV voltage: 5 - 80 kV (15 levels)
gap (D): Gap distance: 6 - 30 mm (8 levels)
Energy (E): Energy per pulse (computed output)
Frequency (F): Pulse frequency: 5 - 200 kHz (10 levels)
Total evaluations: 1,200 cases (15 × 8 × 10)
Outputs:
parameter_sweep_cases.sql: SQLite database with all resultsparameter_space_visualization.png: Standard 6-panel visualizationConsole output with convergence statistics
2. analyze_vdef_pairwise.py#
Post-processing script that creates pairwise grid (corner plot) visualization.
Features:
Loads results from SQLite database
Creates comprehensive pairwise grid showing:
All 2D parameter combinations
1D marginal distributions (histograms)
Three-way classification: Feasible / Converged-Infeasible / Non-converged
Eliminates 2D projection ambiguity
Color-coded by energy per pulse
Usage:
# Run after example_vdef_mdao.py has generated data
python analyze_vdef_pairwise.py
Output:
pairwise_grid_visualization.png: Comprehensive corner plot
3. generate_n2_diagram.py#
Utility script to generate OpenMDAO N2 diagram showing system architecture.
Usage:
python generate_n2_diagram.py
Output:
n2.html: Interactive N2 diagram
4. plot_generator_operating_window.py#
Demonstrates automatic constraint boundary exploration for the generator.
Usage:
python plot_generator_operating_window.py
sphx_glr_auto_examples_VDEF_optim_analyze_vdef_pairwise.py
sphx_glr_auto_examples_VDEF_optim_example_vdef_mdao.py
sphx_glr_auto_examples_VDEF_optim_generate_n2_diagram.py
sphx_glr_auto_examples_VDEF_optim_plot_generator_operating_window.py
VedEf Operating Window - 5D Parameter Space Exploration#
This directory contains a comprehensive example for exploring the operating window of a pulsed plasma torch with 5 design parameters and multiple physics-based constraints.
Overview#
The VedEf optimization explores 5 design parameters using ARC002 parameter naming convention:
G_UMAX_OUT (kV): Generator voltage (High voltage)
G_e (mm): Interelectrode gap distance
TP_D_OUT (mm): Torch outlet diameter
G_F (kHz): PRF - Pulse Frequency
G_Ep (J): Energy per pulse
TP_QM (kg/h): Mass flow rate per torch
All parameters follow the ARC002 parameter registry standard for consistency across the project and compatibility with experimental specifications.
Files#
Integration Layer (Example-Specific)#
1_model_vedef_design_group.py- VedEfDesignGroup model definitionDefines the VedEfDesignGroup class that integrates all models for 5D exploration. This is the reusable model component containing physics models, constraints, and connections.
1_setup_vedef_problem.py- Problem factory functionProvides setup_vedef_problem() convenience function that creates a fully configured OpenMDAO Problem with default parameter values. Used by all analysis scripts for consistency.
Note: These are application-specific integration files, not core library components. They connect the 5 parameters, 7 physics models/systems, and 10 constraints for this example.
Architecture Update (Nov 2025): Refactored to use:
HighVoltageGeneratorSysteminstead of simple HV window ExecCompTorchFlowSysteminstead of separate flow_rate and residence_time ExecCompsBrownianArcMobilityModelfor physics-based mobility modelingExplicit intermediate variables (T_0, breakdown_voltage, flow_velocity, etc.)
Main Example#
example_operating_window_5d.py- 5D parameter sweep with parallel executionvisualize_operating_window.py- Static matplotlib visualization of operating windowsdashboard_operating_window.py- Interactive Plotly Dash dashboardgenerate_vedef_diagram.py- Mermaid diagram generation
Validation and Compliance#
validate_arc002_compliance.py- Validates parameter names against ARC002 registryChecks that all critical design parameters:
Are defined in the ARC002 parameter registry
Are associated with the correct Equipment_Class (Generator, PlasmaTorch, etc.)
Follow the standard naming convention
Usage:
python examples/VedEf_optim/validate_arc002_compliance.pyARC002 Registry Utilities:
paroto/validation/arc002.py
Utilities#
Uses
paroto/utils/mermaid_generator.pyfor flowchart generationUses
paroto/utils/cytoscape_layout.pyfor interactive graph layouts
Physics Models#
New Models Created#
1. Initial Temperature Model (PulseInitialTemperatureModel)#
Computes the initial gas temperature before each pulse, accounting for:
Energy-to-temperature conversion via sub-model:
ConstantCpEnergyModel(Low fidelity, default)CanteraEnergyModel(High fidelity, optional)
Cylindrical thermal diffusion with characteristic time τ = (d_a/2)² / (4α)
Exponential relaxation between pulses
Location: paroto/core/models/initial_temperature.py
Sub-models: paroto/core/models/energy_to_temperature.py
Gallery: examples/gallery/plot_initial_temperature_model_example.py,
plot_energy_to_temperature_example.py
Validation: paroto/validation/validate_initial_temperature.py
2. Coverage Model (ArcCoverageModel)#
Ensures complete gas treatment by the arc, as if the arc was painting the cross-flow gas:
Constraint: π × e × d_a² / 4 × f ≥ v × S
Outputs coverage fraction and constraint satisfaction
Critical for ensuring all gas passes through the thermal treatment zone
Location: paroto/core/models/coverage.py
Gallery: examples/gallery/plot_coverage_model_example.py
Validation: paroto/validation/validate_coverage.py
3. Arc Density Constraint Model (ArcDensityConstraintModel)#
Limits energy density in the arc volume:
Constraint: ρ_E = E_p / V_arc < ρ_E_max
Prevents arc instabilities from excessive energy concentration
Note: Max energy density threshold requires experimental validation
Location: paroto/core/models/arc_density.py
Gallery: examples/gallery/plot_arc_density_model_example.py
4. Arc Mobility Model (BrownianArcMobilityModel)#
Models arc attachment point movement as Brownian motion:
Affects reignition probability and thermal loading distribution
Computes RMS displacement, mobility factor, and thermal spread factor
Based on characteristic velocity and time between pulses
Location: paroto/core/models/arc_mobility.py
Gallery: examples/gallery/plot_mobility_model_example.py
Validation: validation/validate_mobility.py
Existing Systems Integrated#
5. High Voltage Generator System (HighVoltageGeneratorSystem)#
Models power electronics constraints:
Operating window: f × V² × t_pulse / Z ≤ P_max
Replaces simple ExecComp with full system model
Outputs: operating_window_power, hv_operating_window_satisfied
Location: paroto/systems/generator.py
6. Torch Flow System (TorchFlowSystem)#
Models gas dynamics:
Mass conservation: ṁ = ρ × v × S
Residence time calculation
Reynolds number and pressure drop
Replaces simple ExecComps with physics-based flow model
Location: paroto/systems/torch/flow.py
Auto-Generated Architecture Diagrams#
The VeDeF example now includes automatic Mermaid diagram generation that introspects the OpenMDAO problem structure to visualize the complete architecture:
Run
generate_auto_diagram.pyto create diagrams showing actual data flowShows parameters (green), models (blue), intermediates (orange), constraints (red)
Eliminates manual diagram maintenance - always reflects current implementation
Script: examples/VedEf_optim/generate_auto_diagram.py
Generator: utils/mermaid_generator.py - generate_problem_graph() function
sphx_glr_auto_examples_VedEf_optim_1_model_vedef_design_group.py
sphx_glr_auto_examples_VedEf_optim_1_problem_generate_diagram.py
sphx_glr_auto_examples_VedEf_optim_1_setup_vedef_problem.py
sphx_glr_auto_examples_VedEf_optim_2_optim_find_working_params.py
sphx_glr_auto_examples_VedEf_optim_2_optim_parameter_sweep_5d.py
sphx_glr_auto_examples_VedEf_optim_2_optim_simple_test.py
sphx_glr_auto_examples_VedEf_optim_2_optim_smart_search.py
sphx_glr_auto_examples_VedEf_optim_2_optim_temperature_focused.py
sphx_glr_auto_examples_VedEf_optim_3_analysis_dashboard.py
sphx_glr_auto_examples_VedEf_optim_3_analysis_power_constraint.py
sphx_glr_auto_examples_VedEf_optim_3_analysis_recommend_parameters.py
sphx_glr_auto_examples_VedEf_optim_3_analysis_visualize_window.py
sphx_glr_auto_examples_VedEf_optim_analyze_problem_graph.py
sphx_glr_auto_examples_VedEf_optim_validate_arc002_compliance.py
Paroto Model Gallery#
This gallery contains minimal, standalone examples demonstrating individual models from the paroto library. Each example is self-contained (20-30 lines) and can be run independently.
Quick Start#
Each example can be run directly:
python plot_initial_temperature_model_example.py
python plot_coverage_model_example.py
python plot_arc_density_model_example.py
python plot_pulsed_breakdown_example.py
python plot_mobility_model_example.py
python plot_generator_system_example.py
python plot_torch_flow_system_example.py
Gallery Index#
1. Initial Temperature Model#
File: plot_initial_temperature_model_example.py
Demonstrates the PulseInitialTemperatureModel which computes initial gas temperature
accounting for:
Energy-to-temperature conversion (via sub-model)
Cylindrical thermal diffusion
Relaxation between pulses
Output: Temperature evolution plot showing instantaneous jump and exponential decay.
1b. Energy to Temperature Conversion#
File: plot_energy_to_temperature_example.py
Demonstrates both energy conversion models:
ConstantCpEnergyModel- Simple, constant specific heat (low fidelity)CanteraEnergyModel- Temperature-dependent properties (high fidelity)
Output: Comparison of both models showing temperature rise differences.
2. Coverage Model#
File: plot_coverage_model_example.py
Demonstrates the ArcCoverageModel which ensures complete gas treatment by the arc:
Coverage fraction calculation
Constraint satisfaction check
Recommendations for incomplete coverage
Output: Text summary of coverage analysis.
3. Arc Density Constraint Model#
File: plot_arc_density_model_example.py
Demonstrates the ArcDensityConstraintModel which limits energy density in the arc:
Energy density calculation
Constraint margin
Safety assessment
Output: Text summary of energy density check.
4. Pulsed Breakdown Model#
File: plot_pulsed_breakdown_example.py
Demonstrates the RepetitivePulseBreakdownModel showing memory effects:
Breakdown voltage for 1, 10, 100 pulses
Transition from single-pulse to DC breakdown
Memory effect from repetitive pulsing
Output: Text summary showing voltage reduction with pulse number.
5. Arc Mobility Model#
File: plot_mobility_model_example.py
Demonstrates the BrownianArcMobilityModel for arc displacement:
RMS displacement calculation
Mobility factor
Thermal load spreading
Output: Text summary of arc movement characteristics.
6. High Voltage Generator System#
File: plot_generator_system_example.py
Demonstrates the HighVoltageGeneratorSystem for operating window constraints:
Operating window power calculation
Constraint satisfaction check
Generator capability assessment
Output: Text summary of generator operating point.
7. Torch Flow System#
File: plot_torch_flow_system_example.py
Demonstrates the TorchFlowSystem for flow calculations:
Flow velocity computation
Residence time calculation
Pressure drop estimation
Output: Text summary of flow characteristics.
Model Documentation#
Each model class includes comprehensive docstrings with:
Physics equations in LaTeX format
Input/output descriptions
Usage examples
References to gallery and validation scripts
Requirements#
Python 3.11+
OpenMDAO >= 3.27
NumPy
Matplotlib (for examples with plots)
paroto library installed (
pip install -e .from repo root)
Notes#
⚠️ AI-Generated Equations Warning: The physics equations in these models are AI-generated and not yet validated for production use. They serve as demonstrations of the model framework and should be validated against experimental data before use in real applications.
Contributing#
To add a new gallery example:
Create a minimal 20-30 line script
Include clear comments and output
Add entry to this README
Reference the gallery example in the model’s docstring