mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
#1957 Observed Data : Add handling of custom well name
This commit is contained in:
parent
2546dc631a
commit
54063aece2
@ -49,7 +49,7 @@ RifColumnBasedUserData::~RifColumnBasedUserData()
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
bool RifColumnBasedUserData::parse(const QString& data)
|
||||
bool RifColumnBasedUserData::parse(const QString& data, const QString& customWellName, const QString& customWellGroupName)
|
||||
{
|
||||
m_allResultAddresses.clear();
|
||||
m_timeSteps.clear();
|
||||
@ -129,6 +129,17 @@ bool RifColumnBasedUserData::parse(const QString& data)
|
||||
if (ci.isAVector)
|
||||
{
|
||||
RifEclipseSummaryAddress sumAddress = ci.summaryAddress;
|
||||
|
||||
if (customWellName.size() > 0)
|
||||
{
|
||||
sumAddress.setWellName(customWellName.toStdString());
|
||||
}
|
||||
|
||||
if (customWellGroupName.size() > 0)
|
||||
{
|
||||
sumAddress.setWellGroupName(customWellGroupName.toStdString());
|
||||
}
|
||||
|
||||
m_allResultAddresses.push_back(sumAddress);
|
||||
|
||||
m_mapFromAddressToTimeStepIndex[sumAddress] = m_timeSteps.size() - 1;
|
||||
|
@ -42,7 +42,7 @@ public:
|
||||
RifColumnBasedUserData();
|
||||
~RifColumnBasedUserData();
|
||||
|
||||
bool parse(const QString& data);
|
||||
bool parse(const QString& data, const QString& customWellName, const QString& customWellGroupName);
|
||||
|
||||
virtual const std::vector<time_t>& timeSteps(const RifEclipseSummaryAddress& resultAddress) const override;
|
||||
|
||||
|
@ -53,7 +53,7 @@ RifKeywordVectorUserData::~RifKeywordVectorUserData()
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
bool RifKeywordVectorUserData::parse(const QString& data)
|
||||
bool RifKeywordVectorUserData::parse(const QString& data, const QString& customWellName)
|
||||
{
|
||||
m_allResultAddresses.clear();
|
||||
m_timeSteps.clear();
|
||||
@ -87,6 +87,9 @@ bool RifKeywordVectorUserData::parse(const QString& data)
|
||||
|
||||
// Find all time vectors
|
||||
|
||||
std::map<QString, size_t> mapFromOriginToTimeStepIndex;
|
||||
|
||||
|
||||
for (size_t i = 0; i < keyValuePairVector.size(); i++)
|
||||
{
|
||||
const std::map<QString, QString>& keyValuePairs = keyValuePairVector[i];
|
||||
@ -136,7 +139,7 @@ bool RifKeywordVectorUserData::parse(const QString& data)
|
||||
|
||||
QString originText = valueForKey(keyValuePairs, "ORIGIN");
|
||||
|
||||
m_mapFromOriginToTimeStepIndex[originText] = m_timeSteps.size() - 1;
|
||||
mapFromOriginToTimeStepIndex[originText] = m_timeSteps.size() - 1;
|
||||
}
|
||||
}
|
||||
|
||||
@ -151,17 +154,23 @@ bool RifKeywordVectorUserData::parse(const QString& data)
|
||||
if (isVectorHeader(keyValuePairs))
|
||||
{
|
||||
QString originText = valueForKey(keyValuePairs, "ORIGIN");
|
||||
auto timeStepIndexIterator = m_mapFromOriginToTimeStepIndex.find(originText);
|
||||
if (timeStepIndexIterator != m_mapFromOriginToTimeStepIndex.end())
|
||||
auto timeStepIndexIterator = mapFromOriginToTimeStepIndex.find(originText);
|
||||
if (timeStepIndexIterator != mapFromOriginToTimeStepIndex.end())
|
||||
{
|
||||
QString vectorText = valueForKey(keyValuePairs, "VECTOR");
|
||||
|
||||
QString wellName = originText;
|
||||
if (customWellName.size() > 0)
|
||||
{
|
||||
wellName = customWellName;
|
||||
}
|
||||
|
||||
RifEclipseSummaryAddress addr(RifEclipseSummaryAddress::SUMMARY_WELL,
|
||||
vectorText.toStdString(),
|
||||
-1,
|
||||
-1,
|
||||
"",
|
||||
originText.toStdString(),
|
||||
wellName.toStdString(),
|
||||
-1,
|
||||
"",
|
||||
-1,
|
||||
|
@ -42,7 +42,7 @@ public:
|
||||
RifKeywordVectorUserData();
|
||||
~RifKeywordVectorUserData();
|
||||
|
||||
bool parse(const QString& data);
|
||||
bool parse(const QString& data, const QString& customWellName);
|
||||
|
||||
virtual const std::vector<time_t>& timeSteps(const RifEclipseSummaryAddress& resultAddress) const override;
|
||||
|
||||
@ -61,7 +61,6 @@ private:
|
||||
|
||||
std::vector< std::vector<time_t> > m_timeSteps;
|
||||
|
||||
std::map<QString, size_t> m_mapFromOriginToTimeStepIndex;
|
||||
std::map<RifEclipseSummaryAddress, size_t> m_mapFromAddressToVectorIndex;
|
||||
std::map<RifEclipseSummaryAddress, size_t> m_mapFromAddressToTimeIndex;
|
||||
};
|
||||
|
@ -34,13 +34,14 @@ RimObservedData::RimObservedData()
|
||||
{
|
||||
m_isObservedData = true;
|
||||
|
||||
CAF_PDM_InitFieldNoDefault(&m_summaryCategory, "SummaryType", "Summary Type", "", "", "");
|
||||
CAF_PDM_InitFieldNoDefault(&m_identifierName, "IdentifierName", "Identifier Name", "", "", "");
|
||||
|
||||
CAF_PDM_InitFieldNoDefault(&m_importedSummaryData, "ImportedSummaryData", "Imported Summary Data", "", "", "");
|
||||
m_importedSummaryData.uiCapability()->setUiEditorTypeName(caf::PdmUiTextEditor::uiEditorTypeName());
|
||||
m_importedSummaryData.uiCapability()->setUiReadOnly(true);
|
||||
m_importedSummaryData.xmlCapability()->disableIO();
|
||||
|
||||
CAF_PDM_InitFieldNoDefault(&m_useCustomIdentifier, "UseCustomIdentifier", "Use Custom Identifier", "", "", "");
|
||||
CAF_PDM_InitField(&m_summaryCategory, "SummaryType", caf::AppEnum<RifEclipseSummaryAddress::SummaryVarCategory>(RifEclipseSummaryAddress::SUMMARY_WELL), "Summary Type", "", "", "");
|
||||
CAF_PDM_InitFieldNoDefault(&m_identifierName, "IdentifierName", "Identifier Name", "", "", "");
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -96,3 +97,67 @@ void RimObservedData::updateMetaData()
|
||||
|
||||
m_importedSummaryData = QString::fromStdString(metaDataString);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
QString RimObservedData::customWellName() const
|
||||
{
|
||||
if (m_useCustomIdentifier() && m_summaryCategory() == RifEclipseSummaryAddress::SUMMARY_WELL)
|
||||
{
|
||||
return m_identifierName();
|
||||
}
|
||||
|
||||
return "";
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
QString RimObservedData::customWellGroupName() const
|
||||
{
|
||||
if (m_useCustomIdentifier() && m_summaryCategory() == RifEclipseSummaryAddress::SUMMARY_WELL_GROUP)
|
||||
{
|
||||
return m_identifierName();
|
||||
}
|
||||
|
||||
return "";
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
QList<caf::PdmOptionItemInfo> RimObservedData::calculateValueOptions(const caf::PdmFieldHandle* fieldNeedingOptions, bool* useOptionsOnly)
|
||||
{
|
||||
if (fieldNeedingOptions == &m_summaryCategory)
|
||||
{
|
||||
QList<caf::PdmOptionItemInfo> options;
|
||||
|
||||
using AddressAppEnum = caf::AppEnum<RifEclipseSummaryAddress::SummaryVarCategory>;
|
||||
options.push_back(caf::PdmOptionItemInfo(AddressAppEnum::uiText(RifEclipseSummaryAddress::SUMMARY_WELL), RifEclipseSummaryAddress::SUMMARY_WELL));
|
||||
options.push_back(caf::PdmOptionItemInfo(AddressAppEnum::uiText(RifEclipseSummaryAddress::SUMMARY_WELL_GROUP), RifEclipseSummaryAddress::SUMMARY_WELL_GROUP));
|
||||
|
||||
return options;
|
||||
}
|
||||
|
||||
return RimSummaryCase::calculateValueOptions(fieldNeedingOptions, useOptionsOnly);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimObservedData::fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue)
|
||||
{
|
||||
if (changedField == &m_useCustomIdentifier ||
|
||||
changedField == &m_summaryCategory ||
|
||||
changedField == &m_identifierName)
|
||||
{
|
||||
createSummaryReaderInterface();
|
||||
|
||||
updateMetaData();
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
RimSummaryCase::fieldChangedByUi(changedField, oldValue, newValue);
|
||||
}
|
||||
|
@ -44,9 +44,18 @@ public:
|
||||
|
||||
void updateMetaData();
|
||||
|
||||
protected:
|
||||
QString customWellName() const;
|
||||
QString customWellGroupName() const;
|
||||
|
||||
private:
|
||||
virtual QList<caf::PdmOptionItemInfo> calculateValueOptions(const caf::PdmFieldHandle* fieldNeedingOptions, bool* useOptionsOnly) override;
|
||||
virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue) override;
|
||||
|
||||
private:
|
||||
caf::PdmField<caf::AppEnum<RifEclipseSummaryAddress::SummaryVarCategory> > m_summaryCategory;
|
||||
caf::PdmField<QString> m_identifierName;
|
||||
caf::PdmField<bool> m_useCustomIdentifier;
|
||||
|
||||
caf::PdmField<QString> m_importedSummaryData;
|
||||
};
|
||||
|
@ -74,7 +74,7 @@ void RimObservedEclipseUserData::createSummaryReaderInterface()
|
||||
if (RifKeywordVectorParser::canBeParsed(fileContents))
|
||||
{
|
||||
RifKeywordVectorUserData* keywordVectorUserData = new RifKeywordVectorUserData();
|
||||
if (keywordVectorUserData->parse(fileContents))
|
||||
if (keywordVectorUserData->parse(fileContents, customWellName()))
|
||||
{
|
||||
m_summeryReader = keywordVectorUserData;
|
||||
}
|
||||
@ -82,7 +82,7 @@ void RimObservedEclipseUserData::createSummaryReaderInterface()
|
||||
else
|
||||
{
|
||||
RifColumnBasedUserData* columnBaseUserData = new RifColumnBasedUserData();
|
||||
if (!columnBaseUserData->parse(fileContents))
|
||||
if (!columnBaseUserData->parse(fileContents, customWellName(), customWellGroupName()))
|
||||
{
|
||||
columnBaseUserData = nullptr;
|
||||
}
|
||||
|
@ -52,6 +52,7 @@ public:
|
||||
bool isObservedData();
|
||||
|
||||
protected:
|
||||
virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue);
|
||||
void updateTreeItemName();
|
||||
|
||||
caf::PdmField<QString> m_shortName;
|
||||
@ -60,7 +61,5 @@ protected:
|
||||
bool m_isObservedData;
|
||||
|
||||
private:
|
||||
// Overridden PDM methods
|
||||
virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue);
|
||||
virtual void initAfterRead() override;
|
||||
};
|
||||
|
@ -644,7 +644,7 @@ TEST(RifKeywordBasedRsmspecParserTest, TestTimeSteps)
|
||||
|
||||
RifColumnBasedUserData columnBasedUserdata;
|
||||
|
||||
columnBasedUserdata.parse(data);
|
||||
columnBasedUserdata.parse(data, "", "");
|
||||
std::vector<time_t> timeSteps = columnBasedUserdata.timeSteps(address);
|
||||
|
||||
QDateTime startDate = QDateTime::fromString("01012004", "ddMMyyyy");
|
||||
|
Loading…
Reference in New Issue
Block a user