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

📄 gasshotforecastview.cpp

📁 这是本人两年前兼职为某个公司做的石油钻进设计软件
💻 CPP
📖 第 1 页 / 共 2 页
字号:
//	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 + -