66 Computational Modelling in Hydraulic and Coastal Engineering
% nl = Number of loops;
clc; clear all; close all;
% Input data;
ctr=0.001;
nb=13;
nl=4;
% Import of HCcdr: discharge, pipe diameters, and resistance
coefficients;
load fileqdr.mat
q=HCqdr(:,1);
d=HCqdr(:,2);
r=HCqdr(:,3);
% Import of HCdat: Connectivity matrix [nb x nl];
load filenetstr.mat
mbl=HCdat;
iter=0;
for n=1:500
iter=iter+1;
difmax=0;
% Discharge corrections in each loop;
for j=1:nl
sum1=0; sum2=0;
for k=1:nb
tt=mbl(j,k);
sum1=sum1+tt*r(k)*q(k)^2;
sum2=sum2+2*abs(tt)*r(k)*q(k);
end
dq=-sum1/sum2;
if abs(dq)>difmax;
difmax=abs(dq);
end
for k=1:nb
q(k)=q(k)+mbl(j,k)*dq;
% Correction of discharge direction and
connectivity matrix;
if q(k)<0
q(k)=-q(k);
end
for jj=1:nl
mbl(jj,k)=-mbl(jj,k);
end
end
end
it=n;
diff(it)=difmax;
% Check for convergence;
if difmax
break
end
end
% nl = Number of loops;
clc; clear all; close all;
% Input data;
ctr=0.001;
nb=13;
nl=4;
% Import of HCcdr: discharge, pipe diameters, and resistance
coefficients;
load fileqdr.mat
q=HCqdr(:,1);
d=HCqdr(:,2);
r=HCqdr(:,3);
% Import of HCdat: Connectivity matrix [nb x nl];
load filenetstr.mat
mbl=HCdat;
iter=0;
for n=1:500
iter=iter+1;
difmax=0;
% Discharge corrections in each loop;
for j=1:nl
sum1=0; sum2=0;
for k=1:nb
tt=mbl(j,k);
sum1=sum1+tt*r(k)*q(k)^2;
sum2=sum2+2*abs(tt)*r(k)*q(k);
end
dq=-sum1/sum2;
if abs(dq)>difmax;
difmax=abs(dq);
end
for k=1:nb
q(k)=q(k)+mbl(j,k)*dq;
% Correction of discharge direction and
connectivity matrix;
if q(k)<0
q(k)=-q(k);
end
for jj=1:nl
mbl(jj,k)=-mbl(jj,k);
end
end
end
it=n;
diff(it)=difmax;
% Check for convergence;
if difmax
end
end
