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

📄 oilshotparaselectview.cpp

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

#include "stdafx.h"
#include "CVenus.h"
#include "MainFrm.h"
#include "OilShotParaSelectView.h"
#include	"ChildFrm.h"

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

/////////////////////////////////////////////////////////////////////////////
// COilShotParaSelectView

IMPLEMENT_DYNCREATE(COilShotParaSelectView, CFormView)

COilShotParaSelectView::COilShotParaSelectView()
	: CFormView(COilShotParaSelectView::IDD)
{
	//{{AFX_DATA_INIT(COilShotParaSelectView)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
	m_iSelected = 0;
}

COilShotParaSelectView::~COilShotParaSelectView()
{
}

void COilShotParaSelectView::DoDataExchange(CDataExchange* pDX)
{
	CFormView::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(COilShotParaSelectView)
	DDX_Control(pDX, IDC_LIST_SHOTPARASELECT_SELECTED, m_ctrlSelected);
	DDX_Control(pDX, IDC_LIST_SHOTPARASELECT_LIST, m_ctrlList);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(COilShotParaSelectView, CFormView)
	ON_WM_CONTEXTMENU()
	//{{AFX_MSG_MAP(COilShotParaSelectView)
	ON_WM_CREATE()
	ON_NOTIFY(NM_CLICK, IDC_LIST_SHOTPARASELECT_LIST, OnClickListShotparaselectList)
	ON_COMMAND(ID_SPD_CACL, OnSpdCacl)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// COilShotParaSelectView diagnostics

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

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

/////////////////////////////////////////////////////////////////////////////
// COilShotParaSelectView message handlers

BOOL COilShotParaSelectView::DataOK()
{
	CMainFrame*	wnd = (CMainFrame*)AfxGetMainWnd();

	if(wnd->m_structBDTTable.bState == FALSE)
	{
		MessageBox("请输入原始数据 !","工程信息");
		return FALSE;
	}
	CString cstrTemp;
	cstrTemp = wnd->m_structBDTTable.strOilResCannulaModel;
	if(cstrTemp.IsEmpty())
	{
		MessageBox("请输入油层套管型号 !","工程信息");
		return FALSE;
	}
	if(wnd->m_structBDTTable.fCannulaPressResistance == 0)
	{
		MessageBox("请输入套管抗挤压力 !","工程信息");
		return FALSE;
	}
	if(wnd->m_structBDTTable.fOilResCannulaDiameter == 0)
	{
		MessageBox("请输入油层套管外径 !","工程信息");
		return FALSE;
	}
	if(wnd->m_structBDTTable.fOilResCannulaCliffDeep == 0)
	{
		MessageBox("请输入油层套管壁厚 !","工程信息");
		return FALSE;
	}
	if(wnd->m_structBDTTable.fStratumHolePercent == 0)
	{
		MessageBox("请输入孔隙度 !","工程信息");
		return FALSE;
	}
	if(wnd->m_structBDTTable.fStratumHeterosphere == 0)
	{
		MessageBox("请输入地层非均质性 !","工程信息");//Kz/Kr
		return FALSE;
	}
	if(wnd->m_structBDTTable.fWellRadius == 0)
	{
		MessageBox("请输入井筒半径 !","工程信息");
		return FALSE;
	}
	if(wnd->m_structBDTTable.fDrillPolluteDepth == 0)
	{
		MessageBox("请输入污染深度 !","工程信息");
		return FALSE;
	}
	if(wnd->m_structBDTTable.fDrillPollutePercent == 0)
	{
		MessageBox("请输入污染程度 !","工程信息");
		return FALSE;
	}
	return TRUE;
}

float COilShotParaSelectView::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 COilShotParaSelectView::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 COilShotParaSelectView::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.00841*0+7.14*pow(10,-7)*pow(0,2)+0.406*kzr-0.135*pow(kzr,2)-
		0.0009736*jbj+2.43*pow(10,-6)*pow(jbj,2));
}

float COilShotParaSelectView::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.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 COilShotParaSelectView::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 COilShotParaSelectView::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.4*pow(10,-8)*pow(0,2)+0.406*kzr-
		0.135*pow(kzr,2)-0.0009736*jbj+2.43*pow(10,-6)*
		pow(jbj,2));
}

float COilShotParaSelectView::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.23*pow(10,-6)*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 COilShotParaSelectView::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 COilShotParaSelectView::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.05
		*pow(10,-7)*pow(wh,2)+0.319*kzr-0.103*pow(kzr,2)-0.0009512*jbj+
		2.378*pow(10,-6)*pow(jbj,2));
}

float COilShotParaSelectView::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.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 COilShotParaSelectView::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 COilShotParaSelectView::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.14*pow(10,-7)*pow(wh,2)+0.406*kzr-
		0.135*pow(kzr,2)-0.0009736*jbj+2.43*pow(10,-6)*pow(jbj,2));
}


