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/mAlg/mAlgDefines/iModelOption.h

186 lines
4.9 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 "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,
// 是否窜流
flagCrossFlow = 0x00000080,
// 是否多层模型
flagMultiLayer = 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);
// 增加多层模式借助Flag的定义 flagMultiLayer
bool isMultiLayer();
void setMultiLayer(bool b);
// 设置模型选项,如井储、井型等
void setMpDesc(QString key, QString sCode, QString sTag = "");
void setMpDesc(mpDescs descs, QString sCode, QString sTag = "");
// 为了方便调用增加
m_Assist_Type getAssistType();
QString getTagWbs(bool bFullMode = false);
QString getTagWel(bool bFullMode = false);
QString getTagRes(bool bFullMode = false);
QString getTagBdy(bool bFullMode = false);
QString getTagOfTypeId(int id, \
const QVector<iModelInfoBase*>* pVec, \
bool bFullMode = false);
//扩展ID对XA的接口
QString getExtIdWbs();
QString getExtIdWel();
QString getExtIdRes();
QString getExtIdBdy();
static QString getExtIdOfTypeId(int id, const QVector<iModelInfoBase*>* pVec);
// 是否外部模型
AlgModelSrc getAMS();
// bool isCustomModel();
// bool isWxdModel();
QString sumModelInfos();
void parseModelInfos(QString s);
// 每次从界面重新处理前重置一下
void reset();
// 对于北京模型的一些额外判断,临时放在此处
static QStringList getModelSeriesOfBJ();
static bool isModelSerieOfBJ(QString sSerie);
public:
// 根据文字获取
iModelDesc* matchModelDesc();
bool checkModelDesc(bool loggedIfError = false);
iModelDesc* getModelDesc();
QString getOptionStr(); //当前选项描述,为啥弹出日志
// 根据井型+储层类型编码获取当前的配置的序列Serie
static iModelDesc* getModelSerieBy(QString sCodeWel, QString sCodeRes, \
QString sTagWel = "", QString sTagRes = "", \
bool bAdsorption = false);
// static WellFluidType convertFluidType(QString sTag);
static ModelSeriesType convertModelSeries(QString sTag);
//ZXF20241216根据井和储层得到模型
static iModelDesc* getModelDescEx(QString sWelCode, QString sResCode, bool bAdsorption);
//选择的类型
iModelInfoBase* getSelModelInfo(QString sOption);
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; //井类别,指:油气水井
#ifdef _SCAN_OLD_CODES_
QString m_sModelCode; //这是模型统一编码
#endif
};