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;
}