#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& 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 m_mapParas; // 出错信息 QString m_sLastError; };