Compare commits

...

9 Commits

@ -21,6 +21,8 @@ public:
bool meshGenPebi();
// 设置PEBI GridControl控制参数
void setGridControl(double gridControl);
// 清理单例中的网格输入输出数据
void clearGridData();
private:
// 边界

@ -446,6 +446,8 @@ class NM_DATA_EXPORT nmDataAnalyzeManager : public ZxDataObjectBin
void setUnstructuredGrid(vtkSmartPointer<vtkUnstructuredGrid> grid);
// 获取当前分析下的VTK网格对象
vtkSmartPointer<vtkUnstructuredGrid> getUnstructuredGrid() const;
// 清理当前分析下的VTK网格对象
void clearUnstructuredGrid();
// 获取当前分析下的VTK网格对象的深拷贝对象一般复制给m_pResultBaseGrid使用深拷贝防止场图污染网格
vtkSmartPointer<vtkUnstructuredGrid> getUnstructuredGridCopy() const;

@ -98,21 +98,21 @@ protected:
nmDataAttribute m_initialPressure; // 初始地层压力
nmDataAttribute m_permeability; // 渗透率
nmDataAttribute m_thickness; // 储层厚度
nmDataAttribute m_Miuo; // 流体粘度
nmDataAttribute m_Bo; // 体积系数
nmDataAttribute m_Miuo; // 流体粘度 (pvt参数中有)
nmDataAttribute m_Bo; // 体积系数 (pvt参数中有)
nmDataAttribute m_porosity; // 孔隙度
nmDataAttribute m_Ct; // 综合压缩系数
nmDataAttribute m_kxKy; // 各项性系数
nmDataAttribute m_kxKy; // 各项性系数 (求解器中没有用到)
nmDataAttribute m_Cf; // 岩石压缩系数
nmDataAttribute m_reservoirType; // 储层类型
nmDataAttribute m_transmissibility; // 传导率
nmDataAttribute m_reservoirType; // 储层类型 (求解器中没有用到)
nmDataAttribute m_transmissibility; // 传导率 (求解器中没有用到)
nmDataAttribute m_Soi; // 初始含油饱和度
nmDataAttribute m_Sgi; // 初始含气饱和度
nmDataAttribute m_Swi; // 初始含水饱和度
double m_dTempGasRe; //气藏温度
double m_dTempGasRe; //气藏温度 (求解器中没有用到)
NM_PHASE_TYPE m_ePhaseType; //多相流类型
static nmDataReservoir* s_instance;

