first commit

This commit is contained in:
afoucaultc 2026-06-05 13:11:08 +02:00
commit 205faf4224
5471 changed files with 973850 additions and 0 deletions

View file

@ -0,0 +1 @@
{"sts":[{"expiry":1810110202.908661,"host":"1PLIjm3kQPQW4cJb6E24uRsQPnrWHtm+crYMNKC5TJc=","mode":"force-https","sts_include_subdomains":false,"sts_observed":1778574202.908664},{"expiry":1808297514.942949,"host":"9p2HyjfRHTY1k11+vvkfYT9BeB1pfXOFjikz3LqAlIQ=","mode":"force-https","sts_include_subdomains":true,"sts_observed":1776761514.94296}],"version":2}

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
config/Typora/Cookies Normal file

Binary file not shown.

View file

View file

@ -0,0 +1 @@
1d4d5488-d7eb-4280-b18a-fcddfc4bcf4a

BIN
config/Typora/DIPS Normal file

Binary file not shown.

BIN
config/Typora/DIPS-shm Normal file

Binary file not shown.

BIN
config/Typora/DIPS-wal Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

1
config/Typora/JKbCHpc0ye Normal file
View file

@ -0,0 +1 @@
7b22534c6963656e7365223a227759697743336c4a6b344d4e2f546c5957494b71366c4f37716c70754c645a325655396f595a70525351696b6277454e3549595945564e555033447651753831547a61316547672f547647373836626f6e62304d2b6e4477494b726953574c775a6f336976396f4273704a57566d687538746f374d4f797a2b694e624b68576f6a7450412f42394d7338514e4737313837594d75347a48585363322b75556c38394f7a693932306271563279744a3654516c7166482f6c7378454e4551554b476e76617448674c6251554d2b58356a306135736856306d713551693667385a32796b485878354c564c744f7562504f4b4338715354737670386d6e7451784d5833374f5461442b3063616c4e306831434e79746a4c63364569457a4546377572432f6a4934566b55444c6156544b732f4e547230786944345971426e4b4846774d74544838596f4d4861477a7631496d6578316a53513d3d233023322f31352f32303236227d

View file

@ -0,0 +1 @@
MANIFEST-000001

View file

View file

@ -0,0 +1,2 @@
2026/05/12-10:23:19.092 232a Creating DB /home/afoucaultc/.config/Typora/Local Storage/leveldb since it was missing.
2026/05/12-10:23:19.483 232a Reusing MANIFEST /home/afoucaultc/.config/Typora/Local Storage/leveldb/MANIFEST-000001

View file

@ -0,0 +1,3 @@
2026/04/08-13:57:45.489 59e3 Reusing MANIFEST /home/afoucaultc/.config/Typora/Local Storage/leveldb/MANIFEST-000001
2026/04/08-13:57:45.490 59e3 Recovering log #3
2026/04/08-13:57:45.490 59e3 Reusing old log /home/afoucaultc/.config/Typora/Local Storage/leveldb/000003.log

Binary file not shown.

View file

@ -0,0 +1 @@
{"net":{"http_server_properties":{"servers":[{"anonymization":[],"server":"https://pinpoint.us-west-2.amazonaws.com","supports_spdy":true},{"anonymization":[],"server":"https://img.shields.io","supports_spdy":true},{"anonymization":[],"server":"https://cognito-identity.us-west-2.amazonaws.com","supports_spdy":true},{"anonymization":[],"server":"https://store.typora.io","supports_spdy":true}],"version":5},"network_qualities":{"CAISABiAgICA+P////8B":"4G","CAYSABiAgICA+P////8B":"Offline"}}}

View file

@ -0,0 +1 @@
{"partition":{"per_host_zoom_levels":{"12706807416172865791":{}}},"spellcheck":{"dictionaries":["en-US"],"dictionary":""}}

Binary file not shown.

View file

@ -0,0 +1 @@
MANIFEST-000001

View file

View file

@ -0,0 +1,2 @@
2026/05/04-12:51:27.069 68f0 Creating DB /home/afoucaultc/.config/Typora/Session Storage since it was missing.
2026/05/04-12:51:27.246 68f0 Reusing MANIFEST /home/afoucaultc/.config/Typora/Session Storage/MANIFEST-000001

View file

@ -0,0 +1,3 @@
2026/04/08-14:03:30.012 59e4 Reusing MANIFEST /home/afoucaultc/.config/Typora/Session Storage/MANIFEST-000001
2026/04/08-14:03:30.012 59e4 Recovering log #3
2026/04/08-14:03:30.118 59e4 Reusing old log /home/afoucaultc/.config/Typora/Session Storage/000003.log

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
config/Typora/SharedStorage Normal file

Binary file not shown.

View file

View file

@ -0,0 +1 @@
16387796476675153355

1
config/Typora/SingletonLock Symbolic link
View file

@ -0,0 +1 @@
archlinux-8992

View file

@ -0,0 +1 @@
/tmp/scoped_dir5LNuoA/SingletonSocket

1
config/Typora/T9ToEagTYy Normal file
View file

@ -0,0 +1 @@
7b22534c6963656e7365223a22746e7158744248636e3641706567494467696e337a5a413136317354634a784d676668647a655949424a76344377346a665357757664542b345069306255446377554c7878513565744d34777735764e62727a66664a503731682f32524f44676c71704e7045306639762f61766135332b4d343539716c6a42782b464f6f7332796358782f7848767550563144416c566978644a3156666f6b596b612b384b344f6e6332686e4a62742b765741335977713064684c39334f4550695974524f6d6f3037736f796e7a79527934344f7472614f722f506f4a555633624a4564625a52704678316542364e4c737a7a6b697830313439684353645139666e7875676b536d45314e74424371346f324b53616c756b564b6d46346d6d6535632b455077694370674a5169356b37436d613251744d4f7a5466745270716d5946516e3662447061583370627249516c5272767242784d677757773d3d233023352f31322f32303236227d

View file

@ -0,0 +1 @@
{"sts":[{"expiry":1809427783.995301,"host":"1PLIjm3kQPQW4cJb6E24uRsQPnrWHtm+crYMNKC5TJc=","mode":"force-https","sts_include_subdomains":false,"sts_observed":1777891783.995304},{"expiry":1808297514.942949,"host":"9p2HyjfRHTY1k11+vvkfYT9BeB1pfXOFjikz3LqAlIQ=","mode":"force-https","sts_include_subdomains":true,"sts_observed":1776761514.94296}],"version":2}

BIN
config/Typora/Trust Tokens Normal file

Binary file not shown.

View file

434
config/Typora/backups/1 Normal file
View file

@ -0,0 +1,434 @@
---
Author: Antoine Foucault-Castelli
Date: 23/03/2026
Update: 31/03/2026
Bibliography: @karmiFiabiliteOptimisationSystemes @ghorbelEffectBrakeLocation2020a @zhengAnalyticalApproachMesh2022
Version: 5.0
---
> [!BUG]
> Some equations has been put in latex block code as they didnt show properly on gitlab
# Gearbox simulation
## Structure
```
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Functions %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-- main
main.m
>> used to launch all run_*.m at once
main_parameters.m
>> charge model's parameters
-- runners
run_main.m
>> PURPOSE: launch every class_func functions in the right order to model the system
run_display.m
>> PURPOSE: launch every class_displayer functions
run_print.m
>> PURPOSE: print the figures made by run_display
>> OUTPUT: .svg
-- classes
class_display.m
>> displays the inputs and outputs of the model
[col1,col2,col3,col4,col5,col6,col7,col8,lw1,lw2] = charge_aff()
[figname,namex,namey,namet,ylabelx,ylabelt,ylabelfft,ylabelfftT] = type_choice(type)
listOfFig = disp_x(t,x,type,listOfFig)
listOfFig = excitations_ext(t,T_aero,k_var,k_mean,listOfFig)
listOfFig = spectral_analysis(x,tf,dt,maxf,type,listOfFig)
% TODO
plot_fep(t,Fep,i)
listOfFig = plotThetaDiff(t,x,listOfFig)
class_func.m
>> model functions (explicit cf. comments in code)
[t, dt, tf, t_mesh, f_mesh, fs] =
time_sampling(fs_div,n_periods,Z1,N1)
[Jin, J1, J2, Jout, J_all] =
inertia(m_all,r_blade,di1,di2)
[c12, db1, db2] =
gearbox_geometry(alpha0, Z1, Z2, m0, a)
[k_var, k_mean] =
mesh_stiffness(epsilon, t, t_mesh, k_mesh_mean)
[T_aero,T_out] =
wind_excitation(t,rho_air,r_blade,v_wind,T_fluct_in,f_ext,omega_in,cp,ratio)
[M] =
mass_matrix(m_all, J_all)
[K_var, K_const, K_mean] =
stiffness_matrix(db1, db2, alpha0, kx, ky, ktheta, k_mean)
[K] =
stiffness_update(K_const,K_var,k)
[C] =
damping_matrix(M,K_mean,damp_eta,damp_beta)
[F] =
forces_matrix(T_in,T_out)
[x,v,a] =
initialization(N1,t,ratio,cp)
[x,v,a] =
newmark(M,C,K_const,K_var,K_mean,k_var,dt,t,T_in,T_out,x,v,a,omega_in,gamma,beta,F_ep)
[F_ep] =
error_profile_excitation(e12,f_mesh,t,alpha0,db1,db2,k_var)
[damp_eta, damp_beta] =
damping_coeff(M,K,xi1,xiN)
-- standalone
_convergence.m
>> purpose: test the numerical convergence of the model
>> output: 3 graphs + print/_convergence/*.svg
_gear-mesh-var.m
>> purpose: shows the variation of gear mesh with central distance changes
>> output: 1 graph + print/_gear-mesh-var/*.svg
_rms-analysis.m
>> purpose: analysis of RMS, STD and kurtosis for many setups
>> output: data/rms.svg
```
## How does it work ?
**For Matlab under windows :**
classic matlab
> [!WARNING]
> NOT TESTED UNDER MATLAB
> remove all occurences of `graphics_toolkit("gnuplot")` in the code which is only useful for Octave visualization
**For Octave/Linux :**
*May need a few package installation (follow octave recommandations after first(s) run*
```baswind_turbine_gearbox/octave/h
cd wind_turbine_gearbox/octave/
octave
>>> run main.m
>>>
```
## Informations
- [x] Verified code with base code and paper
- [x] Implemented wind excitation
- [x] Implemented Ghorbel parameters
- [~] Add varying output torque depending on number of tooth in contact ?
- [~] add brake ?
- [~] Variation of C ?
- [~] ODE45 ?
- [x] Displays from last version (in class objects)
- [x] New mesh stiffness variation model (trapezoidal)
- [x] Print in pdf
- [x] Errors/defects implementation
- [x] profile error
- [x] assembly defect (change on gear stiffness)
- [x] README
- [x] Maths
- [~] Images
- [x] Source(s)
- [x] Display
- [x] time response on a2
- [x] speed response
- [x] x movement (vs y movement ?)
- [x] RMS STD Kurtosis
- [x] Printing pdf and svg
- [x] Convergence verification
- [x] Display effect of defects
- [ ] Verify convergence for other input
- [ ] Preparation Monte Carlo Parallel calculation
- [x] Decide a number of samples per mesh period
- [ ] Random models implementation
- [x] Implemented easy disp and print
- [ ] Add a "peak finder" for FFT
## Maths
The model is represented by two 4DDL shafts in a gear connection : $x$ and $y$ are free at the pinion, $\theta$ is free at both ends of the shaft (input/output is $\theta_{ii}$ and meshing rotation is $\theta_{ij}$).
### Parameters
| Newmark parameters | Value | **Unit** |
| ------------------------------------------------ | --------- | --------------- |
| $\gamma$ | 0.7 | |
| $\beta$ | 0.3 | |
| **Gears** | **Value** | |
| Pinon 1 tooth number $Z1$ | 72 | |
| Pinion 2 tooth number $Z2$ | 18 | |
| Pinion modulus $m_0$ | 0.016 | m |
| Pinion width $b$ | 0.1 | m |
| Internal diameter pinion 1 $d_{i1}$ | 0.5 | m |
| Internal diameter pinion 2 $d_{i_2}$ | 0.3 | m |
| Rotor radius $r_{rot}$ | 0.5 | m |
| Input theoretical speed $N_1$ | 17 | m/s |
| Contact angle $\alpha$ | 20 | deg |
| Steel density $\rho_{steel}$ | 7860 | kg/m3 |
| **Masses** | **Value** | **Unit** |
| Input mass $m_{in}$ (hub + blades) | 54000 | kg |
| Output mass $m_{out}$ (rotor) | 10000 | kg |
| **Stiffness** | | |
| Flexion x : $k_x=k_{x_1}=k_{x_2}$ | 1e8 | N/m |
| Flexion y : $k_y=k_{y_1}=k_{y_2}$ | 1e8 | N/m |
| Torsion z : $k_\theta=k_{\theta_1}=k_{\theta_2}$ | 1e6 | N/m |
| Mean mesh stiffness $k_{mesh_{mean}}$ | 2.8e8 | N/rad |
| **Damping** | **Value** | **Unit** |
| Mass damping ratio | 0.05 | |
| Stiffness damping ratio | 0.01 | |
| **Wind excitation** | **Value** | **Unit** |
| Blade radius $r_{blade}$ | 6 | m |
| Air density $\rho_{air}$ | 1.225 | kg/m3 |
| Wind speed (mean) $v_{wind_{mean}}$ | 37.5 | m/s |
| Fluctuating external torque $T_{fluct}$ | 50 | N |
| Fluctuating external frequency $f_{fluct}$ | 6 | Hz |
| Performance efficiency $cp$ | 16/27 | |
| **Errors** | **Value** | **Unit** |
| Profile error (approx) | 1e-5 | m |
| Center distance error (approx) | 1e-2 | m |
### Energy equations
$$
\left[\frac{\partial E_p}{\partial q_i}\right]
+ \left[\frac{d}{dt}\left(\frac{\partial E_k}{\partial\dot{q}_i}\right)\right]
+ \frac{\partial C}{\partial\dot{q}_i}
= \frac{\partial W}{\partial q_i}
\label{eq:reformlagrange}
\\
E_k = \frac{1}{2}
\left(
m_1{\dot{x}_1}^2+
m_1{\dot{y}_1}^2+
I_{11}{\dot{\theta}_{11}}^2+
I_{12}{\dot{\theta}_{12}}^2+
m_2{\dot{x}_2}^2+
m_2{\dot{y}_2}^2+
I_{22}{\dot{\theta}_{22}}^2+
I_{21}{\dot{\theta}_{21}}^2
\right)
\\
E_p = \frac{1}{2}
\left(
k_{x_1}{x_{1}}^2+
k_{y_1}{y_{1}}^2+
k_{\theta_1}(\theta_{11}-\theta_{12})^2+
k_{x_2}{x_{2}}^2+
k_{y_2}{y_{2}}^2+
k_{\theta_2}(\theta_{21}-\theta_{22})^2+
K_e(t){\delta}^2
\right)
$$
### Equations of movement
The equations of movement are given by putting $E_k$ and $E_p$ into the Lagrangian formula.
$$
\begin{cases}
\frac{\partial E_p}{\partial x_1} + \frac{d}{dt}\left( \frac{\partial E_k}{\partial \dot{x}_1} \right) + \frac{\partial C}{\partial \dot{x}_1}
= m_1\ddot{x}_1
+ k_{x_1}x_1
+ \sin(\alpha)K_e(t)\delta
+ C_{x_1}\dot{x}_1
= 0 \\
\frac{\partial E_p}{\partial y_1} + \frac{d}{dt}\left( \frac{\partial E_k}{\partial \dot{y}_1} \right) + \frac{\partial C}{\partial \dot{y}_1}
= m_1\ddot{y}_1
+ k_{y_1}y_1
+ \cos(\alpha)K_e(t)\delta
+ C_{y_1}\dot{y}_1
= 0 \\
\frac{\partial E_p}{\partial \theta_{11}} + \frac{d}{dt}\left( \frac{\partial E_k}{\partial \dot{\theta}_{11}} \right) + \frac{\partial C}{\partial \dot{\theta}_{11}}
= I_{11}\ddot{\theta}_{11}
+ k_{\theta_{11}}(\theta_{11}-\theta_{12})
+ C_{\theta_{11}}\dot{\theta}_{11}
= T_{aero} \\
\frac{\partial E_p}{\partial \theta_{12}} + \frac{d}{dt}\left( \frac{\partial E_k}{\partial \dot{\theta}_{12}} \right) + \frac{\partial C}{\partial \dot{\theta}_{12}}
= I_{12}\ddot{\theta}_{12}
- k_{\theta_{11}}(\theta_{11}-\theta_{12})
+ {r_b}_1K_e(t)\delta
+ C_{\theta_{12}}\dot{\theta}_{12}
= 0 \\
\frac{\partial E_p}{\partial x_2} + \frac{d}{dt}\left( \frac{\partial E_k}{\partial \dot{x_2}} \right) + \frac{\partial C}{\partial \dot{x_2}}
= m_2\ddot{x}_2
+ k_{x_2}x_2
- \sin(\alpha)K_e(t)\delta
+ C_{x_2}\dot{x}_2
= 0 \\
\frac{\partial E_p}{\partial y_2} + \frac{d}{dt}\left( \frac{\partial E_k}{\partial \dot{y_2}} \right) + \frac{\partial C}{\partial \dot{y_2}}
= m_2\ddot{y}_2
+ k_{y_2}y_2
- \cos(\alpha)K_e(t)\delta
+ C_{y_2}\dot{y}_2
= 0 \\
\frac{\partial E_p}{\partial \theta_{22}} + \frac{d}{dt}\left( \frac{\partial E_k}{\partial \dot{\theta}_{22}} \right) + \frac{\partial C}{\partial \dot{\theta}_{22}}
= I_{22}\ddot{\theta}_{22}
- k_{\theta_{22}}(\theta_{21}-\theta_{22})
+ C_{x_1}\dot{\theta}_{22}
= T_{gen} \\
\frac{\partial E_p}{\partial \theta_{21}} + \frac{d}{dt}\left( \frac{\partial E_k}{\partial \dot{\theta}_{21}} \right) + \frac{\partial C}{\partial \dot{\theta}_{21}}
= I_{21}\ddot{\theta}_{21}
+ k_{\theta_{21}}(\theta_{21}-\theta_{22})
- {r_b}_2K_e(t)\delta
+ C_{\theta_{21}}\dot{\theta}_{21}
= 0
\end{cases}
$$
With $\delta_i(t)=(x_1-x_2)sin(\alpha)+(y_1-y_2)cos(\alpha)+\theta_{12}r_{b1}-\theta_{21}r_{b2}$ and $r_{bij}$ the base radius of pinions, $K_e$ is the varying meshing stiffness, mass $m_i = \pi r^2_{i}\rho$ for both pinions, and $I_{ij} = \frac{1}{2}m_{ij}r_{ij}^2$ for pinions and input/output inertia.
### Matrices
**Equation to solve :**
$$
\left[M\right]\{\ddot{q}\} + \left[C\right] \{\dot{q}\}+ \left(\left[K_{var}\right]+\left[K_{cst}\right]\right) \{q\} = \left\{F\right\}
$$
**Mass matrix :**
$$
M =
\begin{bmatrix}
m_1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & m_1 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & I_{11} & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & I_{12} & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & m_2 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & m_2 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & I_{22} & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & I_{21} \\
\end{bmatrix} \\
$$
With $m_1$ mass of shaft 1 and $m_2$ mass of shaft 2
**Variable mesh stiffness matrix**
$$
K_{var} = K_e(t)
\begin{bmatrix}
s^2 & sc & 0 & sr_1 & -s^2 & -sc & 0 & -sr_2 \\
cs & c^2 & 0 & cr_1 & -cs & -c^2 & 0 & -cr_2 \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
r_1s & r_1c & 0 & r_1^2 & -r_1s & -r_1c & 0 & -r_1r_2 \\
-s^2 & -sc & 0 & -sr_1 & s^2 & sc & 0 & sr_2 \\
-cs & -c^2 & 0 & -cr_1 & cs & c^2 & 0 & cr_2 \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
-r_2s & -r_2c & 0 & -r_2r_1 & r_2s & r_2c & 0 & r_2r_1
\end{bmatrix}
$$
With
- $s=sin(\alpha)$
- $c=cos(\alpha) $
- $r1=r_{b_1} $
- $r2=r_{b_2}$
**Constant stiffness matrix**
$$
Ks=
\begin{bmatrix}
k_{x1} & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & k_{y1} & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & k_{\theta1}& -k_{\theta1} & 0 & 0 & 0 & 0 \\
0 & 0 & -k_{\theta1} & k_{\theta1} & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & k_{x1} & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & k_{y1} & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & k_{\theta2} & -k_{\theta2} \\
0 & 0 & 0 & 0 & 0 & 0 & -k_{\theta2} & k_{\theta2} \\
\end{bmatrix}
$$
**Damping matrix**
Damping matrix is : $C = \eta M+\beta K_{mean}$
**Forces**
$$
F =
\begin{bmatrix}
0 \\ 0 \\ T_{aero} \\ 0 \\ 0\\ 0\\ T_{gen}\\ 0
\end{bmatrix}
$$
**Mesh stiffness model**
The mesh stiffness is modelized by a trapezoïdal signal between a low value ($=k_{mesh_{mean}}$ for one tooth in contact) and its double value as a high value. Length of both phase is given by $T_{high}=(\varepsilon-1)T_{mesh}$ and $T_{low}=(2-\varepsilon)T_{mesh}$. 10% of the start and of the end of the “high” phase is a linear slope from low value to high value.
> [!NOTE]
> $T_{mesh}=1/f_{mesh}=1/(Z1*N1/60)$
> $\varepsilon$ is an approximation using the following formula :
$$
c_1=\frac{1+\frac{1}{Z1}}{\left(\pi cos(\alpha)\left(\frac{sin(\alpha)}{2}+\sqrt{\frac{sin(\alpha)^2}{4}+\frac{1}{Z1^2}+\frac{1}{Z1}}\right)\right)} \\
c_1=\frac{1+\frac{1}{Z2}}{\left(\pi cos(\alpha)\left(\frac{sin(\alpha)}{2}+\sqrt{\frac{sin(\alpha)^2}{4}+\frac{1}{Z2^2}+\frac{1}{Z2}}\right)\right)} \\
c_{12}=c_1+c_2 \approx \varepsilon
$$
## Numerical model, wind model and errors
**Time :** time is sampled on the $T_{mesh}$, with $fs$ the number of points for each period, and $n_{periods}$ the number of periods calculated. The number of points is $fs\times n_{periods}$.
**Speed :** rotational speed is initialized at its “stable” value.
> if no automatic implementation, it has to be done “by hand” by executing the program once, get the speeds after the transient zone, and put them by hand in “initialization” source code (`func.m`)
**Wind :** cosine variation around mean torque value
$$
T_{in} = \rho_{air}\pi(r_{blade}^2)(v_{wind}^3)*Cp)/(2\omega) \\
T_{aero}(t) = T_{in} + T_{fluct}\cos(2\pi f_{ext}t)
$$
**Initialization :** everything is set at 0 for initialization (except speed)
**Model :** a basic Newmark scheme is used to compute the model over time
**Error implementation :**
- error profile is implemented as ($+\infty$ is approximated as $1000$) :
$$
ep(t) = e_{12}+\sum ^{+\infty}_{n=1}e_{12}sin(2n\pi f_m t) \\
\left\{F_{ep}\right\} = \frac{\partial \delta (t)}{\partial q_i}k(t)ep(t) \\
\frac{\partial \delta(t)}{\delta q_i} =
\begin{bmatrix}
sin(\alpha) \\ cos(\alpha) \\ 0 \\ rb_1 \\ -sin(\alpha) \\ -cos(\alpha) \\ 0 \\ rb_2
\end{bmatrix}
$$
- center distance error is implemented as a transformation of $\alpha$ depending on a variation of $a$, in `gearbox_geometry`. It does only change the values of contact ratio $\varepsilon$ and then the profile of the mesh stiffness (length of phases and max/min values).
$$
\alpha'=acos\left(\frac{rb_1+rb_2}{E+a}\right)
$$
## TO FIX
> [!CAUTION]
> Speed not right
## Machine specifications
For the computational speed, heres my machines spec. :
```
-`
.o+`
`ooo/ OS: Arch Linux x86_64
`+oooo: Host: 20EV000UFR ThinkPad E560
`+oooooo: Kernel: 6.19.10-arch1-1
-+oooooo+: Shell: zsh 5.9
`/:-:++oooo+: Terminal: kitty
`/++++/+++++++: CPU: Intel i5-6200U (4) @ 2.300GHz
`/++++++++++++++: GPU: Intel Skylake-U GT2 [HD Graphics 520]
`/+++ooooooooooooo/` Memory: 1703MiB / 3792MiB
./ooosssso++osssssso+`
.oossssso-````/ossssss+`
-osssssso. :ssssssso.
:osssssss/ osssso+++.
/ossssssss/ +ssssooo/-
`/ossssso+/:- -:/+osssso+-
`+sso+:-` `.-/+oso:
`++:. `-/+/
.` `/
```

0
config/Typora/backups/2 Normal file
View file

View file

@ -0,0 +1 @@
{"innormalQuit":true,"windows":[{"id":1,"path":"/home/afoucaultc/workspace/cesi/uncertainties/files/revue_code_cpg.md","untitledId":1778574203553,"type":"","useCRLF":false,"hasUnsaved":false,"scrollPos":2842,"syncDate":1778574238284,"mountFolder":"/home/afoucaultc/workspace/cesi/uncertainties/files","bound":{"fullscreen":false,"maximized":true}}]}

View file

@ -0,0 +1,27 @@
/** For advanced users. */
{
"defaultFontFamily": {
"standard": null, //String - Defaults to "Times New Roman".
"serif": null, // String - Defaults to "Times New Roman".
"sansSerif": null, // String - Defaults to "Arial".
"monospace": null // String - Defaults to "Courier New".
},
"autoHideMenuBar": false, //Boolean - Auto hide the menu bar unless the `Alt` key is pressed. Default is false.
// Array - Search Service user can access from context menu after a range of text is selected. Each item is formatted as [caption, url]
"searchService": [
["Search with Google", "https://google.com/search?q=%s"]
],
// Custom key binding, which will override the default ones.
// see https://support.typora.io/Shortcut-Keys/#windows--linux for detail
"keyBinding": {
// for example:
// "Always on Top": "Ctrl+Shift+P"
// All other options are the menu items 'text label' displayed from each typora menu
},
"monocolorEmoji": false, //default false. Only work for Windows
"maxFetchCountOnFileList": 500,
"flags": [] // default [], append Chrome launch flags, e.g: [["disable-gpu"], ["host-rules", "MAP * 127.0.0.1"]]
}

View file

@ -0,0 +1,27 @@
/** For advanced users. */
{
"defaultFontFamily": {
"standard": null, //String - Defaults to "Times New Roman".
"serif": null, // String - Defaults to "Times New Roman".
"sansSerif": null, // String - Defaults to "Arial".
"monospace": null // String - Defaults to "Courier New".
},
"autoHideMenuBar": false, //Boolean - Auto hide the menu bar unless the `Alt` key is pressed. Default is false.
// Array - Search Service user can access from context menu after a range of text is selected. Each item is formatted as [caption, url]
"searchService": [
["Search with Google", "https://google.com/search?q=%s"]
],
// Custom key binding, which will override the default ones.
// see https://support.typora.io/Shortcut-Keys/#windows--linux for detail
"keyBinding": {
// for example:
// "Always on Top": "Ctrl+Shift+P"
// All other options are the menu items 'text label' displayed from each typora menu
},
"monocolorEmoji": false, //default false. Only work for Windows
"maxFetchCountOnFileList": 500,
"flags": [] // default [], append Chrome launch flags, e.g: [["disable-gpu"], ["host-rules", "MAP * 127.0.0.1"]]
}

View file

@ -0,0 +1,309 @@
---
Author: Antoine Foucault-Castelli
Date: 17/03/2026
Bibliography: @karmiFiabiliteOptimisationSystemes @ghorbelEffectBrakeLocation2020a @zhengAnalyticalApproachMesh2022
Version: 4.0
---
# Gearbox simulation
## Structure
```
main.m
func.m
time_sampling
inertia
gearbox_geometry
mesh_stiffness
wind_excitation
mass_matrix
stiffness_matrix
stiffness_update
damping_matrix
forces_matrix
initialization
newmark
parameters.m
display.m
disp_xy(t,x,i)
speed_xy(t,v,i)
acc_xy(t,v,i)
disp_theta(t,x,i)
speed_theta(t,v,i)
acc_theta(t,a,i)
mesh_stiffness(t,k_var,k_mean,i)
taero(t,T_aero,i)
rms_on_x(x)
spectral_on_x(x,i,tf,dt)
plot_x(t,x,i)
only_display.m
display_update.m
```
`main.m` is the launcher for the full code compilation
`func` is the function class, containing every function used in the code
`parameters` is the model parameters document
`display` is the displayer for figures
`only_display` to skip non-needed full compilation
`display_update` to update a single graph if needed
## How does it work ?
**For Matlab under windows :**
open matlab and launch main.m
> [!WARNING]
> remove `graphics_toolkit("gnuplot")` which is only useful for Octave visualization
**For Octave/Linux :**
```bash
cd [path_to_cloned]/code/versions/[current_version]/
octave
>>> run main.m
>>>
```
## Informations
- [x] Verified code with base code and paper
- [x] Implemented wind excitation
- [x] Implemented Ghorbel parameters
- [~] Add varying output torque depending on number of tooth in contact ?
- [~] add brake ?
- [~] Variation of C ?
- [ ] ODE45 ?
- [x] Displays from last version (in class)
- [x] New mesh stiffness variation model (trapezoidal)
- [x] Print in pdf
- [ ] Errors/defects implementation
- [ ] profile error
- [ ] assembly defect (change on gear stiffness)
- [ ] README
- [x] Maths
- [ ] Images
- [ ] Source(s)
- [ ] Random models implementation
- [x] Display
- [x] time response on a2
- [x] speed response
- [x] x movement (vs y movement ?)
- [x] RMS STD Kurtosis
- [ ] Auto speed initialization
- [ ] Tests
- [ ] different speed
- [ ] different blade radii
## Maths
The model is represented by two 4DDL shafts in a gear connection : $x$ and $y$ are free at the pinion, $\theta$ is free at both ends of the shaft (input/output is $\theta_{ii}$ and meshing rotation is $\theta_{ij}$).
### Parameters
| Newmark parameters | Value | **Unit** |
| ------------------------------------------------ | --------- | --------------- |
| $\gamma$ | 0.7 | |
| $\beta$ | 0.3 | |
| **Gears** | **Value** | |
| Pinon 1 tooth number $Z1$ | 72 | |
| Pinion 2 tooth number $Z2$ | 18 | |
| Pinion modulus $m_0$ | 0.016 | m |
| Pinion width $b$ | 0.1 | m |
| Internal diameter pinion 1 $d_{i1}$ | 0.5 | m |
| Internal diameter pinion 2 $d_{i_2}$ | 0.3 | m |
| Input speed $N_1$ | 17 | m/s |
| Contact angle $\alpha$ | 20 | degree |
| Steel density $\rho_{steel}$ | 7860 | kg/m3 |
| **Masses** | **Value** | **Unit** |
| Input mass $m_{in}$ | 54000 | kg |
| Output mass $m_{out}$ | 10 | kg |
| **Stiffness** | | |
| Flexion x : $k_x=k_{x_1}=k_{x_2}$ | 1e8 | N/m |
| Flexion y : $k_y=k_{y_1}=k_{y_2}$ | 1e8 | N/m |
| Torsion z : $k_\theta=k_{\theta_1}=k_{\theta_2}$ | 1e5 | N/m |
| Mean mesh stiffness $k_{mesh_{mean}}$ | 1e8 | N/rad |
| **Damping** | **Value** | **Unit** |
| Mass related $\eta$ | 5e-2 | N/(m/s)/(kg) |
| Stiffness related $\beta$ | 1e-6 | N/(m/s)/(N/rad) |
| **Wind excitation** | **Value** | **Unit** |
| Blade radius $r_{blade}$ | 6 | m |
| Air density $\rho_{air}$ | 1.225 | kg/m3 |
| Wind speed (mean) $v_{wind_{mean}}$ | 10 | m/s |
| Fluctuating external torque $T_{fluct}$ | 50 | N |
| Fluctuating external frequency $f_{fluct}$ | 6 | Hz |
| Performance efficiency $cp$ | 16/27 | |
### Energy equations
$$
\frac{\partial Ep}{\partial q_i}+
\frac{d}{dt}\left(\frac{Ec}{\dot{q}_i}\right)-
\frac{\partial Ec}{\partial q_i}+
\frac{\partial D}{\partial \dot{q}_i}
=\frac{W}{\partial q_i}
\\
Ec = \frac{1}{2}m_1\dot{x}_1^2+
\frac{1}{2}m_1\dot{y}_1^2+
\frac{1}{2}I_{11}\dot{\theta}_{11}^2+
\frac{1}{2}I_{12}\dot{\theta}_{12}^2+
\frac{1}{2}m_2\dot{x_2}^2+
\frac{1}{2}m_2\dot{y_2}^2+
\frac{1}{2}I_{22}\dot{\theta}_{22}^2+
\frac{1}{2}I_{21}\dot{\theta}_{21}^2
\\
Ep = \frac{1}{2}k_{x_1}x_{1}^2+
\frac{1}{2}k_{y_1}y_{1}^2+
\frac{1}{2}k_{\theta_1}(\theta_{11}-\theta_{12})^2+
\frac{1}{2}k_{x_2}x_{2}^2+
\frac{1}{2}k_{y_2}y_{2}^2+
\frac{1}{2}k_{\theta_2}(\theta_{21}-\theta_{22})^2+
\frac{1}{2}K_e(t)\delta_1^2(t)
$$
### Equations of movement
$Ep$ and $Ec$ are separated between the two shaft (1 and 2)
$$
\begin{cases}
&\frac{\partial Ep_1}{\partial x_1}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{x}_1}\right)=m_1\ddot{x}_1+k_{x1}x_1+sin(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial y_1}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{y}_1}\right)=m_1\ddot{y}_1+k_{y1}y_1+cos(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial \theta_{11}}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{\theta}_{11}}\right)=I_{11}\ddot{\theta}_{11}+k_{\theta 1}(\theta_{11}-\theta_{12})=Cm \\
&\frac{\partial Ep_1}{\partial \theta_{12}}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{\theta}_{12}}\right)=I_{12}\ddot{\theta}_{12}+k_{\theta 1}(\theta_{12}-\theta_{11})+K_e(t)r_{b12}\delta_1(t)=0 \\
&\frac{\partial Ep_1}{\partial x_2}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{x}_2}\right)=m_2\ddot{x}_2+k_{x2}x_2-sin(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial y_2}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{y}_2}\right)=m_2\ddot{y}_2+k_{y2}y_2-cos(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial \theta_{22}}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{\theta}_{22}}\right)=I_{22}\ddot{\theta}_{22}-k_{\theta 2}(\theta_{21}-\theta_{22})=-Cr \\
&\frac{\partial Ep_1}{\partial \theta_{21}}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{\theta}_{21}}\right)=I_{21}\ddot{\theta}_{21}-k_{\theta 2}(\theta_{21}-\theta_{22})+K_e(t)r_{b21}\delta_1(t)=0
\end{cases}
$$
With $\delta_i(t)=(x_1-x_2)sin(\alpha)+(y_1-y_2)cos(\alpha)+\theta_{12}r_{b1}+\theta_{21}r_{b2}$ and $r_{bij}$ the base radius of pinions, $K_e$ is the varying meshing stiffness, mass $m_i = \pi r^2_{i}\rho$ for both pinions, and $I_{ij} = \frac{1}{2}m_{ij}r_{ij}^2$ for pinions and input/output inertia.
### Matrices
**Equation to solve :**
$$
[M]\{\ddot{q}\}+C\{\dot{q}\}+([Ks]+[K(t)])\{q\}=\{F_0\} \\
\{q\}=\{x_1,y_1,\theta_{11},\theta_{12},x_2,y_2,\theta_{22},\theta_{21}\}
$$
**Mass matrix :**
$$
M =
\begin{bmatrix}
m_1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & m_1 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & I_{11} & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & I_{12} & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & m_2 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & m_2 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & I_{22} & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & I_{21} \\
\end{bmatrix} \\
$$
With $m_1$ mass of shaft 1 and $m_2$ mass of shaft 2
**Variable mesh stiffness matrix**
$$
\frac{K(t)}{K_e(t)}=
\begin{bmatrix}
sin(\alpha)^2 & sin(\alpha).cos(\alpha) & 0 & r_1.sin(\alpha) & -sin(\alpha)^2 & -sin(\alpha).cos(\alpha) & 0 & r_2.sin(\alpha) \\
sin(\alpha).cos(\alpha) & cos(\alpha)^2 & 0 & r_1.cos(\alpha) & -sin(\alpha).cos(\alpha) & -cos(\alpha)^2 & 0 & r_2.cos(\alpha) \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
r_1.sin(\alpha) & r_1.cos(\alpha) & 0 & r_1^2 & -r_1.sin(\alpha) & -r_1.cos(\alpha) & 0 & r_1.r_2 \\
-sin(\alpha)^2 & -sin(\alpha).cos(\alpha) & 0 & -r_1.sin(\alpha) & sin(\alpha)^2 & sin(\alpha).cos(\alpha) & 0 & -r_2.sin(\alpha) \\
-sin(\alpha).cos(\alpha) & -cos(\alpha)^2 & 0 & -r_1.cos(\alpha) & sin(\alpha).cos(\alpha) & cos(\alpha)^2 & 0 & -r_2.cos(\alpha) \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
r_2.sin(\alpha) & r_2.cos(\alpha) & 0 & r_1.r_2 & -r_2.sin(\alpha) & -r_2.cos(\alpha) & 0 & r_2^2 \\
\end{bmatrix}
$$
> [!NOTE]
>
> In matlab, cos and sin terms will be noted as $s_i$, for visual simplification
**Constant stiffness matrix**
$$
Ks=
\begin{bmatrix}
k_{x1} & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & k_{y1} & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & k_{\theta1}& -k_{\theta1} & 0 & 0 & 0 & 0 \\
0 & 0 & -k_{\theta1} & k_{\theta1} & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & k_{x1} & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & k_{y1} & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & k_{\theta2} & -k_{\theta2} \\
0 & 0 & 0 & 0 & 0 & 0 & -k_{\theta2} & k_{\theta2} \\
\end{bmatrix}
$$
**Damping matrix**
Damping matrix is : $C = \eta M+\beta K_{mean}$
**Forces**
$$
F =
\begin{bmatrix}
0 \\ 0 \\ T_{in} \\ 0 \\ 0\\ 0\\ T_{out}\\ 0
\end{bmatrix}
$$
**Mesh stiffness model**
The mesh stiffness is modelized by a trapezoïdal signal between a low value ($=k_{mesh_{mean}}$ for one tooth in contact) and its double value as a high value. Length of both phase is given by $T_{high}=(\varepsilon-1)T_{mesh}$ and $T_{low}=(2-\varepsilon)T_{mesh}$. 10% of the start and of the end of the “high” phase is a linear slope from low value to high value.
> [!NOTE]
> $T_{mesh}=1/f_{mesh}=1/(Z1*N1/60)$
> $\varepsilon$ is an approximation using the following formula :
> $$
> c_1=\frac{1+\frac{1}{Z1}}{\left(\pi cos(\alpha)\left(\frac{sin(\alpha)}{2}+\sqrt{\frac{sin(\alpha)^2}{4}+\frac{1}{Z1^2}+\frac{1}{Z1}}\right)\right)} \\
> c_1=\frac{1+\frac{1}{Z2}}{\left(\pi cos(\alpha)\left(\frac{sin(\alpha)}{2}+\sqrt{\frac{sin(\alpha)^2}{4}+\frac{1}{Z2^2}+\frac{1}{Z2}}\right)\right)} \\
> c_{12}=c_1+c_2 \approx \varepsilon
> $$
## Model
**Time :** time is sampled on the $T_{mesh}$, with $fs$ the number of points for each period, and $n_{periods}$ the number of periods calculated. The number of points is $fs\times n_{periods}$.
**Speed :** rotational speed is initialized at its “stable” value.
> if no automatic implementation, it has to be done “by hand” by executing the program once, get the speeds after the transient zone, and put them by hand in “initialization” source code (`func.m`)
**Initialization :** everything is set at 0 for initialization (except speed)
**Model :** a basic Newmark scheme is used to compute the model over time
## TO FIX
> [!CAUTION]
> ...
## Machine specifications
Example of computational time : `44sec for fs=2500` / `n_periods = 10`
```
-`
.o+`
`ooo/ OS: Arch Linux x86_64
`+oooo: Host: 20EV000UFR ThinkPad E560
`+oooooo: Kernel: 6.19.8-arch1-1
-+oooooo+: Shell: zsh 5.9
`/:-:++oooo+: Terminal: kitty
`/++++/+++++++: CPU: Intel i5-6200U (4) @ 2.300GHz
`/++++++++++++++: GPU: Intel Skylake-U GT2 [HD Graphics 520]
`/+++ooooooooooooo/` Memory: 1703MiB / 3792MiB
./ooosssso++osssssso+`
.oossssso-````/ossssss+`
-osssssso. :ssssssso.
:osssssss/ osssso+++.
/ossssssss/ +ssssooo/-
`/ossssso+/:- -:/+osssso+-
`+sso+:-` `.-/+oso:
`++:. `-/+/
.` `/
```

View file

@ -0,0 +1,246 @@
---
Author: Antoine Foucault-Castelli
Date: 17/03/2026
Bibliography: @karmiFiabiliteOptimisationSystemes @ghorbelEffectBrakeLocation2020a @zhengAnalyticalApproachMesh2022
Version: 4.0
---
# Gearbox simulation
## Structure
```
main.m
func.m
time_sampling
inertia
gearbox_geometry
mesh_stiffness
wind_excitation
mass_matrix
stiffness_matrix
stiffness_update
damping_matrix
forces_matrix
initialization
newmark
parameters.m
display.m
disp_xy(t,x,i)
speed_xy(t,v,i)
acc_xy(t,v,i)
disp_theta(t,x,i)
speed_theta(t,v,i)
acc_theta(t,a,i)
mesh_stiffness(t,k_var,k_mean,i)
taero(t,T_aero,i)
rms_on_x(x)
spectral_on_x(x,i,tf,dt)
plot_x(t,x,i)
only_display.m
display_update.m
```
`main.m` is the launcher for the full code compilation
`func` is the function class, containing every function used in the code
`parameters` is the model parameters document
`display` is the displayer for figures
`only_display` to skip non-needed full compilation
`display_update` to update a single graph if needed
## How does it work ?
**For Matlab under windows :**
open matlab and launch main.m
> [!CAUTION]
> remove `graphics_toolkit("gnuplot")` which is only useful for Octave visualization
**For Octave/Linux :**
```bash
cd [path_to_cloned]/code/versions/[current_version]/
octave
>>> run main.m
>>>
```
## Informations
- [x] Verified code with base code and paper
- [x] Implemented wind excitation
- [x] Implemented Ghorbel parameters
- [~] Add varying output torque depending on number of tooth in contact ?
- [~] add brake ?
- [~] Variation of C ?
- [~] ODE45 ?
- [x] Displays from last version (in class)
- [x] New mesh stiffness variation model (trapezoidal)
- [x] Print in pdf
- [ ] Errors/defects implementation
- [ ] profile error
- [ ] assembly defect (change on gear stiffness)
- [ ] README
- [ ] Maths
- [ ] Source(s)
- [ ] Random models implementation
- [x] Display
- [x] time response on a2
- [x] speed response
- [x] x movement (vs y movement ?)
- [x] RMS STD Kurtosis
- [ ] Tests
- [ ] different speed
- [ ] different blade radii
## Maths
The model is represented by two 4DDL shafts in a gear connection : $x$ and $y$ are free at the pinion, $\theta$ is free at both ends of the shaft (input/output is $\theta_{ii}$ and meshing rotation is $\theta_{ij}$).
### Parameters
### Energy
$$
\frac{\partial Ep}{\partial q_i}+
\frac{d}{dt}\left(\frac{Ec}{\dot{q}_i}\right)-
\frac{\partial Ec}{\partial q_i}+
\frac{\partial D}{\partial \dot{q}_i}
=\frac{W}{\partial q_i}
\\
Ec = \frac{1}{2}m_1*\dot{x}_1^2+
\frac{1}{2}m_1*\dot{y}_1^2+
\frac{1}{2}I_{11}\dot{\theta}_{11}^2+
\frac{1}{2}I_{12}\dot{\theta}_{12}^2+
\frac{1}{2}m_2*\dot{x_2}^2+
\frac{1}{2}m_2*\dot{y_2}^2+
\frac{1}{2}I_{22}\dot{\theta}_{22}^2+
\frac{1}{2}I_{21}\dot{\theta}_{21}^2
\\
Ep = \frac{1}{2}k_{x_1}x_{1}^2+
\frac{1}{2}k_{y_1}y_{1}^2+
\frac{1}{2}k_{\theta_1}(\theta_{11}-\theta_{12})^2+
\frac{1}{2}k_{x_2}x_{2}^2+
\frac{1}{2}k_{y_2}y_{2}^2+
\frac{1}{2}k_{\theta_2}(\theta_{21}-\theta_{22})^2+
\frac{1}{2}K_e(t)\delta_1^2(t)
$$
### Equations of movement
$Ep$ and $Ec$ are separated between the two shaft (1 and 2)
$$
\begin{cases}
&\frac{\partial Ep_1}{\partial x_1}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{x}_1}\right)=m_1\ddot{x}_1+k_{x1}x_1+sin(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial y_1}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{y}_1}\right)=m_1\ddot{y}_1+k_{y1}y_1+cos(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial \theta_{11}}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{\theta}_{11}}\right)=I_{11}\ddot{\theta}_{11}+k_{\theta 1}(\theta_{11}-\theta_{12})=Cm \\
&\frac{\partial Ep_1}{\partial \theta_{12}}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{\theta}_{12}}\right)=I_{12}\ddot{\theta}_{12}+k_{\theta 1}(\theta_{12}-\theta_{11})+K_e(t)r_{b12}\delta_1(t)=0 \\
&\frac{\partial Ep_1}{\partial x_2}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{x}_2}\right)=m_2\ddot{x}_2+k_{x2}x_2-sin(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial y_2}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{y}_2}\right)=m_2\ddot{y}_2+k_{y2}y_2-cos(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial \theta_{22}}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{\theta}_{22}}\right)=I_{22}\ddot{\theta}_{22}-k_{\theta 2}(\theta_{21}-\theta_{22})=-Cr \\
&\frac{\partial Ep_1}{\partial \theta_{21}}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{\theta}_{21}}\right)=I_{21}\ddot{\theta}_{21}-k_{\theta 2}(\theta_{21}-\theta_{22})+K_e(t)r_{b21}\delta_1(t)=0
\end{cases}
$$
With $\delta_i(t)=(x_1-x_2)sin(\alpha)+(y_1-y_2)cos(\alpha)+\theta_{12}r_{b1}+\theta_{21}r_{b2}$ and $r_{bij}$ the base radius of pinions, $K_e$ is the varying meshing stiffness, mass $m_i = \pi r^2_{i}\rho$ for both pinions, and $I_{ij} = \frac{1}{2}m_{ij}r_{ij}^2$ for pinions and input/output inertia.
### Matrices
**Equation to solve :**
$$
[M]\{\ddot{q}\}+C\{\dot{q}\}+([Ks]+[K(t)])\{q\}=\{F_0\} \\
\{q\}=\{x_1,y_1,\theta_{11},\theta_{12},x_2,y_2,\theta_{22},\theta_{21}\}
$$
**Mass matrix :**
$$
M =
\begin{bmatrix}
m_1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & m_1 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & I_{11} & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & I_{12} & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & m_2 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & m_2 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & I_{22} & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & I_{21} \\
\end{bmatrix} \\
$$
With $m_1$ mass of shaft 1 and $m_2$ mass of shaft 2
**Variable stiffness matrix**
$$
K(t)= K_e(t)
\begin{bmatrix}
sin(\alpha)^2 & sin(\alpha).cos(\alpha) & 0 & r_1.sin(\alpha) & -sin(\alpha)^2 & -sin(\alpha).cos(\alpha) & 0 & r_2.sin(\alpha) \\
sin(\alpha).cos(\alpha) & cos(\alpha)^2 & 0 & r_1.cos(\alpha) & -sin(\alpha).cos(\alpha) & -cos(\alpha)^2 & 0 & r_2.cos(\alpha) \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
r_1.sin(\alpha) & r_1.cos(\alpha) & 0 & r_1^2 & -r_1.sin(\alpha) & -r_1.cos(\alpha) & 0 & r_1.r_2 \\
-sin(\alpha)^2 & -sin(\alpha).cos(\alpha) & 0 & -r_1.sin(\alpha) & sin(\alpha)^2 & sin(\alpha).cos(\alpha) & 0 & -r_2.sin(\alpha) \\
-sin(\alpha).cos(\alpha) & -cos(\alpha)^2 & 0 & -r_1.cos(\alpha) & sin(\alpha).cos(\alpha) & cos(\alpha)^2 & 0 & -r_2.cos(\alpha) \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
r_2.sin(\alpha) & r_2.cos(\alpha) & 0 & r_1.r_2 & -r_2.sin(\alpha) & -r_2.cos(\alpha) & 0 & r_2^2 \\
\end{bmatrix}
$$
> [!NOTE]
>
> In matlab, cos and sin terms will be noted as $s_i$, for visual simplification
**Constant stiffness matrix**
$$
Ks=
\begin{bmatrix}
k_{x1} & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & k_{y1} & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & k_{\theta1}& -k_{\theta1} & 0 & 0 & 0 & 0 \\
0 & 0 & -k_{\theta1} & k_{\theta1} & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & k_{x1} & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & k_{y1} & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & k_{\theta2} & -k_{\theta2} \\
0 & 0 & 0 & 0 & 0 & 0 & -k_{\theta2} & k_{\theta2} \\
\end{bmatrix}
$$
**Damping matrix**
$$
C = \eta M+\beta K_{mean}
$$
**Forces**
$$
F = \bma{0}
$$
## TO FIX
> [!ATTENTION]
> ...
## Machine specifications
Example of computational time : `44sec for fs=2500` / `n_periods = 10`
```
-`
.o+`
`ooo/ OS: Arch Linux x86_64
`+oooo: Host: 20EV000UFR ThinkPad E560
`+oooooo: Kernel: 6.19.8-arch1-1
-+oooooo+: Shell: zsh 5.9
`/:-:++oooo+: Terminal: kitty
`/++++/+++++++: CPU: Intel i5-6200U (4) @ 2.300GHz
`/++++++++++++++: GPU: Intel Skylake-U GT2 [HD Graphics 520]
`/+++ooooooooooooo/` Memory: 1703MiB / 3792MiB
./ooosssso++osssssso+`
.oossssso-````/ossssss+`
-osssssso. :ssssssso.
:osssssss/ osssso+++.
/ossssssss/ +ssssooo/-
`/ossssso+/:- -:/+osssso+-
`+sso+:-` `.-/+oso:
`++:. `-/+/
.` `/
```

View file

@ -0,0 +1,249 @@
---
Author: Antoine Foucault-Castelli
Date: 17/03/2026
Bibliography: @karmiFiabiliteOptimisationSystemes @ghorbelEffectBrakeLocation2020a @zhengAnalyticalApproachMesh2022
Version: 4.0
---
# Gearbox simulation
## Structure
```
main.m
func.m
time_sampling
inertia
gearbox_geometry
mesh_stiffness
wind_excitation
mass_matrix
stiffness_matrix
stiffness_update
damping_matrix
forces_matrix
initialization
newmark
parameters.m
display.m
disp_xy(t,x,i)
speed_xy(t,v,i)
acc_xy(t,v,i)
disp_theta(t,x,i)
speed_theta(t,v,i)
acc_theta(t,a,i)
mesh_stiffness(t,k_var,k_mean,i)
taero(t,T_aero,i)
rms_on_x(x)
spectral_on_x(x,i,tf,dt)
plot_x(t,x,i)
only_display.m
display_update.m
```
`main.m` is the launcher for the full code compilation
`func` is the function class, containing every function used in the code
`parameters` is the model parameters document
`display` is the displayer for figures
`only_display` to skip non-needed full compilation
`display_update` to update a single graph if needed
## How does it work ?
**For Matlab under windows :**
open matlab and launch main.m
> [!CAUTION]
> remove `graphics_toolkit("gnuplot")` which is only useful for Octave visualization
**For Octave/Linux :**
```bash
cd [path_to_cloned]/code/versions/[current_version]/
octave
>>> run main.m
>>>
```
## Informations
- [x] Verified code with base code and paper
- [x] Implemented wind excitation
- [x] Implemented Ghorbel parameters
- [~] Add varying output torque depending on number of tooth in contact ?
- [~] add brake ?
- [~] Variation of C ?
- [~] ODE45 ?
- [x] Displays from last version (in class)
- [x] New mesh stiffness variation model (trapezoidal)
- [x] Print in pdf
- [ ] Errors/defects implementation
- [ ] profile error
- [ ] assembly defect (change on gear stiffness)
- [ ] README
- [ ] Maths
- [ ] Source(s)
- [ ] Random models implementation
- [x] Display
- [x] time response on a2
- [x] speed response
- [x] x movement (vs y movement ?)
- [x] RMS STD Kurtosis
- [ ] Tests
- [ ] different speed
- [ ] different blade radii
## Maths
The model is represented by two 4DDL shafts in a gear connection : $x$ and $y$ are free at the pinion, $\theta$ is free at both ends of the shaft (input/output is $\theta_{ii}$ and meshing rotation is $\theta_{ij}$).
### Parameters
### Energy
$$
\frac{\partial Ep}{\partial q_i}+
\frac{d}{dt}\left(\frac{Ec}{\dot{q}_i}\right)-
\frac{\partial Ec}{\partial q_i}+
\frac{\partial D}{\partial \dot{q}_i}
=\frac{W}{\partial q_i}
\\
Ec = \frac{1}{2}m_1*\dot{x}_1^2+
\frac{1}{2}m_1*\dot{y}_1^2+
\frac{1}{2}I_{11}\dot{\theta}_{11}^2+
\frac{1}{2}I_{12}\dot{\theta}_{12}^2+
\frac{1}{2}m_2*\dot{x_2}^2+
\frac{1}{2}m_2*\dot{y_2}^2+
\frac{1}{2}I_{22}\dot{\theta}_{22}^2+
\frac{1}{2}I_{21}\dot{\theta}_{21}^2
\\
Ep = \frac{1}{2}k_{x_1}x_{1}^2+
\frac{1}{2}k_{y_1}y_{1}^2+
\frac{1}{2}k_{\theta_1}(\theta_{11}-\theta_{12})^2+
\frac{1}{2}k_{x_2}x_{2}^2+
\frac{1}{2}k_{y_2}y_{2}^2+
\frac{1}{2}k_{\theta_2}(\theta_{21}-\theta_{22})^2+
\frac{1}{2}K_e(t)\delta_1^2(t)
$$
### Equations of movement
$Ep$ and $Ec$ are separated between the two shaft (1 and 2)
$$
\begin{cases}
&\frac{\partial Ep_1}{\partial x_1}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{x}_1}\right)=m_1\ddot{x}_1+k_{x1}x_1+sin(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial y_1}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{y}_1}\right)=m_1\ddot{y}_1+k_{y1}y_1+cos(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial \theta_{11}}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{\theta}_{11}}\right)=I_{11}\ddot{\theta}_{11}+k_{\theta 1}(\theta_{11}-\theta_{12})=Cm \\
&\frac{\partial Ep_1}{\partial \theta_{12}}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{\theta}_{12}}\right)=I_{12}\ddot{\theta}_{12}+k_{\theta 1}(\theta_{12}-\theta_{11})+K_e(t)r_{b12}\delta_1(t)=0 \\
&\frac{\partial Ep_1}{\partial x_2}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{x}_2}\right)=m_2\ddot{x}_2+k_{x2}x_2-sin(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial y_2}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{y}_2}\right)=m_2\ddot{y}_2+k_{y2}y_2-cos(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial \theta_{22}}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{\theta}_{22}}\right)=I_{22}\ddot{\theta}_{22}-k_{\theta 2}(\theta_{21}-\theta_{22})=-Cr \\
&\frac{\partial Ep_1}{\partial \theta_{21}}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{\theta}_{21}}\right)=I_{21}\ddot{\theta}_{21}-k_{\theta 2}(\theta_{21}-\theta_{22})+K_e(t)r_{b21}\delta_1(t)=0
\end{cases}
$$
With $\delta_i(t)=(x_1-x_2)sin(\alpha)+(y_1-y_2)cos(\alpha)+\theta_{12}r_{b1}+\theta_{21}r_{b2}$ and $r_{bij}$ the base radius of pinions, $K_e$ is the varying meshing stiffness, mass $m_i = \pi r^2_{i}\rho$ for both pinions, and $I_{ij} = \frac{1}{2}m_{ij}r_{ij}^2$ for pinions and input/output inertia.
### Matrices
**Equation to solve :**
$$
[M]\{\ddot{q}\}+C\{\dot{q}\}+([Ks]+[K(t)])\{q\}=\{F_0\} \\
\{q\}=\{x_1,y_1,\theta_{11},\theta_{12},x_2,y_2,\theta_{22},\theta_{21}\}
$$
**Mass matrix :**
$$
M =
\begin{bmatrix}
m_1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & m_1 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & I_{11} & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & I_{12} & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & m_2 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & m_2 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & I_{22} & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & I_{21} \\
\end{bmatrix} \\
$$
With $m_1$ mass of shaft 1 and $m_2$ mass of shaft 2
**Variable stiffness matrix**
$$
K(t)= K_e(t)
\begin{bmatrix}
sin(\alpha)^2 & sin(\alpha).cos(\alpha) & 0 & r_1.sin(\alpha) & -sin(\alpha)^2 & -sin(\alpha).cos(\alpha) & 0 & r_2.sin(\alpha) \\
sin(\alpha).cos(\alpha) & cos(\alpha)^2 & 0 & r_1.cos(\alpha) & -sin(\alpha).cos(\alpha) & -cos(\alpha)^2 & 0 & r_2.cos(\alpha) \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
r_1.sin(\alpha) & r_1.cos(\alpha) & 0 & r_1^2 & -r_1.sin(\alpha) & -r_1.cos(\alpha) & 0 & r_1.r_2 \\
-sin(\alpha)^2 & -sin(\alpha).cos(\alpha) & 0 & -r_1.sin(\alpha) & sin(\alpha)^2 & sin(\alpha).cos(\alpha) & 0 & -r_2.sin(\alpha) \\
-sin(\alpha).cos(\alpha) & -cos(\alpha)^2 & 0 & -r_1.cos(\alpha) & sin(\alpha).cos(\alpha) & cos(\alpha)^2 & 0 & -r_2.cos(\alpha) \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
r_2.sin(\alpha) & r_2.cos(\alpha) & 0 & r_1.r_2 & -r_2.sin(\alpha) & -r_2.cos(\alpha) & 0 & r_2^2 \\
\end{bmatrix}
$$
> [!NOTE]
>
> In matlab, cos and sin terms will be noted as $s_i$, for visual simplification
**Constant stiffness matrix**
$$
Ks=
\begin{bmatrix}
k_{x1} & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & k_{y1} & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & k_{\theta1}& -k_{\theta1} & 0 & 0 & 0 & 0 \\
0 & 0 & -k_{\theta1} & k_{\theta1} & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & k_{x1} & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & k_{y1} & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & k_{\theta2} & -k_{\theta2} \\
0 & 0 & 0 & 0 & 0 & 0 & -k_{\theta2} & k_{\theta2} \\
\end{bmatrix}
$$
**Damping matrix**
$$
C = \eta M+\beta K_{mean}
$$
**Forces**
$$
F =
\begin{bmatrix}
za
\end{bmatrix}
$$
## TO FIX
> [!ATTENTION]
> ...
## Machine specifications
Example of computational time : `44sec for fs=2500` / `n_periods = 10`
```
-`
.o+`
`ooo/ OS: Arch Linux x86_64
`+oooo: Host: 20EV000UFR ThinkPad E560
`+oooooo: Kernel: 6.19.8-arch1-1
-+oooooo+: Shell: zsh 5.9
`/:-:++oooo+: Terminal: kitty
`/++++/+++++++: CPU: Intel i5-6200U (4) @ 2.300GHz
`/++++++++++++++: GPU: Intel Skylake-U GT2 [HD Graphics 520]
`/+++ooooooooooooo/` Memory: 1703MiB / 3792MiB
./ooosssso++osssssso+`
.oossssso-````/ossssss+`
-osssssso. :ssssssso.
:osssssss/ osssso+++.
/ossssssss/ +ssssooo/-
`/ossssso+/:- -:/+osssso+-
`+sso+:-` `.-/+oso:
`++:. `-/+/
.` `/
```

View file

@ -0,0 +1,249 @@
---
Author: Antoine Foucault-Castelli
Date: 17/03/2026
Bibliography: @karmiFiabiliteOptimisationSystemes @ghorbelEffectBrakeLocation2020a @zhengAnalyticalApproachMesh2022
Version: 4.0
---
# Gearbox simulation
## Structure
```
main.m
func.m
time_sampling
inertia
gearbox_geometry
mesh_stiffness
wind_excitation
mass_matrix
stiffness_matrix
stiffness_update
damping_matrix
forces_matrix
initialization
newmark
parameters.m
display.m
disp_xy(t,x,i)
speed_xy(t,v,i)
acc_xy(t,v,i)
disp_theta(t,x,i)
speed_theta(t,v,i)
acc_theta(t,a,i)
mesh_stiffness(t,k_var,k_mean,i)
taero(t,T_aero,i)
rms_on_x(x)
spectral_on_x(x,i,tf,dt)
plot_x(t,x,i)
only_display.m
display_update.m
```
`main.m` is the launcher for the full code compilation
`func` is the function class, containing every function used in the code
`parameters` is the model parameters document
`display` is the displayer for figures
`only_display` to skip non-needed full compilation
`display_update` to update a single graph if needed
## How does it work ?
**For Matlab under windows :**
open matlab and launch main.m
> [!CAUTION]
> remove `graphics_toolkit("gnuplot")` which is only useful for Octave visualization
**For Octave/Linux :**
```bash
cd [path_to_cloned]/code/versions/[current_version]/
octave
>>> run main.m
>>>
```
## Informations
- [x] Verified code with base code and paper
- [x] Implemented wind excitation
- [x] Implemented Ghorbel parameters
- [~] Add varying output torque depending on number of tooth in contact ?
- [~] add brake ?
- [~] Variation of C ?
- [~] ODE45 ?
- [x] Displays from last version (in class)
- [x] New mesh stiffness variation model (trapezoidal)
- [x] Print in pdf
- [ ] Errors/defects implementation
- [ ] profile error
- [ ] assembly defect (change on gear stiffness)
- [ ] README
- [ ] Maths
- [ ] Source(s)
- [ ] Random models implementation
- [x] Display
- [x] time response on a2
- [x] speed response
- [x] x movement (vs y movement ?)
- [x] RMS STD Kurtosis
- [ ] Tests
- [ ] different speed
- [ ] different blade radii
## Maths
The model is represented by two 4DDL shafts in a gear connection : $x$ and $y$ are free at the pinion, $\theta$ is free at both ends of the shaft (input/output is $\theta_{ii}$ and meshing rotation is $\theta_{ij}$).
### Parameters
### Energy
$$
\frac{\partial Ep}{\partial q_i}+
\frac{d}{dt}\left(\frac{Ec}{\dot{q}_i}\right)-
\frac{\partial Ec}{\partial q_i}+
\frac{\partial D}{\partial \dot{q}_i}
=\frac{W}{\partial q_i}
\\
Ec = \frac{1}{2}m_1*\dot{x}_1^2+
\frac{1}{2}m_1*\dot{y}_1^2+
\frac{1}{2}I_{11}\dot{\theta}_{11}^2+
\frac{1}{2}I_{12}\dot{\theta}_{12}^2+
\frac{1}{2}m_2*\dot{x_2}^2+
\frac{1}{2}m_2*\dot{y_2}^2+
\frac{1}{2}I_{22}\dot{\theta}_{22}^2+
\frac{1}{2}I_{21}\dot{\theta}_{21}^2
\\
Ep = \frac{1}{2}k_{x_1}x_{1}^2+
\frac{1}{2}k_{y_1}y_{1}^2+
\frac{1}{2}k_{\theta_1}(\theta_{11}-\theta_{12})^2+
\frac{1}{2}k_{x_2}x_{2}^2+
\frac{1}{2}k_{y_2}y_{2}^2+
\frac{1}{2}k_{\theta_2}(\theta_{21}-\theta_{22})^2+
\frac{1}{2}K_e(t)\delta_1^2(t)
$$
### Equations of movement
$Ep$ and $Ec$ are separated between the two shaft (1 and 2)
$$
\begin{cases}
&\frac{\partial Ep_1}{\partial x_1}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{x}_1}\right)=m_1\ddot{x}_1+k_{x1}x_1+sin(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial y_1}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{y}_1}\right)=m_1\ddot{y}_1+k_{y1}y_1+cos(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial \theta_{11}}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{\theta}_{11}}\right)=I_{11}\ddot{\theta}_{11}+k_{\theta 1}(\theta_{11}-\theta_{12})=Cm \\
&\frac{\partial Ep_1}{\partial \theta_{12}}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{\theta}_{12}}\right)=I_{12}\ddot{\theta}_{12}+k_{\theta 1}(\theta_{12}-\theta_{11})+K_e(t)r_{b12}\delta_1(t)=0 \\
&\frac{\partial Ep_1}{\partial x_2}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{x}_2}\right)=m_2\ddot{x}_2+k_{x2}x_2-sin(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial y_2}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{y}_2}\right)=m_2\ddot{y}_2+k_{y2}y_2-cos(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial \theta_{22}}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{\theta}_{22}}\right)=I_{22}\ddot{\theta}_{22}-k_{\theta 2}(\theta_{21}-\theta_{22})=-Cr \\
&\frac{\partial Ep_1}{\partial \theta_{21}}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{\theta}_{21}}\right)=I_{21}\ddot{\theta}_{21}-k_{\theta 2}(\theta_{21}-\theta_{22})+K_e(t)r_{b21}\delta_1(t)=0
\end{cases}
$$
With $\delta_i(t)=(x_1-x_2)sin(\alpha)+(y_1-y_2)cos(\alpha)+\theta_{12}r_{b1}+\theta_{21}r_{b2}$ and $r_{bij}$ the base radius of pinions, $K_e$ is the varying meshing stiffness, mass $m_i = \pi r^2_{i}\rho$ for both pinions, and $I_{ij} = \frac{1}{2}m_{ij}r_{ij}^2$ for pinions and input/output inertia.
### Matrices
**Equation to solve :**
$$
[M]\{\ddot{q}\}+C\{\dot{q}\}+([Ks]+[K(t)])\{q\}=\{F_0\} \\
\{q\}=\{x_1,y_1,\theta_{11},\theta_{12},x_2,y_2,\theta_{22},\theta_{21}\}
$$
**Mass matrix :**
$$
M =
\begin{bmatrix}
m_1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & m_1 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & I_{11} & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & I_{12} & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & m_2 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & m_2 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & I_{22} & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & I_{21} \\
\end{bmatrix} \\
$$
With $m_1$ mass of shaft 1 and $m_2$ mass of shaft 2
**Variable stiffness matrix**
$$
K(t)= K_e(t)
\begin{bmatrix}
sin(\alpha)^2 & sin(\alpha).cos(\alpha) & 0 & r_1.sin(\alpha) & -sin(\alpha)^2 & -sin(\alpha).cos(\alpha) & 0 & r_2.sin(\alpha) \\
sin(\alpha).cos(\alpha) & cos(\alpha)^2 & 0 & r_1.cos(\alpha) & -sin(\alpha).cos(\alpha) & -cos(\alpha)^2 & 0 & r_2.cos(\alpha) \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
r_1.sin(\alpha) & r_1.cos(\alpha) & 0 & r_1^2 & -r_1.sin(\alpha) & -r_1.cos(\alpha) & 0 & r_1.r_2 \\
-sin(\alpha)^2 & -sin(\alpha).cos(\alpha) & 0 & -r_1.sin(\alpha) & sin(\alpha)^2 & sin(\alpha).cos(\alpha) & 0 & -r_2.sin(\alpha) \\
-sin(\alpha).cos(\alpha) & -cos(\alpha)^2 & 0 & -r_1.cos(\alpha) & sin(\alpha).cos(\alpha) & cos(\alpha)^2 & 0 & -r_2.cos(\alpha) \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
r_2.sin(\alpha) & r_2.cos(\alpha) & 0 & r_1.r_2 & -r_2.sin(\alpha) & -r_2.cos(\alpha) & 0 & r_2^2 \\
\end{bmatrix}
$$
> [!NOTE]
>
> In matlab, cos and sin terms will be noted as $s_i$, for visual simplification
**Constant stiffness matrix**
$$
Ks=
\begin{bmatrix}
k_{x1} & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & k_{y1} & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & k_{\theta1}& -k_{\theta1} & 0 & 0 & 0 & 0 \\
0 & 0 & -k_{\theta1} & k_{\theta1} & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & k_{x1} & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & k_{y1} & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & k_{\theta2} & -k_{\theta2} \\
0 & 0 & 0 & 0 & 0 & 0 & -k_{\theta2} & k_{\theta2} \\
\end{bmatrix}
$$
**Damping matrix**
$$
C = \eta M+\beta K_{mean}
$$
**Forces**
$$
F =
\begin{bmatrix}
0 & 0 & T_{in} & 0 & 0& 0& 0& 0
\end{bmatrix}
$$
## TO FIX
> [!ATTENTION]
> ...
## Machine specifications
Example of computational time : `44sec for fs=2500` / `n_periods = 10`
```
-`
.o+`
`ooo/ OS: Arch Linux x86_64
`+oooo: Host: 20EV000UFR ThinkPad E560
`+oooooo: Kernel: 6.19.8-arch1-1
-+oooooo+: Shell: zsh 5.9
`/:-:++oooo+: Terminal: kitty
`/++++/+++++++: CPU: Intel i5-6200U (4) @ 2.300GHz
`/++++++++++++++: GPU: Intel Skylake-U GT2 [HD Graphics 520]
`/+++ooooooooooooo/` Memory: 1703MiB / 3792MiB
./ooosssso++osssssso+`
.oossssso-````/ossssss+`
-osssssso. :ssssssso.
:osssssss/ osssso+++.
/ossssssss/ +ssssooo/-
`/ossssso+/:- -:/+osssso+-
`+sso+:-` `.-/+oso:
`++:. `-/+/
.` `/
```

View file

@ -0,0 +1,249 @@
---
Author: Antoine Foucault-Castelli
Date: 17/03/2026
Bibliography: @karmiFiabiliteOptimisationSystemes @ghorbelEffectBrakeLocation2020a @zhengAnalyticalApproachMesh2022
Version: 4.0
---
# Gearbox simulation
## Structure
```
main.m
func.m
time_sampling
inertia
gearbox_geometry
mesh_stiffness
wind_excitation
mass_matrix
stiffness_matrix
stiffness_update
damping_matrix
forces_matrix
initialization
newmark
parameters.m
display.m
disp_xy(t,x,i)
speed_xy(t,v,i)
acc_xy(t,v,i)
disp_theta(t,x,i)
speed_theta(t,v,i)
acc_theta(t,a,i)
mesh_stiffness(t,k_var,k_mean,i)
taero(t,T_aero,i)
rms_on_x(x)
spectral_on_x(x,i,tf,dt)
plot_x(t,x,i)
only_display.m
display_update.m
```
`main.m` is the launcher for the full code compilation
`func` is the function class, containing every function used in the code
`parameters` is the model parameters document
`display` is the displayer for figures
`only_display` to skip non-needed full compilation
`display_update` to update a single graph if needed
## How does it work ?
**For Matlab under windows :**
open matlab and launch main.m
> [!CAUTION]
> remove `graphics_toolkit("gnuplot")` which is only useful for Octave visualization
**For Octave/Linux :**
```bash
cd [path_to_cloned]/code/versions/[current_version]/
octave
>>> run main.m
>>>
```
## Informations
- [x] Verified code with base code and paper
- [x] Implemented wind excitation
- [x] Implemented Ghorbel parameters
- [~] Add varying output torque depending on number of tooth in contact ?
- [~] add brake ?
- [~] Variation of C ?
- [~] ODE45 ?
- [x] Displays from last version (in class)
- [x] New mesh stiffness variation model (trapezoidal)
- [x] Print in pdf
- [ ] Errors/defects implementation
- [ ] profile error
- [ ] assembly defect (change on gear stiffness)
- [ ] README
- [ ] Maths
- [ ] Source(s)
- [ ] Random models implementation
- [x] Display
- [x] time response on a2
- [x] speed response
- [x] x movement (vs y movement ?)
- [x] RMS STD Kurtosis
- [ ] Tests
- [ ] different speed
- [ ] different blade radii
## Maths
The model is represented by two 4DDL shafts in a gear connection : $x$ and $y$ are free at the pinion, $\theta$ is free at both ends of the shaft (input/output is $\theta_{ii}$ and meshing rotation is $\theta_{ij}$).
### Parameters
### Energy
$$
\frac{\partial Ep}{\partial q_i}+
\frac{d}{dt}\left(\frac{Ec}{\dot{q}_i}\right)-
\frac{\partial Ec}{\partial q_i}+
\frac{\partial D}{\partial \dot{q}_i}
=\frac{W}{\partial q_i}
\\
Ec = \frac{1}{2}m_1*\dot{x}_1^2+
\frac{1}{2}m_1*\dot{y}_1^2+
\frac{1}{2}I_{11}\dot{\theta}_{11}^2+
\frac{1}{2}I_{12}\dot{\theta}_{12}^2+
\frac{1}{2}m_2*\dot{x_2}^2+
\frac{1}{2}m_2*\dot{y_2}^2+
\frac{1}{2}I_{22}\dot{\theta}_{22}^2+
\frac{1}{2}I_{21}\dot{\theta}_{21}^2
\\
Ep = \frac{1}{2}k_{x_1}x_{1}^2+
\frac{1}{2}k_{y_1}y_{1}^2+
\frac{1}{2}k_{\theta_1}(\theta_{11}-\theta_{12})^2+
\frac{1}{2}k_{x_2}x_{2}^2+
\frac{1}{2}k_{y_2}y_{2}^2+
\frac{1}{2}k_{\theta_2}(\theta_{21}-\theta_{22})^2+
\frac{1}{2}K_e(t)\delta_1^2(t)
$$
### Equations of movement
$Ep$ and $Ec$ are separated between the two shaft (1 and 2)
$$
\begin{cases}
&\frac{\partial Ep_1}{\partial x_1}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{x}_1}\right)=m_1\ddot{x}_1+k_{x1}x_1+sin(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial y_1}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{y}_1}\right)=m_1\ddot{y}_1+k_{y1}y_1+cos(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial \theta_{11}}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{\theta}_{11}}\right)=I_{11}\ddot{\theta}_{11}+k_{\theta 1}(\theta_{11}-\theta_{12})=Cm \\
&\frac{\partial Ep_1}{\partial \theta_{12}}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{\theta}_{12}}\right)=I_{12}\ddot{\theta}_{12}+k_{\theta 1}(\theta_{12}-\theta_{11})+K_e(t)r_{b12}\delta_1(t)=0 \\
&\frac{\partial Ep_1}{\partial x_2}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{x}_2}\right)=m_2\ddot{x}_2+k_{x2}x_2-sin(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial y_2}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{y}_2}\right)=m_2\ddot{y}_2+k_{y2}y_2-cos(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial \theta_{22}}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{\theta}_{22}}\right)=I_{22}\ddot{\theta}_{22}-k_{\theta 2}(\theta_{21}-\theta_{22})=-Cr \\
&\frac{\partial Ep_1}{\partial \theta_{21}}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{\theta}_{21}}\right)=I_{21}\ddot{\theta}_{21}-k_{\theta 2}(\theta_{21}-\theta_{22})+K_e(t)r_{b21}\delta_1(t)=0
\end{cases}
$$
With $\delta_i(t)=(x_1-x_2)sin(\alpha)+(y_1-y_2)cos(\alpha)+\theta_{12}r_{b1}+\theta_{21}r_{b2}$ and $r_{bij}$ the base radius of pinions, $K_e$ is the varying meshing stiffness, mass $m_i = \pi r^2_{i}\rho$ for both pinions, and $I_{ij} = \frac{1}{2}m_{ij}r_{ij}^2$ for pinions and input/output inertia.
### Matrices
**Equation to solve :**
$$
[M]\{\ddot{q}\}+C\{\dot{q}\}+([Ks]+[K(t)])\{q\}=\{F_0\} \\
\{q\}=\{x_1,y_1,\theta_{11},\theta_{12},x_2,y_2,\theta_{22},\theta_{21}\}
$$
**Mass matrix :**
$$
M =
\begin{bmatrix}
m_1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & m_1 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & I_{11} & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & I_{12} & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & m_2 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & m_2 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & I_{22} & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & I_{21} \\
\end{bmatrix} \\
$$
With $m_1$ mass of shaft 1 and $m_2$ mass of shaft 2
**Variable stiffness matrix**
$$
K(t)= K_e(t)
\begin{bmatrix}
sin(\alpha)^2 & sin(\alpha).cos(\alpha) & 0 & r_1.sin(\alpha) & -sin(\alpha)^2 & -sin(\alpha).cos(\alpha) & 0 & r_2.sin(\alpha) \\
sin(\alpha).cos(\alpha) & cos(\alpha)^2 & 0 & r_1.cos(\alpha) & -sin(\alpha).cos(\alpha) & -cos(\alpha)^2 & 0 & r_2.cos(\alpha) \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
r_1.sin(\alpha) & r_1.cos(\alpha) & 0 & r_1^2 & -r_1.sin(\alpha) & -r_1.cos(\alpha) & 0 & r_1.r_2 \\
-sin(\alpha)^2 & -sin(\alpha).cos(\alpha) & 0 & -r_1.sin(\alpha) & sin(\alpha)^2 & sin(\alpha).cos(\alpha) & 0 & -r_2.sin(\alpha) \\
-sin(\alpha).cos(\alpha) & -cos(\alpha)^2 & 0 & -r_1.cos(\alpha) & sin(\alpha).cos(\alpha) & cos(\alpha)^2 & 0 & -r_2.cos(\alpha) \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
r_2.sin(\alpha) & r_2.cos(\alpha) & 0 & r_1.r_2 & -r_2.sin(\alpha) & -r_2.cos(\alpha) & 0 & r_2^2 \\
\end{bmatrix}
$$
> [!NOTE]
>
> In matlab, cos and sin terms will be noted as $s_i$, for visual simplification
**Constant stiffness matrix**
$$
Ks=
\begin{bmatrix}
k_{x1} & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & k_{y1} & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & k_{\theta1}& -k_{\theta1} & 0 & 0 & 0 & 0 \\
0 & 0 & -k_{\theta1} & k_{\theta1} & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & k_{x1} & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & k_{y1} & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & k_{\theta2} & -k_{\theta2} \\
0 & 0 & 0 & 0 & 0 & 0 & -k_{\theta2} & k_{\theta2} \\
\end{bmatrix}
$$
**Damping matrix**
$$
C = \eta M+\beta K_{mean}
$$
**Forces**
$$
F =
\begin{bmatrix}
0 \\ 0 \\ T_{in} \\ 0 & 0& 0& T_{out}& 0
\end{bmatrix}
$$
## TO FIX
> [!ATTENTION]
> ...
## Machine specifications
Example of computational time : `44sec for fs=2500` / `n_periods = 10`
```
-`
.o+`
`ooo/ OS: Arch Linux x86_64
`+oooo: Host: 20EV000UFR ThinkPad E560
`+oooooo: Kernel: 6.19.8-arch1-1
-+oooooo+: Shell: zsh 5.9
`/:-:++oooo+: Terminal: kitty
`/++++/+++++++: CPU: Intel i5-6200U (4) @ 2.300GHz
`/++++++++++++++: GPU: Intel Skylake-U GT2 [HD Graphics 520]
`/+++ooooooooooooo/` Memory: 1703MiB / 3792MiB
./ooosssso++osssssso+`
.oossssso-````/ossssss+`
-osssssso. :ssssssso.
:osssssss/ osssso+++.
/ossssssss/ +ssssooo/-
`/ossssso+/:- -:/+osssso+-
`+sso+:-` `.-/+oso:
`++:. `-/+/
.` `/
```

View file

@ -0,0 +1,249 @@
---
Author: Antoine Foucault-Castelli
Date: 17/03/2026
Bibliography: @karmiFiabiliteOptimisationSystemes @ghorbelEffectBrakeLocation2020a @zhengAnalyticalApproachMesh2022
Version: 4.0
---
# Gearbox simulation
## Structure
```
main.m
func.m
time_sampling
inertia
gearbox_geometry
mesh_stiffness
wind_excitation
mass_matrix
stiffness_matrix
stiffness_update
damping_matrix
forces_matrix
initialization
newmark
parameters.m
display.m
disp_xy(t,x,i)
speed_xy(t,v,i)
acc_xy(t,v,i)
disp_theta(t,x,i)
speed_theta(t,v,i)
acc_theta(t,a,i)
mesh_stiffness(t,k_var,k_mean,i)
taero(t,T_aero,i)
rms_on_x(x)
spectral_on_x(x,i,tf,dt)
plot_x(t,x,i)
only_display.m
display_update.m
```
`main.m` is the launcher for the full code compilation
`func` is the function class, containing every function used in the code
`parameters` is the model parameters document
`display` is the displayer for figures
`only_display` to skip non-needed full compilation
`display_update` to update a single graph if needed
## How does it work ?
**For Matlab under windows :**
open matlab and launch main.m
> [!CAUTION]
> remove `graphics_toolkit("gnuplot")` which is only useful for Octave visualization
**For Octave/Linux :**
```bash
cd [path_to_cloned]/code/versions/[current_version]/
octave
>>> run main.m
>>>
```
## Informations
- [x] Verified code with base code and paper
- [x] Implemented wind excitation
- [x] Implemented Ghorbel parameters
- [~] Add varying output torque depending on number of tooth in contact ?
- [~] add brake ?
- [~] Variation of C ?
- [~] ODE45 ?
- [x] Displays from last version (in class)
- [x] New mesh stiffness variation model (trapezoidal)
- [x] Print in pdf
- [ ] Errors/defects implementation
- [ ] profile error
- [ ] assembly defect (change on gear stiffness)
- [ ] README
- [ ] Maths
- [ ] Source(s)
- [ ] Random models implementation
- [x] Display
- [x] time response on a2
- [x] speed response
- [x] x movement (vs y movement ?)
- [x] RMS STD Kurtosis
- [ ] Tests
- [ ] different speed
- [ ] different blade radii
## Maths
The model is represented by two 4DDL shafts in a gear connection : $x$ and $y$ are free at the pinion, $\theta$ is free at both ends of the shaft (input/output is $\theta_{ii}$ and meshing rotation is $\theta_{ij}$).
### Parameters
### Energy equations
$$
\frac{\partial Ep}{\partial q_i}+
\frac{d}{dt}\left(\frac{Ec}{\dot{q}_i}\right)-
\frac{\partial Ec}{\partial q_i}+
\frac{\partial D}{\partial \dot{q}_i}
=\frac{W}{\partial q_i}
\\
Ec = \frac{1}{2}m_1*\dot{x}_1^2+
\frac{1}{2}m_1*\dot{y}_1^2+
\frac{1}{2}I_{11}\dot{\theta}_{11}^2+
\frac{1}{2}I_{12}\dot{\theta}_{12}^2+
\frac{1}{2}m_2*\dot{x_2}^2+
\frac{1}{2}m_2*\dot{y_2}^2+
\frac{1}{2}I_{22}\dot{\theta}_{22}^2+
\frac{1}{2}I_{21}\dot{\theta}_{21}^2
\\
Ep = \frac{1}{2}k_{x_1}x_{1}^2+
\frac{1}{2}k_{y_1}y_{1}^2+
\frac{1}{2}k_{\theta_1}(\theta_{11}-\theta_{12})^2+
\frac{1}{2}k_{x_2}x_{2}^2+
\frac{1}{2}k_{y_2}y_{2}^2+
\frac{1}{2}k_{\theta_2}(\theta_{21}-\theta_{22})^2+
\frac{1}{2}K_e(t)\delta_1^2(t)
$$
### Equations of movement
$Ep$ and $Ec$ are separated between the two shaft (1 and 2)
$$
\begin{cases}
&\frac{\partial Ep_1}{\partial x_1}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{x}_1}\right)=m_1\ddot{x}_1+k_{x1}x_1+sin(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial y_1}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{y}_1}\right)=m_1\ddot{y}_1+k_{y1}y_1+cos(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial \theta_{11}}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{\theta}_{11}}\right)=I_{11}\ddot{\theta}_{11}+k_{\theta 1}(\theta_{11}-\theta_{12})=Cm \\
&\frac{\partial Ep_1}{\partial \theta_{12}}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{\theta}_{12}}\right)=I_{12}\ddot{\theta}_{12}+k_{\theta 1}(\theta_{12}-\theta_{11})+K_e(t)r_{b12}\delta_1(t)=0 \\
&\frac{\partial Ep_1}{\partial x_2}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{x}_2}\right)=m_2\ddot{x}_2+k_{x2}x_2-sin(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial y_2}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{y}_2}\right)=m_2\ddot{y}_2+k_{y2}y_2-cos(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial \theta_{22}}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{\theta}_{22}}\right)=I_{22}\ddot{\theta}_{22}-k_{\theta 2}(\theta_{21}-\theta_{22})=-Cr \\
&\frac{\partial Ep_1}{\partial \theta_{21}}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{\theta}_{21}}\right)=I_{21}\ddot{\theta}_{21}-k_{\theta 2}(\theta_{21}-\theta_{22})+K_e(t)r_{b21}\delta_1(t)=0
\end{cases}
$$
With $\delta_i(t)=(x_1-x_2)sin(\alpha)+(y_1-y_2)cos(\alpha)+\theta_{12}r_{b1}+\theta_{21}r_{b2}$ and $r_{bij}$ the base radius of pinions, $K_e$ is the varying meshing stiffness, mass $m_i = \pi r^2_{i}\rho$ for both pinions, and $I_{ij} = \frac{1}{2}m_{ij}r_{ij}^2$ for pinions and input/output inertia.
### Matrices
**Equation to solve :**
$$
[M]\{\ddot{q}\}+C\{\dot{q}\}+([Ks]+[K(t)])\{q\}=\{F_0\} \\
\{q\}=\{x_1,y_1,\theta_{11},\theta_{12},x_2,y_2,\theta_{22},\theta_{21}\}
$$
**Mass matrix :**
$$
M =
\begin{bmatrix}
m_1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & m_1 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & I_{11} & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & I_{12} & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & m_2 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & m_2 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & I_{22} & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & I_{21} \\
\end{bmatrix} \\
$$
With $m_1$ mass of shaft 1 and $m_2$ mass of shaft 2
**Variable stiffness matrix**
$$
K(t)= K_e(t)
\begin{bmatrix}
sin(\alpha)^2 & sin(\alpha).cos(\alpha) & 0 & r_1.sin(\alpha) & -sin(\alpha)^2 & -sin(\alpha).cos(\alpha) & 0 & r_2.sin(\alpha) \\
sin(\alpha).cos(\alpha) & cos(\alpha)^2 & 0 & r_1.cos(\alpha) & -sin(\alpha).cos(\alpha) & -cos(\alpha)^2 & 0 & r_2.cos(\alpha) \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
r_1.sin(\alpha) & r_1.cos(\alpha) & 0 & r_1^2 & -r_1.sin(\alpha) & -r_1.cos(\alpha) & 0 & r_1.r_2 \\
-sin(\alpha)^2 & -sin(\alpha).cos(\alpha) & 0 & -r_1.sin(\alpha) & sin(\alpha)^2 & sin(\alpha).cos(\alpha) & 0 & -r_2.sin(\alpha) \\
-sin(\alpha).cos(\alpha) & -cos(\alpha)^2 & 0 & -r_1.cos(\alpha) & sin(\alpha).cos(\alpha) & cos(\alpha)^2 & 0 & -r_2.cos(\alpha) \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
r_2.sin(\alpha) & r_2.cos(\alpha) & 0 & r_1.r_2 & -r_2.sin(\alpha) & -r_2.cos(\alpha) & 0 & r_2^2 \\
\end{bmatrix}
$$
> [!NOTE]
>
> In matlab, cos and sin terms will be noted as $s_i$, for visual simplification
**Constant stiffness matrix**
$$
Ks=
\begin{bmatrix}
k_{x1} & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & k_{y1} & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & k_{\theta1}& -k_{\theta1} & 0 & 0 & 0 & 0 \\
0 & 0 & -k_{\theta1} & k_{\theta1} & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & k_{x1} & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & k_{y1} & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & k_{\theta2} & -k_{\theta2} \\
0 & 0 & 0 & 0 & 0 & 0 & -k_{\theta2} & k_{\theta2} \\
\end{bmatrix}
$$
**Damping matrix**
$$
C = \eta M+\beta K_{mean}
$$
**Forces**
$$
F =
\begin{bmatrix}
0 \\ 0 \\ T_{in} \\ 0 \\ 0\\ 0\\ T_{out}\\ 0
\end{bmatrix}
$$
## TO FIX
> [!ATTENTION]
> ...
## Machine specifications
Example of computational time : `44sec for fs=2500` / `n_periods = 10`
```
-`
.o+`
`ooo/ OS: Arch Linux x86_64
`+oooo: Host: 20EV000UFR ThinkPad E560
`+oooooo: Kernel: 6.19.8-arch1-1
-+oooooo+: Shell: zsh 5.9
`/:-:++oooo+: Terminal: kitty
`/++++/+++++++: CPU: Intel i5-6200U (4) @ 2.300GHz
`/++++++++++++++: GPU: Intel Skylake-U GT2 [HD Graphics 520]
`/+++ooooooooooooo/` Memory: 1703MiB / 3792MiB
./ooosssso++osssssso+`
.oossssso-````/ossssss+`
-osssssso. :ssssssso.
:osssssss/ osssso+++.
/ossssssss/ +ssssooo/-
`/ossssso+/:- -:/+osssso+-
`+sso+:-` `.-/+oso:
`++:. `-/+/
.` `/
```

View file

@ -0,0 +1,250 @@
---
Author: Antoine Foucault-Castelli
Date: 17/03/2026
Bibliography: @karmiFiabiliteOptimisationSystemes @ghorbelEffectBrakeLocation2020a @zhengAnalyticalApproachMesh2022
Version: 4.0
---
# Gearbox simulation
## Structure
```
main.m
func.m
time_sampling
inertia
gearbox_geometry
mesh_stiffness
wind_excitation
mass_matrix
stiffness_matrix
stiffness_update
damping_matrix
forces_matrix
initialization
newmark
parameters.m
display.m
disp_xy(t,x,i)
speed_xy(t,v,i)
acc_xy(t,v,i)
disp_theta(t,x,i)
speed_theta(t,v,i)
acc_theta(t,a,i)
mesh_stiffness(t,k_var,k_mean,i)
taero(t,T_aero,i)
rms_on_x(x)
spectral_on_x(x,i,tf,dt)
plot_x(t,x,i)
only_display.m
display_update.m
```
`main.m` is the launcher for the full code compilation
`func` is the function class, containing every function used in the code
`parameters` is the model parameters document
`display` is the displayer for figures
`only_display` to skip non-needed full compilation
`display_update` to update a single graph if needed
## How does it work ?
**For Matlab under windows :**
open matlab and launch main.m
> [!ATT]
> remove `graphics_toolkit("gnuplot")` which is only useful for Octave visualization
**For Octave/Linux :**
```bash
cd [path_to_cloned]/code/versions/[current_version]/
octave
>>> run main.m
>>>
```
## Informations
- [x] Verified code with base code and paper
- [x] Implemented wind excitation
- [x] Implemented Ghorbel parameters
- [~] Add varying output torque depending on number of tooth in contact ?
- [~] add brake ?
- [~] Variation of C ?
- [~] ODE45 ?
- [x] Displays from last version (in class)
- [x] New mesh stiffness variation model (trapezoidal)
- [x] Print in pdf
- [ ] Errors/defects implementation
- [ ] profile error
- [ ] assembly defect (change on gear stiffness)
- [ ] README
- [ ] Maths
- [ ] Source(s)
- [ ] Random models implementation
- [x] Display
- [x] time response on a2
- [x] speed response
- [x] x movement (vs y movement ?)
- [x] RMS STD Kurtosis
- [ ] Tests
- [ ] different speed
- [ ] different blade radii
## Maths
The model is represented by two 4DDL shafts in a gear connection : $x$ and $y$ are free at the pinion, $\theta$ is free at both ends of the shaft (input/output is $\theta_{ii}$ and meshing rotation is $\theta_{ij}$).
### Parameters
### Energy equations
$$
\frac{\partial Ep}{\partial q_i}+
\frac{d}{dt}\left(\frac{Ec}{\dot{q}_i}\right)-
\frac{\partial Ec}{\partial q_i}+
\frac{\partial D}{\partial \dot{q}_i}
=\frac{W}{\partial q_i}
\\
Ec = \frac{1}{2}m_1*\dot{x}_1^2+
\frac{1}{2}m_1*\dot{y}_1^2+
\frac{1}{2}I_{11}\dot{\theta}_{11}^2+
\frac{1}{2}I_{12}\dot{\theta}_{12}^2+
\frac{1}{2}m_2*\dot{x_2}^2+
\frac{1}{2}m_2*\dot{y_2}^2+
\frac{1}{2}I_{22}\dot{\theta}_{22}^2+
\frac{1}{2}I_{21}\dot{\theta}_{21}^2
\\
Ep = \frac{1}{2}k_{x_1}x_{1}^2+
\frac{1}{2}k_{y_1}y_{1}^2+
\frac{1}{2}k_{\theta_1}(\theta_{11}-\theta_{12})^2+
\frac{1}{2}k_{x_2}x_{2}^2+
\frac{1}{2}k_{y_2}y_{2}^2+
\frac{1}{2}k_{\theta_2}(\theta_{21}-\theta_{22})^2+
\frac{1}{2}K_e(t)\delta_1^2(t)
$$
### Equations of movement
$Ep$ and $Ec$ are separated between the two shaft (1 and 2)
$$
\begin{cases}
&\frac{\partial Ep_1}{\partial x_1}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{x}_1}\right)=m_1\ddot{x}_1+k_{x1}x_1+sin(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial y_1}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{y}_1}\right)=m_1\ddot{y}_1+k_{y1}y_1+cos(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial \theta_{11}}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{\theta}_{11}}\right)=I_{11}\ddot{\theta}_{11}+k_{\theta 1}(\theta_{11}-\theta_{12})=Cm \\
&\frac{\partial Ep_1}{\partial \theta_{12}}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{\theta}_{12}}\right)=I_{12}\ddot{\theta}_{12}+k_{\theta 1}(\theta_{12}-\theta_{11})+K_e(t)r_{b12}\delta_1(t)=0 \\
&\frac{\partial Ep_1}{\partial x_2}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{x}_2}\right)=m_2\ddot{x}_2+k_{x2}x_2-sin(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial y_2}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{y}_2}\right)=m_2\ddot{y}_2+k_{y2}y_2-cos(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial \theta_{22}}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{\theta}_{22}}\right)=I_{22}\ddot{\theta}_{22}-k_{\theta 2}(\theta_{21}-\theta_{22})=-Cr \\
&\frac{\partial Ep_1}{\partial \theta_{21}}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{\theta}_{21}}\right)=I_{21}\ddot{\theta}_{21}-k_{\theta 2}(\theta_{21}-\theta_{22})+K_e(t)r_{b21}\delta_1(t)=0
\end{cases}
$$
With $\delta_i(t)=(x_1-x_2)sin(\alpha)+(y_1-y_2)cos(\alpha)+\theta_{12}r_{b1}+\theta_{21}r_{b2}$ and $r_{bij}$ the base radius of pinions, $K_e$ is the varying meshing stiffness, mass $m_i = \pi r^2_{i}\rho$ for both pinions, and $I_{ij} = \frac{1}{2}m_{ij}r_{ij}^2$ for pinions and input/output inertia.
### Matrices
**Equation to solve :**
$$
[M]\{\ddot{q}\}+C\{\dot{q}\}+([Ks]+[K(t)])\{q\}=\{F_0\} \\
\{q\}=\{x_1,y_1,\theta_{11},\theta_{12},x_2,y_2,\theta_{22},\theta_{21}\}
$$
**Mass matrix :**
$$
M =
\begin{bmatrix}
m_1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & m_1 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & I_{11} & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & I_{12} & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & m_2 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & m_2 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & I_{22} & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & I_{21} \\
\end{bmatrix} \\
$$
With $m_1$ mass of shaft 1 and $m_2$ mass of shaft 2
**Variable mesh stiffness matrix**
$$
K(t)= K_e(t)
\begin{bmatrix}
sin(\alpha)^2 & sin(\alpha).cos(\alpha) & 0 & r_1.sin(\alpha) & -sin(\alpha)^2 & -sin(\alpha).cos(\alpha) & 0 & r_2.sin(\alpha) \\
sin(\alpha).cos(\alpha) & cos(\alpha)^2 & 0 & r_1.cos(\alpha) & -sin(\alpha).cos(\alpha) & -cos(\alpha)^2 & 0 & r_2.cos(\alpha) \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
r_1.sin(\alpha) & r_1.cos(\alpha) & 0 & r_1^2 & -r_1.sin(\alpha) & -r_1.cos(\alpha) & 0 & r_1.r_2 \\
-sin(\alpha)^2 & -sin(\alpha).cos(\alpha) & 0 & -r_1.sin(\alpha) & sin(\alpha)^2 & sin(\alpha).cos(\alpha) & 0 & -r_2.sin(\alpha) \\
-sin(\alpha).cos(\alpha) & -cos(\alpha)^2 & 0 & -r_1.cos(\alpha) & sin(\alpha).cos(\alpha) & cos(\alpha)^2 & 0 & -r_2.cos(\alpha) \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
r_2.sin(\alpha) & r_2.cos(\alpha) & 0 & r_1.r_2 & -r_2.sin(\alpha) & -r_2.cos(\alpha) & 0 & r_2^2 \\
\end{bmatrix}
$$
> [!NOTE]
>
> In matlab, cos and sin terms will be noted as $s_i$, for visual simplification
**Constant stiffness matrix**
$$
Ks=
\begin{bmatrix}
k_{x1} & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & k_{y1} & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & k_{\theta1}& -k_{\theta1} & 0 & 0 & 0 & 0 \\
0 & 0 & -k_{\theta1} & k_{\theta1} & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & k_{x1} & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & k_{y1} & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & k_{\theta2} & -k_{\theta2} \\
0 & 0 & 0 & 0 & 0 & 0 & -k_{\theta2} & k_{\theta2} \\
\end{bmatrix}
$$
**Damping matrix**
$$
C = \eta M+\beta K_{mean}
$$
**Forces**
$$
F =
\begin{bmatrix}
0 \\ 0 \\ T_{in} \\ 0 \\ 0\\ 0\\ T_{out}\\ 0
\end{bmatrix}
$$
## TO FIX
> [!ATTENTION]
> ...
## Machine specifications
Example of computational time : `44sec for fs=2500` / `n_periods = 10`
```
-`
.o+`
`ooo/ OS: Arch Linux x86_64
`+oooo: Host: 20EV000UFR ThinkPad E560
`+oooooo: Kernel: 6.19.8-arch1-1
-+oooooo+: Shell: zsh 5.9
`/:-:++oooo+: Terminal: kitty
`/++++/+++++++: CPU: Intel i5-6200U (4) @ 2.300GHz
`/++++++++++++++: GPU: Intel Skylake-U GT2 [HD Graphics 520]
`/+++ooooooooooooo/` Memory: 1703MiB / 3792MiB
./ooosssso++osssssso+`
.oossssso-````/ossssss+`
-osssssso. :ssssssso.
:osssssss/ osssso+++.
/ossssssss/ +ssssooo/-
`/ossssso+/:- -:/+osssso+-
`+sso+:-` `.-/+oso:
`++:. `-/+/
.` `/
```

View file

@ -0,0 +1,246 @@
---
Author: Antoine Foucault-Castelli
Date: 17/03/2026
Bibliography: @karmiFiabiliteOptimisationSystemes @ghorbelEffectBrakeLocation2020a @zhengAnalyticalApproachMesh2022
Version: 4.0
---
# Gearbox simulation
## Structure
```
main.m
func.m
time_sampling
inertia
gearbox_geometry
mesh_stiffness
wind_excitation
mass_matrix
stiffness_matrix
stiffness_update
damping_matrix
forces_matrix
initialization
newmark
parameters.m
display.m
disp_xy(t,x,i)
speed_xy(t,v,i)
acc_xy(t,v,i)
disp_theta(t,x,i)
speed_theta(t,v,i)
acc_theta(t,a,i)
mesh_stiffness(t,k_var,k_mean,i)
taero(t,T_aero,i)
rms_on_x(x)
spectral_on_x(x,i,tf,dt)
plot_x(t,x,i)
only_display.m
display_update.m
```
`main.m` is the launcher for the full code compilation
`func` is the function class, containing every function used in the code
`parameters` is the model parameters document
`display` is the displayer for figures
`only_display` to skip non-needed full compilation
`display_update` to update a single graph if needed
## How does it work ?
**For Matlab under windows :**
open matlab and launch main.m
> [!WARNING]
> remove `graphics_toolkit("gnuplot")` which is only useful for Octave visualization
**For Octave/Linux :**
```bash
cd [path_to_cloned]/code/versions/[current_version]/
octave
>>> run main.m
>>>
```
## Informations
- [x] Verified code with base code and paper
- [x] Implemented wind excitation
- [x] Implemented Ghorbel parameters
- [~] Add varying output torque depending on number of tooth in contact ?
- [~] add brake ?
- [~] Variation of C ?
- [~] ODE45 ?
- [x] Displays from last version (in class)
- [x] New mesh stiffness variation model (trapezoidal)
- [x] Print in pdf
- [ ] Errors/defects implementation
- [ ] profile error
- [ ] assembly defect (change on gear stiffness)
- [ ] README
- [x] Maths
- [ ] Source(s)
- [ ] Random models implementation
- [x] Display
- [x] time response on a2
- [x] speed response
- [x] x movement (vs y movement ?)
- [x] RMS STD Kurtosis
- [ ] Tests
- [ ] different speed
- [ ] different blade radii
## Maths
The model is represented by two 4DDL shafts in a gear connection : $x$ and $y$ are free at the pinion, $\theta$ is free at both ends of the shaft (input/output is $\theta_{ii}$ and meshing rotation is $\theta_{ij}$).
### Parameters
### Energy equations
$$
\frac{\partial Ep}{\partial q_i}+
\frac{d}{dt}\left(\frac{Ec}{\dot{q}_i}\right)-
\frac{\partial Ec}{\partial q_i}+
\frac{\partial D}{\partial \dot{q}_i}
=\frac{W}{\partial q_i}
\\
Ec = \frac{1}{2}m_1*\dot{x}_1^2+
\frac{1}{2}m_1*\dot{y}_1^2+
\frac{1}{2}I_{11}\dot{\theta}_{11}^2+
\frac{1}{2}I_{12}\dot{\theta}_{12}^2+
\frac{1}{2}m_2*\dot{x_2}^2+
\frac{1}{2}m_2*\dot{y_2}^2+
\frac{1}{2}I_{22}\dot{\theta}_{22}^2+
\frac{1}{2}I_{21}\dot{\theta}_{21}^2
\\
Ep = \frac{1}{2}k_{x_1}x_{1}^2+
\frac{1}{2}k_{y_1}y_{1}^2+
\frac{1}{2}k_{\theta_1}(\theta_{11}-\theta_{12})^2+
\frac{1}{2}k_{x_2}x_{2}^2+
\frac{1}{2}k_{y_2}y_{2}^2+
\frac{1}{2}k_{\theta_2}(\theta_{21}-\theta_{22})^2+
\frac{1}{2}K_e(t)\delta_1^2(t)
$$
### Equations of movement
$Ep$ and $Ec$ are separated between the two shaft (1 and 2)
$$
\begin{cases}
&\frac{\partial Ep_1}{\partial x_1}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{x}_1}\right)=m_1\ddot{x}_1+k_{x1}x_1+sin(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial y_1}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{y}_1}\right)=m_1\ddot{y}_1+k_{y1}y_1+cos(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial \theta_{11}}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{\theta}_{11}}\right)=I_{11}\ddot{\theta}_{11}+k_{\theta 1}(\theta_{11}-\theta_{12})=Cm \\
&\frac{\partial Ep_1}{\partial \theta_{12}}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{\theta}_{12}}\right)=I_{12}\ddot{\theta}_{12}+k_{\theta 1}(\theta_{12}-\theta_{11})+K_e(t)r_{b12}\delta_1(t)=0 \\
&\frac{\partial Ep_1}{\partial x_2}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{x}_2}\right)=m_2\ddot{x}_2+k_{x2}x_2-sin(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial y_2}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{y}_2}\right)=m_2\ddot{y}_2+k_{y2}y_2-cos(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial \theta_{22}}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{\theta}_{22}}\right)=I_{22}\ddot{\theta}_{22}-k_{\theta 2}(\theta_{21}-\theta_{22})=-Cr \\
&\frac{\partial Ep_1}{\partial \theta_{21}}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{\theta}_{21}}\right)=I_{21}\ddot{\theta}_{21}-k_{\theta 2}(\theta_{21}-\theta_{22})+K_e(t)r_{b21}\delta_1(t)=0
\end{cases}
$$
With $\delta_i(t)=(x_1-x_2)sin(\alpha)+(y_1-y_2)cos(\alpha)+\theta_{12}r_{b1}+\theta_{21}r_{b2}$ and $r_{bij}$ the base radius of pinions, $K_e$ is the varying meshing stiffness, mass $m_i = \pi r^2_{i}\rho$ for both pinions, and $I_{ij} = \frac{1}{2}m_{ij}r_{ij}^2$ for pinions and input/output inertia.
### Matrices
**Equation to solve :**
$$
[M]\{\ddot{q}\}+C\{\dot{q}\}+([Ks]+[K(t)])\{q\}=\{F_0\} \\
\{q\}=\{x_1,y_1,\theta_{11},\theta_{12},x_2,y_2,\theta_{22},\theta_{21}\}
$$
**Mass matrix :**
$$
M =
\begin{bmatrix}
m_1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & m_1 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & I_{11} & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & I_{12} & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & m_2 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & m_2 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & I_{22} & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & I_{21} \\
\end{bmatrix} \\
$$
With $m_1$ mass of shaft 1 and $m_2$ mass of shaft 2
**Variable mesh stiffness matrix**
$$
K(t)= K_e(t)
\begin{bmatrix}
sin(\alpha)^2 & sin(\alpha).cos(\alpha) & 0 & r_1.sin(\alpha) & -sin(\alpha)^2 & -sin(\alpha).cos(\alpha) & 0 & r_2.sin(\alpha) \\
sin(\alpha).cos(\alpha) & cos(\alpha)^2 & 0 & r_1.cos(\alpha) & -sin(\alpha).cos(\alpha) & -cos(\alpha)^2 & 0 & r_2.cos(\alpha) \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
r_1.sin(\alpha) & r_1.cos(\alpha) & 0 & r_1^2 & -r_1.sin(\alpha) & -r_1.cos(\alpha) & 0 & r_1.r_2 \\
-sin(\alpha)^2 & -sin(\alpha).cos(\alpha) & 0 & -r_1.sin(\alpha) & sin(\alpha)^2 & sin(\alpha).cos(\alpha) & 0 & -r_2.sin(\alpha) \\
-sin(\alpha).cos(\alpha) & -cos(\alpha)^2 & 0 & -r_1.cos(\alpha) & sin(\alpha).cos(\alpha) & cos(\alpha)^2 & 0 & -r_2.cos(\alpha) \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
r_2.sin(\alpha) & r_2.cos(\alpha) & 0 & r_1.r_2 & -r_2.sin(\alpha) & -r_2.cos(\alpha) & 0 & r_2^2 \\
\end{bmatrix}
$$
> [!NOTE]
>
> In matlab, cos and sin terms will be noted as $s_i$, for visual simplification
**Constant stiffness matrix**
$$
Ks=
\begin{bmatrix}
k_{x1} & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & k_{y1} & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & k_{\theta1}& -k_{\theta1} & 0 & 0 & 0 & 0 \\
0 & 0 & -k_{\theta1} & k_{\theta1} & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & k_{x1} & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & k_{y1} & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & k_{\theta2} & -k_{\theta2} \\
0 & 0 & 0 & 0 & 0 & 0 & -k_{\theta2} & k_{\theta2} \\
\end{bmatrix}
$$
**Damping matrix**
$$
C = \eta M+\beta K_{mean}
$$
**Forces**
$$
F =
\begin{bmatrix}
0 \\ 0 \\ T_{in} \\ 0 \\ 0\\ 0\\ T_{out}\\ 0
\end{bmatrix}
$$
## TO FIX
> [!ATTENTION]
> ...
## Machine specifications
Example of computational time : `44sec for fs=2500` / `n_periods = 10`
```
-`
.o+`
`ooo/ OS: Arch Linux x86_64
`+oooo: Host: 20EV000UFR ThinkPad E560
`+oooooo: Kernel: 6.19.8-arch1-1
-+oooooo+: Shell: zsh 5.9
`/:-:++oooo+: Terminal: kitty
`/++++/+++++++: CPU: Intel i5-6200U (4) @ 2.300GHz
`/++++++++++++++: GPU: Intel Skylake-U GT2 [HD Graphics 520]
`/+++ooooooooooooo/` Memory: 1703MiB / 3792MiB
./ooosssso++osssssso+`
.oossssso-````/ossssss+`
-osssssso. :ssssssso.
:osssssss/ osssso+++.
/ossssssss/ +ssssooo/-
`/ossssso+/:- -:/+osssso+-
`+sso+:-` `.-/+oso:
`++:. `-/+/
.` `/
```

View file

@ -0,0 +1,286 @@
---
Author: Antoine Foucault-Castelli
Date: 17/03/2026
Bibliography: @karmiFiabiliteOptimisationSystemes @ghorbelEffectBrakeLocation2020a @zhengAnalyticalApproachMesh2022
Version: 4.0
---
| Parameter | Value |
| ---------------- | ----- |
| Newmark $\gamma$ | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
# Gearbox simulation
## Structure
```
main.m
func.m
time_sampling
inertia
gearbox_geometry
mesh_stiffness
wind_excitation
mass_matrix
stiffness_matrix
stiffness_update
damping_matrix
forces_matrix
initialization
newmark
parameters.m
display.m
disp_xy(t,x,i)
speed_xy(t,v,i)
acc_xy(t,v,i)
disp_theta(t,x,i)
speed_theta(t,v,i)
acc_theta(t,a,i)
mesh_stiffness(t,k_var,k_mean,i)
taero(t,T_aero,i)
rms_on_x(x)
spectral_on_x(x,i,tf,dt)
plot_x(t,x,i)
only_display.m
display_update.m
```
`main.m` is the launcher for the full code compilation
`func` is the function class, containing every function used in the code
`parameters` is the model parameters document
`display` is the displayer for figures
`only_display` to skip non-needed full compilation
`display_update` to update a single graph if needed
## How does it work ?
**For Matlab under windows :**
open matlab and launch main.m
> [!WARNING]
> remove `graphics_toolkit("gnuplot")` which is only useful for Octave visualization
**For Octave/Linux :**
```bash
cd [path_to_cloned]/code/versions/[current_version]/
octave
>>> run main.m
>>>
```
## Informations
- [x] Verified code with base code and paper
- [x] Implemented wind excitation
- [x] Implemented Ghorbel parameters
- [~] Add varying output torque depending on number of tooth in contact ?
- [~] add brake ?
- [~] Variation of C ?
- [~] ODE45 ?
- [x] Displays from last version (in class)
- [x] New mesh stiffness variation model (trapezoidal)
- [x] Print in pdf
- [ ] Errors/defects implementation
- [ ] profile error
- [ ] assembly defect (change on gear stiffness)
- [ ] README
- [x] Maths
- [ ] Source(s)
- [ ] Random models implementation
- [x] Display
- [x] time response on a2
- [x] speed response
- [x] x movement (vs y movement ?)
- [x] RMS STD Kurtosis
- [ ] Tests
- [ ] different speed
- [ ] different blade radii
## Maths
The model is represented by two 4DDL shafts in a gear connection : $x$ and $y$ are free at the pinion, $\theta$ is free at both ends of the shaft (input/output is $\theta_{ii}$ and meshing rotation is $\theta_{ij}$).
### Parameters
### Energy equations
$$
\frac{\partial Ep}{\partial q_i}+
\frac{d}{dt}\left(\frac{Ec}{\dot{q}_i}\right)-
\frac{\partial Ec}{\partial q_i}+
\frac{\partial D}{\partial \dot{q}_i}
=\frac{W}{\partial q_i}
\\
Ec = \frac{1}{2}m_1*\dot{x}_1^2+
\frac{1}{2}m_1*\dot{y}_1^2+
\frac{1}{2}I_{11}\dot{\theta}_{11}^2+
\frac{1}{2}I_{12}\dot{\theta}_{12}^2+
\frac{1}{2}m_2*\dot{x_2}^2+
\frac{1}{2}m_2*\dot{y_2}^2+
\frac{1}{2}I_{22}\dot{\theta}_{22}^2+
\frac{1}{2}I_{21}\dot{\theta}_{21}^2
\\
Ep = \frac{1}{2}k_{x_1}x_{1}^2+
\frac{1}{2}k_{y_1}y_{1}^2+
\frac{1}{2}k_{\theta_1}(\theta_{11}-\theta_{12})^2+
\frac{1}{2}k_{x_2}x_{2}^2+
\frac{1}{2}k_{y_2}y_{2}^2+
\frac{1}{2}k_{\theta_2}(\theta_{21}-\theta_{22})^2+
\frac{1}{2}K_e(t)\delta_1^2(t)
$$
### Equations of movement
$Ep$ and $Ec$ are separated between the two shaft (1 and 2)
$$
\begin{cases}
&\frac{\partial Ep_1}{\partial x_1}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{x}_1}\right)=m_1\ddot{x}_1+k_{x1}x_1+sin(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial y_1}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{y}_1}\right)=m_1\ddot{y}_1+k_{y1}y_1+cos(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial \theta_{11}}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{\theta}_{11}}\right)=I_{11}\ddot{\theta}_{11}+k_{\theta 1}(\theta_{11}-\theta_{12})=Cm \\
&\frac{\partial Ep_1}{\partial \theta_{12}}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{\theta}_{12}}\right)=I_{12}\ddot{\theta}_{12}+k_{\theta 1}(\theta_{12}-\theta_{11})+K_e(t)r_{b12}\delta_1(t)=0 \\
&\frac{\partial Ep_1}{\partial x_2}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{x}_2}\right)=m_2\ddot{x}_2+k_{x2}x_2-sin(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial y_2}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{y}_2}\right)=m_2\ddot{y}_2+k_{y2}y_2-cos(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial \theta_{22}}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{\theta}_{22}}\right)=I_{22}\ddot{\theta}_{22}-k_{\theta 2}(\theta_{21}-\theta_{22})=-Cr \\
&\frac{\partial Ep_1}{\partial \theta_{21}}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{\theta}_{21}}\right)=I_{21}\ddot{\theta}_{21}-k_{\theta 2}(\theta_{21}-\theta_{22})+K_e(t)r_{b21}\delta_1(t)=0
\end{cases}
$$
With $\delta_i(t)=(x_1-x_2)sin(\alpha)+(y_1-y_2)cos(\alpha)+\theta_{12}r_{b1}+\theta_{21}r_{b2}$ and $r_{bij}$ the base radius of pinions, $K_e$ is the varying meshing stiffness, mass $m_i = \pi r^2_{i}\rho$ for both pinions, and $I_{ij} = \frac{1}{2}m_{ij}r_{ij}^2$ for pinions and input/output inertia.
### Matrices
**Equation to solve :**
$$
[M]\{\ddot{q}\}+C\{\dot{q}\}+([Ks]+[K(t)])\{q\}=\{F_0\} \\
\{q\}=\{x_1,y_1,\theta_{11},\theta_{12},x_2,y_2,\theta_{22},\theta_{21}\}
$$
**Mass matrix :**
$$
M =
\begin{bmatrix}
m_1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & m_1 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & I_{11} & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & I_{12} & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & m_2 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & m_2 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & I_{22} & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & I_{21} \\
\end{bmatrix} \\
$$
With $m_1$ mass of shaft 1 and $m_2$ mass of shaft 2
**Variable mesh stiffness matrix**
$$
K(t)= K_e(t)
\begin{bmatrix}
sin(\alpha)^2 & sin(\alpha).cos(\alpha) & 0 & r_1.sin(\alpha) & -sin(\alpha)^2 & -sin(\alpha).cos(\alpha) & 0 & r_2.sin(\alpha) \\
sin(\alpha).cos(\alpha) & cos(\alpha)^2 & 0 & r_1.cos(\alpha) & -sin(\alpha).cos(\alpha) & -cos(\alpha)^2 & 0 & r_2.cos(\alpha) \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
r_1.sin(\alpha) & r_1.cos(\alpha) & 0 & r_1^2 & -r_1.sin(\alpha) & -r_1.cos(\alpha) & 0 & r_1.r_2 \\
-sin(\alpha)^2 & -sin(\alpha).cos(\alpha) & 0 & -r_1.sin(\alpha) & sin(\alpha)^2 & sin(\alpha).cos(\alpha) & 0 & -r_2.sin(\alpha) \\
-sin(\alpha).cos(\alpha) & -cos(\alpha)^2 & 0 & -r_1.cos(\alpha) & sin(\alpha).cos(\alpha) & cos(\alpha)^2 & 0 & -r_2.cos(\alpha) \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
r_2.sin(\alpha) & r_2.cos(\alpha) & 0 & r_1.r_2 & -r_2.sin(\alpha) & -r_2.cos(\alpha) & 0 & r_2^2 \\
\end{bmatrix}
$$
> [!NOTE]
>
> In matlab, cos and sin terms will be noted as $s_i$, for visual simplification
**Constant stiffness matrix**
$$
Ks=
\begin{bmatrix}
k_{x1} & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & k_{y1} & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & k_{\theta1}& -k_{\theta1} & 0 & 0 & 0 & 0 \\
0 & 0 & -k_{\theta1} & k_{\theta1} & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & k_{x1} & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & k_{y1} & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & k_{\theta2} & -k_{\theta2} \\
0 & 0 & 0 & 0 & 0 & 0 & -k_{\theta2} & k_{\theta2} \\
\end{bmatrix}
$$
**Damping matrix**
$$
C = \eta M+\beta K_{mean}
$$
**Forces**
$$
F =
\begin{bmatrix}
0 \\ 0 \\ T_{in} \\ 0 \\ 0\\ 0\\ T_{out}\\ 0
\end{bmatrix}
$$
## TO FIX
> [!ATTENTION]
> ...
## Machine specifications
Example of computational time : `44sec for fs=2500` / `n_periods = 10`
```
-`
.o+`
`ooo/ OS: Arch Linux x86_64
`+oooo: Host: 20EV000UFR ThinkPad E560
`+oooooo: Kernel: 6.19.8-arch1-1
-+oooooo+: Shell: zsh 5.9
`/:-:++oooo+: Terminal: kitty
`/++++/+++++++: CPU: Intel i5-6200U (4) @ 2.300GHz
`/++++++++++++++: GPU: Intel Skylake-U GT2 [HD Graphics 520]
`/+++ooooooooooooo/` Memory: 1703MiB / 3792MiB
./ooosssso++osssssso+`
.oossssso-````/ossssss+`
-osssssso. :ssssssso.
:osssssss/ osssso+++.
/ossssssss/ +ssssooo/-
`/ossssso+/:- -:/+osssso+-
`+sso+:-` `.-/+oso:
`++:. `-/+/
.` `/
```

View file

@ -0,0 +1,286 @@
---
Author: Antoine Foucault-Castelli
Date: 17/03/2026
Bibliography: @karmiFiabiliteOptimisationSystemes @ghorbelEffectBrakeLocation2020a @zhengAnalyticalApproachMesh2022
Version: 4.0
---
| Parameter | Value |
| ---------------- | ----- |
| Newmark $\gamma$ | |
| Newmark $\beta$ | |
| $Z1$ | |
| $Z2$ | |
| $m_0$ | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
# Gearbox simulation
## Structure
```
main.m
func.m
time_sampling
inertia
gearbox_geometry
mesh_stiffness
wind_excitation
mass_matrix
stiffness_matrix
stiffness_update
damping_matrix
forces_matrix
initialization
newmark
parameters.m
display.m
disp_xy(t,x,i)
speed_xy(t,v,i)
acc_xy(t,v,i)
disp_theta(t,x,i)
speed_theta(t,v,i)
acc_theta(t,a,i)
mesh_stiffness(t,k_var,k_mean,i)
taero(t,T_aero,i)
rms_on_x(x)
spectral_on_x(x,i,tf,dt)
plot_x(t,x,i)
only_display.m
display_update.m
```
`main.m` is the launcher for the full code compilation
`func` is the function class, containing every function used in the code
`parameters` is the model parameters document
`display` is the displayer for figures
`only_display` to skip non-needed full compilation
`display_update` to update a single graph if needed
## How does it work ?
**For Matlab under windows :**
open matlab and launch main.m
> [!WARNING]
> remove `graphics_toolkit("gnuplot")` which is only useful for Octave visualization
**For Octave/Linux :**
```bash
cd [path_to_cloned]/code/versions/[current_version]/
octave
>>> run main.m
>>>
```
## Informations
- [x] Verified code with base code and paper
- [x] Implemented wind excitation
- [x] Implemented Ghorbel parameters
- [~] Add varying output torque depending on number of tooth in contact ?
- [~] add brake ?
- [~] Variation of C ?
- [~] ODE45 ?
- [x] Displays from last version (in class)
- [x] New mesh stiffness variation model (trapezoidal)
- [x] Print in pdf
- [ ] Errors/defects implementation
- [ ] profile error
- [ ] assembly defect (change on gear stiffness)
- [ ] README
- [x] Maths
- [ ] Source(s)
- [ ] Random models implementation
- [x] Display
- [x] time response on a2
- [x] speed response
- [x] x movement (vs y movement ?)
- [x] RMS STD Kurtosis
- [ ] Tests
- [ ] different speed
- [ ] different blade radii
## Maths
The model is represented by two 4DDL shafts in a gear connection : $x$ and $y$ are free at the pinion, $\theta$ is free at both ends of the shaft (input/output is $\theta_{ii}$ and meshing rotation is $\theta_{ij}$).
### Parameters
### Energy equations
$$
\frac{\partial Ep}{\partial q_i}+
\frac{d}{dt}\left(\frac{Ec}{\dot{q}_i}\right)-
\frac{\partial Ec}{\partial q_i}+
\frac{\partial D}{\partial \dot{q}_i}
=\frac{W}{\partial q_i}
\\
Ec = \frac{1}{2}m_1*\dot{x}_1^2+
\frac{1}{2}m_1*\dot{y}_1^2+
\frac{1}{2}I_{11}\dot{\theta}_{11}^2+
\frac{1}{2}I_{12}\dot{\theta}_{12}^2+
\frac{1}{2}m_2*\dot{x_2}^2+
\frac{1}{2}m_2*\dot{y_2}^2+
\frac{1}{2}I_{22}\dot{\theta}_{22}^2+
\frac{1}{2}I_{21}\dot{\theta}_{21}^2
\\
Ep = \frac{1}{2}k_{x_1}x_{1}^2+
\frac{1}{2}k_{y_1}y_{1}^2+
\frac{1}{2}k_{\theta_1}(\theta_{11}-\theta_{12})^2+
\frac{1}{2}k_{x_2}x_{2}^2+
\frac{1}{2}k_{y_2}y_{2}^2+
\frac{1}{2}k_{\theta_2}(\theta_{21}-\theta_{22})^2+
\frac{1}{2}K_e(t)\delta_1^2(t)
$$
### Equations of movement
$Ep$ and $Ec$ are separated between the two shaft (1 and 2)
$$
\begin{cases}
&\frac{\partial Ep_1}{\partial x_1}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{x}_1}\right)=m_1\ddot{x}_1+k_{x1}x_1+sin(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial y_1}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{y}_1}\right)=m_1\ddot{y}_1+k_{y1}y_1+cos(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial \theta_{11}}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{\theta}_{11}}\right)=I_{11}\ddot{\theta}_{11}+k_{\theta 1}(\theta_{11}-\theta_{12})=Cm \\
&\frac{\partial Ep_1}{\partial \theta_{12}}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{\theta}_{12}}\right)=I_{12}\ddot{\theta}_{12}+k_{\theta 1}(\theta_{12}-\theta_{11})+K_e(t)r_{b12}\delta_1(t)=0 \\
&\frac{\partial Ep_1}{\partial x_2}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{x}_2}\right)=m_2\ddot{x}_2+k_{x2}x_2-sin(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial y_2}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{y}_2}\right)=m_2\ddot{y}_2+k_{y2}y_2-cos(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial \theta_{22}}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{\theta}_{22}}\right)=I_{22}\ddot{\theta}_{22}-k_{\theta 2}(\theta_{21}-\theta_{22})=-Cr \\
&\frac{\partial Ep_1}{\partial \theta_{21}}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{\theta}_{21}}\right)=I_{21}\ddot{\theta}_{21}-k_{\theta 2}(\theta_{21}-\theta_{22})+K_e(t)r_{b21}\delta_1(t)=0
\end{cases}
$$
With $\delta_i(t)=(x_1-x_2)sin(\alpha)+(y_1-y_2)cos(\alpha)+\theta_{12}r_{b1}+\theta_{21}r_{b2}$ and $r_{bij}$ the base radius of pinions, $K_e$ is the varying meshing stiffness, mass $m_i = \pi r^2_{i}\rho$ for both pinions, and $I_{ij} = \frac{1}{2}m_{ij}r_{ij}^2$ for pinions and input/output inertia.
### Matrices
**Equation to solve :**
$$
[M]\{\ddot{q}\}+C\{\dot{q}\}+([Ks]+[K(t)])\{q\}=\{F_0\} \\
\{q\}=\{x_1,y_1,\theta_{11},\theta_{12},x_2,y_2,\theta_{22},\theta_{21}\}
$$
**Mass matrix :**
$$
M =
\begin{bmatrix}
m_1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & m_1 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & I_{11} & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & I_{12} & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & m_2 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & m_2 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & I_{22} & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & I_{21} \\
\end{bmatrix} \\
$$
With $m_1$ mass of shaft 1 and $m_2$ mass of shaft 2
**Variable mesh stiffness matrix**
$$
K(t)= K_e(t)
\begin{bmatrix}
sin(\alpha)^2 & sin(\alpha).cos(\alpha) & 0 & r_1.sin(\alpha) & -sin(\alpha)^2 & -sin(\alpha).cos(\alpha) & 0 & r_2.sin(\alpha) \\
sin(\alpha).cos(\alpha) & cos(\alpha)^2 & 0 & r_1.cos(\alpha) & -sin(\alpha).cos(\alpha) & -cos(\alpha)^2 & 0 & r_2.cos(\alpha) \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
r_1.sin(\alpha) & r_1.cos(\alpha) & 0 & r_1^2 & -r_1.sin(\alpha) & -r_1.cos(\alpha) & 0 & r_1.r_2 \\
-sin(\alpha)^2 & -sin(\alpha).cos(\alpha) & 0 & -r_1.sin(\alpha) & sin(\alpha)^2 & sin(\alpha).cos(\alpha) & 0 & -r_2.sin(\alpha) \\
-sin(\alpha).cos(\alpha) & -cos(\alpha)^2 & 0 & -r_1.cos(\alpha) & sin(\alpha).cos(\alpha) & cos(\alpha)^2 & 0 & -r_2.cos(\alpha) \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
r_2.sin(\alpha) & r_2.cos(\alpha) & 0 & r_1.r_2 & -r_2.sin(\alpha) & -r_2.cos(\alpha) & 0 & r_2^2 \\
\end{bmatrix}
$$
> [!NOTE]
>
> In matlab, cos and sin terms will be noted as $s_i$, for visual simplification
**Constant stiffness matrix**
$$
Ks=
\begin{bmatrix}
k_{x1} & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & k_{y1} & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & k_{\theta1}& -k_{\theta1} & 0 & 0 & 0 & 0 \\
0 & 0 & -k_{\theta1} & k_{\theta1} & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & k_{x1} & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & k_{y1} & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & k_{\theta2} & -k_{\theta2} \\
0 & 0 & 0 & 0 & 0 & 0 & -k_{\theta2} & k_{\theta2} \\
\end{bmatrix}
$$
**Damping matrix**
$$
C = \eta M+\beta K_{mean}
$$
**Forces**
$$
F =
\begin{bmatrix}
0 \\ 0 \\ T_{in} \\ 0 \\ 0\\ 0\\ T_{out}\\ 0
\end{bmatrix}
$$
## TO FIX
> [!ATTENTION]
> ...
## Machine specifications
Example of computational time : `44sec for fs=2500` / `n_periods = 10`
```
-`
.o+`
`ooo/ OS: Arch Linux x86_64
`+oooo: Host: 20EV000UFR ThinkPad E560
`+oooooo: Kernel: 6.19.8-arch1-1
-+oooooo+: Shell: zsh 5.9
`/:-:++oooo+: Terminal: kitty
`/++++/+++++++: CPU: Intel i5-6200U (4) @ 2.300GHz
`/++++++++++++++: GPU: Intel Skylake-U GT2 [HD Graphics 520]
`/+++ooooooooooooo/` Memory: 1703MiB / 3792MiB
./ooosssso++osssssso+`
.oossssso-````/ossssss+`
-osssssso. :ssssssso.
:osssssss/ osssso+++.
/ossssssss/ +ssssooo/-
`/ossssso+/:- -:/+osssso+-
`+sso+:-` `.-/+oso:
`++:. `-/+/
.` `/
```

View file

@ -0,0 +1,286 @@
---
Author: Antoine Foucault-Castelli
Date: 17/03/2026
Bibliography: @karmiFiabiliteOptimisationSystemes @ghorbelEffectBrakeLocation2020a @zhengAnalyticalApproachMesh2022
Version: 4.0
---
| Parameter | Value |
| ---------------- | ----- |
| Newmark $\gamma$ | |
| Newmark $\beta$ | |
| **Gear** | |
| $Z1$ | |
| $Z2$ | |
| $m_0$ | |
| $b$ | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
# Gearbox simulation
## Structure
```
main.m
func.m
time_sampling
inertia
gearbox_geometry
mesh_stiffness
wind_excitation
mass_matrix
stiffness_matrix
stiffness_update
damping_matrix
forces_matrix
initialization
newmark
parameters.m
display.m
disp_xy(t,x,i)
speed_xy(t,v,i)
acc_xy(t,v,i)
disp_theta(t,x,i)
speed_theta(t,v,i)
acc_theta(t,a,i)
mesh_stiffness(t,k_var,k_mean,i)
taero(t,T_aero,i)
rms_on_x(x)
spectral_on_x(x,i,tf,dt)
plot_x(t,x,i)
only_display.m
display_update.m
```
`main.m` is the launcher for the full code compilation
`func` is the function class, containing every function used in the code
`parameters` is the model parameters document
`display` is the displayer for figures
`only_display` to skip non-needed full compilation
`display_update` to update a single graph if needed
## How does it work ?
**For Matlab under windows :**
open matlab and launch main.m
> [!WARNING]
> remove `graphics_toolkit("gnuplot")` which is only useful for Octave visualization
**For Octave/Linux :**
```bash
cd [path_to_cloned]/code/versions/[current_version]/
octave
>>> run main.m
>>>
```
## Informations
- [x] Verified code with base code and paper
- [x] Implemented wind excitation
- [x] Implemented Ghorbel parameters
- [~] Add varying output torque depending on number of tooth in contact ?
- [~] add brake ?
- [~] Variation of C ?
- [~] ODE45 ?
- [x] Displays from last version (in class)
- [x] New mesh stiffness variation model (trapezoidal)
- [x] Print in pdf
- [ ] Errors/defects implementation
- [ ] profile error
- [ ] assembly defect (change on gear stiffness)
- [ ] README
- [x] Maths
- [ ] Source(s)
- [ ] Random models implementation
- [x] Display
- [x] time response on a2
- [x] speed response
- [x] x movement (vs y movement ?)
- [x] RMS STD Kurtosis
- [ ] Tests
- [ ] different speed
- [ ] different blade radii
## Maths
The model is represented by two 4DDL shafts in a gear connection : $x$ and $y$ are free at the pinion, $\theta$ is free at both ends of the shaft (input/output is $\theta_{ii}$ and meshing rotation is $\theta_{ij}$).
### Parameters
### Energy equations
$$
\frac{\partial Ep}{\partial q_i}+
\frac{d}{dt}\left(\frac{Ec}{\dot{q}_i}\right)-
\frac{\partial Ec}{\partial q_i}+
\frac{\partial D}{\partial \dot{q}_i}
=\frac{W}{\partial q_i}
\\
Ec = \frac{1}{2}m_1*\dot{x}_1^2+
\frac{1}{2}m_1*\dot{y}_1^2+
\frac{1}{2}I_{11}\dot{\theta}_{11}^2+
\frac{1}{2}I_{12}\dot{\theta}_{12}^2+
\frac{1}{2}m_2*\dot{x_2}^2+
\frac{1}{2}m_2*\dot{y_2}^2+
\frac{1}{2}I_{22}\dot{\theta}_{22}^2+
\frac{1}{2}I_{21}\dot{\theta}_{21}^2
\\
Ep = \frac{1}{2}k_{x_1}x_{1}^2+
\frac{1}{2}k_{y_1}y_{1}^2+
\frac{1}{2}k_{\theta_1}(\theta_{11}-\theta_{12})^2+
\frac{1}{2}k_{x_2}x_{2}^2+
\frac{1}{2}k_{y_2}y_{2}^2+
\frac{1}{2}k_{\theta_2}(\theta_{21}-\theta_{22})^2+
\frac{1}{2}K_e(t)\delta_1^2(t)
$$
### Equations of movement
$Ep$ and $Ec$ are separated between the two shaft (1 and 2)
$$
\begin{cases}
&\frac{\partial Ep_1}{\partial x_1}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{x}_1}\right)=m_1\ddot{x}_1+k_{x1}x_1+sin(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial y_1}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{y}_1}\right)=m_1\ddot{y}_1+k_{y1}y_1+cos(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial \theta_{11}}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{\theta}_{11}}\right)=I_{11}\ddot{\theta}_{11}+k_{\theta 1}(\theta_{11}-\theta_{12})=Cm \\
&\frac{\partial Ep_1}{\partial \theta_{12}}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{\theta}_{12}}\right)=I_{12}\ddot{\theta}_{12}+k_{\theta 1}(\theta_{12}-\theta_{11})+K_e(t)r_{b12}\delta_1(t)=0 \\
&\frac{\partial Ep_1}{\partial x_2}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{x}_2}\right)=m_2\ddot{x}_2+k_{x2}x_2-sin(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial y_2}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{y}_2}\right)=m_2\ddot{y}_2+k_{y2}y_2-cos(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial \theta_{22}}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{\theta}_{22}}\right)=I_{22}\ddot{\theta}_{22}-k_{\theta 2}(\theta_{21}-\theta_{22})=-Cr \\
&\frac{\partial Ep_1}{\partial \theta_{21}}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{\theta}_{21}}\right)=I_{21}\ddot{\theta}_{21}-k_{\theta 2}(\theta_{21}-\theta_{22})+K_e(t)r_{b21}\delta_1(t)=0
\end{cases}
$$
With $\delta_i(t)=(x_1-x_2)sin(\alpha)+(y_1-y_2)cos(\alpha)+\theta_{12}r_{b1}+\theta_{21}r_{b2}$ and $r_{bij}$ the base radius of pinions, $K_e$ is the varying meshing stiffness, mass $m_i = \pi r^2_{i}\rho$ for both pinions, and $I_{ij} = \frac{1}{2}m_{ij}r_{ij}^2$ for pinions and input/output inertia.
### Matrices
**Equation to solve :**
$$
[M]\{\ddot{q}\}+C\{\dot{q}\}+([Ks]+[K(t)])\{q\}=\{F_0\} \\
\{q\}=\{x_1,y_1,\theta_{11},\theta_{12},x_2,y_2,\theta_{22},\theta_{21}\}
$$
**Mass matrix :**
$$
M =
\begin{bmatrix}
m_1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & m_1 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & I_{11} & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & I_{12} & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & m_2 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & m_2 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & I_{22} & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & I_{21} \\
\end{bmatrix} \\
$$
With $m_1$ mass of shaft 1 and $m_2$ mass of shaft 2
**Variable mesh stiffness matrix**
$$
K(t)= K_e(t)
\begin{bmatrix}
sin(\alpha)^2 & sin(\alpha).cos(\alpha) & 0 & r_1.sin(\alpha) & -sin(\alpha)^2 & -sin(\alpha).cos(\alpha) & 0 & r_2.sin(\alpha) \\
sin(\alpha).cos(\alpha) & cos(\alpha)^2 & 0 & r_1.cos(\alpha) & -sin(\alpha).cos(\alpha) & -cos(\alpha)^2 & 0 & r_2.cos(\alpha) \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
r_1.sin(\alpha) & r_1.cos(\alpha) & 0 & r_1^2 & -r_1.sin(\alpha) & -r_1.cos(\alpha) & 0 & r_1.r_2 \\
-sin(\alpha)^2 & -sin(\alpha).cos(\alpha) & 0 & -r_1.sin(\alpha) & sin(\alpha)^2 & sin(\alpha).cos(\alpha) & 0 & -r_2.sin(\alpha) \\
-sin(\alpha).cos(\alpha) & -cos(\alpha)^2 & 0 & -r_1.cos(\alpha) & sin(\alpha).cos(\alpha) & cos(\alpha)^2 & 0 & -r_2.cos(\alpha) \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
r_2.sin(\alpha) & r_2.cos(\alpha) & 0 & r_1.r_2 & -r_2.sin(\alpha) & -r_2.cos(\alpha) & 0 & r_2^2 \\
\end{bmatrix}
$$
> [!NOTE]
>
> In matlab, cos and sin terms will be noted as $s_i$, for visual simplification
**Constant stiffness matrix**
$$
Ks=
\begin{bmatrix}
k_{x1} & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & k_{y1} & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & k_{\theta1}& -k_{\theta1} & 0 & 0 & 0 & 0 \\
0 & 0 & -k_{\theta1} & k_{\theta1} & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & k_{x1} & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & k_{y1} & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & k_{\theta2} & -k_{\theta2} \\
0 & 0 & 0 & 0 & 0 & 0 & -k_{\theta2} & k_{\theta2} \\
\end{bmatrix}
$$
**Damping matrix**
$$
C = \eta M+\beta K_{mean}
$$
**Forces**
$$
F =
\begin{bmatrix}
0 \\ 0 \\ T_{in} \\ 0 \\ 0\\ 0\\ T_{out}\\ 0
\end{bmatrix}
$$
## TO FIX
> [!ATTENTION]
> ...
## Machine specifications
Example of computational time : `44sec for fs=2500` / `n_periods = 10`
```
-`
.o+`
`ooo/ OS: Arch Linux x86_64
`+oooo: Host: 20EV000UFR ThinkPad E560
`+oooooo: Kernel: 6.19.8-arch1-1
-+oooooo+: Shell: zsh 5.9
`/:-:++oooo+: Terminal: kitty
`/++++/+++++++: CPU: Intel i5-6200U (4) @ 2.300GHz
`/++++++++++++++: GPU: Intel Skylake-U GT2 [HD Graphics 520]
`/+++ooooooooooooo/` Memory: 1703MiB / 3792MiB
./ooosssso++osssssso+`
.oossssso-````/ossssss+`
-osssssso. :ssssssso.
:osssssss/ osssso+++.
/ossssssss/ +ssssooo/-
`/ossssso+/:- -:/+osssso+-
`+sso+:-` `.-/+oso:
`++:. `-/+/
.` `/
```

View file

@ -0,0 +1,286 @@
---
Author: Antoine Foucault-Castelli
Date: 17/03/2026
Bibliography: @karmiFiabiliteOptimisationSystemes @ghorbelEffectBrakeLocation2020a @zhengAnalyticalApproachMesh2022
Version: 4.0
---
| Newmark | Value |
| ---------------- | ----- |
| Newmark $\gamma$ | |
| Newmark $\beta$ | |
| **Gears** | |
| $Z1$ | |
| $Z2$ | |
| $m_0$ | |
| $b$ | |
| $d_{i1}$ | |
| $d_{i_2}$ | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
# Gearbox simulation
## Structure
```
main.m
func.m
time_sampling
inertia
gearbox_geometry
mesh_stiffness
wind_excitation
mass_matrix
stiffness_matrix
stiffness_update
damping_matrix
forces_matrix
initialization
newmark
parameters.m
display.m
disp_xy(t,x,i)
speed_xy(t,v,i)
acc_xy(t,v,i)
disp_theta(t,x,i)
speed_theta(t,v,i)
acc_theta(t,a,i)
mesh_stiffness(t,k_var,k_mean,i)
taero(t,T_aero,i)
rms_on_x(x)
spectral_on_x(x,i,tf,dt)
plot_x(t,x,i)
only_display.m
display_update.m
```
`main.m` is the launcher for the full code compilation
`func` is the function class, containing every function used in the code
`parameters` is the model parameters document
`display` is the displayer for figures
`only_display` to skip non-needed full compilation
`display_update` to update a single graph if needed
## How does it work ?
**For Matlab under windows :**
open matlab and launch main.m
> [!WARNING]
> remove `graphics_toolkit("gnuplot")` which is only useful for Octave visualization
**For Octave/Linux :**
```bash
cd [path_to_cloned]/code/versions/[current_version]/
octave
>>> run main.m
>>>
```
## Informations
- [x] Verified code with base code and paper
- [x] Implemented wind excitation
- [x] Implemented Ghorbel parameters
- [~] Add varying output torque depending on number of tooth in contact ?
- [~] add brake ?
- [~] Variation of C ?
- [~] ODE45 ?
- [x] Displays from last version (in class)
- [x] New mesh stiffness variation model (trapezoidal)
- [x] Print in pdf
- [ ] Errors/defects implementation
- [ ] profile error
- [ ] assembly defect (change on gear stiffness)
- [ ] README
- [x] Maths
- [ ] Source(s)
- [ ] Random models implementation
- [x] Display
- [x] time response on a2
- [x] speed response
- [x] x movement (vs y movement ?)
- [x] RMS STD Kurtosis
- [ ] Tests
- [ ] different speed
- [ ] different blade radii
## Maths
The model is represented by two 4DDL shafts in a gear connection : $x$ and $y$ are free at the pinion, $\theta$ is free at both ends of the shaft (input/output is $\theta_{ii}$ and meshing rotation is $\theta_{ij}$).
### Parameters
### Energy equations
$$
\frac{\partial Ep}{\partial q_i}+
\frac{d}{dt}\left(\frac{Ec}{\dot{q}_i}\right)-
\frac{\partial Ec}{\partial q_i}+
\frac{\partial D}{\partial \dot{q}_i}
=\frac{W}{\partial q_i}
\\
Ec = \frac{1}{2}m_1*\dot{x}_1^2+
\frac{1}{2}m_1*\dot{y}_1^2+
\frac{1}{2}I_{11}\dot{\theta}_{11}^2+
\frac{1}{2}I_{12}\dot{\theta}_{12}^2+
\frac{1}{2}m_2*\dot{x_2}^2+
\frac{1}{2}m_2*\dot{y_2}^2+
\frac{1}{2}I_{22}\dot{\theta}_{22}^2+
\frac{1}{2}I_{21}\dot{\theta}_{21}^2
\\
Ep = \frac{1}{2}k_{x_1}x_{1}^2+
\frac{1}{2}k_{y_1}y_{1}^2+
\frac{1}{2}k_{\theta_1}(\theta_{11}-\theta_{12})^2+
\frac{1}{2}k_{x_2}x_{2}^2+
\frac{1}{2}k_{y_2}y_{2}^2+
\frac{1}{2}k_{\theta_2}(\theta_{21}-\theta_{22})^2+
\frac{1}{2}K_e(t)\delta_1^2(t)
$$
### Equations of movement
$Ep$ and $Ec$ are separated between the two shaft (1 and 2)
$$
\begin{cases}
&\frac{\partial Ep_1}{\partial x_1}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{x}_1}\right)=m_1\ddot{x}_1+k_{x1}x_1+sin(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial y_1}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{y}_1}\right)=m_1\ddot{y}_1+k_{y1}y_1+cos(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial \theta_{11}}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{\theta}_{11}}\right)=I_{11}\ddot{\theta}_{11}+k_{\theta 1}(\theta_{11}-\theta_{12})=Cm \\
&\frac{\partial Ep_1}{\partial \theta_{12}}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{\theta}_{12}}\right)=I_{12}\ddot{\theta}_{12}+k_{\theta 1}(\theta_{12}-\theta_{11})+K_e(t)r_{b12}\delta_1(t)=0 \\
&\frac{\partial Ep_1}{\partial x_2}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{x}_2}\right)=m_2\ddot{x}_2+k_{x2}x_2-sin(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial y_2}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{y}_2}\right)=m_2\ddot{y}_2+k_{y2}y_2-cos(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial \theta_{22}}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{\theta}_{22}}\right)=I_{22}\ddot{\theta}_{22}-k_{\theta 2}(\theta_{21}-\theta_{22})=-Cr \\
&\frac{\partial Ep_1}{\partial \theta_{21}}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{\theta}_{21}}\right)=I_{21}\ddot{\theta}_{21}-k_{\theta 2}(\theta_{21}-\theta_{22})+K_e(t)r_{b21}\delta_1(t)=0
\end{cases}
$$
With $\delta_i(t)=(x_1-x_2)sin(\alpha)+(y_1-y_2)cos(\alpha)+\theta_{12}r_{b1}+\theta_{21}r_{b2}$ and $r_{bij}$ the base radius of pinions, $K_e$ is the varying meshing stiffness, mass $m_i = \pi r^2_{i}\rho$ for both pinions, and $I_{ij} = \frac{1}{2}m_{ij}r_{ij}^2$ for pinions and input/output inertia.
### Matrices
**Equation to solve :**
$$
[M]\{\ddot{q}\}+C\{\dot{q}\}+([Ks]+[K(t)])\{q\}=\{F_0\} \\
\{q\}=\{x_1,y_1,\theta_{11},\theta_{12},x_2,y_2,\theta_{22},\theta_{21}\}
$$
**Mass matrix :**
$$
M =
\begin{bmatrix}
m_1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & m_1 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & I_{11} & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & I_{12} & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & m_2 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & m_2 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & I_{22} & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & I_{21} \\
\end{bmatrix} \\
$$
With $m_1$ mass of shaft 1 and $m_2$ mass of shaft 2
**Variable mesh stiffness matrix**
$$
K(t)= K_e(t)
\begin{bmatrix}
sin(\alpha)^2 & sin(\alpha).cos(\alpha) & 0 & r_1.sin(\alpha) & -sin(\alpha)^2 & -sin(\alpha).cos(\alpha) & 0 & r_2.sin(\alpha) \\
sin(\alpha).cos(\alpha) & cos(\alpha)^2 & 0 & r_1.cos(\alpha) & -sin(\alpha).cos(\alpha) & -cos(\alpha)^2 & 0 & r_2.cos(\alpha) \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
r_1.sin(\alpha) & r_1.cos(\alpha) & 0 & r_1^2 & -r_1.sin(\alpha) & -r_1.cos(\alpha) & 0 & r_1.r_2 \\
-sin(\alpha)^2 & -sin(\alpha).cos(\alpha) & 0 & -r_1.sin(\alpha) & sin(\alpha)^2 & sin(\alpha).cos(\alpha) & 0 & -r_2.sin(\alpha) \\
-sin(\alpha).cos(\alpha) & -cos(\alpha)^2 & 0 & -r_1.cos(\alpha) & sin(\alpha).cos(\alpha) & cos(\alpha)^2 & 0 & -r_2.cos(\alpha) \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
r_2.sin(\alpha) & r_2.cos(\alpha) & 0 & r_1.r_2 & -r_2.sin(\alpha) & -r_2.cos(\alpha) & 0 & r_2^2 \\
\end{bmatrix}
$$
> [!NOTE]
>
> In matlab, cos and sin terms will be noted as $s_i$, for visual simplification
**Constant stiffness matrix**
$$
Ks=
\begin{bmatrix}
k_{x1} & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & k_{y1} & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & k_{\theta1}& -k_{\theta1} & 0 & 0 & 0 & 0 \\
0 & 0 & -k_{\theta1} & k_{\theta1} & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & k_{x1} & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & k_{y1} & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & k_{\theta2} & -k_{\theta2} \\
0 & 0 & 0 & 0 & 0 & 0 & -k_{\theta2} & k_{\theta2} \\
\end{bmatrix}
$$
**Damping matrix**
$$
C = \eta M+\beta K_{mean}
$$
**Forces**
$$
F =
\begin{bmatrix}
0 \\ 0 \\ T_{in} \\ 0 \\ 0\\ 0\\ T_{out}\\ 0
\end{bmatrix}
$$
## TO FIX
> [!ATTENTION]
> ...
## Machine specifications
Example of computational time : `44sec for fs=2500` / `n_periods = 10`
```
-`
.o+`
`ooo/ OS: Arch Linux x86_64
`+oooo: Host: 20EV000UFR ThinkPad E560
`+oooooo: Kernel: 6.19.8-arch1-1
-+oooooo+: Shell: zsh 5.9
`/:-:++oooo+: Terminal: kitty
`/++++/+++++++: CPU: Intel i5-6200U (4) @ 2.300GHz
`/++++++++++++++: GPU: Intel Skylake-U GT2 [HD Graphics 520]
`/+++ooooooooooooo/` Memory: 1703MiB / 3792MiB
./ooosssso++osssssso+`
.oossssso-````/ossssss+`
-osssssso. :ssssssso.
:osssssss/ osssso+++.
/ossssssss/ +ssssooo/-
`/ossssso+/:- -:/+osssso+-
`+sso+:-` `.-/+oso:
`++:. `-/+/
.` `/
```

View file

@ -0,0 +1,286 @@
---
Author: Antoine Foucault-Castelli
Date: 17/03/2026
Bibliography: @karmiFiabiliteOptimisationSystemes @ghorbelEffectBrakeLocation2020a @zhengAnalyticalApproachMesh2022
Version: 4.0
---
| Newmark | Value |
| ---------------- | ----- |
| Newmark $\gamma$ | |
| Newmark $\beta$ | |
| **Gears** | |
| $Z1$ | |
| $Z2$ | |
| $m_0$ | |
| $b$ | |
| $d_{i1}$ | |
| $d_{i_2}$ | |
| $N_1$ | |
| $\alpha$ | |
| $\rho_{steel}$ | |
| **Masses** | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
# Gearbox simulation
## Structure
```
main.m
func.m
time_sampling
inertia
gearbox_geometry
mesh_stiffness
wind_excitation
mass_matrix
stiffness_matrix
stiffness_update
damping_matrix
forces_matrix
initialization
newmark
parameters.m
display.m
disp_xy(t,x,i)
speed_xy(t,v,i)
acc_xy(t,v,i)
disp_theta(t,x,i)
speed_theta(t,v,i)
acc_theta(t,a,i)
mesh_stiffness(t,k_var,k_mean,i)
taero(t,T_aero,i)
rms_on_x(x)
spectral_on_x(x,i,tf,dt)
plot_x(t,x,i)
only_display.m
display_update.m
```
`main.m` is the launcher for the full code compilation
`func` is the function class, containing every function used in the code
`parameters` is the model parameters document
`display` is the displayer for figures
`only_display` to skip non-needed full compilation
`display_update` to update a single graph if needed
## How does it work ?
**For Matlab under windows :**
open matlab and launch main.m
> [!WARNING]
> remove `graphics_toolkit("gnuplot")` which is only useful for Octave visualization
**For Octave/Linux :**
```bash
cd [path_to_cloned]/code/versions/[current_version]/
octave
>>> run main.m
>>>
```
## Informations
- [x] Verified code with base code and paper
- [x] Implemented wind excitation
- [x] Implemented Ghorbel parameters
- [~] Add varying output torque depending on number of tooth in contact ?
- [~] add brake ?
- [~] Variation of C ?
- [~] ODE45 ?
- [x] Displays from last version (in class)
- [x] New mesh stiffness variation model (trapezoidal)
- [x] Print in pdf
- [ ] Errors/defects implementation
- [ ] profile error
- [ ] assembly defect (change on gear stiffness)
- [ ] README
- [x] Maths
- [ ] Source(s)
- [ ] Random models implementation
- [x] Display
- [x] time response on a2
- [x] speed response
- [x] x movement (vs y movement ?)
- [x] RMS STD Kurtosis
- [ ] Tests
- [ ] different speed
- [ ] different blade radii
## Maths
The model is represented by two 4DDL shafts in a gear connection : $x$ and $y$ are free at the pinion, $\theta$ is free at both ends of the shaft (input/output is $\theta_{ii}$ and meshing rotation is $\theta_{ij}$).
### Parameters
### Energy equations
$$
\frac{\partial Ep}{\partial q_i}+
\frac{d}{dt}\left(\frac{Ec}{\dot{q}_i}\right)-
\frac{\partial Ec}{\partial q_i}+
\frac{\partial D}{\partial \dot{q}_i}
=\frac{W}{\partial q_i}
\\
Ec = \frac{1}{2}m_1*\dot{x}_1^2+
\frac{1}{2}m_1*\dot{y}_1^2+
\frac{1}{2}I_{11}\dot{\theta}_{11}^2+
\frac{1}{2}I_{12}\dot{\theta}_{12}^2+
\frac{1}{2}m_2*\dot{x_2}^2+
\frac{1}{2}m_2*\dot{y_2}^2+
\frac{1}{2}I_{22}\dot{\theta}_{22}^2+
\frac{1}{2}I_{21}\dot{\theta}_{21}^2
\\
Ep = \frac{1}{2}k_{x_1}x_{1}^2+
\frac{1}{2}k_{y_1}y_{1}^2+
\frac{1}{2}k_{\theta_1}(\theta_{11}-\theta_{12})^2+
\frac{1}{2}k_{x_2}x_{2}^2+
\frac{1}{2}k_{y_2}y_{2}^2+
\frac{1}{2}k_{\theta_2}(\theta_{21}-\theta_{22})^2+
\frac{1}{2}K_e(t)\delta_1^2(t)
$$
### Equations of movement
$Ep$ and $Ec$ are separated between the two shaft (1 and 2)
$$
\begin{cases}
&\frac{\partial Ep_1}{\partial x_1}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{x}_1}\right)=m_1\ddot{x}_1+k_{x1}x_1+sin(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial y_1}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{y}_1}\right)=m_1\ddot{y}_1+k_{y1}y_1+cos(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial \theta_{11}}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{\theta}_{11}}\right)=I_{11}\ddot{\theta}_{11}+k_{\theta 1}(\theta_{11}-\theta_{12})=Cm \\
&\frac{\partial Ep_1}{\partial \theta_{12}}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{\theta}_{12}}\right)=I_{12}\ddot{\theta}_{12}+k_{\theta 1}(\theta_{12}-\theta_{11})+K_e(t)r_{b12}\delta_1(t)=0 \\
&\frac{\partial Ep_1}{\partial x_2}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{x}_2}\right)=m_2\ddot{x}_2+k_{x2}x_2-sin(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial y_2}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{y}_2}\right)=m_2\ddot{y}_2+k_{y2}y_2-cos(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial \theta_{22}}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{\theta}_{22}}\right)=I_{22}\ddot{\theta}_{22}-k_{\theta 2}(\theta_{21}-\theta_{22})=-Cr \\
&\frac{\partial Ep_1}{\partial \theta_{21}}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{\theta}_{21}}\right)=I_{21}\ddot{\theta}_{21}-k_{\theta 2}(\theta_{21}-\theta_{22})+K_e(t)r_{b21}\delta_1(t)=0
\end{cases}
$$
With $\delta_i(t)=(x_1-x_2)sin(\alpha)+(y_1-y_2)cos(\alpha)+\theta_{12}r_{b1}+\theta_{21}r_{b2}$ and $r_{bij}$ the base radius of pinions, $K_e$ is the varying meshing stiffness, mass $m_i = \pi r^2_{i}\rho$ for both pinions, and $I_{ij} = \frac{1}{2}m_{ij}r_{ij}^2$ for pinions and input/output inertia.
### Matrices
**Equation to solve :**
$$
[M]\{\ddot{q}\}+C\{\dot{q}\}+([Ks]+[K(t)])\{q\}=\{F_0\} \\
\{q\}=\{x_1,y_1,\theta_{11},\theta_{12},x_2,y_2,\theta_{22},\theta_{21}\}
$$
**Mass matrix :**
$$
M =
\begin{bmatrix}
m_1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & m_1 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & I_{11} & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & I_{12} & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & m_2 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & m_2 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & I_{22} & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & I_{21} \\
\end{bmatrix} \\
$$
With $m_1$ mass of shaft 1 and $m_2$ mass of shaft 2
**Variable mesh stiffness matrix**
$$
K(t)= K_e(t)
\begin{bmatrix}
sin(\alpha)^2 & sin(\alpha).cos(\alpha) & 0 & r_1.sin(\alpha) & -sin(\alpha)^2 & -sin(\alpha).cos(\alpha) & 0 & r_2.sin(\alpha) \\
sin(\alpha).cos(\alpha) & cos(\alpha)^2 & 0 & r_1.cos(\alpha) & -sin(\alpha).cos(\alpha) & -cos(\alpha)^2 & 0 & r_2.cos(\alpha) \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
r_1.sin(\alpha) & r_1.cos(\alpha) & 0 & r_1^2 & -r_1.sin(\alpha) & -r_1.cos(\alpha) & 0 & r_1.r_2 \\
-sin(\alpha)^2 & -sin(\alpha).cos(\alpha) & 0 & -r_1.sin(\alpha) & sin(\alpha)^2 & sin(\alpha).cos(\alpha) & 0 & -r_2.sin(\alpha) \\
-sin(\alpha).cos(\alpha) & -cos(\alpha)^2 & 0 & -r_1.cos(\alpha) & sin(\alpha).cos(\alpha) & cos(\alpha)^2 & 0 & -r_2.cos(\alpha) \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
r_2.sin(\alpha) & r_2.cos(\alpha) & 0 & r_1.r_2 & -r_2.sin(\alpha) & -r_2.cos(\alpha) & 0 & r_2^2 \\
\end{bmatrix}
$$
> [!NOTE]
>
> In matlab, cos and sin terms will be noted as $s_i$, for visual simplification
**Constant stiffness matrix**
$$
Ks=
\begin{bmatrix}
k_{x1} & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & k_{y1} & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & k_{\theta1}& -k_{\theta1} & 0 & 0 & 0 & 0 \\
0 & 0 & -k_{\theta1} & k_{\theta1} & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & k_{x1} & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & k_{y1} & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & k_{\theta2} & -k_{\theta2} \\
0 & 0 & 0 & 0 & 0 & 0 & -k_{\theta2} & k_{\theta2} \\
\end{bmatrix}
$$
**Damping matrix**
$$
C = \eta M+\beta K_{mean}
$$
**Forces**
$$
F =
\begin{bmatrix}
0 \\ 0 \\ T_{in} \\ 0 \\ 0\\ 0\\ T_{out}\\ 0
\end{bmatrix}
$$
## TO FIX
> [!ATTENTION]
> ...
## Machine specifications
Example of computational time : `44sec for fs=2500` / `n_periods = 10`
```
-`
.o+`
`ooo/ OS: Arch Linux x86_64
`+oooo: Host: 20EV000UFR ThinkPad E560
`+oooooo: Kernel: 6.19.8-arch1-1
-+oooooo+: Shell: zsh 5.9
`/:-:++oooo+: Terminal: kitty
`/++++/+++++++: CPU: Intel i5-6200U (4) @ 2.300GHz
`/++++++++++++++: GPU: Intel Skylake-U GT2 [HD Graphics 520]
`/+++ooooooooooooo/` Memory: 1703MiB / 3792MiB
./ooosssso++osssssso+`
.oossssso-````/ossssss+`
-osssssso. :ssssssso.
:osssssss/ osssso+++.
/ossssssss/ +ssssooo/-
`/ossssso+/:- -:/+osssso+-
`+sso+:-` `.-/+oso:
`++:. `-/+/
.` `/
```

View file

@ -0,0 +1,286 @@
---
Author: Antoine Foucault-Castelli
Date: 17/03/2026
Bibliography: @karmiFiabiliteOptimisationSystemes @ghorbelEffectBrakeLocation2020a @zhengAnalyticalApproachMesh2022
Version: 4.0
---
| Newmark | Value |
| ---------------- | --------- |
| Newmark $\gamma$ | |
| Newmark $\beta$ | |
| **Gears** | **Value** |
| $Z1$ | |
| $Z2$ | |
| $m_0$ | |
| $b$ | |
| $d_{i1}$ | |
| $d_{i_2}$ | |
| $N_1$ | |
| $\alpha$ | |
| $\rho_{steel}$ | |
| **Masses** | **Value** |
| $$ | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
# Gearbox simulation
## Structure
```
main.m
func.m
time_sampling
inertia
gearbox_geometry
mesh_stiffness
wind_excitation
mass_matrix
stiffness_matrix
stiffness_update
damping_matrix
forces_matrix
initialization
newmark
parameters.m
display.m
disp_xy(t,x,i)
speed_xy(t,v,i)
acc_xy(t,v,i)
disp_theta(t,x,i)
speed_theta(t,v,i)
acc_theta(t,a,i)
mesh_stiffness(t,k_var,k_mean,i)
taero(t,T_aero,i)
rms_on_x(x)
spectral_on_x(x,i,tf,dt)
plot_x(t,x,i)
only_display.m
display_update.m
```
`main.m` is the launcher for the full code compilation
`func` is the function class, containing every function used in the code
`parameters` is the model parameters document
`display` is the displayer for figures
`only_display` to skip non-needed full compilation
`display_update` to update a single graph if needed
## How does it work ?
**For Matlab under windows :**
open matlab and launch main.m
> [!WARNING]
> remove `graphics_toolkit("gnuplot")` which is only useful for Octave visualization
**For Octave/Linux :**
```bash
cd [path_to_cloned]/code/versions/[current_version]/
octave
>>> run main.m
>>>
```
## Informations
- [x] Verified code with base code and paper
- [x] Implemented wind excitation
- [x] Implemented Ghorbel parameters
- [~] Add varying output torque depending on number of tooth in contact ?
- [~] add brake ?
- [~] Variation of C ?
- [~] ODE45 ?
- [x] Displays from last version (in class)
- [x] New mesh stiffness variation model (trapezoidal)
- [x] Print in pdf
- [ ] Errors/defects implementation
- [ ] profile error
- [ ] assembly defect (change on gear stiffness)
- [ ] README
- [x] Maths
- [ ] Source(s)
- [ ] Random models implementation
- [x] Display
- [x] time response on a2
- [x] speed response
- [x] x movement (vs y movement ?)
- [x] RMS STD Kurtosis
- [ ] Tests
- [ ] different speed
- [ ] different blade radii
## Maths
The model is represented by two 4DDL shafts in a gear connection : $x$ and $y$ are free at the pinion, $\theta$ is free at both ends of the shaft (input/output is $\theta_{ii}$ and meshing rotation is $\theta_{ij}$).
### Parameters
### Energy equations
$$
\frac{\partial Ep}{\partial q_i}+
\frac{d}{dt}\left(\frac{Ec}{\dot{q}_i}\right)-
\frac{\partial Ec}{\partial q_i}+
\frac{\partial D}{\partial \dot{q}_i}
=\frac{W}{\partial q_i}
\\
Ec = \frac{1}{2}m_1*\dot{x}_1^2+
\frac{1}{2}m_1*\dot{y}_1^2+
\frac{1}{2}I_{11}\dot{\theta}_{11}^2+
\frac{1}{2}I_{12}\dot{\theta}_{12}^2+
\frac{1}{2}m_2*\dot{x_2}^2+
\frac{1}{2}m_2*\dot{y_2}^2+
\frac{1}{2}I_{22}\dot{\theta}_{22}^2+
\frac{1}{2}I_{21}\dot{\theta}_{21}^2
\\
Ep = \frac{1}{2}k_{x_1}x_{1}^2+
\frac{1}{2}k_{y_1}y_{1}^2+
\frac{1}{2}k_{\theta_1}(\theta_{11}-\theta_{12})^2+
\frac{1}{2}k_{x_2}x_{2}^2+
\frac{1}{2}k_{y_2}y_{2}^2+
\frac{1}{2}k_{\theta_2}(\theta_{21}-\theta_{22})^2+
\frac{1}{2}K_e(t)\delta_1^2(t)
$$
### Equations of movement
$Ep$ and $Ec$ are separated between the two shaft (1 and 2)
$$
\begin{cases}
&\frac{\partial Ep_1}{\partial x_1}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{x}_1}\right)=m_1\ddot{x}_1+k_{x1}x_1+sin(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial y_1}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{y}_1}\right)=m_1\ddot{y}_1+k_{y1}y_1+cos(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial \theta_{11}}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{\theta}_{11}}\right)=I_{11}\ddot{\theta}_{11}+k_{\theta 1}(\theta_{11}-\theta_{12})=Cm \\
&\frac{\partial Ep_1}{\partial \theta_{12}}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{\theta}_{12}}\right)=I_{12}\ddot{\theta}_{12}+k_{\theta 1}(\theta_{12}-\theta_{11})+K_e(t)r_{b12}\delta_1(t)=0 \\
&\frac{\partial Ep_1}{\partial x_2}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{x}_2}\right)=m_2\ddot{x}_2+k_{x2}x_2-sin(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial y_2}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{y}_2}\right)=m_2\ddot{y}_2+k_{y2}y_2-cos(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial \theta_{22}}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{\theta}_{22}}\right)=I_{22}\ddot{\theta}_{22}-k_{\theta 2}(\theta_{21}-\theta_{22})=-Cr \\
&\frac{\partial Ep_1}{\partial \theta_{21}}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{\theta}_{21}}\right)=I_{21}\ddot{\theta}_{21}-k_{\theta 2}(\theta_{21}-\theta_{22})+K_e(t)r_{b21}\delta_1(t)=0
\end{cases}
$$
With $\delta_i(t)=(x_1-x_2)sin(\alpha)+(y_1-y_2)cos(\alpha)+\theta_{12}r_{b1}+\theta_{21}r_{b2}$ and $r_{bij}$ the base radius of pinions, $K_e$ is the varying meshing stiffness, mass $m_i = \pi r^2_{i}\rho$ for both pinions, and $I_{ij} = \frac{1}{2}m_{ij}r_{ij}^2$ for pinions and input/output inertia.
### Matrices
**Equation to solve :**
$$
[M]\{\ddot{q}\}+C\{\dot{q}\}+([Ks]+[K(t)])\{q\}=\{F_0\} \\
\{q\}=\{x_1,y_1,\theta_{11},\theta_{12},x_2,y_2,\theta_{22},\theta_{21}\}
$$
**Mass matrix :**
$$
M =
\begin{bmatrix}
m_1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & m_1 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & I_{11} & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & I_{12} & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & m_2 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & m_2 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & I_{22} & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & I_{21} \\
\end{bmatrix} \\
$$
With $m_1$ mass of shaft 1 and $m_2$ mass of shaft 2
**Variable mesh stiffness matrix**
$$
K(t)= K_e(t)
\begin{bmatrix}
sin(\alpha)^2 & sin(\alpha).cos(\alpha) & 0 & r_1.sin(\alpha) & -sin(\alpha)^2 & -sin(\alpha).cos(\alpha) & 0 & r_2.sin(\alpha) \\
sin(\alpha).cos(\alpha) & cos(\alpha)^2 & 0 & r_1.cos(\alpha) & -sin(\alpha).cos(\alpha) & -cos(\alpha)^2 & 0 & r_2.cos(\alpha) \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
r_1.sin(\alpha) & r_1.cos(\alpha) & 0 & r_1^2 & -r_1.sin(\alpha) & -r_1.cos(\alpha) & 0 & r_1.r_2 \\
-sin(\alpha)^2 & -sin(\alpha).cos(\alpha) & 0 & -r_1.sin(\alpha) & sin(\alpha)^2 & sin(\alpha).cos(\alpha) & 0 & -r_2.sin(\alpha) \\
-sin(\alpha).cos(\alpha) & -cos(\alpha)^2 & 0 & -r_1.cos(\alpha) & sin(\alpha).cos(\alpha) & cos(\alpha)^2 & 0 & -r_2.cos(\alpha) \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
r_2.sin(\alpha) & r_2.cos(\alpha) & 0 & r_1.r_2 & -r_2.sin(\alpha) & -r_2.cos(\alpha) & 0 & r_2^2 \\
\end{bmatrix}
$$
> [!NOTE]
>
> In matlab, cos and sin terms will be noted as $s_i$, for visual simplification
**Constant stiffness matrix**
$$
Ks=
\begin{bmatrix}
k_{x1} & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & k_{y1} & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & k_{\theta1}& -k_{\theta1} & 0 & 0 & 0 & 0 \\
0 & 0 & -k_{\theta1} & k_{\theta1} & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & k_{x1} & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & k_{y1} & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & k_{\theta2} & -k_{\theta2} \\
0 & 0 & 0 & 0 & 0 & 0 & -k_{\theta2} & k_{\theta2} \\
\end{bmatrix}
$$
**Damping matrix**
$$
C = \eta M+\beta K_{mean}
$$
**Forces**
$$
F =
\begin{bmatrix}
0 \\ 0 \\ T_{in} \\ 0 \\ 0\\ 0\\ T_{out}\\ 0
\end{bmatrix}
$$
## TO FIX
> [!ATTENTION]
> ...
## Machine specifications
Example of computational time : `44sec for fs=2500` / `n_periods = 10`
```
-`
.o+`
`ooo/ OS: Arch Linux x86_64
`+oooo: Host: 20EV000UFR ThinkPad E560
`+oooooo: Kernel: 6.19.8-arch1-1
-+oooooo+: Shell: zsh 5.9
`/:-:++oooo+: Terminal: kitty
`/++++/+++++++: CPU: Intel i5-6200U (4) @ 2.300GHz
`/++++++++++++++: GPU: Intel Skylake-U GT2 [HD Graphics 520]
`/+++ooooooooooooo/` Memory: 1703MiB / 3792MiB
./ooosssso++osssssso+`
.oossssso-````/ossssss+`
-osssssso. :ssssssso.
:osssssss/ osssso+++.
/ossssssss/ +ssssooo/-
`/ossssso+/:- -:/+osssso+-
`+sso+:-` `.-/+oso:
`++:. `-/+/
.` `/
```

View file

@ -0,0 +1,286 @@
---
Author: Antoine Foucault-Castelli
Date: 17/03/2026
Bibliography: @karmiFiabiliteOptimisationSystemes @ghorbelEffectBrakeLocation2020a @zhengAnalyticalApproachMesh2022
Version: 4.0
---
| Newmark | Value |
| ---------------- | --------- |
| Newmark $\gamma$ | |
| Newmark $\beta$ | |
| **Gears** | **Value** |
| $Z1$ | |
| $Z2$ | |
| $m_0$ | |
| $b$ | |
| $d_{i1}$ | |
| $d_{i_2}$ | |
| $N_1$ | |
| $\alpha$ | |
| $\rho_{steel}$ | |
| **Masses** | **Value** |
| $m_{input}$ | |
| $m_{pinion}$ | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
# Gearbox simulation
## Structure
```
main.m
func.m
time_sampling
inertia
gearbox_geometry
mesh_stiffness
wind_excitation
mass_matrix
stiffness_matrix
stiffness_update
damping_matrix
forces_matrix
initialization
newmark
parameters.m
display.m
disp_xy(t,x,i)
speed_xy(t,v,i)
acc_xy(t,v,i)
disp_theta(t,x,i)
speed_theta(t,v,i)
acc_theta(t,a,i)
mesh_stiffness(t,k_var,k_mean,i)
taero(t,T_aero,i)
rms_on_x(x)
spectral_on_x(x,i,tf,dt)
plot_x(t,x,i)
only_display.m
display_update.m
```
`main.m` is the launcher for the full code compilation
`func` is the function class, containing every function used in the code
`parameters` is the model parameters document
`display` is the displayer for figures
`only_display` to skip non-needed full compilation
`display_update` to update a single graph if needed
## How does it work ?
**For Matlab under windows :**
open matlab and launch main.m
> [!WARNING]
> remove `graphics_toolkit("gnuplot")` which is only useful for Octave visualization
**For Octave/Linux :**
```bash
cd [path_to_cloned]/code/versions/[current_version]/
octave
>>> run main.m
>>>
```
## Informations
- [x] Verified code with base code and paper
- [x] Implemented wind excitation
- [x] Implemented Ghorbel parameters
- [~] Add varying output torque depending on number of tooth in contact ?
- [~] add brake ?
- [~] Variation of C ?
- [~] ODE45 ?
- [x] Displays from last version (in class)
- [x] New mesh stiffness variation model (trapezoidal)
- [x] Print in pdf
- [ ] Errors/defects implementation
- [ ] profile error
- [ ] assembly defect (change on gear stiffness)
- [ ] README
- [x] Maths
- [ ] Source(s)
- [ ] Random models implementation
- [x] Display
- [x] time response on a2
- [x] speed response
- [x] x movement (vs y movement ?)
- [x] RMS STD Kurtosis
- [ ] Tests
- [ ] different speed
- [ ] different blade radii
## Maths
The model is represented by two 4DDL shafts in a gear connection : $x$ and $y$ are free at the pinion, $\theta$ is free at both ends of the shaft (input/output is $\theta_{ii}$ and meshing rotation is $\theta_{ij}$).
### Parameters
### Energy equations
$$
\frac{\partial Ep}{\partial q_i}+
\frac{d}{dt}\left(\frac{Ec}{\dot{q}_i}\right)-
\frac{\partial Ec}{\partial q_i}+
\frac{\partial D}{\partial \dot{q}_i}
=\frac{W}{\partial q_i}
\\
Ec = \frac{1}{2}m_1*\dot{x}_1^2+
\frac{1}{2}m_1*\dot{y}_1^2+
\frac{1}{2}I_{11}\dot{\theta}_{11}^2+
\frac{1}{2}I_{12}\dot{\theta}_{12}^2+
\frac{1}{2}m_2*\dot{x_2}^2+
\frac{1}{2}m_2*\dot{y_2}^2+
\frac{1}{2}I_{22}\dot{\theta}_{22}^2+
\frac{1}{2}I_{21}\dot{\theta}_{21}^2
\\
Ep = \frac{1}{2}k_{x_1}x_{1}^2+
\frac{1}{2}k_{y_1}y_{1}^2+
\frac{1}{2}k_{\theta_1}(\theta_{11}-\theta_{12})^2+
\frac{1}{2}k_{x_2}x_{2}^2+
\frac{1}{2}k_{y_2}y_{2}^2+
\frac{1}{2}k_{\theta_2}(\theta_{21}-\theta_{22})^2+
\frac{1}{2}K_e(t)\delta_1^2(t)
$$
### Equations of movement
$Ep$ and $Ec$ are separated between the two shaft (1 and 2)
$$
\begin{cases}
&\frac{\partial Ep_1}{\partial x_1}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{x}_1}\right)=m_1\ddot{x}_1+k_{x1}x_1+sin(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial y_1}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{y}_1}\right)=m_1\ddot{y}_1+k_{y1}y_1+cos(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial \theta_{11}}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{\theta}_{11}}\right)=I_{11}\ddot{\theta}_{11}+k_{\theta 1}(\theta_{11}-\theta_{12})=Cm \\
&\frac{\partial Ep_1}{\partial \theta_{12}}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{\theta}_{12}}\right)=I_{12}\ddot{\theta}_{12}+k_{\theta 1}(\theta_{12}-\theta_{11})+K_e(t)r_{b12}\delta_1(t)=0 \\
&\frac{\partial Ep_1}{\partial x_2}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{x}_2}\right)=m_2\ddot{x}_2+k_{x2}x_2-sin(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial y_2}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{y}_2}\right)=m_2\ddot{y}_2+k_{y2}y_2-cos(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial \theta_{22}}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{\theta}_{22}}\right)=I_{22}\ddot{\theta}_{22}-k_{\theta 2}(\theta_{21}-\theta_{22})=-Cr \\
&\frac{\partial Ep_1}{\partial \theta_{21}}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{\theta}_{21}}\right)=I_{21}\ddot{\theta}_{21}-k_{\theta 2}(\theta_{21}-\theta_{22})+K_e(t)r_{b21}\delta_1(t)=0
\end{cases}
$$
With $\delta_i(t)=(x_1-x_2)sin(\alpha)+(y_1-y_2)cos(\alpha)+\theta_{12}r_{b1}+\theta_{21}r_{b2}$ and $r_{bij}$ the base radius of pinions, $K_e$ is the varying meshing stiffness, mass $m_i = \pi r^2_{i}\rho$ for both pinions, and $I_{ij} = \frac{1}{2}m_{ij}r_{ij}^2$ for pinions and input/output inertia.
### Matrices
**Equation to solve :**
$$
[M]\{\ddot{q}\}+C\{\dot{q}\}+([Ks]+[K(t)])\{q\}=\{F_0\} \\
\{q\}=\{x_1,y_1,\theta_{11},\theta_{12},x_2,y_2,\theta_{22},\theta_{21}\}
$$
**Mass matrix :**
$$
M =
\begin{bmatrix}
m_1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & m_1 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & I_{11} & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & I_{12} & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & m_2 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & m_2 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & I_{22} & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & I_{21} \\
\end{bmatrix} \\
$$
With $m_1$ mass of shaft 1 and $m_2$ mass of shaft 2
**Variable mesh stiffness matrix**
$$
K(t)= K_e(t)
\begin{bmatrix}
sin(\alpha)^2 & sin(\alpha).cos(\alpha) & 0 & r_1.sin(\alpha) & -sin(\alpha)^2 & -sin(\alpha).cos(\alpha) & 0 & r_2.sin(\alpha) \\
sin(\alpha).cos(\alpha) & cos(\alpha)^2 & 0 & r_1.cos(\alpha) & -sin(\alpha).cos(\alpha) & -cos(\alpha)^2 & 0 & r_2.cos(\alpha) \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
r_1.sin(\alpha) & r_1.cos(\alpha) & 0 & r_1^2 & -r_1.sin(\alpha) & -r_1.cos(\alpha) & 0 & r_1.r_2 \\
-sin(\alpha)^2 & -sin(\alpha).cos(\alpha) & 0 & -r_1.sin(\alpha) & sin(\alpha)^2 & sin(\alpha).cos(\alpha) & 0 & -r_2.sin(\alpha) \\
-sin(\alpha).cos(\alpha) & -cos(\alpha)^2 & 0 & -r_1.cos(\alpha) & sin(\alpha).cos(\alpha) & cos(\alpha)^2 & 0 & -r_2.cos(\alpha) \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
r_2.sin(\alpha) & r_2.cos(\alpha) & 0 & r_1.r_2 & -r_2.sin(\alpha) & -r_2.cos(\alpha) & 0 & r_2^2 \\
\end{bmatrix}
$$
> [!NOTE]
>
> In matlab, cos and sin terms will be noted as $s_i$, for visual simplification
**Constant stiffness matrix**
$$
Ks=
\begin{bmatrix}
k_{x1} & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & k_{y1} & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & k_{\theta1}& -k_{\theta1} & 0 & 0 & 0 & 0 \\
0 & 0 & -k_{\theta1} & k_{\theta1} & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & k_{x1} & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & k_{y1} & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & k_{\theta2} & -k_{\theta2} \\
0 & 0 & 0 & 0 & 0 & 0 & -k_{\theta2} & k_{\theta2} \\
\end{bmatrix}
$$
**Damping matrix**
$$
C = \eta M+\beta K_{mean}
$$
**Forces**
$$
F =
\begin{bmatrix}
0 \\ 0 \\ T_{in} \\ 0 \\ 0\\ 0\\ T_{out}\\ 0
\end{bmatrix}
$$
## TO FIX
> [!ATTENTION]
> ...
## Machine specifications
Example of computational time : `44sec for fs=2500` / `n_periods = 10`
```
-`
.o+`
`ooo/ OS: Arch Linux x86_64
`+oooo: Host: 20EV000UFR ThinkPad E560
`+oooooo: Kernel: 6.19.8-arch1-1
-+oooooo+: Shell: zsh 5.9
`/:-:++oooo+: Terminal: kitty
`/++++/+++++++: CPU: Intel i5-6200U (4) @ 2.300GHz
`/++++++++++++++: GPU: Intel Skylake-U GT2 [HD Graphics 520]
`/+++ooooooooooooo/` Memory: 1703MiB / 3792MiB
./ooosssso++osssssso+`
.oossssso-````/ossssss+`
-osssssso. :ssssssso.
:osssssss/ osssso+++.
/ossssssss/ +ssssooo/-
`/ossssso+/:- -:/+osssso+-
`+sso+:-` `.-/+oso:
`++:. `-/+/
.` `/
```

View file

@ -0,0 +1,286 @@
---
Author: Antoine Foucault-Castelli
Date: 17/03/2026
Bibliography: @karmiFiabiliteOptimisationSystemes @ghorbelEffectBrakeLocation2020a @zhengAnalyticalApproachMesh2022
Version: 4.0
---
| Newmark | Value |
| ---------------- | --------- |
| Newmark $\gamma$ | |
| Newmark $\beta$ | |
| **Gears** | **Value** |
| $Z1$ | |
| $Z2$ | |
| $m_0$ | |
| $b$ | |
| $d_{i1}$ | |
| $d_{i_2}$ | |
| $N_1$ | |
| $\alpha$ | |
| $\rho_{steel}$ | |
| **Masses** | **Value** |
| $m_{in}$ | |
| $m_{12}$ | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
# Gearbox simulation
## Structure
```
main.m
func.m
time_sampling
inertia
gearbox_geometry
mesh_stiffness
wind_excitation
mass_matrix
stiffness_matrix
stiffness_update
damping_matrix
forces_matrix
initialization
newmark
parameters.m
display.m
disp_xy(t,x,i)
speed_xy(t,v,i)
acc_xy(t,v,i)
disp_theta(t,x,i)
speed_theta(t,v,i)
acc_theta(t,a,i)
mesh_stiffness(t,k_var,k_mean,i)
taero(t,T_aero,i)
rms_on_x(x)
spectral_on_x(x,i,tf,dt)
plot_x(t,x,i)
only_display.m
display_update.m
```
`main.m` is the launcher for the full code compilation
`func` is the function class, containing every function used in the code
`parameters` is the model parameters document
`display` is the displayer for figures
`only_display` to skip non-needed full compilation
`display_update` to update a single graph if needed
## How does it work ?
**For Matlab under windows :**
open matlab and launch main.m
> [!WARNING]
> remove `graphics_toolkit("gnuplot")` which is only useful for Octave visualization
**For Octave/Linux :**
```bash
cd [path_to_cloned]/code/versions/[current_version]/
octave
>>> run main.m
>>>
```
## Informations
- [x] Verified code with base code and paper
- [x] Implemented wind excitation
- [x] Implemented Ghorbel parameters
- [~] Add varying output torque depending on number of tooth in contact ?
- [~] add brake ?
- [~] Variation of C ?
- [~] ODE45 ?
- [x] Displays from last version (in class)
- [x] New mesh stiffness variation model (trapezoidal)
- [x] Print in pdf
- [ ] Errors/defects implementation
- [ ] profile error
- [ ] assembly defect (change on gear stiffness)
- [ ] README
- [x] Maths
- [ ] Source(s)
- [ ] Random models implementation
- [x] Display
- [x] time response on a2
- [x] speed response
- [x] x movement (vs y movement ?)
- [x] RMS STD Kurtosis
- [ ] Tests
- [ ] different speed
- [ ] different blade radii
## Maths
The model is represented by two 4DDL shafts in a gear connection : $x$ and $y$ are free at the pinion, $\theta$ is free at both ends of the shaft (input/output is $\theta_{ii}$ and meshing rotation is $\theta_{ij}$).
### Parameters
### Energy equations
$$
\frac{\partial Ep}{\partial q_i}+
\frac{d}{dt}\left(\frac{Ec}{\dot{q}_i}\right)-
\frac{\partial Ec}{\partial q_i}+
\frac{\partial D}{\partial \dot{q}_i}
=\frac{W}{\partial q_i}
\\
Ec = \frac{1}{2}m_1*\dot{x}_1^2+
\frac{1}{2}m_1*\dot{y}_1^2+
\frac{1}{2}I_{11}\dot{\theta}_{11}^2+
\frac{1}{2}I_{12}\dot{\theta}_{12}^2+
\frac{1}{2}m_2*\dot{x_2}^2+
\frac{1}{2}m_2*\dot{y_2}^2+
\frac{1}{2}I_{22}\dot{\theta}_{22}^2+
\frac{1}{2}I_{21}\dot{\theta}_{21}^2
\\
Ep = \frac{1}{2}k_{x_1}x_{1}^2+
\frac{1}{2}k_{y_1}y_{1}^2+
\frac{1}{2}k_{\theta_1}(\theta_{11}-\theta_{12})^2+
\frac{1}{2}k_{x_2}x_{2}^2+
\frac{1}{2}k_{y_2}y_{2}^2+
\frac{1}{2}k_{\theta_2}(\theta_{21}-\theta_{22})^2+
\frac{1}{2}K_e(t)\delta_1^2(t)
$$
### Equations of movement
$Ep$ and $Ec$ are separated between the two shaft (1 and 2)
$$
\begin{cases}
&\frac{\partial Ep_1}{\partial x_1}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{x}_1}\right)=m_1\ddot{x}_1+k_{x1}x_1+sin(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial y_1}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{y}_1}\right)=m_1\ddot{y}_1+k_{y1}y_1+cos(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial \theta_{11}}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{\theta}_{11}}\right)=I_{11}\ddot{\theta}_{11}+k_{\theta 1}(\theta_{11}-\theta_{12})=Cm \\
&\frac{\partial Ep_1}{\partial \theta_{12}}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{\theta}_{12}}\right)=I_{12}\ddot{\theta}_{12}+k_{\theta 1}(\theta_{12}-\theta_{11})+K_e(t)r_{b12}\delta_1(t)=0 \\
&\frac{\partial Ep_1}{\partial x_2}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{x}_2}\right)=m_2\ddot{x}_2+k_{x2}x_2-sin(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial y_2}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{y}_2}\right)=m_2\ddot{y}_2+k_{y2}y_2-cos(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial \theta_{22}}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{\theta}_{22}}\right)=I_{22}\ddot{\theta}_{22}-k_{\theta 2}(\theta_{21}-\theta_{22})=-Cr \\
&\frac{\partial Ep_1}{\partial \theta_{21}}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{\theta}_{21}}\right)=I_{21}\ddot{\theta}_{21}-k_{\theta 2}(\theta_{21}-\theta_{22})+K_e(t)r_{b21}\delta_1(t)=0
\end{cases}
$$
With $\delta_i(t)=(x_1-x_2)sin(\alpha)+(y_1-y_2)cos(\alpha)+\theta_{12}r_{b1}+\theta_{21}r_{b2}$ and $r_{bij}$ the base radius of pinions, $K_e$ is the varying meshing stiffness, mass $m_i = \pi r^2_{i}\rho$ for both pinions, and $I_{ij} = \frac{1}{2}m_{ij}r_{ij}^2$ for pinions and input/output inertia.
### Matrices
**Equation to solve :**
$$
[M]\{\ddot{q}\}+C\{\dot{q}\}+([Ks]+[K(t)])\{q\}=\{F_0\} \\
\{q\}=\{x_1,y_1,\theta_{11},\theta_{12},x_2,y_2,\theta_{22},\theta_{21}\}
$$
**Mass matrix :**
$$
M =
\begin{bmatrix}
m_1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & m_1 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & I_{11} & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & I_{12} & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & m_2 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & m_2 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & I_{22} & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & I_{21} \\
\end{bmatrix} \\
$$
With $m_1$ mass of shaft 1 and $m_2$ mass of shaft 2
**Variable mesh stiffness matrix**
$$
K(t)= K_e(t)
\begin{bmatrix}
sin(\alpha)^2 & sin(\alpha).cos(\alpha) & 0 & r_1.sin(\alpha) & -sin(\alpha)^2 & -sin(\alpha).cos(\alpha) & 0 & r_2.sin(\alpha) \\
sin(\alpha).cos(\alpha) & cos(\alpha)^2 & 0 & r_1.cos(\alpha) & -sin(\alpha).cos(\alpha) & -cos(\alpha)^2 & 0 & r_2.cos(\alpha) \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
r_1.sin(\alpha) & r_1.cos(\alpha) & 0 & r_1^2 & -r_1.sin(\alpha) & -r_1.cos(\alpha) & 0 & r_1.r_2 \\
-sin(\alpha)^2 & -sin(\alpha).cos(\alpha) & 0 & -r_1.sin(\alpha) & sin(\alpha)^2 & sin(\alpha).cos(\alpha) & 0 & -r_2.sin(\alpha) \\
-sin(\alpha).cos(\alpha) & -cos(\alpha)^2 & 0 & -r_1.cos(\alpha) & sin(\alpha).cos(\alpha) & cos(\alpha)^2 & 0 & -r_2.cos(\alpha) \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
r_2.sin(\alpha) & r_2.cos(\alpha) & 0 & r_1.r_2 & -r_2.sin(\alpha) & -r_2.cos(\alpha) & 0 & r_2^2 \\
\end{bmatrix}
$$
> [!NOTE]
>
> In matlab, cos and sin terms will be noted as $s_i$, for visual simplification
**Constant stiffness matrix**
$$
Ks=
\begin{bmatrix}
k_{x1} & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & k_{y1} & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & k_{\theta1}& -k_{\theta1} & 0 & 0 & 0 & 0 \\
0 & 0 & -k_{\theta1} & k_{\theta1} & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & k_{x1} & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & k_{y1} & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & k_{\theta2} & -k_{\theta2} \\
0 & 0 & 0 & 0 & 0 & 0 & -k_{\theta2} & k_{\theta2} \\
\end{bmatrix}
$$
**Damping matrix**
$$
C = \eta M+\beta K_{mean}
$$
**Forces**
$$
F =
\begin{bmatrix}
0 \\ 0 \\ T_{in} \\ 0 \\ 0\\ 0\\ T_{out}\\ 0
\end{bmatrix}
$$
## TO FIX
> [!ATTENTION]
> ...
## Machine specifications
Example of computational time : `44sec for fs=2500` / `n_periods = 10`
```
-`
.o+`
`ooo/ OS: Arch Linux x86_64
`+oooo: Host: 20EV000UFR ThinkPad E560
`+oooooo: Kernel: 6.19.8-arch1-1
-+oooooo+: Shell: zsh 5.9
`/:-:++oooo+: Terminal: kitty
`/++++/+++++++: CPU: Intel i5-6200U (4) @ 2.300GHz
`/++++++++++++++: GPU: Intel Skylake-U GT2 [HD Graphics 520]
`/+++ooooooooooooo/` Memory: 1703MiB / 3792MiB
./ooosssso++osssssso+`
.oossssso-````/ossssss+`
-osssssso. :ssssssso.
:osssssss/ osssso+++.
/ossssssss/ +ssssooo/-
`/ossssso+/:- -:/+osssso+-
`+sso+:-` `.-/+oso:
`++:. `-/+/
.` `/
```

View file

@ -0,0 +1,286 @@
---
Author: Antoine Foucault-Castelli
Date: 17/03/2026
Bibliography: @karmiFiabiliteOptimisationSystemes @ghorbelEffectBrakeLocation2020a @zhengAnalyticalApproachMesh2022
Version: 4.0
---
| Newmark | Value |
| ---------------- | --------- |
| Newmark $\gamma$ | |
| Newmark $\beta$ | |
| **Gears** | **Value** |
| $Z1$ | |
| $Z2$ | |
| $m_0$ | |
| $b$ | |
| $d_{i1}$ | |
| $d_{i_2}$ | |
| $N_1$ | |
| $\alpha$ | |
| $\rho_{steel}$ | |
| **Masses** | **Value** |
| $m_{in}$ | |
| $m_{pinion12}$ | |
| $m_{pinion21}$ | |
| $m_{pinio}$ | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
# Gearbox simulation
## Structure
```
main.m
func.m
time_sampling
inertia
gearbox_geometry
mesh_stiffness
wind_excitation
mass_matrix
stiffness_matrix
stiffness_update
damping_matrix
forces_matrix
initialization
newmark
parameters.m
display.m
disp_xy(t,x,i)
speed_xy(t,v,i)
acc_xy(t,v,i)
disp_theta(t,x,i)
speed_theta(t,v,i)
acc_theta(t,a,i)
mesh_stiffness(t,k_var,k_mean,i)
taero(t,T_aero,i)
rms_on_x(x)
spectral_on_x(x,i,tf,dt)
plot_x(t,x,i)
only_display.m
display_update.m
```
`main.m` is the launcher for the full code compilation
`func` is the function class, containing every function used in the code
`parameters` is the model parameters document
`display` is the displayer for figures
`only_display` to skip non-needed full compilation
`display_update` to update a single graph if needed
## How does it work ?
**For Matlab under windows :**
open matlab and launch main.m
> [!WARNING]
> remove `graphics_toolkit("gnuplot")` which is only useful for Octave visualization
**For Octave/Linux :**
```bash
cd [path_to_cloned]/code/versions/[current_version]/
octave
>>> run main.m
>>>
```
## Informations
- [x] Verified code with base code and paper
- [x] Implemented wind excitation
- [x] Implemented Ghorbel parameters
- [~] Add varying output torque depending on number of tooth in contact ?
- [~] add brake ?
- [~] Variation of C ?
- [~] ODE45 ?
- [x] Displays from last version (in class)
- [x] New mesh stiffness variation model (trapezoidal)
- [x] Print in pdf
- [ ] Errors/defects implementation
- [ ] profile error
- [ ] assembly defect (change on gear stiffness)
- [ ] README
- [x] Maths
- [ ] Source(s)
- [ ] Random models implementation
- [x] Display
- [x] time response on a2
- [x] speed response
- [x] x movement (vs y movement ?)
- [x] RMS STD Kurtosis
- [ ] Tests
- [ ] different speed
- [ ] different blade radii
## Maths
The model is represented by two 4DDL shafts in a gear connection : $x$ and $y$ are free at the pinion, $\theta$ is free at both ends of the shaft (input/output is $\theta_{ii}$ and meshing rotation is $\theta_{ij}$).
### Parameters
### Energy equations
$$
\frac{\partial Ep}{\partial q_i}+
\frac{d}{dt}\left(\frac{Ec}{\dot{q}_i}\right)-
\frac{\partial Ec}{\partial q_i}+
\frac{\partial D}{\partial \dot{q}_i}
=\frac{W}{\partial q_i}
\\
Ec = \frac{1}{2}m_1*\dot{x}_1^2+
\frac{1}{2}m_1*\dot{y}_1^2+
\frac{1}{2}I_{11}\dot{\theta}_{11}^2+
\frac{1}{2}I_{12}\dot{\theta}_{12}^2+
\frac{1}{2}m_2*\dot{x_2}^2+
\frac{1}{2}m_2*\dot{y_2}^2+
\frac{1}{2}I_{22}\dot{\theta}_{22}^2+
\frac{1}{2}I_{21}\dot{\theta}_{21}^2
\\
Ep = \frac{1}{2}k_{x_1}x_{1}^2+
\frac{1}{2}k_{y_1}y_{1}^2+
\frac{1}{2}k_{\theta_1}(\theta_{11}-\theta_{12})^2+
\frac{1}{2}k_{x_2}x_{2}^2+
\frac{1}{2}k_{y_2}y_{2}^2+
\frac{1}{2}k_{\theta_2}(\theta_{21}-\theta_{22})^2+
\frac{1}{2}K_e(t)\delta_1^2(t)
$$
### Equations of movement
$Ep$ and $Ec$ are separated between the two shaft (1 and 2)
$$
\begin{cases}
&\frac{\partial Ep_1}{\partial x_1}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{x}_1}\right)=m_1\ddot{x}_1+k_{x1}x_1+sin(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial y_1}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{y}_1}\right)=m_1\ddot{y}_1+k_{y1}y_1+cos(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial \theta_{11}}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{\theta}_{11}}\right)=I_{11}\ddot{\theta}_{11}+k_{\theta 1}(\theta_{11}-\theta_{12})=Cm \\
&\frac{\partial Ep_1}{\partial \theta_{12}}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{\theta}_{12}}\right)=I_{12}\ddot{\theta}_{12}+k_{\theta 1}(\theta_{12}-\theta_{11})+K_e(t)r_{b12}\delta_1(t)=0 \\
&\frac{\partial Ep_1}{\partial x_2}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{x}_2}\right)=m_2\ddot{x}_2+k_{x2}x_2-sin(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial y_2}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{y}_2}\right)=m_2\ddot{y}_2+k_{y2}y_2-cos(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial \theta_{22}}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{\theta}_{22}}\right)=I_{22}\ddot{\theta}_{22}-k_{\theta 2}(\theta_{21}-\theta_{22})=-Cr \\
&\frac{\partial Ep_1}{\partial \theta_{21}}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{\theta}_{21}}\right)=I_{21}\ddot{\theta}_{21}-k_{\theta 2}(\theta_{21}-\theta_{22})+K_e(t)r_{b21}\delta_1(t)=0
\end{cases}
$$
With $\delta_i(t)=(x_1-x_2)sin(\alpha)+(y_1-y_2)cos(\alpha)+\theta_{12}r_{b1}+\theta_{21}r_{b2}$ and $r_{bij}$ the base radius of pinions, $K_e$ is the varying meshing stiffness, mass $m_i = \pi r^2_{i}\rho$ for both pinions, and $I_{ij} = \frac{1}{2}m_{ij}r_{ij}^2$ for pinions and input/output inertia.
### Matrices
**Equation to solve :**
$$
[M]\{\ddot{q}\}+C\{\dot{q}\}+([Ks]+[K(t)])\{q\}=\{F_0\} \\
\{q\}=\{x_1,y_1,\theta_{11},\theta_{12},x_2,y_2,\theta_{22},\theta_{21}\}
$$
**Mass matrix :**
$$
M =
\begin{bmatrix}
m_1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & m_1 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & I_{11} & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & I_{12} & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & m_2 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & m_2 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & I_{22} & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & I_{21} \\
\end{bmatrix} \\
$$
With $m_1$ mass of shaft 1 and $m_2$ mass of shaft 2
**Variable mesh stiffness matrix**
$$
K(t)= K_e(t)
\begin{bmatrix}
sin(\alpha)^2 & sin(\alpha).cos(\alpha) & 0 & r_1.sin(\alpha) & -sin(\alpha)^2 & -sin(\alpha).cos(\alpha) & 0 & r_2.sin(\alpha) \\
sin(\alpha).cos(\alpha) & cos(\alpha)^2 & 0 & r_1.cos(\alpha) & -sin(\alpha).cos(\alpha) & -cos(\alpha)^2 & 0 & r_2.cos(\alpha) \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
r_1.sin(\alpha) & r_1.cos(\alpha) & 0 & r_1^2 & -r_1.sin(\alpha) & -r_1.cos(\alpha) & 0 & r_1.r_2 \\
-sin(\alpha)^2 & -sin(\alpha).cos(\alpha) & 0 & -r_1.sin(\alpha) & sin(\alpha)^2 & sin(\alpha).cos(\alpha) & 0 & -r_2.sin(\alpha) \\
-sin(\alpha).cos(\alpha) & -cos(\alpha)^2 & 0 & -r_1.cos(\alpha) & sin(\alpha).cos(\alpha) & cos(\alpha)^2 & 0 & -r_2.cos(\alpha) \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
r_2.sin(\alpha) & r_2.cos(\alpha) & 0 & r_1.r_2 & -r_2.sin(\alpha) & -r_2.cos(\alpha) & 0 & r_2^2 \\
\end{bmatrix}
$$
> [!NOTE]
>
> In matlab, cos and sin terms will be noted as $s_i$, for visual simplification
**Constant stiffness matrix**
$$
Ks=
\begin{bmatrix}
k_{x1} & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & k_{y1} & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & k_{\theta1}& -k_{\theta1} & 0 & 0 & 0 & 0 \\
0 & 0 & -k_{\theta1} & k_{\theta1} & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & k_{x1} & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & k_{y1} & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & k_{\theta2} & -k_{\theta2} \\
0 & 0 & 0 & 0 & 0 & 0 & -k_{\theta2} & k_{\theta2} \\
\end{bmatrix}
$$
**Damping matrix**
$$
C = \eta M+\beta K_{mean}
$$
**Forces**
$$
F =
\begin{bmatrix}
0 \\ 0 \\ T_{in} \\ 0 \\ 0\\ 0\\ T_{out}\\ 0
\end{bmatrix}
$$
## TO FIX
> [!ATTENTION]
> ...
## Machine specifications
Example of computational time : `44sec for fs=2500` / `n_periods = 10`
```
-`
.o+`
`ooo/ OS: Arch Linux x86_64
`+oooo: Host: 20EV000UFR ThinkPad E560
`+oooooo: Kernel: 6.19.8-arch1-1
-+oooooo+: Shell: zsh 5.9
`/:-:++oooo+: Terminal: kitty
`/++++/+++++++: CPU: Intel i5-6200U (4) @ 2.300GHz
`/++++++++++++++: GPU: Intel Skylake-U GT2 [HD Graphics 520]
`/+++ooooooooooooo/` Memory: 1703MiB / 3792MiB
./ooosssso++osssssso+`
.oossssso-````/ossssss+`
-osssssso. :ssssssso.
:osssssss/ osssso+++.
/ossssssss/ +ssssooo/-
`/ossssso+/:- -:/+osssso+-
`+sso+:-` `.-/+oso:
`++:. `-/+/
.` `/
```

View file

@ -0,0 +1,286 @@
---
Author: Antoine Foucault-Castelli
Date: 17/03/2026
Bibliography: @karmiFiabiliteOptimisationSystemes @ghorbelEffectBrakeLocation2020a @zhengAnalyticalApproachMesh2022
Version: 4.0
---
| Newmark | Value |
| ---------------- | --------- |
| Newmark $\gamma$ | |
| Newmark $\beta$ | |
| **Gears** | **Value** |
| $Z1$ | |
| $Z2$ | |
| $m_0$ | |
| $b$ | |
| $d_{i1}$ | |
| $d_{i_2}$ | |
| $N_1$ | |
| $\alpha$ | |
| $\rho_{steel}$ | |
| **Masses** | **Value** |
| $m_{in}$ | |
| $m_{pinion12}$ | |
| $m_{pinion21}$ | |
| $m_{out}$ | |
| **Stiffness** | |
| $k_x=k_{x}$ | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
# Gearbox simulation
## Structure
```
main.m
func.m
time_sampling
inertia
gearbox_geometry
mesh_stiffness
wind_excitation
mass_matrix
stiffness_matrix
stiffness_update
damping_matrix
forces_matrix
initialization
newmark
parameters.m
display.m
disp_xy(t,x,i)
speed_xy(t,v,i)
acc_xy(t,v,i)
disp_theta(t,x,i)
speed_theta(t,v,i)
acc_theta(t,a,i)
mesh_stiffness(t,k_var,k_mean,i)
taero(t,T_aero,i)
rms_on_x(x)
spectral_on_x(x,i,tf,dt)
plot_x(t,x,i)
only_display.m
display_update.m
```
`main.m` is the launcher for the full code compilation
`func` is the function class, containing every function used in the code
`parameters` is the model parameters document
`display` is the displayer for figures
`only_display` to skip non-needed full compilation
`display_update` to update a single graph if needed
## How does it work ?
**For Matlab under windows :**
open matlab and launch main.m
> [!WARNING]
> remove `graphics_toolkit("gnuplot")` which is only useful for Octave visualization
**For Octave/Linux :**
```bash
cd [path_to_cloned]/code/versions/[current_version]/
octave
>>> run main.m
>>>
```
## Informations
- [x] Verified code with base code and paper
- [x] Implemented wind excitation
- [x] Implemented Ghorbel parameters
- [~] Add varying output torque depending on number of tooth in contact ?
- [~] add brake ?
- [~] Variation of C ?
- [~] ODE45 ?
- [x] Displays from last version (in class)
- [x] New mesh stiffness variation model (trapezoidal)
- [x] Print in pdf
- [ ] Errors/defects implementation
- [ ] profile error
- [ ] assembly defect (change on gear stiffness)
- [ ] README
- [x] Maths
- [ ] Source(s)
- [ ] Random models implementation
- [x] Display
- [x] time response on a2
- [x] speed response
- [x] x movement (vs y movement ?)
- [x] RMS STD Kurtosis
- [ ] Tests
- [ ] different speed
- [ ] different blade radii
## Maths
The model is represented by two 4DDL shafts in a gear connection : $x$ and $y$ are free at the pinion, $\theta$ is free at both ends of the shaft (input/output is $\theta_{ii}$ and meshing rotation is $\theta_{ij}$).
### Parameters
### Energy equations
$$
\frac{\partial Ep}{\partial q_i}+
\frac{d}{dt}\left(\frac{Ec}{\dot{q}_i}\right)-
\frac{\partial Ec}{\partial q_i}+
\frac{\partial D}{\partial \dot{q}_i}
=\frac{W}{\partial q_i}
\\
Ec = \frac{1}{2}m_1*\dot{x}_1^2+
\frac{1}{2}m_1*\dot{y}_1^2+
\frac{1}{2}I_{11}\dot{\theta}_{11}^2+
\frac{1}{2}I_{12}\dot{\theta}_{12}^2+
\frac{1}{2}m_2*\dot{x_2}^2+
\frac{1}{2}m_2*\dot{y_2}^2+
\frac{1}{2}I_{22}\dot{\theta}_{22}^2+
\frac{1}{2}I_{21}\dot{\theta}_{21}^2
\\
Ep = \frac{1}{2}k_{x_1}x_{1}^2+
\frac{1}{2}k_{y_1}y_{1}^2+
\frac{1}{2}k_{\theta_1}(\theta_{11}-\theta_{12})^2+
\frac{1}{2}k_{x_2}x_{2}^2+
\frac{1}{2}k_{y_2}y_{2}^2+
\frac{1}{2}k_{\theta_2}(\theta_{21}-\theta_{22})^2+
\frac{1}{2}K_e(t)\delta_1^2(t)
$$
### Equations of movement
$Ep$ and $Ec$ are separated between the two shaft (1 and 2)
$$
\begin{cases}
&\frac{\partial Ep_1}{\partial x_1}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{x}_1}\right)=m_1\ddot{x}_1+k_{x1}x_1+sin(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial y_1}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{y}_1}\right)=m_1\ddot{y}_1+k_{y1}y_1+cos(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial \theta_{11}}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{\theta}_{11}}\right)=I_{11}\ddot{\theta}_{11}+k_{\theta 1}(\theta_{11}-\theta_{12})=Cm \\
&\frac{\partial Ep_1}{\partial \theta_{12}}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{\theta}_{12}}\right)=I_{12}\ddot{\theta}_{12}+k_{\theta 1}(\theta_{12}-\theta_{11})+K_e(t)r_{b12}\delta_1(t)=0 \\
&\frac{\partial Ep_1}{\partial x_2}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{x}_2}\right)=m_2\ddot{x}_2+k_{x2}x_2-sin(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial y_2}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{y}_2}\right)=m_2\ddot{y}_2+k_{y2}y_2-cos(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial \theta_{22}}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{\theta}_{22}}\right)=I_{22}\ddot{\theta}_{22}-k_{\theta 2}(\theta_{21}-\theta_{22})=-Cr \\
&\frac{\partial Ep_1}{\partial \theta_{21}}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{\theta}_{21}}\right)=I_{21}\ddot{\theta}_{21}-k_{\theta 2}(\theta_{21}-\theta_{22})+K_e(t)r_{b21}\delta_1(t)=0
\end{cases}
$$
With $\delta_i(t)=(x_1-x_2)sin(\alpha)+(y_1-y_2)cos(\alpha)+\theta_{12}r_{b1}+\theta_{21}r_{b2}$ and $r_{bij}$ the base radius of pinions, $K_e$ is the varying meshing stiffness, mass $m_i = \pi r^2_{i}\rho$ for both pinions, and $I_{ij} = \frac{1}{2}m_{ij}r_{ij}^2$ for pinions and input/output inertia.
### Matrices
**Equation to solve :**
$$
[M]\{\ddot{q}\}+C\{\dot{q}\}+([Ks]+[K(t)])\{q\}=\{F_0\} \\
\{q\}=\{x_1,y_1,\theta_{11},\theta_{12},x_2,y_2,\theta_{22},\theta_{21}\}
$$
**Mass matrix :**
$$
M =
\begin{bmatrix}
m_1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & m_1 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & I_{11} & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & I_{12} & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & m_2 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & m_2 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & I_{22} & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & I_{21} \\
\end{bmatrix} \\
$$
With $m_1$ mass of shaft 1 and $m_2$ mass of shaft 2
**Variable mesh stiffness matrix**
$$
K(t)= K_e(t)
\begin{bmatrix}
sin(\alpha)^2 & sin(\alpha).cos(\alpha) & 0 & r_1.sin(\alpha) & -sin(\alpha)^2 & -sin(\alpha).cos(\alpha) & 0 & r_2.sin(\alpha) \\
sin(\alpha).cos(\alpha) & cos(\alpha)^2 & 0 & r_1.cos(\alpha) & -sin(\alpha).cos(\alpha) & -cos(\alpha)^2 & 0 & r_2.cos(\alpha) \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
r_1.sin(\alpha) & r_1.cos(\alpha) & 0 & r_1^2 & -r_1.sin(\alpha) & -r_1.cos(\alpha) & 0 & r_1.r_2 \\
-sin(\alpha)^2 & -sin(\alpha).cos(\alpha) & 0 & -r_1.sin(\alpha) & sin(\alpha)^2 & sin(\alpha).cos(\alpha) & 0 & -r_2.sin(\alpha) \\
-sin(\alpha).cos(\alpha) & -cos(\alpha)^2 & 0 & -r_1.cos(\alpha) & sin(\alpha).cos(\alpha) & cos(\alpha)^2 & 0 & -r_2.cos(\alpha) \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
r_2.sin(\alpha) & r_2.cos(\alpha) & 0 & r_1.r_2 & -r_2.sin(\alpha) & -r_2.cos(\alpha) & 0 & r_2^2 \\
\end{bmatrix}
$$
> [!NOTE]
>
> In matlab, cos and sin terms will be noted as $s_i$, for visual simplification
**Constant stiffness matrix**
$$
Ks=
\begin{bmatrix}
k_{x1} & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & k_{y1} & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & k_{\theta1}& -k_{\theta1} & 0 & 0 & 0 & 0 \\
0 & 0 & -k_{\theta1} & k_{\theta1} & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & k_{x1} & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & k_{y1} & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & k_{\theta2} & -k_{\theta2} \\
0 & 0 & 0 & 0 & 0 & 0 & -k_{\theta2} & k_{\theta2} \\
\end{bmatrix}
$$
**Damping matrix**
$$
C = \eta M+\beta K_{mean}
$$
**Forces**
$$
F =
\begin{bmatrix}
0 \\ 0 \\ T_{in} \\ 0 \\ 0\\ 0\\ T_{out}\\ 0
\end{bmatrix}
$$
## TO FIX
> [!ATTENTION]
> ...
## Machine specifications
Example of computational time : `44sec for fs=2500` / `n_periods = 10`
```
-`
.o+`
`ooo/ OS: Arch Linux x86_64
`+oooo: Host: 20EV000UFR ThinkPad E560
`+oooooo: Kernel: 6.19.8-arch1-1
-+oooooo+: Shell: zsh 5.9
`/:-:++oooo+: Terminal: kitty
`/++++/+++++++: CPU: Intel i5-6200U (4) @ 2.300GHz
`/++++++++++++++: GPU: Intel Skylake-U GT2 [HD Graphics 520]
`/+++ooooooooooooo/` Memory: 1703MiB / 3792MiB
./ooosssso++osssssso+`
.oossssso-````/ossssss+`
-osssssso. :ssssssso.
:osssssss/ osssso+++.
/ossssssss/ +ssssooo/-
`/ossssso+/:- -:/+osssso+-
`+sso+:-` `.-/+oso:
`++:. `-/+/
.` `/
```

View file

@ -0,0 +1,286 @@
---
Author: Antoine Foucault-Castelli
Date: 17/03/2026
Bibliography: @karmiFiabiliteOptimisationSystemes @ghorbelEffectBrakeLocation2020a @zhengAnalyticalApproachMesh2022
Version: 4.0
---
| Newmark | Value |
| --------------------- | --------- |
| Newmark $\gamma$ | |
| Newmark $\beta$ | |
| **Gears** | **Value** |
| $Z1$ | |
| $Z2$ | |
| $m_0$ | |
| $b$ | |
| $d_{i1}$ | |
| $d_{i_2}$ | |
| $N_1$ | |
| $\alpha$ | |
| $\rho_{steel}$ | |
| **Masses** | **Value** |
| $m_{in}$ | |
| $m_{pinion12}$ | |
| $m_{pinion21}$ | |
| $m_{out}$ | |
| **Stiffness** | |
| $k_x=k_{x_1}=k_{x_2}$ | |
| $k_y=k_{y_1}=k_{y_2}$ | |
| $k_x=k_{x_1}=k_{x_2}$ | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
# Gearbox simulation
## Structure
```
main.m
func.m
time_sampling
inertia
gearbox_geometry
mesh_stiffness
wind_excitation
mass_matrix
stiffness_matrix
stiffness_update
damping_matrix
forces_matrix
initialization
newmark
parameters.m
display.m
disp_xy(t,x,i)
speed_xy(t,v,i)
acc_xy(t,v,i)
disp_theta(t,x,i)
speed_theta(t,v,i)
acc_theta(t,a,i)
mesh_stiffness(t,k_var,k_mean,i)
taero(t,T_aero,i)
rms_on_x(x)
spectral_on_x(x,i,tf,dt)
plot_x(t,x,i)
only_display.m
display_update.m
```
`main.m` is the launcher for the full code compilation
`func` is the function class, containing every function used in the code
`parameters` is the model parameters document
`display` is the displayer for figures
`only_display` to skip non-needed full compilation
`display_update` to update a single graph if needed
## How does it work ?
**For Matlab under windows :**
open matlab and launch main.m
> [!WARNING]
> remove `graphics_toolkit("gnuplot")` which is only useful for Octave visualization
**For Octave/Linux :**
```bash
cd [path_to_cloned]/code/versions/[current_version]/
octave
>>> run main.m
>>>
```
## Informations
- [x] Verified code with base code and paper
- [x] Implemented wind excitation
- [x] Implemented Ghorbel parameters
- [~] Add varying output torque depending on number of tooth in contact ?
- [~] add brake ?
- [~] Variation of C ?
- [~] ODE45 ?
- [x] Displays from last version (in class)
- [x] New mesh stiffness variation model (trapezoidal)
- [x] Print in pdf
- [ ] Errors/defects implementation
- [ ] profile error
- [ ] assembly defect (change on gear stiffness)
- [ ] README
- [x] Maths
- [ ] Source(s)
- [ ] Random models implementation
- [x] Display
- [x] time response on a2
- [x] speed response
- [x] x movement (vs y movement ?)
- [x] RMS STD Kurtosis
- [ ] Tests
- [ ] different speed
- [ ] different blade radii
## Maths
The model is represented by two 4DDL shafts in a gear connection : $x$ and $y$ are free at the pinion, $\theta$ is free at both ends of the shaft (input/output is $\theta_{ii}$ and meshing rotation is $\theta_{ij}$).
### Parameters
### Energy equations
$$
\frac{\partial Ep}{\partial q_i}+
\frac{d}{dt}\left(\frac{Ec}{\dot{q}_i}\right)-
\frac{\partial Ec}{\partial q_i}+
\frac{\partial D}{\partial \dot{q}_i}
=\frac{W}{\partial q_i}
\\
Ec = \frac{1}{2}m_1*\dot{x}_1^2+
\frac{1}{2}m_1*\dot{y}_1^2+
\frac{1}{2}I_{11}\dot{\theta}_{11}^2+
\frac{1}{2}I_{12}\dot{\theta}_{12}^2+
\frac{1}{2}m_2*\dot{x_2}^2+
\frac{1}{2}m_2*\dot{y_2}^2+
\frac{1}{2}I_{22}\dot{\theta}_{22}^2+
\frac{1}{2}I_{21}\dot{\theta}_{21}^2
\\
Ep = \frac{1}{2}k_{x_1}x_{1}^2+
\frac{1}{2}k_{y_1}y_{1}^2+
\frac{1}{2}k_{\theta_1}(\theta_{11}-\theta_{12})^2+
\frac{1}{2}k_{x_2}x_{2}^2+
\frac{1}{2}k_{y_2}y_{2}^2+
\frac{1}{2}k_{\theta_2}(\theta_{21}-\theta_{22})^2+
\frac{1}{2}K_e(t)\delta_1^2(t)
$$
### Equations of movement
$Ep$ and $Ec$ are separated between the two shaft (1 and 2)
$$
\begin{cases}
&\frac{\partial Ep_1}{\partial x_1}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{x}_1}\right)=m_1\ddot{x}_1+k_{x1}x_1+sin(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial y_1}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{y}_1}\right)=m_1\ddot{y}_1+k_{y1}y_1+cos(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial \theta_{11}}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{\theta}_{11}}\right)=I_{11}\ddot{\theta}_{11}+k_{\theta 1}(\theta_{11}-\theta_{12})=Cm \\
&\frac{\partial Ep_1}{\partial \theta_{12}}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{\theta}_{12}}\right)=I_{12}\ddot{\theta}_{12}+k_{\theta 1}(\theta_{12}-\theta_{11})+K_e(t)r_{b12}\delta_1(t)=0 \\
&\frac{\partial Ep_1}{\partial x_2}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{x}_2}\right)=m_2\ddot{x}_2+k_{x2}x_2-sin(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial y_2}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{y}_2}\right)=m_2\ddot{y}_2+k_{y2}y_2-cos(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial \theta_{22}}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{\theta}_{22}}\right)=I_{22}\ddot{\theta}_{22}-k_{\theta 2}(\theta_{21}-\theta_{22})=-Cr \\
&\frac{\partial Ep_1}{\partial \theta_{21}}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{\theta}_{21}}\right)=I_{21}\ddot{\theta}_{21}-k_{\theta 2}(\theta_{21}-\theta_{22})+K_e(t)r_{b21}\delta_1(t)=0
\end{cases}
$$
With $\delta_i(t)=(x_1-x_2)sin(\alpha)+(y_1-y_2)cos(\alpha)+\theta_{12}r_{b1}+\theta_{21}r_{b2}$ and $r_{bij}$ the base radius of pinions, $K_e$ is the varying meshing stiffness, mass $m_i = \pi r^2_{i}\rho$ for both pinions, and $I_{ij} = \frac{1}{2}m_{ij}r_{ij}^2$ for pinions and input/output inertia.
### Matrices
**Equation to solve :**
$$
[M]\{\ddot{q}\}+C\{\dot{q}\}+([Ks]+[K(t)])\{q\}=\{F_0\} \\
\{q\}=\{x_1,y_1,\theta_{11},\theta_{12},x_2,y_2,\theta_{22},\theta_{21}\}
$$
**Mass matrix :**
$$
M =
\begin{bmatrix}
m_1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & m_1 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & I_{11} & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & I_{12} & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & m_2 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & m_2 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & I_{22} & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & I_{21} \\
\end{bmatrix} \\
$$
With $m_1$ mass of shaft 1 and $m_2$ mass of shaft 2
**Variable mesh stiffness matrix**
$$
K(t)= K_e(t)
\begin{bmatrix}
sin(\alpha)^2 & sin(\alpha).cos(\alpha) & 0 & r_1.sin(\alpha) & -sin(\alpha)^2 & -sin(\alpha).cos(\alpha) & 0 & r_2.sin(\alpha) \\
sin(\alpha).cos(\alpha) & cos(\alpha)^2 & 0 & r_1.cos(\alpha) & -sin(\alpha).cos(\alpha) & -cos(\alpha)^2 & 0 & r_2.cos(\alpha) \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
r_1.sin(\alpha) & r_1.cos(\alpha) & 0 & r_1^2 & -r_1.sin(\alpha) & -r_1.cos(\alpha) & 0 & r_1.r_2 \\
-sin(\alpha)^2 & -sin(\alpha).cos(\alpha) & 0 & -r_1.sin(\alpha) & sin(\alpha)^2 & sin(\alpha).cos(\alpha) & 0 & -r_2.sin(\alpha) \\
-sin(\alpha).cos(\alpha) & -cos(\alpha)^2 & 0 & -r_1.cos(\alpha) & sin(\alpha).cos(\alpha) & cos(\alpha)^2 & 0 & -r_2.cos(\alpha) \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
r_2.sin(\alpha) & r_2.cos(\alpha) & 0 & r_1.r_2 & -r_2.sin(\alpha) & -r_2.cos(\alpha) & 0 & r_2^2 \\
\end{bmatrix}
$$
> [!NOTE]
>
> In matlab, cos and sin terms will be noted as $s_i$, for visual simplification
**Constant stiffness matrix**
$$
Ks=
\begin{bmatrix}
k_{x1} & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & k_{y1} & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & k_{\theta1}& -k_{\theta1} & 0 & 0 & 0 & 0 \\
0 & 0 & -k_{\theta1} & k_{\theta1} & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & k_{x1} & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & k_{y1} & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & k_{\theta2} & -k_{\theta2} \\
0 & 0 & 0 & 0 & 0 & 0 & -k_{\theta2} & k_{\theta2} \\
\end{bmatrix}
$$
**Damping matrix**
$$
C = \eta M+\beta K_{mean}
$$
**Forces**
$$
F =
\begin{bmatrix}
0 \\ 0 \\ T_{in} \\ 0 \\ 0\\ 0\\ T_{out}\\ 0
\end{bmatrix}
$$
## TO FIX
> [!ATTENTION]
> ...
## Machine specifications
Example of computational time : `44sec for fs=2500` / `n_periods = 10`
```
-`
.o+`
`ooo/ OS: Arch Linux x86_64
`+oooo: Host: 20EV000UFR ThinkPad E560
`+oooooo: Kernel: 6.19.8-arch1-1
-+oooooo+: Shell: zsh 5.9
`/:-:++oooo+: Terminal: kitty
`/++++/+++++++: CPU: Intel i5-6200U (4) @ 2.300GHz
`/++++++++++++++: GPU: Intel Skylake-U GT2 [HD Graphics 520]
`/+++ooooooooooooo/` Memory: 1703MiB / 3792MiB
./ooosssso++osssssso+`
.oossssso-````/ossssss+`
-osssssso. :ssssssso.
:osssssss/ osssso+++.
/ossssssss/ +ssssooo/-
`/ossssso+/:- -:/+osssso+-
`+sso+:-` `.-/+oso:
`++:. `-/+/
.` `/
```

View file

@ -0,0 +1,286 @@
---
Author: Antoine Foucault-Castelli
Date: 17/03/2026
Bibliography: @karmiFiabiliteOptimisationSystemes @ghorbelEffectBrakeLocation2020a @zhengAnalyticalApproachMesh2022
Version: 4.0
---
| Newmark | Value |
| ------------------------------------ | --------- |
| Newmark $\gamma$ | |
| Newmark $\beta$ | |
| **Gears** | **Value** |
| $Z1$ | |
| $Z2$ | |
| $m_0$ | |
| $b$ | |
| $d_{i1}$ | |
| $d_{i_2}$ | |
| $N_1$ | |
| $\alpha$ | |
| $\rho_{steel}$ | |
| **Masses** | **Value** |
| $m_{in}$ | |
| $m_{pinion12}$ | |
| $m_{pinion21}$ | |
| $m_{out}$ | |
| **Stiffness** | |
| $k_x=k_{x_1}=k_{x_2}$ | |
| $k_y=k_{y_1}=k_{y_2}$ | |
| $k_\theta=k_{\theta_1}=k_{\theta_2}$ | |
| $k_{mesh__{mean}}$$ | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
# Gearbox simulation
## Structure
```
main.m
func.m
time_sampling
inertia
gearbox_geometry
mesh_stiffness
wind_excitation
mass_matrix
stiffness_matrix
stiffness_update
damping_matrix
forces_matrix
initialization
newmark
parameters.m
display.m
disp_xy(t,x,i)
speed_xy(t,v,i)
acc_xy(t,v,i)
disp_theta(t,x,i)
speed_theta(t,v,i)
acc_theta(t,a,i)
mesh_stiffness(t,k_var,k_mean,i)
taero(t,T_aero,i)
rms_on_x(x)
spectral_on_x(x,i,tf,dt)
plot_x(t,x,i)
only_display.m
display_update.m
```
`main.m` is the launcher for the full code compilation
`func` is the function class, containing every function used in the code
`parameters` is the model parameters document
`display` is the displayer for figures
`only_display` to skip non-needed full compilation
`display_update` to update a single graph if needed
## How does it work ?
**For Matlab under windows :**
open matlab and launch main.m
> [!WARNING]
> remove `graphics_toolkit("gnuplot")` which is only useful for Octave visualization
**For Octave/Linux :**
```bash
cd [path_to_cloned]/code/versions/[current_version]/
octave
>>> run main.m
>>>
```
## Informations
- [x] Verified code with base code and paper
- [x] Implemented wind excitation
- [x] Implemented Ghorbel parameters
- [~] Add varying output torque depending on number of tooth in contact ?
- [~] add brake ?
- [~] Variation of C ?
- [~] ODE45 ?
- [x] Displays from last version (in class)
- [x] New mesh stiffness variation model (trapezoidal)
- [x] Print in pdf
- [ ] Errors/defects implementation
- [ ] profile error
- [ ] assembly defect (change on gear stiffness)
- [ ] README
- [x] Maths
- [ ] Source(s)
- [ ] Random models implementation
- [x] Display
- [x] time response on a2
- [x] speed response
- [x] x movement (vs y movement ?)
- [x] RMS STD Kurtosis
- [ ] Tests
- [ ] different speed
- [ ] different blade radii
## Maths
The model is represented by two 4DDL shafts in a gear connection : $x$ and $y$ are free at the pinion, $\theta$ is free at both ends of the shaft (input/output is $\theta_{ii}$ and meshing rotation is $\theta_{ij}$).
### Parameters
### Energy equations
$$
\frac{\partial Ep}{\partial q_i}+
\frac{d}{dt}\left(\frac{Ec}{\dot{q}_i}\right)-
\frac{\partial Ec}{\partial q_i}+
\frac{\partial D}{\partial \dot{q}_i}
=\frac{W}{\partial q_i}
\\
Ec = \frac{1}{2}m_1*\dot{x}_1^2+
\frac{1}{2}m_1*\dot{y}_1^2+
\frac{1}{2}I_{11}\dot{\theta}_{11}^2+
\frac{1}{2}I_{12}\dot{\theta}_{12}^2+
\frac{1}{2}m_2*\dot{x_2}^2+
\frac{1}{2}m_2*\dot{y_2}^2+
\frac{1}{2}I_{22}\dot{\theta}_{22}^2+
\frac{1}{2}I_{21}\dot{\theta}_{21}^2
\\
Ep = \frac{1}{2}k_{x_1}x_{1}^2+
\frac{1}{2}k_{y_1}y_{1}^2+
\frac{1}{2}k_{\theta_1}(\theta_{11}-\theta_{12})^2+
\frac{1}{2}k_{x_2}x_{2}^2+
\frac{1}{2}k_{y_2}y_{2}^2+
\frac{1}{2}k_{\theta_2}(\theta_{21}-\theta_{22})^2+
\frac{1}{2}K_e(t)\delta_1^2(t)
$$
### Equations of movement
$Ep$ and $Ec$ are separated between the two shaft (1 and 2)
$$
\begin{cases}
&\frac{\partial Ep_1}{\partial x_1}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{x}_1}\right)=m_1\ddot{x}_1+k_{x1}x_1+sin(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial y_1}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{y}_1}\right)=m_1\ddot{y}_1+k_{y1}y_1+cos(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial \theta_{11}}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{\theta}_{11}}\right)=I_{11}\ddot{\theta}_{11}+k_{\theta 1}(\theta_{11}-\theta_{12})=Cm \\
&\frac{\partial Ep_1}{\partial \theta_{12}}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{\theta}_{12}}\right)=I_{12}\ddot{\theta}_{12}+k_{\theta 1}(\theta_{12}-\theta_{11})+K_e(t)r_{b12}\delta_1(t)=0 \\
&\frac{\partial Ep_1}{\partial x_2}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{x}_2}\right)=m_2\ddot{x}_2+k_{x2}x_2-sin(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial y_2}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{y}_2}\right)=m_2\ddot{y}_2+k_{y2}y_2-cos(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial \theta_{22}}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{\theta}_{22}}\right)=I_{22}\ddot{\theta}_{22}-k_{\theta 2}(\theta_{21}-\theta_{22})=-Cr \\
&\frac{\partial Ep_1}{\partial \theta_{21}}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{\theta}_{21}}\right)=I_{21}\ddot{\theta}_{21}-k_{\theta 2}(\theta_{21}-\theta_{22})+K_e(t)r_{b21}\delta_1(t)=0
\end{cases}
$$
With $\delta_i(t)=(x_1-x_2)sin(\alpha)+(y_1-y_2)cos(\alpha)+\theta_{12}r_{b1}+\theta_{21}r_{b2}$ and $r_{bij}$ the base radius of pinions, $K_e$ is the varying meshing stiffness, mass $m_i = \pi r^2_{i}\rho$ for both pinions, and $I_{ij} = \frac{1}{2}m_{ij}r_{ij}^2$ for pinions and input/output inertia.
### Matrices
**Equation to solve :**
$$
[M]\{\ddot{q}\}+C\{\dot{q}\}+([Ks]+[K(t)])\{q\}=\{F_0\} \\
\{q\}=\{x_1,y_1,\theta_{11},\theta_{12},x_2,y_2,\theta_{22},\theta_{21}\}
$$
**Mass matrix :**
$$
M =
\begin{bmatrix}
m_1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & m_1 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & I_{11} & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & I_{12} & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & m_2 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & m_2 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & I_{22} & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & I_{21} \\
\end{bmatrix} \\
$$
With $m_1$ mass of shaft 1 and $m_2$ mass of shaft 2
**Variable mesh stiffness matrix**
$$
K(t)= K_e(t)
\begin{bmatrix}
sin(\alpha)^2 & sin(\alpha).cos(\alpha) & 0 & r_1.sin(\alpha) & -sin(\alpha)^2 & -sin(\alpha).cos(\alpha) & 0 & r_2.sin(\alpha) \\
sin(\alpha).cos(\alpha) & cos(\alpha)^2 & 0 & r_1.cos(\alpha) & -sin(\alpha).cos(\alpha) & -cos(\alpha)^2 & 0 & r_2.cos(\alpha) \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
r_1.sin(\alpha) & r_1.cos(\alpha) & 0 & r_1^2 & -r_1.sin(\alpha) & -r_1.cos(\alpha) & 0 & r_1.r_2 \\
-sin(\alpha)^2 & -sin(\alpha).cos(\alpha) & 0 & -r_1.sin(\alpha) & sin(\alpha)^2 & sin(\alpha).cos(\alpha) & 0 & -r_2.sin(\alpha) \\
-sin(\alpha).cos(\alpha) & -cos(\alpha)^2 & 0 & -r_1.cos(\alpha) & sin(\alpha).cos(\alpha) & cos(\alpha)^2 & 0 & -r_2.cos(\alpha) \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
r_2.sin(\alpha) & r_2.cos(\alpha) & 0 & r_1.r_2 & -r_2.sin(\alpha) & -r_2.cos(\alpha) & 0 & r_2^2 \\
\end{bmatrix}
$$
> [!NOTE]
>
> In matlab, cos and sin terms will be noted as $s_i$, for visual simplification
**Constant stiffness matrix**
$$
Ks=
\begin{bmatrix}
k_{x1} & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & k_{y1} & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & k_{\theta1}& -k_{\theta1} & 0 & 0 & 0 & 0 \\
0 & 0 & -k_{\theta1} & k_{\theta1} & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & k_{x1} & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & k_{y1} & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & k_{\theta2} & -k_{\theta2} \\
0 & 0 & 0 & 0 & 0 & 0 & -k_{\theta2} & k_{\theta2} \\
\end{bmatrix}
$$
**Damping matrix**
$$
C = \eta M+\beta K_{mean}
$$
**Forces**
$$
F =
\begin{bmatrix}
0 \\ 0 \\ T_{in} \\ 0 \\ 0\\ 0\\ T_{out}\\ 0
\end{bmatrix}
$$
## TO FIX
> [!ATTENTION]
> ...
## Machine specifications
Example of computational time : `44sec for fs=2500` / `n_periods = 10`
```
-`
.o+`
`ooo/ OS: Arch Linux x86_64
`+oooo: Host: 20EV000UFR ThinkPad E560
`+oooooo: Kernel: 6.19.8-arch1-1
-+oooooo+: Shell: zsh 5.9
`/:-:++oooo+: Terminal: kitty
`/++++/+++++++: CPU: Intel i5-6200U (4) @ 2.300GHz
`/++++++++++++++: GPU: Intel Skylake-U GT2 [HD Graphics 520]
`/+++ooooooooooooo/` Memory: 1703MiB / 3792MiB
./ooosssso++osssssso+`
.oossssso-````/ossssss+`
-osssssso. :ssssssso.
:osssssss/ osssso+++.
/ossssssss/ +ssssooo/-
`/ossssso+/:- -:/+osssso+-
`+sso+:-` `.-/+oso:
`++:. `-/+/
.` `/
```

View file

@ -0,0 +1,286 @@
---
Author: Antoine Foucault-Castelli
Date: 17/03/2026
Bibliography: @karmiFiabiliteOptimisationSystemes @ghorbelEffectBrakeLocation2020a @zhengAnalyticalApproachMesh2022
Version: 4.0
---
| Newmark | Value |
| ------------------------------------ | --------- |
| Newmark $\gamma$ | |
| Newmark $\beta$ | |
| **Gears** | **Value** |
| $Z1$ | |
| $Z2$ | |
| $m_0$ | |
| $b$ | |
| $d_{i1}$ | |
| $d_{i_2}$ | |
| $N_1$ | |
| $\alpha$ | |
| $\rho_{steel}$ | |
| **Masses** | **Value** |
| $m_{in}$ | |
| $m_{pinion12}$ | |
| $m_{pinion21}$ | |
| $m_{out}$ | |
| **Stiffness** | |
| $k_x=k_{x_1}=k_{x_2}$ | |
| $k_y=k_{y_1}=k_{y_2}$ | |
| $k_\theta=k_{\theta_1}=k_{\theta_2}$ | |
| $k_{mesh_{mean}}$ | |
| **Damping** | |
| $\eta$ | |
| $\beta$ | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
# Gearbox simulation
## Structure
```
main.m
func.m
time_sampling
inertia
gearbox_geometry
mesh_stiffness
wind_excitation
mass_matrix
stiffness_matrix
stiffness_update
damping_matrix
forces_matrix
initialization
newmark
parameters.m
display.m
disp_xy(t,x,i)
speed_xy(t,v,i)
acc_xy(t,v,i)
disp_theta(t,x,i)
speed_theta(t,v,i)
acc_theta(t,a,i)
mesh_stiffness(t,k_var,k_mean,i)
taero(t,T_aero,i)
rms_on_x(x)
spectral_on_x(x,i,tf,dt)
plot_x(t,x,i)
only_display.m
display_update.m
```
`main.m` is the launcher for the full code compilation
`func` is the function class, containing every function used in the code
`parameters` is the model parameters document
`display` is the displayer for figures
`only_display` to skip non-needed full compilation
`display_update` to update a single graph if needed
## How does it work ?
**For Matlab under windows :**
open matlab and launch main.m
> [!WARNING]
> remove `graphics_toolkit("gnuplot")` which is only useful for Octave visualization
**For Octave/Linux :**
```bash
cd [path_to_cloned]/code/versions/[current_version]/
octave
>>> run main.m
>>>
```
## Informations
- [x] Verified code with base code and paper
- [x] Implemented wind excitation
- [x] Implemented Ghorbel parameters
- [~] Add varying output torque depending on number of tooth in contact ?
- [~] add brake ?
- [~] Variation of C ?
- [~] ODE45 ?
- [x] Displays from last version (in class)
- [x] New mesh stiffness variation model (trapezoidal)
- [x] Print in pdf
- [ ] Errors/defects implementation
- [ ] profile error
- [ ] assembly defect (change on gear stiffness)
- [ ] README
- [x] Maths
- [ ] Source(s)
- [ ] Random models implementation
- [x] Display
- [x] time response on a2
- [x] speed response
- [x] x movement (vs y movement ?)
- [x] RMS STD Kurtosis
- [ ] Tests
- [ ] different speed
- [ ] different blade radii
## Maths
The model is represented by two 4DDL shafts in a gear connection : $x$ and $y$ are free at the pinion, $\theta$ is free at both ends of the shaft (input/output is $\theta_{ii}$ and meshing rotation is $\theta_{ij}$).
### Parameters
### Energy equations
$$
\frac{\partial Ep}{\partial q_i}+
\frac{d}{dt}\left(\frac{Ec}{\dot{q}_i}\right)-
\frac{\partial Ec}{\partial q_i}+
\frac{\partial D}{\partial \dot{q}_i}
=\frac{W}{\partial q_i}
\\
Ec = \frac{1}{2}m_1*\dot{x}_1^2+
\frac{1}{2}m_1*\dot{y}_1^2+
\frac{1}{2}I_{11}\dot{\theta}_{11}^2+
\frac{1}{2}I_{12}\dot{\theta}_{12}^2+
\frac{1}{2}m_2*\dot{x_2}^2+
\frac{1}{2}m_2*\dot{y_2}^2+
\frac{1}{2}I_{22}\dot{\theta}_{22}^2+
\frac{1}{2}I_{21}\dot{\theta}_{21}^2
\\
Ep = \frac{1}{2}k_{x_1}x_{1}^2+
\frac{1}{2}k_{y_1}y_{1}^2+
\frac{1}{2}k_{\theta_1}(\theta_{11}-\theta_{12})^2+
\frac{1}{2}k_{x_2}x_{2}^2+
\frac{1}{2}k_{y_2}y_{2}^2+
\frac{1}{2}k_{\theta_2}(\theta_{21}-\theta_{22})^2+
\frac{1}{2}K_e(t)\delta_1^2(t)
$$
### Equations of movement
$Ep$ and $Ec$ are separated between the two shaft (1 and 2)
$$
\begin{cases}
&\frac{\partial Ep_1}{\partial x_1}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{x}_1}\right)=m_1\ddot{x}_1+k_{x1}x_1+sin(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial y_1}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{y}_1}\right)=m_1\ddot{y}_1+k_{y1}y_1+cos(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial \theta_{11}}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{\theta}_{11}}\right)=I_{11}\ddot{\theta}_{11}+k_{\theta 1}(\theta_{11}-\theta_{12})=Cm \\
&\frac{\partial Ep_1}{\partial \theta_{12}}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{\theta}_{12}}\right)=I_{12}\ddot{\theta}_{12}+k_{\theta 1}(\theta_{12}-\theta_{11})+K_e(t)r_{b12}\delta_1(t)=0 \\
&\frac{\partial Ep_1}{\partial x_2}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{x}_2}\right)=m_2\ddot{x}_2+k_{x2}x_2-sin(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial y_2}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{y}_2}\right)=m_2\ddot{y}_2+k_{y2}y_2-cos(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial \theta_{22}}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{\theta}_{22}}\right)=I_{22}\ddot{\theta}_{22}-k_{\theta 2}(\theta_{21}-\theta_{22})=-Cr \\
&\frac{\partial Ep_1}{\partial \theta_{21}}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{\theta}_{21}}\right)=I_{21}\ddot{\theta}_{21}-k_{\theta 2}(\theta_{21}-\theta_{22})+K_e(t)r_{b21}\delta_1(t)=0
\end{cases}
$$
With $\delta_i(t)=(x_1-x_2)sin(\alpha)+(y_1-y_2)cos(\alpha)+\theta_{12}r_{b1}+\theta_{21}r_{b2}$ and $r_{bij}$ the base radius of pinions, $K_e$ is the varying meshing stiffness, mass $m_i = \pi r^2_{i}\rho$ for both pinions, and $I_{ij} = \frac{1}{2}m_{ij}r_{ij}^2$ for pinions and input/output inertia.
### Matrices
**Equation to solve :**
$$
[M]\{\ddot{q}\}+C\{\dot{q}\}+([Ks]+[K(t)])\{q\}=\{F_0\} \\
\{q\}=\{x_1,y_1,\theta_{11},\theta_{12},x_2,y_2,\theta_{22},\theta_{21}\}
$$
**Mass matrix :**
$$
M =
\begin{bmatrix}
m_1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & m_1 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & I_{11} & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & I_{12} & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & m_2 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & m_2 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & I_{22} & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & I_{21} \\
\end{bmatrix} \\
$$
With $m_1$ mass of shaft 1 and $m_2$ mass of shaft 2
**Variable mesh stiffness matrix**
$$
K(t)= K_e(t)
\begin{bmatrix}
sin(\alpha)^2 & sin(\alpha).cos(\alpha) & 0 & r_1.sin(\alpha) & -sin(\alpha)^2 & -sin(\alpha).cos(\alpha) & 0 & r_2.sin(\alpha) \\
sin(\alpha).cos(\alpha) & cos(\alpha)^2 & 0 & r_1.cos(\alpha) & -sin(\alpha).cos(\alpha) & -cos(\alpha)^2 & 0 & r_2.cos(\alpha) \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
r_1.sin(\alpha) & r_1.cos(\alpha) & 0 & r_1^2 & -r_1.sin(\alpha) & -r_1.cos(\alpha) & 0 & r_1.r_2 \\
-sin(\alpha)^2 & -sin(\alpha).cos(\alpha) & 0 & -r_1.sin(\alpha) & sin(\alpha)^2 & sin(\alpha).cos(\alpha) & 0 & -r_2.sin(\alpha) \\
-sin(\alpha).cos(\alpha) & -cos(\alpha)^2 & 0 & -r_1.cos(\alpha) & sin(\alpha).cos(\alpha) & cos(\alpha)^2 & 0 & -r_2.cos(\alpha) \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
r_2.sin(\alpha) & r_2.cos(\alpha) & 0 & r_1.r_2 & -r_2.sin(\alpha) & -r_2.cos(\alpha) & 0 & r_2^2 \\
\end{bmatrix}
$$
> [!NOTE]
>
> In matlab, cos and sin terms will be noted as $s_i$, for visual simplification
**Constant stiffness matrix**
$$
Ks=
\begin{bmatrix}
k_{x1} & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & k_{y1} & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & k_{\theta1}& -k_{\theta1} & 0 & 0 & 0 & 0 \\
0 & 0 & -k_{\theta1} & k_{\theta1} & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & k_{x1} & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & k_{y1} & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & k_{\theta2} & -k_{\theta2} \\
0 & 0 & 0 & 0 & 0 & 0 & -k_{\theta2} & k_{\theta2} \\
\end{bmatrix}
$$
**Damping matrix**
$$
C = \eta M+\beta K_{mean}
$$
**Forces**
$$
F =
\begin{bmatrix}
0 \\ 0 \\ T_{in} \\ 0 \\ 0\\ 0\\ T_{out}\\ 0
\end{bmatrix}
$$
## TO FIX
> [!ATTENTION]
> ...
## Machine specifications
Example of computational time : `44sec for fs=2500` / `n_periods = 10`
```
-`
.o+`
`ooo/ OS: Arch Linux x86_64
`+oooo: Host: 20EV000UFR ThinkPad E560
`+oooooo: Kernel: 6.19.8-arch1-1
-+oooooo+: Shell: zsh 5.9
`/:-:++oooo+: Terminal: kitty
`/++++/+++++++: CPU: Intel i5-6200U (4) @ 2.300GHz
`/++++++++++++++: GPU: Intel Skylake-U GT2 [HD Graphics 520]
`/+++ooooooooooooo/` Memory: 1703MiB / 3792MiB
./ooosssso++osssssso+`
.oossssso-````/ossssss+`
-osssssso. :ssssssso.
:osssssss/ osssso+++.
/ossssssss/ +ssssooo/-
`/ossssso+/:- -:/+osssso+-
`+sso+:-` `.-/+oso:
`++:. `-/+/
.` `/
```

View file

@ -0,0 +1,286 @@
---
Author: Antoine Foucault-Castelli
Date: 17/03/2026
Bibliography: @karmiFiabiliteOptimisationSystemes @ghorbelEffectBrakeLocation2020a @zhengAnalyticalApproachMesh2022
Version: 4.0
---
| Newmark parameters | Value |
| ------------------------------------ | --------- |
| $\gamma$ | |
| $\beta$ | |
| **Gears** | **Value** |
| $Z1$ | |
| $Z2$ | |
| $m_0$ | |
| $b$ | |
| $d_{i1}$ | |
| $d_{i_2}$ | |
| $N_1$ | |
| $\alpha$ | |
| $\rho_{steel}$ | |
| **Masses** | **Value** |
| $m_{in}$ | |
| $m_{pinion12}$ | |
| $m_{pinion21}$ | |
| $m_{out}$ | |
| **Stiffness** | |
| $k_x=k_{x_1}=k_{x_2}$ | |
| $k_y=k_{y_1}=k_{y_2}$ | |
| $k_\theta=k_{\theta_1}=k_{\theta_2}$ | |
| $k_{mesh_{mean}}$ | |
| **Damping** | |
| $\eta$ | |
| $\beta$ | |
| **Wind excitat** | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
# Gearbox simulation
## Structure
```
main.m
func.m
time_sampling
inertia
gearbox_geometry
mesh_stiffness
wind_excitation
mass_matrix
stiffness_matrix
stiffness_update
damping_matrix
forces_matrix
initialization
newmark
parameters.m
display.m
disp_xy(t,x,i)
speed_xy(t,v,i)
acc_xy(t,v,i)
disp_theta(t,x,i)
speed_theta(t,v,i)
acc_theta(t,a,i)
mesh_stiffness(t,k_var,k_mean,i)
taero(t,T_aero,i)
rms_on_x(x)
spectral_on_x(x,i,tf,dt)
plot_x(t,x,i)
only_display.m
display_update.m
```
`main.m` is the launcher for the full code compilation
`func` is the function class, containing every function used in the code
`parameters` is the model parameters document
`display` is the displayer for figures
`only_display` to skip non-needed full compilation
`display_update` to update a single graph if needed
## How does it work ?
**For Matlab under windows :**
open matlab and launch main.m
> [!WARNING]
> remove `graphics_toolkit("gnuplot")` which is only useful for Octave visualization
**For Octave/Linux :**
```bash
cd [path_to_cloned]/code/versions/[current_version]/
octave
>>> run main.m
>>>
```
## Informations
- [x] Verified code with base code and paper
- [x] Implemented wind excitation
- [x] Implemented Ghorbel parameters
- [~] Add varying output torque depending on number of tooth in contact ?
- [~] add brake ?
- [~] Variation of C ?
- [~] ODE45 ?
- [x] Displays from last version (in class)
- [x] New mesh stiffness variation model (trapezoidal)
- [x] Print in pdf
- [ ] Errors/defects implementation
- [ ] profile error
- [ ] assembly defect (change on gear stiffness)
- [ ] README
- [x] Maths
- [ ] Source(s)
- [ ] Random models implementation
- [x] Display
- [x] time response on a2
- [x] speed response
- [x] x movement (vs y movement ?)
- [x] RMS STD Kurtosis
- [ ] Tests
- [ ] different speed
- [ ] different blade radii
## Maths
The model is represented by two 4DDL shafts in a gear connection : $x$ and $y$ are free at the pinion, $\theta$ is free at both ends of the shaft (input/output is $\theta_{ii}$ and meshing rotation is $\theta_{ij}$).
### Parameters
### Energy equations
$$
\frac{\partial Ep}{\partial q_i}+
\frac{d}{dt}\left(\frac{Ec}{\dot{q}_i}\right)-
\frac{\partial Ec}{\partial q_i}+
\frac{\partial D}{\partial \dot{q}_i}
=\frac{W}{\partial q_i}
\\
Ec = \frac{1}{2}m_1*\dot{x}_1^2+
\frac{1}{2}m_1*\dot{y}_1^2+
\frac{1}{2}I_{11}\dot{\theta}_{11}^2+
\frac{1}{2}I_{12}\dot{\theta}_{12}^2+
\frac{1}{2}m_2*\dot{x_2}^2+
\frac{1}{2}m_2*\dot{y_2}^2+
\frac{1}{2}I_{22}\dot{\theta}_{22}^2+
\frac{1}{2}I_{21}\dot{\theta}_{21}^2
\\
Ep = \frac{1}{2}k_{x_1}x_{1}^2+
\frac{1}{2}k_{y_1}y_{1}^2+
\frac{1}{2}k_{\theta_1}(\theta_{11}-\theta_{12})^2+
\frac{1}{2}k_{x_2}x_{2}^2+
\frac{1}{2}k_{y_2}y_{2}^2+
\frac{1}{2}k_{\theta_2}(\theta_{21}-\theta_{22})^2+
\frac{1}{2}K_e(t)\delta_1^2(t)
$$
### Equations of movement
$Ep$ and $Ec$ are separated between the two shaft (1 and 2)
$$
\begin{cases}
&\frac{\partial Ep_1}{\partial x_1}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{x}_1}\right)=m_1\ddot{x}_1+k_{x1}x_1+sin(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial y_1}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{y}_1}\right)=m_1\ddot{y}_1+k_{y1}y_1+cos(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial \theta_{11}}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{\theta}_{11}}\right)=I_{11}\ddot{\theta}_{11}+k_{\theta 1}(\theta_{11}-\theta_{12})=Cm \\
&\frac{\partial Ep_1}{\partial \theta_{12}}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{\theta}_{12}}\right)=I_{12}\ddot{\theta}_{12}+k_{\theta 1}(\theta_{12}-\theta_{11})+K_e(t)r_{b12}\delta_1(t)=0 \\
&\frac{\partial Ep_1}{\partial x_2}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{x}_2}\right)=m_2\ddot{x}_2+k_{x2}x_2-sin(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial y_2}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{y}_2}\right)=m_2\ddot{y}_2+k_{y2}y_2-cos(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial \theta_{22}}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{\theta}_{22}}\right)=I_{22}\ddot{\theta}_{22}-k_{\theta 2}(\theta_{21}-\theta_{22})=-Cr \\
&\frac{\partial Ep_1}{\partial \theta_{21}}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{\theta}_{21}}\right)=I_{21}\ddot{\theta}_{21}-k_{\theta 2}(\theta_{21}-\theta_{22})+K_e(t)r_{b21}\delta_1(t)=0
\end{cases}
$$
With $\delta_i(t)=(x_1-x_2)sin(\alpha)+(y_1-y_2)cos(\alpha)+\theta_{12}r_{b1}+\theta_{21}r_{b2}$ and $r_{bij}$ the base radius of pinions, $K_e$ is the varying meshing stiffness, mass $m_i = \pi r^2_{i}\rho$ for both pinions, and $I_{ij} = \frac{1}{2}m_{ij}r_{ij}^2$ for pinions and input/output inertia.
### Matrices
**Equation to solve :**
$$
[M]\{\ddot{q}\}+C\{\dot{q}\}+([Ks]+[K(t)])\{q\}=\{F_0\} \\
\{q\}=\{x_1,y_1,\theta_{11},\theta_{12},x_2,y_2,\theta_{22},\theta_{21}\}
$$
**Mass matrix :**
$$
M =
\begin{bmatrix}
m_1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & m_1 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & I_{11} & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & I_{12} & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & m_2 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & m_2 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & I_{22} & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & I_{21} \\
\end{bmatrix} \\
$$
With $m_1$ mass of shaft 1 and $m_2$ mass of shaft 2
**Variable mesh stiffness matrix**
$$
K(t)= K_e(t)
\begin{bmatrix}
sin(\alpha)^2 & sin(\alpha).cos(\alpha) & 0 & r_1.sin(\alpha) & -sin(\alpha)^2 & -sin(\alpha).cos(\alpha) & 0 & r_2.sin(\alpha) \\
sin(\alpha).cos(\alpha) & cos(\alpha)^2 & 0 & r_1.cos(\alpha) & -sin(\alpha).cos(\alpha) & -cos(\alpha)^2 & 0 & r_2.cos(\alpha) \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
r_1.sin(\alpha) & r_1.cos(\alpha) & 0 & r_1^2 & -r_1.sin(\alpha) & -r_1.cos(\alpha) & 0 & r_1.r_2 \\
-sin(\alpha)^2 & -sin(\alpha).cos(\alpha) & 0 & -r_1.sin(\alpha) & sin(\alpha)^2 & sin(\alpha).cos(\alpha) & 0 & -r_2.sin(\alpha) \\
-sin(\alpha).cos(\alpha) & -cos(\alpha)^2 & 0 & -r_1.cos(\alpha) & sin(\alpha).cos(\alpha) & cos(\alpha)^2 & 0 & -r_2.cos(\alpha) \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
r_2.sin(\alpha) & r_2.cos(\alpha) & 0 & r_1.r_2 & -r_2.sin(\alpha) & -r_2.cos(\alpha) & 0 & r_2^2 \\
\end{bmatrix}
$$
> [!NOTE]
>
> In matlab, cos and sin terms will be noted as $s_i$, for visual simplification
**Constant stiffness matrix**
$$
Ks=
\begin{bmatrix}
k_{x1} & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & k_{y1} & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & k_{\theta1}& -k_{\theta1} & 0 & 0 & 0 & 0 \\
0 & 0 & -k_{\theta1} & k_{\theta1} & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & k_{x1} & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & k_{y1} & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & k_{\theta2} & -k_{\theta2} \\
0 & 0 & 0 & 0 & 0 & 0 & -k_{\theta2} & k_{\theta2} \\
\end{bmatrix}
$$
**Damping matrix**
$$
C = \eta M+\beta K_{mean}
$$
**Forces**
$$
F =
\begin{bmatrix}
0 \\ 0 \\ T_{in} \\ 0 \\ 0\\ 0\\ T_{out}\\ 0
\end{bmatrix}
$$
## TO FIX
> [!ATTENTION]
> ...
## Machine specifications
Example of computational time : `44sec for fs=2500` / `n_periods = 10`
```
-`
.o+`
`ooo/ OS: Arch Linux x86_64
`+oooo: Host: 20EV000UFR ThinkPad E560
`+oooooo: Kernel: 6.19.8-arch1-1
-+oooooo+: Shell: zsh 5.9
`/:-:++oooo+: Terminal: kitty
`/++++/+++++++: CPU: Intel i5-6200U (4) @ 2.300GHz
`/++++++++++++++: GPU: Intel Skylake-U GT2 [HD Graphics 520]
`/+++ooooooooooooo/` Memory: 1703MiB / 3792MiB
./ooosssso++osssssso+`
.oossssso-````/ossssss+`
-osssssso. :ssssssso.
:osssssss/ osssso+++.
/ossssssss/ +ssssooo/-
`/ossssso+/:- -:/+osssso+-
`+sso+:-` `.-/+oso:
`++:. `-/+/
.` `/
```

View file

@ -0,0 +1,286 @@
---
Author: Antoine Foucault-Castelli
Date: 17/03/2026
Bibliography: @karmiFiabiliteOptimisationSystemes @ghorbelEffectBrakeLocation2020a @zhengAnalyticalApproachMesh2022
Version: 4.0
---
| Newmark parameters | Value |
| ------------------------------------ | --------- |
| $\gamma$ | |
| $\beta$ | |
| **Gears** | **Value** |
| $Z1$ | |
| $Z2$ | |
| $m_0$ | |
| $b$ | |
| $d_{i1}$ | |
| $d_{i_2}$ | |
| $N_1$ | |
| $\alpha$ | |
| $\rho_{steel}$ | |
| **Masses** | **Value** |
| $m_{in}$ | |
| $m_{pinion12}$ | |
| $m_{pinion21}$ | |
| $m_{out}$ | |
| **Stiffness** | |
| $k_x=k_{x_1}=k_{x_2}$ | |
| $k_y=k_{y_1}=k_{y_2}$ | |
| $k_\theta=k_{\theta_1}=k_{\theta_2}$ | |
| $k_{mesh_{mean}}$ | |
| **Damping** | |
| Mass related $\eta$ | |
| Stiffness relat$\beta$ | |
| **Wind excitation** | |
| Blade radius $r_{blade}$ | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
# Gearbox simulation
## Structure
```
main.m
func.m
time_sampling
inertia
gearbox_geometry
mesh_stiffness
wind_excitation
mass_matrix
stiffness_matrix
stiffness_update
damping_matrix
forces_matrix
initialization
newmark
parameters.m
display.m
disp_xy(t,x,i)
speed_xy(t,v,i)
acc_xy(t,v,i)
disp_theta(t,x,i)
speed_theta(t,v,i)
acc_theta(t,a,i)
mesh_stiffness(t,k_var,k_mean,i)
taero(t,T_aero,i)
rms_on_x(x)
spectral_on_x(x,i,tf,dt)
plot_x(t,x,i)
only_display.m
display_update.m
```
`main.m` is the launcher for the full code compilation
`func` is the function class, containing every function used in the code
`parameters` is the model parameters document
`display` is the displayer for figures
`only_display` to skip non-needed full compilation
`display_update` to update a single graph if needed
## How does it work ?
**For Matlab under windows :**
open matlab and launch main.m
> [!WARNING]
> remove `graphics_toolkit("gnuplot")` which is only useful for Octave visualization
**For Octave/Linux :**
```bash
cd [path_to_cloned]/code/versions/[current_version]/
octave
>>> run main.m
>>>
```
## Informations
- [x] Verified code with base code and paper
- [x] Implemented wind excitation
- [x] Implemented Ghorbel parameters
- [~] Add varying output torque depending on number of tooth in contact ?
- [~] add brake ?
- [~] Variation of C ?
- [~] ODE45 ?
- [x] Displays from last version (in class)
- [x] New mesh stiffness variation model (trapezoidal)
- [x] Print in pdf
- [ ] Errors/defects implementation
- [ ] profile error
- [ ] assembly defect (change on gear stiffness)
- [ ] README
- [x] Maths
- [ ] Source(s)
- [ ] Random models implementation
- [x] Display
- [x] time response on a2
- [x] speed response
- [x] x movement (vs y movement ?)
- [x] RMS STD Kurtosis
- [ ] Tests
- [ ] different speed
- [ ] different blade radii
## Maths
The model is represented by two 4DDL shafts in a gear connection : $x$ and $y$ are free at the pinion, $\theta$ is free at both ends of the shaft (input/output is $\theta_{ii}$ and meshing rotation is $\theta_{ij}$).
### Parameters
### Energy equations
$$
\frac{\partial Ep}{\partial q_i}+
\frac{d}{dt}\left(\frac{Ec}{\dot{q}_i}\right)-
\frac{\partial Ec}{\partial q_i}+
\frac{\partial D}{\partial \dot{q}_i}
=\frac{W}{\partial q_i}
\\
Ec = \frac{1}{2}m_1*\dot{x}_1^2+
\frac{1}{2}m_1*\dot{y}_1^2+
\frac{1}{2}I_{11}\dot{\theta}_{11}^2+
\frac{1}{2}I_{12}\dot{\theta}_{12}^2+
\frac{1}{2}m_2*\dot{x_2}^2+
\frac{1}{2}m_2*\dot{y_2}^2+
\frac{1}{2}I_{22}\dot{\theta}_{22}^2+
\frac{1}{2}I_{21}\dot{\theta}_{21}^2
\\
Ep = \frac{1}{2}k_{x_1}x_{1}^2+
\frac{1}{2}k_{y_1}y_{1}^2+
\frac{1}{2}k_{\theta_1}(\theta_{11}-\theta_{12})^2+
\frac{1}{2}k_{x_2}x_{2}^2+
\frac{1}{2}k_{y_2}y_{2}^2+
\frac{1}{2}k_{\theta_2}(\theta_{21}-\theta_{22})^2+
\frac{1}{2}K_e(t)\delta_1^2(t)
$$
### Equations of movement
$Ep$ and $Ec$ are separated between the two shaft (1 and 2)
$$
\begin{cases}
&\frac{\partial Ep_1}{\partial x_1}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{x}_1}\right)=m_1\ddot{x}_1+k_{x1}x_1+sin(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial y_1}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{y}_1}\right)=m_1\ddot{y}_1+k_{y1}y_1+cos(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial \theta_{11}}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{\theta}_{11}}\right)=I_{11}\ddot{\theta}_{11}+k_{\theta 1}(\theta_{11}-\theta_{12})=Cm \\
&\frac{\partial Ep_1}{\partial \theta_{12}}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{\theta}_{12}}\right)=I_{12}\ddot{\theta}_{12}+k_{\theta 1}(\theta_{12}-\theta_{11})+K_e(t)r_{b12}\delta_1(t)=0 \\
&\frac{\partial Ep_1}{\partial x_2}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{x}_2}\right)=m_2\ddot{x}_2+k_{x2}x_2-sin(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial y_2}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{y}_2}\right)=m_2\ddot{y}_2+k_{y2}y_2-cos(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial \theta_{22}}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{\theta}_{22}}\right)=I_{22}\ddot{\theta}_{22}-k_{\theta 2}(\theta_{21}-\theta_{22})=-Cr \\
&\frac{\partial Ep_1}{\partial \theta_{21}}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{\theta}_{21}}\right)=I_{21}\ddot{\theta}_{21}-k_{\theta 2}(\theta_{21}-\theta_{22})+K_e(t)r_{b21}\delta_1(t)=0
\end{cases}
$$
With $\delta_i(t)=(x_1-x_2)sin(\alpha)+(y_1-y_2)cos(\alpha)+\theta_{12}r_{b1}+\theta_{21}r_{b2}$ and $r_{bij}$ the base radius of pinions, $K_e$ is the varying meshing stiffness, mass $m_i = \pi r^2_{i}\rho$ for both pinions, and $I_{ij} = \frac{1}{2}m_{ij}r_{ij}^2$ for pinions and input/output inertia.
### Matrices
**Equation to solve :**
$$
[M]\{\ddot{q}\}+C\{\dot{q}\}+([Ks]+[K(t)])\{q\}=\{F_0\} \\
\{q\}=\{x_1,y_1,\theta_{11},\theta_{12},x_2,y_2,\theta_{22},\theta_{21}\}
$$
**Mass matrix :**
$$
M =
\begin{bmatrix}
m_1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & m_1 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & I_{11} & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & I_{12} & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & m_2 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & m_2 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & I_{22} & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & I_{21} \\
\end{bmatrix} \\
$$
With $m_1$ mass of shaft 1 and $m_2$ mass of shaft 2
**Variable mesh stiffness matrix**
$$
K(t)= K_e(t)
\begin{bmatrix}
sin(\alpha)^2 & sin(\alpha).cos(\alpha) & 0 & r_1.sin(\alpha) & -sin(\alpha)^2 & -sin(\alpha).cos(\alpha) & 0 & r_2.sin(\alpha) \\
sin(\alpha).cos(\alpha) & cos(\alpha)^2 & 0 & r_1.cos(\alpha) & -sin(\alpha).cos(\alpha) & -cos(\alpha)^2 & 0 & r_2.cos(\alpha) \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
r_1.sin(\alpha) & r_1.cos(\alpha) & 0 & r_1^2 & -r_1.sin(\alpha) & -r_1.cos(\alpha) & 0 & r_1.r_2 \\
-sin(\alpha)^2 & -sin(\alpha).cos(\alpha) & 0 & -r_1.sin(\alpha) & sin(\alpha)^2 & sin(\alpha).cos(\alpha) & 0 & -r_2.sin(\alpha) \\
-sin(\alpha).cos(\alpha) & -cos(\alpha)^2 & 0 & -r_1.cos(\alpha) & sin(\alpha).cos(\alpha) & cos(\alpha)^2 & 0 & -r_2.cos(\alpha) \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
r_2.sin(\alpha) & r_2.cos(\alpha) & 0 & r_1.r_2 & -r_2.sin(\alpha) & -r_2.cos(\alpha) & 0 & r_2^2 \\
\end{bmatrix}
$$
> [!NOTE]
>
> In matlab, cos and sin terms will be noted as $s_i$, for visual simplification
**Constant stiffness matrix**
$$
Ks=
\begin{bmatrix}
k_{x1} & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & k_{y1} & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & k_{\theta1}& -k_{\theta1} & 0 & 0 & 0 & 0 \\
0 & 0 & -k_{\theta1} & k_{\theta1} & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & k_{x1} & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & k_{y1} & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & k_{\theta2} & -k_{\theta2} \\
0 & 0 & 0 & 0 & 0 & 0 & -k_{\theta2} & k_{\theta2} \\
\end{bmatrix}
$$
**Damping matrix**
$$
C = \eta M+\beta K_{mean}
$$
**Forces**
$$
F =
\begin{bmatrix}
0 \\ 0 \\ T_{in} \\ 0 \\ 0\\ 0\\ T_{out}\\ 0
\end{bmatrix}
$$
## TO FIX
> [!ATTENTION]
> ...
## Machine specifications
Example of computational time : `44sec for fs=2500` / `n_periods = 10`
```
-`
.o+`
`ooo/ OS: Arch Linux x86_64
`+oooo: Host: 20EV000UFR ThinkPad E560
`+oooooo: Kernel: 6.19.8-arch1-1
-+oooooo+: Shell: zsh 5.9
`/:-:++oooo+: Terminal: kitty
`/++++/+++++++: CPU: Intel i5-6200U (4) @ 2.300GHz
`/++++++++++++++: GPU: Intel Skylake-U GT2 [HD Graphics 520]
`/+++ooooooooooooo/` Memory: 1703MiB / 3792MiB
./ooosssso++osssssso+`
.oossssso-````/ossssss+`
-osssssso. :ssssssso.
:osssssss/ osssso+++.
/ossssssss/ +ssssooo/-
`/ossssso+/:- -:/+osssso+-
`+sso+:-` `.-/+oso:
`++:. `-/+/
.` `/
```

View file

@ -0,0 +1,286 @@
---
Author: Antoine Foucault-Castelli
Date: 17/03/2026
Bibliography: @karmiFiabiliteOptimisationSystemes @ghorbelEffectBrakeLocation2020a @zhengAnalyticalApproachMesh2022
Version: 4.0
---
| Newmark parameters | Value |
| ------------------------------------- | --------- |
| $\gamma$ | |
| $\beta$ | |
| **Gears** | **Value** |
| $Z1$ | |
| $Z2$ | |
| $m_0$ | |
| $b$ | |
| $d_{i1}$ | |
| $d_{i_2}$ | |
| $N_1$ | |
| $\alpha$ | |
| $\rho_{steel}$ | |
| **Masses** | **Value** |
| $m_{in}$ | |
| $m_{pinion12}$ | |
| $m_{pinion21}$ | |
| $m_{out}$ | |
| **Stiffness** | |
| Flexion k_x=k_{x_1}=k_{x_2}$ | |
| $k_y=k_{y_1}=k_{y_2}$ | |
| $k_\theta=k_{\theta_1}=k_{\theta_2}$ | |
| Mean mesh stiffness $k_{mesh_{mean}}$ | |
| **Damping** | |
| Mass related $\eta$ | |
| Stiffness related $\beta$ | |
| **Wind excitation** | |
| Blade radius $r_{blade}$ | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
# Gearbox simulation
## Structure
```
main.m
func.m
time_sampling
inertia
gearbox_geometry
mesh_stiffness
wind_excitation
mass_matrix
stiffness_matrix
stiffness_update
damping_matrix
forces_matrix
initialization
newmark
parameters.m
display.m
disp_xy(t,x,i)
speed_xy(t,v,i)
acc_xy(t,v,i)
disp_theta(t,x,i)
speed_theta(t,v,i)
acc_theta(t,a,i)
mesh_stiffness(t,k_var,k_mean,i)
taero(t,T_aero,i)
rms_on_x(x)
spectral_on_x(x,i,tf,dt)
plot_x(t,x,i)
only_display.m
display_update.m
```
`main.m` is the launcher for the full code compilation
`func` is the function class, containing every function used in the code
`parameters` is the model parameters document
`display` is the displayer for figures
`only_display` to skip non-needed full compilation
`display_update` to update a single graph if needed
## How does it work ?
**For Matlab under windows :**
open matlab and launch main.m
> [!WARNING]
> remove `graphics_toolkit("gnuplot")` which is only useful for Octave visualization
**For Octave/Linux :**
```bash
cd [path_to_cloned]/code/versions/[current_version]/
octave
>>> run main.m
>>>
```
## Informations
- [x] Verified code with base code and paper
- [x] Implemented wind excitation
- [x] Implemented Ghorbel parameters
- [~] Add varying output torque depending on number of tooth in contact ?
- [~] add brake ?
- [~] Variation of C ?
- [~] ODE45 ?
- [x] Displays from last version (in class)
- [x] New mesh stiffness variation model (trapezoidal)
- [x] Print in pdf
- [ ] Errors/defects implementation
- [ ] profile error
- [ ] assembly defect (change on gear stiffness)
- [ ] README
- [x] Maths
- [ ] Source(s)
- [ ] Random models implementation
- [x] Display
- [x] time response on a2
- [x] speed response
- [x] x movement (vs y movement ?)
- [x] RMS STD Kurtosis
- [ ] Tests
- [ ] different speed
- [ ] different blade radii
## Maths
The model is represented by two 4DDL shafts in a gear connection : $x$ and $y$ are free at the pinion, $\theta$ is free at both ends of the shaft (input/output is $\theta_{ii}$ and meshing rotation is $\theta_{ij}$).
### Parameters
### Energy equations
$$
\frac{\partial Ep}{\partial q_i}+
\frac{d}{dt}\left(\frac{Ec}{\dot{q}_i}\right)-
\frac{\partial Ec}{\partial q_i}+
\frac{\partial D}{\partial \dot{q}_i}
=\frac{W}{\partial q_i}
\\
Ec = \frac{1}{2}m_1*\dot{x}_1^2+
\frac{1}{2}m_1*\dot{y}_1^2+
\frac{1}{2}I_{11}\dot{\theta}_{11}^2+
\frac{1}{2}I_{12}\dot{\theta}_{12}^2+
\frac{1}{2}m_2*\dot{x_2}^2+
\frac{1}{2}m_2*\dot{y_2}^2+
\frac{1}{2}I_{22}\dot{\theta}_{22}^2+
\frac{1}{2}I_{21}\dot{\theta}_{21}^2
\\
Ep = \frac{1}{2}k_{x_1}x_{1}^2+
\frac{1}{2}k_{y_1}y_{1}^2+
\frac{1}{2}k_{\theta_1}(\theta_{11}-\theta_{12})^2+
\frac{1}{2}k_{x_2}x_{2}^2+
\frac{1}{2}k_{y_2}y_{2}^2+
\frac{1}{2}k_{\theta_2}(\theta_{21}-\theta_{22})^2+
\frac{1}{2}K_e(t)\delta_1^2(t)
$$
### Equations of movement
$Ep$ and $Ec$ are separated between the two shaft (1 and 2)
$$
\begin{cases}
&\frac{\partial Ep_1}{\partial x_1}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{x}_1}\right)=m_1\ddot{x}_1+k_{x1}x_1+sin(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial y_1}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{y}_1}\right)=m_1\ddot{y}_1+k_{y1}y_1+cos(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial \theta_{11}}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{\theta}_{11}}\right)=I_{11}\ddot{\theta}_{11}+k_{\theta 1}(\theta_{11}-\theta_{12})=Cm \\
&\frac{\partial Ep_1}{\partial \theta_{12}}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{\theta}_{12}}\right)=I_{12}\ddot{\theta}_{12}+k_{\theta 1}(\theta_{12}-\theta_{11})+K_e(t)r_{b12}\delta_1(t)=0 \\
&\frac{\partial Ep_1}{\partial x_2}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{x}_2}\right)=m_2\ddot{x}_2+k_{x2}x_2-sin(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial y_2}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{y}_2}\right)=m_2\ddot{y}_2+k_{y2}y_2-cos(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial \theta_{22}}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{\theta}_{22}}\right)=I_{22}\ddot{\theta}_{22}-k_{\theta 2}(\theta_{21}-\theta_{22})=-Cr \\
&\frac{\partial Ep_1}{\partial \theta_{21}}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{\theta}_{21}}\right)=I_{21}\ddot{\theta}_{21}-k_{\theta 2}(\theta_{21}-\theta_{22})+K_e(t)r_{b21}\delta_1(t)=0
\end{cases}
$$
With $\delta_i(t)=(x_1-x_2)sin(\alpha)+(y_1-y_2)cos(\alpha)+\theta_{12}r_{b1}+\theta_{21}r_{b2}$ and $r_{bij}$ the base radius of pinions, $K_e$ is the varying meshing stiffness, mass $m_i = \pi r^2_{i}\rho$ for both pinions, and $I_{ij} = \frac{1}{2}m_{ij}r_{ij}^2$ for pinions and input/output inertia.
### Matrices
**Equation to solve :**
$$
[M]\{\ddot{q}\}+C\{\dot{q}\}+([Ks]+[K(t)])\{q\}=\{F_0\} \\
\{q\}=\{x_1,y_1,\theta_{11},\theta_{12},x_2,y_2,\theta_{22},\theta_{21}\}
$$
**Mass matrix :**
$$
M =
\begin{bmatrix}
m_1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & m_1 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & I_{11} & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & I_{12} & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & m_2 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & m_2 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & I_{22} & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & I_{21} \\
\end{bmatrix} \\
$$
With $m_1$ mass of shaft 1 and $m_2$ mass of shaft 2
**Variable mesh stiffness matrix**
$$
K(t)= K_e(t)
\begin{bmatrix}
sin(\alpha)^2 & sin(\alpha).cos(\alpha) & 0 & r_1.sin(\alpha) & -sin(\alpha)^2 & -sin(\alpha).cos(\alpha) & 0 & r_2.sin(\alpha) \\
sin(\alpha).cos(\alpha) & cos(\alpha)^2 & 0 & r_1.cos(\alpha) & -sin(\alpha).cos(\alpha) & -cos(\alpha)^2 & 0 & r_2.cos(\alpha) \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
r_1.sin(\alpha) & r_1.cos(\alpha) & 0 & r_1^2 & -r_1.sin(\alpha) & -r_1.cos(\alpha) & 0 & r_1.r_2 \\
-sin(\alpha)^2 & -sin(\alpha).cos(\alpha) & 0 & -r_1.sin(\alpha) & sin(\alpha)^2 & sin(\alpha).cos(\alpha) & 0 & -r_2.sin(\alpha) \\
-sin(\alpha).cos(\alpha) & -cos(\alpha)^2 & 0 & -r_1.cos(\alpha) & sin(\alpha).cos(\alpha) & cos(\alpha)^2 & 0 & -r_2.cos(\alpha) \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
r_2.sin(\alpha) & r_2.cos(\alpha) & 0 & r_1.r_2 & -r_2.sin(\alpha) & -r_2.cos(\alpha) & 0 & r_2^2 \\
\end{bmatrix}
$$
> [!NOTE]
>
> In matlab, cos and sin terms will be noted as $s_i$, for visual simplification
**Constant stiffness matrix**
$$
Ks=
\begin{bmatrix}
k_{x1} & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & k_{y1} & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & k_{\theta1}& -k_{\theta1} & 0 & 0 & 0 & 0 \\
0 & 0 & -k_{\theta1} & k_{\theta1} & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & k_{x1} & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & k_{y1} & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & k_{\theta2} & -k_{\theta2} \\
0 & 0 & 0 & 0 & 0 & 0 & -k_{\theta2} & k_{\theta2} \\
\end{bmatrix}
$$
**Damping matrix**
$$
C = \eta M+\beta K_{mean}
$$
**Forces**
$$
F =
\begin{bmatrix}
0 \\ 0 \\ T_{in} \\ 0 \\ 0\\ 0\\ T_{out}\\ 0
\end{bmatrix}
$$
## TO FIX
> [!ATTENTION]
> ...
## Machine specifications
Example of computational time : `44sec for fs=2500` / `n_periods = 10`
```
-`
.o+`
`ooo/ OS: Arch Linux x86_64
`+oooo: Host: 20EV000UFR ThinkPad E560
`+oooooo: Kernel: 6.19.8-arch1-1
-+oooooo+: Shell: zsh 5.9
`/:-:++oooo+: Terminal: kitty
`/++++/+++++++: CPU: Intel i5-6200U (4) @ 2.300GHz
`/++++++++++++++: GPU: Intel Skylake-U GT2 [HD Graphics 520]
`/+++ooooooooooooo/` Memory: 1703MiB / 3792MiB
./ooosssso++osssssso+`
.oossssso-````/ossssss+`
-osssssso. :ssssssso.
:osssssss/ osssso+++.
/ossssssss/ +ssssooo/-
`/ossssso+/:- -:/+osssso+-
`+sso+:-` `.-/+oso:
`++:. `-/+/
.` `/
```

View file

@ -0,0 +1,286 @@
---
Author: Antoine Foucault-Castelli
Date: 17/03/2026
Bibliography: @karmiFiabiliteOptimisationSystemes @ghorbelEffectBrakeLocation2020a @zhengAnalyticalApproachMesh2022
Version: 4.0
---
| Newmark parameters | Value |
| ------------------------------------------- | --------- |
| $\gamma$ | |
| $\beta$ | |
| **Gears** | **Value** |
| $Z1$ | |
| $Z2$ | |
| $m_0$ | |
| $b$ | |
| $d_{i1}$ | |
| $d_{i_2}$ | |
| $N_1$ | |
| $\alpha$ | |
| $\rho_{steel}$ | |
| **Masses** | **Value** |
| $m_{in}$ | |
| $m_{pinion12}$ | |
| $m_{pinion21}$ | |
| $m_{out}$ | |
| **Stiffness** | |
| Flexion $x$ : k_x=k_{x_1}=k_{x_2}$ | |
| Flexion $y$ : k_y=k_{y_1}=k_{y_2}$ | |
| Torsion$k_\theta=k_{\theta_1}=k_{\theta_2}$ | |
| Mean mesh stiffness $k_{mesh_{mean}}$ | |
| **Damping** | |
| Mass related $\eta$ | |
| Stiffness related $\beta$ | |
| **Wind excitation** | |
| Blade radius $r_{blade}$ | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
# Gearbox simulation
## Structure
```
main.m
func.m
time_sampling
inertia
gearbox_geometry
mesh_stiffness
wind_excitation
mass_matrix
stiffness_matrix
stiffness_update
damping_matrix
forces_matrix
initialization
newmark
parameters.m
display.m
disp_xy(t,x,i)
speed_xy(t,v,i)
acc_xy(t,v,i)
disp_theta(t,x,i)
speed_theta(t,v,i)
acc_theta(t,a,i)
mesh_stiffness(t,k_var,k_mean,i)
taero(t,T_aero,i)
rms_on_x(x)
spectral_on_x(x,i,tf,dt)
plot_x(t,x,i)
only_display.m
display_update.m
```
`main.m` is the launcher for the full code compilation
`func` is the function class, containing every function used in the code
`parameters` is the model parameters document
`display` is the displayer for figures
`only_display` to skip non-needed full compilation
`display_update` to update a single graph if needed
## How does it work ?
**For Matlab under windows :**
open matlab and launch main.m
> [!WARNING]
> remove `graphics_toolkit("gnuplot")` which is only useful for Octave visualization
**For Octave/Linux :**
```bash
cd [path_to_cloned]/code/versions/[current_version]/
octave
>>> run main.m
>>>
```
## Informations
- [x] Verified code with base code and paper
- [x] Implemented wind excitation
- [x] Implemented Ghorbel parameters
- [~] Add varying output torque depending on number of tooth in contact ?
- [~] add brake ?
- [~] Variation of C ?
- [~] ODE45 ?
- [x] Displays from last version (in class)
- [x] New mesh stiffness variation model (trapezoidal)
- [x] Print in pdf
- [ ] Errors/defects implementation
- [ ] profile error
- [ ] assembly defect (change on gear stiffness)
- [ ] README
- [x] Maths
- [ ] Source(s)
- [ ] Random models implementation
- [x] Display
- [x] time response on a2
- [x] speed response
- [x] x movement (vs y movement ?)
- [x] RMS STD Kurtosis
- [ ] Tests
- [ ] different speed
- [ ] different blade radii
## Maths
The model is represented by two 4DDL shafts in a gear connection : $x$ and $y$ are free at the pinion, $\theta$ is free at both ends of the shaft (input/output is $\theta_{ii}$ and meshing rotation is $\theta_{ij}$).
### Parameters
### Energy equations
$$
\frac{\partial Ep}{\partial q_i}+
\frac{d}{dt}\left(\frac{Ec}{\dot{q}_i}\right)-
\frac{\partial Ec}{\partial q_i}+
\frac{\partial D}{\partial \dot{q}_i}
=\frac{W}{\partial q_i}
\\
Ec = \frac{1}{2}m_1*\dot{x}_1^2+
\frac{1}{2}m_1*\dot{y}_1^2+
\frac{1}{2}I_{11}\dot{\theta}_{11}^2+
\frac{1}{2}I_{12}\dot{\theta}_{12}^2+
\frac{1}{2}m_2*\dot{x_2}^2+
\frac{1}{2}m_2*\dot{y_2}^2+
\frac{1}{2}I_{22}\dot{\theta}_{22}^2+
\frac{1}{2}I_{21}\dot{\theta}_{21}^2
\\
Ep = \frac{1}{2}k_{x_1}x_{1}^2+
\frac{1}{2}k_{y_1}y_{1}^2+
\frac{1}{2}k_{\theta_1}(\theta_{11}-\theta_{12})^2+
\frac{1}{2}k_{x_2}x_{2}^2+
\frac{1}{2}k_{y_2}y_{2}^2+
\frac{1}{2}k_{\theta_2}(\theta_{21}-\theta_{22})^2+
\frac{1}{2}K_e(t)\delta_1^2(t)
$$
### Equations of movement
$Ep$ and $Ec$ are separated between the two shaft (1 and 2)
$$
\begin{cases}
&\frac{\partial Ep_1}{\partial x_1}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{x}_1}\right)=m_1\ddot{x}_1+k_{x1}x_1+sin(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial y_1}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{y}_1}\right)=m_1\ddot{y}_1+k_{y1}y_1+cos(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial \theta_{11}}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{\theta}_{11}}\right)=I_{11}\ddot{\theta}_{11}+k_{\theta 1}(\theta_{11}-\theta_{12})=Cm \\
&\frac{\partial Ep_1}{\partial \theta_{12}}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{\theta}_{12}}\right)=I_{12}\ddot{\theta}_{12}+k_{\theta 1}(\theta_{12}-\theta_{11})+K_e(t)r_{b12}\delta_1(t)=0 \\
&\frac{\partial Ep_1}{\partial x_2}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{x}_2}\right)=m_2\ddot{x}_2+k_{x2}x_2-sin(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial y_2}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{y}_2}\right)=m_2\ddot{y}_2+k_{y2}y_2-cos(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial \theta_{22}}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{\theta}_{22}}\right)=I_{22}\ddot{\theta}_{22}-k_{\theta 2}(\theta_{21}-\theta_{22})=-Cr \\
&\frac{\partial Ep_1}{\partial \theta_{21}}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{\theta}_{21}}\right)=I_{21}\ddot{\theta}_{21}-k_{\theta 2}(\theta_{21}-\theta_{22})+K_e(t)r_{b21}\delta_1(t)=0
\end{cases}
$$
With $\delta_i(t)=(x_1-x_2)sin(\alpha)+(y_1-y_2)cos(\alpha)+\theta_{12}r_{b1}+\theta_{21}r_{b2}$ and $r_{bij}$ the base radius of pinions, $K_e$ is the varying meshing stiffness, mass $m_i = \pi r^2_{i}\rho$ for both pinions, and $I_{ij} = \frac{1}{2}m_{ij}r_{ij}^2$ for pinions and input/output inertia.
### Matrices
**Equation to solve :**
$$
[M]\{\ddot{q}\}+C\{\dot{q}\}+([Ks]+[K(t)])\{q\}=\{F_0\} \\
\{q\}=\{x_1,y_1,\theta_{11},\theta_{12},x_2,y_2,\theta_{22},\theta_{21}\}
$$
**Mass matrix :**
$$
M =
\begin{bmatrix}
m_1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & m_1 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & I_{11} & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & I_{12} & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & m_2 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & m_2 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & I_{22} & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & I_{21} \\
\end{bmatrix} \\
$$
With $m_1$ mass of shaft 1 and $m_2$ mass of shaft 2
**Variable mesh stiffness matrix**
$$
K(t)= K_e(t)
\begin{bmatrix}
sin(\alpha)^2 & sin(\alpha).cos(\alpha) & 0 & r_1.sin(\alpha) & -sin(\alpha)^2 & -sin(\alpha).cos(\alpha) & 0 & r_2.sin(\alpha) \\
sin(\alpha).cos(\alpha) & cos(\alpha)^2 & 0 & r_1.cos(\alpha) & -sin(\alpha).cos(\alpha) & -cos(\alpha)^2 & 0 & r_2.cos(\alpha) \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
r_1.sin(\alpha) & r_1.cos(\alpha) & 0 & r_1^2 & -r_1.sin(\alpha) & -r_1.cos(\alpha) & 0 & r_1.r_2 \\
-sin(\alpha)^2 & -sin(\alpha).cos(\alpha) & 0 & -r_1.sin(\alpha) & sin(\alpha)^2 & sin(\alpha).cos(\alpha) & 0 & -r_2.sin(\alpha) \\
-sin(\alpha).cos(\alpha) & -cos(\alpha)^2 & 0 & -r_1.cos(\alpha) & sin(\alpha).cos(\alpha) & cos(\alpha)^2 & 0 & -r_2.cos(\alpha) \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
r_2.sin(\alpha) & r_2.cos(\alpha) & 0 & r_1.r_2 & -r_2.sin(\alpha) & -r_2.cos(\alpha) & 0 & r_2^2 \\
\end{bmatrix}
$$
> [!NOTE]
>
> In matlab, cos and sin terms will be noted as $s_i$, for visual simplification
**Constant stiffness matrix**
$$
Ks=
\begin{bmatrix}
k_{x1} & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & k_{y1} & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & k_{\theta1}& -k_{\theta1} & 0 & 0 & 0 & 0 \\
0 & 0 & -k_{\theta1} & k_{\theta1} & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & k_{x1} & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & k_{y1} & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & k_{\theta2} & -k_{\theta2} \\
0 & 0 & 0 & 0 & 0 & 0 & -k_{\theta2} & k_{\theta2} \\
\end{bmatrix}
$$
**Damping matrix**
$$
C = \eta M+\beta K_{mean}
$$
**Forces**
$$
F =
\begin{bmatrix}
0 \\ 0 \\ T_{in} \\ 0 \\ 0\\ 0\\ T_{out}\\ 0
\end{bmatrix}
$$
## TO FIX
> [!ATTENTION]
> ...
## Machine specifications
Example of computational time : `44sec for fs=2500` / `n_periods = 10`
```
-`
.o+`
`ooo/ OS: Arch Linux x86_64
`+oooo: Host: 20EV000UFR ThinkPad E560
`+oooooo: Kernel: 6.19.8-arch1-1
-+oooooo+: Shell: zsh 5.9
`/:-:++oooo+: Terminal: kitty
`/++++/+++++++: CPU: Intel i5-6200U (4) @ 2.300GHz
`/++++++++++++++: GPU: Intel Skylake-U GT2 [HD Graphics 520]
`/+++ooooooooooooo/` Memory: 1703MiB / 3792MiB
./ooosssso++osssssso+`
.oossssso-````/ossssss+`
-osssssso. :ssssssso.
:osssssss/ osssso+++.
/ossssssss/ +ssssooo/-
`/ossssso+/:- -:/+osssso+-
`+sso+:-` `.-/+oso:
`++:. `-/+/
.` `/
```

View file

@ -0,0 +1,286 @@
---
Author: Antoine Foucault-Castelli
Date: 17/03/2026
Bibliography: @karmiFiabiliteOptimisationSystemes @ghorbelEffectBrakeLocation2020a @zhengAnalyticalApproachMesh2022
Version: 4.0
---
| Newmark parameters | Value |
| -------------------------------------------------- | --------- |
| $\gamma$ | |
| $\beta$ | |
| **Gears** | **Value** |
| $Z1$ | |
| $Z2$ | |
| $m_0$ | |
| $b$ | |
| $d_{i1}$ | |
| $d_{i_2}$ | |
| $N_1$ | |
| $\alpha$ | |
| $\rho_{steel}$ | |
| **Masses** | **Value** |
| $m_{in}$ | |
| $m_{pinion12}$ | |
| | |
| Output mass $m_{out}$ | |
| **Stiffness** | |
| Flexion $x$ : k_x=k_{x_1}=k_{x_2}$ | |
| Flexion $y$ : k_y=k_{y_1}=k_{y_2}$ | |
| Torsion $z$ : $k_\theta=k_{\theta_1}=k_{\theta_2}$ | |
| Mean mesh stiffness $k_{mesh_{mean}}$ | |
| **Damping** | |
| Mass related $\eta$ | |
| Stiffness related $\beta$ | |
| **Wind excitation** | |
| Blade radius $r_{blade}$ | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
# Gearbox simulation
## Structure
```
main.m
func.m
time_sampling
inertia
gearbox_geometry
mesh_stiffness
wind_excitation
mass_matrix
stiffness_matrix
stiffness_update
damping_matrix
forces_matrix
initialization
newmark
parameters.m
display.m
disp_xy(t,x,i)
speed_xy(t,v,i)
acc_xy(t,v,i)
disp_theta(t,x,i)
speed_theta(t,v,i)
acc_theta(t,a,i)
mesh_stiffness(t,k_var,k_mean,i)
taero(t,T_aero,i)
rms_on_x(x)
spectral_on_x(x,i,tf,dt)
plot_x(t,x,i)
only_display.m
display_update.m
```
`main.m` is the launcher for the full code compilation
`func` is the function class, containing every function used in the code
`parameters` is the model parameters document
`display` is the displayer for figures
`only_display` to skip non-needed full compilation
`display_update` to update a single graph if needed
## How does it work ?
**For Matlab under windows :**
open matlab and launch main.m
> [!WARNING]
> remove `graphics_toolkit("gnuplot")` which is only useful for Octave visualization
**For Octave/Linux :**
```bash
cd [path_to_cloned]/code/versions/[current_version]/
octave
>>> run main.m
>>>
```
## Informations
- [x] Verified code with base code and paper
- [x] Implemented wind excitation
- [x] Implemented Ghorbel parameters
- [~] Add varying output torque depending on number of tooth in contact ?
- [~] add brake ?
- [~] Variation of C ?
- [~] ODE45 ?
- [x] Displays from last version (in class)
- [x] New mesh stiffness variation model (trapezoidal)
- [x] Print in pdf
- [ ] Errors/defects implementation
- [ ] profile error
- [ ] assembly defect (change on gear stiffness)
- [ ] README
- [x] Maths
- [ ] Source(s)
- [ ] Random models implementation
- [x] Display
- [x] time response on a2
- [x] speed response
- [x] x movement (vs y movement ?)
- [x] RMS STD Kurtosis
- [ ] Tests
- [ ] different speed
- [ ] different blade radii
## Maths
The model is represented by two 4DDL shafts in a gear connection : $x$ and $y$ are free at the pinion, $\theta$ is free at both ends of the shaft (input/output is $\theta_{ii}$ and meshing rotation is $\theta_{ij}$).
### Parameters
### Energy equations
$$
\frac{\partial Ep}{\partial q_i}+
\frac{d}{dt}\left(\frac{Ec}{\dot{q}_i}\right)-
\frac{\partial Ec}{\partial q_i}+
\frac{\partial D}{\partial \dot{q}_i}
=\frac{W}{\partial q_i}
\\
Ec = \frac{1}{2}m_1*\dot{x}_1^2+
\frac{1}{2}m_1*\dot{y}_1^2+
\frac{1}{2}I_{11}\dot{\theta}_{11}^2+
\frac{1}{2}I_{12}\dot{\theta}_{12}^2+
\frac{1}{2}m_2*\dot{x_2}^2+
\frac{1}{2}m_2*\dot{y_2}^2+
\frac{1}{2}I_{22}\dot{\theta}_{22}^2+
\frac{1}{2}I_{21}\dot{\theta}_{21}^2
\\
Ep = \frac{1}{2}k_{x_1}x_{1}^2+
\frac{1}{2}k_{y_1}y_{1}^2+
\frac{1}{2}k_{\theta_1}(\theta_{11}-\theta_{12})^2+
\frac{1}{2}k_{x_2}x_{2}^2+
\frac{1}{2}k_{y_2}y_{2}^2+
\frac{1}{2}k_{\theta_2}(\theta_{21}-\theta_{22})^2+
\frac{1}{2}K_e(t)\delta_1^2(t)
$$
### Equations of movement
$Ep$ and $Ec$ are separated between the two shaft (1 and 2)
$$
\begin{cases}
&\frac{\partial Ep_1}{\partial x_1}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{x}_1}\right)=m_1\ddot{x}_1+k_{x1}x_1+sin(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial y_1}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{y}_1}\right)=m_1\ddot{y}_1+k_{y1}y_1+cos(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial \theta_{11}}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{\theta}_{11}}\right)=I_{11}\ddot{\theta}_{11}+k_{\theta 1}(\theta_{11}-\theta_{12})=Cm \\
&\frac{\partial Ep_1}{\partial \theta_{12}}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{\theta}_{12}}\right)=I_{12}\ddot{\theta}_{12}+k_{\theta 1}(\theta_{12}-\theta_{11})+K_e(t)r_{b12}\delta_1(t)=0 \\
&\frac{\partial Ep_1}{\partial x_2}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{x}_2}\right)=m_2\ddot{x}_2+k_{x2}x_2-sin(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial y_2}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{y}_2}\right)=m_2\ddot{y}_2+k_{y2}y_2-cos(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial \theta_{22}}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{\theta}_{22}}\right)=I_{22}\ddot{\theta}_{22}-k_{\theta 2}(\theta_{21}-\theta_{22})=-Cr \\
&\frac{\partial Ep_1}{\partial \theta_{21}}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{\theta}_{21}}\right)=I_{21}\ddot{\theta}_{21}-k_{\theta 2}(\theta_{21}-\theta_{22})+K_e(t)r_{b21}\delta_1(t)=0
\end{cases}
$$
With $\delta_i(t)=(x_1-x_2)sin(\alpha)+(y_1-y_2)cos(\alpha)+\theta_{12}r_{b1}+\theta_{21}r_{b2}$ and $r_{bij}$ the base radius of pinions, $K_e$ is the varying meshing stiffness, mass $m_i = \pi r^2_{i}\rho$ for both pinions, and $I_{ij} = \frac{1}{2}m_{ij}r_{ij}^2$ for pinions and input/output inertia.
### Matrices
**Equation to solve :**
$$
[M]\{\ddot{q}\}+C\{\dot{q}\}+([Ks]+[K(t)])\{q\}=\{F_0\} \\
\{q\}=\{x_1,y_1,\theta_{11},\theta_{12},x_2,y_2,\theta_{22},\theta_{21}\}
$$
**Mass matrix :**
$$
M =
\begin{bmatrix}
m_1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & m_1 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & I_{11} & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & I_{12} & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & m_2 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & m_2 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & I_{22} & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & I_{21} \\
\end{bmatrix} \\
$$
With $m_1$ mass of shaft 1 and $m_2$ mass of shaft 2
**Variable mesh stiffness matrix**
$$
K(t)= K_e(t)
\begin{bmatrix}
sin(\alpha)^2 & sin(\alpha).cos(\alpha) & 0 & r_1.sin(\alpha) & -sin(\alpha)^2 & -sin(\alpha).cos(\alpha) & 0 & r_2.sin(\alpha) \\
sin(\alpha).cos(\alpha) & cos(\alpha)^2 & 0 & r_1.cos(\alpha) & -sin(\alpha).cos(\alpha) & -cos(\alpha)^2 & 0 & r_2.cos(\alpha) \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
r_1.sin(\alpha) & r_1.cos(\alpha) & 0 & r_1^2 & -r_1.sin(\alpha) & -r_1.cos(\alpha) & 0 & r_1.r_2 \\
-sin(\alpha)^2 & -sin(\alpha).cos(\alpha) & 0 & -r_1.sin(\alpha) & sin(\alpha)^2 & sin(\alpha).cos(\alpha) & 0 & -r_2.sin(\alpha) \\
-sin(\alpha).cos(\alpha) & -cos(\alpha)^2 & 0 & -r_1.cos(\alpha) & sin(\alpha).cos(\alpha) & cos(\alpha)^2 & 0 & -r_2.cos(\alpha) \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
r_2.sin(\alpha) & r_2.cos(\alpha) & 0 & r_1.r_2 & -r_2.sin(\alpha) & -r_2.cos(\alpha) & 0 & r_2^2 \\
\end{bmatrix}
$$
> [!NOTE]
>
> In matlab, cos and sin terms will be noted as $s_i$, for visual simplification
**Constant stiffness matrix**
$$
Ks=
\begin{bmatrix}
k_{x1} & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & k_{y1} & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & k_{\theta1}& -k_{\theta1} & 0 & 0 & 0 & 0 \\
0 & 0 & -k_{\theta1} & k_{\theta1} & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & k_{x1} & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & k_{y1} & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & k_{\theta2} & -k_{\theta2} \\
0 & 0 & 0 & 0 & 0 & 0 & -k_{\theta2} & k_{\theta2} \\
\end{bmatrix}
$$
**Damping matrix**
$$
C = \eta M+\beta K_{mean}
$$
**Forces**
$$
F =
\begin{bmatrix}
0 \\ 0 \\ T_{in} \\ 0 \\ 0\\ 0\\ T_{out}\\ 0
\end{bmatrix}
$$
## TO FIX
> [!ATTENTION]
> ...
## Machine specifications
Example of computational time : `44sec for fs=2500` / `n_periods = 10`
```
-`
.o+`
`ooo/ OS: Arch Linux x86_64
`+oooo: Host: 20EV000UFR ThinkPad E560
`+oooooo: Kernel: 6.19.8-arch1-1
-+oooooo+: Shell: zsh 5.9
`/:-:++oooo+: Terminal: kitty
`/++++/+++++++: CPU: Intel i5-6200U (4) @ 2.300GHz
`/++++++++++++++: GPU: Intel Skylake-U GT2 [HD Graphics 520]
`/+++ooooooooooooo/` Memory: 1703MiB / 3792MiB
./ooosssso++osssssso+`
.oossssso-````/ossssss+`
-osssssso. :ssssssso.
:osssssss/ osssso+++.
/ossssssss/ +ssssooo/-
`/ossssso+/:- -:/+osssso+-
`+sso+:-` `.-/+oso:
`++:. `-/+/
.` `/
```

View file

@ -0,0 +1,286 @@
---
Author: Antoine Foucault-Castelli
Date: 17/03/2026
Bibliography: @karmiFiabiliteOptimisationSystemes @ghorbelEffectBrakeLocation2020a @zhengAnalyticalApproachMesh2022
Version: 4.0
---
| Newmark parameters | Value |
| -------------------------------------------------- | --------- |
| $\gamma$ | |
| $\beta$ | |
| **Gears** | **Value** |
| $Z1$ | |
| $Z2$ | |
| $m_0$ | |
| $b$ | |
| $d_{i1}$ | |
| $d_{i_2}$ | |
| Inpu$N_1$ | |
| Contact angle $\alpha$ | |
| Steel density $\rho_{steel}$ | |
| **Masses** | **Value** |
| Input mass $m_{in}$ | |
| Output mass $m_{out}$ | |
| **Stiffness** | |
| Flexion $x$ : k_x=k_{x_1}=k_{x_2}$ | |
| Flexion $y$ : k_y=k_{y_1}=k_{y_2}$ | |
| Torsion $z$ : $k_\theta=k_{\theta_1}=k_{\theta_2}$ | |
| Mean mesh stiffness $k_{mesh_{mean}}$ | |
| **Damping** | |
| Mass related $\eta$ | |
| Stiffness related $\beta$ | |
| **Wind excitation** | |
| Blade radius $r_{blade}$ | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
# Gearbox simulation
## Structure
```
main.m
func.m
time_sampling
inertia
gearbox_geometry
mesh_stiffness
wind_excitation
mass_matrix
stiffness_matrix
stiffness_update
damping_matrix
forces_matrix
initialization
newmark
parameters.m
display.m
disp_xy(t,x,i)
speed_xy(t,v,i)
acc_xy(t,v,i)
disp_theta(t,x,i)
speed_theta(t,v,i)
acc_theta(t,a,i)
mesh_stiffness(t,k_var,k_mean,i)
taero(t,T_aero,i)
rms_on_x(x)
spectral_on_x(x,i,tf,dt)
plot_x(t,x,i)
only_display.m
display_update.m
```
`main.m` is the launcher for the full code compilation
`func` is the function class, containing every function used in the code
`parameters` is the model parameters document
`display` is the displayer for figures
`only_display` to skip non-needed full compilation
`display_update` to update a single graph if needed
## How does it work ?
**For Matlab under windows :**
open matlab and launch main.m
> [!WARNING]
> remove `graphics_toolkit("gnuplot")` which is only useful for Octave visualization
**For Octave/Linux :**
```bash
cd [path_to_cloned]/code/versions/[current_version]/
octave
>>> run main.m
>>>
```
## Informations
- [x] Verified code with base code and paper
- [x] Implemented wind excitation
- [x] Implemented Ghorbel parameters
- [~] Add varying output torque depending on number of tooth in contact ?
- [~] add brake ?
- [~] Variation of C ?
- [~] ODE45 ?
- [x] Displays from last version (in class)
- [x] New mesh stiffness variation model (trapezoidal)
- [x] Print in pdf
- [ ] Errors/defects implementation
- [ ] profile error
- [ ] assembly defect (change on gear stiffness)
- [ ] README
- [x] Maths
- [ ] Source(s)
- [ ] Random models implementation
- [x] Display
- [x] time response on a2
- [x] speed response
- [x] x movement (vs y movement ?)
- [x] RMS STD Kurtosis
- [ ] Tests
- [ ] different speed
- [ ] different blade radii
## Maths
The model is represented by two 4DDL shafts in a gear connection : $x$ and $y$ are free at the pinion, $\theta$ is free at both ends of the shaft (input/output is $\theta_{ii}$ and meshing rotation is $\theta_{ij}$).
### Parameters
### Energy equations
$$
\frac{\partial Ep}{\partial q_i}+
\frac{d}{dt}\left(\frac{Ec}{\dot{q}_i}\right)-
\frac{\partial Ec}{\partial q_i}+
\frac{\partial D}{\partial \dot{q}_i}
=\frac{W}{\partial q_i}
\\
Ec = \frac{1}{2}m_1*\dot{x}_1^2+
\frac{1}{2}m_1*\dot{y}_1^2+
\frac{1}{2}I_{11}\dot{\theta}_{11}^2+
\frac{1}{2}I_{12}\dot{\theta}_{12}^2+
\frac{1}{2}m_2*\dot{x_2}^2+
\frac{1}{2}m_2*\dot{y_2}^2+
\frac{1}{2}I_{22}\dot{\theta}_{22}^2+
\frac{1}{2}I_{21}\dot{\theta}_{21}^2
\\
Ep = \frac{1}{2}k_{x_1}x_{1}^2+
\frac{1}{2}k_{y_1}y_{1}^2+
\frac{1}{2}k_{\theta_1}(\theta_{11}-\theta_{12})^2+
\frac{1}{2}k_{x_2}x_{2}^2+
\frac{1}{2}k_{y_2}y_{2}^2+
\frac{1}{2}k_{\theta_2}(\theta_{21}-\theta_{22})^2+
\frac{1}{2}K_e(t)\delta_1^2(t)
$$
### Equations of movement
$Ep$ and $Ec$ are separated between the two shaft (1 and 2)
$$
\begin{cases}
&\frac{\partial Ep_1}{\partial x_1}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{x}_1}\right)=m_1\ddot{x}_1+k_{x1}x_1+sin(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial y_1}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{y}_1}\right)=m_1\ddot{y}_1+k_{y1}y_1+cos(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial \theta_{11}}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{\theta}_{11}}\right)=I_{11}\ddot{\theta}_{11}+k_{\theta 1}(\theta_{11}-\theta_{12})=Cm \\
&\frac{\partial Ep_1}{\partial \theta_{12}}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{\theta}_{12}}\right)=I_{12}\ddot{\theta}_{12}+k_{\theta 1}(\theta_{12}-\theta_{11})+K_e(t)r_{b12}\delta_1(t)=0 \\
&\frac{\partial Ep_1}{\partial x_2}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{x}_2}\right)=m_2\ddot{x}_2+k_{x2}x_2-sin(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial y_2}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{y}_2}\right)=m_2\ddot{y}_2+k_{y2}y_2-cos(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial \theta_{22}}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{\theta}_{22}}\right)=I_{22}\ddot{\theta}_{22}-k_{\theta 2}(\theta_{21}-\theta_{22})=-Cr \\
&\frac{\partial Ep_1}{\partial \theta_{21}}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{\theta}_{21}}\right)=I_{21}\ddot{\theta}_{21}-k_{\theta 2}(\theta_{21}-\theta_{22})+K_e(t)r_{b21}\delta_1(t)=0
\end{cases}
$$
With $\delta_i(t)=(x_1-x_2)sin(\alpha)+(y_1-y_2)cos(\alpha)+\theta_{12}r_{b1}+\theta_{21}r_{b2}$ and $r_{bij}$ the base radius of pinions, $K_e$ is the varying meshing stiffness, mass $m_i = \pi r^2_{i}\rho$ for both pinions, and $I_{ij} = \frac{1}{2}m_{ij}r_{ij}^2$ for pinions and input/output inertia.
### Matrices
**Equation to solve :**
$$
[M]\{\ddot{q}\}+C\{\dot{q}\}+([Ks]+[K(t)])\{q\}=\{F_0\} \\
\{q\}=\{x_1,y_1,\theta_{11},\theta_{12},x_2,y_2,\theta_{22},\theta_{21}\}
$$
**Mass matrix :**
$$
M =
\begin{bmatrix}
m_1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & m_1 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & I_{11} & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & I_{12} & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & m_2 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & m_2 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & I_{22} & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & I_{21} \\
\end{bmatrix} \\
$$
With $m_1$ mass of shaft 1 and $m_2$ mass of shaft 2
**Variable mesh stiffness matrix**
$$
K(t)= K_e(t)
\begin{bmatrix}
sin(\alpha)^2 & sin(\alpha).cos(\alpha) & 0 & r_1.sin(\alpha) & -sin(\alpha)^2 & -sin(\alpha).cos(\alpha) & 0 & r_2.sin(\alpha) \\
sin(\alpha).cos(\alpha) & cos(\alpha)^2 & 0 & r_1.cos(\alpha) & -sin(\alpha).cos(\alpha) & -cos(\alpha)^2 & 0 & r_2.cos(\alpha) \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
r_1.sin(\alpha) & r_1.cos(\alpha) & 0 & r_1^2 & -r_1.sin(\alpha) & -r_1.cos(\alpha) & 0 & r_1.r_2 \\
-sin(\alpha)^2 & -sin(\alpha).cos(\alpha) & 0 & -r_1.sin(\alpha) & sin(\alpha)^2 & sin(\alpha).cos(\alpha) & 0 & -r_2.sin(\alpha) \\
-sin(\alpha).cos(\alpha) & -cos(\alpha)^2 & 0 & -r_1.cos(\alpha) & sin(\alpha).cos(\alpha) & cos(\alpha)^2 & 0 & -r_2.cos(\alpha) \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
r_2.sin(\alpha) & r_2.cos(\alpha) & 0 & r_1.r_2 & -r_2.sin(\alpha) & -r_2.cos(\alpha) & 0 & r_2^2 \\
\end{bmatrix}
$$
> [!NOTE]
>
> In matlab, cos and sin terms will be noted as $s_i$, for visual simplification
**Constant stiffness matrix**
$$
Ks=
\begin{bmatrix}
k_{x1} & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & k_{y1} & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & k_{\theta1}& -k_{\theta1} & 0 & 0 & 0 & 0 \\
0 & 0 & -k_{\theta1} & k_{\theta1} & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & k_{x1} & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & k_{y1} & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & k_{\theta2} & -k_{\theta2} \\
0 & 0 & 0 & 0 & 0 & 0 & -k_{\theta2} & k_{\theta2} \\
\end{bmatrix}
$$
**Damping matrix**
$$
C = \eta M+\beta K_{mean}
$$
**Forces**
$$
F =
\begin{bmatrix}
0 \\ 0 \\ T_{in} \\ 0 \\ 0\\ 0\\ T_{out}\\ 0
\end{bmatrix}
$$
## TO FIX
> [!ATTENTION]
> ...
## Machine specifications
Example of computational time : `44sec for fs=2500` / `n_periods = 10`
```
-`
.o+`
`ooo/ OS: Arch Linux x86_64
`+oooo: Host: 20EV000UFR ThinkPad E560
`+oooooo: Kernel: 6.19.8-arch1-1
-+oooooo+: Shell: zsh 5.9
`/:-:++oooo+: Terminal: kitty
`/++++/+++++++: CPU: Intel i5-6200U (4) @ 2.300GHz
`/++++++++++++++: GPU: Intel Skylake-U GT2 [HD Graphics 520]
`/+++ooooooooooooo/` Memory: 1703MiB / 3792MiB
./ooosssso++osssssso+`
.oossssso-````/ossssss+`
-osssssso. :ssssssso.
:osssssss/ osssso+++.
/ossssssss/ +ssssooo/-
`/ossssso+/:- -:/+osssso+-
`+sso+:-` `.-/+oso:
`++:. `-/+/
.` `/
```

View file

@ -0,0 +1,286 @@
---
Author: Antoine Foucault-Castelli
Date: 17/03/2026
Bibliography: @karmiFiabiliteOptimisationSystemes @ghorbelEffectBrakeLocation2020a @zhengAnalyticalApproachMesh2022
Version: 4.0
---
| Newmark parameters | Value |
| -------------------------------------------------- | --------- |
| $\gamma$ | |
| $\beta$ | |
| **Gears** | **Value** |
| $Z1$ | |
| $Z2$ | |
| $m_0$ | |
| $b$ | |
| $d_{i1}$ | |
| Internal diameter pinion 2 $d_{i_2}$ | |
| Input speed $N_1$ | |
| Contact angle $\alpha$ | |
| Steel density $\rho_{steel}$ | |
| **Masses** | **Value** |
| Input mass $m_{in}$ | |
| Output mass $m_{out}$ | |
| **Stiffness** | |
| Flexion $x$ : k_x=k_{x_1}=k_{x_2}$ | |
| Flexion $y$ : k_y=k_{y_1}=k_{y_2}$ | |
| Torsion $z$ : $k_\theta=k_{\theta_1}=k_{\theta_2}$ | |
| Mean mesh stiffness $k_{mesh_{mean}}$ | |
| **Damping** | |
| Mass related $\eta$ | |
| Stiffness related $\beta$ | |
| **Wind excitation** | |
| Blade radius $r_{blade}$ | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
# Gearbox simulation
## Structure
```
main.m
func.m
time_sampling
inertia
gearbox_geometry
mesh_stiffness
wind_excitation
mass_matrix
stiffness_matrix
stiffness_update
damping_matrix
forces_matrix
initialization
newmark
parameters.m
display.m
disp_xy(t,x,i)
speed_xy(t,v,i)
acc_xy(t,v,i)
disp_theta(t,x,i)
speed_theta(t,v,i)
acc_theta(t,a,i)
mesh_stiffness(t,k_var,k_mean,i)
taero(t,T_aero,i)
rms_on_x(x)
spectral_on_x(x,i,tf,dt)
plot_x(t,x,i)
only_display.m
display_update.m
```
`main.m` is the launcher for the full code compilation
`func` is the function class, containing every function used in the code
`parameters` is the model parameters document
`display` is the displayer for figures
`only_display` to skip non-needed full compilation
`display_update` to update a single graph if needed
## How does it work ?
**For Matlab under windows :**
open matlab and launch main.m
> [!WARNING]
> remove `graphics_toolkit("gnuplot")` which is only useful for Octave visualization
**For Octave/Linux :**
```bash
cd [path_to_cloned]/code/versions/[current_version]/
octave
>>> run main.m
>>>
```
## Informations
- [x] Verified code with base code and paper
- [x] Implemented wind excitation
- [x] Implemented Ghorbel parameters
- [~] Add varying output torque depending on number of tooth in contact ?
- [~] add brake ?
- [~] Variation of C ?
- [~] ODE45 ?
- [x] Displays from last version (in class)
- [x] New mesh stiffness variation model (trapezoidal)
- [x] Print in pdf
- [ ] Errors/defects implementation
- [ ] profile error
- [ ] assembly defect (change on gear stiffness)
- [ ] README
- [x] Maths
- [ ] Source(s)
- [ ] Random models implementation
- [x] Display
- [x] time response on a2
- [x] speed response
- [x] x movement (vs y movement ?)
- [x] RMS STD Kurtosis
- [ ] Tests
- [ ] different speed
- [ ] different blade radii
## Maths
The model is represented by two 4DDL shafts in a gear connection : $x$ and $y$ are free at the pinion, $\theta$ is free at both ends of the shaft (input/output is $\theta_{ii}$ and meshing rotation is $\theta_{ij}$).
### Parameters
### Energy equations
$$
\frac{\partial Ep}{\partial q_i}+
\frac{d}{dt}\left(\frac{Ec}{\dot{q}_i}\right)-
\frac{\partial Ec}{\partial q_i}+
\frac{\partial D}{\partial \dot{q}_i}
=\frac{W}{\partial q_i}
\\
Ec = \frac{1}{2}m_1*\dot{x}_1^2+
\frac{1}{2}m_1*\dot{y}_1^2+
\frac{1}{2}I_{11}\dot{\theta}_{11}^2+
\frac{1}{2}I_{12}\dot{\theta}_{12}^2+
\frac{1}{2}m_2*\dot{x_2}^2+
\frac{1}{2}m_2*\dot{y_2}^2+
\frac{1}{2}I_{22}\dot{\theta}_{22}^2+
\frac{1}{2}I_{21}\dot{\theta}_{21}^2
\\
Ep = \frac{1}{2}k_{x_1}x_{1}^2+
\frac{1}{2}k_{y_1}y_{1}^2+
\frac{1}{2}k_{\theta_1}(\theta_{11}-\theta_{12})^2+
\frac{1}{2}k_{x_2}x_{2}^2+
\frac{1}{2}k_{y_2}y_{2}^2+
\frac{1}{2}k_{\theta_2}(\theta_{21}-\theta_{22})^2+
\frac{1}{2}K_e(t)\delta_1^2(t)
$$
### Equations of movement
$Ep$ and $Ec$ are separated between the two shaft (1 and 2)
$$
\begin{cases}
&\frac{\partial Ep_1}{\partial x_1}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{x}_1}\right)=m_1\ddot{x}_1+k_{x1}x_1+sin(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial y_1}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{y}_1}\right)=m_1\ddot{y}_1+k_{y1}y_1+cos(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial \theta_{11}}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{\theta}_{11}}\right)=I_{11}\ddot{\theta}_{11}+k_{\theta 1}(\theta_{11}-\theta_{12})=Cm \\
&\frac{\partial Ep_1}{\partial \theta_{12}}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{\theta}_{12}}\right)=I_{12}\ddot{\theta}_{12}+k_{\theta 1}(\theta_{12}-\theta_{11})+K_e(t)r_{b12}\delta_1(t)=0 \\
&\frac{\partial Ep_1}{\partial x_2}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{x}_2}\right)=m_2\ddot{x}_2+k_{x2}x_2-sin(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial y_2}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{y}_2}\right)=m_2\ddot{y}_2+k_{y2}y_2-cos(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial \theta_{22}}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{\theta}_{22}}\right)=I_{22}\ddot{\theta}_{22}-k_{\theta 2}(\theta_{21}-\theta_{22})=-Cr \\
&\frac{\partial Ep_1}{\partial \theta_{21}}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{\theta}_{21}}\right)=I_{21}\ddot{\theta}_{21}-k_{\theta 2}(\theta_{21}-\theta_{22})+K_e(t)r_{b21}\delta_1(t)=0
\end{cases}
$$
With $\delta_i(t)=(x_1-x_2)sin(\alpha)+(y_1-y_2)cos(\alpha)+\theta_{12}r_{b1}+\theta_{21}r_{b2}$ and $r_{bij}$ the base radius of pinions, $K_e$ is the varying meshing stiffness, mass $m_i = \pi r^2_{i}\rho$ for both pinions, and $I_{ij} = \frac{1}{2}m_{ij}r_{ij}^2$ for pinions and input/output inertia.
### Matrices
**Equation to solve :**
$$
[M]\{\ddot{q}\}+C\{\dot{q}\}+([Ks]+[K(t)])\{q\}=\{F_0\} \\
\{q\}=\{x_1,y_1,\theta_{11},\theta_{12},x_2,y_2,\theta_{22},\theta_{21}\}
$$
**Mass matrix :**
$$
M =
\begin{bmatrix}
m_1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & m_1 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & I_{11} & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & I_{12} & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & m_2 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & m_2 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & I_{22} & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & I_{21} \\
\end{bmatrix} \\
$$
With $m_1$ mass of shaft 1 and $m_2$ mass of shaft 2
**Variable mesh stiffness matrix**
$$
K(t)= K_e(t)
\begin{bmatrix}
sin(\alpha)^2 & sin(\alpha).cos(\alpha) & 0 & r_1.sin(\alpha) & -sin(\alpha)^2 & -sin(\alpha).cos(\alpha) & 0 & r_2.sin(\alpha) \\
sin(\alpha).cos(\alpha) & cos(\alpha)^2 & 0 & r_1.cos(\alpha) & -sin(\alpha).cos(\alpha) & -cos(\alpha)^2 & 0 & r_2.cos(\alpha) \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
r_1.sin(\alpha) & r_1.cos(\alpha) & 0 & r_1^2 & -r_1.sin(\alpha) & -r_1.cos(\alpha) & 0 & r_1.r_2 \\
-sin(\alpha)^2 & -sin(\alpha).cos(\alpha) & 0 & -r_1.sin(\alpha) & sin(\alpha)^2 & sin(\alpha).cos(\alpha) & 0 & -r_2.sin(\alpha) \\
-sin(\alpha).cos(\alpha) & -cos(\alpha)^2 & 0 & -r_1.cos(\alpha) & sin(\alpha).cos(\alpha) & cos(\alpha)^2 & 0 & -r_2.cos(\alpha) \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
r_2.sin(\alpha) & r_2.cos(\alpha) & 0 & r_1.r_2 & -r_2.sin(\alpha) & -r_2.cos(\alpha) & 0 & r_2^2 \\
\end{bmatrix}
$$
> [!NOTE]
>
> In matlab, cos and sin terms will be noted as $s_i$, for visual simplification
**Constant stiffness matrix**
$$
Ks=
\begin{bmatrix}
k_{x1} & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & k_{y1} & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & k_{\theta1}& -k_{\theta1} & 0 & 0 & 0 & 0 \\
0 & 0 & -k_{\theta1} & k_{\theta1} & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & k_{x1} & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & k_{y1} & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & k_{\theta2} & -k_{\theta2} \\
0 & 0 & 0 & 0 & 0 & 0 & -k_{\theta2} & k_{\theta2} \\
\end{bmatrix}
$$
**Damping matrix**
$$
C = \eta M+\beta K_{mean}
$$
**Forces**
$$
F =
\begin{bmatrix}
0 \\ 0 \\ T_{in} \\ 0 \\ 0\\ 0\\ T_{out}\\ 0
\end{bmatrix}
$$
## TO FIX
> [!ATTENTION]
> ...
## Machine specifications
Example of computational time : `44sec for fs=2500` / `n_periods = 10`
```
-`
.o+`
`ooo/ OS: Arch Linux x86_64
`+oooo: Host: 20EV000UFR ThinkPad E560
`+oooooo: Kernel: 6.19.8-arch1-1
-+oooooo+: Shell: zsh 5.9
`/:-:++oooo+: Terminal: kitty
`/++++/+++++++: CPU: Intel i5-6200U (4) @ 2.300GHz
`/++++++++++++++: GPU: Intel Skylake-U GT2 [HD Graphics 520]
`/+++ooooooooooooo/` Memory: 1703MiB / 3792MiB
./ooosssso++osssssso+`
.oossssso-````/ossssss+`
-osssssso. :ssssssso.
:osssssss/ osssso+++.
/ossssssss/ +ssssooo/-
`/ossssso+/:- -:/+osssso+-
`+sso+:-` `.-/+oso:
`++:. `-/+/
.` `/
```

View file

@ -0,0 +1,286 @@
---
Author: Antoine Foucault-Castelli
Date: 17/03/2026
Bibliography: @karmiFiabiliteOptimisationSystemes @ghorbelEffectBrakeLocation2020a @zhengAnalyticalApproachMesh2022
Version: 4.0
---
| Newmark parameters | Value |
| -------------------------------------------------- | --------- |
| $\gamma$ | |
| $\beta$ | |
| **Gears** | **Value** |
| $Z1$ | |
| $Z2$ | |
| $m_0$ | |
| Pini$b$ | |
| Internal diameter pinion 1 $d_{i1}$ | |
| Internal diameter pinion 2 $d_{i_2}$ | |
| Input speed $N_1$ | |
| Contact angle $\alpha$ | |
| Steel density $\rho_{steel}$ | |
| **Masses** | **Value** |
| Input mass $m_{in}$ | |
| Output mass $m_{out}$ | |
| **Stiffness** | |
| Flexion $x$ : k_x=k_{x_1}=k_{x_2}$ | |
| Flexion $y$ : k_y=k_{y_1}=k_{y_2}$ | |
| Torsion $z$ : $k_\theta=k_{\theta_1}=k_{\theta_2}$ | |
| Mean mesh stiffness $k_{mesh_{mean}}$ | |
| **Damping** | |
| Mass related $\eta$ | |
| Stiffness related $\beta$ | |
| **Wind excitation** | |
| Blade radius $r_{blade}$ | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
# Gearbox simulation
## Structure
```
main.m
func.m
time_sampling
inertia
gearbox_geometry
mesh_stiffness
wind_excitation
mass_matrix
stiffness_matrix
stiffness_update
damping_matrix
forces_matrix
initialization
newmark
parameters.m
display.m
disp_xy(t,x,i)
speed_xy(t,v,i)
acc_xy(t,v,i)
disp_theta(t,x,i)
speed_theta(t,v,i)
acc_theta(t,a,i)
mesh_stiffness(t,k_var,k_mean,i)
taero(t,T_aero,i)
rms_on_x(x)
spectral_on_x(x,i,tf,dt)
plot_x(t,x,i)
only_display.m
display_update.m
```
`main.m` is the launcher for the full code compilation
`func` is the function class, containing every function used in the code
`parameters` is the model parameters document
`display` is the displayer for figures
`only_display` to skip non-needed full compilation
`display_update` to update a single graph if needed
## How does it work ?
**For Matlab under windows :**
open matlab and launch main.m
> [!WARNING]
> remove `graphics_toolkit("gnuplot")` which is only useful for Octave visualization
**For Octave/Linux :**
```bash
cd [path_to_cloned]/code/versions/[current_version]/
octave
>>> run main.m
>>>
```
## Informations
- [x] Verified code with base code and paper
- [x] Implemented wind excitation
- [x] Implemented Ghorbel parameters
- [~] Add varying output torque depending on number of tooth in contact ?
- [~] add brake ?
- [~] Variation of C ?
- [~] ODE45 ?
- [x] Displays from last version (in class)
- [x] New mesh stiffness variation model (trapezoidal)
- [x] Print in pdf
- [ ] Errors/defects implementation
- [ ] profile error
- [ ] assembly defect (change on gear stiffness)
- [ ] README
- [x] Maths
- [ ] Source(s)
- [ ] Random models implementation
- [x] Display
- [x] time response on a2
- [x] speed response
- [x] x movement (vs y movement ?)
- [x] RMS STD Kurtosis
- [ ] Tests
- [ ] different speed
- [ ] different blade radii
## Maths
The model is represented by two 4DDL shafts in a gear connection : $x$ and $y$ are free at the pinion, $\theta$ is free at both ends of the shaft (input/output is $\theta_{ii}$ and meshing rotation is $\theta_{ij}$).
### Parameters
### Energy equations
$$
\frac{\partial Ep}{\partial q_i}+
\frac{d}{dt}\left(\frac{Ec}{\dot{q}_i}\right)-
\frac{\partial Ec}{\partial q_i}+
\frac{\partial D}{\partial \dot{q}_i}
=\frac{W}{\partial q_i}
\\
Ec = \frac{1}{2}m_1*\dot{x}_1^2+
\frac{1}{2}m_1*\dot{y}_1^2+
\frac{1}{2}I_{11}\dot{\theta}_{11}^2+
\frac{1}{2}I_{12}\dot{\theta}_{12}^2+
\frac{1}{2}m_2*\dot{x_2}^2+
\frac{1}{2}m_2*\dot{y_2}^2+
\frac{1}{2}I_{22}\dot{\theta}_{22}^2+
\frac{1}{2}I_{21}\dot{\theta}_{21}^2
\\
Ep = \frac{1}{2}k_{x_1}x_{1}^2+
\frac{1}{2}k_{y_1}y_{1}^2+
\frac{1}{2}k_{\theta_1}(\theta_{11}-\theta_{12})^2+
\frac{1}{2}k_{x_2}x_{2}^2+
\frac{1}{2}k_{y_2}y_{2}^2+
\frac{1}{2}k_{\theta_2}(\theta_{21}-\theta_{22})^2+
\frac{1}{2}K_e(t)\delta_1^2(t)
$$
### Equations of movement
$Ep$ and $Ec$ are separated between the two shaft (1 and 2)
$$
\begin{cases}
&\frac{\partial Ep_1}{\partial x_1}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{x}_1}\right)=m_1\ddot{x}_1+k_{x1}x_1+sin(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial y_1}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{y}_1}\right)=m_1\ddot{y}_1+k_{y1}y_1+cos(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial \theta_{11}}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{\theta}_{11}}\right)=I_{11}\ddot{\theta}_{11}+k_{\theta 1}(\theta_{11}-\theta_{12})=Cm \\
&\frac{\partial Ep_1}{\partial \theta_{12}}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{\theta}_{12}}\right)=I_{12}\ddot{\theta}_{12}+k_{\theta 1}(\theta_{12}-\theta_{11})+K_e(t)r_{b12}\delta_1(t)=0 \\
&\frac{\partial Ep_1}{\partial x_2}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{x}_2}\right)=m_2\ddot{x}_2+k_{x2}x_2-sin(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial y_2}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{y}_2}\right)=m_2\ddot{y}_2+k_{y2}y_2-cos(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial \theta_{22}}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{\theta}_{22}}\right)=I_{22}\ddot{\theta}_{22}-k_{\theta 2}(\theta_{21}-\theta_{22})=-Cr \\
&\frac{\partial Ep_1}{\partial \theta_{21}}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{\theta}_{21}}\right)=I_{21}\ddot{\theta}_{21}-k_{\theta 2}(\theta_{21}-\theta_{22})+K_e(t)r_{b21}\delta_1(t)=0
\end{cases}
$$
With $\delta_i(t)=(x_1-x_2)sin(\alpha)+(y_1-y_2)cos(\alpha)+\theta_{12}r_{b1}+\theta_{21}r_{b2}$ and $r_{bij}$ the base radius of pinions, $K_e$ is the varying meshing stiffness, mass $m_i = \pi r^2_{i}\rho$ for both pinions, and $I_{ij} = \frac{1}{2}m_{ij}r_{ij}^2$ for pinions and input/output inertia.
### Matrices
**Equation to solve :**
$$
[M]\{\ddot{q}\}+C\{\dot{q}\}+([Ks]+[K(t)])\{q\}=\{F_0\} \\
\{q\}=\{x_1,y_1,\theta_{11},\theta_{12},x_2,y_2,\theta_{22},\theta_{21}\}
$$
**Mass matrix :**
$$
M =
\begin{bmatrix}
m_1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & m_1 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & I_{11} & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & I_{12} & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & m_2 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & m_2 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & I_{22} & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & I_{21} \\
\end{bmatrix} \\
$$
With $m_1$ mass of shaft 1 and $m_2$ mass of shaft 2
**Variable mesh stiffness matrix**
$$
K(t)= K_e(t)
\begin{bmatrix}
sin(\alpha)^2 & sin(\alpha).cos(\alpha) & 0 & r_1.sin(\alpha) & -sin(\alpha)^2 & -sin(\alpha).cos(\alpha) & 0 & r_2.sin(\alpha) \\
sin(\alpha).cos(\alpha) & cos(\alpha)^2 & 0 & r_1.cos(\alpha) & -sin(\alpha).cos(\alpha) & -cos(\alpha)^2 & 0 & r_2.cos(\alpha) \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
r_1.sin(\alpha) & r_1.cos(\alpha) & 0 & r_1^2 & -r_1.sin(\alpha) & -r_1.cos(\alpha) & 0 & r_1.r_2 \\
-sin(\alpha)^2 & -sin(\alpha).cos(\alpha) & 0 & -r_1.sin(\alpha) & sin(\alpha)^2 & sin(\alpha).cos(\alpha) & 0 & -r_2.sin(\alpha) \\
-sin(\alpha).cos(\alpha) & -cos(\alpha)^2 & 0 & -r_1.cos(\alpha) & sin(\alpha).cos(\alpha) & cos(\alpha)^2 & 0 & -r_2.cos(\alpha) \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
r_2.sin(\alpha) & r_2.cos(\alpha) & 0 & r_1.r_2 & -r_2.sin(\alpha) & -r_2.cos(\alpha) & 0 & r_2^2 \\
\end{bmatrix}
$$
> [!NOTE]
>
> In matlab, cos and sin terms will be noted as $s_i$, for visual simplification
**Constant stiffness matrix**
$$
Ks=
\begin{bmatrix}
k_{x1} & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & k_{y1} & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & k_{\theta1}& -k_{\theta1} & 0 & 0 & 0 & 0 \\
0 & 0 & -k_{\theta1} & k_{\theta1} & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & k_{x1} & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & k_{y1} & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & k_{\theta2} & -k_{\theta2} \\
0 & 0 & 0 & 0 & 0 & 0 & -k_{\theta2} & k_{\theta2} \\
\end{bmatrix}
$$
**Damping matrix**
$$
C = \eta M+\beta K_{mean}
$$
**Forces**
$$
F =
\begin{bmatrix}
0 \\ 0 \\ T_{in} \\ 0 \\ 0\\ 0\\ T_{out}\\ 0
\end{bmatrix}
$$
## TO FIX
> [!ATTENTION]
> ...
## Machine specifications
Example of computational time : `44sec for fs=2500` / `n_periods = 10`
```
-`
.o+`
`ooo/ OS: Arch Linux x86_64
`+oooo: Host: 20EV000UFR ThinkPad E560
`+oooooo: Kernel: 6.19.8-arch1-1
-+oooooo+: Shell: zsh 5.9
`/:-:++oooo+: Terminal: kitty
`/++++/+++++++: CPU: Intel i5-6200U (4) @ 2.300GHz
`/++++++++++++++: GPU: Intel Skylake-U GT2 [HD Graphics 520]
`/+++ooooooooooooo/` Memory: 1703MiB / 3792MiB
./ooosssso++osssssso+`
.oossssso-````/ossssss+`
-osssssso. :ssssssso.
:osssssss/ osssso+++.
/ossssssss/ +ssssooo/-
`/ossssso+/:- -:/+osssso+-
`+sso+:-` `.-/+oso:
`++:. `-/+/
.` `/
```

View file

@ -0,0 +1,286 @@
---
Author: Antoine Foucault-Castelli
Date: 17/03/2026
Bibliography: @karmiFiabiliteOptimisationSystemes @ghorbelEffectBrakeLocation2020a @zhengAnalyticalApproachMesh2022
Version: 4.0
---
| Newmark parameters | Value |
| -------------------------------------------------- | --------- |
| $\gamma$ | |
| $\beta$ | |
| **Gears** | **Value** |
| $Z1$ | |
| Pinion 2 tooth number $Z2$ | |
| Pinion modulus $m_0$ | |
| Pinion width $b$ | |
| Internal diameter pinion 1 $d_{i1}$ | |
| Internal diameter pinion 2 $d_{i_2}$ | |
| Input speed $N_1$ | |
| Contact angle $\alpha$ | |
| Steel density $\rho_{steel}$ | |
| **Masses** | **Value** |
| Input mass $m_{in}$ | |
| Output mass $m_{out}$ | |
| **Stiffness** | |
| Flexion $x$ : k_x=k_{x_1}=k_{x_2}$ | |
| Flexion $y$ : k_y=k_{y_1}=k_{y_2}$ | |
| Torsion $z$ : $k_\theta=k_{\theta_1}=k_{\theta_2}$ | |
| Mean mesh stiffness $k_{mesh_{mean}}$ | |
| **Damping** | |
| Mass related $\eta$ | |
| Stiffness related $\beta$ | |
| **Wind excitation** | |
| Blade radius $r_{blade}$ | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
# Gearbox simulation
## Structure
```
main.m
func.m
time_sampling
inertia
gearbox_geometry
mesh_stiffness
wind_excitation
mass_matrix
stiffness_matrix
stiffness_update
damping_matrix
forces_matrix
initialization
newmark
parameters.m
display.m
disp_xy(t,x,i)
speed_xy(t,v,i)
acc_xy(t,v,i)
disp_theta(t,x,i)
speed_theta(t,v,i)
acc_theta(t,a,i)
mesh_stiffness(t,k_var,k_mean,i)
taero(t,T_aero,i)
rms_on_x(x)
spectral_on_x(x,i,tf,dt)
plot_x(t,x,i)
only_display.m
display_update.m
```
`main.m` is the launcher for the full code compilation
`func` is the function class, containing every function used in the code
`parameters` is the model parameters document
`display` is the displayer for figures
`only_display` to skip non-needed full compilation
`display_update` to update a single graph if needed
## How does it work ?
**For Matlab under windows :**
open matlab and launch main.m
> [!WARNING]
> remove `graphics_toolkit("gnuplot")` which is only useful for Octave visualization
**For Octave/Linux :**
```bash
cd [path_to_cloned]/code/versions/[current_version]/
octave
>>> run main.m
>>>
```
## Informations
- [x] Verified code with base code and paper
- [x] Implemented wind excitation
- [x] Implemented Ghorbel parameters
- [~] Add varying output torque depending on number of tooth in contact ?
- [~] add brake ?
- [~] Variation of C ?
- [~] ODE45 ?
- [x] Displays from last version (in class)
- [x] New mesh stiffness variation model (trapezoidal)
- [x] Print in pdf
- [ ] Errors/defects implementation
- [ ] profile error
- [ ] assembly defect (change on gear stiffness)
- [ ] README
- [x] Maths
- [ ] Source(s)
- [ ] Random models implementation
- [x] Display
- [x] time response on a2
- [x] speed response
- [x] x movement (vs y movement ?)
- [x] RMS STD Kurtosis
- [ ] Tests
- [ ] different speed
- [ ] different blade radii
## Maths
The model is represented by two 4DDL shafts in a gear connection : $x$ and $y$ are free at the pinion, $\theta$ is free at both ends of the shaft (input/output is $\theta_{ii}$ and meshing rotation is $\theta_{ij}$).
### Parameters
### Energy equations
$$
\frac{\partial Ep}{\partial q_i}+
\frac{d}{dt}\left(\frac{Ec}{\dot{q}_i}\right)-
\frac{\partial Ec}{\partial q_i}+
\frac{\partial D}{\partial \dot{q}_i}
=\frac{W}{\partial q_i}
\\
Ec = \frac{1}{2}m_1*\dot{x}_1^2+
\frac{1}{2}m_1*\dot{y}_1^2+
\frac{1}{2}I_{11}\dot{\theta}_{11}^2+
\frac{1}{2}I_{12}\dot{\theta}_{12}^2+
\frac{1}{2}m_2*\dot{x_2}^2+
\frac{1}{2}m_2*\dot{y_2}^2+
\frac{1}{2}I_{22}\dot{\theta}_{22}^2+
\frac{1}{2}I_{21}\dot{\theta}_{21}^2
\\
Ep = \frac{1}{2}k_{x_1}x_{1}^2+
\frac{1}{2}k_{y_1}y_{1}^2+
\frac{1}{2}k_{\theta_1}(\theta_{11}-\theta_{12})^2+
\frac{1}{2}k_{x_2}x_{2}^2+
\frac{1}{2}k_{y_2}y_{2}^2+
\frac{1}{2}k_{\theta_2}(\theta_{21}-\theta_{22})^2+
\frac{1}{2}K_e(t)\delta_1^2(t)
$$
### Equations of movement
$Ep$ and $Ec$ are separated between the two shaft (1 and 2)
$$
\begin{cases}
&\frac{\partial Ep_1}{\partial x_1}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{x}_1}\right)=m_1\ddot{x}_1+k_{x1}x_1+sin(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial y_1}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{y}_1}\right)=m_1\ddot{y}_1+k_{y1}y_1+cos(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial \theta_{11}}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{\theta}_{11}}\right)=I_{11}\ddot{\theta}_{11}+k_{\theta 1}(\theta_{11}-\theta_{12})=Cm \\
&\frac{\partial Ep_1}{\partial \theta_{12}}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{\theta}_{12}}\right)=I_{12}\ddot{\theta}_{12}+k_{\theta 1}(\theta_{12}-\theta_{11})+K_e(t)r_{b12}\delta_1(t)=0 \\
&\frac{\partial Ep_1}{\partial x_2}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{x}_2}\right)=m_2\ddot{x}_2+k_{x2}x_2-sin(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial y_2}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{y}_2}\right)=m_2\ddot{y}_2+k_{y2}y_2-cos(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial \theta_{22}}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{\theta}_{22}}\right)=I_{22}\ddot{\theta}_{22}-k_{\theta 2}(\theta_{21}-\theta_{22})=-Cr \\
&\frac{\partial Ep_1}{\partial \theta_{21}}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{\theta}_{21}}\right)=I_{21}\ddot{\theta}_{21}-k_{\theta 2}(\theta_{21}-\theta_{22})+K_e(t)r_{b21}\delta_1(t)=0
\end{cases}
$$
With $\delta_i(t)=(x_1-x_2)sin(\alpha)+(y_1-y_2)cos(\alpha)+\theta_{12}r_{b1}+\theta_{21}r_{b2}$ and $r_{bij}$ the base radius of pinions, $K_e$ is the varying meshing stiffness, mass $m_i = \pi r^2_{i}\rho$ for both pinions, and $I_{ij} = \frac{1}{2}m_{ij}r_{ij}^2$ for pinions and input/output inertia.
### Matrices
**Equation to solve :**
$$
[M]\{\ddot{q}\}+C\{\dot{q}\}+([Ks]+[K(t)])\{q\}=\{F_0\} \\
\{q\}=\{x_1,y_1,\theta_{11},\theta_{12},x_2,y_2,\theta_{22},\theta_{21}\}
$$
**Mass matrix :**
$$
M =
\begin{bmatrix}
m_1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & m_1 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & I_{11} & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & I_{12} & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & m_2 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & m_2 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & I_{22} & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & I_{21} \\
\end{bmatrix} \\
$$
With $m_1$ mass of shaft 1 and $m_2$ mass of shaft 2
**Variable mesh stiffness matrix**
$$
K(t)= K_e(t)
\begin{bmatrix}
sin(\alpha)^2 & sin(\alpha).cos(\alpha) & 0 & r_1.sin(\alpha) & -sin(\alpha)^2 & -sin(\alpha).cos(\alpha) & 0 & r_2.sin(\alpha) \\
sin(\alpha).cos(\alpha) & cos(\alpha)^2 & 0 & r_1.cos(\alpha) & -sin(\alpha).cos(\alpha) & -cos(\alpha)^2 & 0 & r_2.cos(\alpha) \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
r_1.sin(\alpha) & r_1.cos(\alpha) & 0 & r_1^2 & -r_1.sin(\alpha) & -r_1.cos(\alpha) & 0 & r_1.r_2 \\
-sin(\alpha)^2 & -sin(\alpha).cos(\alpha) & 0 & -r_1.sin(\alpha) & sin(\alpha)^2 & sin(\alpha).cos(\alpha) & 0 & -r_2.sin(\alpha) \\
-sin(\alpha).cos(\alpha) & -cos(\alpha)^2 & 0 & -r_1.cos(\alpha) & sin(\alpha).cos(\alpha) & cos(\alpha)^2 & 0 & -r_2.cos(\alpha) \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
r_2.sin(\alpha) & r_2.cos(\alpha) & 0 & r_1.r_2 & -r_2.sin(\alpha) & -r_2.cos(\alpha) & 0 & r_2^2 \\
\end{bmatrix}
$$
> [!NOTE]
>
> In matlab, cos and sin terms will be noted as $s_i$, for visual simplification
**Constant stiffness matrix**
$$
Ks=
\begin{bmatrix}
k_{x1} & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & k_{y1} & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & k_{\theta1}& -k_{\theta1} & 0 & 0 & 0 & 0 \\
0 & 0 & -k_{\theta1} & k_{\theta1} & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & k_{x1} & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & k_{y1} & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & k_{\theta2} & -k_{\theta2} \\
0 & 0 & 0 & 0 & 0 & 0 & -k_{\theta2} & k_{\theta2} \\
\end{bmatrix}
$$
**Damping matrix**
$$
C = \eta M+\beta K_{mean}
$$
**Forces**
$$
F =
\begin{bmatrix}
0 \\ 0 \\ T_{in} \\ 0 \\ 0\\ 0\\ T_{out}\\ 0
\end{bmatrix}
$$
## TO FIX
> [!ATTENTION]
> ...
## Machine specifications
Example of computational time : `44sec for fs=2500` / `n_periods = 10`
```
-`
.o+`
`ooo/ OS: Arch Linux x86_64
`+oooo: Host: 20EV000UFR ThinkPad E560
`+oooooo: Kernel: 6.19.8-arch1-1
-+oooooo+: Shell: zsh 5.9
`/:-:++oooo+: Terminal: kitty
`/++++/+++++++: CPU: Intel i5-6200U (4) @ 2.300GHz
`/++++++++++++++: GPU: Intel Skylake-U GT2 [HD Graphics 520]
`/+++ooooooooooooo/` Memory: 1703MiB / 3792MiB
./ooosssso++osssssso+`
.oossssso-````/ossssss+`
-osssssso. :ssssssso.
:osssssss/ osssso+++.
/ossssssss/ +ssssooo/-
`/ossssso+/:- -:/+osssso+-
`+sso+:-` `.-/+oso:
`++:. `-/+/
.` `/
```

View file

@ -0,0 +1,286 @@
---
Author: Antoine Foucault-Castelli
Date: 17/03/2026
Bibliography: @karmiFiabiliteOptimisationSystemes @ghorbelEffectBrakeLocation2020a @zhengAnalyticalApproachMesh2022
Version: 4.0
---
| Newmark parameters | Value |
| -------------------------------------------------- | --------- |
| $\gamma$ | |
| $\beta$ | |
| **Gears** | **Value** |
| Pinon 1 tooth number $Z1$ | |
| Pinion 2 tooth number $Z2$ | |
| Pinion modulus $m_0$ | |
| Pinion width $b$ | |
| Internal diameter pinion 1 $d_{i1}$ | |
| Internal diameter pinion 2 $d_{i_2}$ | |
| Input speed $N_1$ | |
| Contact angle $\alpha$ | |
| Steel density $\rho_{steel}$ | |
| **Masses** | **Value** |
| Input mass $m_{in}$ | |
| Output mass $m_{out}$ | |
| **Stiffness** | |
| Flexion $x$ : k_x=k_{x_1}=k_{x_2}$ | |
| Flexion $y$ : k_y=k_{y_1}=k_{y_2}$ | |
| Torsion $z$ : $k_\theta=k_{\theta_1}=k_{\theta_2}$ | |
| Mean mesh stiffness $k_{mesh_{mean}}$ | |
| **Damping** | |
| Mass related $\eta$ | |
| Stiffness related $\beta$ | |
| **Wind excitation** | |
| Blade radius $r_{blade}$ | |
| Air density $rho_{air}$ | |
| Wind | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
# Gearbox simulation
## Structure
```
main.m
func.m
time_sampling
inertia
gearbox_geometry
mesh_stiffness
wind_excitation
mass_matrix
stiffness_matrix
stiffness_update
damping_matrix
forces_matrix
initialization
newmark
parameters.m
display.m
disp_xy(t,x,i)
speed_xy(t,v,i)
acc_xy(t,v,i)
disp_theta(t,x,i)
speed_theta(t,v,i)
acc_theta(t,a,i)
mesh_stiffness(t,k_var,k_mean,i)
taero(t,T_aero,i)
rms_on_x(x)
spectral_on_x(x,i,tf,dt)
plot_x(t,x,i)
only_display.m
display_update.m
```
`main.m` is the launcher for the full code compilation
`func` is the function class, containing every function used in the code
`parameters` is the model parameters document
`display` is the displayer for figures
`only_display` to skip non-needed full compilation
`display_update` to update a single graph if needed
## How does it work ?
**For Matlab under windows :**
open matlab and launch main.m
> [!WARNING]
> remove `graphics_toolkit("gnuplot")` which is only useful for Octave visualization
**For Octave/Linux :**
```bash
cd [path_to_cloned]/code/versions/[current_version]/
octave
>>> run main.m
>>>
```
## Informations
- [x] Verified code with base code and paper
- [x] Implemented wind excitation
- [x] Implemented Ghorbel parameters
- [~] Add varying output torque depending on number of tooth in contact ?
- [~] add brake ?
- [~] Variation of C ?
- [~] ODE45 ?
- [x] Displays from last version (in class)
- [x] New mesh stiffness variation model (trapezoidal)
- [x] Print in pdf
- [ ] Errors/defects implementation
- [ ] profile error
- [ ] assembly defect (change on gear stiffness)
- [ ] README
- [x] Maths
- [ ] Source(s)
- [ ] Random models implementation
- [x] Display
- [x] time response on a2
- [x] speed response
- [x] x movement (vs y movement ?)
- [x] RMS STD Kurtosis
- [ ] Tests
- [ ] different speed
- [ ] different blade radii
## Maths
The model is represented by two 4DDL shafts in a gear connection : $x$ and $y$ are free at the pinion, $\theta$ is free at both ends of the shaft (input/output is $\theta_{ii}$ and meshing rotation is $\theta_{ij}$).
### Parameters
### Energy equations
$$
\frac{\partial Ep}{\partial q_i}+
\frac{d}{dt}\left(\frac{Ec}{\dot{q}_i}\right)-
\frac{\partial Ec}{\partial q_i}+
\frac{\partial D}{\partial \dot{q}_i}
=\frac{W}{\partial q_i}
\\
Ec = \frac{1}{2}m_1*\dot{x}_1^2+
\frac{1}{2}m_1*\dot{y}_1^2+
\frac{1}{2}I_{11}\dot{\theta}_{11}^2+
\frac{1}{2}I_{12}\dot{\theta}_{12}^2+
\frac{1}{2}m_2*\dot{x_2}^2+
\frac{1}{2}m_2*\dot{y_2}^2+
\frac{1}{2}I_{22}\dot{\theta}_{22}^2+
\frac{1}{2}I_{21}\dot{\theta}_{21}^2
\\
Ep = \frac{1}{2}k_{x_1}x_{1}^2+
\frac{1}{2}k_{y_1}y_{1}^2+
\frac{1}{2}k_{\theta_1}(\theta_{11}-\theta_{12})^2+
\frac{1}{2}k_{x_2}x_{2}^2+
\frac{1}{2}k_{y_2}y_{2}^2+
\frac{1}{2}k_{\theta_2}(\theta_{21}-\theta_{22})^2+
\frac{1}{2}K_e(t)\delta_1^2(t)
$$
### Equations of movement
$Ep$ and $Ec$ are separated between the two shaft (1 and 2)
$$
\begin{cases}
&\frac{\partial Ep_1}{\partial x_1}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{x}_1}\right)=m_1\ddot{x}_1+k_{x1}x_1+sin(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial y_1}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{y}_1}\right)=m_1\ddot{y}_1+k_{y1}y_1+cos(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial \theta_{11}}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{\theta}_{11}}\right)=I_{11}\ddot{\theta}_{11}+k_{\theta 1}(\theta_{11}-\theta_{12})=Cm \\
&\frac{\partial Ep_1}{\partial \theta_{12}}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{\theta}_{12}}\right)=I_{12}\ddot{\theta}_{12}+k_{\theta 1}(\theta_{12}-\theta_{11})+K_e(t)r_{b12}\delta_1(t)=0 \\
&\frac{\partial Ep_1}{\partial x_2}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{x}_2}\right)=m_2\ddot{x}_2+k_{x2}x_2-sin(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial y_2}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{y}_2}\right)=m_2\ddot{y}_2+k_{y2}y_2-cos(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial \theta_{22}}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{\theta}_{22}}\right)=I_{22}\ddot{\theta}_{22}-k_{\theta 2}(\theta_{21}-\theta_{22})=-Cr \\
&\frac{\partial Ep_1}{\partial \theta_{21}}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{\theta}_{21}}\right)=I_{21}\ddot{\theta}_{21}-k_{\theta 2}(\theta_{21}-\theta_{22})+K_e(t)r_{b21}\delta_1(t)=0
\end{cases}
$$
With $\delta_i(t)=(x_1-x_2)sin(\alpha)+(y_1-y_2)cos(\alpha)+\theta_{12}r_{b1}+\theta_{21}r_{b2}$ and $r_{bij}$ the base radius of pinions, $K_e$ is the varying meshing stiffness, mass $m_i = \pi r^2_{i}\rho$ for both pinions, and $I_{ij} = \frac{1}{2}m_{ij}r_{ij}^2$ for pinions and input/output inertia.
### Matrices
**Equation to solve :**
$$
[M]\{\ddot{q}\}+C\{\dot{q}\}+([Ks]+[K(t)])\{q\}=\{F_0\} \\
\{q\}=\{x_1,y_1,\theta_{11},\theta_{12},x_2,y_2,\theta_{22},\theta_{21}\}
$$
**Mass matrix :**
$$
M =
\begin{bmatrix}
m_1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & m_1 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & I_{11} & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & I_{12} & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & m_2 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & m_2 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & I_{22} & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & I_{21} \\
\end{bmatrix} \\
$$
With $m_1$ mass of shaft 1 and $m_2$ mass of shaft 2
**Variable mesh stiffness matrix**
$$
K(t)= K_e(t)
\begin{bmatrix}
sin(\alpha)^2 & sin(\alpha).cos(\alpha) & 0 & r_1.sin(\alpha) & -sin(\alpha)^2 & -sin(\alpha).cos(\alpha) & 0 & r_2.sin(\alpha) \\
sin(\alpha).cos(\alpha) & cos(\alpha)^2 & 0 & r_1.cos(\alpha) & -sin(\alpha).cos(\alpha) & -cos(\alpha)^2 & 0 & r_2.cos(\alpha) \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
r_1.sin(\alpha) & r_1.cos(\alpha) & 0 & r_1^2 & -r_1.sin(\alpha) & -r_1.cos(\alpha) & 0 & r_1.r_2 \\
-sin(\alpha)^2 & -sin(\alpha).cos(\alpha) & 0 & -r_1.sin(\alpha) & sin(\alpha)^2 & sin(\alpha).cos(\alpha) & 0 & -r_2.sin(\alpha) \\
-sin(\alpha).cos(\alpha) & -cos(\alpha)^2 & 0 & -r_1.cos(\alpha) & sin(\alpha).cos(\alpha) & cos(\alpha)^2 & 0 & -r_2.cos(\alpha) \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
r_2.sin(\alpha) & r_2.cos(\alpha) & 0 & r_1.r_2 & -r_2.sin(\alpha) & -r_2.cos(\alpha) & 0 & r_2^2 \\
\end{bmatrix}
$$
> [!NOTE]
>
> In matlab, cos and sin terms will be noted as $s_i$, for visual simplification
**Constant stiffness matrix**
$$
Ks=
\begin{bmatrix}
k_{x1} & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & k_{y1} & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & k_{\theta1}& -k_{\theta1} & 0 & 0 & 0 & 0 \\
0 & 0 & -k_{\theta1} & k_{\theta1} & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & k_{x1} & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & k_{y1} & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & k_{\theta2} & -k_{\theta2} \\
0 & 0 & 0 & 0 & 0 & 0 & -k_{\theta2} & k_{\theta2} \\
\end{bmatrix}
$$
**Damping matrix**
$$
C = \eta M+\beta K_{mean}
$$
**Forces**
$$
F =
\begin{bmatrix}
0 \\ 0 \\ T_{in} \\ 0 \\ 0\\ 0\\ T_{out}\\ 0
\end{bmatrix}
$$
## TO FIX
> [!ATTENTION]
> ...
## Machine specifications
Example of computational time : `44sec for fs=2500` / `n_periods = 10`
```
-`
.o+`
`ooo/ OS: Arch Linux x86_64
`+oooo: Host: 20EV000UFR ThinkPad E560
`+oooooo: Kernel: 6.19.8-arch1-1
-+oooooo+: Shell: zsh 5.9
`/:-:++oooo+: Terminal: kitty
`/++++/+++++++: CPU: Intel i5-6200U (4) @ 2.300GHz
`/++++++++++++++: GPU: Intel Skylake-U GT2 [HD Graphics 520]
`/+++ooooooooooooo/` Memory: 1703MiB / 3792MiB
./ooosssso++osssssso+`
.oossssso-````/ossssss+`
-osssssso. :ssssssso.
:osssssss/ osssso+++.
/ossssssss/ +ssssooo/-
`/ossssso+/:- -:/+osssso+-
`+sso+:-` `.-/+oso:
`++:. `-/+/
.` `/
```

View file

@ -0,0 +1,286 @@
---
Author: Antoine Foucault-Castelli
Date: 17/03/2026
Bibliography: @karmiFiabiliteOptimisationSystemes @ghorbelEffectBrakeLocation2020a @zhengAnalyticalApproachMesh2022
Version: 4.0
---
| Newmark parameters | Value |
| -------------------------------------------------- | --------- |
| $\gamma$ | |
| $\beta$ | |
| **Gears** | **Value** |
| Pinon 1 tooth number $Z1$ | |
| Pinion 2 tooth number $Z2$ | |
| Pinion modulus $m_0$ | |
| Pinion width $b$ | |
| Internal diameter pinion 1 $d_{i1}$ | |
| Internal diameter pinion 2 $d_{i_2}$ | |
| Input speed $N_1$ | |
| Contact angle $\alpha$ | |
| Steel density $\rho_{steel}$ | |
| **Masses** | **Value** |
| Input mass $m_{in}$ | |
| Output mass $m_{out}$ | |
| **Stiffness** | |
| Flexion $x$ : k_x=k_{x_1}=k_{x_2}$ | |
| Flexion $y$ : k_y=k_{y_1}=k_{y_2}$ | |
| Torsion $z$ : $k_\theta=k_{\theta_1}=k_{\theta_2}$ | |
| Mean mesh stiffness $k_{mesh_{mean}}$ | |
| **Damping** | |
| Mass related $\eta$ | |
| Stiffness related $\beta$ | |
| **Wind excitation** | |
| Blade radius $r_{blade}$ | |
| Air density $\rho_{air}$ | |
| Wind speed (mean) $v_{wind_{mean}}$ | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
# Gearbox simulation
## Structure
```
main.m
func.m
time_sampling
inertia
gearbox_geometry
mesh_stiffness
wind_excitation
mass_matrix
stiffness_matrix
stiffness_update
damping_matrix
forces_matrix
initialization
newmark
parameters.m
display.m
disp_xy(t,x,i)
speed_xy(t,v,i)
acc_xy(t,v,i)
disp_theta(t,x,i)
speed_theta(t,v,i)
acc_theta(t,a,i)
mesh_stiffness(t,k_var,k_mean,i)
taero(t,T_aero,i)
rms_on_x(x)
spectral_on_x(x,i,tf,dt)
plot_x(t,x,i)
only_display.m
display_update.m
```
`main.m` is the launcher for the full code compilation
`func` is the function class, containing every function used in the code
`parameters` is the model parameters document
`display` is the displayer for figures
`only_display` to skip non-needed full compilation
`display_update` to update a single graph if needed
## How does it work ?
**For Matlab under windows :**
open matlab and launch main.m
> [!WARNING]
> remove `graphics_toolkit("gnuplot")` which is only useful for Octave visualization
**For Octave/Linux :**
```bash
cd [path_to_cloned]/code/versions/[current_version]/
octave
>>> run main.m
>>>
```
## Informations
- [x] Verified code with base code and paper
- [x] Implemented wind excitation
- [x] Implemented Ghorbel parameters
- [~] Add varying output torque depending on number of tooth in contact ?
- [~] add brake ?
- [~] Variation of C ?
- [~] ODE45 ?
- [x] Displays from last version (in class)
- [x] New mesh stiffness variation model (trapezoidal)
- [x] Print in pdf
- [ ] Errors/defects implementation
- [ ] profile error
- [ ] assembly defect (change on gear stiffness)
- [ ] README
- [x] Maths
- [ ] Source(s)
- [ ] Random models implementation
- [x] Display
- [x] time response on a2
- [x] speed response
- [x] x movement (vs y movement ?)
- [x] RMS STD Kurtosis
- [ ] Tests
- [ ] different speed
- [ ] different blade radii
## Maths
The model is represented by two 4DDL shafts in a gear connection : $x$ and $y$ are free at the pinion, $\theta$ is free at both ends of the shaft (input/output is $\theta_{ii}$ and meshing rotation is $\theta_{ij}$).
### Parameters
### Energy equations
$$
\frac{\partial Ep}{\partial q_i}+
\frac{d}{dt}\left(\frac{Ec}{\dot{q}_i}\right)-
\frac{\partial Ec}{\partial q_i}+
\frac{\partial D}{\partial \dot{q}_i}
=\frac{W}{\partial q_i}
\\
Ec = \frac{1}{2}m_1*\dot{x}_1^2+
\frac{1}{2}m_1*\dot{y}_1^2+
\frac{1}{2}I_{11}\dot{\theta}_{11}^2+
\frac{1}{2}I_{12}\dot{\theta}_{12}^2+
\frac{1}{2}m_2*\dot{x_2}^2+
\frac{1}{2}m_2*\dot{y_2}^2+
\frac{1}{2}I_{22}\dot{\theta}_{22}^2+
\frac{1}{2}I_{21}\dot{\theta}_{21}^2
\\
Ep = \frac{1}{2}k_{x_1}x_{1}^2+
\frac{1}{2}k_{y_1}y_{1}^2+
\frac{1}{2}k_{\theta_1}(\theta_{11}-\theta_{12})^2+
\frac{1}{2}k_{x_2}x_{2}^2+
\frac{1}{2}k_{y_2}y_{2}^2+
\frac{1}{2}k_{\theta_2}(\theta_{21}-\theta_{22})^2+
\frac{1}{2}K_e(t)\delta_1^2(t)
$$
### Equations of movement
$Ep$ and $Ec$ are separated between the two shaft (1 and 2)
$$
\begin{cases}
&\frac{\partial Ep_1}{\partial x_1}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{x}_1}\right)=m_1\ddot{x}_1+k_{x1}x_1+sin(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial y_1}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{y}_1}\right)=m_1\ddot{y}_1+k_{y1}y_1+cos(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial \theta_{11}}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{\theta}_{11}}\right)=I_{11}\ddot{\theta}_{11}+k_{\theta 1}(\theta_{11}-\theta_{12})=Cm \\
&\frac{\partial Ep_1}{\partial \theta_{12}}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{\theta}_{12}}\right)=I_{12}\ddot{\theta}_{12}+k_{\theta 1}(\theta_{12}-\theta_{11})+K_e(t)r_{b12}\delta_1(t)=0 \\
&\frac{\partial Ep_1}{\partial x_2}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{x}_2}\right)=m_2\ddot{x}_2+k_{x2}x_2-sin(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial y_2}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{y}_2}\right)=m_2\ddot{y}_2+k_{y2}y_2-cos(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial \theta_{22}}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{\theta}_{22}}\right)=I_{22}\ddot{\theta}_{22}-k_{\theta 2}(\theta_{21}-\theta_{22})=-Cr \\
&\frac{\partial Ep_1}{\partial \theta_{21}}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{\theta}_{21}}\right)=I_{21}\ddot{\theta}_{21}-k_{\theta 2}(\theta_{21}-\theta_{22})+K_e(t)r_{b21}\delta_1(t)=0
\end{cases}
$$
With $\delta_i(t)=(x_1-x_2)sin(\alpha)+(y_1-y_2)cos(\alpha)+\theta_{12}r_{b1}+\theta_{21}r_{b2}$ and $r_{bij}$ the base radius of pinions, $K_e$ is the varying meshing stiffness, mass $m_i = \pi r^2_{i}\rho$ for both pinions, and $I_{ij} = \frac{1}{2}m_{ij}r_{ij}^2$ for pinions and input/output inertia.
### Matrices
**Equation to solve :**
$$
[M]\{\ddot{q}\}+C\{\dot{q}\}+([Ks]+[K(t)])\{q\}=\{F_0\} \\
\{q\}=\{x_1,y_1,\theta_{11},\theta_{12},x_2,y_2,\theta_{22},\theta_{21}\}
$$
**Mass matrix :**
$$
M =
\begin{bmatrix}
m_1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & m_1 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & I_{11} & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & I_{12} & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & m_2 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & m_2 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & I_{22} & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & I_{21} \\
\end{bmatrix} \\
$$
With $m_1$ mass of shaft 1 and $m_2$ mass of shaft 2
**Variable mesh stiffness matrix**
$$
K(t)= K_e(t)
\begin{bmatrix}
sin(\alpha)^2 & sin(\alpha).cos(\alpha) & 0 & r_1.sin(\alpha) & -sin(\alpha)^2 & -sin(\alpha).cos(\alpha) & 0 & r_2.sin(\alpha) \\
sin(\alpha).cos(\alpha) & cos(\alpha)^2 & 0 & r_1.cos(\alpha) & -sin(\alpha).cos(\alpha) & -cos(\alpha)^2 & 0 & r_2.cos(\alpha) \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
r_1.sin(\alpha) & r_1.cos(\alpha) & 0 & r_1^2 & -r_1.sin(\alpha) & -r_1.cos(\alpha) & 0 & r_1.r_2 \\
-sin(\alpha)^2 & -sin(\alpha).cos(\alpha) & 0 & -r_1.sin(\alpha) & sin(\alpha)^2 & sin(\alpha).cos(\alpha) & 0 & -r_2.sin(\alpha) \\
-sin(\alpha).cos(\alpha) & -cos(\alpha)^2 & 0 & -r_1.cos(\alpha) & sin(\alpha).cos(\alpha) & cos(\alpha)^2 & 0 & -r_2.cos(\alpha) \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
r_2.sin(\alpha) & r_2.cos(\alpha) & 0 & r_1.r_2 & -r_2.sin(\alpha) & -r_2.cos(\alpha) & 0 & r_2^2 \\
\end{bmatrix}
$$
> [!NOTE]
>
> In matlab, cos and sin terms will be noted as $s_i$, for visual simplification
**Constant stiffness matrix**
$$
Ks=
\begin{bmatrix}
k_{x1} & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & k_{y1} & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & k_{\theta1}& -k_{\theta1} & 0 & 0 & 0 & 0 \\
0 & 0 & -k_{\theta1} & k_{\theta1} & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & k_{x1} & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & k_{y1} & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & k_{\theta2} & -k_{\theta2} \\
0 & 0 & 0 & 0 & 0 & 0 & -k_{\theta2} & k_{\theta2} \\
\end{bmatrix}
$$
**Damping matrix**
$$
C = \eta M+\beta K_{mean}
$$
**Forces**
$$
F =
\begin{bmatrix}
0 \\ 0 \\ T_{in} \\ 0 \\ 0\\ 0\\ T_{out}\\ 0
\end{bmatrix}
$$
## TO FIX
> [!ATTENTION]
> ...
## Machine specifications
Example of computational time : `44sec for fs=2500` / `n_periods = 10`
```
-`
.o+`
`ooo/ OS: Arch Linux x86_64
`+oooo: Host: 20EV000UFR ThinkPad E560
`+oooooo: Kernel: 6.19.8-arch1-1
-+oooooo+: Shell: zsh 5.9
`/:-:++oooo+: Terminal: kitty
`/++++/+++++++: CPU: Intel i5-6200U (4) @ 2.300GHz
`/++++++++++++++: GPU: Intel Skylake-U GT2 [HD Graphics 520]
`/+++ooooooooooooo/` Memory: 1703MiB / 3792MiB
./ooosssso++osssssso+`
.oossssso-````/ossssss+`
-osssssso. :ssssssso.
:osssssss/ osssso+++.
/ossssssss/ +ssssooo/-
`/ossssso+/:- -:/+osssso+-
`+sso+:-` `.-/+oso:
`++:. `-/+/
.` `/
```

View file

@ -0,0 +1,286 @@
---
Author: Antoine Foucault-Castelli
Date: 17/03/2026
Bibliography: @karmiFiabiliteOptimisationSystemes @ghorbelEffectBrakeLocation2020a @zhengAnalyticalApproachMesh2022
Version: 4.0
---
| Newmark parameters | Value |
| -------------------------------------------------- | --------- |
| $\gamma$ | |
| $\beta$ | |
| **Gears** | **Value** |
| Pinon 1 tooth number $Z1$ | |
| Pinion 2 tooth number $Z2$ | |
| Pinion modulus $m_0$ | |
| Pinion width $b$ | |
| Internal diameter pinion 1 $d_{i1}$ | |
| Internal diameter pinion 2 $d_{i_2}$ | |
| Input speed $N_1$ | |
| Contact angle $\alpha$ | |
| Steel density $\rho_{steel}$ | |
| **Masses** | **Value** |
| Input mass $m_{in}$ | |
| Output mass $m_{out}$ | |
| **Stiffness** | |
| Flexion $x$ : k_x=k_{x_1}=k_{x_2}$ | |
| Flexion $y$ : k_y=k_{y_1}=k_{y_2}$ | |
| Torsion $z$ : $k_\theta=k_{\theta_1}=k_{\theta_2}$ | |
| Mean mesh stiffness $k_{mesh_{mean}}$ | |
| **Damping** | |
| Mass related $\eta$ | |
| Stiffness related $\beta$ | |
| **Wind excitation** | |
| Blade radius $r_{blade}$ | |
| Air density $\rho_{air}$ | |
| Wind speed (mean) $v_{wind_{mean}}$ | |
| Fluctuating external torque $T_{fluct}$ | |
| Fluctuating external frequency $$ | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
# Gearbox simulation
## Structure
```
main.m
func.m
time_sampling
inertia
gearbox_geometry
mesh_stiffness
wind_excitation
mass_matrix
stiffness_matrix
stiffness_update
damping_matrix
forces_matrix
initialization
newmark
parameters.m
display.m
disp_xy(t,x,i)
speed_xy(t,v,i)
acc_xy(t,v,i)
disp_theta(t,x,i)
speed_theta(t,v,i)
acc_theta(t,a,i)
mesh_stiffness(t,k_var,k_mean,i)
taero(t,T_aero,i)
rms_on_x(x)
spectral_on_x(x,i,tf,dt)
plot_x(t,x,i)
only_display.m
display_update.m
```
`main.m` is the launcher for the full code compilation
`func` is the function class, containing every function used in the code
`parameters` is the model parameters document
`display` is the displayer for figures
`only_display` to skip non-needed full compilation
`display_update` to update a single graph if needed
## How does it work ?
**For Matlab under windows :**
open matlab and launch main.m
> [!WARNING]
> remove `graphics_toolkit("gnuplot")` which is only useful for Octave visualization
**For Octave/Linux :**
```bash
cd [path_to_cloned]/code/versions/[current_version]/
octave
>>> run main.m
>>>
```
## Informations
- [x] Verified code with base code and paper
- [x] Implemented wind excitation
- [x] Implemented Ghorbel parameters
- [~] Add varying output torque depending on number of tooth in contact ?
- [~] add brake ?
- [~] Variation of C ?
- [~] ODE45 ?
- [x] Displays from last version (in class)
- [x] New mesh stiffness variation model (trapezoidal)
- [x] Print in pdf
- [ ] Errors/defects implementation
- [ ] profile error
- [ ] assembly defect (change on gear stiffness)
- [ ] README
- [x] Maths
- [ ] Source(s)
- [ ] Random models implementation
- [x] Display
- [x] time response on a2
- [x] speed response
- [x] x movement (vs y movement ?)
- [x] RMS STD Kurtosis
- [ ] Tests
- [ ] different speed
- [ ] different blade radii
## Maths
The model is represented by two 4DDL shafts in a gear connection : $x$ and $y$ are free at the pinion, $\theta$ is free at both ends of the shaft (input/output is $\theta_{ii}$ and meshing rotation is $\theta_{ij}$).
### Parameters
### Energy equations
$$
\frac{\partial Ep}{\partial q_i}+
\frac{d}{dt}\left(\frac{Ec}{\dot{q}_i}\right)-
\frac{\partial Ec}{\partial q_i}+
\frac{\partial D}{\partial \dot{q}_i}
=\frac{W}{\partial q_i}
\\
Ec = \frac{1}{2}m_1*\dot{x}_1^2+
\frac{1}{2}m_1*\dot{y}_1^2+
\frac{1}{2}I_{11}\dot{\theta}_{11}^2+
\frac{1}{2}I_{12}\dot{\theta}_{12}^2+
\frac{1}{2}m_2*\dot{x_2}^2+
\frac{1}{2}m_2*\dot{y_2}^2+
\frac{1}{2}I_{22}\dot{\theta}_{22}^2+
\frac{1}{2}I_{21}\dot{\theta}_{21}^2
\\
Ep = \frac{1}{2}k_{x_1}x_{1}^2+
\frac{1}{2}k_{y_1}y_{1}^2+
\frac{1}{2}k_{\theta_1}(\theta_{11}-\theta_{12})^2+
\frac{1}{2}k_{x_2}x_{2}^2+
\frac{1}{2}k_{y_2}y_{2}^2+
\frac{1}{2}k_{\theta_2}(\theta_{21}-\theta_{22})^2+
\frac{1}{2}K_e(t)\delta_1^2(t)
$$
### Equations of movement
$Ep$ and $Ec$ are separated between the two shaft (1 and 2)
$$
\begin{cases}
&\frac{\partial Ep_1}{\partial x_1}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{x}_1}\right)=m_1\ddot{x}_1+k_{x1}x_1+sin(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial y_1}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{y}_1}\right)=m_1\ddot{y}_1+k_{y1}y_1+cos(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial \theta_{11}}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{\theta}_{11}}\right)=I_{11}\ddot{\theta}_{11}+k_{\theta 1}(\theta_{11}-\theta_{12})=Cm \\
&\frac{\partial Ep_1}{\partial \theta_{12}}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{\theta}_{12}}\right)=I_{12}\ddot{\theta}_{12}+k_{\theta 1}(\theta_{12}-\theta_{11})+K_e(t)r_{b12}\delta_1(t)=0 \\
&\frac{\partial Ep_1}{\partial x_2}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{x}_2}\right)=m_2\ddot{x}_2+k_{x2}x_2-sin(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial y_2}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{y}_2}\right)=m_2\ddot{y}_2+k_{y2}y_2-cos(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial \theta_{22}}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{\theta}_{22}}\right)=I_{22}\ddot{\theta}_{22}-k_{\theta 2}(\theta_{21}-\theta_{22})=-Cr \\
&\frac{\partial Ep_1}{\partial \theta_{21}}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{\theta}_{21}}\right)=I_{21}\ddot{\theta}_{21}-k_{\theta 2}(\theta_{21}-\theta_{22})+K_e(t)r_{b21}\delta_1(t)=0
\end{cases}
$$
With $\delta_i(t)=(x_1-x_2)sin(\alpha)+(y_1-y_2)cos(\alpha)+\theta_{12}r_{b1}+\theta_{21}r_{b2}$ and $r_{bij}$ the base radius of pinions, $K_e$ is the varying meshing stiffness, mass $m_i = \pi r^2_{i}\rho$ for both pinions, and $I_{ij} = \frac{1}{2}m_{ij}r_{ij}^2$ for pinions and input/output inertia.
### Matrices
**Equation to solve :**
$$
[M]\{\ddot{q}\}+C\{\dot{q}\}+([Ks]+[K(t)])\{q\}=\{F_0\} \\
\{q\}=\{x_1,y_1,\theta_{11},\theta_{12},x_2,y_2,\theta_{22},\theta_{21}\}
$$
**Mass matrix :**
$$
M =
\begin{bmatrix}
m_1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & m_1 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & I_{11} & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & I_{12} & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & m_2 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & m_2 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & I_{22} & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & I_{21} \\
\end{bmatrix} \\
$$
With $m_1$ mass of shaft 1 and $m_2$ mass of shaft 2
**Variable mesh stiffness matrix**
$$
K(t)= K_e(t)
\begin{bmatrix}
sin(\alpha)^2 & sin(\alpha).cos(\alpha) & 0 & r_1.sin(\alpha) & -sin(\alpha)^2 & -sin(\alpha).cos(\alpha) & 0 & r_2.sin(\alpha) \\
sin(\alpha).cos(\alpha) & cos(\alpha)^2 & 0 & r_1.cos(\alpha) & -sin(\alpha).cos(\alpha) & -cos(\alpha)^2 & 0 & r_2.cos(\alpha) \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
r_1.sin(\alpha) & r_1.cos(\alpha) & 0 & r_1^2 & -r_1.sin(\alpha) & -r_1.cos(\alpha) & 0 & r_1.r_2 \\
-sin(\alpha)^2 & -sin(\alpha).cos(\alpha) & 0 & -r_1.sin(\alpha) & sin(\alpha)^2 & sin(\alpha).cos(\alpha) & 0 & -r_2.sin(\alpha) \\
-sin(\alpha).cos(\alpha) & -cos(\alpha)^2 & 0 & -r_1.cos(\alpha) & sin(\alpha).cos(\alpha) & cos(\alpha)^2 & 0 & -r_2.cos(\alpha) \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
r_2.sin(\alpha) & r_2.cos(\alpha) & 0 & r_1.r_2 & -r_2.sin(\alpha) & -r_2.cos(\alpha) & 0 & r_2^2 \\
\end{bmatrix}
$$
> [!NOTE]
>
> In matlab, cos and sin terms will be noted as $s_i$, for visual simplification
**Constant stiffness matrix**
$$
Ks=
\begin{bmatrix}
k_{x1} & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & k_{y1} & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & k_{\theta1}& -k_{\theta1} & 0 & 0 & 0 & 0 \\
0 & 0 & -k_{\theta1} & k_{\theta1} & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & k_{x1} & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & k_{y1} & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & k_{\theta2} & -k_{\theta2} \\
0 & 0 & 0 & 0 & 0 & 0 & -k_{\theta2} & k_{\theta2} \\
\end{bmatrix}
$$
**Damping matrix**
$$
C = \eta M+\beta K_{mean}
$$
**Forces**
$$
F =
\begin{bmatrix}
0 \\ 0 \\ T_{in} \\ 0 \\ 0\\ 0\\ T_{out}\\ 0
\end{bmatrix}
$$
## TO FIX
> [!ATTENTION]
> ...
## Machine specifications
Example of computational time : `44sec for fs=2500` / `n_periods = 10`
```
-`
.o+`
`ooo/ OS: Arch Linux x86_64
`+oooo: Host: 20EV000UFR ThinkPad E560
`+oooooo: Kernel: 6.19.8-arch1-1
-+oooooo+: Shell: zsh 5.9
`/:-:++oooo+: Terminal: kitty
`/++++/+++++++: CPU: Intel i5-6200U (4) @ 2.300GHz
`/++++++++++++++: GPU: Intel Skylake-U GT2 [HD Graphics 520]
`/+++ooooooooooooo/` Memory: 1703MiB / 3792MiB
./ooosssso++osssssso+`
.oossssso-````/ossssss+`
-osssssso. :ssssssso.
:osssssss/ osssso+++.
/ossssssss/ +ssssooo/-
`/ossssso+/:- -:/+osssso+-
`+sso+:-` `.-/+oso:
`++:. `-/+/
.` `/
```

View file

@ -0,0 +1,286 @@
---
Author: Antoine Foucault-Castelli
Date: 17/03/2026
Bibliography: @karmiFiabiliteOptimisationSystemes @ghorbelEffectBrakeLocation2020a @zhengAnalyticalApproachMesh2022
Version: 4.0
---
| Newmark parameters | Value |
| -------------------------------------------------- | --------- |
| $\gamma$ | |
| $\beta$ | |
| **Gears** | **Value** |
| Pinon 1 tooth number $Z1$ | |
| Pinion 2 tooth number $Z2$ | |
| Pinion modulus $m_0$ | |
| Pinion width $b$ | |
| Internal diameter pinion 1 $d_{i1}$ | |
| Internal diameter pinion 2 $d_{i_2}$ | |
| Input speed $N_1$ | |
| Contact angle $\alpha$ | |
| Steel density $\rho_{steel}$ | |
| **Masses** | **Value** |
| Input mass $m_{in}$ | |
| Output mass $m_{out}$ | |
| **Stiffness** | |
| Flexion $x$ : k_x=k_{x_1}=k_{x_2}$ | |
| Flexion $y$ : k_y=k_{y_1}=k_{y_2}$ | |
| Torsion $z$ : $k_\theta=k_{\theta_1}=k_{\theta_2}$ | |
| Mean mesh stiffness $k_{mesh_{mean}}$ | |
| **Damping** | **Value** |
| Mass related $\eta$ | |
| Stiffness related $\beta$ | |
| **Wind excitation** | **Value** |
| Blade radius $r_{blade}$ | |
| Air density $\rho_{air}$ | |
| Wind speed (mean) $v_{wind_{mean}}$ | |
| Fluctuating external torque $T_{fluct}$ | |
| Fluctuating external frequency $f_{fluct}$ | |
| Performance efficiency | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
# Gearbox simulation
## Structure
```
main.m
func.m
time_sampling
inertia
gearbox_geometry
mesh_stiffness
wind_excitation
mass_matrix
stiffness_matrix
stiffness_update
damping_matrix
forces_matrix
initialization
newmark
parameters.m
display.m
disp_xy(t,x,i)
speed_xy(t,v,i)
acc_xy(t,v,i)
disp_theta(t,x,i)
speed_theta(t,v,i)
acc_theta(t,a,i)
mesh_stiffness(t,k_var,k_mean,i)
taero(t,T_aero,i)
rms_on_x(x)
spectral_on_x(x,i,tf,dt)
plot_x(t,x,i)
only_display.m
display_update.m
```
`main.m` is the launcher for the full code compilation
`func` is the function class, containing every function used in the code
`parameters` is the model parameters document
`display` is the displayer for figures
`only_display` to skip non-needed full compilation
`display_update` to update a single graph if needed
## How does it work ?
**For Matlab under windows :**
open matlab and launch main.m
> [!WARNING]
> remove `graphics_toolkit("gnuplot")` which is only useful for Octave visualization
**For Octave/Linux :**
```bash
cd [path_to_cloned]/code/versions/[current_version]/
octave
>>> run main.m
>>>
```
## Informations
- [x] Verified code with base code and paper
- [x] Implemented wind excitation
- [x] Implemented Ghorbel parameters
- [~] Add varying output torque depending on number of tooth in contact ?
- [~] add brake ?
- [~] Variation of C ?
- [~] ODE45 ?
- [x] Displays from last version (in class)
- [x] New mesh stiffness variation model (trapezoidal)
- [x] Print in pdf
- [ ] Errors/defects implementation
- [ ] profile error
- [ ] assembly defect (change on gear stiffness)
- [ ] README
- [x] Maths
- [ ] Source(s)
- [ ] Random models implementation
- [x] Display
- [x] time response on a2
- [x] speed response
- [x] x movement (vs y movement ?)
- [x] RMS STD Kurtosis
- [ ] Tests
- [ ] different speed
- [ ] different blade radii
## Maths
The model is represented by two 4DDL shafts in a gear connection : $x$ and $y$ are free at the pinion, $\theta$ is free at both ends of the shaft (input/output is $\theta_{ii}$ and meshing rotation is $\theta_{ij}$).
### Parameters
### Energy equations
$$
\frac{\partial Ep}{\partial q_i}+
\frac{d}{dt}\left(\frac{Ec}{\dot{q}_i}\right)-
\frac{\partial Ec}{\partial q_i}+
\frac{\partial D}{\partial \dot{q}_i}
=\frac{W}{\partial q_i}
\\
Ec = \frac{1}{2}m_1*\dot{x}_1^2+
\frac{1}{2}m_1*\dot{y}_1^2+
\frac{1}{2}I_{11}\dot{\theta}_{11}^2+
\frac{1}{2}I_{12}\dot{\theta}_{12}^2+
\frac{1}{2}m_2*\dot{x_2}^2+
\frac{1}{2}m_2*\dot{y_2}^2+
\frac{1}{2}I_{22}\dot{\theta}_{22}^2+
\frac{1}{2}I_{21}\dot{\theta}_{21}^2
\\
Ep = \frac{1}{2}k_{x_1}x_{1}^2+
\frac{1}{2}k_{y_1}y_{1}^2+
\frac{1}{2}k_{\theta_1}(\theta_{11}-\theta_{12})^2+
\frac{1}{2}k_{x_2}x_{2}^2+
\frac{1}{2}k_{y_2}y_{2}^2+
\frac{1}{2}k_{\theta_2}(\theta_{21}-\theta_{22})^2+
\frac{1}{2}K_e(t)\delta_1^2(t)
$$
### Equations of movement
$Ep$ and $Ec$ are separated between the two shaft (1 and 2)
$$
\begin{cases}
&\frac{\partial Ep_1}{\partial x_1}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{x}_1}\right)=m_1\ddot{x}_1+k_{x1}x_1+sin(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial y_1}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{y}_1}\right)=m_1\ddot{y}_1+k_{y1}y_1+cos(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial \theta_{11}}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{\theta}_{11}}\right)=I_{11}\ddot{\theta}_{11}+k_{\theta 1}(\theta_{11}-\theta_{12})=Cm \\
&\frac{\partial Ep_1}{\partial \theta_{12}}+\frac{d}{dt}\left(\frac{\partial Ec_1}{\partial \dot{\theta}_{12}}\right)=I_{12}\ddot{\theta}_{12}+k_{\theta 1}(\theta_{12}-\theta_{11})+K_e(t)r_{b12}\delta_1(t)=0 \\
&\frac{\partial Ep_1}{\partial x_2}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{x}_2}\right)=m_2\ddot{x}_2+k_{x2}x_2-sin(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial y_2}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{y}_2}\right)=m_2\ddot{y}_2+k_{y2}y_2-cos(\alpha)K_e(t)\delta _1(t)=0 \\
&\frac{\partial Ep_1}{\partial \theta_{22}}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{\theta}_{22}}\right)=I_{22}\ddot{\theta}_{22}-k_{\theta 2}(\theta_{21}-\theta_{22})=-Cr \\
&\frac{\partial Ep_1}{\partial \theta_{21}}+\frac{d}{dt}\left(\frac{\partial Ec_2}{\partial \dot{\theta}_{21}}\right)=I_{21}\ddot{\theta}_{21}-k_{\theta 2}(\theta_{21}-\theta_{22})+K_e(t)r_{b21}\delta_1(t)=0
\end{cases}
$$
With $\delta_i(t)=(x_1-x_2)sin(\alpha)+(y_1-y_2)cos(\alpha)+\theta_{12}r_{b1}+\theta_{21}r_{b2}$ and $r_{bij}$ the base radius of pinions, $K_e$ is the varying meshing stiffness, mass $m_i = \pi r^2_{i}\rho$ for both pinions, and $I_{ij} = \frac{1}{2}m_{ij}r_{ij}^2$ for pinions and input/output inertia.
### Matrices
**Equation to solve :**
$$
[M]\{\ddot{q}\}+C\{\dot{q}\}+([Ks]+[K(t)])\{q\}=\{F_0\} \\
\{q\}=\{x_1,y_1,\theta_{11},\theta_{12},x_2,y_2,\theta_{22},\theta_{21}\}
$$
**Mass matrix :**
$$
M =
\begin{bmatrix}
m_1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & m_1 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & I_{11} & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & I_{12} & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & m_2 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & m_2 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & I_{22} & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & I_{21} \\
\end{bmatrix} \\
$$
With $m_1$ mass of shaft 1 and $m_2$ mass of shaft 2
**Variable mesh stiffness matrix**
$$
K(t)= K_e(t)
\begin{bmatrix}
sin(\alpha)^2 & sin(\alpha).cos(\alpha) & 0 & r_1.sin(\alpha) & -sin(\alpha)^2 & -sin(\alpha).cos(\alpha) & 0 & r_2.sin(\alpha) \\
sin(\alpha).cos(\alpha) & cos(\alpha)^2 & 0 & r_1.cos(\alpha) & -sin(\alpha).cos(\alpha) & -cos(\alpha)^2 & 0 & r_2.cos(\alpha) \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
r_1.sin(\alpha) & r_1.cos(\alpha) & 0 & r_1^2 & -r_1.sin(\alpha) & -r_1.cos(\alpha) & 0 & r_1.r_2 \\
-sin(\alpha)^2 & -sin(\alpha).cos(\alpha) & 0 & -r_1.sin(\alpha) & sin(\alpha)^2 & sin(\alpha).cos(\alpha) & 0 & -r_2.sin(\alpha) \\
-sin(\alpha).cos(\alpha) & -cos(\alpha)^2 & 0 & -r_1.cos(\alpha) & sin(\alpha).cos(\alpha) & cos(\alpha)^2 & 0 & -r_2.cos(\alpha) \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
r_2.sin(\alpha) & r_2.cos(\alpha) & 0 & r_1.r_2 & -r_2.sin(\alpha) & -r_2.cos(\alpha) & 0 & r_2^2 \\
\end{bmatrix}
$$
> [!NOTE]
>
> In matlab, cos and sin terms will be noted as $s_i$, for visual simplification
**Constant stiffness matrix**
$$
Ks=
\begin{bmatrix}
k_{x1} & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & k_{y1} & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & k_{\theta1}& -k_{\theta1} & 0 & 0 & 0 & 0 \\
0 & 0 & -k_{\theta1} & k_{\theta1} & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & k_{x1} & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & k_{y1} & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & k_{\theta2} & -k_{\theta2} \\
0 & 0 & 0 & 0 & 0 & 0 & -k_{\theta2} & k_{\theta2} \\
\end{bmatrix}
$$
**Damping matrix**
$$
C = \eta M+\beta K_{mean}
$$
**Forces**
$$
F =
\begin{bmatrix}
0 \\ 0 \\ T_{in} \\ 0 \\ 0\\ 0\\ T_{out}\\ 0
\end{bmatrix}
$$
## TO FIX
> [!ATTENTION]
> ...
## Machine specifications
Example of computational time : `44sec for fs=2500` / `n_periods = 10`
```
-`
.o+`
`ooo/ OS: Arch Linux x86_64
`+oooo: Host: 20EV000UFR ThinkPad E560
`+oooooo: Kernel: 6.19.8-arch1-1
-+oooooo+: Shell: zsh 5.9
`/:-:++oooo+: Terminal: kitty
`/++++/+++++++: CPU: Intel i5-6200U (4) @ 2.300GHz
`/++++++++++++++: GPU: Intel Skylake-U GT2 [HD Graphics 520]
`/+++ooooooooooooo/` Memory: 1703MiB / 3792MiB
./ooosssso++osssssso+`
.oossssso-````/ossssss+`
-osssssso. :ssssssso.
:osssssss/ osssso+++.
/ossssssss/ +ssssooo/-
`/ossssso+/:- -:/+osssso+-
`+sso+:-` `.-/+oso:
`++:. `-/+/
.` `/
```

Some files were not shown because too many files have changed in this diff Show more