You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
nmWTAI-Platform/Include/mAlg/mAlgDefines/iParaManager.h.bak

162 lines
4.1 KiB
C

#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;
};