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

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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