Compare commits

...

9 Commits

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

@ -2,7 +2,7 @@
#define NMWXINCLUDEOTHERWELLS_H #define NMWXINCLUDEOTHERWELLS_H
#include "nmSubWxs_global.h" #include "nmSubWxs_global.h"
#include <QDialog> #include "iDlgBase.h"
#include <QTableWidget> #include <QTableWidget>
#include <QPushButton> #include <QPushButton>
#include <QHBoxLayout> #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 Q_OBJECT
public: public:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

@ -2,7 +2,7 @@
#define NMWXWELLBORESTORAGECALCULATORVOLUME_H #define NMWXWELLBORESTORAGECALCULATORVOLUME_H
#include "nmSubWxs_global.h" #include "nmSubWxs_global.h"
#include <QDialog> #include "iDlgBase.h"
class QTableWidget; class QTableWidget;
class QPushButton; class QPushButton;
@ -11,7 +11,7 @@ class QLineEdit;
class QComboBox; class QComboBox;
// 根据井筒高度和内径计算测试井筒体积 // 根据井筒高度和内径计算测试井筒体积
class NM_SUB_WXS_EXPORT nmWxWellboreStorageCalculatorVolume : public QDialog class NM_SUB_WXS_EXPORT nmWxWellboreStorageCalculatorVolume : public iDlgBase
{ {
Q_OBJECT Q_OBJECT
public: 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) void nmCalculationPebiGrid::logInputParameters(const HX_NWTM_GRID_INPUT& input)
{ {
QString logMsg = "Input Parameters:\n"; QString logMsg = "Input Parameters:\n";

@ -64,9 +64,47 @@
#include <QCoreApplication> #include <QCoreApplication>
#include <QDebug> #include <QDebug>
#include <QDir>
#include <QFile> #include <QFile>
#include <QFileInfo>
namespace { 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曲线都可能带压力横坐标只保存第一次读到的有效横坐标 // 多条PVT曲线都可能带压力横坐标只保存第一次读到的有效横坐标
void setPebiPressureIfEmpty(nmDataPvtParaForPebi* pPvtPara, const QVector<double>& vecX) void setPebiPressureIfEmpty(nmDataPvtParaForPebi* pPvtPara, const QVector<double>& vecX)
@ -1497,10 +1535,6 @@ void nmDataAnalyzeManager::initPvtParaFromSubFit()
Q_ASSERT(nullptr != pSubWndFitting); Q_ASSERT(nullptr != pSubWndFitting);
Q_ASSERT(nullptr != pContextProvider); Q_ASSERT(nullptr != pContextProvider);
// 获取PEBI网格需要的Pvt数据
// 定义返回结果的 QMap
QMap<QString, double> mapPebiPvtPara;
if(nullptr != pSubWndFitting && nullptr != pContextProvider) { if(nullptr != pSubWndFitting && nullptr != pContextProvider) {
PvtFluidType eType = WFT_Null; PvtFluidType eType = WFT_Null;
pContextProvider->getBasicPft(pSubWndFitting, eType); pContextProvider->getBasicPft(pSubWndFitting, eType);
@ -1510,34 +1544,6 @@ void nmDataAnalyzeManager::initPvtParaFromSubFit()
bool bReadWaterPvt = false; bool bReadWaterPvt = false;
resolvePvtPhaseReadFlags(eType, bReadOilPvt, bReadGasPvt, bReadWaterPvt); 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> vecPressure; // 压力, MPa
QVector<double> vecRso; // 溶解气油比, m^3/m^3 QVector<double> vecRso; // 溶解气油比, m^3/m^3
@ -1556,7 +1562,6 @@ void nmDataAnalyzeManager::initPvtParaFromSubFit()
QVector<double> vecCw; // 水压缩系数, 1/MPa QVector<double> vecCw; // 水压缩系数, 1/MPa
QVector<double> vecMiuw; // 水粘度, mPa·s QVector<double> vecMiuw; // 水粘度, mPa·s
QVector<double> vecRouw; // 水密度, kg/m^3 QVector<double> vecRouw; // 水密度, kg/m^3
pContextProvider->getPvtParaValues(pSubWndFitting, listPvtParas, mapPebiPvtPara);
VecDouble vecX; VecDouble vecX;
@ -1568,18 +1573,13 @@ void nmDataAnalyzeManager::initPvtParaFromSubFit()
m_pebiPvtPara = new nmDataPvtParaForPebi; m_pebiPvtPara = new nmDataPvtParaForPebi;
// 饱和压力为单值参数,读到时覆盖求解器默认值 // 气油比不按相态区分,所有情况都尝试读取
if(mapPebiPvtPara.contains("Pb")) {
m_pebiPvtPara->setPb(nmDataAttribute("Pb", mapPebiPvtPara.value("Pb"), "MPa"));
}
// PVT结果曲线也只读取当前相态已有的页缺失相态保留PEBI默认数据
if(bReadOilPvt) {
// 气油比
pContextProvider->getPvtRstOf(pSubWndFitting, WellFluidType::WFT_Oil, "Rs", vecX, vecRso); pContextProvider->getPvtRstOf(pSubWndFitting, WellFluidType::WFT_Oil, "Rs", vecX, vecRso);
m_pebiPvtPara->setRso(vecRso); m_pebiPvtPara->setRso(vecRso);
setPebiPressureIfEmpty(m_pebiPvtPara, vecX); setPebiPressureIfEmpty(m_pebiPvtPara, vecX);
// 其他PVT结果曲线只读取当前相态已有的页缺失相态保留PEBI默认数据
if(bReadOilPvt) {
// 油体积系数 // 油体积系数
pContextProvider->getPvtRstOf(pSubWndFitting, WellFluidType::WFT_Oil, "Bo", vecX, vecBo); pContextProvider->getPvtRstOf(pSubWndFitting, WellFluidType::WFT_Oil, "Bo", vecX, vecBo);
m_pebiPvtPara->setBo(vecBo); m_pebiPvtPara->setBo(vecBo);
@ -1602,10 +1602,6 @@ void nmDataAnalyzeManager::initPvtParaFromSubFit()
} }
if(bReadGasPvt) { 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); 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)) { if(pContextProvider == nullptr || !pContextProvider->getSaveResultDir(pSubWndF, sRstCode, sDir)) {
return false; return false;
} }
// sDir为当前成果窗口目录
// 保存前先清空成果ID目录下的旧内容避免旧RstWnd目录或残留文件继续被加载
QString sResultRootPath = QFileInfo(sDir).dir().absolutePath();
if(!clearDirectoryContents(sResultRootPath)) {
return false;
}
QString sResultPath = sDir + "/Results"; QString sResultPath = sDir + "/Results";
this->ensureDirectoryExists(sResultPath); this->ensureDirectoryExists(sResultPath);
// 将数据写入Json文件 // 将数据写入Json文件
@ -3603,6 +3607,12 @@ void nmDataAnalyzeManager::setUnstructuredGrid(vtkSmartPointer<vtkUnstructuredGr
m_pVtkUnstructuredGrid = grid; m_pVtkUnstructuredGrid = grid;
} }
void nmDataAnalyzeManager::clearUnstructuredGrid()
{
// 释放当前分析持有的实时VTK网格对象关闭网格窗口后不再保留旧网格。
m_pVtkUnstructuredGrid = nullptr;
}
vtkSmartPointer<vtkUnstructuredGrid> nmDataAnalyzeManager::getUnstructuredGridCopy() const vtkSmartPointer<vtkUnstructuredGrid> nmDataAnalyzeManager::getUnstructuredGridCopy() const
{ {
vtkSmartPointer<vtkUnstructuredGrid> pCopyGrid = vtkSmartPointer<vtkUnstructuredGrid>::New(); vtkSmartPointer<vtkUnstructuredGrid> pCopyGrid = vtkSmartPointer<vtkUnstructuredGrid>::New();

@ -2,21 +2,21 @@
#include "ZxSerializer.h" #include "ZxSerializer.h"
nmDataReservoir::nmDataReservoir() { 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_reservoirType = nmDataAttribute("Reservoir type", "Homogeneous", "", UNIT_TYPE_DIMENSIONLESS, QStringList() << "Homogeneous" << "Dual porosity pseudo steady state", QStringList());
m_Bo = nmDataAttribute("Bo", 0.0, ""); m_Bo = nmDataAttribute("Bo", 1.2, "");
m_permeability = nmDataAttribute("Permeability", 0.025, "Darcy", UNIT_TYPE_PERMEABILITY, QStringList(), QStringList() << "md" << "Darcy" << "m^2" << "cm^2" << "um^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_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_Ct = nmDataAttribute("Ct", 0.001, "", UNIT_TYPE_DIMENSIONLESS, QStringList(), QStringList());
m_kxKy = nmDataAttribute("Kx/Ky", 1.0, "", 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_Cf = nmDataAttribute("Cf", 0.0001, "", UNIT_TYPE_DIMENSIONLESS, QStringList(), QStringList());
m_Miuo = nmDataAttribute("Miuo", 0.0, "", 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_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_dTempGasRe = 100;
m_ePhaseType = PHASE_Oil; m_ePhaseType = PHASE_Oil;

@ -100,6 +100,23 @@ bool nmSubWndGrid::saveRsts()
return pRstWnd->save(); 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() void nmSubWndGrid::initUI()
{ {
QWidget* mainWidget = new QWidget(this); QWidget* mainWidget = new QWidget(this);

@ -2163,12 +2163,25 @@ void nmSubWndMain::viewWellData()
// 2.找到计算了的井 // 2.找到计算了的井
QVector<QPair<NM_WELL_MODEL, QString>> vecWellsOrder = nmDataAnalyzeManager::getCurrentInstance()->getCalculationWells(); 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) { if(m_resultDataDlg != nullptr) {
delete m_resultDataDlg; delete m_resultDataDlg;
m_resultDataDlg = nullptr; m_resultDataDlg = nullptr;
} }
// 只有一口井时不需要弹出选择井窗口,直接结束选择流程。
if(nWellCount <= 1) {
return;
}
// 3.创建对话框和井列表控件 // 3.创建对话框和井列表控件
m_resultDataDlg = new nmWxSelectResultWellsDlg; m_resultDataDlg = new nmWxSelectResultWellsDlg;
nmWxSelectResultWellsWidget *wellListWidget = new nmWxSelectResultWellsWidget; nmWxSelectResultWellsWidget *wellListWidget = new nmWxSelectResultWellsWidget;
@ -2403,9 +2416,13 @@ void nmSubWndMain::onGenerateButtonClicked()
//QString sDir = ZxBaseUtil::getCurWellDirOf("Nm/PreProcessing"); //QString sDir = ZxBaseUtil::getCurWellDirOf("Nm/PreProcessing");
if(nmDataAnalyzeManager::getCurrentInstance()->getGridType() == NM_Grid_PEBI) { if(nmDataAnalyzeManager::getCurrentInstance()->getGridType() == NM_Grid_PEBI) {
// 生成PEBI网格
nmCalculationPebiGrid* pPebiGridGeneratorInstance = nmCalculationPebiGrid::getInstance(); nmCalculationPebiGrid* pPebiGridGeneratorInstance = nmCalculationPebiGrid::getInstance();
pPebiGridGeneratorInstance->meshGenPebi(); if(pPebiGridGeneratorInstance->getGridOutput2().Trinodexy.size() <= 0) {
// 没有可用PEBI网格时才重新生成
if(!pPebiGridGeneratorInstance->meshGenPebi()) {
return;
}
}
// 求解计算 // 求解计算
this->solveAndAnalyze(); this->solveAndAnalyze();

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

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

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

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

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

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

@ -14,7 +14,7 @@
#include <QComboBox> #include <QComboBox>
nmWxDFNGenerateDlg::nmWxDFNGenerateDlg(QWidget* parent, nmGuiPlot* plot, nmDataOutline* outline) 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")); setWindowTitle(tr("Generate DFN"));
setMinimumWidth(360); setMinimumWidth(360);

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

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

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

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

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

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

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

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

@ -32,8 +32,16 @@
nmWxNumericalDesign* nmWxNumericalDesign::s_pCurrentInstance = nullptr; nmWxNumericalDesign* nmWxNumericalDesign::s_pCurrentInstance = nullptr;
static bool isNumericalDesignDebugOptionsVisible()
{
#ifdef QT_DEBUG
return true;
#endif
return false;
}
nmWxNumericalDesign::nmWxNumericalDesign(QWidget *parent) nmWxNumericalDesign::nmWxNumericalDesign(QWidget *parent)
: QWidget(parent) : iDlgBase(parent)
{ {
// 设置当前实例为静态指针 // 设置当前实例为静态指针
s_pCurrentInstance = this; s_pCurrentInstance = this;
@ -51,6 +59,8 @@ nmWxNumericalDesign::nmWxNumericalDesign(QWidget *parent)
pScrollArea->setWidgetResizable(true); pScrollArea->setWidgetResizable(true);
QWidget* pScrollWidget = new QWidget(); QWidget* pScrollWidget = new QWidget();
pScrollWidget->setObjectName("nmNumericalDesignScrollWidget");
pScrollWidget->setStyleSheet("#nmNumericalDesignScrollWidget { background-color: white; }");
QVBoxLayout* pScrollLayout = new QVBoxLayout(pScrollWidget); QVBoxLayout* pScrollLayout = new QVBoxLayout(pScrollWidget);
// 初始化所有UI组件 // 初始化所有UI组件
@ -81,6 +91,21 @@ nmWxNumericalDesign::nmWxNumericalDesign(QWidget *parent)
// 设置信号槽连接 // 设置信号槽连接
setupConnections(); 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() nmWxNumericalDesign::~nmWxNumericalDesign()

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Loading…
Cancel
Save