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++

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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