From b2a0e6cbaaa810cc256da6139f910b6bb99984e0 Mon Sep 17 00:00:00 2001 From: lh <2334563547@qq.com> Date: Tue, 8 Sep 2026 14:05:08 +0800 Subject: [PATCH] =?UTF-8?q?fix(nmSubWxs):=20=E5=AE=8C=E5=96=84=E6=9C=AA?= =?UTF-8?q?=E5=BC=80=E6=94=BE=E5=A4=9A=E7=9B=B8=E6=B1=82=E8=A7=A3=E6=A8=A1?= =?UTF-8?q?=E5=9E=8B=E7=9A=84=E7=95=8C=E9=9D=A2=E6=98=BE=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 补充油气两相、气水两相和油气水三相的模型名称 - 未开放模型显示“暂不支持求解”,避免当前模型下拉框为空 - 禁用未开放模型的下拉切换,保留现有求解范围限制 - 补充中文翻译并更新 qm 文件 --- Bin/Config/Lang/cn/nmNum_cn.qm | Bin 136577 -> 136919 bytes Bin/Config/Lang/cn/nmNum_cn.ts | 12 +++++ Src/nmNum/nmSubWxs/nmWxNumericalDesign.cpp | 56 ++++++++++++++------- 3 files changed, 50 insertions(+), 18 deletions(-) diff --git a/Bin/Config/Lang/cn/nmNum_cn.qm b/Bin/Config/Lang/cn/nmNum_cn.qm index 920aec6bf0580507044031f7fd8d6ed610947d0c..18730d79f74258e2ad40d7c2833e861607059d46 100644 GIT binary patch delta 4603 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 delta 4313 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 Oil-water two-phase 油水两相 + + Oil-gas two-phase (solver unavailable) + 油气两相(暂不支持求解) + + + Gas-water two-phase (solver unavailable) + 气水两相(暂不支持求解) + + + Oil-gas-water three-phase (solver unavailable) + 油气水三相(暂不支持求解) + Include other wells 包含其他井 diff --git a/Src/nmNum/nmSubWxs/nmWxNumericalDesign.cpp b/Src/nmNum/nmSubWxs/nmWxNumericalDesign.cpp index 108f826..a06c16f 100644 --- a/Src/nmNum/nmSubWxs/nmWxNumericalDesign.cpp +++ b/Src/nmNum/nmSubWxs/nmWxNumericalDesign.cpp @@ -101,8 +101,17 @@ static QString solverModelDisplayName(NM_SOLVER_MODEL_TYPE eType) return nmWxNumericalDesign::tr("Water single-phase variable pvt"); case SMT_Gas_VariablePvt: return nmWxNumericalDesign::tr("Gas single-phase variable pvt"); + case SMT_Oil_Gas_TwoPhase: + return nmWxNumericalDesign::tr( + "Oil-gas two-phase (solver unavailable)"); case SMT_Oil_Water_TwoPhase: return nmWxNumericalDesign::tr("Oil-water two-phase"); + case SMT_Gas_Water_TwoPhase: + return nmWxNumericalDesign::tr( + "Gas-water two-phase (solver unavailable)"); + case SMT_Oil_Gas_Water_ThreePhase: + return nmWxNumericalDesign::tr( + "Oil-gas-water three-phase (solver unavailable)"); default: return QString(); } @@ -338,23 +347,33 @@ void nmWxNumericalDesign::updateCurrentModelDisplay() NM_PHASE_TYPE ePhase = (pReservoir != nullptr) ? pReservoir->getPhaseType() : PHASE_UNKNOWN; NM_SOLVER_MODEL_TYPE eCurrentType = pManager->getSolverModelType(); - switch(ePhase) { - case PHASE_Oil: - m_pCurrentModelCombo->addItem(solverModelDisplayName(SMT_Oil_ConstPvt), SMT_Oil_ConstPvt); - m_pCurrentModelCombo->addItem(solverModelDisplayName(SMT_Oil_VariablePvt), SMT_Oil_VariablePvt); - break; - case PHASE_Water: - m_pCurrentModelCombo->addItem(solverModelDisplayName(SMT_Water_ConstPvt), SMT_Water_ConstPvt); - m_pCurrentModelCombo->addItem(solverModelDisplayName(SMT_Water_VariablePvt), SMT_Water_VariablePvt); - break; - case PHASE_Gas: - m_pCurrentModelCombo->addItem(solverModelDisplayName(SMT_Gas_VariablePvt), SMT_Gas_VariablePvt); - break; - case PHASE_Oil_Water: - m_pCurrentModelCombo->addItem(solverModelDisplayName(SMT_Oil_Water_TwoPhase), SMT_Oil_Water_TwoPhase); - break; - default: - break; + const bool bCurrentModelSupported = + nmIsSupportedPebiSolverModel(eCurrentType); + if(!bCurrentModelSupported) { + // 未开放模型仍显示分析页传入的真实相态,但不允许用户切换。 + const QString sCurrentModelName = solverModelDisplayName(eCurrentType); + if(!sCurrentModelName.isEmpty()) { + m_pCurrentModelCombo->addItem(sCurrentModelName, eCurrentType); + } + } else { + switch(ePhase) { + case PHASE_Oil: + m_pCurrentModelCombo->addItem(solverModelDisplayName(SMT_Oil_ConstPvt), SMT_Oil_ConstPvt); + m_pCurrentModelCombo->addItem(solverModelDisplayName(SMT_Oil_VariablePvt), SMT_Oil_VariablePvt); + break; + case PHASE_Water: + m_pCurrentModelCombo->addItem(solverModelDisplayName(SMT_Water_ConstPvt), SMT_Water_ConstPvt); + m_pCurrentModelCombo->addItem(solverModelDisplayName(SMT_Water_VariablePvt), SMT_Water_VariablePvt); + break; + case PHASE_Gas: + m_pCurrentModelCombo->addItem(solverModelDisplayName(SMT_Gas_VariablePvt), SMT_Gas_VariablePvt); + break; + case PHASE_Oil_Water: + m_pCurrentModelCombo->addItem(solverModelDisplayName(SMT_Oil_Water_TwoPhase), SMT_Oil_Water_TwoPhase); + break; + default: + break; + } } int nIndex = m_pCurrentModelCombo->findData(eCurrentType); @@ -362,7 +381,8 @@ void nmWxNumericalDesign::updateCurrentModelDisplay() m_pCurrentModelCombo->setCurrentIndex(nIndex); } - m_pCurrentModelCombo->setEnabled(true); + m_pCurrentModelCombo->setEnabled( + bCurrentModelSupported && m_pCurrentModelCombo->count() > 0); m_bFillingCurrentModelCombo = false; }