#4195 Grid Cross Plot: Adjustments

This commit is contained in:
Magne Sjaastad
2019-03-12 22:49:31 +01:00
parent 0527fd8030
commit 75688703d4
7 changed files with 225 additions and 26 deletions

View File

@@ -403,7 +403,7 @@ bool RifReaderEclipseOutput::open(const QString& fileName, RigEclipseCaseData* e
}
{
auto task = progress.task("Reading faults", 10);
auto task = progress.task("Reading faults", 5);
if (isFaultImportEnabled())
{
@@ -417,9 +417,9 @@ bool RifReaderEclipseOutput::open(const QString& fileName, RigEclipseCaseData* e
}
{
auto task = progress.task("Reading EQUIL", 10);
auto task = progress.task("Reading EQUIL", 5);
importEquilData(fileSet);
importEquilData(fileSet, eclipseCase);
}
m_eclipseCase = eclipseCase;
@@ -632,7 +632,7 @@ void RifReaderEclipseOutput::importFaults(const QStringList& fileSet, cvf::Colle
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RifReaderEclipseOutput::importEquilData(const QStringList& fileSet)
void RifReaderEclipseOutput::importEquilData(const QStringList& fileSet, RigEclipseCaseData* eclipseCase)
{
QString dataFileName;
@@ -675,7 +675,7 @@ void RifReaderEclipseOutput::importEquilData(const QStringList& fileSet)
equilItems.push_back(equilRec);
}
m_eclipseCase->setEquilData(equilItems);
eclipseCase->setEquilData(equilItems);
}
}
}

View File

@@ -80,7 +80,7 @@ private:
RigWellResultPoint createWellResultPoint(const RigGridBase* grid, const well_conn_type* ert_connection, int ertBranchId, int ertSegmentId, const char* wellName);
void importFaults(const QStringList& fileSet, cvf::Collection<RigFault>* faults);
void importEquilData(const QStringList& fileSet);
void importEquilData(const QStringList& fileSet, RigEclipseCaseData* eclipseCase);
void openInitFile();

View File

