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