Sunteți pe pagina 1din 9

PROIECT HIDRAULICA

1. Enunt: Fie reteaua inelara :

1 2 3

4 5 6

Unde se cunosc lungimile tronsoanelor ,debitele ce trebuiesc asigurate in fiecare nod precum si debitul
distribuit pe fiecare tronson .

Lungimile tronsoanelor :
Tronson 1-2 1-4 2-3 2-5 3-6 4-5 4-7 5-6 5-7 6-7

(m) 400 300 400 300 300 400 500 400 300 500

Debitele in noduri :
Nod 1 2 3 4 5 6 7
Debit (l/s) 63+5n 0 3 4 5 6 7+2n

Sa se dimensioneze si sa se echilibreze reteaua de distributie a apei potabile pentru o zona de locuinte


la care consumul uniform distribuit pe artere este q=0.01 l/s.
In afara acestui consum mai trbuie asigurate si debitele concentrate in noduri .
In nodul 1 exista debitul de alimentare Q1=63+5n ; (n – numarul de ordine de pe lista
secretariatului).
Conductele sunt de otel cu rugozitatea absoluta k=1mm.
In fiecare nod trebuie asigurata o presiune de serviciu de minim 25 m coloana de apa .
Reteaua se considera orizontala.

Tabelul vitezelor economice:


 50 65 80 100 125 150 200 250 300
Vmin 0.45 0.55 0.55 0.6 0.75 0.8 1 1 1
Vmax 0.75 0.8 0.85 0.9 1 1.2 1.5 1.5 1.5

2. Prezentare teoretica asupra retelelor inelare

1
Retelele inelare sunt retelele in care nu se cunosc de la inceput orientarile tuturor debitelor . Legile
care stau la baza rezolvarii acestor retele sunt :

 Ecuatii de tipul Legea energiilor :

 p  p
H  z    z    h ri  j ;
 g  i  g  j
 Ecuatii de continuitate atasate nodurilor :

Q  vnAn ;
 Relatii pentru calculul pierderilor de sarcina :
v2 
hr    MQ 2 ; M  ;
2g 2gA 2
In functie de valorile numerice ale termenilor din relatiile folosite sistemele hidraulice sub presiune
se pot calcula exact sau aproximativ . Principalele aproximatii sunt :

 in legea energiilor nu se mai tine seama de termenii cinetici ;


 nu se mai tine seama de pierderile locale de sarcina ;

Alegerea modelului de calcul se face in functie de importanta instalatiei neglijandu-se in general


termenii mici in raport cu ceilalti astfel incat eroarea sa fie acceptabila .
In practica se folosesc urmatoarele modele de calcul :

 Modelul conductelor simple (utilizeaza relatiile sub forma completa);


 Modelul simplificat al conductelor scurte
- neglijeaza termenii cinetici sau modulele cinetice ;
- neglijeaza termenii cinetici si piederile locale de sarcina .
 Modelul conductelor lungi (neglijeaza termenii cinetici si neglijeaza piederile locale de sarcina);

Modul de rezolvare al retelelor inelare implica ca pierderea de sarcina pe un inel sa fie nula :

h r   MQ Q  0;
Debitele sunt pozitive negative in functie de sensul arbitrar ales de parcurgere al inelului ; sensul
debitului odata ales se pastreaza acelasi pentru toate inelele pentru a se putea introduce simplificari in
ceea ce priveste distributia erorilor ;
Determinarea acestor debite se face iterativ pornind de la valori aproximate initial cu respectarea
ecuatiilor de continuitate in noduri ;
Se calculeaza pentru fiecare inel corectia :
 MQ Q
Q j
 2inel
;
2 M Q
inel

inel
augandu-se fiecarui tronson din retea corectiile tuturor inelelor din care face parte

h r 0
se fac atatea iteratii pana cand pe fiecare inel se apropie de 0.

uses crt;
type noduri=record
h:real;
q:real;
cota:boolean;