@@ -18,6 +18,26 @@
#include "RimPlotAxisAnnotation.h"
#include "RigEclipseCaseData.h"
#include "RigEquil.h"
#include "RimEclipseCase.h"
#include "RimRiuQwtPlotOwnerInterface.h"
#include "RimTools.h"
#include "RimViewWindow.h"
namespace caf
{
template<>
void RimPlotAxisAnnotation::ExportKeywordEnum::setUp()
{
addItem(RimPlotAxisAnnotation::PL_USER_DEFINED, "User Defined", "User Defined");
addItem(RimPlotAxisAnnotation::PL_EQUIL_WATER_OIL_CONTACT, "PL_EQUIL_WATER_OIL_CONTACT", "PL_EQUIL_WATER_OIL_CONTACT");
addItem(RimPlotAxisAnnotation::PL_EQUIL_GAS_OIL_CONTACT, "PL_EQUIL_GAS_OIL_CONTACT", "PL_EQUIL_GAS_OIL_CONTACT");
setDefault(RimPlotAxisAnnotation::PL_USER_DEFINED);
}
} // namespace caf
CAF_PDM_SOURCE_INIT(RimPlotAxisAnnotation, "RimPlotAxisAnnotation");
//--------------------------------------------------------------------------------------------------
@@ -32,6 +52,11 @@ RimPlotAxisAnnotation::RimPlotAxisAnnotation()
CAF_PDM_InitFieldNoDefault(&m_name, "Name", "Name", "", "", "");
CAF_PDM_InitFieldNoDefault(&m_value, "Value", "Value", "", "", "");
CAF_PDM_InitFieldNoDefault(&m_annotationType, "AnnotationType", "AnnotationType", "", "", "");
CAF_PDM_InitFieldNoDefault(&m_sourceCase, "Associated3DCase", "Eclipse Case", "", "", "");
CAF_PDM_InitFieldNoDefault(&m_equilNum, "m_equilNum", "equil Num", "", "", "");
}
//--------------------------------------------------------------------------------------------------
@@ -55,6 +80,17 @@ void RimPlotAxisAnnotation::setValue(double value)
//--------------------------------------------------------------------------------------------------
QString RimPlotAxisAnnotation::name() const
{
if (m_annotationType() == PL_EQUIL_WATER_OIL_CONTACT)
{
QString text = QString("WOC %1").arg(value());
return text;
}
else if (m_annotationType() == PL_EQUIL_GAS_OIL_CONTACT)
{
QString text = QString("GOC %1").arg(value());
return text;
}
return m_name();
}
@@ -63,6 +99,15 @@ QString RimPlotAxisAnnotation::name() const
//--------------------------------------------------------------------------------------------------
double RimPlotAxisAnnotation::value() const
{
if (m_annotationType() == PL_EQUIL_WATER_OIL_CONTACT)
{
return selectedItem().waterOilContactDepth();
}
else if (m_annotationType() == PL_EQUIL_GAS_OIL_CONTACT)
{
return selectedItem().gasOilContactDepth();
}
return m_value();
}
@@ -81,3 +126,100 @@ caf::PdmFieldHandle* RimPlotAxisAnnotation::objectToggleField()
{
return &m_isActive;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimPlotAxisAnnotation::fieldChangedByUi(const caf::PdmFieldHandle* changedField,
const QVariant& oldValue,
const QVariant& newValue)
{
/*
RimViewWindow* viewWindow = nullptr;
this->firstAncestorOrThisOfType(viewWindow);
if (viewWindow)
{
viewWindow->loadDataAndUpdate();
}
*/
RimRiuQwtPlotOwnerInterface* parentPlot = nullptr;
this->firstAncestorOrThisOfType(parentPlot);
if (parentPlot)
{
parentPlot->updateAxisDisplay();
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
QList<caf::PdmOptionItemInfo> RimPlotAxisAnnotation::calculateValueOptions(const caf::PdmFieldHandle* fieldNeedingOptions,
bool* useOptionsOnly)
{
QList<caf::PdmOptionItemInfo> options;
if (fieldNeedingOptions == &m_sourceCase)
{
RimTools::caseOptionItems(&options);
}
else if (fieldNeedingOptions == &m_equilNum)
{
for (const auto& eq : equilItems())
{
QString uiText = QString("%1").arg(eq.liveOilInitConstantRs());
options.push_back(caf::PdmOptionItemInfo(uiText, eq.liveOilInitConstantRs()));
}
}
return options;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimPlotAxisAnnotation::defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering)
{
uiOrdering.add(&m_annotationType);
if (m_annotationType() == PL_USER_DEFINED)
{
uiOrdering.add(&m_name);
uiOrdering.add(&m_value);
}
else
{
uiOrdering.add(&m_sourceCase);
uiOrdering.add(&m_equilNum);
}
uiOrdering.skipRemainingFields();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RigEquil RimPlotAxisAnnotation::selectedItem() const
{
for (auto eq : equilItems())
{
if (eq.liveOilInitConstantRs() == m_equilNum())
{
return eq;
}
}
return RigEquil::defaultObject();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
std::vector<RigEquil> RimPlotAxisAnnotation::equilItems() const
{
if (m_sourceCase && m_sourceCase->eclipseCaseData())
{
return m_sourceCase->eclipseCaseData()->equilData();
}
return std::vector<RigEquil>();
}

View File

@@ -21,9 +21,13 @@
#include "cafAppEnum.h"
#include "cafPdmField.h"
#include "cafPdmObject.h"
#include "cafPdmPtrField.h"
#include <QString>
class RimEclipseCase;
class RigEquil;
//==================================================================================================
///
///
@@ -33,20 +37,45 @@ class RimPlotAxisAnnotation : public caf::PdmObject
CAF_PDM_HEADER_INIT;
public:
enum PlotAxisAnnotationType
{
PL_USER_DEFINED,
PL_EQUIL_WATER_OIL_CONTACT,
PL_EQUIL_GAS_OIL_CONTACT
};
typedef caf::AppEnum<PlotAxisAnnotationType> ExportKeywordEnum;
RimPlotAxisAnnotation();
void setName(const QString& name);
void setValue(double value);
QString name() const;
double value() const;
double value() const;
caf::PdmFieldHandle* userDescriptionField() override;
caf::PdmFieldHandle* objectToggleField() override;
private:
caf::PdmField<bool> m_isActive;
void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue) override;
QList<caf::PdmOptionItemInfo> calculateValueOptions(const caf::PdmFieldHandle* fieldNeedingOptions,
bool* useOptionsOnly) override;
protected:
virtual void defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering) override;
private:
RigEquil selectedItem() const;
std::vector<RigEquil> equilItems() const;
private:
caf::PdmField<ExportKeywordEnum> m_annotationType;
caf::PdmField<bool> m_isActive;
caf::PdmField<QString> m_name;
caf::PdmField<double> m_value;
caf::PdmField<double> m_value;
caf::PdmPtrField<RimEclipseCase*> m_sourceCase;
caf::PdmField<int> m_equilNum;
};

View File

@@ -95,6 +95,7 @@ RimPlotAxisProperties::RimPlotAxisProperties()
m_annotations.uiCapability()->setUiHidden(true);
m_annotations.push_back(new RimPlotAxisAnnotation);
m_annotations.push_back(new RimPlotAxisAnnotation);
updateOptionSensitivity();
}

View File

@@ -29,8 +29,8 @@ RigEquil::RigEquil(double datumDepth,
double waterOilContactCapillaryPressure,
double gasOilContactDepth,
double gasOilContactCapillaryPressure,
bool liveOilInitConstantRs,
bool wetGasInitConstantRv,
int liveOilInitConstantRs,
int wetGasInitConstantRv,
int initializationTargetAccuracy)
: datum_depth(datumDepth)
, datum_depth_ps(datumDepthPressure)
@@ -74,12 +74,12 @@ double RigEquil::gasOilContactCapillaryPressure() const
return this->gas_oil_contact_capillary_pressure;
}
bool RigEquil::liveOilInitConstantRs() const
int RigEquil::liveOilInitConstantRs() const
{
return this->live_oil_init_proc;
}
bool RigEquil::wetGasInitConstantRv() const
int RigEquil::wetGasInitConstantRv() const
{
return this->wet_gas_init_proc;
}
@@ -89,6 +89,32 @@ int RigEquil::initializationTargetAccuracy() const
return this->init_target_accuracy;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RigEquil RigEquil::defaultObject()
{
double datumDepth = 0.0;
double datuDepthPressure = 0.0;
double waterOilContactDepth = 0.0;
double waterOilContactCapillaryPressure = 0.0;
double gasOilContactDepth = 0.0;
double gasOilContactCapillaryPressure = 0.0;
int liveOilInitConstantRs = -1;
int wetGasInitConstantRv = -1;
int initializationTargetAccuracy = -5;
return RigEquil(datumDepth,
datuDepthPressure,
waterOilContactDepth,
waterOilContactCapillaryPressure,
gasOilContactDepth,
gasOilContactCapillaryPressure,
liveOilInitConstantRs,
wetGasInitConstantRv,
initializationTargetAccuracy);
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
@@ -100,8 +126,8 @@ RigEquil RigEquil::parseString(const QString& keywordData)
double waterOilContactCapillaryPressure = 0.0;
double gasOilContactDepth = 0.0;
double gasOilContactCapillaryPressure = 0.0;
bool liveOilInitConstantRs = false;
bool wetGasInitConstantRv = false;
int liveOilInitConstantRs = 0;
int wetGasInitConstantRv = 0;
int initializationTargetAccuracy = -5;
QString line(keywordData);
@@ -135,11 +161,11 @@ RigEquil RigEquil::parseString(const QString& keywordData)
}
if (items.size() > 6)
{
liveOilInitConstantRs = items.at(6).toInt() > 0 ? true : false;
liveOilInitConstantRs = items.at(6).toInt();
}
if (items.size() > 7)
{
wetGasInitConstantRv = items.at(7).toInt() > 0 ? true : false;
wetGasInitConstantRv = items.at(7).toInt();
}
if (items.size() > 8)
{

View File

@@ -34,8 +34,8 @@ public:
double waterOilContactCapillaryPressure,
double gasOilContactDepth,
double gasOilContactCapillaryPressure,
bool liveOilInitConstantRs,
bool wetGasInitConstantRv,
int liveOilInitConstantRs,
int wetGasInitConstantRv,
int initializationTargetAccuracy);
double datumDepth() const;
@@ -45,10 +45,11 @@ public:
double gasOilContactDepth() const;
double gasOilContactCapillaryPressure() const;
bool liveOilInitConstantRs() const;
bool wetGasInitConstantRv() const;
int initializationTargetAccuracy() const;
int liveOilInitConstantRs() const;
int wetGasInitConstantRv() const;
int initializationTargetAccuracy() const;
static RigEquil defaultObject();
static RigEquil parseString(const QString& keywordData);
private:
@@ -59,7 +60,7 @@ private:
double gas_oil_contact_depth;
double gas_oil_contact_capillary_pressure;
bool live_oil_init_proc;
bool wet_gas_init_proc;
int init_target_accuracy;
int live_oil_init_proc;
int wet_gas_init_proc;
int init_target_accuracy;
};