Bonjour,

Nous avons pour objectif de calculer le débit (Q) à l'intérieur d'une digue grâce à Matlab.
Cependant, nous avons un soucis au niveau de la ligne "u=ones(x)" ; le programme nous dit que u n'est pas défini.
En fait le réel soucis est de pouvoir donner une valeur de k qui dépend de x (k vaut 1^-12 avant xmoy et 1^-20 après), donc si une autre solution existe, elle est la bienvenue.

Voilà le programme :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
clear;
% PRE - COMPUTATION
xmin=1.; xmax=20.; xmoy=10.;
nx=10;
 
dx=(xmax-xmin)/(nx-1); 
x=[xmin:dx:xmax];
mu=1.e-3;
 
%k=1.e-12;
u=ones(x);
ip=find(x<xmoy); k=1.e-20*u; k(ip)=1.e-12; 
 
 
 
ro=1.;
g=9.81;
phi=[1. 1. 1. 1. 1.];   
h0=85.;h1=5.;
Q=((h0^2-h1^2) ./ (xmax))* ((k*ro*g./2)*mu); % a verifier
T=(k*ro*g*h0)/mu;
h=zeros(1,nx);h2=zeros(1,nx);
 
 
 
%h(1)=h0;
%h1=(h0^2-(2.*Q*mu.*x)./(k.*ro.*g))^(1/2);
dt=min(phi*0.1*dx*dx/T)
 
endloop=100;
ix=2:nx-1; ixp=ix+ones(size(ix)); ixm=ix-ones(size(ix));
c=T/phi;
 
% COMPUTATION
for boucle=1:endloop,
     h2(ix)=h(ix)+dt*c*(h(ixp)-2.*h(ix)+h(ixm))/dx/dx;
     h2(1)=h0;
     h2(nx)=h1;
     h=h2;
 
end
 
% POST - COMPUTATION
plot (x,h)
Merci d'avance