mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
#2249 Summary Plot Editor. Support for plotting individual aquifers
This commit is contained in:
parent
17ece26929
commit
6ffcb703fd
@ -280,6 +280,7 @@ RimSummaryCurve* RicPlotProductionRateFeature::addSummaryCurve( RimSummaryPlot*
|
|||||||
"",
|
"",
|
||||||
-1,
|
-1,
|
||||||
-1,
|
-1,
|
||||||
|
-1,
|
||||||
-1);
|
-1);
|
||||||
|
|
||||||
if (!gridSummaryCase->summaryReader()->hasAddress(addr))
|
if (!gridSummaryCase->summaryReader()->hasAddress(addr))
|
||||||
|
@ -88,6 +88,9 @@ RifEclipseSummaryAddress::RifEclipseSummaryAddress(SummaryVarCategory category,
|
|||||||
m_cellJ = std::get<1>(ijkTuple);
|
m_cellJ = std::get<1>(ijkTuple);
|
||||||
m_cellK = std::get<2>(ijkTuple);
|
m_cellK = std::get<2>(ijkTuple);
|
||||||
break;
|
break;
|
||||||
|
case SUMMARY_AQUIFER:
|
||||||
|
m_aquiferNumber = RiaStdStringTools::toInt(identifiers[INPUT_AQUIFER_NUMBER]);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set quantity for all categories
|
// Set quantity for all categories
|
||||||
@ -195,6 +198,11 @@ std::string RifEclipseSummaryAddress::uiText() const
|
|||||||
text += ":" + formatUiTextIJK();
|
text += ":" + formatUiTextIJK();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case RifEclipseSummaryAddress::SUMMARY_AQUIFER:
|
||||||
|
{
|
||||||
|
text += ":" + std::to_string(this->aquiferNumber());
|
||||||
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return text;
|
return text;
|
||||||
@ -214,6 +222,7 @@ std::string RifEclipseSummaryAddress::uiText(RifEclipseSummaryAddress::SummaryId
|
|||||||
case RifEclipseSummaryAddress::INPUT_CELL_IJK: return formatUiTextIJK();
|
case RifEclipseSummaryAddress::INPUT_CELL_IJK: return formatUiTextIJK();
|
||||||
case RifEclipseSummaryAddress::INPUT_LGR_NAME: return lgrName();
|
case RifEclipseSummaryAddress::INPUT_LGR_NAME: return lgrName();
|
||||||
case RifEclipseSummaryAddress::INPUT_SEGMENT_NUMBER: return std::to_string(wellSegmentNumber());
|
case RifEclipseSummaryAddress::INPUT_SEGMENT_NUMBER: return std::to_string(wellSegmentNumber());
|
||||||
|
case RifEclipseSummaryAddress::INPUT_AQUIFER_NUMBER: return std::to_string(aquiferNumber());
|
||||||
case RifEclipseSummaryAddress::INPUT_VECTOR_NAME: return quantityName();
|
case RifEclipseSummaryAddress::INPUT_VECTOR_NAME: return quantityName();
|
||||||
}
|
}
|
||||||
return "";
|
return "";
|
||||||
@ -283,6 +292,10 @@ bool RifEclipseSummaryAddress::isValid() const
|
|||||||
if (m_cellJ == -1) return false;
|
if (m_cellJ == -1) return false;
|
||||||
if (m_cellK == -1) return false;
|
if (m_cellK == -1) return false;
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
|
case SUMMARY_AQUIFER:
|
||||||
|
if (m_aquiferNumber == -1) return false;
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
@ -409,7 +422,11 @@ bool operator==(const RifEclipseSummaryAddress& first, const RifEclipseSummaryAd
|
|||||||
if(first.cellK() != second.cellK()) return false;
|
if(first.cellK() != second.cellK()) return false;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case RifEclipseSummaryAddress::SUMMARY_AQUIFER:
|
||||||
|
{
|
||||||
|
if (first.aquiferNumber() != second.aquiferNumber()) return false;
|
||||||
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -489,6 +506,11 @@ bool operator<(const RifEclipseSummaryAddress& first, const RifEclipseSummaryAdd
|
|||||||
if(first.cellK() != second.cellK()) return (first.cellK() < second.cellK());
|
if(first.cellK() != second.cellK()) return (first.cellK() < second.cellK());
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case RifEclipseSummaryAddress::SUMMARY_AQUIFER:
|
||||||
|
{
|
||||||
|
if (first.aquiferNumber() != second.aquiferNumber()) return first.aquiferNumber() < second.aquiferNumber();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
@ -59,7 +59,8 @@ public:
|
|||||||
INPUT_CELL_IJK,
|
INPUT_CELL_IJK,
|
||||||
INPUT_LGR_NAME,
|
INPUT_LGR_NAME,
|
||||||
INPUT_SEGMENT_NUMBER,
|
INPUT_SEGMENT_NUMBER,
|
||||||
INPUT_VECTOR_NAME
|
INPUT_AQUIFER_NUMBER,
|
||||||
|
INPUT_VECTOR_NAME,
|
||||||
};
|
};
|
||||||
|
|
||||||
public:
|
public:
|
||||||
@ -71,7 +72,8 @@ public:
|
|||||||
m_wellSegmentNumber(-1),
|
m_wellSegmentNumber(-1),
|
||||||
m_cellI(-1),
|
m_cellI(-1),
|
||||||
m_cellJ(-1),
|
m_cellJ(-1),
|
||||||
m_cellK(-1)
|
m_cellK(-1),
|
||||||
|
m_aquiferNumber(-1)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -85,7 +87,8 @@ public:
|
|||||||
const std::string& lgrName,
|
const std::string& lgrName,
|
||||||
int cellI,
|
int cellI,
|
||||||
int cellJ,
|
int cellJ,
|
||||||
int cellK):
|
int cellK,
|
||||||
|
int aquiferNumber):
|
||||||
m_variableCategory(category),
|
m_variableCategory(category),
|
||||||
m_quantityName(quantityName),
|
m_quantityName(quantityName),
|
||||||
m_regionNumber(regionNumber),
|
m_regionNumber(regionNumber),
|
||||||
@ -96,7 +99,8 @@ public:
|
|||||||
m_lgrName(lgrName),
|
m_lgrName(lgrName),
|
||||||
m_cellI(cellI),
|
m_cellI(cellI),
|
||||||
m_cellJ(cellJ),
|
m_cellJ(cellJ),
|
||||||
m_cellK(cellK)
|
m_cellK(cellK),
|
||||||
|
m_aquiferNumber(aquiferNumber)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -124,6 +128,7 @@ public:
|
|||||||
int cellI() const { return m_cellI; }
|
int cellI() const { return m_cellI; }
|
||||||
int cellJ() const { return m_cellJ; }
|
int cellJ() const { return m_cellJ; }
|
||||||
int cellK() const { return m_cellK; }
|
int cellK() const { return m_cellK; }
|
||||||
|
int aquiferNumber() const { return m_aquiferNumber; }
|
||||||
|
|
||||||
// Derived properties
|
// Derived properties
|
||||||
|
|
||||||
@ -135,6 +140,7 @@ public:
|
|||||||
void setWellName(const std::string& wellName) { m_wellName = wellName; }
|
void setWellName(const std::string& wellName) { m_wellName = wellName; }
|
||||||
void setWellGroupName(const std::string& wellGroupName) { m_wellGroupName = wellGroupName; }
|
void setWellGroupName(const std::string& wellGroupName) { m_wellGroupName = wellGroupName; }
|
||||||
void setRegion(int region) { m_regionNumber = region; }
|
void setRegion(int region) { m_regionNumber = region; }
|
||||||
|
void setAquiferNumber(int aquiferNumber) { m_aquiferNumber = aquiferNumber; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
@ -154,6 +160,7 @@ private:
|
|||||||
int m_cellI;
|
int m_cellI;
|
||||||
int m_cellJ;
|
int m_cellJ;
|
||||||
int m_cellK;
|
int m_cellK;
|
||||||
|
int m_aquiferNumber;
|
||||||
};
|
};
|
||||||
|
|
||||||
bool operator==(const RifEclipseSummaryAddress& first, const RifEclipseSummaryAddress& second);
|
bool operator==(const RifEclipseSummaryAddress& first, const RifEclipseSummaryAddress& second);
|
||||||
|
@ -167,13 +167,20 @@ RifEclipseSummaryAddress RifEclipseUserDataKeywordTools::makeAndFillAddress(cons
|
|||||||
int cellI = -1;
|
int cellI = -1;
|
||||||
int cellJ = -1;
|
int cellJ = -1;
|
||||||
int cellK = -1;
|
int cellK = -1;
|
||||||
|
int aquiferNumber = -1;
|
||||||
|
|
||||||
switch (category)
|
switch (category)
|
||||||
{
|
{
|
||||||
case RifEclipseSummaryAddress::SUMMARY_FIELD:
|
case RifEclipseSummaryAddress::SUMMARY_FIELD:
|
||||||
break;
|
break;
|
||||||
case RifEclipseSummaryAddress::SUMMARY_AQUIFER:
|
case RifEclipseSummaryAddress::SUMMARY_AQUIFER:
|
||||||
|
{
|
||||||
|
if (columnHeaderText.size() > 0)
|
||||||
|
{
|
||||||
|
aquiferNumber = RiaStdStringTools::toInt(columnHeaderText[0]);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
case RifEclipseSummaryAddress::SUMMARY_NETWORK:
|
case RifEclipseSummaryAddress::SUMMARY_NETWORK:
|
||||||
break;
|
break;
|
||||||
case RifEclipseSummaryAddress::SUMMARY_MISC:
|
case RifEclipseSummaryAddress::SUMMARY_MISC:
|
||||||
@ -268,7 +275,8 @@ RifEclipseSummaryAddress RifEclipseUserDataKeywordTools::makeAndFillAddress(cons
|
|||||||
lgrName,
|
lgrName,
|
||||||
cellI,
|
cellI,
|
||||||
cellJ,
|
cellJ,
|
||||||
cellK);
|
cellK,
|
||||||
|
aquiferNumber);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -175,8 +175,8 @@ bool RifKeywordVectorUserData::parse(const QString& data, const QString& customW
|
|||||||
"",
|
"",
|
||||||
-1,
|
-1,
|
||||||
-1,
|
-1,
|
||||||
-1
|
-1,
|
||||||
);
|
-1);
|
||||||
|
|
||||||
m_allResultAddresses.push_back(addr);
|
m_allResultAddresses.push_back(addr);
|
||||||
|
|
||||||
|
@ -112,6 +112,7 @@ RifEclipseSummaryAddress addressFromErtSmSpecNode(const smspec_node_type * ertSu
|
|||||||
int cellI(-1);
|
int cellI(-1);
|
||||||
int cellJ(-1);
|
int cellJ(-1);
|
||||||
int cellK(-1);
|
int cellK(-1);
|
||||||
|
int aquiferNumber(-1);
|
||||||
|
|
||||||
quantityName = smspec_node_get_keyword(ertSumVarNode);
|
quantityName = smspec_node_get_keyword(ertSumVarNode);
|
||||||
|
|
||||||
@ -120,6 +121,7 @@ RifEclipseSummaryAddress addressFromErtSmSpecNode(const smspec_node_type * ertSu
|
|||||||
case ECL_SMSPEC_AQUIFER_VAR:
|
case ECL_SMSPEC_AQUIFER_VAR:
|
||||||
{
|
{
|
||||||
sumCategory = RifEclipseSummaryAddress::SUMMARY_AQUIFER;
|
sumCategory = RifEclipseSummaryAddress::SUMMARY_AQUIFER;
|
||||||
|
aquiferNumber = smspec_node_get_num(ertSumVarNode);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case ECL_SMSPEC_WELL_VAR:
|
case ECL_SMSPEC_WELL_VAR:
|
||||||
@ -230,7 +232,8 @@ RifEclipseSummaryAddress addressFromErtSmSpecNode(const smspec_node_type * ertSu
|
|||||||
wellName,
|
wellName,
|
||||||
wellSegmentNumber,
|
wellSegmentNumber,
|
||||||
lgrName,
|
lgrName,
|
||||||
cellI, cellJ, cellK);
|
cellI, cellJ, cellK,
|
||||||
|
aquiferNumber);
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
@ -143,6 +143,7 @@ RifEclipseSummaryAddress RifReaderObservedData::address(const QString& quantity,
|
|||||||
int cellI(-1);
|
int cellI(-1);
|
||||||
int cellJ(-1);
|
int cellJ(-1);
|
||||||
int cellK(-1);
|
int cellK(-1);
|
||||||
|
int aquiferNumber(-1);
|
||||||
|
|
||||||
switch (summaryCategory)
|
switch (summaryCategory)
|
||||||
{
|
{
|
||||||
@ -167,7 +168,8 @@ RifEclipseSummaryAddress RifReaderObservedData::address(const QString& quantity,
|
|||||||
wellName,
|
wellName,
|
||||||
wellSegmentNumber,
|
wellSegmentNumber,
|
||||||
lgrName,
|
lgrName,
|
||||||
cellI, cellJ, cellK);
|
cellI, cellJ, cellK,
|
||||||
|
aquiferNumber);
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
@ -67,9 +67,10 @@ RimSummaryAddress::RimSummaryAddress()
|
|||||||
CAF_PDM_InitFieldNoDefault(&m_cellI, "SummaryCellI", "I", "", "", "");
|
CAF_PDM_InitFieldNoDefault(&m_cellI, "SummaryCellI", "I", "", "", "");
|
||||||
CAF_PDM_InitFieldNoDefault(&m_cellJ, "SummaryCellJ", "J", "", "", "");
|
CAF_PDM_InitFieldNoDefault(&m_cellJ, "SummaryCellJ", "J", "", "", "");
|
||||||
CAF_PDM_InitFieldNoDefault(&m_cellK, "SummaryCellK", "K", "", "", "");
|
CAF_PDM_InitFieldNoDefault(&m_cellK, "SummaryCellK", "K", "", "", "");
|
||||||
|
CAF_PDM_InitFieldNoDefault(&m_aquiferNumber, "SummaryAquifer", "Aquifer", "", "", "");
|
||||||
|
|
||||||
m_category = RifEclipseSummaryAddress::SUMMARY_INVALID;
|
m_category = RifEclipseSummaryAddress::SUMMARY_INVALID;
|
||||||
m_regionNumber = m_regionNumber2 = m_wellSegmentNumber = m_cellI = m_cellJ = m_cellK = -1;
|
m_regionNumber = m_regionNumber2 = m_wellSegmentNumber = m_cellI = m_cellJ = m_cellK = m_aquiferNumber -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
@ -93,6 +94,7 @@ void RimSummaryAddress::setAddress(const RifEclipseSummaryAddress& addr)
|
|||||||
m_wellName = addr.wellName().c_str();
|
m_wellName = addr.wellName().c_str();
|
||||||
m_wellSegmentNumber = addr.wellSegmentNumber();
|
m_wellSegmentNumber = addr.wellSegmentNumber();
|
||||||
m_lgrName = addr.lgrName().c_str();
|
m_lgrName = addr.lgrName().c_str();
|
||||||
|
m_aquiferNumber = addr.aquiferNumber();
|
||||||
|
|
||||||
m_cellI = addr.cellI(); m_cellJ = addr.cellJ(); m_cellK = addr.cellK();
|
m_cellI = addr.cellI(); m_cellJ = addr.cellJ(); m_cellK = addr.cellK();
|
||||||
}
|
}
|
||||||
@ -110,6 +112,7 @@ RifEclipseSummaryAddress RimSummaryAddress::address()
|
|||||||
m_wellName().toStdString(),
|
m_wellName().toStdString(),
|
||||||
m_wellSegmentNumber(),
|
m_wellSegmentNumber(),
|
||||||
m_lgrName().toStdString(),
|
m_lgrName().toStdString(),
|
||||||
m_cellI(), m_cellJ(), m_cellK());
|
m_cellI(), m_cellJ(), m_cellK(),
|
||||||
|
m_aquiferNumber);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -62,6 +62,6 @@ private:
|
|||||||
caf::PdmField<int> m_cellI;
|
caf::PdmField<int> m_cellI;
|
||||||
caf::PdmField<int> m_cellJ;
|
caf::PdmField<int> m_cellJ;
|
||||||
caf::PdmField<int> m_cellK;
|
caf::PdmField<int> m_cellK;
|
||||||
|
caf::PdmField<int> m_aquiferNumber;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -84,6 +84,7 @@ RiuSummaryCurveDefSelection::RiuSummaryCurveDefSelection() : m_identifierFieldsM
|
|||||||
{ new SummaryIdentifierAndField(RifEclipseSummaryAddress::INPUT_VECTOR_NAME) }
|
{ new SummaryIdentifierAndField(RifEclipseSummaryAddress::INPUT_VECTOR_NAME) }
|
||||||
} },
|
} },
|
||||||
{ RifEclipseSummaryAddress::SUMMARY_AQUIFER, {
|
{ RifEclipseSummaryAddress::SUMMARY_AQUIFER, {
|
||||||
|
{ new SummaryIdentifierAndField(RifEclipseSummaryAddress::INPUT_AQUIFER_NUMBER) },
|
||||||
{ new SummaryIdentifierAndField(RifEclipseSummaryAddress::INPUT_VECTOR_NAME) }
|
{ new SummaryIdentifierAndField(RifEclipseSummaryAddress::INPUT_VECTOR_NAME) }
|
||||||
} },
|
} },
|
||||||
{ RifEclipseSummaryAddress::SUMMARY_NETWORK, {
|
{ RifEclipseSummaryAddress::SUMMARY_NETWORK, {
|
||||||
@ -155,7 +156,8 @@ RiuSummaryCurveDefSelection::RiuSummaryCurveDefSelection() : m_identifierFieldsM
|
|||||||
|
|
||||||
CAF_PDM_InitFieldNoDefault(m_identifierFieldsMap[RifEclipseSummaryAddress::SUMMARY_FIELD][0]->pdmField(), "FieldVectors", "Field vectors", "", "", "");
|
CAF_PDM_InitFieldNoDefault(m_identifierFieldsMap[RifEclipseSummaryAddress::SUMMARY_FIELD][0]->pdmField(), "FieldVectors", "Field vectors", "", "", "");
|
||||||
|
|
||||||
CAF_PDM_InitFieldNoDefault(m_identifierFieldsMap[RifEclipseSummaryAddress::SUMMARY_AQUIFER][0]->pdmField(), "AquiferVectors", "Aquifer Vectors", "", "", "");
|
CAF_PDM_InitFieldNoDefault(m_identifierFieldsMap[RifEclipseSummaryAddress::SUMMARY_AQUIFER][0]->pdmField(), "Aquifers", "Aquifers", "", "", "");
|
||||||
|
CAF_PDM_InitFieldNoDefault(m_identifierFieldsMap[RifEclipseSummaryAddress::SUMMARY_AQUIFER][1]->pdmField(), "AquiferVectors", "Aquifer Vectors", "", "", "");
|
||||||
|
|
||||||
CAF_PDM_InitFieldNoDefault(m_identifierFieldsMap[RifEclipseSummaryAddress::SUMMARY_NETWORK][0]->pdmField(), "NetworkVectors", "Network Vectors", "", "", "");
|
CAF_PDM_InitFieldNoDefault(m_identifierFieldsMap[RifEclipseSummaryAddress::SUMMARY_NETWORK][0]->pdmField(), "NetworkVectors", "Network Vectors", "", "", "");
|
||||||
|
|
||||||
@ -586,7 +588,12 @@ void RiuSummaryCurveDefSelection::defineUiOrdering(QString uiConfigName, caf::Pd
|
|||||||
}
|
}
|
||||||
else if (sumCategory == RifEclipseSummaryAddress::SUMMARY_AQUIFER)
|
else if (sumCategory == RifEclipseSummaryAddress::SUMMARY_AQUIFER)
|
||||||
{
|
{
|
||||||
summaryiesField = m_identifierFieldsMap[RifEclipseSummaryAddress::SUMMARY_AQUIFER][0]->pdmField();
|
{
|
||||||
|
caf::PdmUiGroup* myGroup = uiOrdering.addNewGroup("Aquifers");
|
||||||
|
myGroup->add(m_identifierFieldsMap[RifEclipseSummaryAddress::SUMMARY_AQUIFER][0]->pdmField());
|
||||||
|
}
|
||||||
|
|
||||||
|
summaryiesField = m_identifierFieldsMap[RifEclipseSummaryAddress::SUMMARY_AQUIFER][1]->pdmField();
|
||||||
}
|
}
|
||||||
else if (sumCategory == RifEclipseSummaryAddress::SUMMARY_NETWORK)
|
else if (sumCategory == RifEclipseSummaryAddress::SUMMARY_NETWORK)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user