Automated aerodynamic design-space exploration of an axisymmetric rocket-shaped UAV body using CST parameterization, Gmsh, OpenFOAM 13, Python, and statistical analysis.
The project develops an end-to-end CFD workflow that generates parameterized geometries, constructs meshes, runs OpenFOAM simulations, monitors numerical quality, stores results, and progressively refines the design space.
A total of 130 CFD configurations were evaluated across global and local exploration stages.
The best observed configuration was P45_012.
The central research question is:
Can an automated CFD workflow efficiently explore a parameterized rocket-shaped UAV body and identify lower-drag geometries within a constrained design space?
Instead of manually preparing individual CFD cases, the project builds a reusable computational pipeline:
Design variables
↓
CST parameterization
↓
Geometry generation
↓
Gmsh meshing
↓
OpenFOAM CFD
↓
Quality checks
↓
Post-processing
↓
SQLite database
↓
Statistical analysis
↓
Design-space refinement
The complete study contains:
| Stage | CFD cases | Purpose |
|---|---|---|
| Initial DOE | 100 | Global design-space exploration |
| Phase 3 | 15 | Local exploration of promising regions |
| Phase 4.5 | 15 | Hypothesis-guided refinement |
| Total | 130 | Final ranked dataset |
The final best-observed configuration was:
| Parameter | Value |
|---|---|
| λ | 3.8 |
| w₀ | 0.5 |
| w₁ | 1.5 |
| w₂ | 1.0 |
| w₃ | 0.5 |
| Maximum radius | 0.070 m |
| Body length | 0.532 m |
Reported production CFD coefficient:
C_D = 7.18132545 × 10⁻⁴
under the 5° wedge coefficient convention used consistently throughout the campaign.
P45_012 improved the observed drag coefficient by approximately 1.39% relative to the best configuration found in the initial 100-case DOE.
The refinement stages successfully concentrated new CFD evaluations in the lower-drag region of the sampled design space.
Among the final top 10 configurations:
- 8 came from Phase 4.5
- 1 came from Phase 3
- 1 came from the Initial DOE
The initial DOE leader, Body_0004, finished at rank 6 after the refinement stages.
P45_012 is therefore described as the best observed configuration within the 130 simulated designs, rather than as a mathematically proven global optimum.
Spearman rank analysis was used to examine monotonic relationships between the CST design parameters and drag.
Approximate correlations with C_D are:
| Variable | Spearman ρ | Observed tendency |
|---|---|---|
| w₀ | +0.78 | Strong positive association |
| w₁ | −0.65 | Strong negative association |
| λ | +0.50 | Moderate positive association |
| w₂ | −0.31 | Weaker negative association |
| w₃ | −0.14 | Weak association |
The results indicate that w₀ and w₁ show the strongest monotonic relationships with drag within the sampled design space.
However, the CST coefficients jointly define the body geometry, so these relationships should not be interpreted as independent causal sensitivities.
The body profile is generated using Class-Shape Transformation (CST) parameterization.
Five design variables are used:
λ
w₀
w₁
w₂
w₃
The maximum radius is fixed at:
R_max = 0.070 m
while body length varies with λ.
The geometry implementation is located under:
src/geometry/
A lightweight representation of the selected P45_012 geometry is provided under:
examples/selected_case/P45_012/
The research strategy combines broad exploration with progressively more targeted refinement.
100 configurations were evaluated to establish broad coverage of the available design space.
15 additional configurations were sampled within a narrowed region identified from analysis of the initial campaign.
15 targeted configurations were constructed to test engineering hypotheses derived from the previous results.
This final stage produced P45_012 and most of the highest-ranked configurations.
The production CFD configuration uses:
OpenFOAM 13
Steady incompressible RANS
SIMPLE pressure–velocity coupling
k–ω SST turbulence model
5° axisymmetric wedge domain
Maximum iteration budget: 1000
Representative freestream conditions are:
| Quantity | Value |
|---|---|
| Velocity | 138.89 m/s |
| Temperature | 298.15 K |
| Pressure | 101325 Pa |
| Density | ≈ 1.184 kg/m³ |
| Dynamic viscosity | ≈ 1.84 × 10⁻⁵ Pa·s |
| Mach number | ≈ 0.40 |
A 5° wedge representation was used to reduce computational cost while preserving the axisymmetric geometry required for comparative screening.
The reusable OpenFOAM configuration is located at:
openfoam/template_case/
A mesh-refinement study was performed before selecting the production configuration.
The production mesh is referred to as:
M4_PRODUCTION
and contains approximately 685,000 cells for the reference configuration.
The change in drag coefficient from M3 to M4 satisfied the predefined 2% mesh-independence acceptance criterion.
The production mesh uses approximately:
First prism-layer height ≈ 1 × 10⁻⁴ m
Growth ratio ≈ 1.25
Prism layers = 14
The production campaign uses an incompressible solver at approximately Mach 0.40.
Because compressibility effects are no longer negligible at this operating condition, a five-body comparison was performed using a compressible CFD formulation.
The comparison produced approximately:
Pearson r ≈ 0.92
between incompressible and compressible drag coefficients for the tested bodies.
The broad ranking tendency was preserved, although a local rank exchange occurred between two neighboring configurations.
This supports the use of the incompressible formulation for large-scale comparative screening while also demonstrating that it should not be treated as an exact absolute-drag model.
The project intentionally distinguishes numerical verification from experimental validation.
Important limitations include:
- mean production y⁺ values of approximately 17–18
- incompressible modeling at Mach ≈ 0.40
- steady RANS assumptions
- turbulence-model sensitivity
- a finite 1000-iteration solver budget
- some cases reaching
MAX_ITERATIONSwithout satisfying strict convergence criteria - axisymmetric wedge assumptions
- no experimental drag validation
For this reason, the dataset is intended primarily for:
relative aerodynamic ranking under a common CFD configuration
rather than experimentally validated absolute drag prediction.
Detailed discussion is available in:
docs/validation.md
Velocity field around P45_012:
Pressure field around P45_012:
These visualizations support qualitative interpretation of the selected geometry, while the ranking itself is based on drag values extracted consistently through the automated CFD pipeline.
rocket-shaped-uav-cfd-optimization/
│
├── src/
│ ├── geometry/ CST geometry generation
│ ├── batch/ Design sampling
│ ├── campaign/ CFD campaign automation
│ ├── reporting/ Analysis and reporting utilities
│ └── csv_to_geo.py
│
├── openfoam/
│ └── template_case/ Reusable OpenFOAM production case
│
├── scripts/
│ ├── importMesh.sh
│ ├── runProductionCase.sh
│ ├── setWedgePatches.sh
│ └── regenerate_results_figures.py
│
├── data/
│ ├── README.md
│ └── authoritative_dataset_130.csv
│
├── examples/
│ └── selected_case/
│ ├── README.md
│ └── P45_012/
│
├── figures/
│ ├── best_design/
│ ├── results/
│ ├── validation/
│ └── workflow/
│
├── docs/
│ ├── methodology.md
│ ├── validation.md
│ ├── results.md
│ └── reproducibility.md
│
├── requirements.txt
└── README.md
Generated runtime directories such as OpenFOAM meshes, processor folders, solver outputs, campaign state, and runtime databases are intentionally excluded from version control.
git clone https://github.com/confusingRD/rocket-shaped-uav-cfd-optimization.git
cd rocket-shaped-uav-cfd-optimizationpython -m pip install -r requirements.txtThe current Python dependencies are:
numpy
matplotlib
distro
python -m compileall -q srcpython src/campaign/cli.py --helpAvailable campaign commands include:
init
validate
status
run
resume
plan
The principal design-variable plots are generated directly from the authoritative 130-case dataset.
Run:
python scripts/regenerate_results_figures.pyThis regenerates:
figures/results/
├── results_cd_vs_lambda.png
├── results_cd_vs_w0.png
├── results_cd_vs_w1.png
├── results_cd_vs_w2.png
├── results_cd_vs_w3.png
└── results_spearman_correlation.png
from:
data/authoritative_dataset_130.csv
The Python analysis components can be inspected and executed on Windows, Linux, or WSL.
Full CFD execution additionally requires:
- OpenFOAM 13
- Gmsh
- MPI / OpenMPI
- Bash
- Linux or WSL
The complete CFD workflow is therefore intended to run in a Linux-compatible environment.
Detailed reproduction instructions are provided in:
More detailed technical documentation is available here:
| Document | Description |
|---|---|
| Methodology | CST, DOE strategy, CFD configuration, and refinement methodology |
| Numerical Verification | Mesh independence, y⁺, compressibility, convergence, and limitations |
| Results | Final ranking, parameter trends, and P45_012 |
| Reproducibility | Environment requirements and workflow reproduction |
| Selected Case | Lightweight P45_012 reproduction example |
| Dataset | Description of the authoritative 130-case dataset |
Geometry and meshing
- CST parameterization
- Gmsh
CFD
- OpenFOAM 13
- k–ω SST
- steady incompressible RANS
- MPI parallel execution
Automation and analysis
- Python
- NumPy
- Matplotlib
- SQLite
- Bash
Engineering workflow
- automated case generation
- campaign checkpointing and recovery
- convergence monitoring
- design-space exploration
- statistical sensitivity analysis
- reproducible result generation
Beyond the final aerodynamic design itself, the project demonstrates an integrated engineering workflow for computational design exploration:
- parameterized geometry generation
- automated CFD case construction
- batch simulation management
- failure and interruption recovery
- numerical quality monitoring
- structured result storage
- statistical interpretation
- iterative engineering decision-making
The emphasis is therefore not only on obtaining a lower-drag body, but also on building a workflow capable of managing a relatively large CFD campaign in a repeatable and inspectable way.
The authoritative final dataset contains all 130 configurations:
View the authoritative 130-case dataset
Each row records information including:
rank
body_id
phase
Cd
lambda
w0
w1
w2
w3
converged_residual
force_converged
runtime_s
termination_reason
This preserves both aerodynamic performance and numerical-status information rather than publishing only the final ranking.
The primary conclusion of the study is:
Within the sampled CST design space and the common production CFD setup, P45_012 produced the lowest observed drag coefficient among the 130 simulated configurations.
The project does not claim that:
- P45_012 is the mathematical global optimum,
- the reported C_D is experimentally validated,
- incompressible CFD is equivalent to compressible CFD at Mach 0.40, or
- the present numerical setup represents final high-fidelity vehicle certification.
Future work should progressively confirm the highest-ranked candidates using improved near-wall resolution, compressible CFD, selected three-dimensional simulations, and experimental measurements when available.
Phase 1 computational study: complete
130 CFD simulations
100 Initial DOE
15 Phase 3
15 Phase 4.5
Best observed candidate: P45_012
The repository is a curated version of the computational workflow and research outputs used during the study.








