Commit 134762d3 authored by Dorchies David's avatar Dorchies David
Browse files

#6 Ajout des scripts Scilab donnant les résultats des tests pour les ouvrages

Showing with 314 additions and 0 deletions
+314 -0
function [Q,C,w] = Qouvrage(T,h1,h2,w,hv,L,Cd)
// T=1 : Seuil Orifice avec surverse éventuelle (SIC)
// 2 : Seuil Vanne avec surverse éventuelle (SIC)
// 3 : Classique Seuil
// 4 : Classique Orifice
// 5 : Classique Noyee
// 6 : Cunge avec differentes conditions d'ecoulement
// h1 : cote amont (par rapport au radier)
// h2 : cote aval (par rapport au radier)
// w : ouverture (par rapport au radier)
// hv : hauteur de la vanne (pour le calcul de la surverse éventuelle)
// L : largeur
// Cd : coefficient de debit
// Q : debit
// C : code couleur correspondant aux conditions d'ecoulement
// C=0; debit nul
// C=1; surface libre denoye
// C=2; surface libre noye
// C=3; charge denoye
// C=4; charge noye partiel
// C=5; charge noye total
// C=C+10; si surverse
// Initialisation ---------------------------------------------
R2G = sqrt(2*9.81);
R32 = 3*sqrt(3)/2;
// Tests ------------------------------------------------------
Q=0;
C=0;
partiel="non"
if (w==0 & hv==0)
Q=0;
return
end
if (h2>h1)
Q=0;
return
end
if (h1==0)
Q=0;
return
end
// Seuil - Orifice ===========================================
if (T==1 & w>0)
// Conditions d'ecoulement ------------------------------------
if (h1<=w)
surfacelibre='oui';
else
surfacelibre='non';
end
alfa=2/3;
if (h2<=alfa*h1)
denoye='oui';
else
denoye='non';
if (h2<=2/3*h1+w/3)
partiel='oui';
else
partiel='non';
end
end
// Seuil - Denoye ---------------------------------------------
if (surfacelibre=='oui') & (denoye=='oui')
Q=Cd*L*R2G*(h1^1.5);
C=1;
end
// Seuil - Noye -----------------------------------------------
if (surfacelibre=='oui') & (denoye=='non')
Cs=R32*Cd;
Q=Cs*L*R2G*((h1-h2)^0.5)*h2;
C=2;
end
// Orifice - Denoye -------------------------------------------
if (surfacelibre=='non') & (denoye=='oui')
Q=Cd*L*R2G*(h1^1.5-(h1-w)^1.5);
C=3;
end
// Orifice - Noye ---------------------------------------------
if (surfacelibre=='non') & (denoye=='non')
// Ennoyement partiel ---------------------------------
if (partiel=='oui')
Q=Cd*L*R2G*(R32*h2*(h1-h2)^0.5-(h1-w)^1.5);
C=4;
// Ennoyement total -----------------------------------
else
Cs=R32*Cd;
Q=Cs*L*R2G*((h1-h2)^0.5)*w;
//~printf("b2= %f Cd1=%f\n",(h1-h2)^0.5, Cs*L*R2G);
C=5;
end
end
end
// Seuil - Vanne =============================================
if (T==2 & w>0)
// Calcul de parametres ---------------------------------------
mu0=2/3*Cd;
// Conditions d'ecoulement ------------------------------------
if (h1<=w)
surfacelibre='oui';
muf=mu0-0.08;
alfa=0.75;
else
surfacelibre='non';
mu =mu0-0.08/(h1/w);
mu1=mu0-0.08/(h1/w-1);
alfa=1-0.14*h2/w;
if (alfa<0.4)
alfa=0.4;
end
if (alfa>0)
alfa=0.75;
end
end
if (h2<=alfa*h1)
denoye='oui';
else
denoye='non';
x=sqrt(1-h2/h1);
beta1=-2*alfa+2.6;
if (x>0.2)
KF=1-(1-x/sqrt(1-alfa))^beta1;
else
KF=5*x*(1-(1-0.2/sqrt(1-alfa))^beta1);
end
alfa1=1-0.14*(h2-w)/w;
if (alfa1<0.4)
alfa1=0.4;
end
if (alfa1>0.75)
alfa1=0.75;
end
if (h2<=alfa1*h1+(1-alfa1)*w)
partiel='oui';
else
partiel='non';
end
end
// Seuil - Denoye ---------------------------------------------
if (surfacelibre=='oui') & (denoye=='oui')
Q=muf*L*R2G*(h1^1.5);
C=1;
end
// Seuil - Noye -----------------------------------------------
if (surfacelibre=='oui') & (denoye=='non')
Q=KF*muf*L*R2G*(h1^1.5);
C=2;
end
// Vanne - Denoye ---------------------------------------------
if (surfacelibre=='non') & (denoye=='oui')
Q=L*R2G*(mu*h1^1.5-mu1*(h1-w)^1.5);
C=3;
end
// Vanne - Noye -----------------------------------------------
if (surfacelibre=='non') & (denoye=='non')
x1=sqrt(1-(h2-w)/(h1-w));
beta1=-2*alfa1+2.6;
if (x1>0.2)
KF1=1-(1-x1/sqrt(1-alfa1))^beta1;
else
KF1=5*x1*(1-(1-0.2/sqrt(1-alfa1))^beta1);
end
// Ennoyement partiel ---------------------------------
if (partiel=='oui')
Q=L*R2G*(KF*mu*(h1^1.5)-mu1*(h1-w)^1.5);
C=4;
// Ennoyement total -----------------------------------
else
Q=L*R2G*(KF*mu*(h1^1.5)-KF1*mu1*(h1-w)^1.5);
C=5;
end
end
end
// Surverse dans cas 1 et 2 ===================================
if hv==0
hv=%inf;
end;
if (T==1) | (T==2)
if (h1>w+hv)
surverse='oui';
alfa=2/3;
if (h2-w-hv<=alfa*(h1-w-hv))
denoyesurverse='oui';
else
denoyesurverse='non';
end
else
surverse='non';
end
// Surverse - Denoye -------------------------------------------
if (surverse=='oui')
if (denoyesurverse=='oui')
Q=Q+0.4*L*R2G*(h1-w-hv)^1.5;
C=C+10;
else
Q=Q+1.04*L*R2G*((h1-h2)^0.5)*(h2-w-hv);
C=C+10;
end
end
end
// Classique - Seuil ==========================================
if (T==3)
Q=Cd*L*R2G*h1^1.5;
C=1;
end
// Classique - Orifice ========================================
if (T==4)
if (h1>w)
Q=Cd*w*L*R2G*(h1-w)^0.5;
C=3;
else
Q=0;
C=0;
end
end
// Classique - Noyee ==========================================
if (T==5)
if (h1>h2)
Q=Cd*w*L*R2G*(h1-h2)^0.5;
C=5;
else
Q=0;
C=0;
end
end
// Classique Cunge ===========================================
if (T==6)
// Conditions d'ecoulement ------------------------------------
if (h2<=2/3*h1)
denoye='oui';
if (w<=2/3*h1)
surfacelibre='non';
Q=Cd*L*R2G*w*((h1-w)^0.5);
C=3;
else
surfacelibre='oui';
Q=Cd*L*R2G/R32*h1^1.5;
C=1;
end
else
denoye='non';
if (w<=h2)
surfacelibre='non';
Q=Cd*L*R2G*w*((h1-h2)^0.5);
C=5;
else
surfacelibre='oui';
Q=Cd*L*R2G*h2*((h1-h2)^0.5);
C=2;
end
end
end
//~printf("surface libre=%s denoye=%s partiel=%s\n", surfacelibre, denoye, partiel)
endfunction
function TestQOuvrageLoop(sTest, T, L, Cd, H1, h2, W)
printf("\n")
printf("*** %s ***\n", sTest)
// Tests des différents régimes
sCodeC = ["debit nul","surface libre denoye","surface libre noye","charge denoye","charge noye partiel","charge noye total"];
Q = []
C = []
CS = []
for w = W
for h1 = H1
[q, c] = Qouvrage(T,h1,h2,w,0,L,Cd)
Q = [Q q]
C = [C c]
CS = [CS sCodeC(c+1)]
end
end
printf("W=[")
printf("%f,",W')
printf("];\n")
printf("h1=[")
printf("%f,",H1')
printf("];\n")
printf("Q=[")
printf("%f,",Q')
printf("];\n")
printf("C=[")
printf("%i,",C')
printf("];\n")
printf("Code=[")
printf("%s,",CS')
printf("];\n")
endfunction
function describe(sSuite)
printf("\n")
printf("****************************************\n")
printf("* %-36s *\n", sSuite)
printf("****************************************\n")
endfunction
// Test des équations d'ouvrages pour JaLHyd
clear
sCurrentPath = get_absolute_file_path("main_ouvrages.sce");
getd(sCurrentPath);
function TestQOuvrageSuite(T)
//TestQOuvrageLoop(sTest, T, L, Cd, H1, h2, W)
TestQOuvrageLoop("Calcul Q avec W croissant",T, 2, 0.6, 1.2, 1, 0:0.1:1.3);
TestQOuvrageLoop("Calcul Q en charge avec h1 croissant",T, 2, 0.6, [1.05,1.3,1.5], 1, 0.8);
TestQOuvrageLoop("Calcul Q a surface libre avec h1 croissant",T, 2, 0.6, 1.1:0.4:1.5, 1, 2);
endfunction
describe("CEM88D");
TestQOuvrageSuite(1);
describe("CEM88V");
TestQOuvrageSuite(2);
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment