mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-09 23:16:00 -06:00
(#396) Added the data (with gui) to curves to define the well log extraction
This commit is contained in:
parent
b29ad69673
commit
e44a78cf57
@ -47,7 +47,7 @@ void RicNewWellLogPlotCurveFeature::onActionTriggered(bool isChecked)
|
||||
RimWellLogPlotTrace* wellLogPlotTrace = selectedWellLogPlotTrace();
|
||||
if (wellLogPlotTrace)
|
||||
{
|
||||
RimWellLogPlotCurve* curve = new RimWellLogPlotCurve();
|
||||
RimWellLogPlotCurve* curve = new RimWellLogEclipseCurve();
|
||||
wellLogPlotTrace->addCurve(curve);
|
||||
|
||||
curve->setUiName(QString("Curve %1").arg(wellLogPlotTrace->curves.size()));
|
||||
|
@ -34,6 +34,7 @@
|
||||
#include "cafPdmUiListEditor.h"
|
||||
#include "RimProject.h"
|
||||
#include "RimLinkedViews.h"
|
||||
#include "RimWellLogPlotCurve.h"
|
||||
|
||||
CAF_PDM_SOURCE_INIT(RimEclipseResultDefinition, "ResultDefinition");
|
||||
|
||||
@ -124,7 +125,13 @@ void RimEclipseResultDefinition::fieldChangedByUi(const caf::PdmFieldHandle* cha
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
RimEclipsePropertyFilter* propFilter = dynamic_cast<RimEclipsePropertyFilter*>(this->parentField()->ownerObject());
|
||||
RimView* view = NULL;
|
||||
this->firstAnchestorOrThisOfType(view);
|
||||
RimWellLogEclipseCurve* curve = NULL;
|
||||
this->firstAnchestorOrThisOfType(curve);
|
||||
|
||||
if (&m_resultVariableUiField == changedField)
|
||||
{
|
||||
m_porosityModel = m_porosityModelUiField;
|
||||
@ -133,14 +140,11 @@ void RimEclipseResultDefinition::fieldChangedByUi(const caf::PdmFieldHandle* cha
|
||||
|
||||
loadResult();
|
||||
|
||||
RimEclipsePropertyFilter* propFilter = dynamic_cast<RimEclipsePropertyFilter*>(this->parentField()->ownerObject());
|
||||
if (propFilter)
|
||||
{
|
||||
propFilter->setToDefaultValues();
|
||||
propFilter->updateFilterName();
|
||||
|
||||
RimView* view = NULL;
|
||||
this->firstAnchestorOrThisOfType(view);
|
||||
if (view)
|
||||
{
|
||||
view->scheduleGeometryRegen(PROPERTY_FILTERED);
|
||||
@ -150,8 +154,6 @@ void RimEclipseResultDefinition::fieldChangedByUi(const caf::PdmFieldHandle* cha
|
||||
|
||||
if (dynamic_cast<RimEclipseCellColors*>(this))
|
||||
{
|
||||
RimView* view = NULL;
|
||||
this->firstAnchestorOrThisOfType(view);
|
||||
if (view)
|
||||
{
|
||||
RimProject* proj = NULL;
|
||||
@ -164,9 +166,13 @@ void RimEclipseResultDefinition::fieldChangedByUi(const caf::PdmFieldHandle* cha
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (curve)
|
||||
{
|
||||
curve->updatePlotData();
|
||||
}
|
||||
}
|
||||
|
||||
RimEclipsePropertyFilter* propFilter = dynamic_cast<RimEclipsePropertyFilter*>(this->parentField()->ownerObject());
|
||||
if (propFilter)
|
||||
{
|
||||
propFilter->updateConnectedEditors();
|
||||
@ -177,6 +183,12 @@ void RimEclipseResultDefinition::fieldChangedByUi(const caf::PdmFieldHandle* cha
|
||||
{
|
||||
faultColors->updateConnectedEditors();
|
||||
}
|
||||
|
||||
if (curve)
|
||||
{
|
||||
curve->updateConnectedEditors();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
@ -72,6 +72,7 @@ protected:
|
||||
|
||||
friend class RimEclipsePropertyFilter;
|
||||
friend class RimEclipseFaultColors;
|
||||
friend class RimWellLogEclipseCurve;
|
||||
|
||||
// User interface only fields, to support "filtering"-like behaviour etc.
|
||||
caf::PdmField< caf::AppEnum< RimDefines::ResultCatType > > m_resultTypeUiField;
|
||||
|
@ -36,6 +36,7 @@
|
||||
#include "cafPdmUiListEditor.h"
|
||||
#include "RimProject.h"
|
||||
#include "RimLinkedViews.h"
|
||||
#include "RimWellLogPlotCurve.h"
|
||||
|
||||
namespace caf {
|
||||
|
||||
@ -155,6 +156,9 @@ void RimGeoMechResultDefinition::fieldChangedByUi(const caf::PdmFieldHandle* cha
|
||||
RimGeoMechPropertyFilter* propFilter = dynamic_cast<RimGeoMechPropertyFilter*>(this->parentField()->ownerObject());
|
||||
RimView* view = NULL;
|
||||
this->firstAnchestorOrThisOfType(view);
|
||||
RimWellLogEclipseCurve* curve = NULL;
|
||||
this->firstAnchestorOrThisOfType(curve);
|
||||
|
||||
|
||||
if (&m_resultVariableUiField == changedField)
|
||||
{
|
||||
@ -189,8 +193,6 @@ void RimGeoMechResultDefinition::fieldChangedByUi(const caf::PdmFieldHandle* cha
|
||||
|
||||
if (dynamic_cast<RimGeoMechCellColors*>(this))
|
||||
{
|
||||
RimView* view = NULL;
|
||||
this->firstAnchestorOrThisOfType(view);
|
||||
if (view)
|
||||
{
|
||||
RimProject* proj = NULL;
|
||||
@ -203,6 +205,11 @@ void RimGeoMechResultDefinition::fieldChangedByUi(const caf::PdmFieldHandle* cha
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (curve)
|
||||
{
|
||||
curve->updatePlotData();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -211,6 +218,10 @@ void RimGeoMechResultDefinition::fieldChangedByUi(const caf::PdmFieldHandle* cha
|
||||
propFilter->updateConnectedEditors();
|
||||
}
|
||||
|
||||
if (curve)
|
||||
{
|
||||
curve->updateConnectedEditors();
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
@ -61,8 +61,7 @@ public:
|
||||
QString resultComponentUiName();
|
||||
|
||||
protected:
|
||||
friend class RimGeoMechPropertyFilter; // Property filter needs the ui fields
|
||||
|
||||
|
||||
private:
|
||||
virtual QList<caf::PdmOptionItemInfo> calculateValueOptions(const caf::PdmFieldHandle* fieldNeedingOptions,
|
||||
bool * useOptionsOnly);
|
||||
@ -79,6 +78,9 @@ private:
|
||||
caf::PdmField<QString> m_resultFieldName;
|
||||
caf::PdmField<QString> m_resultComponentName;
|
||||
|
||||
friend class RimGeoMechPropertyFilter; // Property filter needs the ui fields
|
||||
friend class RimWellLogEclipseCurve; // Curve needs the ui fields
|
||||
|
||||
caf::PdmField<caf::AppEnum<RigFemResultPosEnum> > m_resultPositionTypeUiField;
|
||||
caf::PdmField<QString> m_resultVariableUiField;
|
||||
|
||||
|
@ -167,6 +167,8 @@ bool RimWellLogPlotCurve::depthRange(double* minimumDepth, double* maximumDepth)
|
||||
#include "RimWellPath.h"
|
||||
#include "RimEclipseCase.h"
|
||||
#include "RimEclipseResultDefinition.h"
|
||||
#include "RimGeoMechResultDefinition.h"
|
||||
#include "RimGeoMechCase.h"
|
||||
|
||||
//==================================================================================================
|
||||
///
|
||||
@ -183,12 +185,16 @@ RimWellLogEclipseCurve::RimWellLogEclipseCurve()
|
||||
|
||||
CAF_PDM_InitFieldNoDefault(&m_wellPath, "CurveWellPath", "Well Path", "", "", "");
|
||||
m_wellPath.uiCapability()->setUiChildrenHidden(true);
|
||||
CAF_PDM_InitFieldNoDefault(&m_case, "CurveEclipseCase", "Case", "", "", "");
|
||||
CAF_PDM_InitFieldNoDefault(&m_case, "CurveCase", "Case", "", "", "");
|
||||
m_case.uiCapability()->setUiChildrenHidden(true);
|
||||
CAF_PDM_InitFieldNoDefault(&m_resultdefinition, "CurveResult", "", "", "", "");
|
||||
m_resultdefinition.uiCapability()->setUiChildrenHidden(true);
|
||||
CAF_PDM_InitFieldNoDefault(&m_eclipseResultDefinition, "CurveEclipseResult", "", "", "", "");
|
||||
m_eclipseResultDefinition.uiCapability()->setUiChildrenHidden(true);
|
||||
m_eclipseResultDefinition = new RimEclipseResultDefinition;
|
||||
CAF_PDM_InitFieldNoDefault(&m_geomResultDefinition, "CurveGeomechResult", "", "", "", "");
|
||||
m_geomResultDefinition.uiCapability()->setUiChildrenHidden(true);
|
||||
m_geomResultDefinition = new RimGeoMechResultDefinition;
|
||||
|
||||
CAF_PDM_InitFieldNoDefault(&m_timeStep, "CurveTimeStep", "Time Step", "", "", "");
|
||||
CAF_PDM_InitField(&m_timeStep, "CurveTimeStep", 0,"Time Step", "", "", "");
|
||||
|
||||
}
|
||||
|
||||
@ -206,6 +212,15 @@ RimWellLogEclipseCurve::~RimWellLogEclipseCurve()
|
||||
void RimWellLogEclipseCurve::fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue)
|
||||
{
|
||||
RimWellLogPlotCurve::fieldChangedByUi(changedField, oldValue, newValue);
|
||||
|
||||
if (changedField == &m_case)
|
||||
{
|
||||
RimGeoMechCase* geomCase = dynamic_cast<RimGeoMechCase*>(m_case.value());
|
||||
RimEclipseCase* eclipseCase = dynamic_cast<RimEclipseCase*>(m_case.value());
|
||||
|
||||
m_eclipseResultDefinition->setEclipseCase(eclipseCase);
|
||||
m_geomResultDefinition->setGeoMechCase(geomCase);
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -213,7 +228,33 @@ void RimWellLogEclipseCurve::fieldChangedByUi(const caf::PdmFieldHandle* changed
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimWellLogEclipseCurve::updatePlotData()
|
||||
{
|
||||
if (m_wellPath)
|
||||
{
|
||||
//RigWellLog m_wellPath->wellPathGeometry()->wellLogExtractor(m_case);
|
||||
std::vector<double> values;
|
||||
values.push_back(34);
|
||||
values.push_back(47);
|
||||
values.push_back(49);
|
||||
values.push_back(22);
|
||||
values.push_back(20);
|
||||
|
||||
std::vector<double> depthValues;
|
||||
depthValues.push_back(200);
|
||||
depthValues.push_back(400);
|
||||
depthValues.push_back(600);
|
||||
depthValues.push_back(800);
|
||||
depthValues.push_back(1000);
|
||||
|
||||
m_plotCurve->setSamples(values.data(), depthValues.data(), (int)depthValues.size());
|
||||
|
||||
RimWellLogPlot* wellLogPlot;
|
||||
firstAnchestorOrThisOfType(wellLogPlot);
|
||||
|
||||
if (wellLogPlot)
|
||||
{
|
||||
wellLogPlot->updateAvailableDepthRange();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -260,3 +301,30 @@ QList<caf::PdmOptionItemInfo> RimWellLogEclipseCurve::calculateValueOptions(cons
|
||||
|
||||
return optionList;
|
||||
}
|
||||
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimWellLogEclipseCurve::defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering)
|
||||
{
|
||||
RimGeoMechCase* geomCase = dynamic_cast<RimGeoMechCase*>(m_case.value());
|
||||
RimEclipseCase* eclipseCase = dynamic_cast<RimEclipseCase*>(m_case.value());
|
||||
uiOrdering.add(&m_userName);
|
||||
uiOrdering.add(&m_wellPath);
|
||||
|
||||
caf::PdmUiGroup* group1 = uiOrdering.addNewGroup("Result");
|
||||
group1->add(&m_case);
|
||||
if (eclipseCase)
|
||||
{
|
||||
|
||||
group1->add(&(m_eclipseResultDefinition->m_resultTypeUiField));
|
||||
group1->add(&(m_eclipseResultDefinition->m_porosityModelUiField));
|
||||
group1->add(&(m_eclipseResultDefinition->m_resultVariableUiField));
|
||||
}
|
||||
if (geomCase)
|
||||
{
|
||||
group1->add(&(m_geomResultDefinition->m_resultPositionTypeUiField));
|
||||
group1->add(&(m_geomResultDefinition->m_resultVariableUiField));
|
||||
}
|
||||
}
|
||||
|
@ -42,6 +42,7 @@ public:
|
||||
|
||||
void setPlot(RiuWellLogTracePlot* plot);
|
||||
bool depthRange(double* minimumDepth, double* maximumDepth);
|
||||
virtual void updatePlotData();
|
||||
|
||||
protected:
|
||||
|
||||
@ -50,7 +51,6 @@ protected:
|
||||
virtual caf::PdmFieldHandle* objectToggleField();
|
||||
virtual caf::PdmFieldHandle* userDescriptionField();
|
||||
|
||||
virtual void updatePlotData();
|
||||
|
||||
caf::PdmField<bool> m_showCurve;
|
||||
caf::PdmField<QString> m_userName;
|
||||
@ -67,6 +67,7 @@ protected:
|
||||
|
||||
class RimWellPath;
|
||||
class RimEclipseResultDefinition;
|
||||
class RimGeoMechResultDefinition;
|
||||
class RimCase;
|
||||
|
||||
//==================================================================================================
|
||||
@ -79,18 +80,18 @@ class RimWellLogEclipseCurve : public RimWellLogPlotCurve
|
||||
public:
|
||||
RimWellLogEclipseCurve();
|
||||
virtual ~RimWellLogEclipseCurve();
|
||||
virtual void updatePlotData();
|
||||
|
||||
protected:
|
||||
|
||||
virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue);
|
||||
virtual void updatePlotData();
|
||||
virtual void defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering);
|
||||
|
||||
virtual QList<caf::PdmOptionItemInfo> calculateValueOptions(const caf::PdmFieldHandle* fieldNeedingOptions, bool * useOptionsOnly);
|
||||
|
||||
caf::PdmPtrField<RimWellPath*> m_wellPath;
|
||||
caf::PdmPtrField<RimCase*> m_case;
|
||||
caf::PdmChildField<RimEclipseResultDefinition*> m_resultdefinition;
|
||||
caf::PdmPtrField<RimCase*> m_case;
|
||||
caf::PdmChildField<RimEclipseResultDefinition*> m_eclipseResultDefinition;
|
||||
caf::PdmChildField<RimGeoMechResultDefinition*> m_geomResultDefinition;
|
||||
caf::PdmField<int> m_timeStep;
|
||||
|
||||
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user