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

📄 压水堆热工水力设计dlg.cpp

📁 这是一个同学做的压水堆热工水力设计计算源代码,开发环境VC6
💻 CPP
📖 第 1 页 / 共 3 页
字号:
				 a1=495.8,//二氧化铀导热系数
				 a2=4.202,
				 a3=8.775e-14,
				 V0,//计算芯块中心温度的中间式
				 ts=42.184*pow(P,0.223)-17.95;//饱和温度
			  
		  double hm[21],//单相对流放热系数
			     B[21],//综合物性系数
				 Kzro2[21];//锆表面氧化层导热系数

		  for(int k=1;k<20;k++)//计算各节点的中子通量分布
		  shuzu0[k]=(shuzu[k-1]+shuzu[k])/2;
		  //对不同的工况选择,为shuzu0[]选择不同的首尾数值。
		  switch(nCurSel4){
	      case 0:
			   shuzu0[0]=0.06;
			   shuzu0[20]=0.06;
			   break;
		  case 1:
			  shuzu0[0]=0.75;
			  shuzu0[14]=0.0125;
			  shuzu0[15]=0;
			  shuzu0[16]=0;
			  shuzu0[17]=0;
			  shuzu0[18]=0;
			  shuzu0[19]=0;
			  shuzu0[20]=0;
			  break;
		  case 2:
			  shuzu0[0]=0.0385;
			  shuzu0[14]=0.680;
			  shuzu0[15]=0;
			  shuzu0[16]=0;
			  shuzu0[17]=0;
			  shuzu0[18]=0;
			  shuzu0[19]=0;
			  shuzu0[20]=0;
			  break;
		  case 3:
			  shuzu0[0]=0.600;
			  shuzu0[14]=0.0715;
			  shuzu0[15]=0;
			  shuzu0[16]=0;
			  shuzu0[17]=0;
			  shuzu0[18]=0;
			  shuzu0[19]=0;
			  shuzu0[20]=0;
			  break;
		  
		  }

		  for(int i=0;i<21;i++)//计算各节点的各种温度
		  {   B[i]=5.7497e-3+(9.43058e-5)*tfm[i]-(1.73945e-7)*tfm[i]*tfm[i]+(8.76384e-11)*tfm[i]*tfm[i]*tfm[i]+(2.5515e-11)*exp(0.0541072*tfm[i]);
			  hm[i]=B[i]*pow(Gm,0.8)*pow(de,-0.2);
			  tcsm1[i]=tfm[i]+q*shuzu0[i]/hm[i];
			  tcsm2[i]=ts+0.71246*pow((q*shuzu0[i]),0.5)*exp(-P/8687);
			  tcsm[i]=(tcsm1[i]<=tcsm2[i])?tcsm1[i]:tcsm2[i];//最终包壳外表面温度为两者的较小的一个
			  Kzro2[i]=1.22e-3+(1.2e-6)*tcsm[i];
			  tzrm[i]=tcsm[i]+q*shuzu0[i]*8e-6/Kzro2[i];
			  tcim[i]=(sqrt(Ka*Ka+Kb*(2*Ka*tzrm[i]+Kb*tzrm[i]*tzrm[i]+q*shuzu0[i]*dcs*log(dcs/dci)))-Ka)/Kb;
              tum[i]=tcim[i]+q*shuzu0[i]*dcs/(0.5*(dci+du)*hg);
			  V0=log((tum[i]+a1)/a1)+a3*pow(tum[i]+273.15,4)/(4*a2)+q*shuzu0[i]*dcs/(4*a2);
			  double tom1=1500,tom2;//迭代求芯块中心温度
			  do{
               
                tom2=tom1;
				tom1=a1*exp(V0-a3*pow(tom1+273.15,4)/(4*a2))-a1;
				if(tom1>4000) break;
					
			  }while(fabs(tom1-tom2)>=5); 
			  tom[i]=tom2;}
		  	m_edit2.SetSel(0,-1);
	        m_edit2.ReplaceSel("程序正在运行,请耐心等待结果的输出····");


		  //平均管冷却剂空泡份额与含汽量场的计算
		  double g1=(1.4e-2)+(9.86923e-7)*P,//试验常数,求td[21]用
			     Hd,//气泡脱离点的焓
				 Hfs=1.018314e+3+(3.951159e-2)*P+(2.038595e-12)*P*P-(9.067458e-18)*P*P*P+(2.646485e-21)*P*P*P*P,//饱和水的焓
			     Hgs=3.067382e+3-(3.01551e-2)*P+(1.944121e-12)*P*P-(1.437321e-16)*P*P*P-(4.898732e-21)*P*P*P*P,//饱和汽的焓
    			 Hfg=Hgs-Hfs,//汽化潜热
				 A,//计算中间式
				 rogs=-63.65636+(1.069103e-2)*P-(2.446517e-13)*P*P-(6.947528e-18)*P*P*P-(4.702406e-22)*P*P*P*P;//饱和汽的密度
		  double arfa[21],//空泡份额
			     x1[21],//过冷沸腾1区的含汽量
				 td[21],//气泡脱离点的温度
				 rol[21],//液态水的密度
				 x2[21],//过冷沸腾2区的含汽量
				 x[21],//最终含汽量
				 miu[21],//水的粘度
				 Cp[21],//水的比热
				 xe[21],//饱和沸腾放热区的含汽量
		         td1;//标记汽泡分离点
		  for (int i2=0;i2<21;i2++){//求miu[],及Cp[],rol[],td[] 
			  miu[i2]=25.3/(pow(tfm[i2]+273.15,2)+91*(tfm[i2]+273.15)-(8.58e+4));
			  Cp[i2]=(1.1012+(3.136e-5)*pow(tfm[i2]-220,2)+0.00243*(tfm[i2]-220)*pow(2.2,0.1*tfm[i2]-34)+(7.95e-5)*pow(18-(0.980665e-3)*P,1.152)*pow(2.4,0.05*tfm[i2]-11))*4.1868;
			  if(tfm[i2]<=310)//分区求rol[]
				  rol[i2]=1.277808e+3-1.839807*tfm[i2]+(2.02097e-7)*tfm[i2]*tfm[i2]+(4.723564e-10)*pow(tfm[i2],3)+(8.253361e-13)*pow(tfm[i2],4);
			  else 
				  rol[i2]=(-1.1755984e+6)+(8.1437361e+3)*(tfm[i2]+273.15)-21.136559*pow(tfm[i2]+273.15,2)+(2.4381598e-2)*pow(tfm[i2]+273.15,3)-(1.0549747e-5)*pow(tfm[i2]+273.15,4)+(P*1000-(1.5e+7))*exp(-14.64389+(1.1283357e-3)*exp(0.012670366*(tfm[i2]+273.15)));
		       td[i2]=ts-g1*q*shuzu0[i2]*rol[i2]/Gm;
		  }
		  for(int s4=0;s4<21;s4++){//寻找气泡分离点
			  if(tfm[s4]>=td[s4])
			  {td1=td[s4];
			  break;}
			  else
				  td1=ts;
			}

				  if(td1<=310)//求Hd
					  Hd=(-2.182662e+2)+5.190077*td1-(2.384186e-7)*pow(td1,2)-(5.601945e-10)*pow(td1,3)-(9.684937e-13)*pow(td1,4);
				  else
					  Hd=exp(5.830537+(4.539119e-3)*td1-(4.547474e-11)*pow(td1,2)-(1.069343e-13)*pow(td1,3)-(2.137254e-16)*pow(td1,4))+2.1735;
				  
			

		  

              
		  for(int i1=0;i1<21;i1++){
			  xe[i1]=(Hfm[i1]-Hfs)/Hfg;//求xe[]
			  
			  if(tcsm1[i1]<=tcsm2[i1])//求单相换热区的含汽量
			  {
				  arfa[i1]=0;
				  x[i1]=0;
				  x1[i1]=0;
				  x2[i1]=0;
			  }
				 
			  else {//其他区的含气量
				  A=(q*shuzu0[i1]-hm[i1]*(ts-tfm[i1]))*miu[i1]*Cp[i1]/(1.07*hm[i1]*hm[i1]*(ts-tfm[i1]));
				  arfa[i1]=4*A/de;
				  x1[i1]=1/(1+((1-arfa[i1])/arfa[i1])*(rol[i1]/rogs));
				  x2[i1]=0.435*(Hfm[i1]-Hd)/Hfg;
				  x[i1]=(x1[i1]<=x2[i1])?x2[i1]:x1[i1];//取两者的较大值
			  }
				  if(x[i1]<=xe[i1])//取两者的较大值
					  x[i1]=xe[i1];
			  
		  }

		  
		  
		  //冷却剂密度场的计算
		  double rom[21],//各节点平均管的密度
			     miuw[21],//按加热壁面计算的冷却剂的密度
				 qm[21],//平均管各节点的热流密度
				 xglm[21];//平均管各节点的线功率
		  for(int i4=0;i4<21;i4++){//计算以上定义的各数组
			  rom[i4]=1/((1-x[i4])/rol[i4]+x[i4]/rogs);
			  miuw[i4]=25.3/(pow(tcsm[i4]+273.15,2)+91*(tcsm[i4]+273.15)-(8.58e+4));
			  qm[i4]=q*shuzu0[i4];
			  xglm[i4]=qm[i4]*Pi*dcs;
			  
		  }




		  //压降的计算
		  double Pf[20],//各步长的摩擦压降
			     f[20],//摩擦系数
				 fiso[20],//初始摩擦系数
				 faifo[20],//两相摩擦倍数
				 Re[20],//雷诺数
				 faiq[20],//热流修正因子
				 Pz[20],//提升压降
				 Pgd[20],//隔架压降
				 Kgd[20],//隔架阻力系数
				 pm[21];//通道内压力
		  double fane=1.5e-6;//壁面粗糙度
		  for(int i5=0;i5<20;i5++){//计算以上定义的各数组
			  Re[i5]=Gm*de/miu[i5+1];
			  faiq[i5]=1+0.004355*pow(q*shuzu0[i5+1]/Gm,0.7);
			  faifo[i5]=1+x[i5+1]*(rol[i5+1]-rogs)/rogs;
			  double fiso1=0.01,fiso2;//迭代求初始摩擦系数
			  do{
			     fiso2=fiso1;
				  fiso1=1/pow(-2*log10(fane*de/3.7+2.51/(Re[i5]*sqrt(fiso1))),2);
				  
			  }while(fabs(fiso1-fiso2)>=0.00001);
			  fiso[i5]=fiso1;
			  f[i5]=pow(miuw[i5+1]/miu[i5+1],0.6)*fiso[i5];
			  Pf[i5]=f[i5]*detz*Gm*Gm*faifo[i5]*faiq[i5]*0.001/(de*2*rol[i5+1]);
			  Pz[i5]=9.81*detz*rom[i5+1]*0.001;
			  Kgd[i5]=3/pow(Re[i5],0.1);
			  Pgd[i5]=gejia[i5]*Kgd[i5]*Gm*Gm*0.001/(2*rom[i5+1]);

		  }
		  

          double Pa,//延程加速压降
			     Pin,//入口压降
				 Pex,//出口压降
				 Pf0=0,//总摩擦压降
				 Pz0=0,//总提升压降
				 Pgd0=0,//总隔架压降
				 Pm;//总压降
		  Pa=Gm*Gm*(1/rom[20]-1/rom[0])*0.001;
		  Pin=3.15*Gm*Gm*0.001/(2*rom[0]);
		  Pex=3.46*Gm*Gm*0.001/(2*rom[20]);
		  for(int i8=0;i8<20;i8++){//求各总压降
			  Pf0+=Pf[i8];
			  Pz0+=Pz[i8];
			  Pgd0+=Pgd[i8];
		  }
		  Pm=Pf0+Pz0+Pgd0+Pa+Pin+Pex;
		  pm[0]=P-Pin;//求通道内压降
		  for(int r1=1;r1<21;r1++){
			  pm[r1]=pm[r1-1]-Pf[r1-1]-Pz[r1-1]-Pgd[r1-1]-Pa*detz*r1/L;
		  }
		  
		  	m_edit2.SetSel(0,-1);
	        m_edit2.ReplaceSel("程序正在运行,请耐心等待结果的输出······");


		  //热管驱动压头的计算
		  double Pf1[20],Pgd1[20],ph[21];//对热管的各种总压降
		  double f1[20],fiso0[20],Re1[20],faiq1[20],faifo1[20];//对热管的各种系数
		  double Phe,//热管总压降
			     Kfh,//修正系数
				 Kah,
				 Pa1,//对热管的各种压降
				 Pin1,
				 Pex1,
				 Pf10,
				 Pgd10,
				 jdz=1;//前后两次总压降的绝对值
		  //计算以上定义的各种量
		  Kfh=pow(1-0.05,1.8);
		  Kah=pow(1-0.05,2);
		  Phe=Kfh*Pf0+Kah*(Pa+Pin+Pex+Pgd0)+Pz0;
		  ph[0]=P-Pin*Kah;
		  for(int r2=1;r2<21;r2++){
			  ph[r2]=ph[r2-1]-Pf[r2-1]*Kfh-Pgd[r2-1]*Kah-Pz[r2-1]-Pa*Kah*detz*r2/L;
		  }
       
		  double Ph,Gh,Gh1;
		  Gh1=1500;
		  


		  do{ //迭代求热管的质量流量
			     Pf10=0;
				 Pgd10=0;
		      for(int i9=0;i9<20;i9++){
				  Re1[i9]=Gh1*de/miu[i9+1];
				  faiq1[i9]=1+0.004355*pow(q*shuzu0[i9+1]/Gh1,0.7);
				  faifo1[i9]=1+x[i9+1]*(rol[i9+1]-rogs)/rogs;
				   double fiso3=0.01,fiso4;
			  do{
				 fiso4=fiso3;//迭代求摩擦系数
				  fiso3=1/pow(-2*log10(fane*de/3.7+2.51/(Re1[i9]*sqrt(fiso3))),2);
				   
			  }while(fabs(fiso3-fiso4)>=0.00001);
			  fiso0[i9]=fiso3;
			  f1[i9]=pow(miuw[i9+1]/miu[i9+1],0.6)*fiso0[i9];
			      Pf1[i9]=f1[i9]*detz*Gh1*Gh1*faifo1[i9]*faiq1[i9]*0.001/(de*2*rol[i9+1]);
			      Pgd1[i9]=gejia[i9]*Kgd[i9]*Gh1*Gh1*0.001/(2*rom[i9+1]);
			  }
		      Pa1=Gh1*Gh1*(1/rom[20]-1/rom[0])*0.001;
		      Pin1=3.15*Gh1*Gh1*0.001/(2*rol[0]);
		      Pex1=3.46*Gh1*Gh1*0.001/(2*rom[20]);
		      for(int j1=0;j1<20;j1++){
			      Pf10=Pf1[j1]+Pf10;
			      Pgd10=Pgd1[j1]+Pgd10;
			  }
		      Ph=Pf10+Pz0+Pgd10+Pa1+Pin1+Pex1;
			 
		      jdz=fabs(Ph/Phe-1);
		       
				Gh1=Gh1+0.5;
			
			}while(jdz>=0.01);
              Gh=Gh1;  
		 
		    
		    m_edit2.SetSel(0,-1);
	        m_edit2.ReplaceSel("程序正在运行,请耐心等待结果的输出········");



		  //热管温度场的计算
		  double Hfh[21],tfh[21];
		  tfh[0]=t;
		  Hfh[0]=Hfm[0];
		  double Fnr=1.476,Feq=1.03,Fnu=1.05,Fea=1.05,Feb=0.89,qh;
		  qh=q*Fnr*Feq*Fnu;
		  for(int k1=0;k1<20;k1++){
			  Hfh[k1+1]=Hfh[k1]+detz*Pi*dcs*qh*shuzu[k1]*Fea*Feb/(Gh*Fu*Ab);
			  if(Hfh[k1+1]<=1623.60)//超过饱和焓温度不再上升
		      tfh[k1+1]=at1+at2*Hfh[k1+1]+at3*Hfh[k1+1]*Hfh[k1+1]+at4*Hfh[k1+1]*Hfh[k1+1]*Hfh[k1+1];
			  else
				  tfh[k1+1]=ts;
		  }



		  //热管燃料元件场的计算
		  double tcsh1[21],tcsh2[21],tcsh[21],tzrh[21],tcih[21],tuh[21],toh[21];
		   double hh[21],B0[21],Kzro20[21];
		   for(int k2=0;k2<21;k2++){
		      B0[k2]=5.7497e-3+(9.43058e-5)*tfh[k2]-(1.73945e-7)*tfh[k2]*tfh[k2]+(8.76384e-11)*tfh[k2]*tfh[k2]*tfh[k2]+(2.5515e-11)*exp(0.0541072*tfh[k2]);
			  hh[k2]=B0[k2]*pow(Gh,0.8)*pow(de,-0.2);
			  tcsh1[k2]=tfh[k2]+qh*shuzu0[k2]/hh[k2];
			  tcsh2[k2]=ts+0.71246*pow((qh*shuzu0[k2]),0.5)*exp(-P/8687);
			  tcsh[k2]=(tcsh1[k2]<=tcsh2[k2])?tcsh1[k2]:tcsh2[k2];
			  Kzro20[k2]=1.22e-3+(1.2e-6)*tcsh[k2];
			  tzrh[k2]=tcsh[k2]+qh*shuzu0[k2]*(8e-6)/Kzro20[k2];
			  tcih[k2]=(sqrt(Ka*Ka+Kb*(2*Ka*tzrh[k2]+Kb*tzrh[k2]*tzrh[k2]+qh*shuzu0[k2]*dcs*log(dcs/dci)))-Ka)/Kb;
              tuh[k2]=tcih[k2]+qh*shuzu0[k2]*dcs/(0.5*(dci+du)*hg);
			  V0=log((tuh[k2]+a1)/a1)+a3*pow(tuh[k2]+273.15,4)/(4*a2)+qh*shuzu0[k2]*dcs/(4*a2);
			  double toh1=300,toh2;
			  do{
                toh1=toh1+1;
				 toh2=a1*exp(V0-a3*pow(toh1+273.15,4)/(4*a2))-a1;
				 if(toh1>5000)
					 break;
			  }while(fabs(toh1-toh2)>=5); 
			  toh[k2]=toh1;
		   }
		   double tohmax=0;
		   for(int v1=0;v1<jiedian;v1++){
			   
			   if(tohmax<=toh[v1])
				   tohmax=toh[v1];
		   }

		  	m_edit2.SetSel(0,-1);
	        m_edit2.ReplaceSel("程序正在运行,请耐心等待结果的输出··········");


		   //空泡份额与含汽量的计算
		   double arfa0[21],x10[21],td0[21],rol0[21],x20[21],x0[21],miu0[21],Cp0[21],xe0[21],Hd0,td01;
		   int lonb;
		  for(int k3=0;k3<21;k3++){
			  miu0[k3]=25.3/(pow(tfh[k3]+273.15,2)+91*(tfh[k3]+273.15)-(8.58e+4));
			  Cp0[k3]=(1.1012+(3.136e-5)*pow(tfh[k3]-220,2)+0.00243*(tfh[k3]-220)*pow(2.2,0.1*tfh[k3]-34)+(7.95e-5)*pow(18-(0.980665e-3)*P,1.152)*pow(2.4,0.05*tfh[k3]-11))*4.1868;
			  if(tfh[k3]<=310)
				  rol0[k3]=(1.277808e+3)-1.839807*tfh[k3]+(2.02097e-7)*tfh[k3]*tfh[k3]+(4.723564e-10)*pow(tfh[k3],3)+(8.253361e-13)*pow(tfh[k3],4);
			  else 
				  rol0[k3]=(-1.1755984e+6)+(8.1437361e+3)*(tfh[k3]+273.15)-21.136559*pow(tfh[k3]+273.15,2)+(2.4381598e-2)*pow(tfh[k3]+273.15,3)-(1.0549747e-5)*pow(tfh[k3]+273.15,4)+(P*1000-(1.5e+7))*exp(-14.64389+(1.1283357e-3)*exp(0.012670366*(tfh[k3]+273.15)));
			  td0[k3]=ts-g1*qh*shuzu0[k3]*rol0[k3]/Gh;
			 
		  }
		  for(int k4=0;k4<21;k4++){
			  if(tfh[k4]>=td0[k4])
			  {td01=td0[k4];
			  break;}
			  else
				  td01=344.787;
			}
		  
				  if(td01<=310)
					  Hd0=(-2.182662e+2)+5.190077*td01-(2.384186e-7)*pow(td01,2)-(5.601945e-10)*pow(td01,3)-(9.684937e-13)*pow(td01,4);
				  else
					  Hd0=exp(5.830537+(4.539119e-3)*td01-(4.547474e-11)*pow(td01,2)-(1.069343e-13)*pow(td01,3)-(2.137254e-16)*pow(td01,4))+2.1735;
				  
			  
				
			  

	

              
		  for(int k5=0;k5<21;k5++){
			   xe0[k5]=(Hfh[k5]-Hfs)/Hfg;
			   
			  if(tcsh1[k5]<=tcsh2[k5])
			  {
				  arfa0[k5]=0;
				  
				  lonb=k5;
				  x0[k5]=0;
				  x10[k5]=0;
				  x20[k5]=0;

⌨️ 快捷键说明

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