Q2 40 l/s L 500 m D 250 mm Q3 20 l/s L 400 m D 150 mm H0 40 m L 200 m D 100 mm L 200 m D 100 mm L 300 m D 250 mm Q5 0 l/s L 400 m D 150 mm Q4 10 l/s L 600 m D 200 mm Q6 40 l/s 1 mm TRONCHI: % colonna 1: numero del tronco % colonna 2: nodo di uscita del tronco % colonna 3: nodo di ingresso del tronco % colonna 4: lunghezza in m % colonna 5: diametro in mm % colonna 6: coefficiente di scabrezza del tronco in mm % colonna 7: esponente della portata nella formula che esprime le perdite di carico 1 2 3 4 5 6 7 1 2 3 4 2 5 1 2 3 4 5 5 6 6 500 400 200 400 200 600 300 250 150 100 150 100 200 250 1. 1. 1. 1. 1. 1. 1. 2 2 2 2 2 2 2 NODI % colonna 1: numero del nodo % colonna 2: 1 se nodo a carico imposto/noto; 0 altrimenti % colonna 3: quota in [m] del nodo a carico imposto; 0 altrimenti % colonna 4: domanda al nodo in l/s % colonna 5: quota in m del nodo 1 2 3 4 5 6 1 0 0 0 0 0 40 0 0 0 0 0 0 40 20 10 0 40 0 0 0 0 0 0 A11 A 12 A12 Q -A10 H 0 0 H q Q H H0 q A11 A12 A10 portate incognite nei tronchi carichi incogniti ai nodi carichi noti ai nodi richieste idriche note ai nodi matrice diagonale che tiene conto delle perdite distribuite e concentrate porzione della matrice delle incidenze relativa ai nodi a carico incognito porzione della matrice delle incidenze relativa ai nodi a carico noto H k+1 =M A 21Q k -q -MA 21G -1 A11Q k +A10 H 0 k+1 k Q =Q -G -1 A dove G=NA11 M= A 21G A12 -1 Q +A10 H 0 -G A12 H 11 1 k -1 k+1 Matrice topologica AA TRONCHI NODI 1 2 3 4 5 6 1 -1 1 0 0 0 0 2 0 -1 1 0 0 0 3 0 0 -1 1 0 0 4 0 0 0 -1 1 0 5 0 -1 0 0 1 0 6 0 0 0 0 -1 1 7 -1 0 0 0 0 1 Matrice A10 Matrice A12 NODI TRONCHI % matrice delle incidenze completa AA AA=zeros(NT,NNtot); for i=1:NT nodo_us=Tronchi(i,2); nodo_in=Tronchi(i,1); AA(i, nodo_us)=-1; AA(i, nodo_in)=1; end 1 2 3 4 5 6 1 -1 1 0 0 0 0 2 0 -1 1 0 0 0 3 0 0 -1 1 0 0 4 0 0 0 -1 1 0 5 0 -1 0 0 1 0 0 0 -1 1 0 0 0 1 TRONCHI: 6 0 0 % colonna 1: numero del tronco % colonna 2: nodo di uscita del tronco 7 -1 0 % colonna 3: nodo di ingresso del tronco % colonna 4: lunghezza in m % colonna 5: diametro in mm % colonna 6: coefficiente di scabrezza del tronco in mm % colonna 7: esponente della portata nella formula che esprime le perdite di carico 1 1 2 500 250 1. 2 2 2 3 400 150 1. 2 3 3 4 200 100 1. 2 4 4 5 400 150 1. 2 5 2 5 200 100 1. 2 6 5 6 600 200 1. 2 7 1 6 300 250 1. 2 % matrice delle incidenze completa AA TRONCHI AA=zeros(NT,NNtot); y1=(tronchi(:,2)-1).*NT+tronchi(:,1); x1=(tronchi(:,3)-1).*NT+tronchi(:,1); AA(x1)=1; AA(y1)=-1; NODI 1 2 3 4 5 6 1 -1 1 0 0 0 0 2 0 -1 1 0 0 0 3 0 0 -1 1 0 0 4 0 0 0 -1 1 0 5 0 -1 0 0 1 0 0 0 -1 1 0 0 0 1 TRONCHI: 6 0 0 % colonna 1: numero del tronco % colonna 2: nodo di uscita del tronco 7 -1 0 % colonna 3: nodo di ingresso del tronco % colonna 4: lunghezza in m % colonna 5: diametro in mm % colonna 6: coefficiente di scabrezza del tronco in mm % colonna 7: esponente della portata nella formula che esprime le perdite di carico 1 1 2 500 250 1. 2 2 2 3 400 150 1. 2 3 3 4 200 100 1. 2 4 4 5 400 150 1. 2 5 2 5 200 100 1. 2 6 5 6 600 200 1. 2 7 1 6 300 250 1. 2 % A10 matrice topologica dei nodi a carico noto A10=AA(:,INS); % A12 matrice topologica dei nodi a carico incognito A12=AA(:,IN); NODI A21=A12'; 1 2 3 4 5 6 1 -1 1 0 0 0 0 % INS vettore degli indici dei nodi a carico imposto INS=find(nodi(:,2)); opp INS=find(nodi(:,2)==1); 2 0 -1 1 0 0 0 3 0 0 -1 1 0 0 4 0 0 0 -1 1 0 5 0 -1 0 0 1 0 6 0 0 0 0 -1 1 7 -1 0 0 0 0 1 TRONCHI dove % IN vettore degli indici dei nodi a carico incognito IN=find(nodi(:,2)-1); opp IN=find(nodi(:,2)==0); NODI % colonna 1: numero del nodo % colonna 2: 1 se nodo a carico imposto/noto; 0 altrimenti % colonna 3: quota in [m] del nodo a carico imposto; 0 altrimenti % colonna 4: domanda al nodo in l/s % colonna 5: quota in m del nodo Matrice A10 1 2 3 4 5 6 1 0 0 0 0 0 Matrice A12 40 0 0 0 0 0 0 40 20 10 20 40 0 0 0 0 0 0 % inizializzazione Hk1= ones(NN,1); Qk1= ones(NT,1); k=1; A11=diag(8/9.81/(3.14^2)*lambda.*(abs(Qk1).^(n-1))./D.^5.*L); G=N*A11; G1=inv(G); M=inv(A21*G1*A12); Hk2=M*(A21*Qk1-q)-(M*A21*G1)*(A11*Qk1+A10*H0); Qk2=Qk1-G1*(A11*Qk1+A10*H0)-G1*A12*Hk2; % Procedura iterativa while max(abs(Hk2-Hk1)) >= errore Qk1=Qk2; Hk1=Hk2; A11=…….. G=…… … Hk2=….. Qk2=…… k=k+1; end