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

82 lines
2.5 KiB
C

#pragma once
#include "Defines.h"
#include "mAlgPseudo_global.h"
// 常规拟压力计算载体,单例模式,在模型处理解释过程调用(属于用的部分)
// 由iAlgPseuCaller进行调用
class M_ALGPSEUDO_EXPORT iAlgPseuConvertCommon
{
public:
iAlgPseuConvertCommon();
/// @brief 计算拟压力相关
/// @param vvec长度为4对应四列数据
/// @note VecDouble vecP = vvec[0]
/// VecDouble vecPs = vvec[1]
/// VecDouble vecZg = vvec[2]
/// VecDouble vecMug = vvec[3]
static bool initPs(VVecDouble vvec);
#ifdef _SCAN_OLD_CODES_
// 系统内部自动选用不同的方法
#else
// 分别于20260123和20260819把函数改为直接进行压力/拟压力查表+插值方法
// 更为实用+有效
#endif
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);
///////////////////////////////////////////////////////////////////////////////////////////
#ifdef _SCAN_OLD_CODES_
////////////////////////////////////////////////////////////////////////////////
// 回归曲线法
// 压力->拟压力,精度比湛江方法高
static bool pToPs_Cv(double p, double &ps);
// 拟压力->压力,精度比湛江方法低,暂未调用
static bool psToP_Cv(double ps, double &p);
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
// 湛江方法
// 压力->拟压力,精度不如回归曲线法,暂未调用
static bool pToPs_Zj(double p, double &ps);
// 拟压力->压力,精度好于回归曲线法
static bool psToP_Zj(double ps, double &p);
////////////////////////////////////////////////////////////////////////////////
#endif
private:
// 用压力算拟压力的系数
static VecDouble m_vecCoefsPtoPS;
// 用拟压力算压力的系数
static VecDouble m_vecCoefsPStoP;
// job里的三组数据
static VecDouble m_vecP;
static VecDouble m_vecPs;
static VecDouble m_vecZg;
static VecDouble m_vecMug;
};