⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 compute.h

📁 《管状换热器计算机辅助设计系统ExhCAD绘图系统(版本:1.01a Final)》为自由软件
💻 H
📖 第 1 页 / 共 3 页
字号:
					   r=airq*inaircp/fumeq/infumecp;

					   dtairmax=outfumet-inairt;
					   dtairmin=infumet-outairt;
					   if(dtairmax<dtairmin){tmp=dtairmax;dtairmax=dtairmin;dtairmin=tmp;}
					   if(dtairmax/dtairmin<1.7) dtop=(dtairmax+dtairmin)/2.0;
					   else      dtop=(dtairmax-dtairmin)/log(dtairmax/dtairmin);
  
                       dtfumemax=infumet-inairt;
					   dtfumemin=outfumet-outairt;
					   if(dtfumemax<dtfumemin){tmp=dtfumemax;dtfumemax=dtfumemin;dtfumemin=tmp;}
					   if(dtfumemax/dtfumemin<1.7) dtpa=(dtfumemax+dtfumemin)/2.0;
					   else  dtpa=(dtfumemax-dtfumemin)/log(dtfumemax/dtfumemin);					    
    
                       if(dtpa>=0.92*dtop) dt=(dtpa+dtop)/2.0;
					   else if(nroute>=4)
						     if(direction) dt=dtpa;
							 else dt=dtop;
					   else{
						   ft=0.89;
						   dt=ft*dtop;
					   } 
					   return dt;
   }

double __stdcall AirConvectionHeatQuantity(double &diameterp,double &airv,double &inairt,
										   double &thickp,double &tb,double &ld,
										   ExhCADData &RecordData){

					double d,r,re,adk,v,pr,cl,ub,uk;

				    d = diameterp - 2 * thickp;

					ub = FindAirPhysicsU(tb,RecordData);
					uk=FindAirPhysicsU(inairt,RecordData);
					v=FindAirPhysicsV(inairt,RecordData);
					r=FindAirPhysicsR(inairt,RecordData);
					pr=FindAirPhysicsPr(inairt,RecordData);
					cl=FindLenModify(ld,RecordData);

                    re=airv*(inairt+273)*d/1000/v/273;    

					if(re<2300)       
						adk=3.656*r/d;
					else if(re>10000) 
						adk=0.023*r*pow(pr,0.4)*pow(re,0.8)*
						         pow( (inairt+273)/(tb+273) ,0.5)*1000/d;
					else             
						adk=0.116*r*(pow(re,2.0/3.0)-125)*pow(pr,1.0/3.0)*
						                  pow(uk/ub,0.4)*(1+pow(1.0/ld,2.0/3.0))*1000/4.0; 
    				return adk;
 

							}

double __stdcall FumeConvectionHeatQuantity(double &diameterp,double &hdistance,double &vdistance,
											double &outfumet,double &fumev,double &row,short &arrange,
											ExhCADData &RecordData){
                   double r,pr,v,cn,ady;
				   short rn;

				   rn=(int)row;
				   fumev=fumev*(outfumet+273)/273;

				   r=FindFumePhysicsR(outfumet,RecordData);
				   pr=FindFumePhysicsPr(outfumet,RecordData);
				   v=FindFumePhysicsV(outfumet,RecordData);
				   cn=FindRowModify(rn,arrange,RecordData);

				   if (arrange==0) 
					      ady=0.2*cn*r*pow(pr,0.35)*pow(fumev/v,0.64)/pow(diameterp/1000,0.36);
				   else 
					   if( (hdistance-diameterp)/(vdistance-diameterp)<0.7) 
						   ady=0.305*cn*r*pow(pr,0.35)*pow(fumev/v,0.6)/pow(diameterp/1000,0.4);
					   else
						   ady=0.334*cn*r*pow(pr,0.35)*pow(fumev/v,0.6)*
						       pow((hdistance-diameterp)/(vdistance-diameterp),0.25)/pow(diameterp/1000,0.4);     

                  return ady; 
											}

