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

360 lines
12 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 <QString>
// 对于一些原先代码,尽管不再启用,但有时候需要看一下,即可放开该定义方便查看
//#define _SCAN_OLD_CODES_ 1
#define _isLimitedDouble zxMathBase::isLimitedValue<double>
// 对应四个选项,井储、井模型、油藏模型、边界类型
#define _oWbsType m_pModelOption->m_oWbsType
#define _oWelType m_pModelOption->m_oWelType
#define _oResType m_pModelOption->m_oResType
#define _oBdyType m_pModelOption->m_oBdyType
#define _oWft m_pModelOption->m_oWft
#define _oMst m_pModelOption->m_oMst
#define _oAssistType m_pModelOption->getAssistType()
// 大的模型分类,导航中选定
enum ModelSeriesType
{
MST_LP = 0, //低渗透
MST_HW, //水平井
MST_SR, //特殊油藏
MST_PF, //聚合物
// MST_XD, //wxd
// MST_XA, //XA
MST_UNKNOWN
};
// 特征点/线
enum eCharactType
{
CT_POINT = 0, //特征线类型
CT_LINE, //特征点类型
CT_UNKNOW
};
// 井流体性质,油气水井
enum WellFluidType
{
WFT_Null = 0, //什么都没有选,这个时候不能下一步
WFT_Oil = 1, //油井 或油相
WFT_Gas = 2, //气井 或气相
WFT_Water = 4, //水井 或水相
WFT_Condense = 8, //凝析油气
WFT_PF = 16, //聚合物
WFT_CO2 = 32, //CO2
WFT_Oil_Gas = 3, //1+2
WFT_Oil_Water = 5, //1+4
WFT_Gas_Water = 6, //2+4
WFT_Condense_Water =12, //8+4
WTF_Oil_Gas_Water = 7, //1+2+4
WTF_PF_Water = 20, //16+4
WTF_CO2_Water = 36, //32+4
WTF_StateEquation=64, //状态方程
WTF_StateEquation_Water = 68, //64+4
WFT_Unknown = 256
};
#define PvtFluidType WellFluidType
// Pvt流体大的分类
enum PvtFluidClass
{
PFC_Common = 0, //常规
PFC_Special, //特殊
PFC_StateEquation, //状态方程
PFC_Unknown
};
// 井型,直井水平井等
enum WellOrientType
{
WOT_Vert = 0, //直井
WOT_Hori, //水平井
WOT_Unknown
};
// 井储类型确保与xml配置的ID一一对应
enum m_Wbs_Type
{
WBST_Fixed = 0, //定井储
WBST_None = 1, //无井储
WBST_Fair = 2, //变井储(Fair)
WBST_Hegeman = 3, //变井储(Hegeman)
WBST_SpiveyPacker = 4, //变井储(Spivey Packer)
WBST_SpiveyFissures = 5 //变井储(Spivey Fissures)
};
// 井型类型确保与xml配置的ID对应
enum m_Wel_Type
{
// 直井
WT_V = 100, //直井·完全打开
WT_PCL = 101, //直井·部分打开
// 压裂直井
WT_PUF = 102, //压裂直井·均匀流量
WT_PCI = 103, //压裂直井·无限导流
WT_PCF = 110, //压裂直井·有限导流20250801,压裂直井(有限导流)+均质,借用 拟径向流具体咨询xieh
WT_PCFL = 104, //压裂直井·有限导流·三线性流(北京)
WT_PCFR = 105, //压裂直井(有限导流)-拟径向流暂时屏蔽20260417模型整合
WT_PCFF = 106, //压裂直井·有限导流·全解析
WT_PC2 = 107, //压裂直井·有限导流·两段裂缝
WT_PC3 = 108, //压裂直井·有限导流·三段裂缝
WT_PCF2 = 109, //压裂直井(有限导流)-两段暂时屏蔽20260417模型整合
// 水平井
WT_H = 200, //水平井暂时屏蔽不再启用2024年前就不再启用了
WT_HCM = 201, //常规水平井(即原来的点源水平井)
WT_HSL2 = 202, //水平井·两段流量
WT_HSL2BW = 203, //水平井·两段流量·底水
WT_HSL3 = 204, //水平井·三段流量
WT_HSL3BW = 205, //水平井·三段流量·底水
// 压裂水平井
WT_PFCM = 206, //多级压裂水平井暂时屏蔽20260417模型整合
WT_PICM = 207, //压裂水平井·不均匀流量
// 斜井
WT_DEV = 300, //完全打开斜井
// 王晓东教授
WT_WXD_PCL =600, //直接有限导流4
WT_WXD_V = 601, //普通直井
// 西安林加恩教授
WT_LJE_HMGEN = 700, //西安测试
WT_OTHER_GRID = 998, //网格划分,权宜之计,借用一下
WT_NONE = 999
};
// 储层类型确保与xml配置的ID对应
enum m_Res_Type
{
// 常规
RT_HMGE = 100, //均质
RT_HMGE_EX = 101, //均质油藏(扩展),baiwp算法暂时屏蔽不再启用2024年前就不再启用了
RT_DUALPRO_PS = 102, //双孔拟稳态
RT_DUALPRO_PLA =103, //双孔板状非稳态
RT_DUALPRO_BAL =104, //双孔球状非稳态
RT_DUALPRO_CYL =105, //双孔柱状非稳态
RT_DUALPER = 106, //双重渗透暂时屏蔽不再启用2024年前就不再启用了
RT_COMP2 = 107, //双区复合暂时屏蔽不再启用2024年前就不再启用了
RT_COMP3 = 108, //三区复合暂时屏蔽不再启用2024年前就不再启用了
RT_TRI_K = 116, //三孔拟稳态
RT_TRI_K_EX = 117, //三孔单渗嵌套拟稳态暂时屏蔽20260417模型整合
//////////////////////////////////////////////////////////
// 如下全部暂时屏蔽不再启用从2024年开始
RT_MedComp12 = 200, //多重介质径向复合内1外2
RT_MedComp13 = 201, //多重介质径向复合内1外3
RT_MedComp22 = 202, //多重介质径向复合内2外2
RT_MedComp23 = 203, //多重介质径向复合内2外3
RT_MedComp33 = 204, //多重介质径向复合内3外3
RT_TLC_None = 205, //双层无越流
RT_TLC_NoneEx = 206, //双层无越流(封闭)
RT_TLC_Common = 207, //双层越流
RT_TLC_Comp = 208, //双层越流径向复合
RT_MULTILAYER_P = 209, //双层压裂
RT_HMGE_WATER = 210, //均质油藏(水井)
RT_LINEAR_COMP = 211, //线性复合
// 水平井
// RT_HMGE = 100, //均质油藏,注释表示前面已经定义,下同
// RT_DUALPRO_PS = 102, //双重孔隙——拟稳态
RT_DUALPRO_POSSRC = 300,//双重孔隙(点源)
// 特殊油气藏
// RT_HMGE = 100, //均质油藏,注释表示前面已经定义,下同
// RT_HMGE_EX = 101, //均质油藏(扩展),baiwp算法
// RT_DUALPRO_PS = 102, //双重孔隙——拟稳态
// RT_COMP2 = 107, //双区复合
// RT_COMP3 = 108, //三区复合
RT_SR_COMP = 350, //径向复合,就是双区
// 其他废弃
// RT_SR_HMGE, //均质油藏
// RT_DUALPRO, //双重孔隙 就是拟稳态
RT_SR_CONDENSE_COMP2 = 398, //凝析气两区复合
RT_SR_CONDENSE_COMP3 = 399, //凝析气三区复合
// 聚合物(后续进行考虑)
RT_HMGE_NON_NT = 400, //均质油藏(非牛顿)
RT_COMP2_NON_NT_NT = 401, //双区复合(非牛顿-牛顿)
RT_COMP2_NT_NON_NT = 402, //双区复合(牛顿-非牛顿)
RT_FLOW2 = 403, //双层窜流
RT_FLOW3 = 404, //三层窜流
RT_FLOW2COM2ONN = 405, //双层窜流复合(非牛顿-牛顿)
RT_FLOW2COM2NON = 406, //双层窜流复合(牛顿-非牛顿)
RT_BIGPORE = 407, //大孔道油藏
RT_INTERFERENCE = 408, //井间干扰该项比较特殊需要根据checkbox进行动态调整
RT_FRACT = 409, //
// End of 全部暂时屏蔽不再启用从2024年开始
//////////////////////////////////////////////////////////
// 聚合物,解析解,算法提供者 殷维 TODO
RT_HMGE_NON_NT_ANAL = 410, //非牛顿
RT_COMP2_NON_NT_NT_ANAL = 411, //非牛顿-牛顿
RT_COMP2_NT_NON_NT_ANAL = 412, //牛顿-非牛顿
//王晓东教授
RT_WXD_LINEPS = 600, //垂直裂缝线源解
RT_WXD_HMGE = 601, //普通直井
//西安林加恩教授
RT_LJE_HMGEN = 700, //西安测试
RT_NONE = 999
};
// 边界类型确保与xml配置的ID一一对应
enum m_Bdy_Type
{
BT_None = 0, //无限大
BT_Single = 1, //单一边界
BT_Parallel = 2,//平行边界
BT_Tri = 3, //U型边界
BT_Cross = 4, //交叉边界
BT_Circle = 5, //圆形边界
BT_Rect = 6 //矩形边界
};
// 启用选项
enum m_Assist_Type
{
ASST_PG = 0, //启动压力梯度
ASST_DK, //动态渗透率
ASST_SS, //小信号
ASST_AP, //吸附系数
//临时
ASST_INTER, //考虑井间干扰
ASST_FRACT, //考虑压裂井
// SR
ASST_SSST, //StressSensitive应力敏感
ASST_NONE
};
// 模型源码来源
enum AlgModelSrc
{
AMS_Inner = 0, //内部,石大北京程时清教授团队
AMS_Wxd = 600, //王晓东教授团队:(井型 600 开始 或者 储层类型 600开始
AMS_Lje = 700, //西安林教授团队:(井型 700 开始 或者 储层类型 700开始
AMS_Chy = 800, //科大褚老师团队:(井型 800 开始 或者 储层类型 800开始
AMS_Rjj = 900, //西南任俊杰团队:(井型 900 开始 或者 储层类型 900开始
AMS_UNKNOWN
};
// 是否第一次运行(这个参数的主要意义是一些基础参数
// 再运行的过程中提取出来,下次比如拟合的过程中不需要重复的去计算)
enum AlgCalMode
{
ACM_FitModel = 0, //模型生成
ACM_FitAuto, //自动拟合
ACM_FitPlate, //图版拟合
ACM_FitModelAfterAuto, //自动拟合之后再次模型生成
ACM_UNKNOWN
};
enum Fit_Type
{
FT_Model = 0, //常规生成模型,其实不属于拟合
FT_Auto, //自动拟合
FT_Plate, //图版拟合
FT_Anal, //试井设计
FT_Unknown
};
enum Fit_Method
{
FM_GaussNewton = 0, //高斯牛顿
FM_GaussNewtonEx, //归一化高斯牛顿
FM_Genetic, //遗传算法
FM_ParticleSwarm, //粒子群算法(Particle Swarm Optimization)
FM_Unknown
};
enum WellPointType
{
WPT_Normal = 0, //常规
WPT_Center, //观察井、中心井
WPT_Active //激动井、干扰井
};
// 结构体,对应拟合参数的设置
struct zxFitParaInfo
{
QString fpiName; //拟合参数名称,英文标识,如"S"
double fpiValue;//参数值
double fpiMax; //参数最大值
double fpiMin; //参数最小值
QString fpiUnit; //参数单位
bool fpiChecked;//参数是否启用拟合(即前面是否打上√)
};
// 压力导数曲线(实际)
#define s_Souce_Curve "Souce"
#define s_Deriv_Curve "Deriv"
#define s_SmallSig_Curve "SmallSig"
#define s_Ppd_Curve "Ppd"
#define s_Deriv_NoOverlay_Curve "NoOverlay_Deriv"
#define s_Souce_Curve_Raw "Souce_Raw"
#define s_Deriv_Curve_Raw "Deriv_Raw"
// 压力导数曲线(理论)
#define s_TheorySouce_Curve "TheorySouce"
#define s_TheoryDeriv_Curve "TheoryDeriv" //带叠加原理
#define s_TheorySmallSig_Curve "TheorySmallSig"
#define s_TheoryPpd_Curve "TheoryPpd"
#define s_TheoryDeriv_NoOverlay_Curve "NoOverlay_TheoryDeriv" //无叠加原理
// 历史曲线
#define s_HistorySouce_CurveP "HistorySouce"
#define s_HistoryFit_CurveP "HistoryFit"
// 历史曲线增加流量显示
#define s_HistorySouce_CurveF "HistorySouceF"
//
#define s_SemiSouce_Curve "SemiSouce"
#define s_SemiTheorySouce_Curve "SemiTheorySouce"
// 反褶积计算结果标识
// 压力对应的时间
#define s_Tag_Deconv_Tm "DeconvTm"
// 压力数值
#define s_Tag_Deconv_Pm "DeconvPm"
// 压力导数
#define s_Tag_Deconv_DPm "DeconvDPm"
// 压力历史曲线s_Tag_Deconv_Bspin应用于 iGuiPlotPF::getAllVisibleCurvesOf需要格外注意
#define s_Tag_Deconv_Bspin "DeconvBSPIN"
#define s_Tag_Deconv_BspinTm "DeconvBSPINTm"
#define s_Ipr_Source "IprSource"
#define s_Ipr_Fit "IprFit"
#define s_Ipr_FitEx "IprFitEx"
#define s_Ipr_Result "IprResult"
#define s_Ipr_ResultEx "IprResultEx"
#define s_IprPlot_Source "IprSourcePlot"
#define s_IprPlot_Result "IprResultPlot"