From f2d58bf502e47047cbdb761c2d105613c0c9a3bd Mon Sep 17 00:00:00 2001 From: lvjunjie Date: Wed, 27 May 2026 14:41:35 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9nmDataReservoir=E9=BB=98?= =?UTF-8?q?=E8=AE=A4=E6=9E=84=E9=80=A0=E7=9A=84=E5=8F=82=E6=95=B0=EF=BC=8C?= =?UTF-8?q?=E4=BB=A5=E5=8F=8A=E8=B0=83=E6=95=B4=E8=8E=B7=E5=8F=96=E7=9A=84?= =?UTF-8?q?=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Src/nmNum/nmData/nmDataAnalyzeManager.cpp | 52 +++-------------------- Src/nmNum/nmData/nmDataReservoir.cpp | 18 ++++---- 2 files changed, 14 insertions(+), 56 deletions(-) diff --git a/Src/nmNum/nmData/nmDataAnalyzeManager.cpp b/Src/nmNum/nmData/nmDataAnalyzeManager.cpp index f010109..c5278e2 100644 --- a/Src/nmNum/nmData/nmDataAnalyzeManager.cpp +++ b/Src/nmNum/nmData/nmDataAnalyzeManager.cpp @@ -1497,10 +1497,6 @@ void nmDataAnalyzeManager::initPvtParaFromSubFit() Q_ASSERT(nullptr != pSubWndFitting); Q_ASSERT(nullptr != pContextProvider); - // 获取PEBI网格需要的Pvt数据 - // 定义返回结果的 QMap - QMap mapPebiPvtPara; - if(nullptr != pSubWndFitting && nullptr != pContextProvider) { PvtFluidType eType = WFT_Null; pContextProvider->getBasicPft(pSubWndFitting, eType); @@ -1510,34 +1506,6 @@ void nmDataAnalyzeManager::initPvtParaFromSubFit() bool bReadWaterPvt = false; resolvePvtPhaseReadFlags(eType, bReadOilPvt, bReadGasPvt, bReadWaterPvt); - QStringList listPvtParas; - // 单值参数同样按当前相态筛选,避免读取不存在的Phase子窗口 - if(bReadOilPvt) { - listPvtParas << "Pb" //压力, MPa - << "Rs" //溶解气油比, m^3/m^3 - << "Bo" //油体积系数, m^3/m^3 - << "Co" //油压缩系数, 1/MPa - << "Miuo" //油粘度, mPa·s - << "Rhoo"; //油密度, kg/m^3 - } - if(bReadGasPvt) { - listPvtParas << "Rv" //凝析油气比, m^3/m^3 - << "Bg" //气体积系数, m^3/m^3 - << "Cg" //气压缩系数, 1/MPa - << "Miug" //气粘度, mPa·s - << "Rhog" //气密度, kg/m^3 - << "Zg"; //气偏差因子, 1 - } - if(bReadWaterPvt) { - listPvtParas << "Rsw" //溶解气水比, m^3/m^3 - << "Bw" //水体积系数, m^3/m^3 - << "Cw" //水压缩系数, 1/MPa - << "Miuw" //水粘度, mPa·s - << "Rhow"; //水密度, kg/m^3 - } - // Ct/Cf为基础单值参数,保留原有读取逻辑 - listPvtParas << "Ct" - << "Cf"; //QVector vecPressure; // 压力, MPa QVector vecRso; // 溶解气油比, m^3/m^3 @@ -1556,7 +1524,6 @@ void nmDataAnalyzeManager::initPvtParaFromSubFit() QVector vecCw; // 水压缩系数, 1/MPa QVector vecMiuw; // 水粘度, mPa·s QVector vecRouw; // 水密度, kg/m^3 - pContextProvider->getPvtParaValues(pSubWndFitting, listPvtParas, mapPebiPvtPara); VecDouble vecX; @@ -1568,18 +1535,13 @@ void nmDataAnalyzeManager::initPvtParaFromSubFit() m_pebiPvtPara = new nmDataPvtParaForPebi; - // 饱和压力为单值参数,读到时覆盖求解器默认值 - if(mapPebiPvtPara.contains("Pb")) { - m_pebiPvtPara->setPb(nmDataAttribute("Pb", mapPebiPvtPara.value("Pb"), "MPa")); - } + // 气油比不按相态区分,所有情况都尝试读取 + pContextProvider->getPvtRstOf(pSubWndFitting, WellFluidType::WFT_Oil, "Rs", vecX, vecRso); + m_pebiPvtPara->setRso(vecRso); + setPebiPressureIfEmpty(m_pebiPvtPara, vecX); - // PVT结果曲线也只读取当前相态已有的页,缺失相态保留PEBI默认数据 + // 其他PVT结果曲线只读取当前相态已有的页,缺失相态保留PEBI默认数据 if(bReadOilPvt) { - // 气油比 - pContextProvider->getPvtRstOf(pSubWndFitting, WellFluidType::WFT_Oil, "Rs", vecX, vecRso); - m_pebiPvtPara->setRso(vecRso); - setPebiPressureIfEmpty(m_pebiPvtPara, vecX); - // 油体积系数 pContextProvider->getPvtRstOf(pSubWndFitting, WellFluidType::WFT_Oil, "Bo", vecX, vecBo); m_pebiPvtPara->setBo(vecBo); @@ -1602,10 +1564,6 @@ void nmDataAnalyzeManager::initPvtParaFromSubFit() } if(bReadGasPvt) { - // 凝析油气比 - pContextProvider->getPvtRstOf(pSubWndFitting, WellFluidType::WFT_Gas, "Rv", vecX, vecRv); - m_pebiPvtPara->setRv(vecRv); - setPebiPressureIfEmpty(m_pebiPvtPara, vecX); // 气体积系数 pContextProvider->getPvtRstOf(pSubWndFitting, WellFluidType::WFT_Gas, "Bg", vecX, vecBg); diff --git a/Src/nmNum/nmData/nmDataReservoir.cpp b/Src/nmNum/nmData/nmDataReservoir.cpp index 489dd48..4432c88 100644 --- a/Src/nmNum/nmData/nmDataReservoir.cpp +++ b/Src/nmNum/nmData/nmDataReservoir.cpp @@ -2,21 +2,21 @@ #include "ZxSerializer.h" nmDataReservoir::nmDataReservoir() { - m_initialPressure = nmDataAttribute("Initial Pressure",50.0, "MPa", UNIT_TYPE_PRESSURE, QStringList(), QStringList() << "psia" << "Pa" << "kPa" << "atm" << "bara" << "kg/cm^2" << "m" << "psig" << "bar" << "MPa" << "kPag"); + m_initialPressure = nmDataAttribute("Initial Pressure",40.0, "MPa", UNIT_TYPE_PRESSURE, QStringList(), QStringList() << "psia" << "Pa" << "kPa" << "atm" << "bara" << "kg/cm^2" << "m" << "psig" << "bar" << "MPa" << "kPag"); m_reservoirType = nmDataAttribute("Reservoir type", "Homogeneous", "", UNIT_TYPE_DIMENSIONLESS, QStringList() << "Homogeneous" << "Dual porosity pseudo steady state", QStringList()); - m_Bo = nmDataAttribute("Bo", 0.0, ""); - m_permeability = nmDataAttribute("Permeability", 0.025, "Darcy", UNIT_TYPE_PERMEABILITY, QStringList(), QStringList() << "md" << "Darcy" << "m^2" << "cm^2" << "um^2"); + m_Bo = nmDataAttribute("Bo", 1.2, ""); + m_permeability = nmDataAttribute("Permeability", 0.001, "Darcy", UNIT_TYPE_PERMEABILITY, QStringList(), QStringList() << "md" << "Darcy" << "m^2" << "cm^2" << "um^2"); m_thickness = nmDataAttribute("Thickness", 10.0, "m", UNIT_TYPE_LENGTH, QStringList(), QStringList() << "ft" << "m" << "cm" << "mm" << "in" << "0.1 in" << "mile" << "km"); - m_porosity = nmDataAttribute("Porosity", 0.0245, "", UNIT_TYPE_DIMENSIONLESS, QStringList(), QStringList()); + m_porosity = nmDataAttribute("Porosity", 0.1, "", UNIT_TYPE_DIMENSIONLESS, QStringList(), QStringList()); m_Ct = nmDataAttribute("Ct", 0.001, "", UNIT_TYPE_DIMENSIONLESS, QStringList(), QStringList()); m_kxKy = nmDataAttribute("Kx/Ky", 1.0, "", UNIT_TYPE_DIMENSIONLESS, QStringList(), QStringList()); - m_Cf = nmDataAttribute("Cf", 0.001, "", UNIT_TYPE_DIMENSIONLESS, QStringList(), QStringList()); - m_Miuo = nmDataAttribute("Miuo", 0.0, "", UNIT_TYPE_DIMENSIONLESS, QStringList(), QStringList()); + m_Cf = nmDataAttribute("Cf", 0.0001, "", UNIT_TYPE_DIMENSIONLESS, QStringList(), QStringList()); + m_Miuo = nmDataAttribute("Miuo", 0.5, "", UNIT_TYPE_DIMENSIONLESS, QStringList(), QStringList()); // 初始饱和度 - m_Soi = nmDataAttribute("Soi", 1.0, "", UNIT_TYPE_DIMENSIONLESS, QStringList(), QStringList()); + m_Soi = nmDataAttribute("Soi", 0.8, "", UNIT_TYPE_DIMENSIONLESS, QStringList(), QStringList()); m_Sgi = nmDataAttribute("Sgi", 0.0, "", UNIT_TYPE_DIMENSIONLESS, QStringList(), QStringList()); - m_Swi= nmDataAttribute("Swi", 0.0, "", UNIT_TYPE_DIMENSIONLESS, QStringList(), QStringList()); + m_Swi= nmDataAttribute("Swi", 0.2, "", UNIT_TYPE_DIMENSIONLESS, QStringList(), QStringList()); m_dTempGasRe = 100; m_ePhaseType = PHASE_Oil; @@ -346,4 +346,4 @@ void nmDataReservoir::setSwi(const nmDataAttribute &attr) { nmDataAttribute& nmDataReservoir::getSwi() { return m_Swi; -} \ No newline at end of file +}