mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
#1589 Remove option removeLateralsInMainBoreCells, instead implement option for "Exclude main bore" for fishbone export. Also grouping export options.
This commit is contained in:
@@ -40,8 +40,8 @@ namespace caf
|
||||
template<>
|
||||
void RicExportCompletionDataSettingsUi::CompdatExportType::setUp()
|
||||
{
|
||||
addItem(RicExportCompletionDataSettingsUi::TRANSMISSIBILITIES, "TRANSMISSIBILITIES", "Export Calculated Transmissibilities");
|
||||
addItem(RicExportCompletionDataSettingsUi::WPIMULT_AND_DEFAULT_CONNECTION_FACTORS, "WPIMULT_AND_DEFAULT_CONNECTION_FACTORS", "Use Default Connection Factors and WPIMULT");
|
||||
addItem(RicExportCompletionDataSettingsUi::TRANSMISSIBILITIES, "TRANSMISSIBILITIES", "Calculated Transmissibilities");
|
||||
addItem(RicExportCompletionDataSettingsUi::WPIMULT_AND_DEFAULT_CONNECTION_FACTORS, "WPIMULT_AND_DEFAULT_CONNECTION_FACTORS", "Default Connection Factors and WPIMULT");
|
||||
setDefault(RicExportCompletionDataSettingsUi::TRANSMISSIBILITIES);
|
||||
}
|
||||
}
|
||||
@@ -58,14 +58,14 @@ RicExportCompletionDataSettingsUi::RicExportCompletionDataSettingsUi()
|
||||
|
||||
CAF_PDM_InitFieldNoDefault(&fileSplit, "FileSplit", "File Split", "", "", "");
|
||||
CAF_PDM_InitFieldNoDefault(&wellSelection, "WellSelection", "Well Selection", "", "", "");
|
||||
CAF_PDM_InitFieldNoDefault(&compdatExport, "compdatExport", "Export setting", "", " ", "");
|
||||
CAF_PDM_InitFieldNoDefault(&compdatExport, "compdatExport", "Export", "", " ", "");
|
||||
|
||||
CAF_PDM_InitField(&timeStep, "TimeStepIndex", 0, "Time Step", "", "", "");
|
||||
|
||||
CAF_PDM_InitField(&includePerforations, "IncludePerforations", true, "Include Perforations", "", "", "");
|
||||
CAF_PDM_InitField(&includeFishbones, "IncludeFishbones", true, "Include Fishbones", "", "", "");
|
||||
|
||||
CAF_PDM_InitField(&removeLateralsInMainBoreCells, "RemoveLateralsInMainBoreCells", false, "Remove Laterals in Main Bore Cells", "", "", "");
|
||||
CAF_PDM_InitField(&excludeMainBoreForFishbones, "ExcludeMainBoreForFishbones", false, "Exclude Main Bore Transmissibility For Fishbones", "", "", "");
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -100,6 +100,19 @@ QList<caf::PdmOptionItemInfo> RicExportCompletionDataSettingsUi::calculateValueO
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RicExportCompletionDataSettingsUi::defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering)
|
||||
{
|
||||
// caf::PdmUiGroup* fishboneGroup = uiOrdering.addNewGroup("Fishbone export");
|
||||
// fishboneGroup->add(&includeFishbones);
|
||||
caf::PdmUiGroup* generalExportSettings = uiOrdering.addNewGroup("General Export Settings");
|
||||
generalExportSettings->add(&folder);
|
||||
generalExportSettings->add(&caseToApply);
|
||||
generalExportSettings->add(&timeStep);
|
||||
generalExportSettings->add(&compdatExport);
|
||||
generalExportSettings->add(&wellSelection);
|
||||
generalExportSettings->add(&fileSplit);
|
||||
|
||||
|
||||
caf::PdmUiGroup* fishboneGroup = uiOrdering.addNewGroup("Export of Fishbone Completions");
|
||||
fishboneGroup->add(&includeFishbones);
|
||||
fishboneGroup->add(&excludeMainBoreForFishbones);
|
||||
|
||||
caf::PdmUiGroup* perfIntervalGroup = uiOrdering.addNewGroup("Export of Perforation Completions");
|
||||
perfIntervalGroup->add(&includePerforations);
|
||||
}
|
||||
|
||||
@@ -62,7 +62,7 @@ public:
|
||||
caf::PdmField<bool> includePerforations;
|
||||
caf::PdmField<bool> includeFishbones;
|
||||
|
||||
caf::PdmField<bool> removeLateralsInMainBoreCells;
|
||||
caf::PdmField<bool> excludeMainBoreForFishbones;
|
||||
|
||||
caf::PdmField<int> timeStep;
|
||||
|
||||
|
||||
@@ -30,6 +30,7 @@
|
||||
#include "RimFishbonesMultipleSubs.h"
|
||||
#include "RimFishboneWellPathCollection.h"
|
||||
#include "RimWellPathCompletions.h"
|
||||
#include "RigCompletionData.h"
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
@@ -41,14 +42,6 @@ void RicFishbonesTransmissibilityCalculationFeatureImp::findFishboneLateralsWell
|
||||
std::vector<WellSegmentLocation> locations = RicWellPathExportCompletionDataFeature::findWellSegmentLocations(settings.caseToApply, wellPath);
|
||||
|
||||
RiaEclipseUnitTools::UnitSystem unitSystem = caseData->unitsType();
|
||||
|
||||
// Filter out cells where main bore is present
|
||||
if (settings.removeLateralsInMainBoreCells())
|
||||
{
|
||||
std::vector<size_t> wellPathCells = RicWellPathExportCompletionDataFeature::findIntersectingCells(caseData, wellPath->wellPathGeometry()->m_wellPathPoints);
|
||||
RicWellPathExportCompletionDataFeature::markWellPathCells(wellPathCells, &locations);
|
||||
}
|
||||
|
||||
bool isMainBore = false;
|
||||
|
||||
std::vector<RigCompletionData> completionData;
|
||||
@@ -59,8 +52,6 @@ void RicFishbonesTransmissibilityCalculationFeatureImp::findFishboneLateralsWell
|
||||
{
|
||||
for (const WellSegmentLateralIntersection& intersection : lateral.intersections)
|
||||
{
|
||||
if (intersection.mainBoreCell && settings.removeLateralsInMainBoreCells()) continue;
|
||||
|
||||
double diameter = location.fishbonesSubs->holeDiameter(unitSystem);
|
||||
QString completionMetaData = (location.fishbonesSubs->name() + QString(": Sub: %1 Lateral: %2").arg(location.subIndex).arg(lateral.lateralIndex));
|
||||
WellBorePartForTransCalc wellBorePart = WellBorePartForTransCalc(intersection.lengthsInCell,
|
||||
@@ -159,7 +150,9 @@ std::vector<RigCompletionData> RicFishbonesTransmissibilityCalculationFeatureImp
|
||||
wellBorePart.wellRadius *2,
|
||||
direction,
|
||||
wellBorePart.isMainBore);
|
||||
|
||||
completion.addMetadata(wellBorePart.metaData, QString::number(transmissibility));
|
||||
|
||||
completionData.push_back(completion);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -307,6 +307,11 @@ RigCompletionData RicWellPathExportCompletionDataFeature::combineEclipseCellComp
|
||||
return resultCompletion; //Returning empty completion, should not be exported
|
||||
}
|
||||
|
||||
if (settings.excludeMainBoreForFishbones && completionType == RigCompletionData::FISHBONES && completion.isMainBore())
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
totalTrans = totalTrans + completion.transmissibility();
|
||||
|
||||
resultCompletion.m_metadata.reserve(resultCompletion.m_metadata.size() + completion.m_metadata.size());
|
||||
@@ -346,7 +351,6 @@ RigCompletionData RicWellPathExportCompletionDataFeature::combineEclipseCellComp
|
||||
void RicWellPathExportCompletionDataFeature::printCompletionsToFile(const QString& exportFolder, const QString& fileName, std::vector<RigCompletionData>& completions, RicExportCompletionDataSettingsUi::CompdatExportType exportType)
|
||||
{
|
||||
//TODO: Check that completion is ready for export
|
||||
//TODO: Use wpimult instead of count for export!
|
||||
|
||||
QString filePath = QDir(exportFolder).filePath(fileName);
|
||||
QFile exportFile(filePath);
|
||||
@@ -419,6 +423,12 @@ void RicWellPathExportCompletionDataFeature::generateCompdatTable(RifEclipseData
|
||||
|
||||
for (const RigCompletionData& data : completionData)
|
||||
{
|
||||
if (data.transmissibility() == 0.0 || data.wpimult()==0.0)
|
||||
{
|
||||
//Don't export completions without transmissibility
|
||||
continue;
|
||||
}
|
||||
|
||||
for (const RigCompletionMetaData& metadata : data.metadata())
|
||||
{
|
||||
formatter.comment(QString("%1 : %2").arg(metadata.name).arg(metadata.comment));
|
||||
@@ -490,8 +500,13 @@ void RicWellPathExportCompletionDataFeature::generateWpimultTable(RifEclipseData
|
||||
|
||||
for (auto& completion : completionData)
|
||||
{
|
||||
if (completion.wpimult() == 0.0)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
formatter.add(completion.wellName());
|
||||
formatter.add(completion.count());
|
||||
formatter.add(completion.wpimult());
|
||||
formatter.addZeroBasedCellIndex(completion.cellIndex().i).addZeroBasedCellIndex(completion.cellIndex().j).addZeroBasedCellIndex(completion.cellIndex().k);
|
||||
formatter.rowCompleted();
|
||||
}
|
||||
|
||||
@@ -252,6 +252,9 @@ void RigCompletionData::copy(RigCompletionData& target, const RigCompletionData&
|
||||
target.m_skinFactor = from.m_skinFactor;
|
||||
target.m_dFactor = from.m_dFactor;
|
||||
target.m_direction = from.m_direction;
|
||||
target.m_isMainBore = from.m_isMainBore;
|
||||
target.m_readyForExport = from.m_readyForExport;
|
||||
target.m_count = from.m_count;
|
||||
target.m_wpimult = from.m_wpimult;
|
||||
target.m_completionType = from.m_completionType;
|
||||
}
|
||||
|
||||
@@ -147,7 +147,7 @@ public:
|
||||
bool isMainBore() const { return m_isMainBore; }
|
||||
bool readyForExport() const { return m_readyForExport; }
|
||||
|
||||
std::vector<RigCompletionMetaData> m_metadata; //TODO: Is this OK?
|
||||
std::vector<RigCompletionMetaData> m_metadata;
|
||||
|
||||
private:
|
||||
QString m_wellName;
|
||||
|
||||
Reference in New Issue
Block a user