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

73 lines
2.1 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 iPseudo3Info;
// 三区拟压力计算过程实现
class M_ALGPSEUDO_EXPORT iPseudo3Cal : public QObject
{
Q_OBJECT
public:
/// @param mapPsInfos,拟合公式信息体(输入)
/// @param mapOthers,其它参数如GOR等(输入)
explicit iPseudo3Cal(QMap<QString, iPseudo3Info*>& mapPsInfos, \
QMap<QString, double>& mapOthers/*, \
bool bModelMode = false*/);
~iPseudo3Cal();
/// @brief 最终的计算函数
/// @param vecP,压力(输入)
/// @param vecPs,三区拟压力(输出)
bool calPseudo3(VecDouble& vecP, VecDouble& vecPs);
/// @brief 最终的计算函数
/// @param fP,压力(输入)
/// @param fPs,三区拟压力(输出)
bool calPseudo3(double fP, double& fPs);
// /// @brief 计算函数,这是在处理解释过程中的调用
// /// @param p,压力(输入)
// /// @param ps,三区拟压力(输出)
// bool pToPs_Ps3Fitting(double p, double &ps);
private:
// 基本拟合公式
void parseParas(QMap<QString, double>& mapOthers);
// 先根据p计算各个拟合数据
bool calBaseFitRs(double fP, QMap<QString, double>& map);
// 积分
double integral(double min, double max, int which, QMap<QString, double>& map, int nLoop = 1000);
// 1-2-3区拟压力计算
double calPsByOne(QMap<QString, double>& map);
double calPsByTwo(QMap<QString, double>& map);
double calPsByThree(QMap<QString, double>& map);
// 最后的处理解释过程中应用,是分段还是整体
// void parseParas(QMap<QString, double>& mapOthers);
signals:
private:
QMap<QString, iPseudo3Info*> m_mapPsInfos;
double m_dGOR;//用户输入的GOR数值
double m_dPP;//临界流动压力pp目前为用户输入后续改进算法可自动计算
double m_dPD;// 露点压力pd用户输入
double m_dPi;//原始地层压力pi用户输入
double m_dA;
double m_dKrgMax;
// bool m_bModelMode; //是否最后的处理解释过程中应用
// bool m_bWholeFitting; //是否分段进行拟合处理
};