2
end;
tronson=record
leg:boolean;
q,m,d,l:real;
end;
tr_inel=record
n1,n2:integer;
end;
var nod:array[1..20] of noduri;
tr:array[1..20,1..20] of tronson;
inel:array[1..7,1..7] of tr_inel;
i,j,n,nri,nr_comp:integer;
nrn:array[1..10] of integer;
procedure introduc_reteaua;
var w:char;
begin
clrscr;write(' Cite noduri sunt ? ');readln(n);
for i:=1 to n do
begin
write('Ce debit concentrat exista in nodul ',i,' ? ( negativ daca intra ) : ');
readln(nod[i].q);nod[i].cota:=false;nod[i].h:=25;
if i<>n then for j:=i+1 to n do
begin
write(' Nodul ',i,' are legatura cu nodul ',j,' ? (D/N) ');
repeat until keypressed;
if readkey='d'
then
begin
tr[i,j].leg:=true;
tr[j,i].leg:=true;
write(' Dati lungimea : ');
readln(tr[i,j].l);
tr[j,i].l:=tr[i,j].l;
end
else
begin
tr[i,j].leg:=false;
tr[j,i].leg:=false;
writeln;
end;
end;
end;
end;

procedure debite_distribuite;
const qd=0.01;
begin

3
for i:=1 to n-1 do
for j:=i+1 to n do
if tr[i,j].leg then
begin
nod[i].q:=nod[i].q+tr[i,j].l*qd/2;
nod[j].q:=nod[j].q+tr[i,j].l*qd/2;
end;
end;
procedure debite_initiale;
var qced:real;
k:integer;
begin
for i:=1 to n-1 do
begin
qced:=-nod[i].q;
if i<>1 then
for j:=1 to i-1 do
if tr[i,j].leg then qced:=qced-tr[i,j].q;
k:=0;
for j:=i+1 to n do if tr[i,j].leg then inc(k);
qced:=qced/k;
for j:=i+1 to n do if tr[i,j].leg then
begin
tr[i,j].q:=qced;
tr[j,i].q:=-tr[i,j].q;
end;
end;
end;
procedure aleg_diametre;
var v1,v2:real;
k:integer;
dales:boolean;
o:array[1..3,1..9] of real;
begin

O[1,1]:=50;O[1,2]:=65;O[1,3]:=80;O[1,4]:=100;O[1,5]:=125;O[1,6]:=150;O[1,7]:=200;
O[1,8]:=250;O[1,9]:=300;

O[2,1]:=0.45;O[2,2]:=0.55;O[2,3]:=0.55;O[2,4]:=0.6;O[2,5]:=0.75;O[2,6]:=0.8;O[2,7]:=
1;O[2,8]:=1;O[2,9]:=1;

O[3,1]:=0.75;O[3,2]:=0.8;O[3,3]:=0.85;O[3,4]:=0.9;O[3,5]:=1;O[3,6]:=1.2;O[3,7]:=1.5;
O[3,8]:=1.5; O[3,9]:=1.5;
for i:=1 to n-1 do
for j:=i+1 to n do
if tr[i,j].leg then
begin

4
dales:=false;
v1:=1273.23*abs(tr[i,j].q)/2500;
if v1<0.75
then
begin
dales:=true;
tr[i,j].d:=50;
tr[j,i].d:=50;
end
else
for k:=1 to 8 do
begin
v1:=1273.23*abs(tr[i,j].q)/sqr(o[1,k]);
v2:=1273.23*abs(tr[i,j].q)/sqr(o[1,k+1]);
if (v1>o[3,k]) and (v2<o[3,k+1]) then
begin
tr[i,j].d:=o[1,k+1];
tr[j,i].d:=o[1,k+1];
dales:=true;
end;
end;
if not dales then
begin
tr[i,j].d:=300;
tr[j,i].d:=300;
end;
end;
end;
procedure introduc_inele;
var w:integer;
begin
clrscr;write('Cite inele sunt ? ');readln(nri);
for i:=1 to nri+1 do
begin
if i<=nri then write('Cite noduri are inelul ',i,' ? ')
else write('Cite noduri are inelul exterior ? ');
readln(nrn[i]);
for j:=1 to nrn[i] do
begin
readln(w);
inel[i,j].n1:=w;
if j<>1 then inel[i,j-1].n2:=w;
if j=nrn[i] then inel[i,j].n2:=inel[i,1].n1;
end;
end;
end;
procedure calcul_module;

