📄 gasshotforecastview.cpp
字号:
// float kj1 = wnd->m_structSDT[iShotBullet].fDiameter*wnd->m_structTTPResult.fPP[iShotBullet];
float ks1 = wnd->m_structTTPResult.fPDepth[iShotBullet];
float kj1 = wnd->m_structTTPResult.fPDiameter[iShotBullet];
float faib = wnd->m_structSDT[iShotBullet].fPortion ;
if(ks1 == 600) ks1 = (float)600;
CString dx;
dx = wnd->m_structSDT[iShotBullet].strModel ;
float ks = ks1;
float kj = kj1;
float yh = wnd->m_structSDT[iShotBullet].fPressDeep;
float yc = wnd->m_structSDT[iShotBullet].fPressLong ;
float wh = wnd->m_structBDTTable.fDrillPolluteDepth ;
float wc = wnd->m_structBDTTable.fDrillPollutePercent ;
float jbj = wnd->m_structBDTTable.fWellRadius;
float pe = wnd->m_structBDTTable.fStratumAverPress ;
float miu = wnd->m_structBDTTable.fStratumOilStiff ;
float pk = wnd->m_structBDTTable.fStratumFilterPercent;
float tave = wnd->m_structBDTTable.fStratumTemp ;
float faif = wnd->m_structBDTTable.fStratumHolePercent ;
float re = wnd->m_structBDTTable.fRevealOilRadius ;
float dp = wnd->m_structBDTTable.fProducePressDiff ;
float kzr = wnd->m_structBDTTable.fStratumHeterosphere ;
float h = wnd->m_structBDTTable.fShotLayerPly ;
float rg = wnd->m_structBDTTable.fFloorGasPorportion ;
UpdateData();
float km = m_fShotDen;
float xw = m_fAngle;
UpdateData(FALSE);
float bet = (float)((1.729*1e+07)/pow(pk,1.201));
//
float pprt,pprw,ppr1,prt,prw,pr1,qqgn,q1,qw,qgas,qper;
float gsn = (float)1.1;
float ad = pk;
float jbj1 = jbj;
pk = (float)(pk * 1000);
jbj = (float)(jbj * 1000);
if(pk>100) pk = (float)100;
if(ks<=wh)
{
pprt = fnprw1(ks,km,kj,xw,kzr,yh,yc,wh,wc);
pprt = pprt + fnprw2(ks,km,jbj,yc,wc,dp);
pprt = pprt + fnprw3(ks,km,xw,yh,yc,dp);
pprt = pprt + fnprw4(kj,xw,jbj,kzr,wh,pk,dp);
pprt = (pprt + fnprw5(ks,xw,kzr,wc,dp))*gsn;
pprw = fnprw1(ks,km,kj,xw,kzr,(float)0,(float)1,wh,wc);
pprw = pprw + fnprw2(ks,km,jbj,(float)1,wc,dp);
pprw = pprw + fnprw3(ks,km,xw,(float)0,(float)1,dp);
pprw = pprw + fnprw4(kj,xw,jbj,kzr,wh,pk,dp);
pprw = (pprw + fnprw5(ks,xw,kzr,wc,dp))*gsn;
}
else
{
pprt = fnprc1(ks,km,kj,xw,kzr,yh,yc,wh,wc);
pprt = pprt + fnprc2(ks,km,xw,jbj,kzr,wh,wc);
pprt = pprt + fnprc3(km,kj,xw,kzr,yc,wh,wc);
pprt = (pprt + fnprc4(yh,jbj,pk,dp))*gsn;
pprw = fnprc1(ks,km,kj,xw,kzr,(float)0,(float)1,wh,wc);
pprw = pprw + fnprc2(ks,km,xw,jbj,kzr,wh,wc);
pprw = pprw + fnprc3(km,kj,xw,kzr,(float)1,wh,wc);
pprw = (pprw + fnprc4((float)0,jbj,pk,dp))*gsn;
}
ppr1 = fnprc1(ks,km,kj,xw,kzr,(float)0,(float)1,(float)0,(float)0.5);
ppr1 = ppr1 + fnprc2(ks,km,xw,jbj,kzr,(float)0,(float)0.5);
ppr1 = ppr1 + fnprc3(km,kj,xw,kzr,(float)1,(float)0,(float)0.5);
ppr1 = (ppr1 + fnprc4((float)0,jbj,pk,dp))*gsn;
pk = ad;
jbj = jbj1;
//*
prt = pprt;
prw = pprw;
pr1 = ppr1;
//
float pw = pe - dp;
float pave = (float)(sqrt(pow(pe,2)-(pow(pe,2)- pow(pw,2))/(2*
log(re/jbj))+pow(jbj,2)*(pow(pe,2)-pow(pw,2))/(pow(re,2)-pow(jbj,2))));
float tpc = (float)(170.491+(307.344*rg));
float ppc = (float)(709.604-58.718*rg);
tpc = (float)((tpc-492)*5/9+273);
ppc = (float)((ppc*0.0703)*0.0981);
float tpr = tave/tpc;
float ppr = pave/ppc;
float p = ppr;
float t = tpr;
float z;
if(p<1.2)
{
if(t<1.2)
z = (float)(p*(1.6643*t-2.2114)-0.3647*t+1.4385);
else if(t<1.4)
z = (float)(p*(0.5222*t-0.8511)-0.0364*t+1.049);
else if(t<2)
z = (float)(p*(0.1391*t-0.2988)-0.0007*t+0.9969);
else if(t>=2)
z = (float)(p*(0.0295*t-8.250001E-02)+0.0009*t+0.9967);
}
else if(p<2.8)
{
if(t<1.2)
z = (float)(p*(-1.357*t+1.4942)+4.6315*t-4.7009);
else if(t<1.4)
z = (float)(p*(0.1717*t-0.3232)+0.5869*t+0.1229);
else if(t<2)
z = (float)(p*(0.0784*t-0.2053)-0.0621*t+0.858);
else if(t>=2)
z = (float)(p*(0.0211*t-0.0527)+0.0127*t+0.9549);
}
else if(p<5.4)
{
if(t<1.2)
z = (float)(p*(-0.3278*t+0.4752)+1.8223*t-1.9036);
else if(t<1.4)
z = (float)(p*(-0.2521*t+0.3871)+1.6087*t-1.6635);
else if(t<2)
z = (float)(p*(-0.0284*t+0.0625)+0.4714*t-0.0011);
else if(t>=2)
z = (float)(p*(0.0041*t+0.0039)+0.0607*t+0.7927);
}
else if(p>=5.4)
z = (float)(p*pow((0.711+3.66*t),-1.4667)-1.637/(0.319*t+0.522)+2.071);
float tave1 = (float)((tave-273)*9/5+32+460);
float ruog2 = (float)(28.97*rg*pave*1000000/(8314.3*tave*z));
ruog2 = (float)(ruog2/1000);
float gk = (float)(0.0001*(9.399999+0.02*rg*28.97)*pow(tave1,1.5)/
(209+19*rg*28.97+tave1));
float gx = (float)(3.5+986/tave1+0.01*rg*28.97);
float gy = (float)(2.4-0.2*gx);
float fmio = (float)(gk*exp(gx*pow(ruog2,gy)));
float dd = (float)(2.191*1E-15*bet*pk*rg/(h*fmio)*(1/jbj-1/re));
float di = dd;
float d = dd;
float a = (float)(1.291*0.000001*fmio*z*tave/(pk*h)*dd);
float b = (float)(1.291*0.000001*fmio*z*tave/(pk*h)*log(re/jbj));
float c = (float)(-(pow(pe,2)-pow(pw,2)));
qqgn = (float)((-b+sqrt(pow(b,2)-4*a*c))/(2*a));
//*
qgas = qqgn;
qper = qgas*prt;
q1 = qgas*pr1;
qw = qgas*prw;
float sts = (float)((log(re/jbj)+d*qgas)/prt-log(re/jbj));
float sps = (float)((log(re/jbj)+d*qgas)/pr1-log(re/jbj));
float sws = (float)((log(re/jbj)+d*qgas)/prw-log(re/jbj));
float sds = sws-sps;
float sdps = sts-sps-sds;
UpdateData();
m_fZ = z;
m_fFMIO = fmio;
m_fTPC = tpc;
m_fPPC = ppc;
m_fTPR = tpr;
m_fPPR = ppr;
m_fPAVE = pave;
m_fTAVE = tave;
UpdateData(FALSE);
//******
float ddp = dp;
dp = (float)(dp+3);
//
gsn = (float)1.1;
ad = pk;
jbj1 = jbj;
pk = (float)(pk * 1000);
jbj = (float)(jbj * 1000);
if(pk>100) pk = (float)100;
if(ks<=wh)
{
pprt = fnprw1(ks,km,kj,xw,kzr,yh,yc,wh,wc);
pprt = pprt + fnprw2(ks,km,jbj,yc,wc,dp);
pprt = pprt + fnprw3(ks,km,xw,yh,yc,dp);
pprt = pprt + fnprw4(kj,xw,jbj,kzr,wh,pk,dp);
pprt = (pprt + fnprw5(ks,xw,kzr,wc,dp))*gsn;
pprw = fnprw1(ks,km,kj,xw,kzr,(float)0,(float)1,wh,wc);
pprw = pprw + fnprw2(ks,km,jbj,(float)1,wc,dp);
pprw = pprw + fnprw3(ks,km,xw,(float)0,(float)1,dp);
pprw = pprw + fnprw4(kj,xw,jbj,kzr,wh,pk,dp);
pprw = (pprw + fnprw5(ks,xw,kzr,wc,dp))*gsn;
}
else
{
pprt = fnprc1(ks,km,kj,xw,kzr,yh,yc,wh,wc);
pprt = pprt + fnprc2(ks,km,xw,jbj,kzr,wh,wc);
pprt = pprt + fnprc3(km,kj,xw,kzr,yc,wh,wc);
pprt = (pprt + fnprc4(yh,jbj,pk,dp))*gsn;
pprw = fnprc1(ks,km,kj,xw,kzr,(float)0,(float)1,wh,wc);
pprw = pprw + fnprc2(ks,km,xw,jbj,kzr,wh,wc);
pprw = pprw + fnprc3(km,kj,xw,kzr,(float)1,wh,wc);
pprw = (pprw + fnprc4((float)0,jbj,pk,dp))*gsn;
}
ppr1 = fnprc1(ks,km,kj,xw,kzr,(float)0,(float)1,(float)0,(float)0.5);
ppr1 = ppr1 + fnprc2(ks,km,xw,jbj,kzr,(float)0,(float)0.5);
ppr1 = ppr1 + fnprc3(km,kj,xw,kzr,(float)1,(float)0,(float)0.5);
ppr1 = (ppr1 + fnprc4((float)0,jbj,pk,dp))*gsn;
pk = ad;
jbj = jbj1;
//*
float prti = pprt;
float pr1i = ppr1;
float prwi = pprw;
//
pw = pe - dp;
pave = (float)(sqrt(pow(pe,2)-(pow(pe,2)- pow(pw,2))/(2*
log(re/jbj))+pow(jbj,2)*(pow(pe,2)-pow(pw,2))/(pow(re,2)-pow(jbj,2))));
tpc = (float)(170.491+(307.344*rg));
ppc = (float)(709.604-58.718*rg);
tpc = (float)((tpc-492)*5/9+273);
ppc = (float)((ppc*0.0703)*0.0981);
tpr = tave/tpc;
ppr = pave/ppc;
p = ppr;
t = tpr;
if(p<1.2)
{
if(t<1.2)
z = (float)(p*(1.6643*t-2.2114)-0.3647*t+1.4385);
else if(t<1.4)
z = (float)(p*(0.5222*t-0.8511)-0.0364*t+1.049);
else if(t<2)
z = (float)(p*(0.1391*t-0.2988)-0.0007*t+0.9969);
else if(t>=2)
z = (float)(p*(0.0295*t-8.250001E-02)+0.0009*t+0.9967);
}
else if(p<2.8)
{
if(t<1.2)
z = (float)(p*(-1.357*t+1.4942)+4.6315*t-4.7009);
else if(t<1.4)
z = (float)(p*(0.1717*t-0.3232)+0.5869*t+0.1229);
else if(t<2)
z = (float)(p*(0.0784*t-0.2053)-0.0621*t+0.858);
else if(t>=2)
z = (float)(p*(0.0211*t-0.0527)+0.0127*t+0.9549);
}
else if(p<5.4)
{
if(t<1.2)
z = (float)(p*(-0.3278*t+0.4752)+1.8223*t-1.9036);
else if(t<1.4)
z = (float)(p*(-0.2521*t+0.3871)+1.6087*t-1.6635);
else if(t<2)
z = (float)(p*(-0.0284*t+0.0625)+0.4714*t-0.0011);
else if(t>=2)
z = (float)(p*(0.0041*t+0.0039)+0.0607*t+0.7927);
}
else if(p>=5.4)
z = (float)(p*pow((0.711+3.66*t),-1.4667)-1.637/(0.319*t+0.522)+2.071);
tave1 = (float)((tave-273)*9/5+32+460);
ruog2 = (float)(28.97*rg*pave*1000000/(8314.3*tave*z));
ruog2 = (float)(ruog2/1000);
gk = (float)(0.0001*(9.399999+0.02*rg*28.97)*pow(tave1,1.5)/
(209+19*rg*28.97+tave1));
gx = (float)(3.5+986/tave1+0.01*rg*28.97);
gy = (float)(2.4-0.2*gx);
fmio = (float)(gk*exp(gx*pow(ruog2,gy)));
dd = (float)(2.191*1E-15*bet*pk*rg/(h*fmio)*(1/jbj-1/re));
a = (float)(1.291*0.000001*fmio*z*tave/(pk*h)*dd);
b = (float)(1.291*0.000001*fmio*z*tave/(pk*h)*log(re/jbj));
c = (float)(-(pow(pe,2)-pow(pw,2)));
qqgn = (float)((-b+sqrt(pow(b,2)-4*a*c))/(2*a));
//*
float qgni = qqgn;
float qperi = qgni*prti;
float q1i = qgni*pr1i;
float qwi = qgni*prwi;
float stsi = (float)((log(re/jbj)+di*qgni)/prti-log(re/jbj));
float spsi = (float)((log(re/jbj)+di*qgni)/pr1i-log(re/jbj));
float swsi = (float)((log(re/jbj)+di*qgni)/prwi-log(re/jbj));
dp = ddp;
float d1 = (stsi-sts)/(qperi/prti-qper);
float s = (sts-d1*qper);
float d1p = (spsi-sps)/(q1i-q1);
float sp = sps-d1p*q1;
float d1w = (swsi-sws)/(qwi-qw);
float sw = sws-d1w*qw;
float sd = sw - sp;
float sdp = s- sp - sd;
if(sd<0) sd = -sd;
if(sdp<0) sdp = -sdp;
s = sd+sdp+sp;
//******
UpdateData();
m_fPRT = prt;
m_fQPER = (float)(qper*0.0864/10000);
m_fQGAS = (float)(0.0864*qgas/10000);
m_fQ1 = (float)(0.0864*q1/10000);
m_fQW = (float)(0.0864*qw/10000);
m_fSTS = s;
m_fSPS = sp;
m_fSDS = sd;
m_fSDPS = sdp;
m_fST = sts;
m_fSP = sps;
m_fSD = sds;
m_fSDP = sdps;
m_fD = d;
m_fD1 = d1;
m_fD1P = d1p;
//修改
wnd->m_structGasShotForecast.bState = TRUE;
wnd->m_structGasShotForecast.fShotDen = m_fShotDen;
wnd->m_structGasShotForecast.fShotPhasic = m_fAngle;
sprintf(wnd->m_structGasShotForecast.strModel,"%s",m_cstrModel);
wnd->m_structGasShotForecast.fD = m_fD;
wnd->m_structGasShotForecast.fD1 = m_fD1;
wnd->m_structGasShotForecast.fD1P = m_fD1P;
wnd->m_structGasShotForecast.fFMIO = m_fFMIO;
wnd->m_structGasShotForecast.fPAVE = m_fPAVE;
wnd->m_structGasShotForecast.fPPC = m_fPPC;
wnd->m_structGasShotForecast.fPPR = m_fPPR;
wnd->m_structGasShotForecast.fPRT = m_fPRT;
wnd->m_structGasShotForecast.fQ1 = m_fQ1;
wnd->m_structGasShotForecast.fQGAS = m_fQGAS;
wnd->m_structGasShotForecast.fQPER = m_fQPER;
wnd->m_structGasShotForecast.fQW = m_fQW;
wnd->m_structGasShotForecast.fSD = m_fSD;
wnd->m_structGasShotForecast.fSDP = m_fSDP;
wnd->m_structGasShotForecast.fSDPS = m_fSDPS;
wnd->m_structGasShotForecast.fSP = m_fSP;
wnd->m_structGasShotForecast.fSPS = m_fSPS;
wnd->m_structGasShotForecast.fST = m_fST;
wnd->m_structGasShotForecast.fSTS = m_fSTS;
wnd->m_structGasShotForecast.fTAVE = m_fTAVE;
wnd->m_structGasShotForecast.fTPC = m_fTPC;
wnd->m_structGasShotForecast.fTPR = m_fTPR;
wnd->m_structGasShotForecast.fZ = m_fZ;
UpdateData(FALSE);
}
void CGasShotForecastView::OnContextMenu(CWnd*, CPoint point)
{
// CG: This block was added by the Pop-up Menu component { if (point.x == -1 && point.y == -1){ //keystroke invocation CRect rect; GetClientRect(rect); ClientToScreen(rect); point = rect.TopLeft(); point.Offset(5, 5); } CMenu menu; VERIFY(menu.LoadMenu(IDR_POPUP_SPD)); CMenu* pPopup = menu.GetSubMenu(3); ASSERT(pPopup != NULL); CWnd* pWndPopupOwner = this;// while (pWndPopupOwner->GetStyle() & WS_CHILD)// pWndPopupOwner = pWndPopupOwner->GetParent(); pPopup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, point.y, pWndPopupOwner); }
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -