mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
#2782 Auto name for 3d Well Log Curves
This commit is contained in:
parent
b686c1a081
commit
04f793c19d
@ -104,6 +104,7 @@ ${CMAKE_CURRENT_LIST_DIR}/Rim3dWellLogExtractionCurve.h
|
||||
${CMAKE_CURRENT_LIST_DIR}/Rim3dWellLogRftCurve.h
|
||||
${CMAKE_CURRENT_LIST_DIR}/RimVirtualPerforationResults.h
|
||||
${CMAKE_CURRENT_LIST_DIR}/RimLegendConfig.h
|
||||
${CMAKE_CURRENT_LIST_DIR}/RimWellLogCurveNameConfig.h
|
||||
)
|
||||
|
||||
|
||||
@ -212,6 +213,7 @@ ${CMAKE_CURRENT_LIST_DIR}/Rim3dWellLogExtractionCurve.cpp
|
||||
${CMAKE_CURRENT_LIST_DIR}/Rim3dWellLogRftCurve.cpp
|
||||
${CMAKE_CURRENT_LIST_DIR}/RimVirtualPerforationResults.cpp
|
||||
${CMAKE_CURRENT_LIST_DIR}/RimLegendConfig.cpp
|
||||
${CMAKE_CURRENT_LIST_DIR}/RimWellLogCurveNameConfig.cpp
|
||||
)
|
||||
|
||||
list(APPEND CODE_HEADER_FILES
|
||||
|
@ -85,6 +85,7 @@ void Rim3dWellLogCurveCollection::add3dWellLogCurve(Rim3dWellLogCurve* curve)
|
||||
size_t index = m_3dWellLogCurves.size();
|
||||
curve->setColor(RiaColorTables::wellLogPlotPaletteColors().cycledColor3f(index));
|
||||
m_3dWellLogCurves.push_back(curve);
|
||||
curve->createCurveAutoName();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -69,8 +69,6 @@ Rim3dWellLogCurve::Rim3dWellLogCurve()
|
||||
|
||||
CAF_PDM_InitField(&m_drawPlane, "DrawPlane", DrawPlaneEnum(VERTICAL_ABOVE), "Draw Plane", "", "", "");
|
||||
CAF_PDM_InitField(&m_color, "CurveColor", cvf::Color3f(0.0f, 0.0f, 0.0f), "Curve Color", "", "", "");
|
||||
CAF_PDM_InitField(&m_name, "Name", QString("3D Well Log Curve"), "3d Well Log Curve", "", "", "");
|
||||
m_name.uiCapability()->setUiHidden(true);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -90,14 +88,6 @@ void Rim3dWellLogCurve::updateCurveIn3dView()
|
||||
proj->createDisplayModelAndRedrawAllViews();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
const QString& Rim3dWellLogCurve::name() const
|
||||
{
|
||||
return m_name();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -171,14 +161,6 @@ void Rim3dWellLogCurve::fieldChangedByUi(const caf::PdmFieldHandle* changedField
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
caf::PdmFieldHandle* Rim3dWellLogCurve::userDescriptionField()
|
||||
{
|
||||
return &m_name;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -246,6 +228,14 @@ void Rim3dWellLogCurve::defineEditorAttribute(const caf::PdmFieldHandle* field,
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void Rim3dWellLogCurve::initAfterRead()
|
||||
{
|
||||
this->createCurveAutoName();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -255,11 +245,9 @@ void Rim3dWellLogCurve::resetMinMaxValuesAndUpdateUI()
|
||||
this->updateConnectedEditors();
|
||||
}
|
||||
|
||||
void Rim3dWellLogCurve::setGeometryGenerator(Riv3dWellLogCurveGeometryGenerator* generator)
|
||||
{
|
||||
m_geometryGenerator = generator;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
bool Rim3dWellLogCurve::findClosestPointOnCurve(const cvf::Vec3d& globalIntersection,
|
||||
cvf::Vec3d* closestPoint,
|
||||
double* measuredDepthAtPoint,
|
||||
@ -272,6 +260,17 @@ bool Rim3dWellLogCurve::findClosestPointOnCurve(const cvf::Vec3d& globalIntersec
|
||||
return false;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void Rim3dWellLogCurve::setGeometryGenerator(Riv3dWellLogCurveGeometryGenerator* generator)
|
||||
{
|
||||
m_geometryGenerator = generator;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
cvf::ref<Riv3dWellLogCurveGeometryGenerator> Rim3dWellLogCurve::geometryGenerator()
|
||||
{
|
||||
return m_geometryGenerator;
|
||||
|
@ -23,17 +23,19 @@
|
||||
#include "cafPdmObject.h"
|
||||
|
||||
#include "cafPdmFieldCvfColor.h"
|
||||
|
||||
#include "cafPdmChildField.h"
|
||||
#include "cvfObject.h"
|
||||
#include "cvfVector3.h"
|
||||
|
||||
#include "RimWellLogCurveNameConfig.h"
|
||||
|
||||
class Riv3dWellLogCurveGeometryGenerator;
|
||||
|
||||
//==================================================================================================
|
||||
///
|
||||
///
|
||||
//==================================================================================================
|
||||
class Rim3dWellLogCurve : public caf::PdmObject
|
||||
class Rim3dWellLogCurve : public caf::PdmObject, public RimCurveNameConfigHolderInterface
|
||||
{
|
||||
CAF_PDM_HEADER_INIT;
|
||||
|
||||
@ -52,7 +54,7 @@ public:
|
||||
|
||||
void updateCurveIn3dView();
|
||||
|
||||
const QString& name() const;
|
||||
virtual QString name() const = 0;
|
||||
virtual QString resultPropertyString() const = 0;
|
||||
DrawPlane drawPlane() const;
|
||||
cvf::Color3f color() const;
|
||||
@ -72,18 +74,17 @@ public:
|
||||
|
||||
void setGeometryGenerator(Riv3dWellLogCurveGeometryGenerator* generator);
|
||||
cvf::ref<Riv3dWellLogCurveGeometryGenerator> geometryGenerator();
|
||||
|
||||
|
||||
protected:
|
||||
virtual caf::PdmFieldHandle* objectToggleField() override;
|
||||
virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue) override;
|
||||
virtual caf::PdmFieldHandle* userDescriptionField() override;
|
||||
void configurationUiOrdering(caf::PdmUiOrdering& uiOrdering);
|
||||
virtual QList<caf::PdmOptionItemInfo> calculateValueOptions(const caf::PdmFieldHandle* fieldNeedingOptions, bool * useOptionsOnly) override;
|
||||
virtual void defineEditorAttribute(const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute);
|
||||
virtual void initAfterRead();
|
||||
private:
|
||||
void resetMinMaxValues();
|
||||
protected:
|
||||
caf::PdmField<QString> m_name;
|
||||
caf::PdmField<caf::AppEnum<DrawPlane>> m_drawPlane;
|
||||
caf::PdmField<cvf::Color3f> m_color;
|
||||
caf::PdmField<double> m_minCurveValue;
|
||||
|
@ -21,10 +21,17 @@
|
||||
#include "RigWellLogFile.h"
|
||||
|
||||
#include "RiaExtractionTools.h"
|
||||
#include "RigEclipseCaseData.h"
|
||||
#include "RigGeoMechCaseData.h"
|
||||
#include "RigEclipseWellLogExtractor.h"
|
||||
#include "RigGeoMechWellLogExtractor.h"
|
||||
#include "RigResultAccessorFactory.h"
|
||||
#include "RigCaseCellResultsData.h"
|
||||
#include "RigFemPartResultsCollection.h"
|
||||
#include "RimEclipseCase.h"
|
||||
#include "RimGeoMechCase.h"
|
||||
#include "Rim3dView.h"
|
||||
#include "RimWellLogCurveNameConfig.h"
|
||||
#include "RimCase.h"
|
||||
#include "RimEclipseCase.h"
|
||||
#include "RimEclipseCellColors.h"
|
||||
@ -71,7 +78,8 @@ Rim3dWellLogExtractionCurve::Rim3dWellLogExtractionCurve()
|
||||
m_geomResultDefinition.uiCapability()->setUiTreeChildrenHidden(true);
|
||||
m_geomResultDefinition = new RimGeoMechResultDefinition;
|
||||
|
||||
m_name = "3D Well Log Curve";
|
||||
CAF_PDM_InitFieldNoDefault(&m_nameConfig, "NameGenerator", "", "", "", "");
|
||||
m_nameConfig = new RimWellLogExtractionCurveNameConfig(this);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -81,6 +89,7 @@ Rim3dWellLogExtractionCurve::~Rim3dWellLogExtractionCurve()
|
||||
{
|
||||
delete m_geomResultDefinition;
|
||||
delete m_eclipseResultDefinition;
|
||||
delete m_nameConfig;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -174,6 +183,88 @@ void Rim3dWellLogExtractionCurve::curveValuesAndMds(std::vector<double>* values,
|
||||
}
|
||||
}
|
||||
|
||||
QString Rim3dWellLogExtractionCurve::name() const
|
||||
{
|
||||
return m_nameConfig()->name();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
QString Rim3dWellLogExtractionCurve::createCurveAutoName() const
|
||||
{
|
||||
RimGeoMechCase* geomCase = dynamic_cast<RimGeoMechCase*>(m_case.value());
|
||||
RimEclipseCase* eclipseCase = dynamic_cast<RimEclipseCase*>(m_case.value());
|
||||
|
||||
QStringList generatedCurveName;
|
||||
|
||||
if (m_nameConfig->addWellName())
|
||||
{
|
||||
RimWellPath* wellPath;
|
||||
this->firstAncestorOrThisOfTypeAsserted(wellPath);
|
||||
if (!wellPath->name().isEmpty())
|
||||
{
|
||||
generatedCurveName += wellPath->name();
|
||||
}
|
||||
}
|
||||
|
||||
if (m_nameConfig->addCaseName() && m_case())
|
||||
{
|
||||
generatedCurveName.push_back(m_case->caseUserDescription());
|
||||
}
|
||||
|
||||
if (m_nameConfig->addProperty() && !resultPropertyString().isEmpty())
|
||||
{
|
||||
generatedCurveName.push_back(resultPropertyString());
|
||||
}
|
||||
|
||||
if (m_nameConfig->addTimeStep() || m_nameConfig->addDate())
|
||||
{
|
||||
size_t maxTimeStep = 0;
|
||||
|
||||
if (eclipseCase)
|
||||
{
|
||||
RigEclipseCaseData* data = eclipseCase->eclipseCaseData();
|
||||
if (data)
|
||||
{
|
||||
maxTimeStep = data->results(m_eclipseResultDefinition->porosityModel())->maxTimeStepCount();
|
||||
}
|
||||
}
|
||||
else if (geomCase)
|
||||
{
|
||||
RigGeoMechCaseData* data = geomCase->geoMechData();
|
||||
if (data)
|
||||
{
|
||||
maxTimeStep = data->femPartResults()->frameCount();
|
||||
}
|
||||
}
|
||||
|
||||
if (m_nameConfig->addDate())
|
||||
{
|
||||
QString dateString = wellDate();
|
||||
if (!dateString.isEmpty())
|
||||
{
|
||||
generatedCurveName.push_back(dateString);
|
||||
}
|
||||
}
|
||||
|
||||
if (m_nameConfig->addTimeStep())
|
||||
{
|
||||
generatedCurveName.push_back(QString("[%1/%2]").arg(m_timeStep()).arg(maxTimeStep));
|
||||
}
|
||||
}
|
||||
|
||||
return generatedCurveName.join(", ");
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
caf::PdmFieldHandle* Rim3dWellLogExtractionCurve::userDescriptionField()
|
||||
{
|
||||
return m_nameConfig()->nameField();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -237,6 +328,8 @@ void Rim3dWellLogExtractionCurve::defineUiOrdering(QString uiConfigName, caf::Pd
|
||||
|
||||
Rim3dWellLogCurve::configurationUiOrdering(uiOrdering);
|
||||
|
||||
caf::PdmUiGroup* nameGroup = m_nameConfig()->createUiGroup(uiConfigName, uiOrdering);
|
||||
|
||||
uiOrdering.skipRemainingFields(true);
|
||||
}
|
||||
|
||||
@ -251,3 +344,28 @@ void Rim3dWellLogExtractionCurve::initAfterRead()
|
||||
m_eclipseResultDefinition->setEclipseCase(eclipseCase);
|
||||
m_geomResultDefinition->setGeoMechCase(geomCase);
|
||||
}
|
||||
|
||||
QString Rim3dWellLogExtractionCurve::wellDate() const
|
||||
{
|
||||
RimGeoMechCase* geomCase = dynamic_cast<RimGeoMechCase*>(m_case.value());
|
||||
RimEclipseCase* eclipseCase = dynamic_cast<RimEclipseCase*>(m_case.value());
|
||||
|
||||
QStringList timeStepNames;
|
||||
|
||||
if (eclipseCase)
|
||||
{
|
||||
if (eclipseCase->eclipseCaseData())
|
||||
{
|
||||
timeStepNames = eclipseCase->timeStepStrings();
|
||||
}
|
||||
}
|
||||
else if (geomCase)
|
||||
{
|
||||
if (geomCase->geoMechData())
|
||||
{
|
||||
timeStepNames = geomCase->timeStepStrings();
|
||||
}
|
||||
}
|
||||
|
||||
return (m_timeStep >= 0 && m_timeStep < timeStepNames.size()) ? timeStepNames[m_timeStep] : "";
|
||||
}
|
||||
|
@ -28,6 +28,7 @@ class Rim3dView;
|
||||
class RimCase;
|
||||
class RimGeoMechResultDefinition;
|
||||
class RimEclipseResultDefinition;
|
||||
class RimWellLogExtractionCurveNameConfig;
|
||||
|
||||
//==================================================================================================
|
||||
///
|
||||
@ -45,17 +46,22 @@ public:
|
||||
virtual QString resultPropertyString() const override;
|
||||
virtual void curveValuesAndMds(std::vector<double>* values, std::vector<double>* measuredDepthValues) const override;
|
||||
|
||||
virtual QString name() const override;
|
||||
virtual QString createCurveAutoName() const override;
|
||||
protected:
|
||||
virtual caf::PdmFieldHandle* userDescriptionField() override;
|
||||
private:
|
||||
virtual QList<caf::PdmOptionItemInfo> calculateValueOptions(const caf::PdmFieldHandle* fieldNeedingOptions,
|
||||
bool* useOptionsOnly) override;
|
||||
|
||||
virtual void defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering) override;
|
||||
virtual void initAfterRead() override;
|
||||
|
||||
QString wellDate() const;
|
||||
private:
|
||||
caf::PdmPtrField<RimCase*> m_case;
|
||||
caf::PdmField<int> m_timeStep;
|
||||
|
||||
caf::PdmChildField<RimEclipseResultDefinition*> m_eclipseResultDefinition;
|
||||
caf::PdmChildField<RimGeoMechResultDefinition*> m_geomResultDefinition;
|
||||
caf::PdmChildField<RimWellLogExtractionCurveNameConfig*> m_nameConfig;
|
||||
};
|
||||
|
@ -20,6 +20,7 @@
|
||||
|
||||
#include "RigWellLogFile.h"
|
||||
|
||||
#include "RimWellLogCurveNameConfig.h"
|
||||
#include "RimWellLogFile.h"
|
||||
#include "RimWellLogFileChannel.h"
|
||||
#include "RimWellPath.h"
|
||||
@ -44,13 +45,17 @@ Rim3dWellLogFileCurve::Rim3dWellLogFileCurve()
|
||||
|
||||
CAF_PDM_InitFieldNoDefault(&m_wellLogFile, "WellLogFile", "Well Log File", "", "", "");
|
||||
|
||||
m_name = "3D Well Log LAS Curve";
|
||||
CAF_PDM_InitFieldNoDefault(&m_nameConfig, "NameConfig", "", "", "", "");
|
||||
m_nameConfig = new RimWellLogFileCurveNameConfig(this);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
Rim3dWellLogFileCurve::~Rim3dWellLogFileCurve() {}
|
||||
Rim3dWellLogFileCurve::~Rim3dWellLogFileCurve()
|
||||
{
|
||||
delete m_nameConfig;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
@ -72,7 +77,6 @@ void Rim3dWellLogFileCurve::setDefaultFileCurveDataInfo()
|
||||
if (!fileLogs.empty())
|
||||
{
|
||||
m_wellLogChannelName = fileLogs[0]->name();
|
||||
m_name = "LAS: " + m_wellLogChannelName;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -104,6 +108,76 @@ QString Rim3dWellLogFileCurve::resultPropertyString() const
|
||||
return m_wellLogChannelName();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
QString Rim3dWellLogFileCurve::name() const
|
||||
{
|
||||
return m_nameConfig->name();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
QString Rim3dWellLogFileCurve::createCurveAutoName() const
|
||||
{
|
||||
QStringList name;
|
||||
QString unit;
|
||||
bool channelNameAvailable = false;
|
||||
|
||||
RimWellPath* wellPath;
|
||||
this->firstAncestorOrThisOfType(wellPath);
|
||||
|
||||
if (wellPath)
|
||||
{
|
||||
name.push_back(wellPath->name());
|
||||
name.push_back("LAS");
|
||||
|
||||
if (!m_wellLogChannelName().isEmpty())
|
||||
{
|
||||
name.push_back(m_wellLogChannelName);
|
||||
channelNameAvailable = true;
|
||||
}
|
||||
|
||||
RigWellLogFile* wellLogFile = m_wellLogFile ? m_wellLogFile->wellLogFileData() : nullptr;
|
||||
|
||||
if (wellLogFile)
|
||||
{
|
||||
if (channelNameAvailable)
|
||||
{
|
||||
/* RimWellLogPlot* wellLogPlot;
|
||||
firstAncestorOrThisOfType(wellLogPlot);
|
||||
CVF_ASSERT(wellLogPlot);
|
||||
QString unitName = wellLogFile->wellLogChannelUnitString(m_wellLogChannelName, wellLogPlot->depthUnit());
|
||||
|
||||
if (!unitName.isEmpty())
|
||||
{
|
||||
name.back() += QString(" [%1]").arg(unitName);
|
||||
} */
|
||||
}
|
||||
|
||||
QString date = wellLogFile->date();
|
||||
if (!date.isEmpty())
|
||||
{
|
||||
name.push_back(wellLogFile->date());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return name.join(", ");
|
||||
}
|
||||
|
||||
return "Empty curve";
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
caf::PdmFieldHandle* Rim3dWellLogFileCurve::userDescriptionField()
|
||||
{
|
||||
return m_nameConfig()->nameField();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -178,5 +252,7 @@ void Rim3dWellLogFileCurve::defineUiOrdering(QString uiConfigName, caf::PdmUiOrd
|
||||
|
||||
Rim3dWellLogCurve::configurationUiOrdering(uiOrdering);
|
||||
|
||||
caf::PdmUiGroup* nameGroup = m_nameConfig()->createUiGroup(uiConfigName, uiOrdering);
|
||||
|
||||
uiOrdering.skipRemainingFields(true);
|
||||
}
|
||||
|
@ -25,6 +25,7 @@
|
||||
#include "cafPdmPtrField.h"
|
||||
|
||||
class RimWellLogFile;
|
||||
class RimWellLogFileCurveNameConfig;
|
||||
|
||||
//==================================================================================================
|
||||
///
|
||||
@ -41,8 +42,10 @@ public:
|
||||
void setDefaultFileCurveDataInfo();
|
||||
virtual void curveValuesAndMds(std::vector<double>* values, std::vector<double>* measuredDepthValues) const override;
|
||||
virtual QString resultPropertyString() const override;
|
||||
|
||||
virtual QString name() const override;
|
||||
virtual QString createCurveAutoName() const override;
|
||||
protected:
|
||||
virtual caf::PdmFieldHandle* userDescriptionField() override;
|
||||
virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField,
|
||||
const QVariant& oldValue,
|
||||
const QVariant& newValue) override;
|
||||
@ -56,4 +59,5 @@ private:
|
||||
private:
|
||||
caf::PdmPtrField<RimWellLogFile*> m_wellLogFile;
|
||||
caf::PdmField<QString> m_wellLogChannelName;
|
||||
caf::PdmChildField<RimWellLogFileCurveNameConfig*> m_nameConfig;
|
||||
};
|
||||
|
@ -18,12 +18,14 @@
|
||||
|
||||
#include "Rim3dWellLogRftCurve.h"
|
||||
|
||||
#include "RifReaderEclipseRft.h"
|
||||
#include "RigWellLogCurveData.h"
|
||||
|
||||
#include "RimWellLogCurveNameConfig.h"
|
||||
#include "RimEclipseResultCase.h"
|
||||
#include "RimTools.h"
|
||||
#include "RimWellPath.h"
|
||||
#include "RimWellLogCurve.h"
|
||||
#include "RigWellLogCurveData.h"
|
||||
#include "RimEclipseResultCase.h"
|
||||
#include "RifReaderEclipseRft.h"
|
||||
#include "RimTools.h"
|
||||
|
||||
//==================================================================================================
|
||||
///
|
||||
@ -49,7 +51,8 @@ Rim3dWellLogRftCurve::Rim3dWellLogRftCurve()
|
||||
m_2dWellLogRftCurve = new RimWellLogRftCurve();
|
||||
m_2dWellLogRftCurve.xmlCapability()->disableIO();
|
||||
|
||||
m_name = "3D Well Log RFT Curve";
|
||||
CAF_PDM_InitFieldNoDefault(&m_nameConfig, "NameConfig", "", "", "", "");
|
||||
m_nameConfig = new RimWellLogRftCurveNameConfig(this);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -57,6 +60,7 @@ Rim3dWellLogRftCurve::Rim3dWellLogRftCurve()
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
Rim3dWellLogRftCurve::~Rim3dWellLogRftCurve()
|
||||
{
|
||||
delete m_nameConfig;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -84,6 +88,53 @@ QString Rim3dWellLogRftCurve::resultPropertyString() const
|
||||
return caf::AppEnum<RifEclipseRftAddress::RftWellLogChannelType>::uiText(m_wellLogChannelName());
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
QString Rim3dWellLogRftCurve::name() const
|
||||
{
|
||||
return m_nameConfig->name();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
QString Rim3dWellLogRftCurve::createCurveAutoName() const
|
||||
{
|
||||
QStringList name;
|
||||
|
||||
if (!wellName().isEmpty())
|
||||
{
|
||||
name.push_back(wellName());
|
||||
}
|
||||
|
||||
name.push_back("RFT");
|
||||
|
||||
if (m_eclipseResultCase)
|
||||
{
|
||||
name.push_back(m_eclipseResultCase->caseUserDescription());
|
||||
}
|
||||
if (m_wellLogChannelName().text() != caf::AppEnum<RifEclipseRftAddress::RftWellLogChannelType>::text(RifEclipseRftAddress::NONE))
|
||||
{
|
||||
RifEclipseRftAddress::RftWellLogChannelType channelNameEnum = m_wellLogChannelName();
|
||||
name.push_back(caf::AppEnum<RifEclipseRftAddress::RftWellLogChannelType>::uiText(channelNameEnum));
|
||||
}
|
||||
if (!m_timeStep().isNull())
|
||||
{
|
||||
name.push_back(m_timeStep().toString(RimTools::dateFormatString()));
|
||||
}
|
||||
|
||||
return name.join(", ");
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
caf::PdmFieldHandle* Rim3dWellLogRftCurve::userDescriptionField()
|
||||
{
|
||||
return m_nameConfig()->nameField();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
@ -28,6 +28,7 @@
|
||||
#include "RimWellLogRftCurve.h"
|
||||
|
||||
class RimEclipseResultCase;
|
||||
class RimWellLogRftCurveNameConfig;
|
||||
class QString;
|
||||
|
||||
//==================================================================================================
|
||||
@ -45,8 +46,12 @@ public:
|
||||
virtual void curveValuesAndMds(std::vector<double>* values, std::vector<double>* measuredDepthValues) const override;
|
||||
|
||||
virtual QString resultPropertyString() const override;
|
||||
virtual QString name() const override;
|
||||
virtual QString createCurveAutoName() const override;
|
||||
|
||||
protected:
|
||||
virtual caf::PdmFieldHandle* userDescriptionField() override;
|
||||
|
||||
virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField,
|
||||
const QVariant& oldValue,
|
||||
const QVariant& newValue) override;
|
||||
@ -66,4 +71,5 @@ private:
|
||||
caf::PdmField<caf::AppEnum<RifEclipseRftAddress::RftWellLogChannelType>> m_wellLogChannelName;
|
||||
|
||||
caf::PdmChildField<RimWellLogRftCurve*> m_2dWellLogRftCurve;
|
||||
caf::PdmChildField<RimWellLogRftCurveNameConfig*> m_nameConfig;
|
||||
};
|
||||
|
274
ApplicationCode/ProjectDataModel/RimWellLogCurveNameConfig.cpp
Normal file
274
ApplicationCode/ProjectDataModel/RimWellLogCurveNameConfig.cpp
Normal file
@ -0,0 +1,274 @@
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Copyright (C) 2018- Statoil ASA
|
||||
//
|
||||
// ResInsight is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, either version 3 of the License, or
|
||||
// (at your option) any later version.
|
||||
// + m_addWellName {m_fieldValue=true m_defaultFieldValue=true } caf::PdmField<bool>
|
||||
|
||||
// ResInsight is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
// WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
// FITNESS FOR A PARTICULAR PURPOSE.
|
||||
//
|
||||
// See the GNU General Public License at <http://www.gnu.org/licenses/gpl.html>
|
||||
// for more details.
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#include "RimProject.h"
|
||||
#include "RimWellLogCurveNameConfig.h"
|
||||
#include "Rim3dWellLogCurve.h"
|
||||
|
||||
//==================================================================================================
|
||||
///
|
||||
///
|
||||
//==================================================================================================
|
||||
|
||||
CAF_PDM_SOURCE_INIT(RimCurveNameConfig, "RimCurveNameGenerator");
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RimCurveNameConfig::RimCurveNameConfig(const RimCurveNameConfigHolderInterface* configHolder /*= nullptr*/)
|
||||
: m_configHolder(configHolder)
|
||||
{
|
||||
CAF_PDM_InitObject("Curve Name Generator", "", "", "");
|
||||
|
||||
CAF_PDM_InitField(&m_isUsingAutoName, "IsUsingAutoName", true, "Generate Name Automatically", "", "", "");
|
||||
CAF_PDM_InitFieldNoDefault(&m_customName, "CustomCurveName", "Curve Name", "", "", "");
|
||||
CAF_PDM_InitFieldNoDefault(&m_autoName, "AutoCurveName", "Curve Name", "", "", "");
|
||||
m_autoName.registerGetMethod(this, &RimCurveNameConfig::autoName);
|
||||
m_autoName.registerSetMethod(this, &RimCurveNameConfig::setCustomName);
|
||||
m_autoName.xmlCapability()->disableIO();
|
||||
|
||||
CVF_ASSERT(configHolder);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RimCurveNameConfig::~RimCurveNameConfig()
|
||||
{
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
bool RimCurveNameConfig::isUsingAutoName() const
|
||||
{
|
||||
return m_isUsingAutoName();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
caf::PdmFieldHandle* RimCurveNameConfig::nameField()
|
||||
{
|
||||
if (isUsingAutoName())
|
||||
{
|
||||
return &m_autoName;
|
||||
}
|
||||
return &m_customName;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
QString RimCurveNameConfig::name() const
|
||||
{
|
||||
if (isUsingAutoName())
|
||||
{
|
||||
return m_autoName();
|
||||
}
|
||||
return m_customName();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
caf::PdmUiGroup* RimCurveNameConfig::createUiGroup(QString uiConfigName, caf::PdmUiOrdering& uiOrdering)
|
||||
{
|
||||
caf::PdmUiGroup* nameGroup = uiOrdering.addNewGroup("Curve Name Configuration");
|
||||
nameGroup->add(&m_isUsingAutoName);
|
||||
return nameGroup;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimCurveNameConfig::fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue)
|
||||
{
|
||||
if (changedField == &m_customName)
|
||||
{
|
||||
m_isUsingAutoName = false;
|
||||
}
|
||||
|
||||
if (changedField == &m_isUsingAutoName && !isUsingAutoName())
|
||||
{
|
||||
m_customName = m_configHolder->createCurveAutoName();
|
||||
m_customName.uiCapability()->updateConnectedEditors();
|
||||
}
|
||||
|
||||
updateAllSettings();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
QString RimCurveNameConfig::autoName() const
|
||||
{
|
||||
return m_configHolder->createCurveAutoName();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimCurveNameConfig::setCustomName(const QString& name)
|
||||
{
|
||||
m_isUsingAutoName = false;
|
||||
m_customName = name;
|
||||
updateAllSettings();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimCurveNameConfig::updateAllSettings()
|
||||
{
|
||||
m_isUsingAutoName.uiCapability()->updateConnectedEditors();
|
||||
m_autoName.uiCapability()->updateConnectedEditors();
|
||||
m_customName.uiCapability()->updateConnectedEditors();
|
||||
|
||||
Rim3dWellLogCurve* curve;
|
||||
this->firstAncestorOrThisOfTypeAsserted(curve);
|
||||
curve->updateConnectedEditors();
|
||||
|
||||
}
|
||||
|
||||
//==================================================================================================
|
||||
///
|
||||
///
|
||||
//==================================================================================================
|
||||
|
||||
CAF_PDM_SOURCE_INIT(RimWellLogExtractionCurveNameConfig, "RimWellLogExtractionCurveNameGenerator");
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RimWellLogExtractionCurveNameConfig::RimWellLogExtractionCurveNameConfig(const RimCurveNameConfigHolderInterface* configHolder)
|
||||
: RimCurveNameConfig(configHolder)
|
||||
{
|
||||
CAF_PDM_InitObject("Well Log Extraction Curve Name Generator", "", "", "");
|
||||
|
||||
CAF_PDM_InitField(&m_addCaseName, "AddCaseName", false, "Add Case Name To Auto Name", "", "", "");
|
||||
CAF_PDM_InitField(&m_addProperty, "AddProperty", true, "Add Property Type To Auto Name", "", "", "");
|
||||
CAF_PDM_InitField(&m_addWellName, "AddWellName", true, "Add Well Name To Auto Name", "", "", "");
|
||||
CAF_PDM_InitField(&m_addTimestep, "AddTimeStep", true, "Add Time Step To Auto Name", "", "", "");
|
||||
CAF_PDM_InitField(&m_addDate, "AddDate", true, "Add Date To Auto Name", "", "", "");
|
||||
|
||||
m_customName = "Extraction Curve";
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
caf::PdmUiGroup* RimWellLogExtractionCurveNameConfig::createUiGroup(QString uiConfigName, caf::PdmUiOrdering& uiOrdering)
|
||||
{
|
||||
caf::PdmUiGroup* nameGroup = RimCurveNameConfig::createUiGroup(uiConfigName, uiOrdering);
|
||||
nameGroup->add(&m_addCaseName);
|
||||
nameGroup->add(&m_addProperty);
|
||||
nameGroup->add(&m_addWellName);
|
||||
nameGroup->add(&m_addTimestep);
|
||||
nameGroup->add(&m_addDate);
|
||||
return nameGroup;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
bool RimWellLogExtractionCurveNameConfig::addCaseName() const
|
||||
{
|
||||
return m_addCaseName();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
bool RimWellLogExtractionCurveNameConfig::addProperty() const
|
||||
{
|
||||
return m_addProperty();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
bool RimWellLogExtractionCurveNameConfig::addWellName() const
|
||||
{
|
||||
return m_addWellName();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
bool RimWellLogExtractionCurveNameConfig::addTimeStep() const
|
||||
{
|
||||
return m_addTimestep();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
bool RimWellLogExtractionCurveNameConfig::addDate() const
|
||||
{
|
||||
return m_addDate();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimWellLogExtractionCurveNameConfig::updateAllSettings()
|
||||
{
|
||||
m_addCaseName.uiCapability()->setUiReadOnly(!isUsingAutoName());
|
||||
m_addProperty.uiCapability()->setUiReadOnly(!isUsingAutoName());
|
||||
m_addWellName.uiCapability()->setUiReadOnly(!isUsingAutoName());
|
||||
m_addTimestep.uiCapability()->setUiReadOnly(!isUsingAutoName());
|
||||
m_addDate.uiCapability()->setUiReadOnly(!isUsingAutoName());
|
||||
|
||||
RimCurveNameConfig::updateAllSettings();
|
||||
}
|
||||
|
||||
//==================================================================================================
|
||||
///
|
||||
///
|
||||
//==================================================================================================
|
||||
|
||||
CAF_PDM_SOURCE_INIT(RimWellLogFileCurveNameConfig, "RimWellLogFileCurveNameGenerator");
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RimWellLogFileCurveNameConfig::RimWellLogFileCurveNameConfig(const RimCurveNameConfigHolderInterface* configHolder)
|
||||
: RimCurveNameConfig(configHolder)
|
||||
{
|
||||
CAF_PDM_InitObject("Well Log File Curve Name Generator", "", "", "");
|
||||
m_customName = "Las Curve";
|
||||
}
|
||||
|
||||
//==================================================================================================
|
||||
///
|
||||
///
|
||||
//==================================================================================================
|
||||
|
||||
CAF_PDM_SOURCE_INIT(RimWellLogRftCurveNameConfig, "RimWellLogRftCurveNameGenerator");
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RimWellLogRftCurveNameConfig::RimWellLogRftCurveNameConfig(const RimCurveNameConfigHolderInterface* configHolder)
|
||||
: RimCurveNameConfig(configHolder)
|
||||
{
|
||||
CAF_PDM_InitObject("Well Log Rft Curve Name Generator", "", "", "");
|
||||
m_customName = "Rft Curve";
|
||||
}
|
115
ApplicationCode/ProjectDataModel/RimWellLogCurveNameConfig.h
Normal file
115
ApplicationCode/ProjectDataModel/RimWellLogCurveNameConfig.h
Normal file
@ -0,0 +1,115 @@
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Copyright (C) 2015- Statoil ASA
|
||||
//
|
||||
// ResInsight is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, either version 3 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// ResInsight is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
// WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
// FITNESS FOR A PARTICULAR PURPOSE.
|
||||
//
|
||||
// See the GNU General Public License at <http://www.gnu.org/licenses/gpl.html>
|
||||
// for more details.
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "cafPdmField.h"
|
||||
#include "cafPdmObject.h"
|
||||
#include "cafPdmProxyValueField.h"
|
||||
|
||||
//==================================================================================================
|
||||
///
|
||||
///
|
||||
//==================================================================================================
|
||||
class RimCurveNameConfigHolderInterface
|
||||
{
|
||||
public:
|
||||
virtual QString createCurveAutoName() const = 0;
|
||||
};
|
||||
|
||||
//==================================================================================================
|
||||
///
|
||||
///
|
||||
//==================================================================================================
|
||||
class RimCurveNameConfig : public caf::PdmObject
|
||||
{
|
||||
CAF_PDM_HEADER_INIT;
|
||||
|
||||
public:
|
||||
RimCurveNameConfig(const RimCurveNameConfigHolderInterface* configHolder = nullptr);
|
||||
virtual ~RimCurveNameConfig();
|
||||
bool isUsingAutoName() const;
|
||||
caf::PdmFieldHandle* nameField();
|
||||
QString name() const;
|
||||
virtual caf::PdmUiGroup* createUiGroup(QString uiConfigName, caf::PdmUiOrdering& uiOrdering);
|
||||
|
||||
protected:
|
||||
virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue) override;
|
||||
QString autoName() const;
|
||||
void setCustomName(const QString& name);
|
||||
virtual void updateAllSettings();
|
||||
protected:
|
||||
caf::PdmField<bool> m_isUsingAutoName;
|
||||
caf::PdmField<QString> m_customName;
|
||||
caf::PdmProxyValueField<QString> m_autoName;
|
||||
|
||||
const RimCurveNameConfigHolderInterface* m_configHolder;
|
||||
};
|
||||
|
||||
//==================================================================================================
|
||||
///
|
||||
///
|
||||
//==================================================================================================
|
||||
class RimWellLogExtractionCurveNameConfig : public RimCurveNameConfig
|
||||
{
|
||||
CAF_PDM_HEADER_INIT;
|
||||
|
||||
public:
|
||||
RimWellLogExtractionCurveNameConfig(const RimCurveNameConfigHolderInterface* configHolder = nullptr);
|
||||
virtual caf::PdmUiGroup* createUiGroup(QString uiConfigName, caf::PdmUiOrdering& uiOrdering) override;
|
||||
|
||||
bool addCaseName() const;
|
||||
bool addProperty() const;
|
||||
bool addWellName() const;
|
||||
bool addTimeStep() const;
|
||||
bool addDate() const;
|
||||
|
||||
protected:
|
||||
virtual void updateAllSettings();
|
||||
|
||||
private:
|
||||
caf::PdmField<bool> m_addCaseName;
|
||||
caf::PdmField<bool> m_addProperty;
|
||||
caf::PdmField<bool> m_addWellName;
|
||||
caf::PdmField<bool> m_addTimestep;
|
||||
caf::PdmField<bool> m_addDate;
|
||||
};
|
||||
|
||||
//==================================================================================================
|
||||
///
|
||||
///
|
||||
//==================================================================================================
|
||||
class RimWellLogFileCurveNameConfig : public RimCurveNameConfig
|
||||
{
|
||||
CAF_PDM_HEADER_INIT;
|
||||
|
||||
public:
|
||||
RimWellLogFileCurveNameConfig(const RimCurveNameConfigHolderInterface* configHolder = nullptr);
|
||||
};
|
||||
|
||||
//==================================================================================================
|
||||
///
|
||||
///
|
||||
//==================================================================================================
|
||||
class RimWellLogRftCurveNameConfig : public RimCurveNameConfig
|
||||
{
|
||||
CAF_PDM_HEADER_INIT;
|
||||
|
||||
public:
|
||||
RimWellLogRftCurveNameConfig(const RimCurveNameConfigHolderInterface* configHolder = nullptr);
|
||||
};
|
Loading…
Reference in New Issue
Block a user