double __stdcall FumeRadiationHeatQuantity(double &h2o,double &co2,
										   double &diameterp,double &hdistance,double &vdistance,
										   double &outfumet,double &tb){
			double l,eco2,eh2o,afy;

			if ((hdistance +vdistance) / diameterp > 7)
				l = (2.82 * (hdistance +vdistance) / diameterp - 10.6) * diameterp / 1000;
			else 
				l = (1.87 * (hdistance +vdistance) / diameterp - 4.1) * diameterp / 1000;
            
			eco2 = 0.154 * pow(co2 * l,1.0 / 3.0) /pow(outfumet, 0.5);
			eh2o = 0.07 * pow(h2o, 0.8) *pow (l, 0.6) /outfumet; 

            afy= 5.35 * (eco2 + eh2o) *( pow(outfumet / 100, 4.0)-pow(tb / 100,4.0)) /(outfumet - tb);

			return afy;
            
										   }


  double __stdcall PipeTemperature(double &fumet,double &airt,double &ak,double &ay){

	     double tb;

		 tb=airt+(fumet-airt)/(1+ak/ay);

		 return tb;

  }

  double __stdcall HeaterTotalPipeLen(double &heatq,double &k,double &dt, 
	                                  double &diameterp,double &thickp,double &heats){

	  double dh,dm,totallen;

	  dh=diameterp - 2 * thickp;
	  dm=(diameterp + dh) / 2;
	  heats=heatq/k/dt;
      totallen=heats*1000/PI/dm;

	  return totallen;

  }

   double __stdcall HeaterSinglePipeLen(double &totalpipelen,double &diameterp,
	                                    double &thickp,double &airv,double &airq){

			double dh,dm,singlepipelen; 

			dh=diameterp - 2 * thickp;
			dm=(diameterp + dh) / 2/1000;
			singlepipelen = 2827 * dm * dm * airv * totalpipelen /airq;
			
			return singlepipelen;

									}

 double __stdcall HeaterAirLen(double &singlepipelen,double &nroute){
	       double airlen; 

		   airlen=singlepipelen/nroute;

		   return airlen;	         

 }

 double __stdcall HeaterColNumber(double &fumeq,double &fumev,
	                              double &hdistance,double &diameterp,
								  double &thickp,double &lengthh){

  double d,colnum;
  d = diameterp - 2 * thickp;
  colnum =(fumeq*1000/ (3600 * fumev * lengthh * (hdistance/1000  - diameterp/1000)))+2.5;

  return colnum;

 }

 double __stdcall HeaterRowNumber(double &totalpipelen,double &lengthh,
	                              double &col,double &nroute){

									  double rownum;									
									  
									  rownum = totalpipelen*1000  / lengthh /col;				  
									
									  return rownum;
    

 }

double __stdcall AirResistance(double &inairt,double &outairt,double &airv,
							   double &diameterp,double &nroute,
							   double &thickp,double &singlepipelen,short &rough,
							   ExhCADData &RecordData){

		  double  airt,d,p,v,r,h1,h2,a,n,re,e,airf;
          
		  d = (diameterp - 2 * thickp)/1000;
		  airt=(inairt+outairt)/2.0;
		  e=0.5*2+(nroute-1)*1.5;
		  p=FindAirPhysicsP(airt,RecordData);
		  v=FindAirPhysicsV(airt,RecordData);

		  if (rough==0){ a=0.32;n=0.25; }
		  else if(rough==1){ a=0.129;n=0.12;  }
		  else{ a=0.175;n=0.12;}

		  airv=airv*(airt+273)/273;
		  re=airv*d/v;r=a/pow(re,n);
		  h1=pow(airv,2.0)*r*singlepipelen*p/d/2;h2=pow(airv,2.0)*e*p/2;

		  airf=(h1+h2)/1000;

		  return airf;
							   }

  double __stdcall FumeResistance(double &infumet,double &outfumet,
	                    double &hdistance,double &vdistance,
						double &diameterp,double &fumev,double &row,
						ExhCADData &RecordData){
	 
		 double fumet,p,v,re,eu,e1,e2,fumef;

	     fumet=(infumet+outfumet)/2.0;
		 fumev=fumev*(fumet+273)/273;
		 p=FindFumePhysicsP(fumet,RecordData);
		 v=FindFumePhysicsV(fumet,RecordData);
		 re=fumev*diameterp/v/1000;
		 e1=hdistance/diameterp;e2=vdistance/diameterp;
		 eu=pow(re,-0.15)*(0.176+0.32*e2/pow(e1-1,0.43+1.13/e2));
		 fumef=pow(fumev,2.0)*eu*p*row/2;

		 return fumef;

							   }

