newking 发表于 2006-1-7 15:20

[求助]大侠们行行好,看看我的这个程序是不是有问题?

<P>我的程序是要用牛顿节点法进行管网流量和压力的计算。我编的程序是这样的:<BR>%变量输入<BR>n=13;%节点数<BR>m=15;%管段数<BR>P0=3000;%气源压力<BR>dPmax=850;%最大允许压降<BR>rn=0.7174;%标况下燃气密度<BR>Tn=273;%标准状况下燃气的温度<BR>T=293;%燃气的温度<BR>v=14.5*10^(-6);%燃气动力黏度</P>
<P>%节点矩阵的形成<BR>N=;<BR>%管段矩阵的形成<BR>G=;<BR>A=zeros(n,m);<BR>G1=G(:,1);%管段矩阵的管段数<BR>G2=G(:,2);%管段矩阵的管段起点<BR>G3=G(:,3);%管段矩阵的管段终点<BR>D=G(:,4);%管段矩阵的管段直径</P>
<P>%关联矩阵的形成<BR>for i=1:n<BR>    for j=1:m<BR>      if G2(j)==i<BR>            A(i,j)=-1;<BR>      elseif G3(j)==i<BR>            A(i,j)=1;<BR>      end<BR>    end<BR>end<BR>A1=A(,:);%去掉气源点以后的基本关联矩阵</P>
<P>%进行迭代<BR>%求各个管段的导纳<BR>Q=';%假设初始各个管段的流量都为100<BR>c=1;<BR>for w=1:c;<BR>Re=4*(Q./D)/(pi*v);%计算各个管段的Re<BR>B=0.11*(0.1./D+68./Re).^0.25;%计算各个管道的沿程阻力系数<BR>Length=G(:,5);%管段矩阵的管段长度<BR>K=6.26*10^7*(B./D.^5).*Length*(rn*T/Tn);%计算各个管段的管道常数<BR>dP=K.*Q.^2;%计算各个管段的压力降<BR>g=Q./dP;%计算各个管段的导纳<BR>Y=A1*diag(g)*A1';%计算管网的系数矩阵</P>
<P>%计算第一次迭代结束时各个节点的压力偏差<BR>L=N(:,2);%各个节点的流量<BR>delaP=Y\L((2:13),:);%迭代结束时各个节点的压力偏差<BR>P=P0-delaP%各个节点压力向量<BR>dP=-A1'*P;%重新计算各个管段的压力降<BR>%重新计算各个管段的流量<BR>S=ones(15,1);<BR>for a=1:m;<BR>if dP(a)&gt;0<BR>    S(a)=1;<BR>elseif dP(a)&lt;0<BR>    S(a)=-1;<BR>end;<BR>end;<BR>Q=S.*(S.*(dP./K)).^0.5;%重新计算各个管段的流量<BR>Re=4*S.*(Q./D)/pi;%重新计算各个管段的Re<BR>B=0.11*(0.1./D+68./Re).^0.25;%计算各个管道的沿程阻力系数<BR>K=6.26*10^7*(B./D.^5).*Length*(rn*T/Tn);%计算各个管段的管道常数<BR>Q=(S.*(dP./K)).^0.5;%迭代结束时各个管段的流量<BR>end;<BR>但是怎么算结果都是第一次运算的结果。<BR>另外怎么逐次将前后两次计算的结果流量向量进行比较呀?<BR>在此先谢了!</P>

suffer 发表于 2006-1-7 17:50

回复:(newking)[求助]大侠们行行好,看看我的这个程...

<DIV class=quote><B>以下是引用<I>newking</I>在2006-1-7 15:20:09的发言:</B><BR>
<P>%进行迭代<BR>%求各个管段的导纳<BR>Q=';%假设初始各个管段的流量都为100<BR><FONT color=#ff0000>c=1;<BR>for w=1:c;</FONT><BR></P></DIV>
<P>你不就给了迭代一次吗?</P>

weiweikunlun 发表于 2006-7-19 07:54

jimin 发表于 2006-8-28 13:44

newking ,好,我也做管网方面的,你有什么好的资料能共享一下吗?
谢谢!!
页: [1]
查看完整版本: [求助]大侠们行行好,看看我的这个程序是不是有问题?