|
|
#pragma once
|
|
|
|
|
|
#include "nmDataHorizontalWell.h"
|
|
|
#include "nmDataAttribute.h"
|
|
|
|
|
|
class nmDataReservoir;
|
|
|
|
|
|
class NM_DATA_EXPORT nmDataHorizontalFracturedWell : public nmDataHorizontalWell {
|
|
|
Q_OBJECT
|
|
|
public:
|
|
|
nmDataHorizontalFracturedWell();
|
|
|
nmDataHorizontalFracturedWell(const nmDataHorizontalFracturedWell& other); // 拷贝构造函数声明
|
|
|
nmDataHorizontalFracturedWell& operator=(const nmDataHorizontalFracturedWell& other); // 赋值运算符声明
|
|
|
|
|
|
// 创建当前对象的深拷贝
|
|
|
nmDataWellBase* clone() const override;
|
|
|
|
|
|
// 实现 nmDataBase 的抽象方法:将当前 C++ 对象序列化为 RapidJSON Value
|
|
|
virtual rapidjson::Value ToJsonValue(rapidjson::Document::AllocatorType& allocator) const override;
|
|
|
// 实现 nmDataBase 的抽象方法:从 RapidJSON Value 反序列化数据到当前 C++ 对象
|
|
|
virtual void FromJsonValue(const rapidjson::Value& jsonValue) override;
|
|
|
|
|
|
// 连接属性值变化信号
|
|
|
void connectAttributeSignals() override;
|
|
|
|
|
|
// 用于获取某个射孔的允许MD范围
|
|
|
void getPerforationAllowedMdRange(nmDataPerforation* pPerfToValidate,
|
|
|
double& dUpperAllowedMd,
|
|
|
double& dLowerAllowedMd) override;
|
|
|
|
|
|
private slots:
|
|
|
void onFractureAttributeChanged(); // 处理裂缝属性变化,更新裂缝点
|
|
|
|
|
|
public:
|
|
|
void setModelingType(const nmDataAttribute& attr);
|
|
|
void setFractureModel(const nmDataAttribute& attr);
|
|
|
void setNumberOfFractures(const nmDataAttribute& attr);
|
|
|
void setFractureHalfLength(const nmDataAttribute& attr);
|
|
|
void setFractureHeight(const nmDataAttribute& attr);
|
|
|
void setFractureMidPointHeight(const nmDataAttribute& attr);
|
|
|
void setWidth(const nmDataAttribute& attr);
|
|
|
void setFractureAngle(const nmDataAttribute& attr);
|
|
|
void setStimulatedZonesAroundFracture(const nmDataAttribute& attr);
|
|
|
void setStimulationRadius(const nmDataAttribute& attr);
|
|
|
void setPermeabilityMultiplier(const nmDataAttribute& attr);
|
|
|
void setPorosityMultiplier(const nmDataAttribute& attr);
|
|
|
// 设置当前多段压裂水平井的裂缝信息
|
|
|
void setFracs();
|
|
|
|
|
|
nmDataAttribute& getModelingType();
|
|
|
nmDataAttribute& getFractureModel();
|
|
|
nmDataAttribute& getNumberOfFractures();
|
|
|
nmDataAttribute& getFractureHalfLength();
|
|
|
nmDataAttribute& getFractureHeight();
|
|
|
nmDataAttribute& getFractureMidPointHeight();
|
|
|
nmDataAttribute& getWidth();
|
|
|
nmDataAttribute& getFractureAngle();
|
|
|
nmDataAttribute& getStimulatedZonesAroundFracture();
|
|
|
nmDataAttribute& getStimulationRadius();
|
|
|
nmDataAttribute& getPermeabilityMultiplier();
|
|
|
nmDataAttribute& getPorosityMultiplier();
|
|
|
|
|
|
void setDfc(const nmDataAttribute& attr);
|
|
|
nmDataAttribute& getDfc();
|
|
|
|
|
|
QVector<QPair<QPointF, QPointF>>& getFracs();
|
|
|
|
|
|
// 获取裂缝的测深列表 (用于纵截面视图的X坐标)
|
|
|
QVector<double> getFractureMds() const;
|
|
|
private:
|
|
|
nmDataAttribute m_modelingType; // 建模类型
|
|
|
nmDataAttribute m_fractureModel; // 裂缝模型
|
|
|
nmDataAttribute m_dFc; // 导流能力
|
|
|
nmDataAttribute m_numberOfFractures; // 裂缝条数
|
|
|
nmDataAttribute m_fractureHalfLength; // 裂缝半长
|
|
|
nmDataAttribute m_fractureHeight; // 裂缝高度
|
|
|
nmDataAttribute m_fractureMidPointHeight; // 裂缝中点高度
|
|
|
nmDataAttribute m_width; // 裂缝宽度
|
|
|
nmDataAttribute m_fractureAngle; // 裂缝角度
|
|
|
nmDataAttribute m_stimulatedZonesAroundFracture; //裂缝周围改造区
|
|
|
nmDataAttribute m_stimulationRadius; // 改造半径
|
|
|
nmDataAttribute m_permeabilityMultiplier; // 渗透率乘数
|
|
|
nmDataAttribute m_porosityMultiplier; // 孔隙度乘数
|
|
|
|
|
|
// 所有裂缝,每个裂缝有1个起始点和终止点
|
|
|
QVector<QPair<QPointF, QPointF>> m_vecFracs;
|
|
|
QVector<double> m_fractureMds; // 用于纵截面视图的裂缝测深MD
|
|
|
|
|
|
nmDataReservoir* m_pReservoir;
|
|
|
};
|