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

70 lines
3.1 KiB
C

#pragma once
#include "Defines.h"
#include "mAlgDefines.h"
#include "mModuleDefines.h"
#include "nmData_global.h"
#include <QMap>
#include <QColor>
#include <QString>
#include <QStringList>
#include <QVector>
// 数据层访问分析窗口上下文的抽象接口
// nmData只依赖这个接口,不直接包含nmSubWnd中的具体窗口类
class NM_DATA_EXPORT nmDataAnalyzeContextProvider {
public:
virtual ~nmDataAnalyzeContextProvider() {}
// 获取当前分析窗口选中的流动段索引
virtual bool getCurrentSegmentIndex(void* pFitting, int& nIndexF) = 0;
// 获取当前流动段分析实际使用的压力、流量 Gauge Code。
virtual bool getCurrentSegmentGaugeCodes(
void* pFitting,
QString& sPressureCurveName,
QString& sFlowCurveName) = 0;
// 获取当前流动段分析保存的多相流量矩阵。
// 数据按纵向向量组织:[0]时间、[1]油、[2]气、[3]水;这里只复制窗口快照,不修改业务数据。
virtual bool getCurrentSegmentMultiPhaseData(
void* pFitting,
QString& sFlowCurveName,
VVecDouble& vvecMultiPhaseData) = 0;
// 获取基础数据中的PVT相态类型
virtual bool getBasicPft(void* pFitting, PvtFluidType& eType) = 0;
// 按参数名获取PVT基础参数值
virtual bool getPvtParaValues(void* pFitting, const QStringList& listParas, QMap<QString, double>& mapValues) = 0;
// 获取基础分层数据
virtual bool getBasicDataLayers(void* pFitting, VVecVariant& vvecLayerData) = 0;
// 获取指定相态和参数名对应的PVT曲线结果
virtual bool getPvtRstOf(void* pFitting, PvtFluidType eType, const QString& sPara, VecDouble& vecX, VecDouble& vecY) = 0;
// 获取Diffusion页面中某个参数的具体数值
virtual bool getDiffusionParaOf(void* pFitting, DiffusionSubOption dso, const QString& sPara, double& d) = 0;
// 获取Diffusion页面中指定子项的计算结果
virtual bool getDiffusionRstOf(void* pFitting, DiffusionSubOption dso, VVecDouble& vvec) = 0;
// 获取当前分析对象通过 mAlgPseudo 计算得到的稠密压力/拟压力转换表。
virtual bool getPseuRstOf(void* pFitting, VVecDouble& vvec) = 0;
// 获取当前结果窗口对应的数值结果保存目录
virtual bool getSaveResultDir(void* pFitting, const QString& sRstCode, QString& sDir) = 0;
// 使用所属分析窗口的配置,将原始压力逐点转换为拟压力。
virtual bool convertPressureToPseudoPressure(
void* pFitting, const VecDouble& vecPressure, VecDouble& vecPseudoPressure) = 0;
// 按基础表层名及其行顺序读取所属分析保存的层颜色,只返回值副本,不暴露界面或层描述指针。
// 成功时 vecColors 与 listLayerNames 等长;某层无法匹配或没有有效颜色时,对应项为无效 QColor。
// 不支持分层颜色的分析返回 false,由调用方决定默认颜色;本接口不修改新建分析的数据。
virtual bool getBasicLayerColors(void* pFitting, const QStringList& listLayerNames,
QVector<QColor>& vecColors) = 0;
};