finalizing and cleaning up

This commit is contained in:
Paul Egberts 2023-01-30 21:34:09 +01:00
parent c617224adb
commit 83934226aa
8 changed files with 108 additions and 142 deletions

View File

@ -179,32 +179,27 @@ if(ENABLE_ECL_INPUT)
src/opm/input/eclipse/Schedule/Well/WellTestConfig.cpp
src/opm/input/eclipse/Schedule/Well/WellTestState.cpp
src/opm/input/eclipse/Schedule/Well/WellTrajectory.cpp
src/opm/input/eclipse/Schedule/WellTrajResInsight/LibCore/cvfAssert.cpp
src/opm/input/eclipse/Schedule/WellTrajResInsight/LibCore/cvfAtomicCounter.cpp
src/opm/input/eclipse/Schedule/WellTrajResInsight/LibCore/cvfCharArray.cpp
src/opm/input/eclipse/Schedule/WellTrajResInsight/LibCore/cvfMath.cpp
src/opm/input/eclipse/Schedule/WellTrajResInsight/LibCore/cvfObject.cpp
src/opm/input/eclipse/Schedule/WellTrajResInsight/LibCore/cvfPlane.cpp
src/opm/input/eclipse/Schedule/WellTrajResInsight/LibCore/cvfString.cpp
src/opm/input/eclipse/Schedule/WellTrajResInsight/LibCore/cvfSystem.cpp
src/opm/input/eclipse/Schedule/WellTrajResInsight/LibCore/cvfVector3.cpp
src/opm/input/eclipse/Schedule/WellTrajResInsight/LibGeometry/cvfBoundingBox.cpp
src/opm/input/eclipse/Schedule/WellTrajResInsight/LibGeometry/cvfBoundingBoxTree.cpp
src/opm/input/eclipse/Schedule/WellTrajResInsight/LibGeometry/cvfRay.cpp
src/opm/input/eclipse/Schedule/WellTrajResInsight/ReservoirDataModel/cvfGeometryTools.cpp
src/opm/input/eclipse/Schedule/WellTrajResInsight/ReservoirDataModel/RigHexIntersectionTools.cpp
src/opm/input/eclipse/Schedule/WellTrajResInsight/ReservoirDataModel/RigWellLogExtractor.cpp
src/opm/input/eclipse/Schedule/WellTrajResInsight/ReservoirDataModel/RigWellPath.cpp
src/opm/input/eclipse/Schedule/WellTrajResInsight/ReservoirDataModel/MyRigEclipseWellLogExtractor.cpp
src/opm/input/eclipse/Schedule/WellTrajResInsight/CommonCode/cvfStructGrid.cpp
src/opm/input/eclipse/Schedule/WellTrajResInsight/cafPdmCore/cafSignal.cpp
src/opm/input/eclipse/Schedule/WellTrajResInsight/cafHexGridIntersectionTools/cafHexGridIntersectionTools.cpp
external/resinsight/LibCore/cvfAssert.cpp
external/resinsight/LibCore/cvfAtomicCounter.cpp
external/resinsight/LibCore/cvfCharArray.cpp
external/resinsight/LibCore/cvfMath.cpp
external/resinsight/LibCore/cvfObject.cpp
external/resinsight/LibCore/cvfPlane.cpp
external/resinsight/LibCore/cvfString.cpp
external/resinsight/LibCore/cvfSystem.cpp
external/resinsight/LibCore/cvfVector3.cpp
external/resinsight/LibGeometry/cvfBoundingBox.cpp
external/resinsight/LibGeometry/cvfBoundingBoxTree.cpp
external/resinsight/LibGeometry/cvfRay.cpp
external/resinsight/ReservoirDataModel/cvfGeometryTools.cpp
external/resinsight/ReservoirDataModel/RigHexIntersectionTools.cpp
external/resinsight/ReservoirDataModel/RigWellLogExtractor.cpp
external/resinsight/ReservoirDataModel/RigWellPath.cpp
external/resinsight/CommonCode/cvfStructGrid.cpp
external/resinsight/cafPdmCore/cafSignal.cpp
external/resinsight/cafHexGridIntersectionTools/cafHexGridIntersectionTools.cpp
src/opm/input/eclipse/Schedule/WellTraj/RigEclipseWellLogExtractor.cpp
src/opm/input/eclipse/EclipseState/SimulationConfig/BCConfig.cpp
src/opm/input/eclipse/EclipseState/SimulationConfig/RockConfig.cpp
src/opm/input/eclipse/EclipseState/SimulationConfig/SimulationConfig.cpp
@ -524,7 +519,6 @@ if(ENABLE_ECL_INPUT)
tests/parser/integration/NNCTests.cpp
tests/parser/WellSolventTests.cpp
tests/parser/WellTracerTests.cpp
tests/parser/WellTrajectoryTests.cpp
tests/parser/WellTests.cpp
tests/parser/WLIST.cpp
tests/parser/WriteRestartFileEventsTests.cpp
@ -1136,37 +1130,28 @@ if(ENABLE_ECL_INPUT)
opm/input/eclipse/Schedule/Well/WellTestState.hpp
opm/input/eclipse/Schedule/Well/WellConnections.hpp
src/opm/input/eclipse/Schedule/Well/WellTrajectory.hpp
src/opm/input/eclipse/Schedule/WellTrajResInsight/LibCore/cvfAssert.h
src/opm/input/eclipse/Schedule/WellTrajResInsight/LibCore/cvfAtomicCounter.h
src/opm/input/eclipse/Schedule/WellTrajResInsight/LibCore/cvfCharArray.h
src/opm/input/eclipse/Schedule/WellTrajResInsight/LibCore/cvfMath.h
src/opm/input/eclipse/Schedule/WellTrajResInsight/LibCore/cvfObject.h
src/opm/input/eclipse/Schedule/WellTrajResInsight/LibCore/cvfObject.inl
src/opm/input/eclipse/Schedule/WellTrajResInsight/LibCore/cvfPlane.h
src/opm/input/eclipse/Schedule/WellTrajResInsight/LibCore/cvfString.h
src/opm/input/eclipse/Schedule/WellTrajResInsight/LibCore/cvfSystem.h
src/opm/input/eclipse/Schedule/WellTrajResInsight/LibCore/cvfVector3.h
src/opm/input/eclipse/Schedule/WellTrajResInsight/LibGeometry/cvfBoundingBox.h
src/opm/input/eclipse/Schedule/WellTrajResInsight/LibGeometry/cvfBoundingBoxTree.h
src/opm/input/eclipse/Schedule/WellTrajResInsight/LibGeometry/cvfRay.h
src/opm/input/eclipse/Schedule/WellTrajResInsight/ReservoirDataModel/cvfGeometryTools.h
src/opm/input/eclipse/Schedule/WellTrajResInsight/ReservoirDataModel/RigHexIntersectionTools.h
src/opm/input/eclipse/Schedule/WellTrajResInsight/ReservoirDataModel/RigWellLogExtractionTools.h
src/opm/input/eclipse/Schedule/WellTrajResInsight/ReservoirDataModel/RigWellLogExtractor.h
src/opm/input/eclipse/Schedule/WellTrajResInsight/ReservoirDataModel/RigWellPath.h
src/opm/input/eclipse/Schedule/WellTrajResInsight/ReservoirDataModel/MyRigEclipseWellLogExtractor.h
src/opm/input/eclipse/Schedule/WellTrajResInsight/CommonCode/cvfStructGrid.h
src/opm/input/eclipse/Schedule/WellTrajResInsight/cafPdmCore/cafSignal.h
src/opm/input/eclipse/Schedule/WellTrajResInsight/cafHexGridIntersectionTools/cafHexGridIntersectionTools.h
external/resinsight/LibCore/cvfAssert.h
external/resinsight/LibCore/cvfAtomicCounter.h
external/resinsight/LibCore/cvfCharArray.h
external/resinsight/LibCore/cvfMath.h
external/resinsight/LibCore/cvfObject.h
external/resinsight/LibCore/cvfObject.inl
external/resinsight/LibCore/cvfPlane.h
external/resinsight/LibCore/cvfString.h
external/resinsight/LibCore/cvfSystem.h
external/resinsight/LibCore/cvfVector3.h
external/resinsight/LibGeometry/cvfBoundingBox.h
external/resinsight/LibGeometry/cvfBoundingBoxTree.h
external/resinsight/LibGeometry/cvfRay.h
external/resinsight/ReservoirDataModel/cvfGeometryTools.h
external/resinsight/ReservoirDataModel/RigHexIntersectionTools.h
external/resinsight/ReservoirDataModel/RigWellLogExtractionTools.h
external/resinsight/ReservoirDataModel/RigWellLogExtractor.h
external/resinsight/ReservoirDataModel/RigWellPath.h
external/resinsight/CommonCode/cvfStructGrid.h
external/resinsight/cafPdmCore/cafSignal.h
external/resinsight/cafHexGridIntersectionTools/cafHexGridIntersectionTools.h
opm/input/eclipse/Schedule/WellTraj/RigEclipseWellLogExtractor.hpp
opm/input/eclipse/Schedule/SummaryState.hpp
opm/input/eclipse/Schedule/RFTConfig.hpp

