diff --git a/Bin/Config/Lang/cn/nmNum_cn.qm b/Bin/Config/Lang/cn/nmNum_cn.qm index 920aec6..18730d7 100644 Binary files a/Bin/Config/Lang/cn/nmNum_cn.qm and b/Bin/Config/Lang/cn/nmNum_cn.qm differ diff --git a/Bin/Config/Lang/cn/nmNum_cn.ts b/Bin/Config/Lang/cn/nmNum_cn.ts index 6a8259c..97b2f4f 100644 --- a/Bin/Config/Lang/cn/nmNum_cn.ts +++ b/Bin/Config/Lang/cn/nmNum_cn.ts @@ -5378,6 +5378,18 @@ Please check your input coordinates. 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; }