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/mAlgPseudo/iAlgPseuMethodComp.h

81 lines
2.3 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 "iAlgPseuMethodBase.h"
#include "mAlgPseudo_global.h"
class iAlgPseuMethodCompInfo;
// 这是在PVT/PSEU等方法拟压力相关的准备过程中涉及的算法组分计算源自徐泽轩
class M_ALGPSEUDO_EXPORT iAlgPseuMethodComp : public iAlgPseuMethodBase
{
public:
iAlgPseuMethodComp();
~iAlgPseuMethodComp();
// 绑定成员变量,这个类里没用
virtual void bindMembers();
// 虚函数,计算函数,这个类里没用
virtual bool cal(VecDouble vecIns, VecDouble& vecOuts);
//关键计算函数,其实只是调用入口
bool calPs(QMap<QString, iAlgPseuMethodCompInfo*> &mapPsInfos, \
QMap<QString, double> &mapOthers, \
VecDouble &vecP, VecDouble &vecPs);
/// @brief 最终的计算函数
/// @param vecP,压力(输入)
/// @param vecPs,三区拟压力(输出)
bool calPseudoC(VecDouble& vecP, VecDouble& vecPs);
/// @brief 最终的计算函数
/// @param dP,压力(输入)
/// @param dPs,三区拟压力(输出)
bool calPseudoC(double dP, double& dPs);//徐泽轩
bool calPseudoC_m2(double dP, double& dPs);//baiwp
private:
// 基本拟合公式
void parseParas(QMap<QString, double>& mapOthers);
// 先根据p计算各个拟合数据
bool calBaseFitRs(double dP, QMap<QString, double>& map);
// 积分,徐泽轩
double simpsonComplex(double a, double b, int which, \
double epsilon = 0.01);
// 积分baiwp
double integral(double min, double max, int which, \
QMap<QString, double>& map, int nLoop = 1000);
// 1-2-3区拟压力计算
double calPsBy(int which, double dP);
double calPsByOne(QMap<QString, double>& map);
double calPsByTwo(QMap<QString, double>& map);
double calPsByThree(QMap<QString, double>& map);
signals:
private:
QMap<QString, iAlgPseuMethodCompInfo*> m_mapPsInfos;
double m_dPP;//临界流动压力pp目前为用户输入后续改进算法可自动计算
double m_dPD;// 露点压力pd用户输入
double m_dKrgSwi;
double m_dPwf;
double m_dSplitP;
// 临时变量
VecDouble m_vecTempPs;
VecDouble m_vecTempPs1;
VecDouble m_vecTempPs2;
VecDouble m_vecTempPs3;
};