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/nmSubWxs/nmReservoirPropertiesDataSo...

102 lines
3.9 KiB
C

#pragma once
#include "nmSubWxs_global.h"
#include "nmDataReservoir.h"
#include "nmDataVerticalWell.h"
#include "nmDataVerticalFracturedWell.h"
#include "nmDataHorizontalFracturedWell.h"
#include "nmDataRegionMark.h"
#include "nmDataFault.h"
#include "nmDataFracture.h"
#include "nmDataRegion.h"
class nmDataAnalyzeManager;
/** @brief PEBI 正式输入提交后的失效等级。 */
enum NM_PEBI_INPUT_CHANGE
{
NM_PEBI_INPUT_UNCHANGED = 0, ///< 输入没有实际变化。
NM_PEBI_RESULT_INPUT_CHANGED, ///< 仅求解输入变化,已有网格仍可复用。
NM_PEBI_GRID_INPUT_CHANGED ///< 网格输入变化,网格和结果同时失效。
};
/**
* @brief 储层参数编辑快照。
* @note 快照保存一次编辑会话所需的全部数据副本,不包含普通水平井。
*/
struct NM_SUB_WXS_EXPORT nmReservoirPropertiesSnapshot
{
/** @brief 构造空快照。 */
nmReservoirPropertiesSnapshot();
int m_nSolverModelType; ///< 打开对话框时的求解器模型类型数值。
nmDataReservoir m_oReservoir; ///< 储层参数副本。
QVector<nmDataVerticalWell> m_vecVerticalWells; ///< 直井参数副本。
QVector<nmDataVerticalFracturedWell> m_vecVerticalFracturedWells; ///< 垂直压裂井参数副本。
QVector<nmDataHorizontalFracturedWell> m_vecHorizontalFracturedWells; ///< 水平压裂井参数副本。
QVector<nmDataRegionMark> m_vecRegionMarks; ///< 区域标记参数副本。
QVector<nmDataFault> m_vecFaults; ///< 断层参数副本。
QVector<nmDataFracture> m_vecFractures; ///< 裂缝参数副本,包含DFN以保持提交索引稳定。
QVector<nmDataRegion> m_vecRegions; ///< 复合区参数副本。
};
/**
* @brief 储层参数数据源接口。
* @note 对话框只依赖此接口,不直接访问全局数据管理器。
*/
class NM_SUB_WXS_EXPORT nmIReservoirPropertiesDataSource
{
public:
/** @brief 析构数据源接口。 */
virtual ~nmIReservoirPropertiesDataSource();
/**
* @brief 读取当前分析窗口的数据快照。
* @param oSnapshot 输出的工作快照。
* @param sError 输出的错误信息。
* @return 读取成功返回true。
*/
virtual bool loadSnapshot(nmReservoirPropertiesSnapshot& oSnapshot,
QString& sError) const = 0;
/**
* @brief 一次性提交编辑后的工作快照。
* @param oSnapshot 待提交的工作快照。
* @param eInputChange 本次正式提交对应的PEBI输入失效等级。
* @param sError 输出的错误信息。
* @return 提交成功返回true。
*/
virtual bool commitSnapshot(const nmReservoirPropertiesSnapshot& oSnapshot,
NM_PEBI_INPUT_CHANGE eInputChange,
QString& sError) = 0;
};
/**
* @brief 基于nmDataAnalyzeManager的数据源适配器。
*/
class NM_SUB_WXS_EXPORT nmAnalyzeManagerReservoirDataSource :
public nmIReservoirPropertiesDataSource
{
public:
/**
* @brief 构造数据源适配器。
* @param pDataManager 当前分析窗口的数据管理器,不转移所有权。
*/
explicit nmAnalyzeManagerReservoirDataSource(nmDataAnalyzeManager* pDataManager);
/** @brief 析构数据源适配器。 */
virtual ~nmAnalyzeManagerReservoirDataSource();
virtual bool loadSnapshot(nmReservoirPropertiesSnapshot& oSnapshot,
QString& sError) const;
virtual bool commitSnapshot(const nmReservoirPropertiesSnapshot& oSnapshot,
NM_PEBI_INPUT_CHANGE eInputChange,
QString& sError);
private:
nmDataAnalyzeManager* m_pDataManager; ///< 当前分析窗口的数据管理器,不拥有所有权。
};