Reorganized wellLogExtraction code, preparing for GeoMech variant.

This commit is contained in:
Jacob Støren 2015-09-04 10:02:47 +02:00
parent d7872971d3
commit ef4b0fa0d3
2 changed files with 54 additions and 57 deletions

View File

@ -25,20 +25,10 @@
#include "cvfBoundingBox.h"
#include "cvfGeometryTools.h"
//==================================================================================================
/// Internal class for intersection point info
//==================================================================================================
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RigEclipseWellLogExtractor::RigEclipseWellLogExtractor(const RigCaseData* aCase, const RigWellPath* wellpath)
: m_caseData(aCase), m_wellPath(wellpath)
{
calculateIntersection();
}
//--------------------------------------------------------------------------------------------------
/// Internal class for intersection point info
//--------------------------------------------------------------------------------------------------
struct HexIntersectionInfo
{
@ -98,9 +88,10 @@ int lineHexCellIntersection(const cvf::Vec3d p1, const cvf::Vec3d p2, const cvf:
return intersectionCount;
}
//--------------------------------------------------------------------------------------------------
/// Class used to sort the intersections along the wellpath
//--------------------------------------------------------------------------------------------------
//==================================================================================================
/// Class used to sort the intersections along the wellpath
//==================================================================================================
struct WellPathDepthPoint
{
WellPathDepthPoint(double md, bool entering): measuredDepth(md), isEnteringCell(entering){}
@ -149,6 +140,36 @@ struct WellPathDepthPoint
}
};
//==================================================================================================
///
//==================================================================================================
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RigEclipseWellLogExtractor::RigEclipseWellLogExtractor(const RigCaseData* aCase, const RigWellPath* wellpath)
: m_caseData(aCase), m_wellPath(wellpath)
{
calculateIntersection();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
const std::vector<double>& RigEclipseWellLogExtractor::measuredDepth()
{
return m_measuredDepth;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
const std::vector<double>& RigEclipseWellLogExtractor::trueVerticalDepth()
{
return m_trueVerticalDepth;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
@ -271,28 +292,3 @@ std::vector<size_t> RigEclipseWellLogExtractor::findCloseCells(const cvf::Boundi
return closeCells;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
const std::vector<double>& RigEclipseWellLogExtractor::measuredDepth()
{
return m_measuredDepth;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
const std::vector<double>& RigEclipseWellLogExtractor::trueVerticalDepth()
{
return m_trueVerticalDepth;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
const std::vector<size_t>& RigEclipseWellLogExtractor::cellIndicesPrSegment()
{
CVF_ASSERT(false); // Not implemented
return m_globalCellIndicesPrSegment;
}

View File

@ -43,26 +43,27 @@ class RigEclipseWellLogExtractor : public cvf::Object
public:
RigEclipseWellLogExtractor(const RigCaseData* aCase, const RigWellPath* wellpath);
const std::vector<double>& measuredDepth();
const std::vector<double>& trueVerticalDepth();
const std::vector<size_t>& cellIndicesPrSegment();
const std::vector<double>& measuredDepth();
const std::vector<double>& trueVerticalDepth();
void curveData(const RigResultAccessor* resultAccessor, std::vector<double>* values );
void curveData(const RigResultAccessor* resultAccessor, std::vector<double>* values );
const RigCaseData* caseData() { return m_caseData.p();}
const RigWellPath* wellPathData() { return m_wellPath.p();}
const RigCaseData* caseData() { return m_caseData.p();}
const RigWellPath* wellPathData() { return m_wellPath.p();}
private:
void calculateIntersection();
std::vector<size_t> findCloseCells(const cvf::BoundingBox& bb);
std::vector<double> m_measuredDepth;
std::vector<double> m_trueVerticalDepth;
std::vector<size_t> m_globalCellIndicesPrSegment;
std::vector<cvf::Vec3d> m_intersections;
std::vector<size_t> m_intersectedCells;
std::vector<cvf::StructGridInterface::FaceType> m_intersectedCellFaces;
void calculateIntersection();
std::vector<size_t> findCloseCells(const cvf::BoundingBox& bb);
cvf::cref<RigCaseData> m_caseData;
cvf::cref<RigWellPath> m_wellPath;
std::vector<double> m_measuredDepth;
std::vector<double> m_trueVerticalDepth;
std::vector<cvf::Vec3d> m_intersections;
std::vector<size_t> m_intersectedCells;
std::vector<cvf::StructGridInterface::FaceType>
m_intersectedCellFaces;
cvf::cref<RigCaseData> m_caseData;
cvf::cref<RigWellPath> m_wellPath;
};