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/iPseudoCCal.h

76 lines
2.0 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 "mAlgPseudo_global.h"
class iPseudoCInfo;
// 根据组分计算(源自徐泽轩)
// 三区拟压力计算过程实现
class M_ALGPSEUDO_EXPORT iPseudoCCal : public QObject
{
Q_OBJECT
public:
/// @param mapPsInfos,拟合公式信息体(输入)
/// @param mapOthers,其它参数(输入)
explicit iPseudoCCal(QMap<QString, iPseudoCInfo*>& mapPsInfos, \
QMap<QString, double>& mapOthers);
~iPseudoCCal();
/// @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 fP);
double calPsByOne(QMap<QString, double>& map);
double calPsByTwo(QMap<QString, double>& map);
double calPsByThree(QMap<QString, double>& map);
signals:
private:
QMap<QString, iPseudoCInfo*> 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;
};