4
external/resinsight/README.opm vendored Normal file
View File

@ -0,0 +1,4 @@
This directory contains a selection of files from ResInsight(https://github.com/OPM/ResInsight).
This part of the code of ResInsight is used within OPM-Flow to calculate,
given a geometric (thus grid-independent) well trajectory the I,J,K coordinates of intersected cells
and the well line segments within these cells.

View File

@ -689,6 +689,7 @@ namespace Opm
void handleCOMPLUMP (HandlerContext&);
void handleCOMPORD (HandlerContext&);
void handleCOMPSEGS (HandlerContext&);
void handleCOMPTRAJ (HandlerContext&);
void handleDRSDT (HandlerContext&);
void handleDRSDTCON (HandlerContext&);
void handleDRSDTR (HandlerContext&);
@ -731,7 +732,6 @@ namespace Opm
void handleWCONPROD (HandlerContext&);
void handleWECON (HandlerContext&);
void handleWEFAC (HandlerContext&);
void handleWELCOMPL (HandlerContext&);
void handleWELOPEN (HandlerContext&);
void handleWELPI (HandlerContext&);
void handleWELSEGS (HandlerContext&);

View File

@ -20,6 +20,7 @@
#define SCHEDULE_GRID
#include <opm/input/eclipse/Schedule/CompletedCells.hpp>
#include <opm/input/eclipse/EclipseState/Grid/EclipseGrid.hpp>
namespace Opm {
@ -32,6 +33,7 @@ public:
explicit ScheduleGrid(CompletedCells& completed_cells);
const CompletedCells::Cell& get_cell(std::size_t i, std::size_t j, std::size_t k) const;
const Opm::EclipseGrid* get_grid() const;
private:
const EclipseGrid* grid{nullptr};

View File

@ -19,8 +19,8 @@
#pragma once
#include "RigWellLogExtractor.h"
#include <src/opm/input/eclipse/Schedule/WellTrajResInsight/LibGeometry/cvfBoundingBoxTree.h>
#include <external/resinsight/ReservoirDataModel/RigWellLogExtractor.h>
#include <external/resinsight/LibGeometry/cvfBoundingBoxTree.h>
#include <opm/input/eclipse/EclipseState/Grid/EclipseGrid.hpp>
#include <opm/input/eclipse/Schedule/ScheduleGrid.hpp>
@ -40,10 +40,10 @@ class BoundingBox;
//==================================================================================================
///
//==================================================================================================
class MyRigEclipseWellLogExtractor : public RigWellLogExtractor
class RigEclipseWellLogExtractor : public RigWellLogExtractor
{
public:
MyRigEclipseWellLogExtractor( const RigWellPath* wellpath, const Opm::EclipseGrid& grid, cvf::ref<cvf::BoundingBoxTree>& cellSearchTree);
RigEclipseWellLogExtractor( const RigWellPath* wellpath, const Opm::EclipseGrid& grid, cvf::ref<cvf::BoundingBoxTree>& cellSearchTree);
cvf::ref<cvf::BoundingBoxTree> getCellSearchTree();
private:

View File

@ -85,6 +85,8 @@
#include "Well/injection.hpp"
#include <external/resinsight/LibGeometry/cvfBoundingBoxTree.h>
namespace Opm {
namespace {
@ -189,8 +191,29 @@ namespace {
auto well2 = this->snapshots.back().wells.get(name);
auto connections = std::shared_ptr<WellConnections>( new WellConnections( well2.getConnections()));
connections->loadWELTRAJ(record, handlerContext.grid, name, handlerContext.keyword.location());
//what to do here? need here something like updateTrajectory
//maybe new method WellConnection::addTrajectory?
if (well2.updateConnections(connections, handlerContext.grid)) {
this->snapshots.back().wells.update( well2 );
wells.insert( name );
}
this->snapshots.back().wellgroup_events().addEvent( name, ScheduleEvents::COMPLETION_CHANGE);
}
}
this->snapshots.back().events().addEvent(ScheduleEvents::COMPLETION_CHANGE);
}
void Schedule::handleCOMPTRAJ(HandlerContext& handlerContext) {
// Keyword WELTRAJ must be read first
std::unordered_set<std::string> wells;
cvf::ref<cvf::BoundingBoxTree> cellSearchTree = nullptr;
for (const auto& record : handlerContext.keyword) {
const std::string& wellNamePattern = record.getItem("WELL").getTrimmedString(0);
auto wellnames = this->wellNames(wellNamePattern, handlerContext );
for (const auto& name : wellnames) {
auto well2 = this->snapshots.back().wells.get(name);
auto connections = std::shared_ptr<WellConnections>( new WellConnections( well2.getConnections()));
// cellsearchTree is calculated only once and is used to calculated cell intersections of the perforations specified in COMPTRAJ
connections->loadCOMPTRAJ(record, handlerContext.grid, name, handlerContext.keyword.location(), cellSearchTree);
if (well2.updateConnections(connections, handlerContext.grid)) {
this->snapshots.back().wells.update( well2 );
wells.insert( name );
@ -198,7 +221,7 @@ namespace {
if (connections->empty() && well2.getConnections().empty()) {
const auto& location = handlerContext.keyword.location();
auto msg = fmt::format("Problem with COMPDAT/{}\n"
auto msg = fmt::format("Problem with COMPTRAJ/{}\n"
"In {} line {}\n"
"Well {} is not connected to grid - will remain SHUT", name, location.filename, location.lineno, name);
OpmLog::warning(msg);
@ -210,53 +233,13 @@ namespace {
// In the case the wells reference depth has been defaulted in the
// WELSPECS keyword we need to force a calculation of the wells
// reference depth exactly when the COMPDAT keyword has been completely
// reference depth exactly when the WELCOML keyword has been completely
// processed.
// for (const auto& wname : wells) {
// auto& well = this->snapshots.back().wells.get( wname );
// well.updateRefDepth();
// this->snapshots.back().wells.update( std::move(well));
// }
}
void Schedule::handleWELCOMPL(HandlerContext& handlerContext) {
//WELTRAJ should have been read first: ijk of trajectory is known
//update of connection
std::unordered_set<std::string> wells;
for (const auto& record : handlerContext.keyword) {
const std::string& wellNamePattern = record.getItem("WELL").getTrimmedString(0);
auto wellnames = this->wellNames(wellNamePattern, handlerContext );
for (const auto& name : wellnames) {
auto well2 = this->snapshots.back().wells.get(name);
auto connections = std::shared_ptr<WellConnections>( new WellConnections( well2.getConnections()));
connections->loadWELCOMPL(record, handlerContext.grid, name, handlerContext.keyword.location());
// if (well2.updateConnections(connections, handlerContext.grid)) {
// this->snapshots.back().wells.update( well2 );
// wells.insert( name );
// }
// if (connections->empty() && well2.getConnections().empty()) {
// const auto& location = handlerContext.keyword.location();
// auto msg = fmt::format("Problem with COMPDAT/{}\n"
// "In {} line {}\n"
// "Well {} is not connected to grid - will remain SHUT", name, location.filename, location.lineno, name);
// OpmLog::warning(msg);
// }
// this->snapshots.back().wellgroup_events().addEvent( name, ScheduleEvents::COMPLETION_CHANGE);
}
for (const auto& wname : wells) {
auto& well = this->snapshots.back().wells.get( wname );
well.updateRefDepth();
this->snapshots.back().wells.update( std::move(well));
}
this->snapshots.back().events().addEvent(ScheduleEvents::COMPLETION_CHANGE);
// In the case the wells reference depth has been defaulted in the
// WELSPECS keyword we need to force a calculation of the wells
// reference depth exactly when the COMPDAT keyword has been completely
// processed.
// for (const auto& wname : wells) {
// auto& well = this->snapshots.back().wells.get( wname );
// well.updateRefDepth();
// this->snapshots.back().wells.update( std::move(well));
// }
}
void Schedule::handleCOMPLUMP(HandlerContext& handlerContext) {
@ -2321,6 +2304,7 @@ Well{0} entered with disallowed 'FIELD' parent group:
{ "COMPLUMP", &Schedule::handleCOMPLUMP },
{ "COMPORD" , &Schedule::handleCOMPORD },
{ "COMPSEGS", &Schedule::handleCOMPSEGS },
{ "COMPTRAJ", &Schedule::handleCOMPTRAJ },
{ "DRSDT" , &Schedule::handleDRSDT },
{ "DRSDTCON", &Schedule::handleDRSDTCON },
{ "DRSDTR" , &Schedule::handleDRSDTR },
@ -2378,7 +2362,6 @@ Well{0} entered with disallowed 'FIELD' parent group:
{ "WCONPROD", &Schedule::handleWCONPROD },
{ "WECON" , &Schedule::handleWECON },
{ "WEFAC" , &Schedule::handleWEFAC },
{ "WELCOMPL", &Schedule::handleWELCOMPL },
{ "WELOPEN" , &Schedule::handleWELOPEN },
{ "WELPI" , &Schedule::handleWELPI },
{ "WELSEGS" , &Schedule::handleWELSEGS },

View File

@ -33,7 +33,6 @@ Opm::ScheduleGrid::ScheduleGrid(Opm::CompletedCells& completed_cells)
: cells(completed_cells)
{}
namespace {
double try_get_value(const Opm::FieldPropsManager& fp, const std::string& kw, std::size_t active_index) {
if (fp.has_double(kw))
@ -74,3 +73,6 @@ const Opm::CompletedCells::Cell& Opm::ScheduleGrid::get_cell(std::size_t i, std:
return this->cells.get(i,j,k);
}
const Opm::EclipseGrid* Opm::ScheduleGrid::get_grid() const {
return this->grid;
}

View File

@ -19,15 +19,14 @@
#include <opm/input/eclipse/EclipseState/Grid/EclipseGrid.hpp>
#include <opm/input/eclipse/Schedule/ScheduleGrid.hpp>
#include "MyRigEclipseWellLogExtractor.h"
#include "RigWellLogExtractionTools.h"
#include "RigWellPath.h"
#include "../LibGeometry/cvfBoundingBox.h"
#include "cvfGeometryTools.h"
#include "RigWellLogExtractor.h"
#include "RigCellGeometryTools.h"
#include "../CommonCode/cvfStructGrid.h"
#include <opm/input/eclipse/Schedule/WellTraj/RigEclipseWellLogExtractor.hpp>
#include <external/resinsight/ReservoirDataModel/RigWellLogExtractionTools.h>
#include <external/resinsight/ReservoirDataModel/RigWellPath.h>
#include <external/resinsight/ReservoirDataModel/cvfGeometryTools.h>
#include <external/resinsight/ReservoirDataModel/RigWellLogExtractor.h>
#include <external/resinsight/ReservoirDataModel/RigCellGeometryTools.h>
#include <external/resinsight/CommonCode/cvfStructGrid.h>
#include <external/resinsight/LibGeometry/cvfBoundingBox.h>
#include <map>
@ -35,7 +34,7 @@
///
//==================================================================================================
MyRigEclipseWellLogExtractor::MyRigEclipseWellLogExtractor(const RigWellPath* wellpath, const Opm::EclipseGrid& grid, cvf::ref<cvf::BoundingBoxTree>& cellSearchTree)
RigEclipseWellLogExtractor::RigEclipseWellLogExtractor(const RigWellPath* wellpath, const Opm::EclipseGrid& grid, cvf::ref<cvf::BoundingBoxTree>& cellSearchTree)
: RigWellLogExtractor( wellpath, "" )
,m_grid(grid)
,m_cellSearchTree(cellSearchTree)
@ -46,7 +45,7 @@
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void MyRigEclipseWellLogExtractor::calculateIntersection()
void RigEclipseWellLogExtractor::calculateIntersection()
{
std::map<RigMDCellIdxEnterLeaveKey, HexIntersectionInfo> uniqueIntersections;
@ -115,7 +114,7 @@ void MyRigEclipseWellLogExtractor::calculateIntersection()
}
cvf::Vec3d MyRigEclipseWellLogExtractor::calculateLengthInCell( size_t cellIndex,
cvf::Vec3d RigEclipseWellLogExtractor::calculateLengthInCell( size_t cellIndex,
const cvf::Vec3d& startPoint,
const cvf::Vec3d& endPoint ) const
{
@ -136,11 +135,11 @@ cvf::Vec3d MyRigEclipseWellLogExtractor::calculateLengthInCell( size_t
hexCorners[6] = hexCorners_opm[7];
hexCorners[7] = hexCorners_opm[6];
return MyRigEclipseWellLogExtractor::calculateLengthInCell( hexCorners, startPoint, endPoint );
return RigEclipseWellLogExtractor::calculateLengthInCell( hexCorners, startPoint, endPoint );
}
cvf::Vec3d MyRigEclipseWellLogExtractor::calculateLengthInCell( const std::array<cvf::Vec3d, 8>& hexCorners,
cvf::Vec3d RigEclipseWellLogExtractor::calculateLengthInCell( const std::array<cvf::Vec3d, 8>& hexCorners,
const cvf::Vec3d& startPoint,
const cvf::Vec3d& endPoint ) const
{
@ -150,7 +149,7 @@ cvf::Vec3d MyRigEclipseWellLogExtractor::calculateLengthInCell( const std::array
cvf::Vec3d jAxisDirection;
cvf::Vec3d kAxisDirection;
MyRigEclipseWellLogExtractor::findCellLocalXYZ( hexCorners, iAxisDirection, jAxisDirection, kAxisDirection );
RigEclipseWellLogExtractor::findCellLocalXYZ( hexCorners, iAxisDirection, jAxisDirection, kAxisDirection );
cvf::Mat3d localCellCoordinateSystem( iAxisDirection.x(),
jAxisDirection.x(),
@ -170,7 +169,7 @@ cvf::Vec3d MyRigEclipseWellLogExtractor::calculateLengthInCell( const std::array
//==================================================================================================
///
//==================================================================================================
void MyRigEclipseWellLogExtractor::findCellLocalXYZ( const std::array<cvf::Vec3d, 8>& hexCorners,
void RigEclipseWellLogExtractor::findCellLocalXYZ( const std::array<cvf::Vec3d, 8>& hexCorners,
cvf::Vec3d& localXdirection,
cvf::Vec3d& localYdirection,
cvf::Vec3d& localZdirection ) const
@ -247,7 +246,7 @@ void MyRigEclipseWellLogExtractor::findCellLocalXYZ( const std::array<cvf::Vec3d
localYdirection.normalize();
}
void MyRigEclipseWellLogExtractor::buildCellSearchTree()
void RigEclipseWellLogExtractor::buildCellSearchTree()
{
if (m_cellSearchTree.isNull()) {
@ -304,30 +303,21 @@ void MyRigEclipseWellLogExtractor::buildCellSearchTree()
}
}
void MyRigEclipseWellLogExtractor::computeCachedData()
{
// initAllSubGridsParentGridPointer();
// initAllSubCellsMainGridCellIndex();
m_cellSearchTree = nullptr;
buildCellSearchTree();
}
void MyRigEclipseWellLogExtractor::findIntersectingCells( const cvf::BoundingBox& inputBB, std::vector<size_t>* cellIndices ) const
void RigEclipseWellLogExtractor::findIntersectingCells( const cvf::BoundingBox& inputBB, std::vector<size_t>* cellIndices ) const
{
CVF_ASSERT( m_cellSearchTree.notNull() );
m_cellSearchTree->findIntersections( inputBB, cellIndices );
}
std::vector<size_t> MyRigEclipseWellLogExtractor::findCloseCellIndices( const cvf::BoundingBox& bb )
std::vector<size_t> RigEclipseWellLogExtractor::findCloseCellIndices( const cvf::BoundingBox& bb )
{
std::vector<size_t> closeCells;
this->findIntersectingCells( bb, &closeCells );
return closeCells;
}
cvf::ref<cvf::BoundingBoxTree> MyRigEclipseWellLogExtractor::getCellSearchTree()
cvf::ref<cvf::BoundingBoxTree> RigEclipseWellLogExtractor::getCellSearchTree()
{
return m_cellSearchTree;
}