mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
#2552 Simulation well heads for branches in 2d intersection view
This commit is contained in:
parent
a41ca4688e
commit
4ac0a6354c
@ -132,7 +132,7 @@ void RivSimWellPipesPartMgr::buildWellPipeParts(const caf::DisplayCoordTransform
|
||||
if (!this->viewWithSettings()) return;
|
||||
|
||||
m_wellBranches.clear();
|
||||
|
||||
m_flattenedBranchWellHeadOffsets.clear();
|
||||
m_pipeBranchesCLCoords.clear();
|
||||
std::vector< std::vector <RigWellResultPoint> > pipeBranchesCellIds;
|
||||
|
||||
@ -177,6 +177,8 @@ void RivSimWellPipesPartMgr::buildWellPipeParts(const caf::DisplayCoordTransform
|
||||
cvfCoords->assign(m_pipeBranchesCLCoords[brIdx]);
|
||||
|
||||
flattenedStartOffset.z() = m_pipeBranchesCLCoords[brIdx][0].z();
|
||||
|
||||
m_flattenedBranchWellHeadOffsets.push_back(flattenedStartOffset.x());
|
||||
|
||||
if (doFlatten)
|
||||
{
|
||||
@ -398,3 +400,11 @@ void RivSimWellPipesPartMgr::updatePipeResultColor(size_t frameIndex)
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
std::vector<double> RivSimWellPipesPartMgr::flattenedBranchWellHeadOffsets()
|
||||
{
|
||||
return m_flattenedBranchWellHeadOffsets;
|
||||
}
|
||||
|
||||
|
@ -62,6 +62,8 @@ public:
|
||||
|
||||
void updatePipeResultColor(size_t frameIndex);
|
||||
|
||||
std::vector<double> flattenedBranchWellHeadOffsets();
|
||||
|
||||
private:
|
||||
Rim3dView* viewWithSettings();
|
||||
void buildWellPipeParts(const caf::DisplayCoordTransform* displayXf,
|
||||
@ -87,4 +89,5 @@ private:
|
||||
std::list<RivPipeBranchData> m_wellBranches;
|
||||
|
||||
std::vector< std::vector <cvf::Vec3d> > m_pipeBranchesCLCoords;
|
||||
std::vector<double> m_flattenedBranchWellHeadOffsets;
|
||||
};
|
||||
|
@ -75,7 +75,8 @@ RivWellHeadPartMgr::~RivWellHeadPartMgr()
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RivWellHeadPartMgr::buildWellHeadParts(size_t frameIndex,
|
||||
const caf::DisplayCoordTransform * displayXf,
|
||||
bool doFlatten)
|
||||
bool doFlatten,
|
||||
double xOffset)
|
||||
{
|
||||
clearAllGeometry();
|
||||
|
||||
@ -92,9 +93,9 @@ void RivWellHeadPartMgr::buildWellHeadParts(size_t frameIndex,
|
||||
|
||||
if (doFlatten)
|
||||
{
|
||||
whEndPos.x() = 0.0;
|
||||
whEndPos.x() = xOffset;
|
||||
whEndPos.y() = 0.0;
|
||||
whStartPos.x() = 0.0;
|
||||
whStartPos.x() = xOffset;
|
||||
whStartPos.y() = 0.0;
|
||||
whEndPos = displayXf->scaleToDisplaySize(whEndPos);
|
||||
whStartPos = displayXf->scaleToDisplaySize(whStartPos);
|
||||
@ -347,7 +348,7 @@ void RivWellHeadPartMgr::appendDynamicGeometryPartsToModel(cvf::ModelBasicList*
|
||||
|
||||
if (!m_rimWell->isWellPipeVisible(frameIndex)) return;
|
||||
|
||||
buildWellHeadParts(frameIndex, displayXf, false);
|
||||
buildWellHeadParts(frameIndex, displayXf, false, 0.0);
|
||||
|
||||
// Always add pipe part of well head
|
||||
if (m_wellHeadPipeCenterPart.notNull()) model->addPart(m_wellHeadPipeCenterPart.p());
|
||||
@ -371,14 +372,15 @@ void RivWellHeadPartMgr::appendDynamicGeometryPartsToModel(cvf::ModelBasicList*
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RivWellHeadPartMgr::appendFlattenedDynamicGeometryPartsToModel(cvf::ModelBasicList* model,
|
||||
size_t frameIndex,
|
||||
const caf::DisplayCoordTransform * displayXf)
|
||||
const caf::DisplayCoordTransform * displayXf,
|
||||
double xOffset)
|
||||
{
|
||||
if (m_rimWell.isNull()) return;
|
||||
if (!viewWithSettings()) return;
|
||||
|
||||
if (!m_rimWell->isWellPipeVisible(frameIndex)) return;
|
||||
|
||||
buildWellHeadParts(frameIndex, displayXf, true);
|
||||
buildWellHeadParts(frameIndex, displayXf, true, xOffset);
|
||||
|
||||
// Always add pipe part of well head
|
||||
if (m_wellHeadPipeCenterPart.notNull()) model->addPart(m_wellHeadPipeCenterPart.p());
|
||||
|
@ -50,14 +50,16 @@ public:
|
||||
const caf::DisplayCoordTransform * displayXf);
|
||||
void appendFlattenedDynamicGeometryPartsToModel(cvf::ModelBasicList* model,
|
||||
size_t frameIndex,
|
||||
const caf::DisplayCoordTransform * displayXf);
|
||||
const caf::DisplayCoordTransform * displayXf,
|
||||
double xOffset);
|
||||
|
||||
|
||||
|
||||
private:
|
||||
void buildWellHeadParts(size_t frameIndex,
|
||||
const caf::DisplayCoordTransform * displayXf,
|
||||
bool doFlatten);
|
||||
bool doFlatten,
|
||||
double xOffset);
|
||||
void clearAllGeometry();
|
||||
Rim3dView* viewWithSettings();
|
||||
RimSimWellInViewCollection* simWellInViewCollection();
|
||||
|
@ -482,9 +482,14 @@ void Rim2dIntersectionView::updateCurrentTimeStep()
|
||||
m_intersection->extentLength(),
|
||||
m_intersection->branchIndex());
|
||||
|
||||
m_flatWellHeadPartMgr->appendFlattenedDynamicGeometryPartsToModel(simWellModelBasicList.p(),
|
||||
m_currentTimeStep,
|
||||
this->displayCoordTransform().p());
|
||||
for ( double offset : m_flatSimWellPipePartMgr->flattenedBranchWellHeadOffsets() )
|
||||
{
|
||||
m_flatWellHeadPartMgr->appendFlattenedDynamicGeometryPartsToModel(simWellModelBasicList.p(),
|
||||
m_currentTimeStep,
|
||||
this->displayCoordTransform().p(),
|
||||
offset);
|
||||
}
|
||||
|
||||
simWellModelBasicList->updateBoundingBoxesRecursive();
|
||||
frameScene->addModel(simWellModelBasicList.p());
|
||||
m_flatSimWellPipePartMgr->updatePipeResultColor(m_currentTimeStep);
|
||||
|
Loading…
Reference in New Issue
Block a user