% Code MATLAB pour la courbe d'ouverture de fissure critique-temps
% Simulation des données d'ouverture de fissure critique
clear; clc; close all;
%% Paramètres de la poutre
L = 4; % Longueur de la poutre (m)
h = 0.3; % Hauteur de la poutre (m)
appui_gauche = 0;
appui_droit = L;
%% Données simulées d'ouverture de fissure critique dans le temps
% Simulation basée sur le comportement typique de fluage
temps = 0:100:10000; % Temps en heures (10000h ≈ 14 mois)
ouverture_critique = 0.1 + 0.3 * (1 - exp(-temps/3000)) + 0.02 * sqrt(temps/100);
% Position de la fissure critique sur la poutre (exemple)
position_fissure_critique = 1.8; % Position en mètres depuis l'appui gauche
%% Figure 1: Courbe ouverture de fissure critique-temps (Figure B-25)
figure('Position', [100 100 1200 500])
subplot(1,2,1)
plot(temps, ouverture_critique, 'b-', 'LineWidth', 2)
hold on
plot(temps, ouverture_critique, 'ro', 'MarkerSize', 4, 'MarkerFaceColor', 'r')
grid on
xlabel('Temps (heures)')
ylabel('Ouverture de fissure critique (mm)')
title('Figure B-25: Courbe ouverture de fissure critique-temps', 'FontSize', 12)
legend('Ouverture critique', 'Points de mesure', 'Location', 'northwest')
% Ajout de tendance
p = polyfit(temps, ouverture_critique, 1);
tendance = polyval(p, temps);
plot(temps, tendance, 'g--', 'LineWidth', 1.5, 'DisplayName', 'Tendance linéaire')
%% Figure 2: Visualisation de la poutre avec fissure critique
subplot(1,2,2)
hold on
% Dessin de la poutre
rectangle('Position', [0 -h/2 L h], 'FaceColor', [0.9 0.9 0.9], ...
'EdgeColor', 'k', 'LineWidth', 2)
% Dessin des appuis
plot([appui_gauche-0.2 appui_gauche+0.2], [-h/2-0.05 -h/2-0.05], ...
'k-', 'LineWidth', 4, 'Color', [0.5 0.5 0.5])
plot([appui_droit-0.2 appui_droit+0.2], [-h/2-0.05 -h/2-0.05], ...
'k-', 'LineWidth', 4, 'Color', [0.5 0.5 0.5])
% Dessin de la fissure critique
ouv_actuelle = ouverture_critique(end); % Dernière valeur d'ouverture
x_fissure = position_fissure_critique;
largeur_fissure = ouv_actuelle/50; % Facteur d'échelle pour visualisation
% Fissure avec ouverture proportionnelle
plot([x_fissure x_fissure], [-h/2 h/2], 'r-', 'LineWidth', 3)
plot([x_fissure-largeur_fissure/2 x_fissure+largeur_fissure/2], ...
[0 0], 'r-', 'LineWidth', 4)
% Annotation de l'ouverture
text(x_fissure+0.3, 0, ...
sprintf('Ouv. crit.: %.2f mm', ouv_issure_actuelle), ...
'BackgroundColor', 'white', 'EdgeColor', 'red')
% Configuration de la visualisation
axis equal
xlim([-0.5 L+0.5])
ylim([-h/2-0.1 h/2+0.1])
xlabel('Position longitudinale (m)')
ylabel('Hauteur (m)')
title('Poutre sur deux appuis - Fissure critique')
grid on
% Légende
legend('Poutre', 'Appuis', 'Fissure critique', 'Ouverture', 'Location', 'northeast')
%% Affichage des informations
fprintf('=== INFORMATIONS SUR LA FISSURE CRITIQUE ===\n')
fprintf('Position de la fissure critique: %.2f m\n', position_fissure_critique)
fprintf('Ouverture initiale: %.3f mm\n', ouverture_critique(1))
fprintf('Ouverture finale: %.3f mm\n', ouverture_critique(end))
fprintf('Augmentation totale: %.3f mm\n', ouverture_critique(end)-ouverture_critique(1))
fprintf('Taux d''augmentation: %.6f mm/heure\n', p(1))
%% Animation de l'évolution temporelle (optionnelle)
figure('Position', [100 600 800 400])
for i = 1:10:length(temps)
clf
hold on
% Poutre
rectangle('Position', [0 -h/2 L h], 'FaceColor', [0.9 0.9 0.9], ...
'EdgeColor', 'k', 'LineWidth', 2)
% Appuis
plot([appui_gauche-0.2 appui_gauche+0.2], [-h/2-0.05 -h/2-0.05], ...
'k-', 'LineWidth', 4, 'Color', [0.5 0.5 0.5])
plot([appui_droit-0.2 appui_droit+0.2], [-h/2-0.05 -h/2-0.05], ...
'k-', 'LineWidth', 4, 'Color', [0.5 0.5 0.5])
% Fissure avec ouverture actuelle
ouv_actuelle = ouverture_critique(i);
largeur_fissure = ouv_actuelle/50;
plot([x_fissure x_fissure], [-h/2 h/2], 'r-', 'LineWidth', 3)
plot([x_fissure-largeur_fissure/2 x_fissure+largeur_fissure/2], ...
[0 0], 'r-', 'LineWidth', 4)
% Informations
text(0.5, h/2+0.05, sprintf('Temps: %d heures', temps(i)), 'FontSize', 12)
text(0.5, h/2+0.02, sprintf('Ouverture: %.3f mm', ouv_actuelle), 'FontSize', 12)
axis equal
xlim([-0.5 L+0.5])
ylim([-h/2-0.1 h/2+0.1])
xlabel('Position (m)')
ylabel('Hauteur (m)')
title('Évolution de l''ouverture de la fissure critique dans le temps')
grid on
drawnow
pause(0.1)
end