# amghalcyon/wind_turbine_project architecture

> Architecture diagram of the GitHub repository amghalcyon/wind_turbine_project, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-25). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/amghalcyon/wind_turbine_project
- Repository: https://github.com/amghalcyon/wind_turbine_project

## Overview

This repository combines wind-turbine blade design and FEA results with machine-learning surrogates for predicting equivalent stress and tip deflection. The documented engineering workflow runs from CAD through ANSYS simulations and a dataset into preprocessing, model training, evaluation, and sensitivity analysis. The sampled Python code confirms dataset preparation, model training, evaluation utilities, and a CLI prediction workflow; the README and tree establish the broader CAD, simulation, and notebook-analysis branches. The ANSYS and notebook internals were not sampled, so their documented links are shown without inferred implementation details.

Main entry points: [`src/training.py`](https://github.com/amghalcyon/wind_turbine_project/blob/main/src/training.py) (Model training), [`src/evaluation.py`](https://github.com/amghalcyon/wind_turbine_project/blob/main/src/evaluation.py) (Model evaluation), [`Dataset/simulation_matrix_updated_info.csv`](https://github.com/amghalcyon/wind_turbine_project/blob/main/Dataset/simulation_matrix_updated_info.csv) (Simulation dataset), [`predict.py`](https://github.com/amghalcyon/wind_turbine_project/blob/main/predict.py) (Prediction CLI)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_engineering["Engineering inputs"]
  node_cad["Blade CAD"]
  node_fea["ANSYS FEA"]
  node_dataset[("Simulation dataset")]
end

subgraph group_ml["ML pipeline"]
  node_preparation["Data preparation<br/>[data_processing.py]"]
  node_training["Model training<br/>[training.py]"]
  node_forest["Random Forest<br/>[training.py]"]
  node_xgboost["XGBoost<br/>[training.py]"]
  node_gpr["Gaussian Process<br/>[training.py]"]
end

subgraph group_analysis["Design analysis"]
  node_notebook_data["Data exploration"]
  node_evaluation["Model evaluation<br/>[evaluation.py]"]
  node_validation["Simulation validation"]
  node_sensitivity["Sensitivity analysis"]
  node_crossval["Cross validation"]
end

subgraph group_runtime["Prediction runtime"]
  node_model_save["Model persistence"]
  node_cli["Prediction CLI<br/>[predict.py]"]
  node_prediction["Prediction helpers<br/>[prediction.py]"]
  node_results["Stress and deflection<br/>[visualisation.py]"]
end

node_engineer(("Engineer"))

node_engineer -->|"designs blade"| node_cad
node_cad -->|"geometry for"| node_fea
node_fea -->|"simulation results"| node_dataset
node_dataset -->|"explored in"| node_notebook_data
node_dataset -->|"loads"| node_preparation
node_preparation -->|"prepares features"| node_training
node_training -->|"trains"| node_forest
node_training -->|"trains"| node_xgboost
node_training -->|"trains"| node_gpr
node_forest -->|"evaluated by"| node_evaluation
node_xgboost -->|"evaluated by"| node_evaluation
node_gpr -->|"evaluated by"| node_evaluation
node_dataset -->|"simulation comparisons"| node_validation
node_evaluation -->|"analysis in"| node_crossval
node_evaluation -->|"informs"| node_sensitivity
node_training -->|"trains and saves"| node_model_save
node_engineer -->|"enters parameters"| node_cli
node_cli -->|"loads saved models"| node_model_save
node_cli -->|"calls prediction"| node_prediction
node_prediction -->|"returns metrics"| node_results

click node_cad "https://github.com/amghalcyon/wind_turbine_project/tree/main/CAD"
click node_fea "https://github.com/amghalcyon/wind_turbine_project/tree/main/ANSYS"
click node_dataset "https://github.com/amghalcyon/wind_turbine_project/blob/main/Dataset/simulation_matrix_updated_info.csv"
click node_notebook_data "https://github.com/amghalcyon/wind_turbine_project/blob/main/Python/Data_Inspection.ipynb"
click node_preparation "https://github.com/amghalcyon/wind_turbine_project/blob/main/src/data_processing.py"
click node_training "https://github.com/amghalcyon/wind_turbine_project/blob/main/src/training.py"
click node_forest "https://github.com/amghalcyon/wind_turbine_project/blob/main/src/training.py"
click node_xgboost "https://github.com/amghalcyon/wind_turbine_project/blob/main/src/training.py"
click node_gpr "https://github.com/amghalcyon/wind_turbine_project/blob/main/src/training.py"
click node_evaluation "https://github.com/amghalcyon/wind_turbine_project/blob/main/src/evaluation.py"
click node_validation "https://github.com/amghalcyon/wind_turbine_project/blob/main/Python/Validation_of_simulations_EDA.ipynb"
click node_sensitivity "https://github.com/amghalcyon/wind_turbine_project/blob/main/Python/Sensitivity_Analysis_GPR.ipynb"
click node_crossval "https://github.com/amghalcyon/wind_turbine_project/blob/main/Python/Cross_Validation.ipynb"
click node_model_save "https://github.com/amghalcyon/wind_turbine_project/blob/main/train_and_save_models.py"
click node_cli "https://github.com/amghalcyon/wind_turbine_project/blob/main/predict.py"
click node_prediction "https://github.com/amghalcyon/wind_turbine_project/blob/main/src/prediction.py"
click node_results "https://github.com/amghalcyon/wind_turbine_project/blob/main/src/visualisation.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_cad,node_fea,node_dataset toneBlue
class node_preparation,node_training,node_forest,node_xgboost,node_gpr toneAmber
class node_notebook_data,node_evaluation,node_validation,node_sensitivity,node_crossval toneMint
class node_model_save,node_cli,node_prediction,node_results toneRose
class node_engineer toneIndigo
```

## Components

### Engineering inputs

- [Blade CAD](https://github.com/amghalcyon/wind_turbine_project/tree/main/CAD): `CAD`
- [ANSYS FEA](https://github.com/amghalcyon/wind_turbine_project/tree/main/ANSYS): `ANSYS`
- [Simulation dataset](https://github.com/amghalcyon/wind_turbine_project/blob/main/Dataset/simulation_matrix_updated_info.csv): `Dataset/simulation_matrix_updated_info.csv`

### ML pipeline

- [Data preparation](https://github.com/amghalcyon/wind_turbine_project/blob/main/src/data_processing.py): `src/data_processing.py`
- [Model training](https://github.com/amghalcyon/wind_turbine_project/blob/main/src/training.py): `src/training.py`
- [Random Forest](https://github.com/amghalcyon/wind_turbine_project/blob/main/src/training.py): `src/training.py`
- [XGBoost](https://github.com/amghalcyon/wind_turbine_project/blob/main/src/training.py): `src/training.py`
- [Gaussian Process](https://github.com/amghalcyon/wind_turbine_project/blob/main/src/training.py): `src/training.py`

### Design analysis

- [Data exploration](https://github.com/amghalcyon/wind_turbine_project/blob/main/Python/Data_Inspection.ipynb): `Python/Data_Inspection.ipynb`
- [Model evaluation](https://github.com/amghalcyon/wind_turbine_project/blob/main/src/evaluation.py): `src/evaluation.py`
- [Simulation validation](https://github.com/amghalcyon/wind_turbine_project/blob/main/Python/Validation_of_simulations_EDA.ipynb): `Python/Validation_of_simulations_EDA.ipynb`
- [Sensitivity analysis](https://github.com/amghalcyon/wind_turbine_project/blob/main/Python/Sensitivity_Analysis_GPR.ipynb): `Python/Sensitivity_Analysis_GPR.ipynb`
- [Cross validation](https://github.com/amghalcyon/wind_turbine_project/blob/main/Python/Cross_Validation.ipynb): `Python/Cross_Validation.ipynb`

### Prediction runtime

- [Model persistence](https://github.com/amghalcyon/wind_turbine_project/blob/main/train_and_save_models.py): `train_and_save_models.py`
- [Prediction CLI](https://github.com/amghalcyon/wind_turbine_project/blob/main/predict.py): `predict.py`
- [Prediction helpers](https://github.com/amghalcyon/wind_turbine_project/blob/main/src/prediction.py): `src/prediction.py`
- [Stress and deflection](https://github.com/amghalcyon/wind_turbine_project/blob/main/src/visualisation.py): `src/visualisation.py`

### Other components

- **Engineer**

## Connections

- Engineer → Blade CAD: designs blade
- Blade CAD → ANSYS FEA: geometry for
- ANSYS FEA → Simulation dataset: simulation results
- Simulation dataset → Data exploration: explored in
- Simulation dataset → Data preparation: loads
- Data preparation → Model training: prepares features
- Model training → Random Forest: trains
- Model training → XGBoost: trains
- Model training → Gaussian Process: trains
- Random Forest → Model evaluation: evaluated by
- XGBoost → Model evaluation: evaluated by
- Gaussian Process → Model evaluation: evaluated by
- Simulation dataset → Simulation validation: simulation comparisons
- Model evaluation → Cross validation: analysis in
- Model evaluation → Sensitivity analysis: informs
- Model training → Model persistence: trains and saves
- Engineer → Prediction CLI: enters parameters
- Prediction CLI → Model persistence: loads saved models
- Prediction CLI → Prediction helpers: calls prediction
- Prediction helpers → Stress and deflection: returns metrics
