% Script MATLAB pour l'analyse modale et la réponse forcée
% Volant moteur classique et bi-masse
% Paramètres communs
C = 1.628e7; % Raideur torsionnelle (N.m/rad)
omega_exc = 125.5; % Fréquence d'excitation (rad/s)
F = [1000; 0; 0; 0; 0]; % Couple d'excitation (N.m)
% --- Volant moteur classique ---
% Matrice d'inertie [J]
J_classique = diag([0.39159, 0.02, 0.02, 0.02, 0.01]);
% Matrice de raideur [C]
C_classique = [C, -C, 0, 0, 0; ...
-C, 2*C, -C, 0, 0; ...
0, -C, 2*C, -C, 0; ...
0, 0, -C, 2*C, -C; ...
0, 0, 0, -C, C];
% Calcul des fréquences propres et déformées modales
[V_classique, D_classique] = eig(C_classique, J_classique);
omega_classique = sqrt(diag(D_classique)); % Fréquences propres (rad/s)
omega_classique_rpm = omega_classique * 60 / (2 * pi); % Conversion en tr/min
% Normalisation des déformées modales
phi1_classique = V_classique(:,1) / V_classique(1,1); % Mode 1
phi2_classique = V_classique(:,2) / V_classique(3,2); % Mode 2
% Réponse forcée
B_classique = diag([100, 5.1, 5.1, 5.1, 2.5]); % Matrice d'amortissement
% Matrice dynamique pour omega = 125.5 rad/s
A_classique = -omega_exc^2 * J_classique + 1i * omega_exc * B_classique + C_classique;
theta_classique = A_classique \ F; % Résolution pour theta
theta_classique_mag = abs(theta_classique); % Amplitude
% --- Volant moteur bi-masse ---
% Matrice d'inertie [J]
J_dmf = diag([0.25, 0.14, 0.02, 0.02, 0.02, 0.01]);
% Matrice de raideur [C']
K = 5000; % Raideur ressort-amortisseur (N.m/rad)
C_dmf = [K+C, -K, -C, 0, 0, 0; ...
-K, K, 0, 0, 0, 0; ...
-C, 0, 2*C, -C, 0, 0; ...
0, 0, -C, 2*C, -C, 0; ...
0, 0, 0, -C, 2*C, -C; ...
0, 0, 0, 0, -C, C];
% Calcul des fréquences propres et déformées modales
[V_dmf, D_dmf] = eig(C_dmf, J_dmf);
omega_dmf = sqrt(diag(D_dmf));
omega_dmf_rpm = omega_dmf * 60 / (2 * pi);
% Normalisation des déformées modales
phi1_dmf = V_dmf(:,1) / V_dmf(1,1); % Mode 1
phi2_dmf = V_dmf(:,2) / V_dmf(3,2); % Mode 2
% Réponse forcée
F_dmf = [1000; 0; 0; 0; 0; 0]; % Couple appliqué à Jp
B_dmf = zeros(6,6);
B_dmf(1,1) = 30; B_dmf(1,2) = -30; B_dmf(2,1) = -30; B_dmf(2,2) = 30;
B_dmf(3,3) = 1; B_dmf(4,4) = 1; B_dmf(5,5) = 1; B_dmf(6,6) = 0.5;
A_dmf = -omega_exc^2 * J_dmf + 1i * omega_exc * B_dmf + C_dmf;
theta_dmf = A_dmf \ F_dmf;
theta_dmf_mag = abs(theta_dmf);
% --- Affichage des résultats ---
disp('Volant moteur classique :');
disp(['Fréquence propre 1 : ', num2str(omega_classique(1)), ' rad/s (',
num2str(omega_classique_rpm(1)), ' tr/min)']);
disp(['Fréquence propre 2 : ', num2str(omega_classique(2)), ' rad/s (',
num2str(omega_classique_rpm(2)), ' tr/min)']);
disp('Amplitudes (rad) :');
disp(['J1 : ', num2str(theta_classique_mag(1))]);
disp(['J5 : ', num2str(theta_classique_mag(5))]);
disp('Volant moteur bi-masse :');
disp(['Fréquence propre 1 : ', num2str(omega_dmf(1)), ' rad/s (', num2str(omega_dmf_rpm(1)), '
tr/min)']);
disp(['Fréquence propre 2 : ', num2str(omega_dmf(2)), ' rad/s (', num2str(omega_dmf_rpm(2)), '
tr/min)']);
disp('Amplitudes (rad) :');
disp(['Jp : ', num2str(theta_dmf_mag(1))]);
disp(['Js : ', num2str(theta_dmf_mag(2))]);
disp(['J5 : ', num2str(theta_dmf_mag(5))]);
% --- Tracé des déformées modales ---
% Volant classique (Figure 25)
figure;
plot(1:5, phi1_classique, 'b-', 'DisplayName', 'Mode 1');
hold on;
plot(1:5, phi2_classique, 'r-', 'DisplayName', 'Mode 2');
title('Déformées modales - Volant moteur classique');
xlabel('Disque (J_1 à J_5)'); ylabel('Amplitude normalisée');
legend; grid on;
saveas(gcf, '[Link]');
% Volant bi-masse (Figure 26)
figure;
plot(1:6, phi1_dmf, 'b-', 'DisplayName', 'Mode 1');
hold on;
plot(1:6, phi2_dmf, 'r-', 'DisplayName', 'Mode 2');
title('Déformées modales - Volant moteur bi-masse');
xlabel('Disque (J_p, J_s, J_2 à J_5)'); ylabel('Amplitude normalisée');
legend; grid on;
saveas(gcf, '[Link]');