5
const k=1;
function lam(re,rr:real):real;
var l1,l2:real;
begin
l2:=1/sqr(-2*ln(rr/3.71)/ln(10));
repeat
l1:=l2;
l2:=1/sqr(-2*ln(rr/3.71+2.51/(re*sqrt(l1)))/ln(10));
until (l2-l1/l2)<0.02;
lam:=l2;
end;
begin
for i:=1 to n-1 do
for j:=i+1 to n do
if tr[i,j].leg then
begin
tr[i,j].m:=0.0826E15*lam(979407.69*abs(tr[i,j].q)/tr[i,j].d,
k/tr[i,j].d)*tr[i,j].l/(sqr(sqr(tr[i,j].d))*tr[i,j].d);
tr[j,i].m:=tr[i,j].m;
end;
end;
procedure compensare_debite;
const eps=0.01;
var m,n:integer;
hr,smq1,epsmax:real;
compensare:boolean;
dq:array[1..10] of real;
begin
epsmax:=1;
nr_comp:=0;
while abs(epsmax)>eps do
begin
inc(nr_comp);
epsmax:=0;
for i:=1 to nri do
begin
hr:=0;
smq1:=0;
for j:=1 to nrn[i] do
begin
m:=inel[i,j].n1;
n:=inel[i,j].n2;
smq1:=smq1+tr[m,n].m*abs(tr[m,n].q)*1E-3;
hr:=hr+tr[m,n].m*abs(tr[m,n].q)*tr[m,n].q*1E-6;
end;
if abs(hr)>epsmax then epsmax:=hr;
dq[i]:=-500*hr/smq1;

6
end;
for i:=1 to nri do
for j:=1 to nrn[i] do
begin
m:=inel[i,j].n1;
n:=inel[i,j].n2;
tr[m,n].q:=tr[m,n].q+dq[i];
tr[n,m].q:=-tr[m,n].q;
end;
end;
end;
procedure cote_piezo;
var tcs,npsc,c25:boolean;
begin
repeat
tcs:=true;
for i:=1 to n do
if not nod[i].cota then
begin
c25:=true;
npsc:=false;
for j:=1 to n do
if (i<>j) and (tr[i,j].leg) and (tr[i,j].q>0) then
if nod[j].cota
then
begin
if nod[i].h<nod[j].h+tr[i,j].m*sqr(tr[i,j].q) then
begin
nod[i].h:=nod[j].h+tr[i,j].m*sqr(tr[i,j].q/1000);
c25:=false;
nod[i].cota:=true;
end;
end
else
begin
c25:=false;
tcs:=false;
npsc:=true;
end;
if c25 and (not npsc) then
begin
nod[i].h:=25;
nod[i].cota:=true;
end;
if npsc then
begin
nod[i].cota:=false;

7
nod[i].h:=25;
end;
end;
until tcs;
end;
procedure afisare(x:byte);
var v:real;
nrt:byte;
begin
if x=1 then begin
writeln('Trs Lungime Diametru Q_init v_init Q_comp
v_final Hp1 Hp2');
writeln(' - (m) (mm) (l/s) (m/s) (l/s) (m/s) (m)
(m)');
end;
nrt:=0;
for i:=1 to n-1 do
for j:=i+1 to n do
if tr[i,j].leg then
begin
inc(nrt);
if x=1
then
begin
gotoxy(1,nrt+3);write(i,'-',j);
gotoxy(8,nrt+3);write(tr[i,j].l:0:0);
gotoxy(18,nrt+3);write(tr[i,j].d:0:0);
gotoxy(26,nrt+3);write(tr[i,j].q:0:3);
v:=1273.23*tr[i,j].q/sqr(tr[i,j].d);
gotoxy(36,nrt+3);write(v:0:3);
end
else
begin
gotoxy(46,nrt+3);write(tr[i,j].q:0:3);
v:=1273.23*tr[i,j].q/sqr(tr[i,j].d);
gotoxy(57,nrt+3);write(v:0:3);
gotoxy(66,nrt+3);write(nod[i].h:0:2);
gotoxy(76,nrt+3);write(nod[j].h:0:2);
end;
end;
end;
procedure inchideri;
var hr:real;
m,n:integer;
begin
for i:=1 to nri+1 do
begin

8
hr:=0;
for j:=1 to nrn[i] do
begin
m:=inel[i,j].n1;
n:=inel[i,j].n2;
hr:=hr+tr[m,n].m*abs(tr[m,n].q)*tr[m,n].q*1E-6;
end;
if i<=nri then writeln(' Pe inelul ',i,' neinchiderea este : ',hr:0:4)
else writeln(' Pe inelul exterior neinchiderea este : ',hr:0:4);
end;
writeln(' ');
writeln(' S-a compensat de ',nr_comp,' ori');
end;
begin
introduc_reteaua;
debite_distribuite;
debite_initiale;
aleg_diametre;
calcul_module;
introduc_inele;
clrscr;
afisare(1);
compensare_debite;
cote_piezo;
afisare(2);readln;
writeln(' ');
inchideri;readln;
end.

S-ar putea să vă placă și