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/mAlgDiffusion/iAlgDiffusionBase.h

61 lines
1.6 KiB
C

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