130 lines
5.8 KiB
Markdown
130 lines
5.8 KiB
Markdown
# Wind turbine gearbox simulator
|
||

|
||

|
||

|
||

|
||

|
||
|
||
"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)
|
||
|