mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
#2393 Reservoir compaction derived result
This commit is contained in:
@@ -24,6 +24,8 @@
|
||||
#include "RigFemPartResultsCollection.h"
|
||||
#include "RigFemResultAddress.h"
|
||||
#include "RigGeoMechCaseData.h"
|
||||
#include "RigFemPartCollection.h"
|
||||
#include "RigFemPartGrid.h"
|
||||
|
||||
#include "RiaDefines.h"
|
||||
#include "RimGeoMechCase.h"
|
||||
@@ -77,6 +79,12 @@ RimGeoMechResultDefinition::RimGeoMechResultDefinition(void)
|
||||
CAF_PDM_InitField(&m_timeLapseBaseTimestep, "TimeLapseBaseTimeStep", 0, "Base Time Step", "", "", "");
|
||||
m_timeLapseBaseTimestep.uiCapability()->setUiHidden(true);
|
||||
|
||||
CAF_PDM_InitField(&m_isCompaction, "IsCompaction", false, "Compaction", "", "", "");
|
||||
m_isCompaction.uiCapability()->setUiHidden(true);
|
||||
|
||||
CAF_PDM_InitField(&m_compactionRefLayer, "CompactionRefLayer", 0, "Compaction Ref Layer", "", "", "");
|
||||
m_compactionRefLayer.uiCapability()->setUiHidden(true);
|
||||
|
||||
CAF_PDM_InitFieldNoDefault(&m_resultPositionTypeUiField, "ResultPositionTypeUi", "Result Position", "", "", "");
|
||||
m_resultPositionTypeUiField.xmlCapability()->setIOWritable(false);
|
||||
m_resultPositionTypeUiField.xmlCapability()->setIOReadable(false);
|
||||
@@ -96,6 +104,14 @@ RimGeoMechResultDefinition::RimGeoMechResultDefinition(void)
|
||||
m_resultVariableUiField.uiCapability()->setUiEditorTypeName(caf::PdmUiListEditor::uiEditorTypeName());
|
||||
m_resultVariableUiField.uiCapability()->setUiLabelPosition(caf::PdmUiItemInfo::TOP);
|
||||
|
||||
CAF_PDM_InitField(&m_isCompactionUiField, "IsCompactionUi", false, "Enable Compaction", "", "", "");
|
||||
m_isCompactionUiField.xmlCapability()->setIOWritable(false);
|
||||
m_isCompactionUiField.xmlCapability()->setIOReadable(false);
|
||||
|
||||
CAF_PDM_InitField(&m_compactionRefLayerUiField, "CompactionRefLayerUi", 0, "Compaction Ref Layer", "", "", "");
|
||||
m_compactionRefLayerUiField.xmlCapability()->setIOWritable(false);
|
||||
m_compactionRefLayerUiField.xmlCapability()->setIOReadable(false);
|
||||
|
||||
m_isChangedByField = false;
|
||||
}
|
||||
|
||||
@@ -123,6 +139,14 @@ void RimGeoMechResultDefinition::defineUiOrdering(QString uiConfigName, caf::Pdm
|
||||
timeLapseGr->add(&m_timeLapseBaseTimestepUiField);
|
||||
}
|
||||
|
||||
if (m_resultPositionTypeUiField() == RIG_NODAL)
|
||||
{
|
||||
caf::PdmUiGroup * compactionGroup = uiOrdering.addNewGroup("Compaction Options");
|
||||
compactionGroup->add(&m_isCompactionUiField);
|
||||
if (m_isCompactionUiField())
|
||||
compactionGroup->add(&m_compactionRefLayerUiField);
|
||||
}
|
||||
|
||||
if (!m_isChangedByField)
|
||||
{
|
||||
m_resultPositionTypeUiField = m_resultPositionType;
|
||||
@@ -156,6 +180,8 @@ QList<caf::PdmOptionItemInfo> RimGeoMechResultDefinition::calculateValueOptions(
|
||||
|
||||
for (int oIdx = 0; oIdx < uiVarNames.size(); ++oIdx)
|
||||
{
|
||||
if (uiVarNames[oIdx].startsWith(RigFemPartResultsCollection::FIELD_NAME_COMPACTION.data()) && !m_isCompactionUiField()) continue;
|
||||
|
||||
options.push_back(caf::PdmOptionItemInfo(uiVarNames[oIdx], varNames[oIdx]));
|
||||
}
|
||||
}
|
||||
@@ -177,6 +203,14 @@ QList<caf::PdmOptionItemInfo> RimGeoMechResultDefinition::calculateValueOptions(
|
||||
options.push_back(caf::PdmOptionItemInfo(QString::fromStdString(stepNames[stepIdx]), static_cast<int>(stepIdx)));
|
||||
}
|
||||
}
|
||||
else if (&m_compactionRefLayerUiField == fieldNeedingOptions)
|
||||
{
|
||||
size_t kCount = m_geomCase->geoMechData()->femParts()->part(0)->structGrid()->gridPointCountK() - 1;
|
||||
for (size_t layerIdx = 0; layerIdx < kCount; ++layerIdx)
|
||||
{
|
||||
options.push_back(caf::PdmOptionItemInfo(QString::number(layerIdx + 1), (int)layerIdx));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return options;
|
||||
@@ -229,7 +263,7 @@ void RimGeoMechResultDefinition::fieldChangedByUi(const caf::PdmFieldHandle* cha
|
||||
RimPlotCurve* curve = nullptr;
|
||||
this->firstAncestorOrThisOfType(curve);
|
||||
|
||||
if (&m_resultVariableUiField == changedField)
|
||||
if (&m_resultVariableUiField == changedField || &m_compactionRefLayerUiField == changedField)
|
||||
{
|
||||
QStringList fieldComponentNames = m_resultVariableUiField().split(QRegExp("\\s+"));
|
||||
if (fieldComponentNames.size() > 0)
|
||||
@@ -255,8 +289,10 @@ void RimGeoMechResultDefinition::fieldChangedByUi(const caf::PdmFieldHandle* cha
|
||||
m_resultComponentName = "";
|
||||
}
|
||||
|
||||
m_isTimeLapseResult = m_isTimeLapseResultUiField();
|
||||
m_isTimeLapseResult = m_isTimeLapseResultUiField();
|
||||
m_timeLapseBaseTimestep = m_timeLapseBaseTimestepUiField();
|
||||
m_isCompaction = m_isCompactionUiField();
|
||||
m_compactionRefLayer = m_compactionRefLayerUiField();
|
||||
}
|
||||
|
||||
if (m_geomCase->geoMechData()->femPartResults()->assertResultsLoaded(this->resultAddress()))
|
||||
@@ -378,6 +414,8 @@ void RimGeoMechResultDefinition::initAfterRead()
|
||||
m_resultVariableUiField = composeFieldCompString(m_resultFieldName(), m_resultComponentName());
|
||||
m_isTimeLapseResultUiField = m_isTimeLapseResult;
|
||||
m_timeLapseBaseTimestepUiField = m_timeLapseBaseTimestep;
|
||||
m_isCompactionUiField = m_isCompaction;
|
||||
m_compactionRefLayerUiField = m_compactionRefLayer;
|
||||
}
|
||||
|
||||
|
||||
@@ -392,16 +430,16 @@ void RimGeoMechResultDefinition::loadResult()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RigFemResultAddress RimGeoMechResultDefinition::resultAddress()
|
||||
{
|
||||
if(m_isTimeLapseResult)
|
||||
return RigFemResultAddress(resultPositionType(), resultFieldName().toStdString(), resultComponentName().toStdString(), m_timeLapseBaseTimestep);
|
||||
else
|
||||
return RigFemResultAddress(resultPositionType(), resultFieldName().toStdString(), resultComponentName().toStdString());
|
||||
return RigFemResultAddress(resultPositionType(),
|
||||
resultFieldName().toStdString(),
|
||||
resultComponentName().toStdString(),
|
||||
m_isTimeLapseResult() ? m_timeLapseBaseTimestep() : RigFemResultAddress::NO_TIME_LAPSE,
|
||||
m_isCompaction() && resultFieldName().toStdString() == RigFemPartResultsCollection::FIELD_NAME_COMPACTION ? m_compactionRefLayer() : RigFemResultAddress::NO_COMPACTION);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -479,11 +517,15 @@ void RimGeoMechResultDefinition::setResultAddress( const RigFemResultAddress& re
|
||||
m_resultFieldName = QString::fromStdString(resultAddress.fieldName);
|
||||
m_resultComponentName = QString::fromStdString(resultAddress.componentName);
|
||||
m_isTimeLapseResult = resultAddress.isTimeLapse();
|
||||
|
||||
m_timeLapseBaseTimestep = m_isTimeLapseResult ? resultAddress.timeLapseBaseFrameIdx: 0;
|
||||
m_isCompaction = resultAddress.isCompaction();
|
||||
|
||||
m_timeLapseBaseTimestep = m_isTimeLapseResult ? resultAddress.timeLapseBaseFrameIdx: -1;
|
||||
m_compactionRefLayer = m_isCompaction ? resultAddress.refKLayerIndex : -1;
|
||||
|
||||
m_resultPositionTypeUiField = m_resultPositionType;
|
||||
m_resultVariableUiField = composeFieldCompString(m_resultFieldName(), m_resultComponentName());
|
||||
m_isTimeLapseResultUiField = m_isTimeLapseResult;
|
||||
m_timeLapseBaseTimestepUiField = m_timeLapseBaseTimestep;
|
||||
m_isCompactionUiField = m_isCompaction;
|
||||
m_compactionRefLayerUiField = m_compactionRefLayer;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user