13 KiB
Author: Antoine Foucault-Castelli Date: 19/03/2026 Update: 20/03/2026 Bibliography: @karmiFiabiliteOptimisationSystemes @ghorbelEffectBrakeLocation2020a @zhengAnalyticalApproachMesh2022 Version: 4.1
[!BUG] Some equations has been put in latex block code as they didnt show properly on gitlab
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
error_profile_excitation
force_error_profile
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)
plot_fep(t,F_ep,i)
only_display.m
display_update.m
printer.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
printer prints all images in ../../print/ (only linux/mac)
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 :
cd [path_to_cloned]/code/versions/[current_version]/
octave
>>> run main.m
>>>
Informations
- Verified code with base code and paper
- Implemented wind excitation
- Implemented Ghorbel parameters
- [~] Add varying output torque depending on number of tooth in contact ?
- [~] add brake ?
- [~] Variation of C ?
- ODE45 ?
- Displays from last version (in class)
- New mesh stiffness variation model (trapezoidal)
- Print in pdf
- Errors/defects implementation
- profile error
- assembly defect (change on gear stiffness)
- README
- Maths
- Images
- Source(s)
- Random models implementation
- Display
- time response on a2
- speed response
- x movement (vs y movement ?)
- RMS STD Kurtosis
- Printing pdf and svg
- 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 | |
| Errors | Value | Unit |
| Profile error | 50e-6 | m |
| Center distance error | 10e-3 | m |
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)\varepsilonis 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
Error implementation : error profile is implemented as :
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}
\end
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:
`++:. `-/+/
.` `/