|
|
|
|
@ -1,8 +1,9 @@
|
|
|
|
|
#ifndef NMWXANALYTICALDESIGN_H
|
|
|
|
|
#define NMWXANALYTICALDESIGN_H
|
|
|
|
|
#ifndef NMWXNUMERICALDESIGN_H
|
|
|
|
|
#define NMWXNUMERICALDESIGN_H
|
|
|
|
|
|
|
|
|
|
#include "nmSubWxs_global.h"
|
|
|
|
|
#include "iDlgBase.h"
|
|
|
|
|
#include "nmParameterField.h"
|
|
|
|
|
#include <QWidget>
|
|
|
|
|
|
|
|
|
|
// 前向声明
|
|
|
|
|
@ -16,22 +17,46 @@ class QLabel;
|
|
|
|
|
class QRadioButton;
|
|
|
|
|
class QComboBox;
|
|
|
|
|
class QSpinBox;
|
|
|
|
|
class QDateTimeEdit;
|
|
|
|
|
class QStackedLayout;
|
|
|
|
|
|
|
|
|
|
class nmDataWellBase;
|
|
|
|
|
class nmDataDiagnostic;
|
|
|
|
|
class nmDataReservoir;
|
|
|
|
|
class nmGUIComponentLineEdit;
|
|
|
|
|
class nmDataAnalyzeManager;
|
|
|
|
|
|
|
|
|
|
class NM_SUB_WXS_EXPORT nmWxNumericalDesign : public iDlgBase
|
|
|
|
|
/**
|
|
|
|
|
* @brief 生成数值模型Dock面板。
|
|
|
|
|
* @note 面板常驻成果窗口,输入校验通过后直接提交到所属数据管理器。
|
|
|
|
|
*/
|
|
|
|
|
class NM_SUB_WXS_EXPORT nmWxNumericalDesign :
|
|
|
|
|
public iDlgBase,
|
|
|
|
|
public nmIParameterUnitService
|
|
|
|
|
{
|
|
|
|
|
Q_OBJECT
|
|
|
|
|
public:
|
|
|
|
|
explicit nmWxNumericalDesign(QWidget *parent = nullptr);
|
|
|
|
|
explicit nmWxNumericalDesign(nmDataAnalyzeManager* pDataManager,
|
|
|
|
|
QWidget* pParent = nullptr);
|
|
|
|
|
~nmWxNumericalDesign();
|
|
|
|
|
|
|
|
|
|
/** @brief 通过iDlgBase按NM参数系列绑定单位控件。 */
|
|
|
|
|
virtual bool bindUnitField(QLineEdit* pLineEdit,
|
|
|
|
|
QComboBox* pUnitComboBox,
|
|
|
|
|
const QString& sBaseParameterId);
|
|
|
|
|
|
|
|
|
|
/** @brief 将业务基准单位值写入字段。 */
|
|
|
|
|
virtual void setUnitBaseValue(QLineEdit* pLineEdit,
|
|
|
|
|
double dBaseValue);
|
|
|
|
|
|
|
|
|
|
/** @brief 读取字段的业务基准单位值。 */
|
|
|
|
|
virtual double unitBaseValue(QLineEdit* pLineEdit) const;
|
|
|
|
|
|
|
|
|
|
/** @brief 使用参数定义校验单位字段输入。 */
|
|
|
|
|
virtual bool isUnitInputValid(QLineEdit* pLineEdit);
|
|
|
|
|
|
|
|
|
|
/** @brief 返回字段当前显示单位。 */
|
|
|
|
|
virtual QString currentUnit(QLineEdit* pLineEdit) const;
|
|
|
|
|
|
|
|
|
|
/** @brief 返回字段单位组,不转移所有权。 */
|
|
|
|
|
virtual iUnitGroup* unitGroup(QLineEdit* pLineEdit) const;
|
|
|
|
|
|
|
|
|
|
// 静态方法,供外部调用以通知时间变表皮状态变化
|
|
|
|
|
static void notifyTimeDependentSkinChanged(const QString& wellName, bool checked);
|
|
|
|
|
// 刷新查看井结果下拉框
|
|
|
|
|
@ -44,8 +69,6 @@ signals:
|
|
|
|
|
void sigIncludeWells(); // 包含其他井后刷新参数栏的信号
|
|
|
|
|
// 切换查看井结果时发出的信号
|
|
|
|
|
void sigResultWellChanged(const QString& wellName);
|
|
|
|
|
//void sigUpdateWellPlot(nmDataAnalyzeManager*); // 更新井图元
|
|
|
|
|
//void sigIncludeWells(); // 包含其他井后刷新参数栏的信号
|
|
|
|
|
|
|
|
|
|
private slots:
|
|
|
|
|
// 新增的槽函数
|
|
|
|
|
@ -66,8 +89,6 @@ signals:
|
|
|
|
|
void onOutputResultFieldsAutomaticToggled(bool checked); // "输出结果字段"自动单选按钮状态改变槽
|
|
|
|
|
void onOutputResultFieldsManualToggled(bool checked); // "输出结果字段"手动单选按钮状态改变槽
|
|
|
|
|
|
|
|
|
|
// 处理 m_pIgnoreCheck 状态变化的槽
|
|
|
|
|
//void onIgnoreCheckToggled(bool checked);
|
|
|
|
|
// 处理 Output result fields 复选框的切换
|
|
|
|
|
void onOutputResultFieldsToggled(bool checked);
|
|
|
|
|
// 查看井结果下拉框切换槽
|
|
|
|
|
@ -79,14 +100,10 @@ signals:
|
|
|
|
|
/** @brief 将求解器设置同步到当前数据管理器。 */
|
|
|
|
|
void onPebiSolverSettingsChanged();
|
|
|
|
|
|
|
|
|
|
// 处理时间参考系单选按钮切换
|
|
|
|
|
//void onTimeReferenceSystemToggled(bool checked);
|
|
|
|
|
// 时间步组件值改变时,同步更新数据模型
|
|
|
|
|
//void onTimeSteppingUiChanged();
|
|
|
|
|
// 时间单位更新
|
|
|
|
|
//void onTimeUnitChanged(const QString& newUnit);
|
|
|
|
|
// 重置时间步数据
|
|
|
|
|
//void onResetTimeStep();
|
|
|
|
|
/** @brief 输入变化时刷新时间步校验状态。 */
|
|
|
|
|
void onTimeStepValueChanged(const QString& sText);
|
|
|
|
|
/** @brief 编辑完成后提交完整且合法的时间步设置。 */
|
|
|
|
|
void onTimeStepEditingFinished();
|
|
|
|
|
// 保存时间变表皮状态
|
|
|
|
|
void onTimeDependentCheck(bool checked);
|
|
|
|
|
|
|
|
|
|
@ -113,14 +130,25 @@ private:
|
|
|
|
|
|
|
|
|
|
// 根据当前数据中心的数据更新时间步设置组件的值
|
|
|
|
|
void updateUiFromData();
|
|
|
|
|
// 根据UI更新模型数据
|
|
|
|
|
void updateDataFromUi();
|
|
|
|
|
// 根据UI更新模型数据,任何字段非法时不产生部分写入
|
|
|
|
|
bool updateDataFromUi(QString& sError);
|
|
|
|
|
// 收集并校验时间步字段,返回值均为求解器使用的小时基准值
|
|
|
|
|
bool collectTimeStepValues(double& dTimeGrowthExponent,
|
|
|
|
|
double& dDtMin,
|
|
|
|
|
double& dDtMax,
|
|
|
|
|
QString& sError);
|
|
|
|
|
// 将焦点定位到第一个非法时间步字段
|
|
|
|
|
void focusFirstInvalidTimeStepField();
|
|
|
|
|
// 填充查看井结果下拉框
|
|
|
|
|
void fillResultWellCombo(const QString& selectedWellName = QString());
|
|
|
|
|
// 刷新当前模型显示
|
|
|
|
|
void updateCurrentModelDisplay();
|
|
|
|
|
// 刷新当前井的时间变表皮状态
|
|
|
|
|
void updateTimeDependentSkinDisplay();
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
/** @brief 当前Dock所属数据管理器,不拥有所有权。 */
|
|
|
|
|
nmDataAnalyzeManager* m_pDataManager;
|
|
|
|
|
|
|
|
|
|
// 主选项组件
|
|
|
|
|
QGroupBox* m_pMainOptionsGroup; // 主选项分组框
|
|
|
|
|
@ -162,25 +190,9 @@ private:
|
|
|
|
|
|
|
|
|
|
// 时间步进组件
|
|
|
|
|
QGroupBox* m_pTimeSteppingGroup; // 时间步进分组框
|
|
|
|
|
nmGUIComponentLineEdit* m_pTimeGrowthExponentCom;
|
|
|
|
|
nmGUIComponentLineEdit* m_pDtMinCom;
|
|
|
|
|
nmGUIComponentLineEdit* m_pDtMaxCom;
|
|
|
|
|
|
|
|
|
|
//QCheckBox* m_pUseCoarseSteppingCheck;
|
|
|
|
|
//QPushButton* m_pResetTimeStep; // 重置时间步设置
|
|
|
|
|
//QRadioButton* m_pAbsoluteRadio; // "绝对"时间单选按钮
|
|
|
|
|
//QRadioButton* m_pElapsedRadio; // "流逝"时间单选按钮
|
|
|
|
|
//QComboBox* m_pTimeUnitComboBox; // 固定的时间单位标签,显示"hr"
|
|
|
|
|
|
|
|
|
|
// 切换不同状态下的时间输入框
|
|
|
|
|
//QStackedLayout* m_pFromStackedLayout;
|
|
|
|
|
//QStackedLayout* m_pSimulateUntilStackedLayout;
|
|
|
|
|
|
|
|
|
|
//QLineEdit* m_pTimeGrowthExponentLineEdit; // 流逝时间输入框
|
|
|
|
|
//QDateTimeEdit* m_pFromAbsoluteDateTimeEdit; // 绝对时间输入框
|
|
|
|
|
|
|
|
|
|
//QLineEdit* m_pSimulateUntilElapsedLineEdit; // 流逝时间输入框
|
|
|
|
|
//QDateTimeEdit* m_pSimulateUntilAbsoluteDateTimeEdit; // 绝对时间输入框
|
|
|
|
|
nmParameterField* m_pTimeGrowthExponentField; ///< 时间增长指数字段。
|
|
|
|
|
nmParameterField* m_pDtMinField; ///< 最小时间步字段。
|
|
|
|
|
nmParameterField* m_pDtMaxField; ///< 最大时间步字段。
|
|
|
|
|
|
|
|
|
|
// 数值设置组件
|
|
|
|
|
QGroupBox* m_pNumericalSettingsGroup; // 数值设置分组框
|
|
|
|
|
@ -214,4 +226,4 @@ private:
|
|
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
#endif // NMWXANALYTICALDESIGN_H
|
|
|
|
|
#endif // NMWXNUMERICALDESIGN_H
|
|
|
|
|
|