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/nmDataReservoir.h

152 lines
4.6 KiB
C

#pragma once
#include "nmData_global.h"
#include "ZxDataObjectDbl.h"
#include "nmDataBase.h"
#include "nmDefines.h"
#include "nmDataAttribute.h"
class NM_DATA_EXPORT nmDataReservoir : public nmDataBase {
Q_OBJECT
public:
nmDataReservoir();
nmDataReservoir(const nmDataReservoir& other);
nmDataReservoir& operator=(const nmDataReservoir& other);
virtual ~nmDataReservoir();
// 实现 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;
// 单例模式
static nmDataReservoir* getInstance();
public:
// 表名
virtual QString getTableName();
// 接口
//virtual ZxDataObject* clone();
virtual QString type() const;
// 加载保存(数据库部分)
virtual bool _parseData(VecVariant vec, int& n);
virtual bool _sumUpData(VecVariant& vec);
// 序列化(统一序列化为大字段时的处理)
virtual void onSerialize(ZxSerializer* ser);
virtual void onDeserialize(ZxSerializer* ser);
// Icon
virtual QIcon getIcon(bool expanded) const;
public:
// 基础属性
void setInitialPressure(const nmDataAttribute& attr);
nmDataAttribute& getInitialPressure();
void setPermeability(const nmDataAttribute& attr);
nmDataAttribute& getPermeability();
void setThickness(const nmDataAttribute& attr);
nmDataAttribute& getThickness();
void setPorosity(const nmDataAttribute& attr);
nmDataAttribute& getPorosity();
void setKxKy(const nmDataAttribute& attr);
nmDataAttribute& getKxKy();
// 油相PVT单值参数
void setBo(const nmDataAttribute& attr);
nmDataAttribute& getBo();
void setMiuo(const nmDataAttribute& attr);
nmDataAttribute& getMiuo();
// 气相PVT单值参数
void setBg(const nmDataAttribute& attr);
nmDataAttribute& getBg();
void setMiug(const nmDataAttribute& attr);
nmDataAttribute& getMiug();
// 水相PVT单值参数
void setBw(const nmDataAttribute& attr);
nmDataAttribute& getBw();
void setMiuw(const nmDataAttribute& attr);
nmDataAttribute& getMiuw();
// 压缩系数
void setCt(const nmDataAttribute& attr);
nmDataAttribute& getCt();
void setCf(const nmDataAttribute& attr);
nmDataAttribute& getCf();
// 储层类型与传导率
void setReservoirType(const nmDataAttribute& attr);
nmDataAttribute& getReservoirType();
void setTransmissibility(const nmDataAttribute& attr);
nmDataAttribute& getTransmissibility();
// 初始饱和度
void setSoi(const nmDataAttribute& attr);
nmDataAttribute& getSoi();
void setSgi(const nmDataAttribute& attr);
nmDataAttribute& getSgi();
void setSwi(const nmDataAttribute& attr);
nmDataAttribute& getSwi();
// 气藏温度与相态
void setTempGasRe(double temp);
double getTempGasRe() const;
void setPhaseType(NM_PHASE_TYPE phaseType);
NM_PHASE_TYPE getPhaseType() const;
void resetToDefaults(); // 重置所有参数为构造函数默认值
protected:
nmDataAttribute m_initialPressure; // 初始地层压力
nmDataAttribute m_permeability; // 渗透率
nmDataAttribute m_thickness; // 储层厚度
nmDataAttribute m_porosity; // 孔隙度
nmDataAttribute m_kxKy; // 各项性系数 (求解器中没有用到)
// 油相PVT单值
nmDataAttribute m_Bo; // 油体积系数
nmDataAttribute m_Miuo; // 油相粘度
// 气相PVT单值
nmDataAttribute m_Bg; // 气体积系数
nmDataAttribute m_Miug; // 气相粘度
// 水相PVT单值
nmDataAttribute m_Bw; // 水体积系数
nmDataAttribute m_Miuw; // 水相粘度
// 压缩系数
nmDataAttribute m_Ct; // 综合压缩系数
nmDataAttribute m_Cf; // 岩石压缩系数
nmDataAttribute m_reservoirType; // 储层类型 (求解器中没有用到)
nmDataAttribute m_transmissibility; // 传导率 (求解器中没有用到)
// 初始饱和度
nmDataAttribute m_Soi; // 初始含油饱和度
nmDataAttribute m_Sgi; // 初始含气饱和度
nmDataAttribute m_Swi; // 初始含水饱和度
double m_dTempGasRe; // 气藏温度 (求解器中没有用到)
NM_PHASE_TYPE m_ePhaseType; // 多相流类型
static nmDataReservoir* s_instance;
};