📄 jcyhsj.cpp
字号:
void jcyhsj::gcygdqdsj()//钢抽油杆柱等强度设计-------------
{
//二级抽油杆机抽系统设计程序
NNN = 0;
sfdayin = 0;
//函数调用
cshsz();
L1 = 0;
L2 = 0;
L3 = 0;
L4 = 0;
for(int K=1;K<=10;K++)//(K----不同型号的深井泵)
{
for(int i=1;i<=gcyjsl;i++)//i----不同型号的抽油机
{
for(int j=1;j<=5;j++)
{
if(gcyjxh[i] != scyjxh && scyjxh != "全部")
{
break;
}
for(int jj=1;jj<=5;jj++)
{
if(gchongci[i][j] * gchongcheng[i][jj]== 0)
{
break;
}
//计算第一级抽油杆的长度
//单位制换算:将MPa换算为 公斤/cm^2 1公斤/cm^2=0.1MPa P沉没压力 = P沉没压力 * 10 pjingkou = pjingkou * 10
A = 3.1416 / 4 * pow(DD[K],2) * (H * RUO * (1 + gchongcheng[i][jj] * pow(gchongci[i][j],2) / 1790) * pow(10,(-6)) - (pcmyl * 10 - pjingkou * 10) * pow(10,(-2)));
B = 1 + gchongcheng[i][jj] * pow(gchongci[i][j],2) / 1790;
D = RUO / (2 * 7850) + gchongcheng[i][jj] * pow(gchongci[i][j],2) / 1790;
//计算第一级抽油杆长度L1
A1 = pow(Q3,2) * B * D;
B1 = Q3 * A * (B / 2 + D);
C1 = pow(A,2) / 2 - pow((F3 * fff),2);
L1 = (sqrt(pow(B1,2) - 4 * A1 * C1) - B1) / (2 * A1);
L1 = long(L1+0.5);
if( L1 >= H)
{
L1 = H;
L2 = 0;
}
else
{
//计算第二级抽油杆长度L2
L2 = H - L1;
L2 = long(L2+0.5);
}
AA1 = Q3 * L1;
aa2 = Q3 * L1 + Q4 * L2;
//计算每一级抽油杆断面处的当量应力
dlyl1 = sqrt((A + B * AA1) * (A / 2 + D * AA1)) / F3;
dlyl2 = sqrt((A + B * aa2) * (A / 2 + D * aa2)) / F4;
if( L2 > 0)
{
ffff = dlyl2;
}
else if( L2 == 0 && L1 > 0)
{
ffff = dlyl1;
}
//计算抽油泵理论排量
QQ = 3.1416 / 4 * pow(DD[K],2) * gchongcheng[i][jj] * gchongci[i][j] * 1440 / 1000000;
//计算悬点最大载荷和最小载荷
Gmax = (A + B * aa2) / 100;
Gmin = ((1 - RUO / 7850 - gchongcheng[i][jj] * pow(gchongci[i][j],2) / 1790) * aa2) / 100;
//计算曲柄最大扭矩
MMAX = (gchongcheng[i][jj] / 2 * (100 * Gmax - (1 - RUO / 7850) * aa2 - A / (2 * B))) / 100;
//计算抽油杆弹性变形冲程损失
XX = L1 / F3 + L2 / F4;
V1 = A / B * XX / gchongcheng[i][jj] / 210;
//计算油管弹性变形冲程损失
V2 = A / B * H / gchongcheng[i][jj] / 244900;
//计算惯性载荷产生的冲程增量
V3 = 21 * pow(gchongci[i][j],2) * pow(H,2) / pow(10,9);
//计算理论泵效
v = 100 - V1 - V2 + V3;
//计算电机功率
pdjgl = 0.2 * A / B * gchongcheng[i][jj] * gchongci[i][j] * (0.355 + v / 100) / 1000;
//有关文献指出,在选择抽油机设备时,加速度因素最好不超过0.225,这相当于
//n^2*s<=400。同时还要考虑井深的影响,一般希望无因次参数N/No<=0.35
//即n<=26100/L
//抽油杆许用应力——抽油杆许用应力,1kg/mm^2=10MPa
if( QQ >= qsheji && QQ < qsheji * 1.1 && gchongci[i][j] <= 26100 / H && L1 > 100 && ffff < fff * SF)
{
if( Gmax * 1.2 < gxdzdzh[i] * 10 && MMAX * 1.2 < gqbzdnj[i])
{
sscyjxh[NNN]= gcyjxh[i];
sbj[NNN]= DD[K];
schongci[NNN]= gchongci[i][j];
schongcheng[NNN]= gchongcheng[i][jj];
bpl[NNN]= QQ;
LL1[NNN]= long(L1+0.5);
LL2[NNN]= long(L2+0.5);
zdyl1[NNN]= dlyl1;
zdyl2[NNN]= dlyl2;
zhmax[NNN]= Gmax;
zhmin[NNN]= Gmin;
zdnj[NNN]= MMAX;
llbx[NNN]= v;
sdjgl[NNN]= pdjgl;
//计算优化目标函数EI(NNN)
EI1 = v + QQ / qsheji;
EI2 = Gmax / gxdzdzh[i] + MMAX / gqbzdnj[i];
EI[NNN]= EI1 / EI2;
NNN = NNN + 1;
}
}
}
}
}
}
if( NNN > 0)
{
if( NNN > 10)
{
//函数调用
paixu(EI, 0, NNN-1);
MMM = 10;
}
else
{
MMM = NNN - 1;
for(K=0;K<=MMM;K++)
{
xuhao[K] = K;
}
}
for(i=0;i<=MMM;i++)
{
if( sfdayin == 0)
{
sfdayin = 1;
title="";
title=title+"\t" + "$0" + "\t" + "[二级抽油杆机抽设计结果(等强度设计方法)]$0"+"\n";
try
{
f3.WriteString(title);
}
catch (CFileException exception3)
{
AfxMessageBox("Error reading file");
return;
}
title="";
title=title+"$7" + "\t" + " 泵径$7" + "\t" + " 冲次$7" + "\t" + " 冲程$7" + "\t" + " 泵排量$7" + "\t" + " [7/8寸抽油杆]$5" + "\t" + "$6" + "\t" + " [1寸抽油杆]$5" + "\t" + "$6" + "\t" + " 悬点最$7" + "\t" + " 悬点最$7" + "\t" + " 曲柄最$7" + "\t" + " 理论$7" + "\t" + " 电机$7"+"\n";
title1="";
title1=title1+"抽油机型号$3" + "\t" + "$3" + "\t" + "$3" + "\t" + "$3" + "\t" + "$3" + "\t" + "抽油杆长$7" + "\t" + "当量应力$7" + "\t" + "抽油杆长$7" + "\t" + "当量应力$7" + "\t" + " 大载荷$3" + "\t" + " 小载荷$3" + "\t" + " 大扭矩$3" + "\t" + " 泵效$3" + "\t" + " 功率$3"+"\n";
title2="";
title2=title2+"$11" + "\t" + " (mm)$11" + "\t" + "(次/分)$11" + "\t" + " (m)$11" + "\t" + "(m^3/d)$11" + "\t" + " (m)$11" + "\t" + " (MPa)$11" + "\t" + " (m)$11" + "\t" + " (MPa)$11" + "\t" + " (KN)$11" + "\t" + " (KN)$11" + "\t" + "(KN·m)$11" + "\t" + " (%)$11" + "\t" + " (Kw)$11"+"\n";
try
{
f3.WriteString(title);
f3.WriteString(title1);
f3.WriteString(title2);
}
catch (CFileException exception3)
{
AfxMessageBox("Error reading file");
return;
}
}
gtiaojian = "是";
gcvt(sbj[xuhao[i]],100,Temp);
title=Temp;
gcvt(schongci[xuhao[i]],100,Temp);
title1=Temp;
gcvt(schongcheng[xuhao[i]],100,Temp);
title2=Temp;
gcvt(bpl[xuhao[i]],100,Temp);
title3=Temp;
G6=sscyjxh[xuhao[i]]+"\t"+title+"\t"+title1+"\t"+title2+"\t"+title3+"\t";
gcvt(LL1[xuhao[i]],100,Temp);
title=Temp;
gcvt(zdyl1[xuhao[i]]*10,100,Temp);
title1=Temp;
G6=G6+title+"\t"+title1+"\t";
gcvt(LL2[xuhao[i]],100,Temp);
title=Temp;
gcvt(zdyl2[xuhao[i]]*10,100,Temp);
title1=Temp;
if( LL2[xuhao[i]] > 0)
{
G6 = G6 + title + "\t" + title1+"\t";
}
else
{
G6 = G6 + "/"+"\t"+ "/"+"\t";
}
gcvt(zhmax[xuhao[i]],100,Temp);
title=Temp;
G6 = G6 + title+"\t";
gcvt(zhmin[xuhao[i]],100,Temp);
title=Temp;
G6 = G6 + title+"\t";
gcvt(zdnj[xuhao[i]],100,Temp);
title=Temp;
G6 = G6 + title+"\t";
gcvt(llbx[xuhao[i]],100,Temp);
title=Temp;
G6 = G6 + title+"\t";
gcvt(sdjgl[xuhao[i]],100,Temp);
title=Temp;
G6 = G6 + title+"\n";
if( G60 != G6)
{
try
{
f3.WriteString(G6);
}
catch (CFileException exception3)
{
AfxMessageBox("Error reading file");
return;
}
}
}
}
if( sfdayin == 1)
{
try
{
f3.WriteString(G7);
}
catch (CFileException exception3)
{
AfxMessageBox("Error reading file");
return;
}
}
// G循环次数 = G循环次数 + 1;
// 主窗口.SSPanel1.FloodPercent = G循环次数 / Max * 100;
//三级抽油杆机抽系统设计程序
sfdayin = 0;
NNN = 0;
cshsz();
L1 = 0;
L2 = 0;
L3 = 0;
L4 = 0;
for(K=1;K<=10;K++)
{
for(int i=1;i<=gcyjsl;i++)//i----不同型号的抽油机
{
for(int j=1;j<=5;j++)
{
if( gcyjxh[i] != scyjxh && scyjxh != "全部")
{
break;
}
for(int jj=1;jj<=5;jj++)
{
if( gchongci[i][j] * gchongcheng[i][jj] == 0)
{
break;
}
//计算每一级抽油杆的长度
//单位制换算:将MPa换算为 公斤/cm^2 1公斤/cm^2=0.1MPa P沉没压力 = P沉没压力 * 10 P井口 = P井口 * 10
A = 3.1416 / 4 * pow(DD[K],2) * (H * RUO * (1 + gchongcheng[i][jj] * pow(gchongci[i][j],2) / 1790) * pow(10,(-6)) - (pcmyl * 10 - pjingkou * 10) * pow(10,(-2)));
B = 1 + gchongcheng[i][jj] * pow(gchongci[i][j],2) / 1790;
D = RUO / (2 * 7850) + gchongcheng[i][jj] * pow(gchongci[i][j],2) / 1790;
//计算第一级抽油杆长度L1
A1 = pow(Q2,2) * B * D;
B1 = Q2 * A * (B / 2 + D);
C1 = pow(A,2) / 2 - pow((F2 * fff),2);
L1 = (sqrt(pow(B1,2) - 4 * A1 * C1) - B1) / (2 * A1);
L1 = long(L1+0.5);
if( L1 >= H)
{
L1 = H;
L2 = 0;
L3 = 0;
}
else
{
L1 = long(L1+0.5);
//计算第二级抽油杆长度L2
A2 = pow(Q3,2) * B * D;
B2 = Q3 * (A * (B / 2 + D) + 2 * Q2 * L1 * B * D);
C2 = (A + Q2 * L1 * B) * (A / 2 + Q2 * L1 * D) - pow((F3 * fff),2);
L2 = (sqrt(pow(B2,2) - 4 * A2 * C2) - B2) / (2 * A2);
if( L1 + L2 >= H)
{
L2 = H - L1;
L3 = 0;
}
else
{
if( L2 != 0)
{
L2 = long(L2+0.5);
}
//计算第三级抽油杆长度L3
L3 = H - L1 - L2;
if( L3 != 0)
{
L3 = long(L3+0.5);
}
}
}
AA1 = Q2 * L1;
aa2 = Q2 * L1 + Q3 * L2;
aa3 = Q2 * L1 + Q3 * L2 + Q4 * L3;
//计算每一级抽油杆断面处的当量应力
dlyl1 = sqrt((A + B * AA1) * (A / 2 + D * AA1)) / F2;
dlyl2 = sqrt((A + B * aa2) * (A / 2 + D * aa2)) / F3;
dlyl3 = sqrt((A + B * aa3) * (A / 2 + D * aa3)) / F4;
if( L3 > 0)
{
ffff = dlyl3;
}
else if( L3 == 0 && L2 > 0)
{
ffff = dlyl2;
}
else if( L2 == 0 && L1 > 0)
{
ffff = dlyl1;
}
//计算抽油泵理论排量
QQ = 3.1416 / 4 * pow(DD[K],2) * gchongcheng[i][jj] * gchongci[i][j] * 1440 / 1000000;
//计算悬点最大载荷和最小载荷
Gmax = (A + B * aa3) / 100;
Gmin = ((1 - RUO / 7850 - gchongcheng[i][jj] * pow(gchongci[i][j],2) / 1790) * aa3) / 100;
//计算曲柄最大扭矩
MMAX = (gchongcheng[i][jj] / 2 * (100 * Gmax - (1 - RUO / 7850) * aa3 - A / (2 * B))) / 100;
//计算抽油杆弹性变形冲程损失
XX = L1 / F2 + L2 / F3 + L3 / F4;
V1 = A / B * XX / gchongcheng[i][jj] / 210;
//计算油管弹性变形冲程损失
V2 = A / B * H / gchongcheng[i][jj] / 244900;
//计算惯性载荷产生的冲程增量
V3 = 21 * pow(gchongci[i][j],2) * pow(H,2) / pow(10,9);
//计算理论泵效
v = 100 - V1 - V2 + V3;
//计算电机功率
pdjgl = 0.2 * A / B * gchongcheng[i][jj] * gchongci[i][j] * (0.355 + v / 100) / 1000;
//输出文件
if( QQ >= qsheji && QQ < qsheji * 1.1 && gchongci[i][j] <= 26100 / H && L1 > 100 && ffff < fff * SF)
{
if( Gmax * 1.2 < gxdzdzh[i] * 10 && MMAX * 1.2 < gqbzdnj[i])
{
sscyjxh[NNN]= gcyjxh[i];
sbj[NNN]= DD[K];
schongci[NNN]= gchongci[i][j];
schongcheng[NNN]= gchongcheng[i][jj];
bpl[NNN]= QQ;
LL1[NNN]= long(L1+0.5);
LL2[NNN]= long(L2+0.5);
LL3[NNN]= long(L3+0.5);
zdyl1[NNN]= dlyl1;
zdyl2[NNN]= dlyl2;
zdyl3[NNN]= dlyl3;
zhmax[NNN]= Gmax;
zhmin[NNN]= Gmin;
zdnj[NNN]= MMAX;
llbx[NNN]= v;
sdjgl[NNN]= pdjgl;
//计算优化目标函数EI(NNN)
EI1 = v + QQ / qsheji;
EI2 = Gmax / gxdzdzh[i] + MMAX / gqbzdnj[i];
EI[NNN]= EI1 / EI2;
NNN = NNN + 1;
}
}
}
}
}
}
if( NNN > 0)
{
if( NNN > 10)
{
//函数调用
paixu(EI, 0, NNN - 1);
MMM = 10;
}
else
{
MMM = NNN - 1;
for(K=0;K<=MMM;K++)
{
xuhao[K] = K;
}
}
for(i=0;i<=MMM;i++)
{
if( sfdayin == 0)
{
sfdayin = 1;
title="";
title=title+"\t" + "$0" + "\t" + "[三级抽油杆机抽设计结果等强度设计方法)]$0\n";
try
{
f3.WriteString(title);
}
catch (CFileException exception3)
{
AfxMessageBox("Error reading file");
return;
}
title="";
title=title+"$7" + "\t" + " 泵径$7" + "\t" + " 冲次$7" + "\t" + " 冲程$7" + "\t" + " 泵排量$7" + "\t" + " [3/4寸抽油杆]$5" + "\t" + "$6" + "\t" + " [7/8寸抽油杆]$5" + "\t" + "$6" + "\t" + " [1寸抽油杆]$5" + "\t" + "$6" + "\t" + " 悬点最$7" + "\t" + " 悬点最$7" + "\t" + " 曲柄最$7" + "\t" + " 理论$7" + "\t" + " 电机$7"+"\n";
title1="";
title1=title1+"抽油机型号$3" + "\t" + "$3" + "\t" + "$3" + "\t" + "$3" + "\t" + "$3" + "\t" + "抽油杆长$7" + "\t" + "当量应力$7" + "\t" + "抽油杆长$7" + "\t" + "当量应力$7" + "\t" + "抽油杆长$7" + "\t" + "当量应力$7" + "\t" + " 大载荷$3" + "\t" + " 小载荷$3" + "\t" + " 大扭矩$3" + "\t" + " 泵效$3" + "\t" + " 功率$3"+"\n";
title2="";
title2=title2+"$11" + "\t" + " (mm)$11" + "\t" + "(次/分)$11" + "\t" + " (m)$11" + "\t" + "(m^3/d)$11" + "\t" + " (m)$11" + "\t" + " (MPa)$11" + "\t" + " (m)$11" + "\t" + " (MPa)$11" + "\t" + " (m)$11" + "\t" + " (MPa)$11" + "\t" + " (KN)$11" + "\t" + " (KN)$11" + "\t" + "(KN·m)$11" + "\t" + " (%)$11" + "\t" + " (Kw)$11"+"\n";
try
{
f3.WriteString(title);
f3.WriteString(title1);
f3.WriteString(title2);
}
catch (CFileException exception3)
{
AfxMessageBox("Error reading file");
return;
}
}
G60 = G6;
gtiaojian = "是";
gcvt(sbj[xuhao[i]],100,Temp);
title=Temp;
gcvt(schongci[xuhao[i]],100,Temp);
title1=Temp;
gcvt(schongcheng[xuhao[i]],100,Temp);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -