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/nmNum/nmCalculation/nmCalculationUtils.h

67 lines
2.8 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.

#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