double __stdcall PipeTotalWeight(double &unitweight,double &row,double &col,double &lengthh ){

	  double totalpipeweight,p,q;

	  p=col*row;
	  q=p*lengthh;
	  totalpipeweight=q*unitweight;

	  return totalpipeweight/1000;

						}

   void  __stdcall ComputeFun(ExhCADSetup &RecordSetup, 
		            ExhCADInput &RecordInput,    
		            ExhCADDraw &RecordDraw,
					ExhCADData &RecordData){    

		 double h2o,co2,n2,
				use,lose,protect;
				//lengthc,width,heighth,
				//lengthw,diameterw,thicks;
		 short arrange,rough,direction;

		 double inairt,outairt,airq,airv,
			    infumet,fumeq,fumev,
				diameterp,thickp,hdistance,vdistance,nroute;

		 double row,col,lengthh,
			    heatq,heats,heatc,dt,
				airf,fumef,
				outfumet,inwallt,outwallt;     

		 double ld,tbin,tbout,
				adkin,afkin,akin,adyin,afyin,ayin,kin,
				adkout,afkout,akout,adyout,afyout,ayout,kout;					

		 double totalpipelen,singlepipelen;		 

		 double insertthick,insertwide;

		 short insertshape,material;

		 long order=0;

		 double q,k;
		         
		 double unitweight,totalweight;

		 GetRecordSetup(h2o,co2,n2, 
			            arrange,rough,direction,
						use,lose,protect,
						insertshape,material,
						 insertthick,insertwide,
						 unitweight,
					    //lengthc,width,heighth,
	                    //lengthw,diameterw,thicks,
						RecordSetup);
   
		 GetRecordInput(inairt,outairt,airq,airv, 
			           infumet,fumeq,fumev,
					   diameterp,thickp,
					   hdistance,vdistance,nroute,
					   //unitweight,
					   RecordInput);       
    
    	heatq= TransferHeatQuantity(inairt,outairt,airq,lose,RecordData);          
		q=heatq;

		outfumet=FumeOutTemperature(infumet,fumeq,protect,heatq,order,RecordData);

        dt=TemperatureDifference(inairt,outairt,infumet,outfumet,fumeq,airq,nroute,direction,RecordData);

        ld=60.0,row=10;
	    tbin=inwallt=infumet-150,tbout=outwallt=outfumet-100,order=0;

	do{

		inwallt=tbin,outwallt=tbout;

		adkin=AirConvectionHeatQuantity(diameterp,airv,inairt,thickp,tbin,ld,RecordData);
		afkin=0.0;
		akin=adkin+afkin;

		adyin=FumeConvectionHeatQuantity(diameterp,hdistance,vdistance,infumet,fumev,row,arrange,RecordData);
		afyin=FumeRadiationHeatQuantity(h2o,co2,diameterp,hdistance,vdistance,infumet,tbin);
		ayin=adyin+afyin;

		kin=akin * ayin / (akin + ayin);
	    tbin=PipeTemperature(infumet,inairt,akin,ayin);

		adkout=AirConvectionHeatQuantity(diameterp,airv,outairt,thickp,tbout,ld,RecordData);
		afkout=0.0;
		akout=adkout+afkout;

		adyout=FumeConvectionHeatQuantity(diameterp,hdistance,vdistance,outfumet,fumev,row,arrange,RecordData);
		afyout=FumeRadiationHeatQuantity(h2o,co2,diameterp,hdistance,vdistance,outfumet,tbout);
		ayout=adyout+afyout;

		kout=ayout * ayin / (ayout + akout);
        tbout=PipeTemperature(outfumet,outairt,akout,ayout);

		heatc=use*(kout + kin) / 2;
        k=heatc;

       totalpipelen=HeaterTotalPipeLen(q,k,dt,diameterp,thickp,heats);
	   singlepipelen=HeaterSinglePipeLen(totalpipelen,diameterp,thickp,airv,airq)*1000;
	   lengthh=HeaterAirLen(singlepipelen,nroute);
	   col=HeaterColNumber(fumeq,fumev,hdistance,diameterp,thickp,lengthh);
	   row=HeaterRowNumber(totalpipelen,lengthh,col,nroute);	  
	   ld=lengthh/nroute;

		}while (fabs(tbin - inwallt) > 50 && fabs(tbout - outwallt)>50 && order <Limit);

       airf=AirResistance(inairt,outairt,airv,diameterp,nroute,thickp,singlepipelen,rough,RecordData);  
       fumef=FumeResistance(infumet,outfumet,hdistance,vdistance,diameterp,fumev,row,RecordData);	
     
	totalweight=PipeTotalWeight(unitweight,row,col,lengthh);    	   
      // totalweight=unitweight;

	   SetRecordDraw(row,col,lengthh,
			           heatq,heats,heatc,dt,
					   airf,fumef,
					   outfumet,inwallt,outwallt,totalweight,RecordDraw);	
   				
	}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -