% Exercice 1
% Ici on va uniquement changer quelques paramètres pour l'affichage des
% figures.
set(0,'defaulttextinterpreter','latex') set(0,'DefaultAxesFontSize', 60) set(0,'DefaultTextFontSize', 60)
% On définit les paramètres du problème.
Q = 6;
B = 4;
q = Q/B;
g = 9.81;
i1 = 0.2;
i2 = 0.005;
K = 30;
% On calcule et affiche les hauteurs normales et critique.
hn1 = (Q/(B*K*i1^0.5))^(3/5) hn2 = (Q/(B*K*i2^0.5))^(3/5) hc = (Q/(B*g^0.5))^(2/3)
% On va résoudre numériquement l'équation de courbe de remous à l'aide du
% solver ode45 (pour plus d'informations à son sujet, taper "help ode45"
% dans le terminal de Matlab. La résolution se fait d'amont en aval car
% l'écoulement est supercritique au niveau de la rupture de pente, la
% hauteur d'eau initiale h0 est égale à la hauteur d'eau en fin de
% première partie. On va résoudre arbitrairement de 0 à 30 m , c'est la
% variable xspan = [0 30] qui spécifie les bornes de résolution et le
% sens de résolution (de 0 vers 30).
xspan = [0 30];
h0 = hn1;
[x2, h2] = ode45(@(x, h) i2*(1 - (hn2/h)^(10/3))/(1 - (hc/h)^3), xspan, h0);
figure
plot(x2, h2, '-o', 'MarkerSize', 16, 'LineWidth', 4) xlabel('$x$ [m]')
ylabel('$h(x)$ [m]')
% On voit que la résolution "capote" vers x = 15 (ode45 nous retourne des
% valeurs de h complexes). On va se limiter à résoudre sur xspan = [0 14]
% et aussi calculer la courbe conjuguée sur cet intervalle.
xspan = [0 14];
h0 = hn1;
[x2, h2] = ode45(@(x, h) i2*(1 - (hn2/h)^(10/3))/(1 - (hc/h)^3), xspan, h0);
% Calcul du nombre de Froude.
Fr1 = q./sqrt(g*h2.^3);
% Calcul de la hauteur conjuguée.
h2c = h2.*0.5.*(-1 + sqrt(1 + 8*Fr1.^2));
figure
plot(x2, h2, '-o','MarkerSize', 16, 'LineWidth', 4) hold on
plot(x2, h2c, '-o','MarkerSize', 16, 'LineWidth', 4) xlabel('$x$ [m]')
ylabel('$h(x)$ [m]')
legend('Courbe de remous', 'Courbe conjuguée')
% On va maintenant calculer la courbe de remous en aval du ressaut,
% c'est-à-dire dans le régime subcritique. Dans ce cas, il faut mettre la
% condition limite en aval (à la fin de la courbe) et résoudre l'équation
% de l'avalvers l'amont. Pour cela on va spécifier à ode45 que les bornes
% d'intégration sont inversée, xspan = [20 0]. On met la condition limite
% en aval h0 = hn2; on suppose que loin du ressaut l'écoulement est en
% régime permanant et uniforme.
xspan = [20 0];
h0 = hn2;
[x3, h3] = ode45(@(x, h) i2*(1 - (hn2/h)^(10/3))/(1 - (hc/h)^3), xspan, h0);
figure
plot(x3, h3, '-o','MarkerSize', 16, 'LineWidth', 4) xlabel('$x$ [m]')
ylabel('$h(x)$ [m]')
% Calcul du nombre de Froude.
Fr3 = q./sqrt(g*h3.^3);
% Calcul de la hauteur conjuguée.
h3c = h3.*0.5.*(-1 + sqrt(1 + 8*Fr3.^2));
% On affiche la courbe de remous ainsi que sa courbe conjuguée.
figure
plot(x3, h3, '-o','MarkerSize', 16, 'LineWidth', 4) hold on
plot(x3, h3c, '-o','MarkerSize', 16, 'LineWidth', 4) xlabel('$x$ [m]')
ylabel('$h(x)$ [m]')
legend('Courbe de remous', 'Courbe conjuguée')
% On va maintenant afficher toutes les courbes de remous ainsi que leur
% courbes conjuguée afin de déterminer la position du ressaut.
figure
plot(x2, h2, '-o','MarkerSize', 16, 'LineWidth', 4) hold on
plot(x2, h2c, '-o','MarkerSize', 16, 'LineWidth', 4) hold on
plot(x3, h3, '-o','MarkerSize', 16, 'LineWidth', 4) hold on
plot(x3, h3c, '-o','MarkerSize', 16, 'LineWidth', 4) xlabel('$x$ [m]')
ylabel('$h(x)$ [m]')
legend('Courbe de remous avant ressaut', 'Courbe conjuguée avant ressaut',...
'Courbe de remous après ressaut', 'Courbe conjuguée après ressaut')
% On détermine graphiquement la position du ressaut comme étant x = 10 m