@ -23,6 +23,7 @@ class NM_SUB_WND_EXPORT nmSubWndGrid : public iSubWndBaseFit {
// 成果保存加载
virtual bool loadRsts();
virtual bool saveRsts();
virtual bool onConfirmClosing();
public slots:
void updateGrid();

@ -1,10 +1,10 @@
#ifndef NMDELETECONFIRMATIONDLG_H
#define NMDELETECONFIRMATIONDLG_H
#include <QDialog>
#include "iDlgBase.h"
#include "nmSubWxs_global.h"
class NM_SUB_WXS_EXPORT nmDeleteConfirmationDlg : public QDialog
class NM_SUB_WXS_EXPORT nmDeleteConfirmationDlg : public iDlgBase
{
Q_OBJECT
public:

@ -1,10 +1,10 @@
#ifndef NMSWITCHOUTLINECONFIRMATIONDLG_H
#define NMSWITCHOUTLINECONFIRMATIONDLG_H
#include <QDialog>
#include "iDlgBase.h"
#include "nmSubWxs_global.h"
class NM_SUB_WXS_EXPORT nmSwitchOutlineConfirmationDlg : public QDialog
class NM_SUB_WXS_EXPORT nmSwitchOutlineConfirmationDlg : public iDlgBase
{
Q_OBJECT
public:

@ -1,7 +1,7 @@
#ifndef NMWXAUTOMATICFITTING_H
#define NMWXAUTOMATICFITTING_H
#include <QDialog>
#include "iDlgBase.h"
#include <QVBoxLayout>
#include <QHBoxLayout>
#include <QTableWidget>
@ -32,7 +32,7 @@ enum OptimizationAlgorithm {
ALGORITHM_GA = 1
};
class NM_SUB_WXS_EXPORT nmWxAutomaticFitting : public QDialog
class NM_SUB_WXS_EXPORT nmWxAutomaticFitting : public iDlgBase
{
Q_OBJECT

@ -1,7 +1,7 @@
#ifndef NMWXAUTOMATICFITTINGSTART_H
#define NMWXAUTOMATICFITTINGSTART_H
#include <QDialog>
#include "iDlgBase.h"
#include <QVBoxLayout>
#include <QHBoxLayout>
#include <QGridLayout>
@ -72,7 +72,7 @@ enum FittingAlgorithmType {
FITTING_ALGORITHM_GA = 1
};
class nmWxAutomaticfittingStart : public QDialog
class nmWxAutomaticfittingStart : public iDlgBase
{
Q_OBJECT

@ -1,7 +1,7 @@
#ifndef NMWXCHANGEANAL_H
#define NMWXCHANGEANAL_H
#include <QDialog>
#include "iDlgBase.h"
#include "nmSubWxs_global.h"
#include <QLabel>
#include <QComboBox>
@ -11,7 +11,7 @@
#include <QPushButton>
// 分析视图切换对话框
class NM_SUB_WXS_EXPORT nmWxChangeAnal : public QDialog
class NM_SUB_WXS_EXPORT nmWxChangeAnal : public iDlgBase
{
Q_OBJECT
public:

@ -2,7 +2,7 @@
#define NMWXDFN_H
#include "nmSubWxs_global.h"
#include <QDialog>
#include "iDlgBase.h"
#include <QTreeWidget>
#include <QCheckBox>
#include <QPushButton>
@ -10,7 +10,7 @@
#include "nmDataFracture.h"
// DFN初始页面
class NM_SUB_WXS_EXPORT nmWxDFN : public QDialog
class NM_SUB_WXS_EXPORT nmWxDFN : public iDlgBase
{
Q_OBJECT

@ -1,7 +1,7 @@
#ifndef NMWXDFNEXPORTDLG_H
#define NMWXDFNEXPORTDLG_H
#include <QDialog>
#include "iDlgBase.h"
QT_BEGIN_NAMESPACE
class QRadioButton;
@ -9,7 +9,7 @@ class QLineEdit;
class QPushButton;
QT_END_NAMESPACE
class nmWxDFNExportDlg : public QDialog
class nmWxDFNExportDlg : public iDlgBase
{
Q_OBJECT

@ -1,6 +1,6 @@
#pragma once
#include <QDialog>
#include "iDlgBase.h"
class QDoubleSpinBox;
class QComboBox;
@ -9,7 +9,7 @@ class QPushButton;
class nmGuiPlot;
class nmDataOutline;
class nmWxDFNGenerateDlg : public QDialog
class nmWxDFNGenerateDlg : public iDlgBase
{
Q_OBJECT
public:

@ -2,7 +2,7 @@
#define NMWXDFNLOADFROMFILE_H
#include "nmSubWxs_global.h"
#include <QDialog>
#include "iDlgBase.h"
#include <QGroupBox>
#include <QCheckBox>
#include <QLineEdit>
@ -20,7 +20,7 @@ struct DFNData {
};
// DFN从文件导入页面
class NM_SUB_WXS_EXPORT nmWxDFNLoadFromFile : public QDialog
class NM_SUB_WXS_EXPORT nmWxDFNLoadFromFile : public iDlgBase
{
Q_OBJECT
public:

@ -2,7 +2,7 @@
#define NMWXDISPLAYSETTINGS_H
#include "nmSubWxs_global.h" // 确保包含您的全局导出宏
#include <QDialog>
#include "iDlgBase.h"
#include <QTreeWidget>
#include <QTreeWidgetItem>
#include <QCheckBox>
@ -91,7 +91,7 @@ class CustomDisPlayTreeWidget : public QTreeWidget
* @brief nmWxDisplaySettings
*
*/
class NM_SUB_WXS_EXPORT nmWxDisplaySettings : public QDialog
class NM_SUB_WXS_EXPORT nmWxDisplaySettings : public iDlgBase
{
Q_OBJECT
public:

@ -1,7 +1,7 @@
#ifndef NMWXEDITWELLPLOT_H
#define NMWXEDITWELLPLOT_H
#include <QDialog>
#include "iDlgBase.h"
#include "nmSubWxs_global.h"
#include <QList>
@ -40,7 +40,7 @@ class nmGUIComponentComboBox;
// 编辑井控制器
class nmWellEditorController;
class NM_SUB_WXS_EXPORT nmWxEditWellPlot : public QDialog
class NM_SUB_WXS_EXPORT nmWxEditWellPlot : public iDlgBase
{
Q_OBJECT
public:

@ -1,7 +1,7 @@
#ifndef NMWXFORECAST_H
#define NMWXFORECAST_H
#include <QDialog>
#include "iDlgBase.h"
#include <QVBoxLayout>
#include <QHBoxLayout>
#include <QGridLayout>
@ -17,7 +17,7 @@
#include "nmGUIComponentLineEdit.h"
#include "nmDataAnalyzeManager.h"
class nmWxForecast : public QDialog
class nmWxForecast : public iDlgBase
{
Q_OBJECT
public:

@ -1,7 +1,7 @@
#ifndef NMWXGEOREFDLG_H
#define NMWXGEOREFDLG_H
#include <QDialog>
#include "iDlgBase.h"
#include <QLineEdit>
#include <QComboBox>
#include <QPushButton>
@ -10,7 +10,7 @@
#include "nmSubWxs_global.h"
#include "nmDataGeoRef.h"
class NM_SUB_WXS_EXPORT nmWxGeoRefDlg : public QDialog
class NM_SUB_WXS_EXPORT nmWxGeoRefDlg : public iDlgBase
{
Q_OBJECT

@ -1,7 +1,7 @@
#ifndef NMWXGEOMETRYLAYERDLG_H
#define NMWXGEOMETRYLAYERDLG_H
#include <QDialog>
#include "iDlgBase.h"
#include <QColor>
#include "nmSubWxs_global.h"
#include "nmDataLayer.h"
@ -16,7 +16,7 @@ class QCheckBox;
class nmDataReservoir;
class NM_SUB_WXS_EXPORT nmWxGeometryLayerDlg : public QDialog {
class NM_SUB_WXS_EXPORT nmWxGeometryLayerDlg : public iDlgBase {
Q_OBJECT
public:
nmWxGeometryLayerDlg();

@ -1,14 +1,14 @@
#ifndef NMWXGRIDDLG_H
#define NMWXGRIDDLG_H
#include <QDialog>
#include "iDlgBase.h"
#include "nmSubWxs_global.h"
class QLineEdit;
class QComboBox;
class NM_SUB_WXS_EXPORT nmWxGridDlg : public QDialog
class NM_SUB_WXS_EXPORT nmWxGridDlg : public iDlgBase
{
Q_OBJECT

@ -2,7 +2,7 @@
#define NMWXINCLUDEOTHERWELLS_H
#include "nmSubWxs_global.h"
#include <QDialog>
#include "iDlgBase.h"
#include <QTableWidget>
#include <QPushButton>
#include <QHBoxLayout>
@ -26,7 +26,7 @@ struct WellDataRow {
}
};
class NM_SUB_WXS_EXPORT nmWxIncludeOtherWells : public QDialog
class NM_SUB_WXS_EXPORT nmWxIncludeOtherWells : public iDlgBase
{
Q_OBJECT
public:

@ -1,7 +1,7 @@
#ifndef NMWXMEASUREDLG_H
#define NMWXMEASUREDLG_H
#include <QDialog>
#include "iDlgBase.h"
#include <QLineEdit>
#include "nmSubWxs_global.h"
#include "nmDataMeasure.h"
@ -11,7 +11,7 @@ class QPushButton;
class nmGUIComponentBase;
class nmDataWellBase;
class NM_SUB_WXS_EXPORT nmWxMeasureDlg : public QDialog
class NM_SUB_WXS_EXPORT nmWxMeasureDlg : public iDlgBase
{
Q_OBJECT
public:

@ -1,7 +1,7 @@
#ifndef NMWXMEASURINGSCALEDLG_H
#define NMWXMEASURINGSCALEDLG_H
#include <QDialog>
#include "iDlgBase.h"
#include "nmSubWxs_global.h"
#include "nmDataMeasuringScale.h"
@ -11,7 +11,7 @@ class nmGUIComponentBase;
//class nmDataAttribute;
class NM_SUB_WXS_EXPORT nmWxMeasuringScaleDlg : public QDialog {
class NM_SUB_WXS_EXPORT nmWxMeasuringScaleDlg : public iDlgBase {
Q_OBJECT
public:
nmWxMeasuringScaleDlg(QPointF startPoint, QPointF endPoint, double* pLength);

@ -2,6 +2,7 @@
#define NMWXANALYTICALDESIGN_H
#include "nmSubWxs_global.h"
#include "iDlgBase.h"
#include <QWidget>
// 前向声明
@ -23,7 +24,7 @@ class nmDataReservoir;
class nmGUIComponentLineEdit;
class nmDataAnalyzeManager;
class NM_SUB_WXS_EXPORT nmWxNumericalDesign : public QWidget
class NM_SUB_WXS_EXPORT nmWxNumericalDesign : public iDlgBase
{
Q_OBJECT
public:

@ -10,6 +10,7 @@
#include <QList>
#include "nmSubWxs_global.h"
#include "iDlgBase.h"
#include "nmDataReservoir.h"
#include "nmDataVerticalWell.h"
@ -42,7 +43,7 @@ enum DataCategory {
RegionMarkCat
};
class NM_SUB_WXS_EXPORT nmWxParameterProperty : public QWidget
class NM_SUB_WXS_EXPORT nmWxParameterProperty : public iDlgBase
{
Q_OBJECT

@ -2,7 +2,7 @@
#define NMWXPERFORATIONCLOSING_H
#include <limits>
#include <QDialog>
#include "iDlgBase.h"
#include <QPushButton>
#include <QCheckBox>
#include <QComboBox>
@ -13,7 +13,7 @@
#include "nmDataPerforation.h"
#include "nmDataWellBase.h"
class nmWxPerforationClosing : public QDialog
class nmWxPerforationClosing : public iDlgBase
{
Q_OBJECT

@ -1,7 +1,7 @@
#ifndef NMWXPOINTERPOSDLG_H
#define NMWXPOINTERPOSDLG_H
#include <QDialog>
#include "iDlgBase.h"
#include "nmSubWxs_global.h"
#include "nmDataGeoRef.h"
@ -12,7 +12,7 @@ class QPushButton;
class nmGUIComponentLineEdit;
class nmDataAttribute;
class NM_SUB_WXS_EXPORT nmWxPointerPosDlg : public QDialog
class NM_SUB_WXS_EXPORT nmWxPointerPosDlg : public iDlgBase
{
Q_OBJECT

@ -1,7 +1,7 @@
#ifndef NMWXPOSTPROCESSINGANIMATIONDATAFILTERING_H
#define NMWXPOSTPROCESSINGANIMATIONDATAFILTERING_H
#include <QDialog>
#include "iDlgBase.h"
#include "nmSubWxs_global.h"
class QCheckBox;
@ -9,7 +9,7 @@ class QLineEdit;
class QComboBox;
class QPushButton;
class NM_SUB_WXS_EXPORT nmWxPostprocessingAnimationDataFiltering : public QDialog
class NM_SUB_WXS_EXPORT nmWxPostprocessingAnimationDataFiltering : public iDlgBase
{
Q_OBJECT

@ -73,9 +73,9 @@ private:
nmWxPostprocessingAnimationWidget* m_parent;
};
#include <QDialog>
#include "iDlgBase.h"
// 区域平均压力显示对话框
class nmContourResultDialog : public QDialog
class nmContourResultDialog : public iDlgBase
{
Q_OBJECT

@ -1,7 +1,7 @@
#ifndef NMWXRCDIALOG_H
#define NMWXRCDIALOG_H
#include <QDialog>
#include "iDlgBase.h"
#include <QObject>
#include <QVector>
#include "nmSubWxs_global.h"
@ -9,7 +9,7 @@
class QTableWidget;
class nmWxRCWell;
class NM_SUB_WXS_EXPORT nmWxRCDialog : public QDialog {
class NM_SUB_WXS_EXPORT nmWxRCDialog : public iDlgBase {
Q_OBJECT
public:
nmWxRCDialog();

@ -72,7 +72,7 @@ private:
};
#include "nmSubWxs_global.h"
#include <QDialog>
#include "iDlgBase.h"
#include <QTreeWidget>
#include "nmDataAttribute.h"
@ -80,7 +80,7 @@ class BackupManager;
class CustomDelegate;
class WxCustomTreeWidget;
class NM_SUB_WXS_EXPORT nmWxReservoirProperties : public QDialog {
class NM_SUB_WXS_EXPORT nmWxReservoirProperties : public iDlgBase {
Q_OBJECT
public:
explicit nmWxReservoirProperties(QWidget* parent = 0);

@ -1,7 +1,7 @@
#ifndef NMWXRESERVOIRPROPERTIESDLG_H
#define NMWXRESERVOIRPROPERTIESDLG_H
#include <QDialog>
#include "iDlgBase.h"
#include <QTabWidget>
#include <QVector>
#include <QList>
@ -24,7 +24,7 @@ class QTreeWidgetItem;
class QComboBox;
class QCheckBox;
class NM_SUB_WXS_EXPORT nmWxReservoirPropertiesDlg : public QDialog {
class NM_SUB_WXS_EXPORT nmWxReservoirPropertiesDlg : public iDlgBase {
Q_OBJECT
public:
nmWxReservoirPropertiesDlg();

@ -1,13 +1,13 @@
#ifndef NMWXSELECTRESULTWELLSDLG_H
#define NMWXSELECTRESULTWELLSDLG_H
#include <QDialog>
#include "iDlgBase.h"
#include "nmSubWxs_global.h"
#include "nmWxSelectResultWellsWidget.h"
class QVBoxLayout;
class NM_SUB_WXS_EXPORT nmWxSelectResultWellsDlg : public QDialog
class NM_SUB_WXS_EXPORT nmWxSelectResultWellsDlg : public iDlgBase
{
Q_OBJECT
public:

@ -1,12 +1,12 @@
#ifndef nmWxSelectWellsDlg_H
#define nmWxSelectWellsDlg_H
#include <QDialog>
#include "iDlgBase.h"
#include "nmSubWxs_global.h"
class QVBoxLayout;
class NM_SUB_WXS_EXPORT nmWxSelectWellsDlg : public QDialog
class NM_SUB_WXS_EXPORT nmWxSelectWellsDlg : public iDlgBase
{
Q_OBJECT
public:

@ -1,7 +1,7 @@
#ifndef NMWXSENSITIVE_H
#define NMWXSENSITIVE_H
#include <QDialog>
#include "iDlgBase.h"
#include "nmSubWxs_global.h"
#include "nmDataSensitive.h"
@ -18,7 +18,7 @@ class QTableWidget;
class QLabel;
class QIcon;
class NM_SUB_WXS_EXPORT nmWxSensitive : public QDialog
class NM_SUB_WXS_EXPORT nmWxSensitive : public iDlgBase
{
Q_OBJECT

@ -1,7 +1,7 @@
#ifndef NMWXTIMEDEPENDENTSKIN_H
#define NMWXTIMEDEPENDENTSKIN_H
#include <QDialog>
#include "iDlgBase.h"
#include <QVector>
#include <QPair>
#include <QPainter>
@ -26,7 +26,7 @@ class QVBoxLayout;
class QHBoxLayout;
class QLabel;
class nmWxTimeDependentSkin : public QDialog
class nmWxTimeDependentSkin : public iDlgBase
{
Q_OBJECT

@ -1,12 +1,12 @@
#ifndef NMWXWELLLAYERDLG_H
#define NMWXWELLLAYERDLG_H
#include <QDialog>
#include "iDlgBase.h"
#include "nmSubWxs_global.h"
class QLineEdit;
class NM_SUB_WXS_EXPORT nmWxWellLayerDlg : public QDialog {
class NM_SUB_WXS_EXPORT nmWxWellLayerDlg : public iDlgBase {
Q_OBJECT
public:
nmWxWellLayerDlg(QVector<double> *vLayerHeights = NULL);

@ -2,7 +2,7 @@
#define NMWXWELLBORESTORAGECALCULATOR_H
#include "nmSubWxs_global.h"
#include <QDialog>
#include "iDlgBase.h"
class QButtonGroup;
class QRadioButton;
@ -18,7 +18,7 @@ class QGroupBox;
class nmWxWellboreStorageCalculatorVolume;
class nmWxWellboreStorageCalculatorTubingData;
class NM_SUB_WXS_EXPORT nmWxWellboreStorageCalculator : public QDialog
class NM_SUB_WXS_EXPORT nmWxWellboreStorageCalculator : public iDlgBase
{
Q_OBJECT
public:

@ -2,7 +2,7 @@
#define NMWXWELLBORESTORAGECALCULATORTUBINGDATA_H
#include "nmSubWxs_global.h"
#include <QDialog>
#include "iDlgBase.h"
#include <QVariantList>
class QTableWidget;
@ -10,7 +10,7 @@ class QComboBox;
class QPushButton;
class QLabel;
class NM_SUB_WXS_EXPORT nmWxWellboreStorageCalculatorTubingData : public QDialog
class NM_SUB_WXS_EXPORT nmWxWellboreStorageCalculatorTubingData : public iDlgBase
{
Q_OBJECT
public:

@ -2,7 +2,7 @@
#define NMWXWELLBORESTORAGECALCULATORVOLUME_H
#include "nmSubWxs_global.h"
#include <QDialog>
#include "iDlgBase.h"
class QTableWidget;
class QPushButton;
@ -11,7 +11,7 @@ class QLineEdit;
class QComboBox;
// 根据井筒高度和内径计算测试井筒体积
class NM_SUB_WXS_EXPORT nmWxWellboreStorageCalculatorVolume : public QDialog
class NM_SUB_WXS_EXPORT nmWxWellboreStorageCalculatorVolume : public iDlgBase
{
Q_OBJECT
public:

@ -91,6 +91,15 @@ void nmCalculationPebiGrid::setGridControl(double gridControl)
}
}
void nmCalculationPebiGrid::clearGridData()
{
// 关闭网格窗口后清空PEBI单例缓存避免后续求解误用旧网格输入输出。
p0 = HX_NWTM_GRID_INPUT();
p1 = HX_NWTM_GRID_OUTPUT1();
p2 = HX_NWTM_GRID_OUTPUT2();
m_dGridControl = p0.GridControl;
}
void nmCalculationPebiGrid::logInputParameters(const HX_NWTM_GRID_INPUT& input)
{
QString logMsg = "Input Parameters:\n";
@ -1074,4 +1083,4 @@ bool nmCalculationPebiGrid::generateOutputPara()
FreeLibrary(dll);
return true;
}
}

@ -64,9 +64,47 @@
#include <QCoreApplication>
#include <QDebug>
#include <QDir>
#include <QFile>
#include <QFileInfo>
namespace {
// 清空指定目录下的所有旧文件和子目录,但保留目录本身
bool clearDirectoryContents(const QString& dirPath)
{
if(dirPath.trimmed().isEmpty()) {
return false;
}
QDir dir(dirPath);
if(dir.isRoot()) {
qDebug() << QString("Refuse to clear root directory: %1").arg(dirPath);
return false;
}
if(!dir.exists()) {
return true;
}
QFileInfoList entries = dir.entryInfoList(QDir::NoDotAndDotDot | QDir::AllEntries | QDir::Hidden | QDir::System);
for(int i = 0; i < entries.size(); ++i) {
const QFileInfo& entry = entries.at(i);
bool bRemoved = false;
if(entry.isDir() && !entry.isSymLink()) {
bRemoved = clearDirectoryContents(entry.absoluteFilePath()) && dir.rmdir(entry.fileName());
} else {
bRemoved = QFile::remove(entry.absoluteFilePath());
}
if(!bRemoved) {
qDebug() << QString("Failed to remove old result item: %1").arg(entry.absoluteFilePath());
return false;
}
}
return true;
}
// 多条PVT曲线都可能带压力横坐标只保存第一次读到的有效横坐标
void setPebiPressureIfEmpty(nmDataPvtParaForPebi* pPvtPara, const QVector<double>& vecX)
@ -1497,10 +1535,6 @@ void nmDataAnalyzeManager::initPvtParaFromSubFit()
Q_ASSERT(nullptr != pSubWndFitting);
Q_ASSERT(nullptr != pContextProvider);
// 获取PEBI网格需要的Pvt数据
// 定义返回结果的 QMap
QMap<QString, double> mapPebiPvtPara;
if(nullptr != pSubWndFitting && nullptr != pContextProvider) {
PvtFluidType eType = WFT_Null;
pContextProvider->getBasicPft(pSubWndFitting, eType);
@ -1510,34 +1544,6 @@ void nmDataAnalyzeManager::initPvtParaFromSubFit()
bool bReadWaterPvt = false;
resolvePvtPhaseReadFlags(eType, bReadOilPvt, bReadGasPvt, bReadWaterPvt);
QStringList listPvtParas;
// 单值参数同样按当前相态筛选避免读取不存在的Phase子窗口
if(bReadOilPvt) {
listPvtParas << "Pb" //压力, MPa
<< "Rs" //溶解气油比, m^3/m^3
<< "Bo" //油体积系数, m^3/m^3
<< "Co" //油压缩系数, 1/MPa
<< "Miuo" //油粘度, mPa·s
<< "Rhoo"; //油密度, kg/m^3
}
if(bReadGasPvt) {
listPvtParas << "Rv" //凝析油气比, m^3/m^3
<< "Bg" //气体积系数, m^3/m^3
<< "Cg" //气压缩系数, 1/MPa
<< "Miug" //气粘度, mPa·s
<< "Rhog" //气密度, kg/m^3
<< "Zg"; //气偏差因子, 1
}
if(bReadWaterPvt) {
listPvtParas << "Rsw" //溶解气水比, m^3/m^3
<< "Bw" //水体积系数, m^3/m^3
<< "Cw" //水压缩系数, 1/MPa
<< "Miuw" //水粘度, mPa·s
<< "Rhow"; //水密度, kg/m^3
}
// Ct/Cf为基础单值参数保留原有读取逻辑
listPvtParas << "Ct"
<< "Cf";
//QVector<double> vecPressure; // 压力, MPa
QVector<double> vecRso; // 溶解气油比, m^3/m^3
@ -1556,7 +1562,6 @@ void nmDataAnalyzeManager::initPvtParaFromSubFit()
QVector<double> vecCw; // 水压缩系数, 1/MPa
QVector<double> vecMiuw; // 水粘度, mPa·s
QVector<double> vecRouw; // 水密度, kg/m^3
pContextProvider->getPvtParaValues(pSubWndFitting, listPvtParas, mapPebiPvtPara);
VecDouble vecX;
@ -1568,18 +1573,13 @@ void nmDataAnalyzeManager::initPvtParaFromSubFit()
m_pebiPvtPara = new nmDataPvtParaForPebi;
// 饱和压力为单值参数,读到时覆盖求解器默认值
if(mapPebiPvtPara.contains("Pb")) {
m_pebiPvtPara->setPb(nmDataAttribute("Pb", mapPebiPvtPara.value("Pb"), "MPa"));
}
// 气油比不按相态区分,所有情况都尝试读取
pContextProvider->getPvtRstOf(pSubWndFitting, WellFluidType::WFT_Oil, "Rs", vecX, vecRso);
m_pebiPvtPara->setRso(vecRso);
setPebiPressureIfEmpty(m_pebiPvtPara, vecX);
// PVT结果曲线只读取当前相态已有的页缺失相态保留PEBI默认数据
// 其他PVT结果曲线只读取当前相态已有的页缺失相态保留PEBI默认数据
if(bReadOilPvt) {
// 气油比
pContextProvider->getPvtRstOf(pSubWndFitting, WellFluidType::WFT_Oil, "Rs", vecX, vecRso);
m_pebiPvtPara->setRso(vecRso);
setPebiPressureIfEmpty(m_pebiPvtPara, vecX);
// 油体积系数
pContextProvider->getPvtRstOf(pSubWndFitting, WellFluidType::WFT_Oil, "Bo", vecX, vecBo);
m_pebiPvtPara->setBo(vecBo);
@ -1602,10 +1602,6 @@ void nmDataAnalyzeManager::initPvtParaFromSubFit()
}
if(bReadGasPvt) {
// 凝析油气比
pContextProvider->getPvtRstOf(pSubWndFitting, WellFluidType::WFT_Gas, "Rv", vecX, vecRv);
m_pebiPvtPara->setRv(vecRv);
setPebiPressureIfEmpty(m_pebiPvtPara, vecX);
// 气体积系数
pContextProvider->getPvtRstOf(pSubWndFitting, WellFluidType::WFT_Gas, "Bg", vecX, vecBg);
@ -3348,6 +3344,14 @@ bool nmDataAnalyzeManager::saveNmResult(QString sRstCode, iSubWndFitting* pSubWn
if(pContextProvider == nullptr || !pContextProvider->getSaveResultDir(pSubWndF, sRstCode, sDir)) {
return false;
}
// sDir为当前成果窗口目录
// 保存前先清空成果ID目录下的旧内容避免旧RstWnd目录或残留文件继续被加载
QString sResultRootPath = QFileInfo(sDir).dir().absolutePath();
if(!clearDirectoryContents(sResultRootPath)) {
return false;
}
QString sResultPath = sDir + "/Results";
this->ensureDirectoryExists(sResultPath);
// 将数据写入Json文件
@ -3603,6 +3607,12 @@ void nmDataAnalyzeManager::setUnstructuredGrid(vtkSmartPointer<vtkUnstructuredGr
m_pVtkUnstructuredGrid = grid;
}
void nmDataAnalyzeManager::clearUnstructuredGrid()
{
// 释放当前分析持有的实时VTK网格对象关闭网格窗口后不再保留旧网格。
m_pVtkUnstructuredGrid = nullptr;
}
vtkSmartPointer<vtkUnstructuredGrid> nmDataAnalyzeManager::getUnstructuredGridCopy() const
{
vtkSmartPointer<vtkUnstructuredGrid> pCopyGrid = vtkSmartPointer<vtkUnstructuredGrid>::New();

@ -2,21 +2,21 @@
#include "ZxSerializer.h"
nmDataReservoir::nmDataReservoir() {
m_initialPressure = nmDataAttribute("Initial Pressure",50.0, "MPa", UNIT_TYPE_PRESSURE, QStringList(), QStringList() << "psia" << "Pa" << "kPa" << "atm" << "bara" << "kg/cm^2" << "m" << "psig" << "bar" << "MPa" << "kPag");
m_initialPressure = nmDataAttribute("Initial Pressure",40.0, "MPa", UNIT_TYPE_PRESSURE, QStringList(), QStringList() << "psia" << "Pa" << "kPa" << "atm" << "bara" << "kg/cm^2" << "m" << "psig" << "bar" << "MPa" << "kPag");
m_reservoirType = nmDataAttribute("Reservoir type", "Homogeneous", "", UNIT_TYPE_DIMENSIONLESS, QStringList() << "Homogeneous" << "Dual porosity pseudo steady state", QStringList());
m_Bo = nmDataAttribute("Bo", 0.0, "");
m_permeability = nmDataAttribute("Permeability", 0.025, "Darcy", UNIT_TYPE_PERMEABILITY, QStringList(), QStringList() << "md" << "Darcy" << "m^2" << "cm^2" << "um^2");
m_Bo = nmDataAttribute("Bo", 1.2, "");
m_permeability = nmDataAttribute("Permeability", 0.001, "Darcy", UNIT_TYPE_PERMEABILITY, QStringList(), QStringList() << "md" << "Darcy" << "m^2" << "cm^2" << "um^2");
m_thickness = nmDataAttribute("Thickness", 10.0, "m", UNIT_TYPE_LENGTH, QStringList(), QStringList() << "ft" << "m" << "cm" << "mm" << "in" << "0.1 in" << "mile" << "km");
m_porosity = nmDataAttribute("Porosity", 0.0245, "", UNIT_TYPE_DIMENSIONLESS, QStringList(), QStringList());
m_porosity = nmDataAttribute("Porosity", 0.1, "", UNIT_TYPE_DIMENSIONLESS, QStringList(), QStringList());
m_Ct = nmDataAttribute("Ct", 0.001, "", UNIT_TYPE_DIMENSIONLESS, QStringList(), QStringList());
m_kxKy = nmDataAttribute("Kx/Ky", 1.0, "", UNIT_TYPE_DIMENSIONLESS, QStringList(), QStringList());
m_Cf = nmDataAttribute("Cf", 0.001, "", UNIT_TYPE_DIMENSIONLESS, QStringList(), QStringList());
m_Miuo = nmDataAttribute("Miuo", 0.0, "", UNIT_TYPE_DIMENSIONLESS, QStringList(), QStringList());
m_Cf = nmDataAttribute("Cf", 0.0001, "", UNIT_TYPE_DIMENSIONLESS, QStringList(), QStringList());
m_Miuo = nmDataAttribute("Miuo", 0.5, "", UNIT_TYPE_DIMENSIONLESS, QStringList(), QStringList());
// 初始饱和度
m_Soi = nmDataAttribute("Soi", 1.0, "", UNIT_TYPE_DIMENSIONLESS, QStringList(), QStringList());
m_Soi = nmDataAttribute("Soi", 0.8, "", UNIT_TYPE_DIMENSIONLESS, QStringList(), QStringList());
m_Sgi = nmDataAttribute("Sgi", 0.0, "", UNIT_TYPE_DIMENSIONLESS, QStringList(), QStringList());
m_Swi= nmDataAttribute("Swi", 0.0, "", UNIT_TYPE_DIMENSIONLESS, QStringList(), QStringList());
m_Swi= nmDataAttribute("Swi", 0.2, "", UNIT_TYPE_DIMENSIONLESS, QStringList(), QStringList());
m_dTempGasRe = 100;
m_ePhaseType = PHASE_Oil;
@ -346,4 +346,4 @@ void nmDataReservoir::setSwi(const nmDataAttribute &attr) {
nmDataAttribute& nmDataReservoir::getSwi() {
return m_Swi;
}
}

@ -100,6 +100,23 @@ bool nmSubWndGrid::saveRsts()
return pRstWnd->save();
}
bool nmSubWndGrid::onConfirmClosing()
{
// 先走基类关闭确认;用户取消关闭时不清理网格数据。
if(!iSubWndBaseFit::onConfirmClosing()) {
return false;
}
nmCalculationPebiGrid::getInstance()->clearGridData();
nmDataAnalyzeManager* pDataManager = nmDataAnalyzeManager::getCurrentInstance();
if(pDataManager != nullptr) {
pDataManager->clearUnstructuredGrid();
}
return true;
}
void nmSubWndGrid::initUI()
{
QWidget* mainWidget = new QWidget(this);

@ -2163,12 +2163,25 @@ void nmSubWndMain::viewWellData()
// 2.找到计算了的井
QVector<QPair<NM_WELL_MODEL, QString>> vecWellsOrder = nmDataAnalyzeManager::getCurrentInstance()->getCalculationWells();
// 统计真实参与计算的井数量Unknow_Well 在这里是裂缝等非井项。
int nWellCount = 0;
for(int i = 0; i < vecWellsOrder.size(); i++) {
if(vecWellsOrder[i].first != NM_WELL_MODEL::Unknow_Well) {
nWellCount++;
}
}
// 释放内存
if(m_resultDataDlg != nullptr) {
delete m_resultDataDlg;
m_resultDataDlg = nullptr;
}
// 只有一口井时不需要弹出选择井窗口,直接结束选择流程。
if(nWellCount <= 1) {
return;
}
// 3.创建对话框和井列表控件
m_resultDataDlg = new nmWxSelectResultWellsDlg;
nmWxSelectResultWellsWidget *wellListWidget = new nmWxSelectResultWellsWidget;
@ -2403,9 +2416,13 @@ void nmSubWndMain::onGenerateButtonClicked()
//QString sDir = ZxBaseUtil::getCurWellDirOf("Nm/PreProcessing");
if(nmDataAnalyzeManager::getCurrentInstance()->getGridType() == NM_Grid_PEBI) {
// 生成PEBI网格
nmCalculationPebiGrid* pPebiGridGeneratorInstance = nmCalculationPebiGrid::getInstance();
pPebiGridGeneratorInstance->meshGenPebi();
if(pPebiGridGeneratorInstance->getGridOutput2().Trinodexy.size() <= 0) {
// 没有可用PEBI网格时才重新生成
if(!pPebiGridGeneratorInstance->meshGenPebi()) {
return;
}
}
// 求解计算
this->solveAndAnalyze();

@ -725,10 +725,8 @@ bool nmSubWndUtils::saveRsts(iSubWnd* pSubWnd, \
}
// 如果存在,则对当前分析数据进行保存
if(pDataManager->saveNmResult(sRstName, pSubWndF)) {
// 保存成功
} else {
// 保存失败
if(!pDataManager->saveNmResult(sRstName, pSubWndF)) {
return false;
}
} else if(pSubWnd->getWndID() == "5118") {
return true;

@ -12,7 +12,7 @@
#endif
nmWxAutomaticFitting::nmWxAutomaticFitting(QWidget *parent)
: QDialog(parent)
: iDlgBase(parent)
, m_autoFitterPSO(nullptr)
, m_autoFitterGA(nullptr)
, m_progressDialog(nullptr)

@ -366,7 +366,7 @@ void nmAutomaticFittingCurveChart::drawCircleMarkers(QPainter& painter, const QV
}
nmWxAutomaticfittingStart::nmWxAutomaticfittingStart(QWidget *parent)
: QDialog(parent)
: iDlgBase(parent)
, rightSplitter(nullptr)
, chartGroup(nullptr)
, curveChart(nullptr)

@ -6,7 +6,7 @@
// 构造函数实现
nmWxChangeAnal::nmWxChangeAnal(QWidget *parent, ZxMainWindow* pMainWindow)
: QDialog(parent) // 初始化基类
: iDlgBase(parent) // 初始化基类
, m_pMainWindow(pMainWindow) // 初始化主窗口指针
, m_pAnalysisLabel(nullptr) // 初始化标签指针
, m_pAnalysisComboBox(nullptr) // 初始化下拉框指针

@ -15,7 +15,7 @@
// 构造函数
nmWxDFN::nmWxDFN(QWidget *parent)
: QDialog(parent)
: iDlgBase(parent)
{
setWindowTitle(tr("DFN"));
setMinimumSize(516, 519);

@ -19,7 +19,7 @@
#include <QMessageBox>
nmWxDFNExportDlg::nmWxDFNExportDlg(QWidget *parent)
: QDialog(parent)
: iDlgBase(parent)
{
setWindowTitle(tr("Export DFN"));
setMinimumSize(400, 200);

@ -14,7 +14,7 @@
#include <QComboBox>
nmWxDFNGenerateDlg::nmWxDFNGenerateDlg(QWidget* parent, nmGuiPlot* plot, nmDataOutline* outline)
: QDialog(parent), m_pPlot(plot), m_pOutline(outline)
: iDlgBase(parent), m_pPlot(plot), m_pOutline(outline)
{
setWindowTitle(tr("Generate DFN"));
setMinimumWidth(360);

@ -18,7 +18,7 @@
// 构造函数
nmWxDFNLoadFromFile::nmWxDFNLoadFromFile(QWidget* pParent)
: QDialog(pParent)
: iDlgBase(pParent)
{
this->setWindowTitle(tr("Load from file..."));
this->setMinimumSize(861, 708);

@ -168,7 +168,7 @@ void CustomDisPlayTreeWidget::paintEvent(QPaintEvent *pEvent)
}
// --- nmWxDisplaySettings 类实现 ---
nmWxDisplaySettings::nmWxDisplaySettings(QWidget *pParent) : QDialog(pParent)
nmWxDisplaySettings::nmWxDisplaySettings(QWidget *pParent) : iDlgBase(pParent)
{
setWindowTitle(tr("Display settings")); // 设置窗口标题
resize(313, 416); // 设置窗口大小

@ -34,7 +34,7 @@
#include "nmWellEditorController.h"
nmWxEditWellPlot::nmWxEditWellPlot(QWidget *parent, ZxDataWell* pZxDataWell, nmDataWellBase* pNmDataWell)
: QDialog(parent)
: iDlgBase(parent)
, m_pMainSplitter(nullptr)
, m_pTopVLayout(nullptr)
, m_pLeftVLayout(nullptr)
@ -563,7 +563,7 @@ void nmWxEditWellPlot::onOkClicked()
{
if(!m_pNmDataWell) {
qDebug() << "nmDataWellBase pointer is null in onOkClicked!";
QDialog::reject();
iDlgBase::reject();
return;
}
@ -600,7 +600,7 @@ void nmWxEditWellPlot::onOkClicked()
manager->updateHorizontalFracturedWells(wells);
}
} else {
QDialog::reject();
iDlgBase::reject();
return;
}
@ -757,7 +757,7 @@ void nmWxEditWellPlot::keyPressEvent(QKeyEvent *event)
}
// 对于所有其他按键,调用基类的处理
QDialog::keyPressEvent(event);
iDlgBase::keyPressEvent(event);
}
void nmWxEditWellPlot::onTimeDependentIconClicked()

@ -6,7 +6,7 @@
#include <QLabel>
nmWxForecast::nmWxForecast(QWidget *parent)
: QDialog(parent)
: iDlgBase(parent)
, m_initialPressureComponent(nullptr)
, m_abandonmentRateComponent(nullptr)
, m_maximumRateComponent(nullptr)

@ -12,7 +12,7 @@
#include "nmDataAxis.h"
nmWxGeoRefDlg::nmWxGeoRefDlg(QWidget* parent)
: QDialog(parent), m_bUpdating(false)
: iDlgBase(parent), m_bUpdating(false)
{
this->setWindowTitle(tr("Geo referencing"));
initUI();
@ -779,11 +779,11 @@ void nmWxGeoRefDlg::okAccept()
nmDataAnalyzeManager::getCurrentInstance()->updateGeoRefData(m_geoRefData);
// 调用基类的accept
QDialog::accept();
iDlgBase::accept();
}
void nmWxGeoRefDlg::cancelReject()
{
// 调用基类的reject
QDialog::reject();
iDlgBase::reject();
}

@ -11,7 +11,7 @@
#include <QHBoxLayout>
nmWxIncludeOtherWells::nmWxIncludeOtherWells(QWidget* pParent)
: QDialog(pParent), m_pTableWidget(nullptr),
: iDlgBase(pParent), m_pTableWidget(nullptr),
m_pOkButton(nullptr), m_pCancelButton(nullptr),
m_pButtonLayout(nullptr), m_pMainLayout(nullptr)
{

@ -15,7 +15,7 @@ Q_DECLARE_METATYPE(double *)
Q_DECLARE_METATYPE(QString *)
nmWxMeasureDlg::nmWxMeasureDlg(QWidget* parent)
: QDialog(parent),
: iDlgBase(parent),
m_pMainLayout(NULL),
m_pFitStartButton(NULL),
m_pFitEndButton(NULL),
@ -219,7 +219,7 @@ void nmWxMeasureDlg::updateDisplay() {
void nmWxMeasureDlg::closeEvent(QCloseEvent* event)
{
emit needDeleteMeasureObj();
QDialog::closeEvent(event);
iDlgBase::closeEvent(event);
}
void nmWxMeasureDlg::onCloseClicked()

@ -84,5 +84,5 @@ void nmWxMeasuringScaleDlg::accept()
*m_pLength = m_data.getLength().getValue().toDouble();
// 在这里添加预处理逻辑
QDialog::accept(); // 调用基类实现
iDlgBase::accept(); // 调用基类实现
}

@ -32,8 +32,16 @@
nmWxNumericalDesign* nmWxNumericalDesign::s_pCurrentInstance = nullptr;
static bool isNumericalDesignDebugOptionsVisible()
{
#ifdef QT_DEBUG
return true;
#endif
return false;
}
nmWxNumericalDesign::nmWxNumericalDesign(QWidget *parent)
: QWidget(parent)
: iDlgBase(parent)
{
// 设置当前实例为静态指针
s_pCurrentInstance = this;
@ -51,6 +59,8 @@ nmWxNumericalDesign::nmWxNumericalDesign(QWidget *parent)
pScrollArea->setWidgetResizable(true);
QWidget* pScrollWidget = new QWidget();
pScrollWidget->setObjectName("nmNumericalDesignScrollWidget");
pScrollWidget->setStyleSheet("#nmNumericalDesignScrollWidget { background-color: white; }");
QVBoxLayout* pScrollLayout = new QVBoxLayout(pScrollWidget);
// 初始化所有UI组件
@ -81,6 +91,21 @@ nmWxNumericalDesign::nmWxNumericalDesign(QWidget *parent)
// 设置信号槽连接
setupConnections();
//对于没有功能的组件release下隐藏debug下显示
bool bDebugOptionsVisible = isNumericalDesignDebugOptionsVisible();
m_pImposePiCheck->setVisible(bDebugOptionsVisible);
m_pShowAveragePressureCheck->setVisible(bDebugOptionsVisible);
m_pOutputGroup->setVisible(bDebugOptionsVisible);
m_pUseWellIntakeCheck->setVisible(bDebugOptionsVisible);
m_pRedefineKrPcCheck->setVisible(bDebugOptionsVisible);
m_pRedefineKrPcIconButton->setVisible(bDebugOptionsVisible);
m_pApplyUnconsolidationCheck->setVisible(bDebugOptionsVisible);
m_pApplyUnconsolidationIconButton->setVisible(bDebugOptionsVisible);
m_pUseDFNCheck->setVisible(bDebugOptionsVisible);
m_pNumericalSettingsGroup->setVisible(bDebugOptionsVisible);
m_pForecastBtn->setVisible(bDebugOptionsVisible);
m_pSensitiveBtn->setVisible(bDebugOptionsVisible);
}
nmWxNumericalDesign::~nmWxNumericalDesign()

@ -21,7 +21,7 @@ nmWxParameterProperty* nmWxParameterProperty::s_pCurrentInstance = nullptr;
#include "nmWxWellboreStorageCalculator.h"
nmWxParameterProperty::nmWxParameterProperty(QWidget* mainWindow, QWidget* parent)
: QWidget(parent), m_pMainWindow(mainWindow)
: iDlgBase(parent), m_pMainWindow(mainWindow)
{
s_pCurrentInstance = this;
m_pLayout = nullptr;

@ -15,7 +15,7 @@
#include "nmDataAnalyzeManager.h"
nmWxPerforationClosing::nmWxPerforationClosing(nmDataWellBase* pWellData, QWidget *parent)
: QDialog(parent)
: iDlgBase(parent)
{
setWindowTitle(tr("Perforation closing intervals"));
setMinimumSize(500, 625);

@ -14,7 +14,7 @@
#include <cmath>
nmWxPointerPosDlg::nmWxPointerPosDlg(QWidget* parent)
: QDialog(parent)
: iDlgBase(parent)
{
setWindowTitle(tr("Pointer position"));

@ -9,7 +9,7 @@
#include <QPushButton>
nmWxPostprocessingAnimationDataFiltering::nmWxPostprocessingAnimationDataFiltering(QWidget* parent) :
QDialog(parent)
iDlgBase(parent)
{
setWindowTitle(tr("Filtering settings"));
setFixedSize(300, 200);

@ -127,7 +127,7 @@ void nmCustomInteractorStyle::OnLeftButtonDown() {
}
nmContourResultDialog::nmContourResultDialog(QWidget *parent)
: QDialog(parent)
: iDlgBase(parent)
{
setWindowTitle(tr("Contour Pressure"));
setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint);

@ -328,7 +328,7 @@ bool BackupManager::isEditing(QTreeWidgetItem* item) const {
#include <QHeaderView>
nmWxReservoirProperties::nmWxReservoirProperties(QWidget* parent)
: QDialog(parent) {
: iDlgBase(parent) {
resize(700, 500);
setupUI();
populateTree();

@ -562,10 +562,10 @@ void nmWxReservoirPropertiesDlg::accept() {
// 更新完成后,通知参数界面刷新
nmWxParameterProperty::notifyUpdateTable();
QDialog::accept();
iDlgBase::accept();
}
void nmWxReservoirPropertiesDlg::reject() {
// 放弃所有修改,直接关闭对话框
QDialog::reject();
iDlgBase::reject();
}

@ -8,7 +8,7 @@
#include "ZxResolutionHelper.h"
nmWxSelectResultWellsDlg::nmWxSelectResultWellsDlg(QWidget* parent)
: QDialog(parent),
: iDlgBase(parent),
m_mainLayout(NULL),
m_wellListWidget(NULL)
{

@ -7,7 +7,7 @@
#include "nmData/nmDataLogFile.h"
#include "ZxResolutionHelper.h"
nmWxSelectWellsDlg::nmWxSelectWellsDlg(QWidget* parent): QDialog(parent)
nmWxSelectWellsDlg::nmWxSelectWellsDlg(QWidget* parent): iDlgBase(parent)
{
m_mainLayout = NULL;
this->setWindowTitle(tr("Select Wells"));

@ -3,7 +3,6 @@
#include "nmDataAnalyzeManager.h"
#include "nmDataSensitive.h"
#include <QDialog>
#include <QTreeWidget>
#include <QTreeWidgetItem>
#include <QComboBox>
@ -68,7 +67,7 @@ public:
};
nmWxSensitive::nmWxSensitive(QWidget *parent)
: QDialog(parent), m_selectedValueIndex(0) // 初始化选中的值索引为0
: iDlgBase(parent), m_selectedValueIndex(0) // 初始化选中的值索引为0
{
m_sensitiveData = nmDataAnalyzeManager::getCurrentInstance()->getSensitiveDataCopy();
setupUI();

@ -81,7 +81,7 @@ void nmWxTimeDependentSkin::showForCurrentWell(nmDataWellBase* pSpecificWellData
}
nmWxTimeDependentSkin::nmWxTimeDependentSkin(nmDataWellBase* pWellData, QWidget *parent)
: QDialog(parent)
: iDlgBase(parent)
, m_pChartWidget(nullptr)
, m_pOriginalPressureChart(nullptr)
, m_pOriginalFlowRateChart(nullptr)

@ -15,7 +15,7 @@
#include "nmWxWellboreStorageCalculatorVolume.h"
#include "nmWxWellboreStorageCalculatorTubingData.h"
nmWxWellboreStorageCalculator::nmWxWellboreStorageCalculator(QWidget *parent) : QDialog(parent)
nmWxWellboreStorageCalculator::nmWxWellboreStorageCalculator(QWidget *parent) : iDlgBase(parent)
{
this->initUI();
this->initConnections();

@ -9,7 +9,7 @@
#include <QComboBox>
#include <QMessageBox>
nmWxWellboreStorageCalculatorTubingData::nmWxWellboreStorageCalculatorTubingData(QWidget *parent) : QDialog(parent)
nmWxWellboreStorageCalculatorTubingData::nmWxWellboreStorageCalculatorTubingData(QWidget *parent) : iDlgBase(parent)
{
this->initUI();
this->initConnections();

@ -11,7 +11,7 @@
#include <QComboBox>
#include <cmath>
nmWxWellboreStorageCalculatorVolume::nmWxWellboreStorageCalculatorVolume(QWidget *parent) : QDialog(parent)
nmWxWellboreStorageCalculatorVolume::nmWxWellboreStorageCalculatorVolume(QWidget *parent) : iDlgBase(parent)
{
this->initUI(); // 初始化用户界面
this->initConnections(); // 连接信号和槽

Loading…
Cancel
Save