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.
|
|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
|
|
|
|
#include "Defines.h"
|
|
|
|
|
|
#include "mAlgDiffusion_global.h"
|
|
|
|
|
|
|
|
|
|
|
|
// Diffusion相关小算法的基类
|
|
|
|
|
|
class M_DIFFUSION_EXPORT iAlgDiffusionBase
|
|
|
|
|
|
{
|
|
|
|
|
|
public:
|
|
|
|
|
|
|
|
|
|
|
|
iAlgDiffusionBase();
|
|
|
|
|
|
~iAlgDiffusionBase();
|
|
|
|
|
|
|
|
|
|
|
|
// 统一的初始化函数
|
|
|
|
|
|
virtual void init();
|
|
|
|
|
|
|
|
|
|
|
|
// 设置内部的算法类型
|
|
|
|
|
|
// 为了统一,此处用了整形,各子类内部转换为enum
|
|
|
|
|
|
void setSubType(int n);
|
|
|
|
|
|
|
|
|
|
|
|
// 传值函数
|
|
|
|
|
|
void setParaValues(QMap<QString, QVariant>& map, \
|
|
|
|
|
|
QStringList listTagParas = QStringList(), \
|
|
|
|
|
|
QStringList listTagModels = QStringList());
|
|
|
|
|
|
|
|
|
|
|
|
// 计算函数(调用算法)
|
|
|
|
|
|
virtual bool cal(VecDouble vecX, VecDouble& vecY1, VecDouble& vecY2);
|
|
|
|
|
|
virtual bool cal(double dIn, double& dOut1, double& dOut2);
|
|
|
|
|
|
virtual bool cal(VecDouble vecX, VecDouble& vecY);
|
|
|
|
|
|
virtual bool cal(double dIn, double& dOut);
|
|
|
|
|
|
|
|
|
|
|
|
// 获取错误信息
|
|
|
|
|
|
QString getLastError();
|
|
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
|
|
|
|
|
|
|
// 把参数Map解析为成员变量
|
|
|
|
|
|
virtual bool parseParas2Members(QStringList& listTagParas, QStringList& listTagModels);
|
|
|
|
|
|
bool _parseParas(QStringList& listParas, VecDouble& vecValues);
|
|
|
|
|
|
|
|
|
|
|
|
// 输入(参数+输入)正确性验证
|
|
|
|
|
|
virtual bool checkParas();
|
|
|
|
|
|
virtual bool checkInputs();
|
|
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
|
|
|
|
|
|
|
// 当前的相态(可以是组合也可以是单相,具体参见PvtFluidType)
|
|
|
|
|
|
int m_nPhaseTypes;
|
|
|
|
|
|
|
|
|
|
|
|
// 内部的算法类型,为了统一,此处用了整形,各子类内部转换为enum
|
|
|
|
|
|
int m_nSubType;
|
|
|
|
|
|
|
|
|
|
|
|
// 各个参数(需要外界传入)的Key值
|
|
|
|
|
|
QMap<QString, QVariant> m_mapParas;
|
|
|
|
|
|
|
|
|
|
|
|
// 出错信息
|
|
|
|
|
|
QString m_sLastError;
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|