dots/config/Typora/draftsRecover/2026-6-1 README 121653.md
afoucaultc c689ac87d0 update
2026-06-05 13:13:58 +02:00

130 lines
5.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Wind turbine gearbox simulator
![Static Badge](https://img.shields.io/badge/Octave-11.1.0-orange)
![Static Badge](https://img.shields.io/badge/Arch%20Linux-6.19.12-blue)
![Static Badge](https://img.shields.io/badge/Gnuplot-6.0%20patchlevel%204-yellow)
![Static Badge](https://img.shields.io/badge/Gitlab-repo-red?logo=Gitlab)
![Static Badge](https://img.shields.io/badge/Last%20update-21%2F04%2F2026-green)
"uncertainties4windturbinegearbox" is a program designed to simulate the uncertainties of a wind turbine gearbox model.
Its main purpose is the comparison between :
- Monte Carlo method
- Generalized Polynomial Chaos method (GPC)
With this model, proofs that GPC is a valid method are given, with convergence criteria. The wind turbine gearbox model is a 8-DOF gearbox integrated in time with Newmark's scheme. Uncertain parameters are mapped into uniform distributions in the interval $[-1,1]$.
## Dependencies
**Development language:** [Octave 11.1.0](https://octave.org/) ("some packages" installed, follow first start requirements, follow the error messages) (add `graphic_toolkit("gnuplot")` in `main`)
**Compatibility:** [Matlab v2026-a](https://fr.mathworks.com/products/matlab.html) (delete all `graphics_toolkit("gnuplot")` occurrences in the code)
> Optional: Parallel Computing Toolbox (for `parfor` functions)
**Plot engine:** [Gnuplot](http://gnuplot.info/) 6.0 patchlevel 4
**Recommended:** [Inkscape](https://inkscape.org/) can be used for graphs that are printed into `.svg` to be converted into `.pdf`
**Perspectives:** the code will probably be transferred into Python, as it is free and open source, and coherence with Python machine learning models
## Usage
### Run the code
```bash
$ git clone https://gitlab.com/afoucaultc/wind_turbine_gearbox
$ cd wind_turbine_gearbox/uncertainties4windturbinegearbox
$ mkdir save
$ mkdir print
$ octave
$ octave:1> run main.m
$ # or run any standalone (starting by a "_")
$ octave:1> run _[standalone].m
```
### Parameters
Stored in **`parameters.m`**.
| Variable | Default | Description |
|---|---|---|
| `N` | `10000` | Number of Monte Carlo draws |
| `pmax` | `5` | Maximum polynomial order for CPG |
| `theta` | `0.01` | Convergence threshold on residual rate |
| `r_uncertainty` | `20` | ±% variation around nominal values |
| `newparams` | see file | Cell array of uncertain variable names and nominal values |
Adding or removing uncertain variables : edit `newparams` array
```matlab
newparams = {
'Z2' , 18 ; % number of teeth (gear 2)
'b' , 0.1 ; % gear width [m]
'la1' , 2 ; % shaft 1 length [m]
% 'kx', 1e8 ; % uncomment to include bearing stiffness
};
```
### OUTPUTS :
#### Figures (exported to `print/`)
| File | Content |
|---|---|
| `mean_cpg_r=*_p=*_uncertainty=*.pdf` | Mean displacement — CPG vs MC (with 95% CI) |
| `var_cpg_r=*_p=*_uncertainty=*.pdf` | Standard deviation — CPG vs MC (with 95% CI) |
| `modes_cpg_r=*_p=*_uncertainty=*.pdf` | Modal energy contribution by polynomial order |
| `CPG_MC_time.pdf` | Evaluation time — CPG vs MC as a function of sample size |
| `CPG_polytime.pdf` | Training time of CPG as a function of polynomial order |
| `MC_convergence.pdf` | Convergence of MC mean estimate vs. number of draws |
#### Raw values (saved to `save/`)
| File | Content |
|---|---|
| `mc_r=*_N=*.mat` | Full MC workspace |
| `cpg_r=*_p=*.mat` | Full CPG workspace at converged order |
### File tree
```bash
## Main process
├── main.m # Main, runs MC then CPG, produces figures
│ ├── monte_carlo # Monte Carlo
│ │ ├── method_XiToX.m # Mapping from normalized ξ ∈ [-1,1]^r to physical X
│ │ └── method_lambda.m # Batch model evaluation over a parameter grid
│ │ └── model_main.m # Model used (wind turbine gearbox)
│ │ ├── model_func.m (class) # Function class for model
│ │ └── model_parameters.m # Parameters for model
│ └── cpg # GPC
│ ├── cpg_polyLegendre.m # Legendre polynomials up to order pmax
│ ├── cpg_polyChaos.m # Multi dimensional chao basis (multi index α)
│ ├── cpg_gaussColloc.m # Tensor of Gauss collocation grid
│ ├── method_XiToX.m # Mapping from normalized ξ ∈ [-1,1]^r to physical X
│ ├── method_lambda.m # Batch model evaluation over a parameter grid
│ │ └── model_main.m # Model used (wind turbine gearbox)
│ │ ├── model_func.m (class) # Function class for model
│ │ └── model_parameters.m # Parameters for model
│ ├── cpg_modes.m # Stochastic mode computation (Φ \ λ)
│ ├── cpg_evaluate.m # CPG evaluation on random ξ samples from MC
│ └── cpg_errors.m # Convergence metrics and stopping criterion
└── plot_guerine.m # Plots : mean, std and modal energy
## Standalone functions
└── _timeaccuracy.m # Compute and plot : time for MC, GPC, convergence MC
## Rendering folders
├── print
│ ├── mean_cpg_r=?_p=?_uncertainty=?.pdf (main)
│ ├── var_cpg_r=?_p=?_uncertainty=?.pdf (main)
│ ├── modes_cpg_r=?_p=?_uncertainty=?.pdf (main)
│ ├── CPG_MC_polytime.pdf (_timeaccuracy)
│ ├── MC_convergence.pdf (_timeaccuracy)
│ └── CPG_MC_time.pdf (_timeaccuracy)
└── save
├── cpg_r=?_p=?.mat
└── mc_r=?_N=?.mat
## Others
├── octave-workspace
└── README.md
```
## Calculation machine specification
Hardware: 32Go RAM, Intel(R) Core(TM) i7-7700K CPU @ 4.20GHz, NVIDIA GeForce RTX 4060
OS: Windows 10, version 22H2 (last update 16/05/2023)