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

75 lines
2.2 KiB
C

#pragma once
#include "Defines.h"
#include "mAlgPseudo_global.h"
class iAlgPseuMethodCompInfo;
class zxAlgRegress;
// 组分拟压力计算载体,单例模式,在模型处理解释过程调用(属于用的部分)
// 由iAlgPseuCaller进行调用
class M_ALGPSEUDO_EXPORT iAlgPseuConvertComp
{
public:
iAlgPseuConvertComp();
static bool initPs(const VVecDouble& vvec, \
const QMap<QString, iAlgPseuMethodCompInfo *>* pMap1, \
const QMap<QString, double>* pMap2);
// 系统内部自动选用不同的方法
static bool calP(double ps, double &p, int which = -1);
static bool calPS(double p, double &ps, int which = -1);
private:
///////////////////////////////////////////////////////////////////////////////////////////
// 拟合公式
// 计算“压力->拟压力”的回归曲线方程系数
// static bool fitPtoPS(bool isZero = true);
// // 计算“拟压力->压力”的回归曲线方程系数
static bool fitPStoP(bool isZero = false);
///////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
// 压力->拟压力
static bool pToPs_PsCFitting(double p, double &ps);
// 拟压力->压力
static bool psToP_PsCFitting(double ps, double &p);
// 20220317 增加新的方式,直接根据数据进行判断,看谁离得最近,则选取谁
static bool pToPs_Simple(double p, double &ps);
static bool psToP_Simple(double ps, double &p);
static bool _simple_find_xy(VecDouble* pVecX, VecDouble* pVecY, double x, double &y);
static double _linear_value_at(double x, double x1, double x2, double y1, double y2);
////////////////////////////////////////////////////////////////////////////////
private:
static QMap<QString, iAlgPseuMethodCompInfo*> m_mapPsInfos;
// 用压力算拟压力的系数
static VecDouble m_vecCoefsPtoPS;
// 用拟压力算压力的系数
static VecDouble m_vecCoefsPStoP;
// job里的三组数据
static VecDouble m_vecP;
static VecDouble m_vecPs;
// 这是为了方便调用,加快速度
static QMap<int, zxAlgRegress*> m_mapAlgs;
};