#1982 RFT plot. Support for TVDMSL when showing well log file curve

This commit is contained in:
Bjørn Erik Jensen 2017-10-16 08:38:38 +02:00
parent 2f4bfddb06
commit d9a29a6c9a
3 changed files with 51 additions and 11 deletions

View File

@ -90,26 +90,42 @@ void RimWellLogFileCurve::onLoadDataAndUpdate(bool updateParentPlot)
if (wellLogFile)
{
std::vector<double> values = wellLogFile->values(m_wellLogChannnelName);
std::vector<double> measuredDepthValues = wellLogFile->depthValues();
if (wellLogPlot && wellLogPlot->depthType() == RimWellLogPlot::TRUE_VERTICAL_DEPTH)
{
RigWellPath* rigWellPath = m_wellPath->wellPathGeometry();
if (rigWellPath)
bool canUseTvd = false;
if (wellLogFile->hasTvdChannel())
{
std::vector<double> trueVerticeldepthValues;
std::vector<double> tvdMslValues = wellLogFile->tvdMslValues();
for (double measuredDepthValue : measuredDepthValues)
if (values.size() == measuredDepthValues.size() && values.size() == tvdMslValues.size())
{
trueVerticeldepthValues.push_back(-rigWellPath->interpolatedPointAlongWellPath(measuredDepthValue).z());
}
if (values.size() == trueVerticeldepthValues.size() && values.size() == measuredDepthValues.size())
{
m_curveData->setValuesWithTVD(values, measuredDepthValues, trueVerticeldepthValues, wellLogFile->depthUnit(), false);
m_curveData->setValuesWithTVD(values, measuredDepthValues, tvdMslValues, wellLogFile->depthUnit(), false);
canUseTvd = true;
}
}
else
if (!canUseTvd)
{
RigWellPath* rigWellPath = m_wellPath->wellPathGeometry();
if (rigWellPath)
{
std::vector<double> trueVerticeldepthValues;
for (double measuredDepthValue : measuredDepthValues)
{
trueVerticeldepthValues.push_back(-rigWellPath->interpolatedPointAlongWellPath(measuredDepthValue).z());
}
if (values.size() == trueVerticeldepthValues.size() && values.size() == measuredDepthValues.size())
{
m_curveData->setValuesWithTVD(values, measuredDepthValues, trueVerticeldepthValues, wellLogFile->depthUnit(), false);
canUseTvd = true;
}
}
}
if (!canUseTvd)
{
if (RiaApplication::instance()->preferences()->showLasCurveWithoutTvdWarning())
{

View File

@ -115,6 +115,10 @@ bool RigWellLogFile::open(const QString& fileName, QString* errorMessage)
{
m_depthLogName = logName;
}
else if (logName.toUpper() == "TVDMSL")
{
m_tvdMslLogName = logName;
}
}
m_wellLogChannelNames = wellLogNames;
@ -172,6 +176,14 @@ std::vector<double> RigWellLogFile::depthValues() const
return values(m_depthLogName);
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
std::vector<double> RigWellLogFile::tvdMslValues() const
{
return values(m_tvdMslLogName);
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
@ -339,6 +351,14 @@ bool RigWellLogFile::exportToLasFile(const RimWellLogCurve* curve, const QString
return true;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
bool RigWellLogFile::hasTvdChannel() const
{
return !m_tvdMslLogName.isEmpty();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------

View File

@ -50,6 +50,7 @@ public:
QStringList wellLogChannelNames() const;
std::vector<double> depthValues() const;
std::vector<double> tvdMslValues() const;
std::vector<double> values(const QString& name) const;
QString wellLogChannelUnitString(const QString& wellLogChannelName, RiaDefines::DepthUnitType displayDepthUnit) const;
@ -57,6 +58,8 @@ public:
static bool exportToLasFile(const RimWellLogCurve* curve, const QString& fileName);
bool hasTvdChannel() const;
private:
void close();
QString depthUnitString() const;
@ -64,4 +67,5 @@ private:
NRLib::Well* m_wellLogFile;
QStringList m_wellLogChannelNames;
QString m_depthLogName;
QString m_tvdMslLogName;
};