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

📄 oilshotforecastview.cpp

📁 这是本人两年前兼职为某个公司做的石油钻进设计软件
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// OilShotForecastView.cpp : implementation file
//

#include "stdafx.h"
#include "CVenus.h"
#include "MainFrm.h"
#include "OilShotForecastView.h"
#include	"ChildFrm.h"
#include "resource.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// COilShotForecastView

IMPLEMENT_DYNCREATE(COilShotForecastView, CFormView)

COilShotForecastView::COilShotForecastView()
	: CFormView(COilShotForecastView::IDD)
{
	//{{AFX_DATA_INIT(COilShotForecastView)
	m_fNPro = 0.0f;
	m_fPR = 0.0f;
	m_fS4 = 0.0f;
	m_fSD = 0.0f;
	m_fSDP = 0.0f;
	m_fSP = 0.0f;
	m_fSPP = 0.0f;
	m_fSPro = 0.0f;
	m_fST = 0.0f;
	m_cstrModel = _T("");
	m_fAngle = 0.0f;
	//}}AFX_DATA_INIT
}

COilShotForecastView::~COilShotForecastView()
{
}

void COilShotForecastView::DoDataExchange(CDataExchange* pDX)
{
	CFormView::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(COilShotForecastView)
	DDX_Text(pDX, IDC_EDIT_OSF_NPRO, m_fNPro);
	DDX_Text(pDX, IDC_EDIT_OSF_PR, m_fPR);
	DDX_Text(pDX, IDC_EDIT_OSF_S4, m_fS4);
	DDX_Text(pDX, IDC_EDIT_OSF_SD, m_fSD);
	DDX_Text(pDX, IDC_EDIT_OSF_SDP, m_fSDP);
	DDX_Text(pDX, IDC_EDIT_OSF_SP, m_fSP);
	DDX_Text(pDX, IDC_EDIT_OSF_SPP, m_fSPP);
	DDX_Text(pDX, IDC_EDIT_OSF_SPRO, m_fSPro);
	DDX_Text(pDX, IDC_EDIT_OSF_ST, m_fST);
	DDX_Text(pDX, IDC_EDIT_OSF_MODEL, m_cstrModel);
	DDX_Text(pDX, IDC_EDIT_OSF_ANGLE, m_fAngle);
	DDV_MinMaxFloat(pDX, m_fAngle, 0.f, 90.f);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(COilShotForecastView, CFormView)
	ON_WM_CONTEXTMENU()
	//{{AFX_MSG_MAP(COilShotForecastView)
	ON_WM_CREATE()
	ON_COMMAND(ID_SPD_CACL, OnSpdCacl)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// COilShotForecastView diagnostics

#ifdef _DEBUG
void COilShotForecastView::AssertValid() const
{
	CFormView::AssertValid();
}

void COilShotForecastView::Dump(CDumpContext& dc) const
{
	CFormView::Dump(dc);
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// COilShotForecastView message handlers

float COilShotForecastView::fnprl1(float ks, float km, float kj, float xw, float jbj, float kzr)
{
	return (float)(-0.45+0.00191*ks-1.36*pow(10,-6)*pow(ks,2)+
		0.01665*km-0.000173*pow(km,2)-0.00856*km*(log(kzr)/log(10))+
		0.0201*kj-0.000335*pow(kj,2)+0.00211*xw-0.0000108*pow(xw,2));
}


float COilShotForecastView::fnprl2(float ks, float km, float kj, float xw, float jbj, float kzr)
{
	return (float)(fnprl1(ks,km,kj,xw,jbj,kzr)-2*0.000887*xw*(log(kzr)/log(10))+
		0.5*(log(kzr)/log(10))+0.512*1-0.253*pow(1,2)+0.3315*1-0.168*pow(1,2)-
		0.00963*0);
}

float COilShotForecastView::fnprl(float ks, float km, float kj, float xw, float jbj, float kzr)
{
	return (float)(fnprl2(ks,km,kj,xw,jbj,kzr)+0.000193*pow(0,2)-
		0.000841*0+7.14*pow(10,-7)*pow(0,2)+0.406*kzr-0.135*pow(kzr,2)-
		0.0009736*jbj+2.43E-6*pow(jbj,2));
}

float COilShotForecastView::fnpry1(float ks, float km, float kj, float xw, float jbj, float kzr, float yh, float yc)
{
	return (float)(-0.25+0.00191*ks-1.36E-06*pow(ks,2)+0.01665*km-0.000173*
		pow(km,2)-0.00856*km*(log(kzr)/log(10))+0.0201*kj-0.000335*pow(kj,2)+
		0.00211*xw-0.0000108*pow(xw,2));
}

float COilShotForecastView::fnpry2(float ks, float km, float kj, float xw, float jbj, float kzr, float yh, float yc)
{
	return (float)(fnpry1(ks,km,kj,xw,jbj,kzr,yh,yc)-2*0.000887*xw*(log(kzr)/log(10))+
		0.5*(log(kzr)/log(10))+0.512*yc-0.253*pow(yc,2)+0.3315*1-0.168*pow(1,2)-
		0.00963*yh);
}

float COilShotForecastView::fnpry(float ks, float km, float kj, float xw, float jbj, float kzr, float yh, float yc)
{
	return (float)(fnpry2(ks,km,kj,xw,jbj,kzr,yh,yc)+0.000193*pow(yh,2)-
		0.000841*0+1.4E-08*pow(0,2)+0.406*kzr-0.135*pow(kzr,2)-0.0009736*
		jbj+2.43E-06*pow(jbj,2));
}

float COilShotForecastView::fnprw1(float ks, float km, float kj, float xw, float jbj, float kzr, float yh, float yc, float wh, float wc)
{
	return (float)(-0.25+0.00148*ks-1.23E-06*pow(ks,2)+0.00958*km-
		0.0000998*pow(km,2)-0.00467*km*(log(kzr)/log(10))+0.0178*kj-
		0.000296*pow(kj,2)+0.00195*xw-0.00001*pow(xw,2));
}

float COilShotForecastView::fnprw2(float ks, float km, float kj, float xw, float jbj, float kzr, float yh, float yc, float wh, float wc)
{
	return (float)(fnprw1(ks,km,kj,xw,jbj,kzr,yh,yc,wh,wc)-2*0.000828*
		xw*(log(kzr)/log(10))+0.4*(log(kzr)/log(10))+0.3488*yc-0.1745*
		pow(yc,2)+0.69*wc-0.35*pow(wc,2)-0.00778*yh);
}

float COilShotForecastView::fnprw(float ks, float km, float kj, float xw, float jbj, float kzr, float yh, float yc, float wh, float wc)
{
	return (float)(fnprw2(ks,km,kj,xw,jbj,kzr,yh,yc,wh,wc)+0.000156*
		pow(yh,2)-0.000452*wh+2.05E-07*pow(wh,2)+0.319*kzr-0.103*
		pow(kzr,2)-0.0009512*jbj+2.378E-06*pow(jbj,2));
}

float COilShotForecastView::fnprc1(float ks, float km, float kj, float xw, float jbj, float kzr, float yh, float yc, float wh, float wc)
{
	return (float)(-0.25+0.00191*ks-1.36E-06*pow(ks,2)+0.01665*km-
		0.000173*pow(km,2)-0.00856*km*(log(kzr)/log(10))+0.0201*kj-
		0.000335*pow(kj,2)+0.00211*xw-0.0000108*pow(xw,2));
}

float COilShotForecastView::fnprc2(float ks, float km, float kj, float xw, float jbj, float kzr, float yh, float yc, float wh, float wc)
{
	return (float)(fnprc1(ks,km,kj,xw,jbj,kzr,yh,yc,wh,wc)-2*0.000887*
		xw*(log(kzr)/log(10))+0.5*(log(kzr)/log(10))+0.512*yc-
		0.253*pow(yc,2)+0.3315*wc-0.168*pow(wc,2)-0.00963*yh);
}

float COilShotForecastView::fnprc(float ks, float km, float kj, float xw, float jbj, float kzr, float yh, float yc, float wh, float wc)
{
	return (float)(fnprc2(ks,km,kj,xw,jbj,kzr,yh,yc,wh,wc)+
		0.000193*pow(yh,2)-0.000841*wh+7.14E-07*pow(wh,2)+
		0.406*kzr-0.135*pow(kzr,2)-0.0009736*jbj+2.43E-06*
		pow(jbj,2));
}

BOOL COilShotForecastView::DataOK()
{
	CMainFrame*	wnd = (CMainFrame*)AfxGetMainWnd();
	if(wnd->m_structBDTTable.bState == FALSE)
	{
		MessageBox("请输入源数据 !","工程信息");
		return FALSE;
	}
	if(wnd->m_structTTPResult.bState == FALSE)
	{
		MessageBox("请先进行射孔参数校正 !","工程信息");
		return FALSE;
	}
	UpdateData();
	if(m_fAngle<0 || m_fAngle>90)
	{
		MessageBox("请重新输入井斜/地层倾角 !","工程信息");
		UpdateData(FALSE);
		return FALSE;
	}
	UpdateData(FALSE);
	if(wnd->m_structBDTTable.fShotLayerPly == 0)
	{
		MessageBox("请输入射孔段厚度 !","工程信息");
		return FALSE;
	}
	if(wnd->m_structBDTTable.fWellRadius == 0)
	{
		MessageBox("请输入井筒半径 !","工程信息");
		return FALSE;
	}
	if(wnd->m_structBDTTable.fStratumAverPress == 0)
	{
		MessageBox("请输入地层压力 !","工程信息");
		return FALSE;
	}
	if(wnd->m_structBDTTable.fStratumFilterPercent == 0)
	{
		MessageBox("请输入地层渗透率 !","工程信息");
		return FALSE;
	}
	if(wnd->m_structBDTTable.fProducePressDiff == 0)
	{
		MessageBox("请输入估计生产压差 !","工程信息");
		return FALSE;
	}
	if(wnd->m_structBDTTable.fDrillPolluteDepth == 0)
	{
		MessageBox("请输入污染深度 !","工程信息");
		return FALSE;
	}
	if(wnd->m_structBDTTable.fRevealOilRadius == 0)
	{
		MessageBox("请输入泄油半径 !","工程信息");
		return FALSE;
	}
	if(wnd->m_structBDTTable.fStratumTemp == 0)
	{
		MessageBox("请输入地层温度 !","工程信息");
		return FALSE;
	}
	if(wnd->m_structBDTTable.fStratumHolePercent == 0)
	{
		MessageBox("请输入地层孔隙度 !","工程信息");
		return FALSE;
	}
	if(wnd->m_structBDTTable.fStratumHeterosphere == 0)
	{
		MessageBox("请输入地层非均质性 !","工程信息");
		return FALSE;
	}
	if(wnd->m_structBDTTable.fStratumOilStiff == 0)
	{
		MessageBox("请输入地层原油粘度 !","工程信息");
		return FALSE;
	}
	if(wnd->m_structBDTTable.fDrillPollutePercent == 0)
	{
		MessageBox("请输入污染程度 !","工程信息");
		return FALSE;
	}
	if(wnd->m_structBDTTable.fStratumCentralDepth == 0)
	{
		MessageBox("请输入储层中部深度 !","工程信息");
		return FALSE;
	}

⌨️ 快捷键说明

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