|
|
#ifndef NMCALCULATIONUTILS_H
|
|
|
#define NMCALCULATIONUTILS_H
|
|
|
|
|
|
#include <QString>
|
|
|
#include <QPointF>
|
|
|
#include <QVector>
|
|
|
#include <QAtomicInt>
|
|
|
#include "nmCalculation_global.h"
|
|
|
#include "nmCalculationDefine.h"
|
|
|
#include <iostream>
|
|
|
|
|
|
class QMutex;
|
|
|
|
|
|
class NMCALCULATION_EXPORT nmCalculationUtils {
|
|
|
public:
|
|
|
nmCalculationUtils();
|
|
|
|
|
|
static bool copyFileToDir(QString filePath, QString destDir);
|
|
|
static bool createDirectoryIfNotExists(QString directoryPath);
|
|
|
static bool copyFile(const std::string& sourcePath, const std::string& destinationPath);
|
|
|
static bool removeDirectory(const QString &dirPath);
|
|
|
static bool writeFile(const QStringList& content, const QString &filePath);
|
|
|
static QStringList readFile(const QString & filePath);
|
|
|
|
|
|
/** @brief 返回自动拟合运行工作区根目录:系统临时目录/WTAI/AutoFit。 */
|
|
|
static QString autoFitTemporaryRootPath();
|
|
|
|
|
|
/** @brief 创建一个仅供单次自动拟合使用的唯一工作目录。 */
|
|
|
static QString createAutoFitTemporaryDirectory();
|
|
|
|
|
|
/** @brief 仅删除由 createAutoFitTemporaryDirectory() 创建的直属子目录。 */
|
|
|
static bool removeAutoFitTemporaryDirectory(const QString& directoryPath);
|
|
|
|
|
|
/** @brief 清理超过指定小时数的异常退出残留目录。 */
|
|
|
static void cleanupStaleAutoFitTemporaryDirectories(int maximumAgeHours = 72);
|
|
|
|
|
|
/** @brief 获取串行保护 HX_NWTM.dll 全部入口的进程级互斥锁。 */
|
|
|
static QMutex* getHxNwtmDllMutex();
|
|
|
|
|
|
/** @brief 删除 HX_NWTM_GRID 在当前工作目录生成的调试 CSV。 */
|
|
|
static void cleanupPebiGridDebugFiles();
|
|
|
|
|
|
/**
|
|
|
* @brief 将数据层使用的毫达西转换为PEBI求解器使用的达西。
|
|
|
* @param dPermeabilityMilliDarcy 渗透率,单位为mD。
|
|
|
* @return 渗透率,单位为D。
|
|
|
*/
|
|
|
static double milliDarcyToDarcy(double dPermeabilityMilliDarcy);
|
|
|
|
|
|
// 调用求解器Kriging接口,对targetPoints中的坐标依次进行属性插值.
|
|
|
// measurementPoints与measurementValues按下标一一对应.
|
|
|
// 成功时outputValues与targetPoints数量相同且顺序一致;失败时清空outputValues.
|
|
|
static bool calculateKriging(const QVector<QPointF>& targetPoints,
|
|
|
const QVector<QPointF>& measurementPoints,
|
|
|
const QVector<double>& measurementValues,
|
|
|
double nugget,
|
|
|
double sill,
|
|
|
double range,
|
|
|
int model,
|
|
|
const QString& licensePath,
|
|
|
QVector<double>& outputValues,
|
|
|
QString* errorMessage = 0,
|
|
|
const QAtomicInt* pCancelRequested = 0);
|
|
|
};
|
|
|
|
|
|
#endif // NMCALCULATIONUTILS_H
|