📄 压水堆热工水力设计dlg.cpp
字号:
}
else {
A=(qh*shuzu0[k5]-hh[k5]*(ts-tfh[k5]))*miu0[k5]*Cp0[k5]/(1.07*hh[k5]*hh[k5]*(ts-tfh[k5]));
arfa0[k5]=4*A/de;
x10[k5]=1/(1+((1-arfa0[k5])/arfa0[k5])*(rol0[k5]/rogs));
x20[k5]=0.435*(Hfh[k5]-Hd0)/Hfg;
x0[k5]=(x10[k5]<=x20[k5])?x20[k5]:x10[k5];
}
if(x0[k5]<=xe0[k5])
x0[k5]=xe0[k5];
}
//热管密度场的计算
double roh[21],qh1[21],frxs[21];
for(int k8=0;k8<21;k8++){
roh[k8]=1/((1-x0[k8])/rol0[k8]+x0[k8]/rogs);
qh1[k8]=qh*shuzu0[k8];
frxs[k8]=qh1[k8]/(tcih[k8]-tfh[k8]);
}
//热管DNB比场的计算
double Qdnb[21],Qdnbeu[21],qh0[21],DNBR[21],xglh[21];
double Fc=1,Fg,Fs[21],dh=de,Ks=0.066,Ctd=0.061,C,quhe,Fnz=1.55,xglhmax=0,xglhav;
for(int k6=0;k6<21;k6++){
Qdnbeu[k6]=(3.154e+3)*((2.022-(6.238e-5)*P)+(0.1722-(1.427e-5)*P)*exp((18.177-(5.987e-4)*P)*xe0[k6]))*((0.1484-1.596*xe0[k6]+0.1729*xe0[k6]*fabs(xe0[k6]))*0.2049*(3.6e-3)*Gh+1.037)*(1.157-0.869*xe0[k6])*(0.2664+0.8357*exp(-124.1*dh))*(0.8258+(0.3414e-3)*(Hfs-Hfh[0]));
Fg=pow(P/(15.58e+2),0.5)*(1.445-0.122L)*(exp(pow(xe0[k6]+0.2,2))-0.73)+Ks*Gh*pow(Ctd/0.019,0.35)/1354;
qh0[k6]=qh*Fnz*sin(Pi*(detz*k6+0.1)/Le);
quhe=0;
//下式有待确定
if(k6<=lonb)
Fs[k6]=1;
else{
C=12.64*pow(1-xe0[k6],4.31)/pow(Gh*(3.6e-3),0.478);
for(int k7=lonb+1;k7<=k6;k7++){
quhe=quhe+qh0[k7]*(exp(C*detz*(k7))-exp(C*detz*(k7-1)));
}
Fs[k6]=exp(-C*k6*detz)*quhe/(qh0[k6]*(1-exp(-C*(k6*detz-lonb*detz))));
}
Qdnb[k6]=Qdnbeu[k6]*Fc*Fg/Fs[k6];
xglh[k6]=qh1[k6]*Pi*dcs;
DNBR[k6]=Qdnb[k6]/qh0[k6];
}
for(int r3=0;r3<jiedian;r3++){
if(xglhmax<=xglh[r3])
xglhmax=xglh[r3];
}
xglhav=Nt*Fu*y/(L*ncl*nu);
double minDNBR=10;
for(int v2=0;v2<jiedian;v2++){
if(minDNBR>=DNBR[v2])
minDNBR=DNBR[v2];
}
//WRB-1公式
double qdnb[21],PF,A1[21],B4[21],Dcs,dg,gsp,lh,Lgj=L*536.3/3851.4,dnbr[21];
double A12=-0.02538,A13=-0.1692, A15=-0.10881,A16=0.09285,mindnbr=100;
double A17=-3.8673, A19=-0.08188,A22=-0.1845, B3=0.1216;
double B42=1.6114, B43=0.01450, B44=-0.06844,B45=-0.5183;
double Press=P*145.038/1000;
// int juli;
gsp=Lgj;
for(int k0=0;k0<21;k0++){
lh=(k0+0.5)*detz;//计算点的位置
dg=fmod(lh,Lgj);//计算点到最近格架的距离
if (dg>Lgj-dg)
dg=Lgj-dg;
A1[k0]=A12*lh/0.3048+A13*(Press/1000)+A15*tanh(A16*(dg+gsp)/0.0254+A17)+A19*dh/0.0254+A22*de/0.0254;
B4[k0]=B42*(Press/1000)+B43*lh/0.3048*(Press/1000)+B44*lh/0.3048+B45*(Press/1000)*(Press/1000);
Dcs=dcs/0.0254;
if(0.422>Dcs&&Dcs>0.40)
PF=1.2820;
if(0.4>Dcs&&Dcs>0.360)
PF=1.1753;
qdnb[k0]=(PF+A1[k0])*1000000+B3*(Gh*737.37)-B4[k0]*(Gh*737.37)*x0[k0];
qdnb[k0]=qdnb[k0]*3.1546/1000;
qdnb[k0]=qdnb[k0]/Fs[k0];
dnbr[k0]=qdnb[k0]/qh0[k0];
}
for(int v3=0;v3<jiedian;v3++){
if(mindnbr>=dnbr[v3])
mindnbr=dnbr[v3];
}
m_edit2.SetSel(0,-1);
m_edit2.ReplaceSel("程序正在运行,请耐心等待结果的输出············");
//数据输出部分
//堆芯总体数据输出
CString szItemTexts[]={"——————堆结构参数——————",
"热功率",
"中子通量分布设定",
"燃料元件的排列方案",
"堆芯活性区高度L(m)",
"堆内燃料组件数目",
"堆芯当量直径(m)",
"堆芯燃料元件总数",
"堆芯控制棒导向管总数"};
for(int a=0;a<9;a++)
{m_list.InsertItem(a,szItemTexts[a]);}
CString duixin[9];
duixin[0]=" ";
switch(gonglv){
case 0:
duixin[1]="100%";
break;
case 1:
duixin[1]="118%";
break;
}
switch(pailie){
case 0:
duixin[3]="15x15";
break;
case 1:
duixin[3]="17x17";
break;
case 2:
duixin[3]="18x18";
break;
}
switch(fenbu){
case 0:
duixin[2]="截尾余弦";
break;
case 1:
duixin[2]="寿期初";
break;
case 2:
duixin[2]="寿期末";
break;
case 3:
duixin[2]="寿期中";
break;
}
duixin[4].Format("%g",L);
duixin[5].Format("%d",ncl);
duixin[6].Format("%g",Def);
duixin[7].Format("%d",ncl*nu);
duixin[8].Format("%d",ncl*24);
for(int s0=0;s0<9;s0++){
m_list.SetItem(s0,1,LVIF_TEXT,duixin[s0],0,0,0,LPARAM(0));}
//平均通道结果输出
CString pingjun[2]={"——————平均通道——————","#####1.轴向各段参数#####"};
CString pingjun1[7]={"********结点********","冷却剂平均温度(t):","冷却剂平均密度(kg/m^3):","包壳外表面热流密度(kw/m^2):",
"线功率(kw/m):","通道内压力(kpa):"," "};
m_list.InsertItem(9,pingjun[0]);
m_list.InsertItem(10,pingjun[1]);
for(int o1=0;o1<7;o1++)
for(int s1=0;s1<jiedian;s1++)
{m_list.InsertItem(10+(o1+1)*(s1+1),pingjun1[o1]);}
for(int w1=0;w1<jiedian;w1++){
CString ping1[7];
ping1[0].Format("%d",w1);
m_list.SetItem(11+w1*7,1,LVIF_TEXT,ping1[0],0,0,0,LPARAM(0));
ping1[1].Format("%g",tfm[w1]);
m_list.SetItem(12+w1*7,1,LVIF_TEXT,ping1[1],0,0,0,LPARAM(0));
ping1[2].Format("%g",rom[w1]);
m_list.SetItem(13+w1*7,1,LVIF_TEXT,ping1[2],0,0,0,LPARAM(0));
ping1[3].Format("%g",qm[w1]);
m_list.SetItem(14+w1*7,1,LVIF_TEXT,ping1[3],0,0,0,LPARAM(0));
ping1[4].Format("%g",xglm[w1]);
m_list.SetItem(15+w1*7,1,LVIF_TEXT,ping1[4],0,0,0,LPARAM(0));
ping1[5].Format("%g",pm[w1]);
m_list.SetItem(16+w1*7,1,LVIF_TEXT,ping1[5],0,0,0,LPARAM(0));
m_list.SetItem(17+w1*7,1,LVIF_TEXT," ",0,0,0,LPARAM(0));
}
CString pingjun3="#####2.总体参数#####";
m_list.InsertItem(jiedian*7+11,pingjun3);
CString pingjun2[5]={"冷却剂入口温度(t):","冷却剂出口温度(t):","冷却剂平均温度(t):","冷却剂平均质量流量(kg/(m^2*s)):","通道总压降(kpa):"};
for(int w2=1;w2<6;w2++)
m_list.InsertItem(jiedian*7+11+w2,pingjun2[w2-1]);
CString ping2[5];
ping2[0].Format("%g",tfm[0]);
ping2[1].Format("%g",tfm[jiedian-1]);
ping2[2].Format("%g",(tfm[0]+tfm[jiedian-1])/2);
ping2[3].Format("%g",Gm);
ping2[4].Format("%g",Pm);
m_list.SetItem(jiedian*7+12,1,LVIF_TEXT,ping2[0],0,0,0,LPARAM(0));
m_list.SetItem(jiedian*7+13,1,LVIF_TEXT,ping2[1],0,0,0,LPARAM(0));
m_list.SetItem(jiedian*7+14,1,LVIF_TEXT,ping2[2],0,0,0,LPARAM(0));
m_list.SetItem(jiedian*7+15,1,LVIF_TEXT,ping2[3],0,0,0,LPARAM(0));
m_list.SetItem(jiedian*7+16,1,LVIF_TEXT,ping2[4],0,0,0,LPARAM(0));
//热管结果输出
//结点数据
CString reguan[3]={" ","——————热通道——————","#####1.轴向各段参数#####"};
m_list.InsertItem(jiedian*7+17,reguan[0]);
m_list.InsertItem(jiedian*7+18,reguan[1]);
m_list.InsertItem(jiedian*7+19,reguan[2]);
CString reguan1[15]={"********结点********","冷却剂平均温度(t):","冷却剂含汽量(%):",
"包壳—水的平均放热系数(kw/(m^2*t)):","冷却剂平均密度(kg/m^3):",
"包壳外表面热流密度(kw/m^2):","线功率(kw/m):","通道内压力(kpa):",
"包壳外表面温度(t):","包壳内表面温度(t):","芯块外表面温度(t):",
"芯块中心温度(t):","烧毁比(用W-3公式):","烧毁比(用WRB-1公式):"," "};
for(int o2=0;o2<15;o2++)
for(int s2=0;s2<jiedian;s2++)
{m_list.InsertItem(jiedian*7+19+(o2+1)*(s2+1),reguan1[o2]);}
for(int w3=0;w3<jiedian;w3++){
CString guan[15];
guan[0].Format("%d",w3);
m_list.SetItem(jiedian*7+20+w3*15,1,LVIF_TEXT,guan[0],0,0,0,LPARAM(0));
guan[1].Format("%g",tfh[w3]);
m_list.SetItem(jiedian*7+21+w3*15,1,LVIF_TEXT,guan[1],0,0,0,LPARAM(0));
guan[2].Format("%g",x0[w3]*100);
m_list.SetItem(jiedian*7+22+w3*15,1,LVIF_TEXT,guan[2],0,0,0,LPARAM(0));
guan[3].Format("%g",frxs[w3]);
m_list.SetItem(jiedian*7+23+w3*15,1,LVIF_TEXT,guan[3],0,0,0,LPARAM(0));
guan[4].Format("%g",roh[w3]);
m_list.SetItem(jiedian*7+24+w3*15,1,LVIF_TEXT,guan[4],0,0,0,LPARAM(0));
guan[5].Format("%g",qh1[w3]);
m_list.SetItem(jiedian*7+25+w3*15,1,LVIF_TEXT,guan[5],0,0,0,LPARAM(0));
guan[6].Format("%g",xglh[w3]);
m_list.SetItem(jiedian*7+26+w3*15,1,LVIF_TEXT,guan[6],0,0,0,LPARAM(0));
guan[7].Format("%g",ph[w3]);
m_list.SetItem(jiedian*7+27+w3*15,1,LVIF_TEXT,guan[7],0,0,0,LPARAM(0));
guan[8].Format("%g",tcsh[w3]);
m_list.SetItem(jiedian*7+28+w3*15,1,LVIF_TEXT,guan[8],0,0,0,LPARAM(0));
guan[9].Format("%g",tcih[w3]);
m_list.SetItem(jiedian*7+29+w3*15,1,LVIF_TEXT,guan[9],0,0,0,LPARAM(0));
guan[10].Format("%g",tuh[w3]);
m_list.SetItem(jiedian*7+30+w3*15,1,LVIF_TEXT,guan[10],0,0,0,LPARAM(0));
guan[11].Format("%g",toh[w3]);
m_list.SetItem(jiedian*7+31+w3*15,1,LVIF_TEXT,guan[11],0,0,0,LPARAM(0));
guan[12].Format("%g",DNBR[w3]);
m_list.SetItem(jiedian*7+32+w3*15,1,LVIF_TEXT,guan[12],0,0,0,LPARAM(0));
guan[13].Format("%g",dnbr[w3]);
m_list.SetItem(jiedian*7+33+w3*15,1,LVIF_TEXT,guan[13],0,0,0,LPARAM(0));
m_list.SetItem(jiedian*7+34+w3*15,1,LVIF_TEXT," ",0,0,0,LPARAM(0));
}
//总体数据
CString reguan0="#####2.总体参数#####";
m_list.InsertItem(jiedian*22+20,reguan0);
CString reguan2[10]={"冷却剂入口温度(t):","冷却剂出口温度(t):","冷却剂平均温度(t):",
"冷却剂出口焓(kj/kg):","冷却剂出口含汽量(%):","冷却剂质量流量(kg/(m^2*s)):",
"通道总压降(kpa):","最小的DNBR值(W-3):","最小的DNBR值(WRB-1):",
"燃料芯块中心最高温度(t):"};
for(int w4=1;w4<11;w4++){
m_list.InsertItem(jiedian*22+20+w4,reguan2[w4-1]);}
CString guan1[10];
guan1[0].Format("%g",tfh[0]);
guan1[1].Format("%g",tfh[jiedian-1]);
guan1[2].Format("%g",(tfh[0]+tfh[jiedian-1])/2);
guan1[3].Format("%g",Hfh[jiedian-1]);
guan1[4].Format("%g",x0[jiedian-1]*100);
guan1[5].Format("%g",Gh);
guan1[6].Format("%g",Phe);
guan1[7].Format("%g",minDNBR);
guan1[8].Format("%g",mindnbr);
guan1[9].Format("%g",tohmax);
m_list.SetItem(jiedian*22+21,1,LVIF_TEXT,guan1[0],0,0,0,LPARAM(0));
m_list.SetItem(jiedian*22+22,1,LVIF_TEXT,guan1[1],0,0,0,LPARAM(0));
m_list.SetItem(jiedian*22+23,1,LVIF_TEXT,guan1[2],0,0,0,LPARAM(0));
m_list.SetItem(jiedian*22+24,1,LVIF_TEXT,guan1[3],0,0,0,LPARAM(0));
m_list.SetItem(jiedian*22+25,1,LVIF_TEXT,guan1[4],0,0,0,LPARAM(0));
m_list.SetItem(jiedian*22+26,1,LVIF_TEXT,guan1[5],0,0,0,LPARAM(0));
m_list.SetItem(jiedian*22+27,1,LVIF_TEXT,guan1[6],0,0,0,LPARAM(0));
m_list.SetItem(jiedian*22+28,1,LVIF_TEXT,guan1[7],0,0,0,LPARAM(0));
m_list.SetItem(jiedian*22+29,1,LVIF_TEXT,guan1[8],0,0,0,LPARAM(0));
m_list.SetItem(jiedian*22+30,1,LVIF_TEXT,guan1[9],0,0,0,LPARAM(0));
//堆芯总体参数
CString duizong[6]={" ","—————堆芯总体参数—————","全堆平均线功率(kw/m):",
"最大线功率(kw/m):","活性区平均功率密度(kw/m^3):","堆芯总压降(kpa):"};
for(int w5=0;w5<6;w5++){
m_list.InsertItem(jiedian*22+31+w5,duizong[w5]);}
CString zongti[4];
zongti[0].Format("%g",xglhav);
zongti[1].Format("%g",xglhmax);
zongti[2].Format("%g",4*Nt*y/(Pi*Def*Def*L));
zongti[3].Format("%g",Pm);
m_list.SetItem(jiedian*22+33,1,LVIF_TEXT,zongti[0],0,0,0,LPARAM(0));
m_list.SetItem(jiedian*22+34,1,LVIF_TEXT,zongti[1],0,0,0,LPARAM(0));
m_list.SetItem(jiedian*22+35,1,LVIF_TEXT,zongti[2],0,0,0,LPARAM(0));
m_list.SetItem(jiedian*22+36,1,LVIF_TEXT,zongti[3],0,0,0,LPARAM(0));
m_edit2.SetSel(0,-1);
m_edit2.ReplaceSel("程序运行完毕,请查看结果。");
}
}
void CMyDlg::OnButton2()
{
// TODO: Add your control notification handler code here
m_list.DeleteAllItems();
m_edit2.SetSel(0,-1);
m_edit2.ReplaceSel(" ");
}
void CMyDlg::OnButton3()
{
// TODO: Add your control notification handler code here
CString list,shuzhi;
char *dizhi1,*dizhi2;
static char BASED_CODE szFilter[] ="文本文件(*.txt)|*.txt|";
CFileDialog fileDlg(FALSE, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, szFilter);
if(fileDlg.DoModal() == IDOK)
{ CFile file;
CString mingzi=".txt";
CString szFilePath = fileDlg.GetPathName();
szFilePath.operator +=(mingzi);
if(! file.Open(szFilePath, CFile::modeCreate | CFile::modeWrite , NULL))
MessageBox( "write file error" ) ;
for(int g1=0;g1<=m_list.GetItemCount();g1++){
list=m_list.GetItemText(g1,0);
shuzhi=m_list.GetItemText(g1,1);
int changdu1=list.GetLength();
int changdu2=shuzhi.GetLength();
dizhi1=list.GetBuffer(changdu1);
dizhi2=shuzhi.GetBuffer(changdu2);
file.Write(dizhi1,changdu1);
for(int s1=0;s1<40-changdu1;s1++){
file.Write("",1); }
file.Write(dizhi2,changdu2);
file.Write("\r\n",2);
list.ReleaseBuffer(-1);
shuzhi.ReleaseBuffer(-1);
}
}
}
void CMyDlg::OnButton4()
{
// TODO: Add your control notification handler code here
OnOK();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -