| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 590 人关注过本帖
标题:大家帮我看看一个水力压降计算的程序究竟错哪里了
只看楼主 加入收藏
qtt1987
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2009-9-21
结帖率:0
收藏
已结贴  问题点数:20 回复次数:4 
大家帮我看看一个水力压降计算的程序究竟错哪里了
#define p 15500
#define g 9.8
#define pi 3.14159
#include <stdio.h>
#include <math.h>
void main ()
{
    int G,K;
    float T,D1,D2,D3,L1,L2,L3,V1,V2,V3,U,DENSITY,RE1,RE2,RE0,Pfric1,Pfric2,Pfric3,Pfric,Pform1,Pform2,
    Pform3,Pform,k1,k2,k3,Pacc,A1,A2,A3,B1,B2,Pgrav;
    /*DENSITY密度;G为管型 U为粘度,C,N为摩擦系数中常数,K为弯头常数*/

     printf("please enter T,D1,D2,D3,L2,L3,V1,K\n" );
     scanf("%f %f %f %f %f %f %f %d",&T,&D1,&D2,&D3,&L2,&L3,&V1,&K);/* 输入已知量*/
     if (T>=0&&T<=310)
     {DENSITY=1.277808*pow(10,3)-1.839807*T+2.02097*pow(10,-7)*T*T+4.723564*pow(10,-10)*pow(T,3)+8.253361*pow(10,-10)*pow(T,4);/*密度公式一*/
     U=25.3/((T+273.15)*(T+273.15)+91*(T+273.15)-85800);}
     else if(T>310&&T<=340)
     {DENSITY=1.1755984*pow(10,6)+8.1437361*pow(10,3)-21.136559*pow(T+273.15,2)+2.4381598*pow(10,-2)*pow(T+273.15,3)-1.0549747*pow(10,-5)*pow(T+273.15,2)+(p-1.5*pow(10,4))*pow(10,3)*exp(-14.64389+1.1283357*pow(10,-3)*exp(0.012670366*(T+273.15)));/*密度公式2*/
         printf("DENSITY is %f\n",DENSITY);
         U=25.3/((T+273.15)*(T+273.15)+91*(T+273.15)-85800);}
     else if(T>340)
     {printf("ERROR\n");}
     printf("DENSITY is %f\n U is %f",DENSITY,U);
     L1=D1*pi/4;
     A1=pi*D1*D1/4;
     A2=pi*D2*D2/4;
     A3=pi*D3*D3/4;
     B1=A1/A2;
     B2=A2/A3;
     V2=V1*B1;
     V3=V2*B2;
     RE0=DENSITY*D1*V1/U;
     RE1=DENSITY*D2*V2/U;
     RE2=DENSITY*D3*V3/U;
     Pgrav=DENSITY*g*(L1+L2+L3);
     printf("Pgrav is %f\n",Pgrav);
     /*1     提升压降*/
     {int i; float f1,f2,f3;
     float RE[3]={RE0,RE1,RE2},D[3]={D1,D2,D3},f[3]={f1,f2,f3};
              {   
                  for(i=0;i<=2;i++);
                  {if(RE[i]<=2100)
                     {printf("RE=%f, %d管内为层流\n",RE[i],i);
                      f[i]=64/RE[i];}
                   else if(RE[i]>=10000)
                        {printf("%d管内为湍流1 or  0 ?\n",i); } /*粗糙管还是光滑管*/
                         scanf("%d",&G);
                         {if(G==0) f[i]=0.184*pow(RE[i],-0.2);         //????
                             else f[i]=pow(2*log10(D[i]/0.09)+1.74,-2);//???????????????????????????????????????
                         }
                        }
            
             }
    Pfric1=f1*L1*DENSITY*V1*V1/(2*D1);
    Pfric2=f2*L2*DENSITY*V2*V2/(2*D2);
    Pfric3=f3*L3*DENSITY*V3*V3/(2*D3);
    Pfric=Pfric1+Pfric2+Pfric3;
    printf("Pfric is %f\n",Pfric);/*2       摩擦压降*/

     }   
     {
         switch(K)//????????????????
         {case 0:k1=1.2;break;
          case 1:k1=0.8;break;
          case 2:k1=0.6;break;
          case 3:k1=0.48;break;
          case 4:k1=0.36;break;
          case 5:k1=0.3;break;
          case 6:k1=0.29;break;}
         Pform1=k1*DENSITY*V1*V1/2;
        {if(A1>A2)k2=0.5*(1-B1*B1);
        else k2=(1-1/B1)*(1-1/B1);
        Pform2=k2*DENSITY*V2*V2/2;}
        {if(A2>A3)k3=0.5*(1-B2*B2);
        else k3=(1-1/B2)*(1-1/B2);
        Pform3=k3*DENSITY*V3*V3/2;}
        Pform=Pform1+Pform2+Pform2;
        printf("Pform1 is %f  Pform2 is %f pform3 is  %f Pform  is %f\n",Pform1,Pform2,Pform3,Pform);/*3  形阻压降*/
     }
     {Pacc=(DENSITY*(V1*V1+(V2-V1)*(V2+V1)+(V3-V2)*(V3+V2)))/2;
     printf("Pacc is %f\n",Pacc);}    /*4加速压降*/
}

说明:程序是能运行,但答案算出来是错的,就是Pfriche





搜索更多相关主题的帖子: 压降 水力 
2009-09-21 13:25
qtt1987
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2009-9-21
收藏
得分:0 
说明:程序是能运行,但答案算出来是错的,就是Pfric,Pform等算出来是负的,RE[]那里可能有问题。 参数说明,g,K是输入值,当RE0,RE1,RE2这三个中有大于2100的时,分别得出 各自对应的f值,如果当RE0,RE1,RE2这三个中有大于10000的时,选择光滑或者粗糙管,然后得出f,当g=1时,f[i]=pow(2*log10(D[i]/0.09)+1.74,-2,)我的原意是输入的K值为0-6时选择其k1计算Pform1,然后再算 Pform2,Pform3
2009-09-21 13:51
qtt1987
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2009-9-21
收藏
得分:0 
可以给个参数值验证下T,D1,D2,D3,L2,L3,V1,K:40,0。4,0.32,0.4,0.36,0.4,4,1
2009-09-21 13:53
vcx
Rank: 2
等 级:论坛游民
帖 子:61
专家分:81
注 册:2009-9-15
收藏
得分:10 
这么多变量。。看的眼睛花了。。唉
2009-09-21 15:27
xdyuan33
Rank: 3Rank: 3
来 自:广西大学化工学院
等 级:论坛游侠
帖 子:146
专家分:145
注 册:2009-7-24
收藏
得分:10 
这前学化原时,老师讲过这么一点这种东东但没要求那么高,LZ学什么的啊
别的不懂就看那个for()后面多了个;还有就是那么多花括号是做什么的

参与切磋是美德,每天回帖即可获得10分可用分!
2009-09-21 18:28
快速回复:大家帮我看看一个水力压降计算的程序究竟错哪里了
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018426 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved