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/nmData/nmDataHorizontalFracturedWe...

91 lines
3.8 KiB
C

#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;
};