|
|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
|
|
|
|
#include "Defines.h"
|
|
|
|
|
|
#include "mAlgDefines.h"
|
|
|
|
|
|
#include "mAlgDefines_global.h"
|
|
|
|
|
|
#include "mAlgMatrix.h"
|
|
|
|
|
|
|
|
|
|
|
|
class iModelOption;
|
|
|
|
|
|
class iDynSkinInfo;
|
|
|
|
|
|
|
|
|
|
|
|
// 参数管理类
|
|
|
|
|
|
class M_ALG_DEFINES_EXPORT iParaManager
|
|
|
|
|
|
{
|
|
|
|
|
|
public:
|
|
|
|
|
|
|
|
|
|
|
|
iParaManager();
|
|
|
|
|
|
~iParaManager();
|
|
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
|
|
|
|
|
|
// 井型/油藏类型/边界类型/Assist
|
|
|
|
|
|
void setModelOption(iModelOption* pModelOption);
|
|
|
|
|
|
iModelOption* getModelOption();
|
|
|
|
|
|
|
|
|
|
|
|
// 参数传递
|
|
|
|
|
|
void setParaMap(QMap<QString, double>& map);
|
|
|
|
|
|
|
|
|
|
|
|
void setParamUnitMap(QMap<QString, QString>& map);
|
|
|
|
|
|
bool getParamValueUnit(QString sPara, QString& sUnit);
|
|
|
|
|
|
|
|
|
|
|
|
void setParaValue(QString sPara, double d);
|
|
|
|
|
|
bool getParaValue(QString sPara , double& d);
|
|
|
|
|
|
bool getParaValues(QStringList listParas, QVector<double>& vecValue);
|
|
|
|
|
|
|
|
|
|
|
|
// 是否包括某个参数的数值
|
|
|
|
|
|
bool isParaContained(QString sPara);
|
|
|
|
|
|
|
|
|
|
|
|
// 参数特殊处理
|
|
|
|
|
|
virtual void adjustParaName(QString& sPara);
|
|
|
|
|
|
virtual void adjustParaName_K(QString& sPara);
|
|
|
|
|
|
virtual void adjustParaValue(QString sPara, double& d); //取完参数之后,允许再次调整
|
|
|
|
|
|
|
|
|
|
|
|
// 一维数组
|
|
|
|
|
|
bool getParaArrValue(QString sPara, VecDouble& vec);
|
|
|
|
|
|
void setParaArrValue(QString sPara, VecDouble vec);
|
|
|
|
|
|
|
|
|
|
|
|
// 二维数组
|
|
|
|
|
|
bool getParaArrArrValue(QString sPara, VVecDouble& vvec);
|
|
|
|
|
|
void setParaArrArrValue(QString sPara, VVecDouble vvec);
|
|
|
|
|
|
|
|
|
|
|
|
// 矩阵
|
|
|
|
|
|
bool getParaMatrixValue(QString sPara, WtaiMatrix& mat);
|
|
|
|
|
|
void setParaMatrixValue(QString sPara, WtaiMatrix mat);
|
|
|
|
|
|
bool getParaVecMatrixValue(QString sPara, QVector<WtaiMatrix>& vecMat);
|
|
|
|
|
|
void setParaVecMatrixValue(QString sPara, QVector<WtaiMatrix> vecMat);
|
|
|
|
|
|
|
|
|
|
|
|
// EndQ
|
|
|
|
|
|
void setEndQ(double dQ);
|
|
|
|
|
|
double getEndQ();
|
|
|
|
|
|
|
|
|
|
|
|
// 所有流量数值
|
|
|
|
|
|
void setAllQs(VecDouble& vec);
|
|
|
|
|
|
|
|
|
|
|
|
//清空数据(每运行一次都清空数据)主要是清空数组数据
|
|
|
|
|
|
void clearArrMap();
|
|
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
|
|
|
|
|
|
// 计算CD入口函数
|
|
|
|
|
|
virtual bool calCD();
|
|
|
|
|
|
virtual bool calCDCommon(double& A);
|
|
|
|
|
|
bool calCDDualPro(double& A);
|
|
|
|
|
|
bool calCDDualPer(double& A);
|
|
|
|
|
|
bool calCDMedComp(double& A);
|
|
|
|
|
|
bool calCDTLayCrosComp(double& A);
|
|
|
|
|
|
bool calCDTHmgenWt(double& A);
|
|
|
|
|
|
|
|
|
|
|
|
// 参数计算入口函数
|
|
|
|
|
|
virtual bool calParam();
|
|
|
|
|
|
|
|
|
|
|
|
virtual bool calTDIM();
|
|
|
|
|
|
virtual bool calTDIM_Wxd();
|
|
|
|
|
|
virtual bool calPDIM();
|
|
|
|
|
|
virtual bool calPDIM_Wxd();
|
|
|
|
|
|
virtual bool calRcIM();
|
|
|
|
|
|
virtual bool calRc();
|
|
|
|
|
|
|
|
|
|
|
|
// 普通井的量纲转换需要变化
|
|
|
|
|
|
virtual bool calTDIMCommon(double& A);
|
|
|
|
|
|
bool calTDIMDualPro(double& A);
|
|
|
|
|
|
bool calTDIMDualPer(double& A);
|
|
|
|
|
|
bool calTDIMMedComp(double& A);
|
|
|
|
|
|
bool calTDIMTLayCrosComp(double& A);
|
|
|
|
|
|
bool calTDIMTHmgenWt(double& A);
|
|
|
|
|
|
|
|
|
|
|
|
virtual bool calPDIMCommon(double& A);
|
|
|
|
|
|
bool calPDIMDualPer(double& A);
|
|
|
|
|
|
bool calPDIMMedComp(double& A);
|
|
|
|
|
|
bool calPDIMTLayCrosComp(double& A);
|
|
|
|
|
|
bool calPHYDIM(double& A);
|
|
|
|
|
|
|
|
|
|
|
|
// 数值解
|
|
|
|
|
|
bool calyD();
|
|
|
|
|
|
|
|
|
|
|
|
bool findParam(QString sPara, double &d);
|
|
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
|
|
|
|
|
|
// 是否启用混合黏度
|
|
|
|
|
|
void setEnableMux(bool b);
|
|
|
|
|
|
bool getEnableMux();
|
|
|
|
|
|
|
|
|
|
|
|
// 允许在计算之后,对结果进行个别计算或调整
|
|
|
|
|
|
virtual void adjustParaResults();
|
|
|
|
|
|
|
|
|
|
|
|
// 增加对于变表皮的处理
|
|
|
|
|
|
void setDynSkinInfo(iDynSkinInfo* p);
|
|
|
|
|
|
|
|
|
|
|
|
// 当前是否正在获取动态的表皮模式(开关)
|
|
|
|
|
|
// 只有在计算历史压力曲线时,才设置为true
|
|
|
|
|
|
void setHistRunning(bool b);
|
|
|
|
|
|
// 当前操作的流动段索引,为了获取前一流量
|
|
|
|
|
|
void setHistSegIndex(int n);
|
|
|
|
|
|
|
|
|
|
|
|
#ifdef QT_DEBUG
|
|
|
|
|
|
void assertPara(QString sPara, bool bSetValue);
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
QString getLastError();
|
|
|
|
|
|
void resetError();
|
|
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
|
|
|
|
|
|
// 单个参数map
|
|
|
|
|
|
QMap<QString, double> m_mapParas;
|
|
|
|
|
|
QMap<QString, QString> m_mapParasUnit;
|
|
|
|
|
|
|
|
|
|
|
|
// 参数对应数组
|
|
|
|
|
|
QMap<QString, VecDouble> m_mapArrParas;
|
|
|
|
|
|
|
|
|
|
|
|
// 二维数组
|
|
|
|
|
|
QMap<QString, VVecDouble> m_mapArrArrParas;
|
|
|
|
|
|
|
|
|
|
|
|
QMap<QString, WtaiMatrix >m_mapMatrixParas;
|
|
|
|
|
|
QMap<QString, QVector<WtaiMatrix> >m_mapVecMatrixParas;
|
|
|
|
|
|
|
|
|
|
|
|
//黏度是否启用混合黏度
|
|
|
|
|
|
bool m_bEnableMux;
|
|
|
|
|
|
|
|
|
|
|
|
double m_dEndQ;
|
|
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
|
|
|
|
|
|
|
iModelOption* m_pModelOption;
|
|
|
|
|
|
|
|
|
|
|
|
// 变表皮
|
|
|
|
|
|
iDynSkinInfo* m_pDynSkinInfo;
|
|
|
|
|
|
|
|
|
|
|
|
// 错误信息
|
|
|
|
|
|
QString m_sError;
|
|
|
|
|
|
};
|