#pragma once #include "mAlgDefines.h" #include "ZxBaseUtil.h" #include "mAlgDefines_global.h" class iModelDesc; class iModelInfoBase; // 模型选项内容 class M_ALG_DEFINES_EXPORT iModelOption { public: iModelOption(); void clone(iModelOption* p); //克隆 // 这是对应ListWx各项项 enum mpDescs { // 无标志 descNone = 0, // 井储 descWbs = 0x00000001, // 井型 descWel = 0x00000002, // 油藏类型 descRes = 0x00000004, // 边界 descBdy = 0x00000008, // 其它1 descOther1 =0x00000010, // 其它2 descOther2 =0x00000020, // 扩展1 descExt1 = 0x00000040, // 扩展2 descExt2 = 0x00000080, // 扩展3 descExt3 = 0x00000100, // 扩展4 descExt4 = 0x00000200, // 扩展5 descExt5 = 0x00000400, // 扩展6 descExt6 = 0x00000800, // 待定 descUnknown = 0x00001000 }; // 这是对应Checkbox勾选项 enum mpFlags { // 无标志 flagNone = 0, // 启用压力梯度 flagPressGrad = 0x00000001, // 动态渗透率 flagDynamicK = 0x00000002, // 小信号 flagSmallSignal = 0x00000004, // 应力敏感 flagStressSensitive = 0x00000008, // 井间干扰 flagInterference = 0x00000010, // 压裂井 flagFractuWell = 0x00000020, // 吸附系数 flagAdsorption = 0x00000040, // 扩展2 flagExt2 = 0x00000080, // 扩展3 flagExt3 = 0x00000100, // 扩展4 flagExt4 = 0x00000200, // 扩展5 flagExt5 = 0x00000400, // 扩展6 flagExt6 = 0x00000800, // 待定 flagUnknown = 0x00001000 }; public: // 标识开启(对应界面上√) bool isFlagOpen(mpFlags flags) const; void setFlagOpen(mpFlags flags, bool bOpen); void setFlagOpen(QString key, bool bOpen); // 设置模型选项,如井储、井型等 void setMpDesc(QString key, QString sCode, QString sTag = ""); void setMpDesc(mpDescs descs, QString sCode, QString sTag = ""); // 为了方便调用增加 m_Assist_Type getAssistType(); QString getTagWbs(); QString getTagWel(); QString getTagRes(); QString getTagBdy(); QString getTagOfTypeId(int id, const QVector* pVec); //扩展ID对XA的接口 QString getIDWbs(); QString getIDWel(); QString getIDRes(); QString getIDBdy(); QString getIDOfTypeId(int id, const QVector* pVec); // 是否外部模型 AlgModelSrc getAMS(); // bool isCustomModel(); // bool isWxdModel(); QString sumModelInfos(); void parseModelInfos(QString s); // 每次从界面重新处理前重置一下 void reset(); public: // 根据文字获取 iModelDesc* matchModelDesc(); bool checkModelDesc(bool loggedIfError = false); iModelDesc* getModelDesc(); QString getOptionStr(); //当前选项描述,为啥弹出日志 static WellFluidType convertFluidType(QString sTag); static ModelSeriesType convertModelSeries(QString sTag); protected: mpFlags m_oFlags; // 不涉及序列化,该Option对应的ModelDesc // 如果为空,则表示该Option为不支持的算法模型 iModelDesc* m_pModelDesc; public: // 对应四个选项,井储、井模型、油藏模型、边界类型 m_Wbs_Type m_oWbsType; m_Wel_Type m_oWelType; m_Res_Type m_oResType; m_Bdy_Type m_oBdyType; ModelSeriesType m_oMst; //大的分类信息,这是软件启动时导航的选项 WellFluidType m_oWft; //井类别,指:油气水井 QString m_sModelCode; //这是模型统一编码 };