void COilShotParaSelectView::ShotparaselectLoad() 
{
	// TODO: Add your control notification handler code here
	CMainFrame*	wnd = (CMainFrame*)AfxGetMainWnd();

	if(wnd->m_structShotParaBase.bState == FALSE)
	{
		MessageBox("还未进行计算 !","工程信息");
		return;
	}

	UpdateData(TRUE);
	for(int i=0;i<8;i++)
	{
		m_ctrlList.DeleteColumn (0);
		m_ctrlSelected.DeleteColumn (0);
	}
	m_ctrlList.InsertColumn (0,"序号",LVCFMT_LEFT ,40,0);
	m_ctrlList.InsertColumn (1,"产率比",LVCFMT_LEFT ,60,1);
	m_ctrlList.InsertColumn (2,"型号",LVCFMT_LEFT ,200,2);
	m_ctrlList.InsertColumn (3,"相位角度",LVCFMT_LEFT ,100,3);
	m_ctrlList.InsertColumn (4,"孔密",LVCFMT_LEFT ,60,4);
	m_ctrlList.InsertColumn (5,"穿深",LVCFMT_LEFT ,60,5);
	m_ctrlList.InsertColumn (6,"孔径",LVCFMT_LEFT ,60,6);
	m_ctrlList.InsertColumn (7,"套管强度降低系数(%)",LVCFMT_LEFT ,100,7);
	m_ctrlSelected.InsertColumn (0,"序号",LVCFMT_LEFT ,40,0);
	m_ctrlSelected.InsertColumn (1,"产率比",LVCFMT_LEFT ,60,1);
	m_ctrlSelected.InsertColumn (2,"型号",LVCFMT_LEFT ,200,2);
	m_ctrlSelected.InsertColumn (3,"相位角度",LVCFMT_LEFT ,100,3);
	m_ctrlSelected.InsertColumn (4,"孔密",LVCFMT_LEFT ,60,4);
	m_ctrlSelected.InsertColumn (5,"穿深",LVCFMT_LEFT ,60,5);
	m_ctrlSelected.InsertColumn (6,"孔径",LVCFMT_LEFT ,60,6);
	m_ctrlSelected.InsertColumn (7,"套管强度降低系数(%)",LVCFMT_LEFT ,100,7);

	m_ctrlList.DeleteAllItems ();
	m_ctrlSelected.DeleteAllItems ();
	LVITEM pitem;
	pitem.mask=LVIF_TEXT;
	pitem.state=0;
	pitem.stateMask=0;
	pitem.iSubItem=0;
	pitem.pszText="";

	char strTemp[20];
	for(i=0;i<wnd->m_structShotParaBase.iNum;i++)
	{
		pitem.iItem=i;
		m_ctrlList.InsertItem (&pitem);
		sprintf(strTemp,"%d",i+1);
		m_ctrlList.SetItemText (i,0,strTemp);
		sprintf(strTemp,"%2.4f",wnd->m_structShotParaSelect[i].fProPer );
		m_ctrlList.SetItemText (i,1,strTemp);
		m_ctrlList.SetItemText (i,2,wnd->m_structShotParaSelect[i].strModel );
		sprintf(strTemp,"%4.1f",wnd->m_structShotParaSelect[i].fAngle );
		m_ctrlList.SetItemText (i,3,strTemp);
		sprintf(strTemp,"%4.0f",wnd->m_structShotParaSelect[i].fShotDen );
		m_ctrlList.SetItemText (i,4,strTemp);
		sprintf(strTemp,"%5.2f",wnd->m_structShotParaSelect[i].fShotDepth );
		m_ctrlList.SetItemText (i,5,strTemp);
		sprintf(strTemp,"%3.2f",wnd->m_structShotParaSelect[i].fDiameter );
		m_ctrlList.SetItemText (i,6,strTemp);
		sprintf(strTemp,"%5.2f",wnd->m_structShotParaSelect[i].fPara );
		m_ctrlList.SetItemText (i,7,strTemp);
	}
	UpdateData(FALSE);
}

int COilShotParaSelectView::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
	if (CFormView::OnCreate(lpCreateStruct) == -1)
		return -1;
	
	// TODO: Add your specialized creation code here
	CMainFrame*	wnd = (CMainFrame*)AfxGetMainWnd();
/*	CString cstrProjectName;
	CSpdDoc* pDoc = (CSpdDoc*)GetDocument();
	cstrProjectName = pDoc->m_cstrTitle +" - [油井射孔参数优化设计]";
	pDoc->SetTitle (cstrProjectName);
*/	
	GetParentFrame()->SetWindowText(_T("油井射孔参数优化设计"));

	if(wnd->m_structShotParaBase.iNum<=0)
		wnd->m_structShotParaBase.iNum = 383;
	int iTemp;
	for(iTemp=0;iTemp<wnd->m_structShotParaBase.iNum;iTemp++)

⌨️ 快捷键说明

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