#ifndef NMPEBISTATICPROPERTYCALCULATOR_H #define NMPEBISTATICPROPERTYCALCULATOR_H #include "nmCalculation_global.h" #include "nmPebiStaticPropertyValues.h" #include "nmPropertyInterpolationData.h" #include #include #include #include enum nmPebiStaticPropertyCalculationStatus { NM_PebiStaticPropertyCalculation_Succeeded = 0, NM_PebiStaticPropertyCalculation_Cancelled, NM_PebiStaticPropertyCalculation_Failed }; /** @brief 一次静态属性计算独占的不可变值输入。 */ struct NMCALCULATION_EXPORT nmPebiStaticPropertyCalculationInput { nmPebiStaticPropertyCalculationInput(); bool m_bCaptured; ///< 全部字段已经在 DataManager 所属线程完成冻结。 double m_dReferencePermeabilityMilliDarcy; double m_dReferencePorosity; double m_dReferenceThicknessMeters; QVector m_vecDataSets; QString m_sLicensePath; }; /** * @brief 计算按原始 PEBI 求解单元顺序排列的 k/phi/h 静态属性。 * * 服务只解释旧插值键 k、phi、h,不读取 DataManager、DLL 网格结构、VTK * 或界面对象。失败和取消都不会向调用方提交部分数组。 */ class NMCALCULATION_EXPORT nmPebiStaticPropertyCalculator { public: static nmPebiStaticPropertyCalculationStatus calculate( const QVector& vecOriginalCellPropertyLocations, const nmPebiStaticPropertyCalculationInput& oInput, nmPebiStaticPropertyValues& oOutput, QString* pErrorMessage = NULL, const QAtomicInt* pCancelRequested = NULL); private: nmPebiStaticPropertyCalculator(); }; #endif // NMPEBISTATICPROPERTYCALCULATOR_H