Added visualization of Well Paths in reservoir views.
Added PDM objects for a list of well paths (RimWellPathCollection) and for individual well paths (RimWellPath).
RimWellPathCollection uses RivWellPathCollectionPartMgr to generate visualization parts for each well path in the collection.
RimWellPath handles geometry defined in RigWellPath, and RivWellPathPartMgr is used to generate visualization parts. The well path visualization parts are generated by reusing RivPipeGeometryGenerator (also used for well pipes).
Added features:
- Select Open Well Paths in File menu to open one or more well path files, file format supported is Statoil JSON format.
- Each well path has a label showing the name, and the PDM window will show additional info (Id, Source System, UTM Zone, Update Date and User, Survey Type, File Path).
- Possible to turn on / off visibility, set thickness, set color for individual well paths.
- List of well paths including specified parameters/settings will be stored in project file.
- Possible to clip all well paths at a specified distance to the reservoir as this is the relevant area to see, and if showing whole well path it may be problematic for auto zoom etc.
p4#: 21651
2013-05-16 05:59:01 -05:00
|
|
|
/////////////////////////////////////////////////////////////////////////////////
|
|
|
|
//
|
2014-09-23 08:04:57 -05:00
|
|
|
// Copyright (C) 2011- Statoil ASA
|
|
|
|
// Copyright (C) 2013- Ceetron Solutions AS
|
|
|
|
// Copyright (C) 2011-2012 Ceetron AS
|
Added visualization of Well Paths in reservoir views.
Added PDM objects for a list of well paths (RimWellPathCollection) and for individual well paths (RimWellPath).
RimWellPathCollection uses RivWellPathCollectionPartMgr to generate visualization parts for each well path in the collection.
RimWellPath handles geometry defined in RigWellPath, and RivWellPathPartMgr is used to generate visualization parts. The well path visualization parts are generated by reusing RivPipeGeometryGenerator (also used for well pipes).
Added features:
- Select Open Well Paths in File menu to open one or more well path files, file format supported is Statoil JSON format.
- Each well path has a label showing the name, and the PDM window will show additional info (Id, Source System, UTM Zone, Update Date and User, Survey Type, File Path).
- Possible to turn on / off visibility, set thickness, set color for individual well paths.
- List of well paths including specified parameters/settings will be stored in project file.
- Possible to clip all well paths at a specified distance to the reservoir as this is the relevant area to see, and if showing whole well path it may be problematic for auto zoom etc.
p4#: 21651
2013-05-16 05:59:01 -05:00
|
|
|
//
|
|
|
|
// 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.
|
|
|
|
//
|
|
|
|
/////////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
|
|
|
2015-12-03 12:31:34 -06:00
|
|
|
#include "RivWellPathPartMgr.h"
|
Added visualization of Well Paths in reservoir views.
Added PDM objects for a list of well paths (RimWellPathCollection) and for individual well paths (RimWellPath).
RimWellPathCollection uses RivWellPathCollectionPartMgr to generate visualization parts for each well path in the collection.
RimWellPath handles geometry defined in RigWellPath, and RivWellPathPartMgr is used to generate visualization parts. The well path visualization parts are generated by reusing RivPipeGeometryGenerator (also used for well pipes).
Added features:
- Select Open Well Paths in File menu to open one or more well path files, file format supported is Statoil JSON format.
- Each well path has a label showing the name, and the PDM window will show additional info (Id, Source System, UTM Zone, Update Date and User, Survey Type, File Path).
- Possible to turn on / off visibility, set thickness, set color for individual well paths.
- List of well paths including specified parameters/settings will be stored in project file.
- Possible to clip all well paths at a specified distance to the reservoir as this is the relevant area to see, and if showing whole well path it may be problematic for auto zoom etc.
p4#: 21651
2013-05-16 05:59:01 -05:00
|
|
|
|
2019-05-06 03:36:05 -05:00
|
|
|
#include "RiaGuiApplication.h"
|
2015-12-03 12:31:34 -06:00
|
|
|
|
2018-03-12 05:07:46 -05:00
|
|
|
#include "RigEclipseCaseData.h"
|
2017-06-16 01:56:02 -05:00
|
|
|
#include "RigMainGrid.h"
|
2018-03-12 05:07:46 -05:00
|
|
|
#include "RigVirtualPerforationTransmissibilities.h"
|
2015-12-03 12:31:34 -06:00
|
|
|
#include "RigWellPath.h"
|
|
|
|
|
2018-03-20 05:29:46 -05:00
|
|
|
#include "Rim3dWellLogCurveCollection.h"
|
2017-06-16 01:56:02 -05:00
|
|
|
#include "RimEclipseCase.h"
|
|
|
|
#include "RimEclipseView.h"
|
2017-05-19 06:47:44 -05:00
|
|
|
#include "RimFishboneWellPath.h"
|
|
|
|
#include "RimFishboneWellPathCollection.h"
|
2017-06-16 01:56:02 -05:00
|
|
|
#include "RimFishbonesCollection.h"
|
2017-05-05 04:21:40 -05:00
|
|
|
#include "RimFishbonesMultipleSubs.h"
|
2017-05-12 03:01:37 -05:00
|
|
|
#include "RimPerforationCollection.h"
|
2017-06-16 01:56:02 -05:00
|
|
|
#include "RimPerforationInterval.h"
|
Added visualization of Well Paths in reservoir views.
Added PDM objects for a list of well paths (RimWellPathCollection) and for individual well paths (RimWellPath).
RimWellPathCollection uses RivWellPathCollectionPartMgr to generate visualization parts for each well path in the collection.
RimWellPath handles geometry defined in RigWellPath, and RivWellPathPartMgr is used to generate visualization parts. The well path visualization parts are generated by reusing RivPipeGeometryGenerator (also used for well pipes).
Added features:
- Select Open Well Paths in File menu to open one or more well path files, file format supported is Statoil JSON format.
- Each well path has a label showing the name, and the PDM window will show additional info (Id, Source System, UTM Zone, Update Date and User, Survey Type, File Path).
- Possible to turn on / off visibility, set thickness, set color for individual well paths.
- List of well paths including specified parameters/settings will be stored in project file.
- Possible to clip all well paths at a specified distance to the reservoir as this is the relevant area to see, and if showing whole well path it may be problematic for auto zoom etc.
p4#: 21651
2013-05-16 05:59:01 -05:00
|
|
|
#include "RimWellPath.h"
|
2018-10-10 09:57:43 -05:00
|
|
|
#include "RimWellPathAttribute.h"
|
|
|
|
#include "RimWellPathAttributeCollection.h"
|
2015-12-03 12:31:34 -06:00
|
|
|
#include "RimWellPathCollection.h"
|
2018-10-10 09:57:43 -05:00
|
|
|
#include "RimWellPathValve.h"
|
2015-12-03 12:31:34 -06:00
|
|
|
|
2017-01-04 01:10:02 -06:00
|
|
|
#include "RimWellPathFractureCollection.h"
|
2017-06-22 04:21:50 -05:00
|
|
|
#include "RimWellPathFracture.h"
|
2015-12-03 12:31:34 -06:00
|
|
|
|
2018-03-09 06:15:01 -06:00
|
|
|
#include "Riv3dWellLogPlanePartMgr.h"
|
2017-05-05 04:21:40 -05:00
|
|
|
#include "RivFishbonesSubsPartMgr.h"
|
2017-06-16 01:56:02 -05:00
|
|
|
#include "RivObjectSourceInfo.h"
|
2017-02-17 07:52:56 -06:00
|
|
|
#include "RivPartPriority.h"
|
Added visualization of Well Paths in reservoir views.
Added PDM objects for a list of well paths (RimWellPathCollection) and for individual well paths (RimWellPath).
RimWellPathCollection uses RivWellPathCollectionPartMgr to generate visualization parts for each well path in the collection.
RimWellPath handles geometry defined in RigWellPath, and RivWellPathPartMgr is used to generate visualization parts. The well path visualization parts are generated by reusing RivPipeGeometryGenerator (also used for well pipes).
Added features:
- Select Open Well Paths in File menu to open one or more well path files, file format supported is Statoil JSON format.
- Each well path has a label showing the name, and the PDM window will show additional info (Id, Source System, UTM Zone, Update Date and User, Survey Type, File Path).
- Possible to turn on / off visibility, set thickness, set color for individual well paths.
- List of well paths including specified parameters/settings will be stored in project file.
- Possible to clip all well paths at a specified distance to the reservoir as this is the relevant area to see, and if showing whole well path it may be problematic for auto zoom etc.
p4#: 21651
2013-05-16 05:59:01 -05:00
|
|
|
#include "RivPipeGeometryGenerator.h"
|
2018-03-20 07:12:20 -05:00
|
|
|
#include "RivSectionFlattner.h"
|
2018-03-15 15:25:54 -05:00
|
|
|
#include "RivWellConnectionFactorPartMgr.h"
|
2017-01-19 00:28:04 -06:00
|
|
|
#include "RivWellFracturePartMgr.h"
|
2017-01-04 01:10:02 -06:00
|
|
|
#include "RivWellPathPartMgr.h"
|
2018-03-09 06:15:01 -06:00
|
|
|
#include "RivWellPathSourceInfo.h"
|
2019-01-15 03:53:54 -06:00
|
|
|
#include "RivTextLabelSourceInfo.h"
|
2015-12-03 12:31:34 -06:00
|
|
|
|
2018-03-14 03:35:48 -05:00
|
|
|
#include "RiuViewer.h"
|
|
|
|
|
2017-01-06 03:26:57 -06:00
|
|
|
#include "cafDisplayCoordTransform.h"
|
2015-12-03 12:31:34 -06:00
|
|
|
#include "cafEffectGenerator.h"
|
|
|
|
#include "cvfDrawableGeo.h"
|
|
|
|
#include "cvfDrawableText.h"
|
|
|
|
#include "cvfFont.h"
|
Added visualization of Well Paths in reservoir views.
Added PDM objects for a list of well paths (RimWellPathCollection) and for individual well paths (RimWellPath).
RimWellPathCollection uses RivWellPathCollectionPartMgr to generate visualization parts for each well path in the collection.
RimWellPath handles geometry defined in RigWellPath, and RivWellPathPartMgr is used to generate visualization parts. The well path visualization parts are generated by reusing RivPipeGeometryGenerator (also used for well pipes).
Added features:
- Select Open Well Paths in File menu to open one or more well path files, file format supported is Statoil JSON format.
- Each well path has a label showing the name, and the PDM window will show additional info (Id, Source System, UTM Zone, Update Date and User, Survey Type, File Path).
- Possible to turn on / off visibility, set thickness, set color for individual well paths.
- List of well paths including specified parameters/settings will be stored in project file.
- Possible to clip all well paths at a specified distance to the reservoir as this is the relevant area to see, and if showing whole well path it may be problematic for auto zoom etc.
p4#: 21651
2013-05-16 05:59:01 -05:00
|
|
|
#include "cvfModelBasicList.h"
|
|
|
|
#include "cvfPart.h"
|
2018-02-05 06:23:14 -06:00
|
|
|
#include "cvfScalarMapperDiscreteLinear.h"
|
|
|
|
#include "cvfTransform.h"
|
Added visualization of Well Paths in reservoir views.
Added PDM objects for a list of well paths (RimWellPathCollection) and for individual well paths (RimWellPath).
RimWellPathCollection uses RivWellPathCollectionPartMgr to generate visualization parts for each well path in the collection.
RimWellPath handles geometry defined in RigWellPath, and RivWellPathPartMgr is used to generate visualization parts. The well path visualization parts are generated by reusing RivPipeGeometryGenerator (also used for well pipes).
Added features:
- Select Open Well Paths in File menu to open one or more well path files, file format supported is Statoil JSON format.
- Each well path has a label showing the name, and the PDM window will show additional info (Id, Source System, UTM Zone, Update Date and User, Survey Type, File Path).
- Possible to turn on / off visibility, set thickness, set color for individual well paths.
- List of well paths including specified parameters/settings will be stored in project file.
- Possible to clip all well paths at a specified distance to the reservoir as this is the relevant area to see, and if showing whole well path it may be problematic for auto zoom etc.
p4#: 21651
2013-05-16 05:59:01 -05:00
|
|
|
#include "cvfqtUtils.h"
|
2015-12-03 12:31:34 -06:00
|
|
|
|
Added visualization of Well Paths in reservoir views.
Added PDM objects for a list of well paths (RimWellPathCollection) and for individual well paths (RimWellPath).
RimWellPathCollection uses RivWellPathCollectionPartMgr to generate visualization parts for each well path in the collection.
RimWellPath handles geometry defined in RigWellPath, and RivWellPathPartMgr is used to generate visualization parts. The well path visualization parts are generated by reusing RivPipeGeometryGenerator (also used for well pipes).
Added features:
- Select Open Well Paths in File menu to open one or more well path files, file format supported is Statoil JSON format.
- Each well path has a label showing the name, and the PDM window will show additional info (Id, Source System, UTM Zone, Update Date and User, Survey Type, File Path).
- Possible to turn on / off visibility, set thickness, set color for individual well paths.
- List of well paths including specified parameters/settings will be stored in project file.
- Possible to clip all well paths at a specified distance to the reservoir as this is the relevant area to see, and if showing whole well path it may be problematic for auto zoom etc.
p4#: 21651
2013-05-16 05:59:01 -05:00
|
|
|
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
///
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
2018-02-05 06:23:14 -06:00
|
|
|
RivWellPathPartMgr::RivWellPathPartMgr(RimWellPath* wellPath, Rim3dView* view)
|
Added visualization of Well Paths in reservoir views.
Added PDM objects for a list of well paths (RimWellPathCollection) and for individual well paths (RimWellPath).
RimWellPathCollection uses RivWellPathCollectionPartMgr to generate visualization parts for each well path in the collection.
RimWellPath handles geometry defined in RigWellPath, and RivWellPathPartMgr is used to generate visualization parts. The well path visualization parts are generated by reusing RivPipeGeometryGenerator (also used for well pipes).
Added features:
- Select Open Well Paths in File menu to open one or more well path files, file format supported is Statoil JSON format.
- Each well path has a label showing the name, and the PDM window will show additional info (Id, Source System, UTM Zone, Update Date and User, Survey Type, File Path).
- Possible to turn on / off visibility, set thickness, set color for individual well paths.
- List of well paths including specified parameters/settings will be stored in project file.
- Possible to clip all well paths at a specified distance to the reservoir as this is the relevant area to see, and if showing whole well path it may be problematic for auto zoom etc.
p4#: 21651
2013-05-16 05:59:01 -05:00
|
|
|
{
|
2017-06-16 01:56:02 -05:00
|
|
|
m_rimWellPath = wellPath;
|
2018-02-05 06:23:14 -06:00
|
|
|
m_rimView = view;
|
Added visualization of Well Paths in reservoir views.
Added PDM objects for a list of well paths (RimWellPathCollection) and for individual well paths (RimWellPath).
RimWellPathCollection uses RivWellPathCollectionPartMgr to generate visualization parts for each well path in the collection.
RimWellPath handles geometry defined in RigWellPath, and RivWellPathPartMgr is used to generate visualization parts. The well path visualization parts are generated by reusing RivPipeGeometryGenerator (also used for well pipes).
Added features:
- Select Open Well Paths in File menu to open one or more well path files, file format supported is Statoil JSON format.
- Each well path has a label showing the name, and the PDM window will show additional info (Id, Source System, UTM Zone, Update Date and User, Survey Type, File Path).
- Possible to turn on / off visibility, set thickness, set color for individual well paths.
- List of well paths including specified parameters/settings will be stored in project file.
- Possible to clip all well paths at a specified distance to the reservoir as this is the relevant area to see, and if showing whole well path it may be problematic for auto zoom etc.
p4#: 21651
2013-05-16 05:59:01 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
///
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
RivWellPathPartMgr::~RivWellPathPartMgr()
|
|
|
|
{
|
2015-12-03 12:13:12 -06:00
|
|
|
clearAllBranchData();
|
Added visualization of Well Paths in reservoir views.
Added PDM objects for a list of well paths (RimWellPathCollection) and for individual well paths (RimWellPath).
RimWellPathCollection uses RivWellPathCollectionPartMgr to generate visualization parts for each well path in the collection.
RimWellPath handles geometry defined in RigWellPath, and RivWellPathPartMgr is used to generate visualization parts. The well path visualization parts are generated by reusing RivPipeGeometryGenerator (also used for well pipes).
Added features:
- Select Open Well Paths in File menu to open one or more well path files, file format supported is Statoil JSON format.
- Each well path has a label showing the name, and the PDM window will show additional info (Id, Source System, UTM Zone, Update Date and User, Survey Type, File Path).
- Possible to turn on / off visibility, set thickness, set color for individual well paths.
- List of well paths including specified parameters/settings will be stored in project file.
- Possible to clip all well paths at a specified distance to the reservoir as this is the relevant area to see, and if showing whole well path it may be problematic for auto zoom etc.
p4#: 21651
2013-05-16 05:59:01 -05:00
|
|
|
}
|
|
|
|
|
2017-01-04 01:10:02 -06:00
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
///
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
2018-04-23 15:52:44 -05:00
|
|
|
bool RivWellPathPartMgr::isWellPathWithinBoundingBox(const cvf::BoundingBox& wellPathClipBoundingBox) const
|
|
|
|
{
|
|
|
|
if (!m_rimWellPath->wellPathGeometry()) return false;
|
|
|
|
|
|
|
|
const std::vector<cvf::Vec3d>& wellpathCenterLine = m_rimWellPath->wellPathGeometry()->m_wellPathPoints;
|
|
|
|
if (wellpathCenterLine.size() < 2) return false;
|
|
|
|
|
|
|
|
// Skip visualization if outside the domain of this case
|
|
|
|
{
|
|
|
|
cvf::Vec3d casemax = wellPathClipBoundingBox.max();
|
|
|
|
cvf::Vec3d casemin = wellPathClipBoundingBox.min();
|
|
|
|
cvf::Vec3d caseext = wellPathClipBoundingBox.extent();
|
|
|
|
|
|
|
|
// Add up to the sealevel
|
|
|
|
cvf::BoundingBox relevantWellpathBBox = wellPathClipBoundingBox;
|
|
|
|
relevantWellpathBBox.add(cvf::Vec3d(casemax.x(), casemax.y(), 0.0));
|
|
|
|
|
|
|
|
// Add some sideways leeway
|
|
|
|
|
|
|
|
cvf::Vec3d addSize = 3.0*cvf::Vec3d(caseext.x(), caseext.y(), 0.0);
|
|
|
|
relevantWellpathBBox.add(casemax + addSize);
|
|
|
|
relevantWellpathBBox.add(casemin - addSize);
|
|
|
|
|
2018-04-23 16:06:21 -05:00
|
|
|
if (!RigWellPath::isAnyPointInsideBoundingBox(wellpathCenterLine, relevantWellpathBBox))
|
2018-04-23 15:52:44 -05:00
|
|
|
{
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
///
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
void RivWellPathPartMgr::appendStaticFracturePartsToModel(cvf::ModelBasicList* model,
|
|
|
|
const cvf::BoundingBox& wellPathClipBoundingBox)
|
2017-01-04 01:10:02 -06:00
|
|
|
{
|
2018-02-05 07:47:08 -06:00
|
|
|
if (m_rimView.isNull()) return;
|
|
|
|
|
|
|
|
const RimEclipseView* eclView = dynamic_cast<const RimEclipseView*>(m_rimView.p());
|
2018-02-05 06:23:14 -06:00
|
|
|
if (!eclView) return;
|
|
|
|
|
2017-12-22 06:43:32 -06:00
|
|
|
if (!m_rimWellPath || !m_rimWellPath->showWellPath() || !m_rimWellPath->fractureCollection()->isChecked()) return;
|
2017-01-19 00:28:04 -06:00
|
|
|
|
2018-04-23 15:52:44 -05:00
|
|
|
if (!isWellPathWithinBoundingBox(wellPathClipBoundingBox)) return;
|
|
|
|
|
2018-09-07 06:32:53 -05:00
|
|
|
for (RimWellPathFracture* f : m_rimWellPath->fractureCollection()->activeFractures())
|
2017-01-04 01:10:02 -06:00
|
|
|
{
|
2017-01-19 00:28:04 -06:00
|
|
|
CVF_ASSERT(f);
|
2017-01-04 01:10:02 -06:00
|
|
|
|
2018-02-05 06:23:14 -06:00
|
|
|
f->fracturePartManager()->appendGeometryPartsToModel(model, *eclView);
|
2017-01-04 01:10:02 -06:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2017-05-05 04:21:40 -05:00
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
///
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
2017-06-22 04:01:44 -05:00
|
|
|
void RivWellPathPartMgr::appendFishboneSubsPartsToModel(cvf::ModelBasicList* model,
|
|
|
|
const caf::DisplayCoordTransform* displayCoordTransform,
|
|
|
|
double characteristicCellSize)
|
2017-05-05 04:21:40 -05:00
|
|
|
{
|
2017-06-21 10:13:19 -05:00
|
|
|
if ( !m_rimWellPath || !m_rimWellPath->fishbonesCollection()->isChecked() ) return;
|
2017-05-05 04:21:40 -05:00
|
|
|
|
2018-09-07 05:41:04 -05:00
|
|
|
for (const auto& rimFishboneSubs : m_rimWellPath->fishbonesCollection()->activeFishbonesSubs() )
|
2017-05-05 04:21:40 -05:00
|
|
|
{
|
2017-06-21 10:13:19 -05:00
|
|
|
cvf::ref<RivFishbonesSubsPartMgr> fishbSubPartMgr = new RivFishbonesSubsPartMgr(rimFishboneSubs);
|
|
|
|
fishbSubPartMgr->appendGeometryPartsToModel(model, displayCoordTransform, characteristicCellSize);
|
2017-05-05 04:21:40 -05:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2018-10-10 09:57:43 -05:00
|
|
|
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
///
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
2018-10-11 04:33:45 -05:00
|
|
|
void RivWellPathPartMgr::appendWellPathAttributesToModel(cvf::ModelBasicList* model,
|
2018-10-10 09:57:43 -05:00
|
|
|
const caf::DisplayCoordTransform* displayCoordTransform,
|
|
|
|
double characteristicCellSize)
|
|
|
|
{
|
|
|
|
if (!m_rimWellPath) return;
|
|
|
|
|
|
|
|
RivPipeGeometryGenerator geoGenerator;
|
|
|
|
std::vector<RimWellPathAttribute*> attributes = m_rimWellPath->attributeCollection()->attributes();
|
|
|
|
|
|
|
|
for (RimWellPathAttribute* attribute : attributes)
|
|
|
|
{
|
2018-11-22 05:57:11 -06:00
|
|
|
if (attribute->isEnabled())
|
2018-10-10 09:57:43 -05:00
|
|
|
{
|
2018-11-22 05:57:11 -06:00
|
|
|
if (attribute->componentType() == RiaDefines::CASING)
|
2018-10-10 09:57:43 -05:00
|
|
|
{
|
2018-11-22 05:57:11 -06:00
|
|
|
double wellPathRadius = this->wellPathRadius(characteristicCellSize, this->wellPathCollection());
|
|
|
|
double endMD = attribute->endMD();
|
|
|
|
double shoeLength = wellPathRadius;
|
|
|
|
double shoeStartMD = endMD - shoeLength;
|
|
|
|
|
|
|
|
std::vector<cvf::Vec3d> displayCoords;
|
|
|
|
displayCoords.push_back(displayCoordTransform->transformToDisplayCoord(m_rimWellPath->wellPathGeometry()->interpolatedPointAlongWellPath(shoeStartMD)));
|
|
|
|
displayCoords.push_back(displayCoordTransform->transformToDisplayCoord(m_rimWellPath->wellPathGeometry()->interpolatedPointAlongWellPath(endMD)));
|
|
|
|
displayCoords.push_back(displayCoordTransform->transformToDisplayCoord(m_rimWellPath->wellPathGeometry()->interpolatedPointAlongWellPath(endMD)));
|
|
|
|
|
|
|
|
std::vector<double> radii;
|
|
|
|
radii.push_back(wellPathRadius);
|
|
|
|
radii.push_back(wellPathRadius * 2.5);
|
|
|
|
radii.push_back(wellPathRadius * 1.1);
|
|
|
|
|
|
|
|
cvf::ref<RivObjectSourceInfo> objectSourceInfo = new RivObjectSourceInfo(attribute);
|
|
|
|
|
|
|
|
cvf::Collection<cvf::Part> parts;
|
|
|
|
geoGenerator.tubeWithCenterLinePartsAndVariableWidth(&parts, displayCoords, radii, attribute->defaultComponentColor());
|
|
|
|
for (auto part : parts)
|
|
|
|
{
|
|
|
|
part->setSourceInfo(objectSourceInfo.p());
|
|
|
|
model->addPart(part.p());
|
|
|
|
}
|
2018-10-10 09:57:43 -05:00
|
|
|
}
|
2018-11-22 05:57:11 -06:00
|
|
|
else if (attribute->componentType() == RiaDefines::PACKER)
|
2018-10-11 04:33:45 -05:00
|
|
|
{
|
2018-11-22 05:57:11 -06:00
|
|
|
double wellPathRadius = this->wellPathRadius(characteristicCellSize, this->wellPathCollection());
|
|
|
|
double startMD = attribute->startMD();
|
|
|
|
double endMD = attribute->endMD();
|
|
|
|
|
|
|
|
std::vector<cvf::Vec3d> displayCoords;
|
|
|
|
displayCoords.push_back(displayCoordTransform->transformToDisplayCoord(m_rimWellPath->wellPathGeometry()->interpolatedPointAlongWellPath(startMD)));
|
|
|
|
displayCoords.push_back(displayCoordTransform->transformToDisplayCoord(m_rimWellPath->wellPathGeometry()->interpolatedPointAlongWellPath(startMD)));
|
|
|
|
displayCoords.push_back(displayCoordTransform->transformToDisplayCoord(m_rimWellPath->wellPathGeometry()->interpolatedPointAlongWellPath(endMD)));
|
|
|
|
displayCoords.push_back(displayCoordTransform->transformToDisplayCoord(m_rimWellPath->wellPathGeometry()->interpolatedPointAlongWellPath(endMD)));
|
|
|
|
|
|
|
|
std::vector<double> radii;
|
|
|
|
radii.push_back(wellPathRadius);
|
2018-11-22 07:06:03 -06:00
|
|
|
radii.push_back(wellPathRadius * 1.5);
|
|
|
|
radii.push_back(wellPathRadius * 1.5);
|
2018-11-22 05:57:11 -06:00
|
|
|
radii.push_back(wellPathRadius);
|
|
|
|
|
|
|
|
cvf::ref<RivObjectSourceInfo> objectSourceInfo = new RivObjectSourceInfo(attribute);
|
|
|
|
|
|
|
|
cvf::Collection<cvf::Part> parts;
|
|
|
|
geoGenerator.tubeWithCenterLinePartsAndVariableWidth(&parts, displayCoords, radii, attribute->defaultComponentColor());
|
|
|
|
for (auto part : parts)
|
|
|
|
{
|
|
|
|
part->setSourceInfo(objectSourceInfo.p());
|
|
|
|
model->addPart(part.p());
|
|
|
|
}
|
2018-10-11 04:33:45 -05:00
|
|
|
}
|
|
|
|
}
|
2018-10-10 09:57:43 -05:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2017-05-10 10:10:23 -05:00
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
///
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
2017-06-22 04:01:44 -05:00
|
|
|
void RivWellPathPartMgr::appendImportedFishbonesToModel(cvf::ModelBasicList* model,
|
|
|
|
const caf::DisplayCoordTransform* displayCoordTransform,
|
|
|
|
double characteristicCellSize)
|
2017-05-10 10:10:23 -05:00
|
|
|
{
|
2017-05-19 08:44:32 -05:00
|
|
|
if (!m_rimWellPath || !m_rimWellPath->fishbonesCollection()->wellPathCollection()->isChecked()) return;
|
2017-05-10 10:10:23 -05:00
|
|
|
|
|
|
|
RivPipeGeometryGenerator geoGenerator;
|
2017-05-19 08:44:32 -05:00
|
|
|
std::vector<RimFishboneWellPath*> fishbonesWellPaths;
|
|
|
|
m_rimWellPath->descendantsIncludingThisOfType(fishbonesWellPaths);
|
|
|
|
for (RimFishboneWellPath* fbWellPath : fishbonesWellPaths)
|
2017-05-10 10:10:23 -05:00
|
|
|
{
|
2017-05-19 08:44:32 -05:00
|
|
|
if (!fbWellPath->isChecked()) continue;
|
2017-05-10 10:10:23 -05:00
|
|
|
|
2019-01-03 06:16:26 -06:00
|
|
|
std::vector<cvf::Vec3d> displayCoords = displayCoordTransform->transformToDisplayCoords(fbWellPath->coordinates());
|
2017-05-10 10:10:23 -05:00
|
|
|
|
2017-05-19 08:44:32 -05:00
|
|
|
cvf::ref<RivObjectSourceInfo> objectSourceInfo = new RivObjectSourceInfo(fbWellPath);
|
2017-05-10 10:10:23 -05:00
|
|
|
|
|
|
|
cvf::Collection<cvf::Part> parts;
|
2017-06-22 04:01:44 -05:00
|
|
|
geoGenerator.cylinderWithCenterLineParts(&parts,
|
|
|
|
displayCoords,
|
|
|
|
m_rimWellPath->wellPathColor(),
|
|
|
|
m_rimWellPath->combinedScaleFactor() * characteristicCellSize * 0.5);
|
2017-05-10 10:10:23 -05:00
|
|
|
for (auto part : parts)
|
|
|
|
{
|
|
|
|
part->setSourceInfo(objectSourceInfo.p());
|
|
|
|
model->addPart(part.p());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2017-05-12 03:01:37 -05:00
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
///
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
2018-03-15 01:52:54 -05:00
|
|
|
void RivWellPathPartMgr::appendPerforationsToModel(cvf::ModelBasicList* model,
|
2018-03-16 05:21:57 -05:00
|
|
|
size_t timeStepIndex,
|
2017-06-22 04:01:44 -05:00
|
|
|
const caf::DisplayCoordTransform* displayCoordTransform,
|
2018-03-20 11:28:27 -05:00
|
|
|
double characteristicCellSize,
|
|
|
|
bool doFlatten)
|
2017-05-12 03:01:37 -05:00
|
|
|
{
|
2017-05-19 08:44:32 -05:00
|
|
|
if (!m_rimWellPath || !m_rimWellPath->perforationIntervalCollection()->isChecked()) return;
|
2017-05-12 03:01:37 -05:00
|
|
|
|
2018-02-05 06:23:14 -06:00
|
|
|
RimWellPathCollection* wellPathCollection = this->wellPathCollection();
|
|
|
|
if (!wellPathCollection) return;
|
|
|
|
|
2017-05-12 03:01:37 -05:00
|
|
|
RigWellPath* wellPathGeometry = m_rimWellPath->wellPathGeometry();
|
|
|
|
if (!wellPathGeometry) return;
|
|
|
|
|
2018-03-15 01:52:54 -05:00
|
|
|
QDateTime currentTimeStamp;
|
2018-03-16 05:21:57 -05:00
|
|
|
if (m_rimView)
|
2018-03-15 01:52:54 -05:00
|
|
|
{
|
2018-03-16 05:21:57 -05:00
|
|
|
RimCase* rimCase = nullptr;
|
|
|
|
m_rimView->firstAncestorOrThisOfType(rimCase);
|
|
|
|
|
|
|
|
if (rimCase)
|
|
|
|
{
|
|
|
|
std::vector<QDateTime> timeStamps = rimCase->timeStepDates();
|
|
|
|
if (timeStepIndex < timeStamps.size())
|
|
|
|
{
|
|
|
|
currentTimeStamp = timeStamps[timeStepIndex];
|
|
|
|
}
|
|
|
|
}
|
2018-03-15 01:52:54 -05:00
|
|
|
}
|
|
|
|
|
2017-05-12 03:01:37 -05:00
|
|
|
// Since we're using the index of measured depths to find the index of a point, ensure they're equal
|
|
|
|
CVF_ASSERT(wellPathGeometry->m_measuredDepths.size() == wellPathGeometry->m_wellPathPoints.size());
|
|
|
|
|
2018-02-05 06:23:14 -06:00
|
|
|
double wellPathRadius = this->wellPathRadius(characteristicCellSize, wellPathCollection);
|
2017-05-12 03:01:37 -05:00
|
|
|
double perforationRadius = wellPathRadius * 1.1;
|
|
|
|
|
|
|
|
RivPipeGeometryGenerator geoGenerator;
|
2017-05-19 08:44:32 -05:00
|
|
|
std::vector<RimPerforationInterval*> perforations;
|
|
|
|
m_rimWellPath->descendantsIncludingThisOfType(perforations);
|
|
|
|
for (RimPerforationInterval* perforation : perforations)
|
2017-05-12 03:01:37 -05:00
|
|
|
{
|
2018-03-20 11:28:27 -05:00
|
|
|
using namespace std;
|
|
|
|
|
2017-05-12 03:01:37 -05:00
|
|
|
if (!perforation->isChecked()) continue;
|
2017-05-12 03:44:34 -05:00
|
|
|
if (perforation->startMD() > perforation->endMD()) continue;
|
2017-05-12 03:01:37 -05:00
|
|
|
|
2018-03-16 05:21:57 -05:00
|
|
|
if (!perforation->isActiveOnDate(currentTimeStamp)) continue;
|
2018-03-20 11:28:27 -05:00
|
|
|
|
|
|
|
double horizontalLengthAlongWellPath = 0.0;
|
|
|
|
vector<cvf::Vec3d> perfIntervalCL;
|
|
|
|
{
|
|
|
|
pair<vector<cvf::Vec3d>, vector<double> > perfintervalCoordsAndMD = wellPathGeometry->clippedPointSubset(perforation->startMD(),
|
|
|
|
perforation->endMD(),
|
|
|
|
&horizontalLengthAlongWellPath);
|
|
|
|
perfIntervalCL = perfintervalCoordsAndMD.first;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (perfIntervalCL.size() < 2) continue;
|
2017-06-16 01:56:02 -05:00
|
|
|
|
2017-05-12 03:01:37 -05:00
|
|
|
|
2018-03-20 11:28:27 -05:00
|
|
|
vector<cvf::Vec3d> perfIntervalCLDiplayCS;
|
|
|
|
if ( doFlatten )
|
|
|
|
{
|
|
|
|
cvf::Vec3d dummy;
|
|
|
|
vector<cvf::Mat4d> flatningCSs =
|
|
|
|
RivSectionFlattner::calculateFlatteningCSsForPolyline(perfIntervalCL,
|
|
|
|
cvf::Vec3d::Z_AXIS,
|
|
|
|
{ horizontalLengthAlongWellPath, 0.0, perfIntervalCL[0].z() },
|
|
|
|
&dummy);
|
|
|
|
|
|
|
|
for ( size_t cIdx = 0; cIdx < perfIntervalCL.size(); ++cIdx )
|
|
|
|
{
|
|
|
|
auto clpoint = perfIntervalCL[cIdx].getTransformedPoint(flatningCSs[cIdx]);
|
|
|
|
perfIntervalCLDiplayCS.push_back( displayCoordTransform->scaleToDisplaySize(clpoint));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
for ( cvf::Vec3d& point : perfIntervalCL )
|
|
|
|
{
|
|
|
|
perfIntervalCLDiplayCS.push_back( displayCoordTransform->transformToDisplayCoord(point));
|
|
|
|
}
|
|
|
|
}
|
2018-10-10 09:57:43 -05:00
|
|
|
{
|
|
|
|
cvf::ref<RivObjectSourceInfo> objectSourceInfo = new RivObjectSourceInfo(perforation);
|
2017-09-18 09:24:29 -05:00
|
|
|
|
2018-10-10 09:57:43 -05:00
|
|
|
cvf::Collection<cvf::Part> parts;
|
|
|
|
geoGenerator.cylinderWithCenterLineParts(&parts, perfIntervalCLDiplayCS, cvf::Color3f::GREEN, perforationRadius);
|
|
|
|
for (auto part : parts)
|
|
|
|
{
|
|
|
|
part->setSourceInfo(objectSourceInfo.p());
|
|
|
|
model->addPart(part.p());
|
|
|
|
}
|
|
|
|
}
|
2017-05-12 03:01:37 -05:00
|
|
|
|
2018-10-10 09:57:43 -05:00
|
|
|
appendPerforationValvesToModel(model, perforation, wellPathRadius, displayCoordTransform, geoGenerator);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
///
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
void RivWellPathPartMgr::appendPerforationValvesToModel(cvf::ModelBasicList* model, RimPerforationInterval* perforation, double wellPathRadius, const caf::DisplayCoordTransform* displayCoordTransform, RivPipeGeometryGenerator &geoGenerator)
|
|
|
|
{
|
|
|
|
// Valves
|
|
|
|
{
|
|
|
|
for (RimWellPathValve* valve : perforation->valves())
|
2017-05-12 03:01:37 -05:00
|
|
|
{
|
2018-10-10 09:57:43 -05:00
|
|
|
if (!valve->isChecked()) continue;
|
|
|
|
|
|
|
|
std::vector<double> measuredDepthsRelativeToStartMD;
|
|
|
|
std::vector<double> radii;
|
|
|
|
cvf::Color3f valveColor = valve->defaultComponentColor();
|
|
|
|
if (valve->componentType() == RiaDefines::ICV)
|
|
|
|
{
|
|
|
|
measuredDepthsRelativeToStartMD = { 0.0, 1.0, 1.5, 4.0, 5.0, 5.5, 8.0, 9.0 };
|
|
|
|
radii = { wellPathRadius, wellPathRadius * 1.8, wellPathRadius * 2.0,
|
|
|
|
wellPathRadius * 2.0, wellPathRadius * 1.8,
|
|
|
|
wellPathRadius * 1.7, wellPathRadius * 1.7, wellPathRadius };
|
2018-10-19 07:44:17 -05:00
|
|
|
|
|
|
|
double startMD = valve->startMD();
|
|
|
|
std::vector<cvf::Vec3d> displayCoords;
|
|
|
|
for (double mdRelativeToStart : measuredDepthsRelativeToStartMD)
|
|
|
|
{
|
|
|
|
displayCoords.push_back(displayCoordTransform->transformToDisplayCoord(
|
|
|
|
m_rimWellPath->wellPathGeometry()->interpolatedPointAlongWellPath(mdRelativeToStart * 0.333 * wellPathRadius + startMD)));
|
|
|
|
}
|
|
|
|
|
|
|
|
cvf::ref<RivObjectSourceInfo> objectSourceInfo = new RivObjectSourceInfo(valve);
|
2018-10-10 09:57:43 -05:00
|
|
|
|
2018-10-19 07:44:17 -05:00
|
|
|
cvf::Collection<cvf::Part> parts;
|
|
|
|
geoGenerator.tubeWithCenterLinePartsAndVariableWidth(&parts, displayCoords, radii, valveColor);
|
|
|
|
for (auto part : parts)
|
2018-10-10 09:57:43 -05:00
|
|
|
{
|
2018-10-19 07:44:17 -05:00
|
|
|
part->setSourceInfo(objectSourceInfo.p());
|
|
|
|
model->addPart(part.p());
|
2018-10-10 09:57:43 -05:00
|
|
|
}
|
2018-10-19 07:44:17 -05:00
|
|
|
}
|
|
|
|
else if (valve->componentType() == RiaDefines::ICD || valve->componentType() == RiaDefines::AICD)
|
|
|
|
{
|
|
|
|
std::vector<double> valveLocations = valve->valveLocations();
|
|
|
|
for (double startMD : valveLocations)
|
2018-10-10 09:57:43 -05:00
|
|
|
{
|
2018-10-19 07:44:17 -05:00
|
|
|
int size = 16;
|
|
|
|
|
|
|
|
measuredDepthsRelativeToStartMD.resize(size);
|
|
|
|
radii.resize(size);
|
|
|
|
for (int i = 0; i < size; i += 2)
|
2018-10-10 09:57:43 -05:00
|
|
|
{
|
2018-10-19 07:44:17 -05:00
|
|
|
measuredDepthsRelativeToStartMD[i] = double(i / 2);
|
|
|
|
measuredDepthsRelativeToStartMD[i + 1] = double(i / 2 + 0.5);
|
2018-10-10 09:57:43 -05:00
|
|
|
}
|
2018-10-19 07:44:17 -05:00
|
|
|
radii[0] = wellPathRadius;
|
|
|
|
bool inner = false;
|
|
|
|
int nInners = 0;
|
|
|
|
for (int i = 1; i < size - 1; i += 2)
|
2018-10-10 09:57:43 -05:00
|
|
|
{
|
2018-10-19 07:44:17 -05:00
|
|
|
if (inner && valve->componentType() == RiaDefines::AICD && nInners > 0)
|
|
|
|
{
|
|
|
|
radii[i + 1] = radii[i] = wellPathRadius * 1.7;
|
|
|
|
nInners = 0;
|
|
|
|
}
|
|
|
|
else if (inner)
|
|
|
|
{
|
|
|
|
radii[i + 1] = radii[i] = wellPathRadius * 1.9;
|
|
|
|
nInners++;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
radii[i + 1] = radii[i] = wellPathRadius * 2.0;
|
|
|
|
}
|
|
|
|
inner = !inner;
|
2018-10-10 09:57:43 -05:00
|
|
|
}
|
2018-10-19 07:44:17 -05:00
|
|
|
radii[size - 1] = wellPathRadius;
|
|
|
|
|
|
|
|
std::vector<cvf::Vec3d> displayCoords;
|
|
|
|
for (double mdRelativeToStart : measuredDepthsRelativeToStartMD)
|
2018-10-10 09:57:43 -05:00
|
|
|
{
|
2018-10-19 07:44:17 -05:00
|
|
|
displayCoords.push_back(displayCoordTransform->transformToDisplayCoord(
|
|
|
|
m_rimWellPath->wellPathGeometry()->interpolatedPointAlongWellPath(mdRelativeToStart * 0.333 * wellPathRadius + startMD)));
|
2018-10-10 09:57:43 -05:00
|
|
|
}
|
|
|
|
|
2018-10-19 07:44:17 -05:00
|
|
|
cvf::ref<RivObjectSourceInfo> objectSourceInfo = new RivObjectSourceInfo(valve);
|
2018-10-10 09:57:43 -05:00
|
|
|
|
2018-10-19 07:44:17 -05:00
|
|
|
cvf::Collection<cvf::Part> parts;
|
|
|
|
geoGenerator.tubeWithCenterLinePartsAndVariableWidth(&parts, displayCoords, radii, valveColor);
|
|
|
|
for (auto part : parts)
|
|
|
|
{
|
|
|
|
part->setSourceInfo(objectSourceInfo.p());
|
|
|
|
model->addPart(part.p());
|
|
|
|
}
|
|
|
|
}
|
2018-10-10 09:57:43 -05:00
|
|
|
}
|
2018-10-19 07:44:17 -05:00
|
|
|
|
2017-05-12 03:01:37 -05:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2018-03-12 05:07:46 -05:00
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
///
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
void RivWellPathPartMgr::appendVirtualTransmissibilitiesToModel(cvf::ModelBasicList* model,
|
2018-03-16 05:21:57 -05:00
|
|
|
size_t timeStepIndex,
|
2018-03-12 05:07:46 -05:00
|
|
|
const caf::DisplayCoordTransform* displayCoordTransform,
|
|
|
|
double characteristicCellSize)
|
|
|
|
{
|
2018-03-14 03:35:48 -05:00
|
|
|
RimEclipseView* eclView = dynamic_cast<RimEclipseView*>(m_rimView.p());
|
|
|
|
if (!eclView) return;
|
2018-03-12 05:07:46 -05:00
|
|
|
|
2018-03-14 03:35:48 -05:00
|
|
|
if (!eclView->isVirtualConnectionFactorGeometryVisible()) return;
|
2018-03-12 05:07:46 -05:00
|
|
|
|
2018-03-14 03:35:48 -05:00
|
|
|
RimEclipseCase* eclipseCase = nullptr;
|
|
|
|
eclView->firstAncestorOrThisOfType(eclipseCase);
|
|
|
|
if (!eclipseCase) return;
|
2018-03-12 05:07:46 -05:00
|
|
|
|
2018-03-14 03:35:48 -05:00
|
|
|
const RigVirtualPerforationTransmissibilities* trans = eclipseCase->computeAndGetVirtualPerforationTransmissibilities();
|
2018-03-12 05:12:39 -05:00
|
|
|
if (trans)
|
|
|
|
{
|
2018-03-15 15:25:54 -05:00
|
|
|
m_wellConnectionFactorPartMgr = new RivWellConnectionFactorPartMgr(m_rimWellPath, eclView->virtualPerforationResult());
|
2018-03-12 05:07:46 -05:00
|
|
|
|
2018-03-15 15:25:54 -05:00
|
|
|
m_wellConnectionFactorPartMgr->appendDynamicGeometryPartsToModel(model, timeStepIndex);
|
2018-03-12 05:12:39 -05:00
|
|
|
}
|
2018-03-12 05:07:46 -05:00
|
|
|
}
|
|
|
|
|
Added visualization of Well Paths in reservoir views.
Added PDM objects for a list of well paths (RimWellPathCollection) and for individual well paths (RimWellPath).
RimWellPathCollection uses RivWellPathCollectionPartMgr to generate visualization parts for each well path in the collection.
RimWellPath handles geometry defined in RigWellPath, and RivWellPathPartMgr is used to generate visualization parts. The well path visualization parts are generated by reusing RivPipeGeometryGenerator (also used for well pipes).
Added features:
- Select Open Well Paths in File menu to open one or more well path files, file format supported is Statoil JSON format.
- Each well path has a label showing the name, and the PDM window will show additional info (Id, Source System, UTM Zone, Update Date and User, Survey Type, File Path).
- Possible to turn on / off visibility, set thickness, set color for individual well paths.
- List of well paths including specified parameters/settings will be stored in project file.
- Possible to clip all well paths at a specified distance to the reservoir as this is the relevant area to see, and if showing whole well path it may be problematic for auto zoom etc.
p4#: 21651
2013-05-16 05:59:01 -05:00
|
|
|
//--------------------------------------------------------------------------------------------------
|
2015-06-12 02:05:55 -05:00
|
|
|
/// The pipe geometry needs to be rebuilt on scale change to keep the pipes round
|
Added visualization of Well Paths in reservoir views.
Added PDM objects for a list of well paths (RimWellPathCollection) and for individual well paths (RimWellPath).
RimWellPathCollection uses RivWellPathCollectionPartMgr to generate visualization parts for each well path in the collection.
RimWellPath handles geometry defined in RigWellPath, and RivWellPathPartMgr is used to generate visualization parts. The well path visualization parts are generated by reusing RivPipeGeometryGenerator (also used for well pipes).
Added features:
- Select Open Well Paths in File menu to open one or more well path files, file format supported is Statoil JSON format.
- Each well path has a label showing the name, and the PDM window will show additional info (Id, Source System, UTM Zone, Update Date and User, Survey Type, File Path).
- Possible to turn on / off visibility, set thickness, set color for individual well paths.
- List of well paths including specified parameters/settings will be stored in project file.
- Possible to clip all well paths at a specified distance to the reservoir as this is the relevant area to see, and if showing whole well path it may be problematic for auto zoom etc.
p4#: 21651
2013-05-16 05:59:01 -05:00
|
|
|
//--------------------------------------------------------------------------------------------------
|
2017-06-19 15:53:19 -05:00
|
|
|
void RivWellPathPartMgr::buildWellPathParts(const caf::DisplayCoordTransform* displayCoordTransform,
|
|
|
|
double characteristicCellSize,
|
2018-03-20 07:12:20 -05:00
|
|
|
const cvf::BoundingBox& wellPathClipBoundingBox,
|
|
|
|
bool doFlatten)
|
Added visualization of Well Paths in reservoir views.
Added PDM objects for a list of well paths (RimWellPathCollection) and for individual well paths (RimWellPath).
RimWellPathCollection uses RivWellPathCollectionPartMgr to generate visualization parts for each well path in the collection.
RimWellPath handles geometry defined in RigWellPath, and RivWellPathPartMgr is used to generate visualization parts. The well path visualization parts are generated by reusing RivPipeGeometryGenerator (also used for well pipes).
Added features:
- Select Open Well Paths in File menu to open one or more well path files, file format supported is Statoil JSON format.
- Each well path has a label showing the name, and the PDM window will show additional info (Id, Source System, UTM Zone, Update Date and User, Survey Type, File Path).
- Possible to turn on / off visibility, set thickness, set color for individual well paths.
- List of well paths including specified parameters/settings will be stored in project file.
- Possible to clip all well paths at a specified distance to the reservoir as this is the relevant area to see, and if showing whole well path it may be problematic for auto zoom etc.
p4#: 21651
2013-05-16 05:59:01 -05:00
|
|
|
{
|
2017-05-12 03:01:37 -05:00
|
|
|
RimWellPathCollection* wellPathCollection = this->wellPathCollection();
|
2015-12-03 12:31:34 -06:00
|
|
|
if (!wellPathCollection) return;
|
Added visualization of Well Paths in reservoir views.
Added PDM objects for a list of well paths (RimWellPathCollection) and for individual well paths (RimWellPath).
RimWellPathCollection uses RivWellPathCollectionPartMgr to generate visualization parts for each well path in the collection.
RimWellPath handles geometry defined in RigWellPath, and RivWellPathPartMgr is used to generate visualization parts. The well path visualization parts are generated by reusing RivPipeGeometryGenerator (also used for well pipes).
Added features:
- Select Open Well Paths in File menu to open one or more well path files, file format supported is Statoil JSON format.
- Each well path has a label showing the name, and the PDM window will show additional info (Id, Source System, UTM Zone, Update Date and User, Survey Type, File Path).
- Possible to turn on / off visibility, set thickness, set color for individual well paths.
- List of well paths including specified parameters/settings will be stored in project file.
- Possible to clip all well paths at a specified distance to the reservoir as this is the relevant area to see, and if showing whole well path it may be problematic for auto zoom etc.
p4#: 21651
2013-05-16 05:59:01 -05:00
|
|
|
|
|
|
|
RigWellPath* wellPathGeometry = m_rimWellPath->wellPathGeometry();
|
2013-06-26 05:01:53 -05:00
|
|
|
if (!wellPathGeometry) return;
|
|
|
|
|
2018-03-20 07:12:20 -05:00
|
|
|
const std::vector<cvf::Vec3d>& wellpathCenterLine = wellPathGeometry->m_wellPathPoints;
|
|
|
|
|
|
|
|
if (wellpathCenterLine.size() < 2) return;
|
Added visualization of Well Paths in reservoir views.
Added PDM objects for a list of well paths (RimWellPathCollection) and for individual well paths (RimWellPath).
RimWellPathCollection uses RivWellPathCollectionPartMgr to generate visualization parts for each well path in the collection.
RimWellPath handles geometry defined in RigWellPath, and RivWellPathPartMgr is used to generate visualization parts. The well path visualization parts are generated by reusing RivPipeGeometryGenerator (also used for well pipes).
Added features:
- Select Open Well Paths in File menu to open one or more well path files, file format supported is Statoil JSON format.
- Each well path has a label showing the name, and the PDM window will show additional info (Id, Source System, UTM Zone, Update Date and User, Survey Type, File Path).
- Possible to turn on / off visibility, set thickness, set color for individual well paths.
- List of well paths including specified parameters/settings will be stored in project file.
- Possible to clip all well paths at a specified distance to the reservoir as this is the relevant area to see, and if showing whole well path it may be problematic for auto zoom etc.
p4#: 21651
2013-05-16 05:59:01 -05:00
|
|
|
|
2015-12-03 12:13:12 -06:00
|
|
|
clearAllBranchData();
|
Added visualization of Well Paths in reservoir views.
Added PDM objects for a list of well paths (RimWellPathCollection) and for individual well paths (RimWellPath).
RimWellPathCollection uses RivWellPathCollectionPartMgr to generate visualization parts for each well path in the collection.
RimWellPath handles geometry defined in RigWellPath, and RivWellPathPartMgr is used to generate visualization parts. The well path visualization parts are generated by reusing RivPipeGeometryGenerator (also used for well pipes).
Added features:
- Select Open Well Paths in File menu to open one or more well path files, file format supported is Statoil JSON format.
- Each well path has a label showing the name, and the PDM window will show additional info (Id, Source System, UTM Zone, Update Date and User, Survey Type, File Path).
- Possible to turn on / off visibility, set thickness, set color for individual well paths.
- List of well paths including specified parameters/settings will be stored in project file.
- Possible to clip all well paths at a specified distance to the reservoir as this is the relevant area to see, and if showing whole well path it may be problematic for auto zoom etc.
p4#: 21651
2013-05-16 05:59:01 -05:00
|
|
|
|
2018-03-20 07:12:20 -05:00
|
|
|
double wellPathRadius = this->wellPathRadius(characteristicCellSize, wellPathCollection);
|
Added visualization of Well Paths in reservoir views.
Added PDM objects for a list of well paths (RimWellPathCollection) and for individual well paths (RimWellPath).
RimWellPathCollection uses RivWellPathCollectionPartMgr to generate visualization parts for each well path in the collection.
RimWellPath handles geometry defined in RigWellPath, and RivWellPathPartMgr is used to generate visualization parts. The well path visualization parts are generated by reusing RivPipeGeometryGenerator (also used for well pipes).
Added features:
- Select Open Well Paths in File menu to open one or more well path files, file format supported is Statoil JSON format.
- Each well path has a label showing the name, and the PDM window will show additional info (Id, Source System, UTM Zone, Update Date and User, Survey Type, File Path).
- Possible to turn on / off visibility, set thickness, set color for individual well paths.
- List of well paths including specified parameters/settings will be stored in project file.
- Possible to clip all well paths at a specified distance to the reservoir as this is the relevant area to see, and if showing whole well path it may be problematic for auto zoom etc.
p4#: 21651
2013-05-16 05:59:01 -05:00
|
|
|
|
2018-03-20 07:12:20 -05:00
|
|
|
std::vector<cvf::Vec3d> clippedWellPathCenterLine;
|
|
|
|
|
2018-04-23 03:30:40 -05:00
|
|
|
// Generate the well path geometry as a line and pipe structure
|
|
|
|
|
|
|
|
m_pipeGeomGenerator = new RivPipeGeometryGenerator;
|
|
|
|
|
|
|
|
m_pipeGeomGenerator->setRadius(wellPathRadius);
|
|
|
|
m_pipeGeomGenerator->setCrossSectionVertexCount(wellPathCollection->wellPathCrossSectionVertexCount());
|
|
|
|
|
2018-03-21 07:56:24 -05:00
|
|
|
double horizontalLengthAlongWellToClipPoint = 0.0;
|
|
|
|
size_t idxToFirstVisibleSegment = 0;
|
2018-03-20 07:12:20 -05:00
|
|
|
if ( wellPathCollection->wellPathClip )
|
|
|
|
{
|
|
|
|
double maxZClipHeight = wellPathClipBoundingBox.max().z() + wellPathCollection->wellPathClipZDistance;
|
|
|
|
clippedWellPathCenterLine = RigWellPath::clipPolylineStartAboveZ(wellpathCenterLine,
|
|
|
|
maxZClipHeight,
|
2018-03-21 07:56:24 -05:00
|
|
|
&horizontalLengthAlongWellToClipPoint,
|
|
|
|
&idxToFirstVisibleSegment);
|
2018-03-20 07:12:20 -05:00
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
clippedWellPathCenterLine = wellpathCenterLine;
|
|
|
|
}
|
|
|
|
|
|
|
|
if ( clippedWellPathCenterLine.size() < 2 ) return;
|
|
|
|
|
|
|
|
cvf::ref<cvf::Vec3dArray> cvfCoords = new cvf::Vec3dArray(clippedWellPathCenterLine.size());
|
|
|
|
|
|
|
|
// Scale the centerline coordinates using the Z-scale transform of the grid and correct for the display offset.
|
|
|
|
|
|
|
|
if ( doFlatten )
|
|
|
|
{
|
|
|
|
cvf::Vec3d dummy;
|
|
|
|
std::vector<cvf::Mat4d> flatningCSs =
|
|
|
|
RivSectionFlattner::calculateFlatteningCSsForPolyline(clippedWellPathCenterLine,
|
|
|
|
cvf::Vec3d::Z_AXIS,
|
|
|
|
{ horizontalLengthAlongWellToClipPoint, 0.0, clippedWellPathCenterLine[0].z() },
|
|
|
|
&dummy);
|
|
|
|
|
|
|
|
for ( size_t cIdx = 0; cIdx < cvfCoords->size(); ++cIdx )
|
Added visualization of Well Paths in reservoir views.
Added PDM objects for a list of well paths (RimWellPathCollection) and for individual well paths (RimWellPath).
RimWellPathCollection uses RivWellPathCollectionPartMgr to generate visualization parts for each well path in the collection.
RimWellPath handles geometry defined in RigWellPath, and RivWellPathPartMgr is used to generate visualization parts. The well path visualization parts are generated by reusing RivPipeGeometryGenerator (also used for well pipes).
Added features:
- Select Open Well Paths in File menu to open one or more well path files, file format supported is Statoil JSON format.
- Each well path has a label showing the name, and the PDM window will show additional info (Id, Source System, UTM Zone, Update Date and User, Survey Type, File Path).
- Possible to turn on / off visibility, set thickness, set color for individual well paths.
- List of well paths including specified parameters/settings will be stored in project file.
- Possible to clip all well paths at a specified distance to the reservoir as this is the relevant area to see, and if showing whole well path it may be problematic for auto zoom etc.
p4#: 21651
2013-05-16 05:59:01 -05:00
|
|
|
{
|
2018-03-20 07:12:20 -05:00
|
|
|
auto clpoint = clippedWellPathCenterLine[cIdx].getTransformedPoint(flatningCSs[cIdx]);
|
|
|
|
(*cvfCoords)[cIdx] = displayCoordTransform->scaleToDisplaySize(clpoint);
|
Added visualization of Well Paths in reservoir views.
Added PDM objects for a list of well paths (RimWellPathCollection) and for individual well paths (RimWellPath).
RimWellPathCollection uses RivWellPathCollectionPartMgr to generate visualization parts for each well path in the collection.
RimWellPath handles geometry defined in RigWellPath, and RivWellPathPartMgr is used to generate visualization parts. The well path visualization parts are generated by reusing RivPipeGeometryGenerator (also used for well pipes).
Added features:
- Select Open Well Paths in File menu to open one or more well path files, file format supported is Statoil JSON format.
- Each well path has a label showing the name, and the PDM window will show additional info (Id, Source System, UTM Zone, Update Date and User, Survey Type, File Path).
- Possible to turn on / off visibility, set thickness, set color for individual well paths.
- List of well paths including specified parameters/settings will be stored in project file.
- Possible to clip all well paths at a specified distance to the reservoir as this is the relevant area to see, and if showing whole well path it may be problematic for auto zoom etc.
p4#: 21651
2013-05-16 05:59:01 -05:00
|
|
|
}
|
2018-03-20 07:12:20 -05:00
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
for ( size_t cIdx = 0; cIdx < cvfCoords->size(); ++cIdx )
|
Added visualization of Well Paths in reservoir views.
Added PDM objects for a list of well paths (RimWellPathCollection) and for individual well paths (RimWellPath).
RimWellPathCollection uses RivWellPathCollectionPartMgr to generate visualization parts for each well path in the collection.
RimWellPath handles geometry defined in RigWellPath, and RivWellPathPartMgr is used to generate visualization parts. The well path visualization parts are generated by reusing RivPipeGeometryGenerator (also used for well pipes).
Added features:
- Select Open Well Paths in File menu to open one or more well path files, file format supported is Statoil JSON format.
- Each well path has a label showing the name, and the PDM window will show additional info (Id, Source System, UTM Zone, Update Date and User, Survey Type, File Path).
- Possible to turn on / off visibility, set thickness, set color for individual well paths.
- List of well paths including specified parameters/settings will be stored in project file.
- Possible to clip all well paths at a specified distance to the reservoir as this is the relevant area to see, and if showing whole well path it may be problematic for auto zoom etc.
p4#: 21651
2013-05-16 05:59:01 -05:00
|
|
|
{
|
2018-03-20 07:12:20 -05:00
|
|
|
(*cvfCoords)[cIdx] = displayCoordTransform->transformToDisplayCoord(clippedWellPathCenterLine[cIdx]);
|
Added visualization of Well Paths in reservoir views.
Added PDM objects for a list of well paths (RimWellPathCollection) and for individual well paths (RimWellPath).
RimWellPathCollection uses RivWellPathCollectionPartMgr to generate visualization parts for each well path in the collection.
RimWellPath handles geometry defined in RigWellPath, and RivWellPathPartMgr is used to generate visualization parts. The well path visualization parts are generated by reusing RivPipeGeometryGenerator (also used for well pipes).
Added features:
- Select Open Well Paths in File menu to open one or more well path files, file format supported is Statoil JSON format.
- Each well path has a label showing the name, and the PDM window will show additional info (Id, Source System, UTM Zone, Update Date and User, Survey Type, File Path).
- Possible to turn on / off visibility, set thickness, set color for individual well paths.
- List of well paths including specified parameters/settings will be stored in project file.
- Possible to clip all well paths at a specified distance to the reservoir as this is the relevant area to see, and if showing whole well path it may be problematic for auto zoom etc.
p4#: 21651
2013-05-16 05:59:01 -05:00
|
|
|
}
|
2018-03-20 07:12:20 -05:00
|
|
|
}
|
Added visualization of Well Paths in reservoir views.
Added PDM objects for a list of well paths (RimWellPathCollection) and for individual well paths (RimWellPath).
RimWellPathCollection uses RivWellPathCollectionPartMgr to generate visualization parts for each well path in the collection.
RimWellPath handles geometry defined in RigWellPath, and RivWellPathPartMgr is used to generate visualization parts. The well path visualization parts are generated by reusing RivPipeGeometryGenerator (also used for well pipes).
Added features:
- Select Open Well Paths in File menu to open one or more well path files, file format supported is Statoil JSON format.
- Each well path has a label showing the name, and the PDM window will show additional info (Id, Source System, UTM Zone, Update Date and User, Survey Type, File Path).
- Possible to turn on / off visibility, set thickness, set color for individual well paths.
- List of well paths including specified parameters/settings will be stored in project file.
- Possible to clip all well paths at a specified distance to the reservoir as this is the relevant area to see, and if showing whole well path it may be problematic for auto zoom etc.
p4#: 21651
2013-05-16 05:59:01 -05:00
|
|
|
|
2018-03-21 07:56:24 -05:00
|
|
|
m_pipeGeomGenerator->setFirstVisibleSegmentIndex(idxToFirstVisibleSegment);
|
2018-03-20 07:12:20 -05:00
|
|
|
m_pipeGeomGenerator->setPipeCenterCoords(cvfCoords.p());
|
|
|
|
m_surfaceDrawable = m_pipeGeomGenerator->createPipeSurface();
|
|
|
|
m_centerLineDrawable = m_pipeGeomGenerator->createCenterLine();
|
2017-06-19 15:15:28 -05:00
|
|
|
|
2018-03-20 07:12:20 -05:00
|
|
|
if ( m_surfaceDrawable.notNull() )
|
|
|
|
{
|
|
|
|
m_surfacePart = new cvf::Part;
|
|
|
|
m_surfacePart->setDrawable(m_surfaceDrawable.p());
|
Added visualization of Well Paths in reservoir views.
Added PDM objects for a list of well paths (RimWellPathCollection) and for individual well paths (RimWellPath).
RimWellPathCollection uses RivWellPathCollectionPartMgr to generate visualization parts for each well path in the collection.
RimWellPath handles geometry defined in RigWellPath, and RivWellPathPartMgr is used to generate visualization parts. The well path visualization parts are generated by reusing RivPipeGeometryGenerator (also used for well pipes).
Added features:
- Select Open Well Paths in File menu to open one or more well path files, file format supported is Statoil JSON format.
- Each well path has a label showing the name, and the PDM window will show additional info (Id, Source System, UTM Zone, Update Date and User, Survey Type, File Path).
- Possible to turn on / off visibility, set thickness, set color for individual well paths.
- List of well paths including specified parameters/settings will be stored in project file.
- Possible to clip all well paths at a specified distance to the reservoir as this is the relevant area to see, and if showing whole well path it may be problematic for auto zoom etc.
p4#: 21651
2013-05-16 05:59:01 -05:00
|
|
|
|
2018-03-21 07:56:24 -05:00
|
|
|
RivWellPathSourceInfo* sourceInfo = new RivWellPathSourceInfo(m_rimWellPath, m_pipeGeomGenerator.p());
|
2018-03-20 07:12:20 -05:00
|
|
|
m_surfacePart->setSourceInfo(sourceInfo);
|
Added visualization of Well Paths in reservoir views.
Added PDM objects for a list of well paths (RimWellPathCollection) and for individual well paths (RimWellPath).
RimWellPathCollection uses RivWellPathCollectionPartMgr to generate visualization parts for each well path in the collection.
RimWellPath handles geometry defined in RigWellPath, and RivWellPathPartMgr is used to generate visualization parts. The well path visualization parts are generated by reusing RivPipeGeometryGenerator (also used for well pipes).
Added features:
- Select Open Well Paths in File menu to open one or more well path files, file format supported is Statoil JSON format.
- Each well path has a label showing the name, and the PDM window will show additional info (Id, Source System, UTM Zone, Update Date and User, Survey Type, File Path).
- Possible to turn on / off visibility, set thickness, set color for individual well paths.
- List of well paths including specified parameters/settings will be stored in project file.
- Possible to clip all well paths at a specified distance to the reservoir as this is the relevant area to see, and if showing whole well path it may be problematic for auto zoom etc.
p4#: 21651
2013-05-16 05:59:01 -05:00
|
|
|
|
2018-03-20 07:12:20 -05:00
|
|
|
caf::SurfaceEffectGenerator surfaceGen(cvf::Color4f(m_rimWellPath->wellPathColor()), caf::PO_1);
|
|
|
|
cvf::ref<cvf::Effect> eff = surfaceGen.generateCachedEffect();
|
Added visualization of Well Paths in reservoir views.
Added PDM objects for a list of well paths (RimWellPathCollection) and for individual well paths (RimWellPath).
RimWellPathCollection uses RivWellPathCollectionPartMgr to generate visualization parts for each well path in the collection.
RimWellPath handles geometry defined in RigWellPath, and RivWellPathPartMgr is used to generate visualization parts. The well path visualization parts are generated by reusing RivPipeGeometryGenerator (also used for well pipes).
Added features:
- Select Open Well Paths in File menu to open one or more well path files, file format supported is Statoil JSON format.
- Each well path has a label showing the name, and the PDM window will show additional info (Id, Source System, UTM Zone, Update Date and User, Survey Type, File Path).
- Possible to turn on / off visibility, set thickness, set color for individual well paths.
- List of well paths including specified parameters/settings will be stored in project file.
- Possible to clip all well paths at a specified distance to the reservoir as this is the relevant area to see, and if showing whole well path it may be problematic for auto zoom etc.
p4#: 21651
2013-05-16 05:59:01 -05:00
|
|
|
|
2018-03-20 07:12:20 -05:00
|
|
|
m_surfacePart->setEffect(eff.p());
|
|
|
|
}
|
Added visualization of Well Paths in reservoir views.
Added PDM objects for a list of well paths (RimWellPathCollection) and for individual well paths (RimWellPath).
RimWellPathCollection uses RivWellPathCollectionPartMgr to generate visualization parts for each well path in the collection.
RimWellPath handles geometry defined in RigWellPath, and RivWellPathPartMgr is used to generate visualization parts. The well path visualization parts are generated by reusing RivPipeGeometryGenerator (also used for well pipes).
Added features:
- Select Open Well Paths in File menu to open one or more well path files, file format supported is Statoil JSON format.
- Each well path has a label showing the name, and the PDM window will show additional info (Id, Source System, UTM Zone, Update Date and User, Survey Type, File Path).
- Possible to turn on / off visibility, set thickness, set color for individual well paths.
- List of well paths including specified parameters/settings will be stored in project file.
- Possible to clip all well paths at a specified distance to the reservoir as this is the relevant area to see, and if showing whole well path it may be problematic for auto zoom etc.
p4#: 21651
2013-05-16 05:59:01 -05:00
|
|
|
|
2018-03-20 07:12:20 -05:00
|
|
|
if ( m_centerLineDrawable.notNull() )
|
|
|
|
{
|
|
|
|
m_centerLinePart = new cvf::Part;
|
|
|
|
m_centerLinePart->setDrawable(m_centerLineDrawable.p());
|
Added visualization of Well Paths in reservoir views.
Added PDM objects for a list of well paths (RimWellPathCollection) and for individual well paths (RimWellPath).
RimWellPathCollection uses RivWellPathCollectionPartMgr to generate visualization parts for each well path in the collection.
RimWellPath handles geometry defined in RigWellPath, and RivWellPathPartMgr is used to generate visualization parts. The well path visualization parts are generated by reusing RivPipeGeometryGenerator (also used for well pipes).
Added features:
- Select Open Well Paths in File menu to open one or more well path files, file format supported is Statoil JSON format.
- Each well path has a label showing the name, and the PDM window will show additional info (Id, Source System, UTM Zone, Update Date and User, Survey Type, File Path).
- Possible to turn on / off visibility, set thickness, set color for individual well paths.
- List of well paths including specified parameters/settings will be stored in project file.
- Possible to clip all well paths at a specified distance to the reservoir as this is the relevant area to see, and if showing whole well path it may be problematic for auto zoom etc.
p4#: 21651
2013-05-16 05:59:01 -05:00
|
|
|
|
2018-03-20 07:12:20 -05:00
|
|
|
caf::MeshEffectGenerator gen(m_rimWellPath->wellPathColor());
|
|
|
|
cvf::ref<cvf::Effect> eff = gen.generateCachedEffect();
|
Added visualization of Well Paths in reservoir views.
Added PDM objects for a list of well paths (RimWellPathCollection) and for individual well paths (RimWellPath).
RimWellPathCollection uses RivWellPathCollectionPartMgr to generate visualization parts for each well path in the collection.
RimWellPath handles geometry defined in RigWellPath, and RivWellPathPartMgr is used to generate visualization parts. The well path visualization parts are generated by reusing RivPipeGeometryGenerator (also used for well pipes).
Added features:
- Select Open Well Paths in File menu to open one or more well path files, file format supported is Statoil JSON format.
- Each well path has a label showing the name, and the PDM window will show additional info (Id, Source System, UTM Zone, Update Date and User, Survey Type, File Path).
- Possible to turn on / off visibility, set thickness, set color for individual well paths.
- List of well paths including specified parameters/settings will be stored in project file.
- Possible to clip all well paths at a specified distance to the reservoir as this is the relevant area to see, and if showing whole well path it may be problematic for auto zoom etc.
p4#: 21651
2013-05-16 05:59:01 -05:00
|
|
|
|
2018-03-20 07:12:20 -05:00
|
|
|
m_centerLinePart->setEffect(eff.p());
|
Added visualization of Well Paths in reservoir views.
Added PDM objects for a list of well paths (RimWellPathCollection) and for individual well paths (RimWellPath).
RimWellPathCollection uses RivWellPathCollectionPartMgr to generate visualization parts for each well path in the collection.
RimWellPath handles geometry defined in RigWellPath, and RivWellPathPartMgr is used to generate visualization parts. The well path visualization parts are generated by reusing RivPipeGeometryGenerator (also used for well pipes).
Added features:
- Select Open Well Paths in File menu to open one or more well path files, file format supported is Statoil JSON format.
- Each well path has a label showing the name, and the PDM window will show additional info (Id, Source System, UTM Zone, Update Date and User, Survey Type, File Path).
- Possible to turn on / off visibility, set thickness, set color for individual well paths.
- List of well paths including specified parameters/settings will be stored in project file.
- Possible to clip all well paths at a specified distance to the reservoir as this is the relevant area to see, and if showing whole well path it may be problematic for auto zoom etc.
p4#: 21651
2013-05-16 05:59:01 -05:00
|
|
|
}
|
|
|
|
|
2015-06-12 02:05:55 -05:00
|
|
|
// Generate label with well-path name
|
|
|
|
|
2018-03-20 07:12:20 -05:00
|
|
|
cvf::Vec3d textPosition = cvfCoords->get(0);
|
2017-06-19 15:15:28 -05:00
|
|
|
textPosition.z() += 2.2 * characteristicCellSize;
|
Added visualization of Well Paths in reservoir views.
Added PDM objects for a list of well paths (RimWellPathCollection) and for individual well paths (RimWellPath).
RimWellPathCollection uses RivWellPathCollectionPartMgr to generate visualization parts for each well path in the collection.
RimWellPath handles geometry defined in RigWellPath, and RivWellPathPartMgr is used to generate visualization parts. The well path visualization parts are generated by reusing RivPipeGeometryGenerator (also used for well pipes).
Added features:
- Select Open Well Paths in File menu to open one or more well path files, file format supported is Statoil JSON format.
- Each well path has a label showing the name, and the PDM window will show additional info (Id, Source System, UTM Zone, Update Date and User, Survey Type, File Path).
- Possible to turn on / off visibility, set thickness, set color for individual well paths.
- List of well paths including specified parameters/settings will be stored in project file.
- Possible to clip all well paths at a specified distance to the reservoir as this is the relevant area to see, and if showing whole well path it may be problematic for auto zoom etc.
p4#: 21651
2013-05-16 05:59:01 -05:00
|
|
|
|
2015-12-03 12:31:34 -06:00
|
|
|
if (wellPathCollection->showWellPathLabel() && m_rimWellPath->showWellPathLabel() && !m_rimWellPath->name().isEmpty())
|
Added visualization of Well Paths in reservoir views.
Added PDM objects for a list of well paths (RimWellPathCollection) and for individual well paths (RimWellPath).
RimWellPathCollection uses RivWellPathCollectionPartMgr to generate visualization parts for each well path in the collection.
RimWellPath handles geometry defined in RigWellPath, and RivWellPathPartMgr is used to generate visualization parts. The well path visualization parts are generated by reusing RivPipeGeometryGenerator (also used for well pipes).
Added features:
- Select Open Well Paths in File menu to open one or more well path files, file format supported is Statoil JSON format.
- Each well path has a label showing the name, and the PDM window will show additional info (Id, Source System, UTM Zone, Update Date and User, Survey Type, File Path).
- Possible to turn on / off visibility, set thickness, set color for individual well paths.
- List of well paths including specified parameters/settings will be stored in project file.
- Possible to clip all well paths at a specified distance to the reservoir as this is the relevant area to see, and if showing whole well path it may be problematic for auto zoom etc.
p4#: 21651
2013-05-16 05:59:01 -05:00
|
|
|
{
|
2019-05-06 03:36:05 -05:00
|
|
|
cvf::Font* font = RiaGuiApplication::instance()->defaultWellLabelFont();
|
Added visualization of Well Paths in reservoir views.
Added PDM objects for a list of well paths (RimWellPathCollection) and for individual well paths (RimWellPath).
RimWellPathCollection uses RivWellPathCollectionPartMgr to generate visualization parts for each well path in the collection.
RimWellPath handles geometry defined in RigWellPath, and RivWellPathPartMgr is used to generate visualization parts. The well path visualization parts are generated by reusing RivPipeGeometryGenerator (also used for well pipes).
Added features:
- Select Open Well Paths in File menu to open one or more well path files, file format supported is Statoil JSON format.
- Each well path has a label showing the name, and the PDM window will show additional info (Id, Source System, UTM Zone, Update Date and User, Survey Type, File Path).
- Possible to turn on / off visibility, set thickness, set color for individual well paths.
- List of well paths including specified parameters/settings will be stored in project file.
- Possible to clip all well paths at a specified distance to the reservoir as this is the relevant area to see, and if showing whole well path it may be problematic for auto zoom etc.
p4#: 21651
2013-05-16 05:59:01 -05:00
|
|
|
|
|
|
|
cvf::ref<cvf::DrawableText> drawableText = new cvf::DrawableText;
|
2016-08-09 06:09:08 -05:00
|
|
|
drawableText->setFont(font);
|
Added visualization of Well Paths in reservoir views.
Added PDM objects for a list of well paths (RimWellPathCollection) and for individual well paths (RimWellPath).
RimWellPathCollection uses RivWellPathCollectionPartMgr to generate visualization parts for each well path in the collection.
RimWellPath handles geometry defined in RigWellPath, and RivWellPathPartMgr is used to generate visualization parts. The well path visualization parts are generated by reusing RivPipeGeometryGenerator (also used for well pipes).
Added features:
- Select Open Well Paths in File menu to open one or more well path files, file format supported is Statoil JSON format.
- Each well path has a label showing the name, and the PDM window will show additional info (Id, Source System, UTM Zone, Update Date and User, Survey Type, File Path).
- Possible to turn on / off visibility, set thickness, set color for individual well paths.
- List of well paths including specified parameters/settings will be stored in project file.
- Possible to clip all well paths at a specified distance to the reservoir as this is the relevant area to see, and if showing whole well path it may be problematic for auto zoom etc.
p4#: 21651
2013-05-16 05:59:01 -05:00
|
|
|
drawableText->setCheckPosVisible(false);
|
|
|
|
drawableText->setDrawBorder(false);
|
|
|
|
drawableText->setDrawBackground(false);
|
|
|
|
drawableText->setVerticalAlignment(cvf::TextDrawer::CENTER);
|
2015-12-03 12:31:34 -06:00
|
|
|
drawableText->setTextColor(wellPathCollection->wellPathLabelColor());
|
Added visualization of Well Paths in reservoir views.
Added PDM objects for a list of well paths (RimWellPathCollection) and for individual well paths (RimWellPath).
RimWellPathCollection uses RivWellPathCollectionPartMgr to generate visualization parts for each well path in the collection.
RimWellPath handles geometry defined in RigWellPath, and RivWellPathPartMgr is used to generate visualization parts. The well path visualization parts are generated by reusing RivPipeGeometryGenerator (also used for well pipes).
Added features:
- Select Open Well Paths in File menu to open one or more well path files, file format supported is Statoil JSON format.
- Each well path has a label showing the name, and the PDM window will show additional info (Id, Source System, UTM Zone, Update Date and User, Survey Type, File Path).
- Possible to turn on / off visibility, set thickness, set color for individual well paths.
- List of well paths including specified parameters/settings will be stored in project file.
- Possible to clip all well paths at a specified distance to the reservoir as this is the relevant area to see, and if showing whole well path it may be problematic for auto zoom etc.
p4#: 21651
2013-05-16 05:59:01 -05:00
|
|
|
|
2013-12-04 10:04:05 -06:00
|
|
|
cvf::String cvfString = cvfqt::Utils::toString(m_rimWellPath->name());
|
Added visualization of Well Paths in reservoir views.
Added PDM objects for a list of well paths (RimWellPathCollection) and for individual well paths (RimWellPath).
RimWellPathCollection uses RivWellPathCollectionPartMgr to generate visualization parts for each well path in the collection.
RimWellPath handles geometry defined in RigWellPath, and RivWellPathPartMgr is used to generate visualization parts. The well path visualization parts are generated by reusing RivPipeGeometryGenerator (also used for well pipes).
Added features:
- Select Open Well Paths in File menu to open one or more well path files, file format supported is Statoil JSON format.
- Each well path has a label showing the name, and the PDM window will show additional info (Id, Source System, UTM Zone, Update Date and User, Survey Type, File Path).
- Possible to turn on / off visibility, set thickness, set color for individual well paths.
- List of well paths including specified parameters/settings will be stored in project file.
- Possible to clip all well paths at a specified distance to the reservoir as this is the relevant area to see, and if showing whole well path it may be problematic for auto zoom etc.
p4#: 21651
2013-05-16 05:59:01 -05:00
|
|
|
|
|
|
|
cvf::Vec3f textCoord(textPosition);
|
|
|
|
drawableText->addText(cvfString, textCoord);
|
|
|
|
|
|
|
|
cvf::ref<cvf::Part> part = new cvf::Part;
|
|
|
|
part->setName("RivWellHeadPartMgr: text " + cvfString);
|
|
|
|
part->setDrawable(drawableText.p());
|
|
|
|
|
|
|
|
cvf::ref<cvf::Effect> eff = new cvf::Effect;
|
|
|
|
|
|
|
|
part->setEffect(eff.p());
|
2017-02-17 07:52:56 -06:00
|
|
|
part->setPriority(RivPartPriority::Text);
|
Added visualization of Well Paths in reservoir views.
Added PDM objects for a list of well paths (RimWellPathCollection) and for individual well paths (RimWellPath).
RimWellPathCollection uses RivWellPathCollectionPartMgr to generate visualization parts for each well path in the collection.
RimWellPath handles geometry defined in RigWellPath, and RivWellPathPartMgr is used to generate visualization parts. The well path visualization parts are generated by reusing RivPipeGeometryGenerator (also used for well pipes).
Added features:
- Select Open Well Paths in File menu to open one or more well path files, file format supported is Statoil JSON format.
- Each well path has a label showing the name, and the PDM window will show additional info (Id, Source System, UTM Zone, Update Date and User, Survey Type, File Path).
- Possible to turn on / off visibility, set thickness, set color for individual well paths.
- List of well paths including specified parameters/settings will be stored in project file.
- Possible to clip all well paths at a specified distance to the reservoir as this is the relevant area to see, and if showing whole well path it may be problematic for auto zoom etc.
p4#: 21651
2013-05-16 05:59:01 -05:00
|
|
|
|
2019-01-15 03:53:54 -06:00
|
|
|
part->setSourceInfo(new RivTextLabelSourceInfo(m_rimWellPath, cvfString, textCoord));
|
|
|
|
|
Added visualization of Well Paths in reservoir views.
Added PDM objects for a list of well paths (RimWellPathCollection) and for individual well paths (RimWellPath).
RimWellPathCollection uses RivWellPathCollectionPartMgr to generate visualization parts for each well path in the collection.
RimWellPath handles geometry defined in RigWellPath, and RivWellPathPartMgr is used to generate visualization parts. The well path visualization parts are generated by reusing RivPipeGeometryGenerator (also used for well pipes).
Added features:
- Select Open Well Paths in File menu to open one or more well path files, file format supported is Statoil JSON format.
- Each well path has a label showing the name, and the PDM window will show additional info (Id, Source System, UTM Zone, Update Date and User, Survey Type, File Path).
- Possible to turn on / off visibility, set thickness, set color for individual well paths.
- List of well paths including specified parameters/settings will be stored in project file.
- Possible to clip all well paths at a specified distance to the reservoir as this is the relevant area to see, and if showing whole well path it may be problematic for auto zoom etc.
p4#: 21651
2013-05-16 05:59:01 -05:00
|
|
|
m_wellLabelPart = part;
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
///
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
2018-03-16 05:21:57 -05:00
|
|
|
void RivWellPathPartMgr::appendStaticGeometryPartsToModel(cvf::ModelBasicList* model,
|
|
|
|
const caf::DisplayCoordTransform* displayCoordTransform,
|
|
|
|
double characteristicCellSize,
|
|
|
|
const cvf::BoundingBox& wellPathClipBoundingBox)
|
Added visualization of Well Paths in reservoir views.
Added PDM objects for a list of well paths (RimWellPathCollection) and for individual well paths (RimWellPath).
RimWellPathCollection uses RivWellPathCollectionPartMgr to generate visualization parts for each well path in the collection.
RimWellPath handles geometry defined in RigWellPath, and RivWellPathPartMgr is used to generate visualization parts. The well path visualization parts are generated by reusing RivPipeGeometryGenerator (also used for well pipes).
Added features:
- Select Open Well Paths in File menu to open one or more well path files, file format supported is Statoil JSON format.
- Each well path has a label showing the name, and the PDM window will show additional info (Id, Source System, UTM Zone, Update Date and User, Survey Type, File Path).
- Possible to turn on / off visibility, set thickness, set color for individual well paths.
- List of well paths including specified parameters/settings will be stored in project file.
- Possible to clip all well paths at a specified distance to the reservoir as this is the relevant area to see, and if showing whole well path it may be problematic for auto zoom etc.
p4#: 21651
2013-05-16 05:59:01 -05:00
|
|
|
{
|
2017-05-12 03:01:37 -05:00
|
|
|
RimWellPathCollection* wellPathCollection = this->wellPathCollection();
|
2015-12-03 12:31:34 -06:00
|
|
|
if (!wellPathCollection) return;
|
|
|
|
|
|
|
|
if (wellPathCollection->wellPathVisibility() == RimWellPathCollection::FORCE_ALL_OFF)
|
Added visualization of Well Paths in reservoir views.
Added PDM objects for a list of well paths (RimWellPathCollection) and for individual well paths (RimWellPath).
RimWellPathCollection uses RivWellPathCollectionPartMgr to generate visualization parts for each well path in the collection.
RimWellPath handles geometry defined in RigWellPath, and RivWellPathPartMgr is used to generate visualization parts. The well path visualization parts are generated by reusing RivPipeGeometryGenerator (also used for well pipes).
Added features:
- Select Open Well Paths in File menu to open one or more well path files, file format supported is Statoil JSON format.
- Each well path has a label showing the name, and the PDM window will show additional info (Id, Source System, UTM Zone, Update Date and User, Survey Type, File Path).
- Possible to turn on / off visibility, set thickness, set color for individual well paths.
- List of well paths including specified parameters/settings will be stored in project file.
- Possible to clip all well paths at a specified distance to the reservoir as this is the relevant area to see, and if showing whole well path it may be problematic for auto zoom etc.
p4#: 21651
2013-05-16 05:59:01 -05:00
|
|
|
return;
|
|
|
|
|
2015-12-03 12:31:34 -06:00
|
|
|
if (wellPathCollection->wellPathVisibility() != RimWellPathCollection::FORCE_ALL_ON && m_rimWellPath->showWellPath() == false )
|
Added visualization of Well Paths in reservoir views.
Added PDM objects for a list of well paths (RimWellPathCollection) and for individual well paths (RimWellPath).
RimWellPathCollection uses RivWellPathCollectionPartMgr to generate visualization parts for each well path in the collection.
RimWellPath handles geometry defined in RigWellPath, and RivWellPathPartMgr is used to generate visualization parts. The well path visualization parts are generated by reusing RivPipeGeometryGenerator (also used for well pipes).
Added features:
- Select Open Well Paths in File menu to open one or more well path files, file format supported is Statoil JSON format.
- Each well path has a label showing the name, and the PDM window will show additional info (Id, Source System, UTM Zone, Update Date and User, Survey Type, File Path).
- Possible to turn on / off visibility, set thickness, set color for individual well paths.
- List of well paths including specified parameters/settings will be stored in project file.
- Possible to clip all well paths at a specified distance to the reservoir as this is the relevant area to see, and if showing whole well path it may be problematic for auto zoom etc.
p4#: 21651
2013-05-16 05:59:01 -05:00
|
|
|
return;
|
|
|
|
|
2018-04-23 15:52:44 -05:00
|
|
|
if (!isWellPathWithinBoundingBox(wellPathClipBoundingBox)) return;
|
|
|
|
|
2017-06-21 10:13:19 -05:00
|
|
|
// The pipe geometry needs to be rebuilt on scale change to keep the pipes round
|
2018-03-20 07:12:20 -05:00
|
|
|
buildWellPathParts(displayCoordTransform, characteristicCellSize, wellPathClipBoundingBox, false);
|
2017-02-01 07:54:02 -06:00
|
|
|
|
2018-02-06 04:09:22 -06:00
|
|
|
if (m_surfacePart.notNull())
|
Added visualization of Well Paths in reservoir views.
Added PDM objects for a list of well paths (RimWellPathCollection) and for individual well paths (RimWellPath).
RimWellPathCollection uses RivWellPathCollectionPartMgr to generate visualization parts for each well path in the collection.
RimWellPath handles geometry defined in RigWellPath, and RivWellPathPartMgr is used to generate visualization parts. The well path visualization parts are generated by reusing RivPipeGeometryGenerator (also used for well pipes).
Added features:
- Select Open Well Paths in File menu to open one or more well path files, file format supported is Statoil JSON format.
- Each well path has a label showing the name, and the PDM window will show additional info (Id, Source System, UTM Zone, Update Date and User, Survey Type, File Path).
- Possible to turn on / off visibility, set thickness, set color for individual well paths.
- List of well paths including specified parameters/settings will be stored in project file.
- Possible to clip all well paths at a specified distance to the reservoir as this is the relevant area to see, and if showing whole well path it may be problematic for auto zoom etc.
p4#: 21651
2013-05-16 05:59:01 -05:00
|
|
|
{
|
2018-02-06 04:09:22 -06:00
|
|
|
model->addPart(m_surfacePart.p());
|
2015-12-03 12:13:12 -06:00
|
|
|
}
|
|
|
|
|
2018-02-06 04:09:22 -06:00
|
|
|
if (m_centerLinePart.notNull())
|
2015-12-03 12:13:12 -06:00
|
|
|
{
|
2018-02-06 04:09:22 -06:00
|
|
|
model->addPart(m_centerLinePart.p());
|
Added visualization of Well Paths in reservoir views.
Added PDM objects for a list of well paths (RimWellPathCollection) and for individual well paths (RimWellPath).
RimWellPathCollection uses RivWellPathCollectionPartMgr to generate visualization parts for each well path in the collection.
RimWellPath handles geometry defined in RigWellPath, and RivWellPathPartMgr is used to generate visualization parts. The well path visualization parts are generated by reusing RivPipeGeometryGenerator (also used for well pipes).
Added features:
- Select Open Well Paths in File menu to open one or more well path files, file format supported is Statoil JSON format.
- Each well path has a label showing the name, and the PDM window will show additional info (Id, Source System, UTM Zone, Update Date and User, Survey Type, File Path).
- Possible to turn on / off visibility, set thickness, set color for individual well paths.
- List of well paths including specified parameters/settings will be stored in project file.
- Possible to clip all well paths at a specified distance to the reservoir as this is the relevant area to see, and if showing whole well path it may be problematic for auto zoom etc.
p4#: 21651
2013-05-16 05:59:01 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
if (m_wellLabelPart.notNull())
|
|
|
|
{
|
|
|
|
model->addPart(m_wellLabelPart.p());
|
|
|
|
}
|
2017-01-04 01:10:02 -06:00
|
|
|
|
2017-06-22 04:01:44 -05:00
|
|
|
appendFishboneSubsPartsToModel(model, displayCoordTransform, characteristicCellSize);
|
|
|
|
appendImportedFishbonesToModel(model, displayCoordTransform, characteristicCellSize);
|
2018-10-11 04:33:45 -05:00
|
|
|
appendWellPathAttributesToModel(model, displayCoordTransform, characteristicCellSize);
|
2018-09-03 07:52:00 -05:00
|
|
|
|
|
|
|
RimGridView* gridView = dynamic_cast<RimGridView*>(m_rimView.p());
|
|
|
|
if (!gridView) return;
|
|
|
|
m_3dWellLogPlanePartMgr = new Riv3dWellLogPlanePartMgr(m_rimWellPath, gridView);
|
|
|
|
m_3dWellLogPlanePartMgr->appendPlaneToModel(model, displayCoordTransform, wellPathClipBoundingBox, true);
|
|
|
|
|
Added visualization of Well Paths in reservoir views.
Added PDM objects for a list of well paths (RimWellPathCollection) and for individual well paths (RimWellPath).
RimWellPathCollection uses RivWellPathCollectionPartMgr to generate visualization parts for each well path in the collection.
RimWellPath handles geometry defined in RigWellPath, and RivWellPathPartMgr is used to generate visualization parts. The well path visualization parts are generated by reusing RivPipeGeometryGenerator (also used for well pipes).
Added features:
- Select Open Well Paths in File menu to open one or more well path files, file format supported is Statoil JSON format.
- Each well path has a label showing the name, and the PDM window will show additional info (Id, Source System, UTM Zone, Update Date and User, Survey Type, File Path).
- Possible to turn on / off visibility, set thickness, set color for individual well paths.
- List of well paths including specified parameters/settings will be stored in project file.
- Possible to clip all well paths at a specified distance to the reservoir as this is the relevant area to see, and if showing whole well path it may be problematic for auto zoom etc.
p4#: 21651
2013-05-16 05:59:01 -05:00
|
|
|
}
|
|
|
|
|
2018-03-20 07:12:20 -05:00
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
///
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
void RivWellPathPartMgr::appendFlattenedStaticGeometryPartsToModel(cvf::ModelBasicList* model,
|
|
|
|
const caf::DisplayCoordTransform* displayCoordTransform,
|
|
|
|
double characteristicCellSize,
|
|
|
|
const cvf::BoundingBox& wellPathClipBoundingBox)
|
|
|
|
{
|
2018-04-23 15:52:44 -05:00
|
|
|
if (!isWellPathWithinBoundingBox(wellPathClipBoundingBox)) return;
|
|
|
|
|
2018-03-20 07:12:20 -05:00
|
|
|
// The pipe geometry needs to be rebuilt on scale change to keep the pipes round
|
|
|
|
buildWellPathParts(displayCoordTransform, characteristicCellSize, wellPathClipBoundingBox, true);
|
|
|
|
|
|
|
|
if (m_surfacePart.notNull())
|
|
|
|
{
|
|
|
|
model->addPart(m_surfacePart.p());
|
|
|
|
}
|
|
|
|
|
|
|
|
if (m_centerLinePart.notNull())
|
|
|
|
{
|
|
|
|
model->addPart(m_centerLinePart.p());
|
|
|
|
}
|
|
|
|
|
|
|
|
if (m_wellLabelPart.notNull())
|
|
|
|
{
|
|
|
|
model->addPart(m_wellLabelPart.p());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2015-12-03 12:13:12 -06:00
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
///
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
2018-03-16 05:21:57 -05:00
|
|
|
void RivWellPathPartMgr::appendDynamicGeometryPartsToModel(cvf::ModelBasicList* model,
|
|
|
|
size_t timeStepIndex,
|
|
|
|
const caf::DisplayCoordTransform* displayCoordTransform,
|
|
|
|
double characteristicCellSize,
|
|
|
|
const cvf::BoundingBox& wellPathClipBoundingBox)
|
Added visualization of Well Paths in reservoir views.
Added PDM objects for a list of well paths (RimWellPathCollection) and for individual well paths (RimWellPath).
RimWellPathCollection uses RivWellPathCollectionPartMgr to generate visualization parts for each well path in the collection.
RimWellPath handles geometry defined in RigWellPath, and RivWellPathPartMgr is used to generate visualization parts. The well path visualization parts are generated by reusing RivPipeGeometryGenerator (also used for well pipes).
Added features:
- Select Open Well Paths in File menu to open one or more well path files, file format supported is Statoil JSON format.
- Each well path has a label showing the name, and the PDM window will show additional info (Id, Source System, UTM Zone, Update Date and User, Survey Type, File Path).
- Possible to turn on / off visibility, set thickness, set color for individual well paths.
- List of well paths including specified parameters/settings will be stored in project file.
- Possible to clip all well paths at a specified distance to the reservoir as this is the relevant area to see, and if showing whole well path it may be problematic for auto zoom etc.
p4#: 21651
2013-05-16 05:59:01 -05:00
|
|
|
{
|
2017-06-19 15:53:19 -05:00
|
|
|
CVF_ASSERT(model);
|
2015-12-03 12:13:12 -06:00
|
|
|
|
2017-06-16 01:56:02 -05:00
|
|
|
RimWellPathCollection* wellPathCollection = this->wellPathCollection();
|
|
|
|
if (!wellPathCollection) return;
|
|
|
|
|
|
|
|
if (m_rimWellPath.isNull()) return;
|
|
|
|
|
2018-03-20 05:29:46 -05:00
|
|
|
if (wellPathCollection->wellPathVisibility() == RimWellPathCollection::FORCE_ALL_OFF) return;
|
2017-06-16 01:56:02 -05:00
|
|
|
|
|
|
|
if (wellPathCollection->wellPathVisibility() != RimWellPathCollection::FORCE_ALL_ON && m_rimWellPath->showWellPath() == false)
|
2018-03-20 05:29:46 -05:00
|
|
|
{
|
2017-06-16 01:56:02 -05:00
|
|
|
return;
|
2018-03-20 05:29:46 -05:00
|
|
|
}
|
2017-05-05 04:21:40 -05:00
|
|
|
|
2018-04-23 15:52:44 -05:00
|
|
|
if (!isWellPathWithinBoundingBox(wellPathClipBoundingBox)) return;
|
|
|
|
|
2018-03-20 11:28:27 -05:00
|
|
|
appendPerforationsToModel(model, timeStepIndex, displayCoordTransform, characteristicCellSize, false);
|
2018-03-16 05:21:57 -05:00
|
|
|
appendVirtualTransmissibilitiesToModel(model, timeStepIndex, displayCoordTransform, characteristicCellSize);
|
2018-06-20 03:31:03 -05:00
|
|
|
|
|
|
|
RimGridView* gridView = dynamic_cast<RimGridView*>(m_rimView.p());
|
|
|
|
if (!gridView) return;
|
|
|
|
|
2018-09-03 07:52:00 -05:00
|
|
|
if (m_3dWellLogPlanePartMgr.isNull())
|
|
|
|
{
|
|
|
|
m_3dWellLogPlanePartMgr = new Riv3dWellLogPlanePartMgr(m_rimWellPath, gridView);
|
|
|
|
}
|
|
|
|
m_3dWellLogPlanePartMgr->appendPlaneToModel(model, displayCoordTransform, wellPathClipBoundingBox, false);
|
2018-06-20 03:31:03 -05:00
|
|
|
|
2017-02-01 07:54:02 -06:00
|
|
|
}
|
|
|
|
|
2018-03-20 11:28:27 -05:00
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
///
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
void RivWellPathPartMgr::appendFlattenedDynamicGeometryPartsToModel(cvf::ModelBasicList* model,
|
|
|
|
size_t timeStepIndex,
|
|
|
|
const caf::DisplayCoordTransform* displayCoordTransform,
|
|
|
|
double characteristicCellSize,
|
|
|
|
const cvf::BoundingBox& wellPathClipBoundingBox)
|
|
|
|
{
|
|
|
|
CVF_ASSERT(model);
|
|
|
|
|
|
|
|
RimWellPathCollection* wellPathCollection = this->wellPathCollection();
|
|
|
|
if (!wellPathCollection) return;
|
|
|
|
|
|
|
|
if (m_rimWellPath.isNull()) return;
|
|
|
|
|
2018-04-23 15:52:44 -05:00
|
|
|
if (!isWellPathWithinBoundingBox(wellPathClipBoundingBox)) return;
|
|
|
|
|
2018-03-20 11:28:27 -05:00
|
|
|
appendPerforationsToModel(model, timeStepIndex, displayCoordTransform, characteristicCellSize, true);
|
|
|
|
}
|
|
|
|
|
2015-12-03 12:13:12 -06:00
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
///
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
void RivWellPathPartMgr::clearAllBranchData()
|
|
|
|
{
|
2018-02-06 04:09:22 -06:00
|
|
|
m_pipeGeomGenerator = nullptr;
|
|
|
|
m_surfacePart = nullptr;
|
|
|
|
m_surfaceDrawable = nullptr;
|
|
|
|
m_centerLinePart = nullptr;
|
|
|
|
m_centerLineDrawable = nullptr;
|
|
|
|
m_wellLabelPart = nullptr;
|
2015-12-03 12:13:12 -06:00
|
|
|
}
|
2015-12-04 05:05:06 -06:00
|
|
|
|
2017-05-12 03:01:37 -05:00
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
///
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
2018-06-26 03:12:49 -05:00
|
|
|
RimWellPathCollection* RivWellPathPartMgr::wellPathCollection() const
|
2017-05-12 03:01:37 -05:00
|
|
|
{
|
|
|
|
if (!m_rimWellPath) return nullptr;
|
|
|
|
|
|
|
|
RimWellPathCollection* wellPathCollection = nullptr;
|
|
|
|
m_rimWellPath->firstAncestorOrThisOfType(wellPathCollection);
|
|
|
|
|
|
|
|
return wellPathCollection;
|
|
|
|
}
|
|
|
|
|
2018-02-05 06:23:14 -06:00
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
///
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
double RivWellPathPartMgr::wellPathRadius(double characteristicCellSize, RimWellPathCollection* wellPathCollection)
|
|
|
|
{
|
|
|
|
return wellPathCollection->wellPathRadiusScaleFactor() * m_rimWellPath->wellPathRadiusScaleFactor() * characteristicCellSize;
|
|
|
|
}
|