#1589 Remove option removeLateralsInMainBoreCells, instead implement option for "Exclude main bore" for fishbone export. Also grouping export options.

This commit is contained in:
astridkbjorke
2017-06-21 15:54:18 +02:00
parent 21f0857791
commit 8d28981664
6 changed files with 44 additions and 20 deletions

View File

@@ -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);
}

View File

@@ -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;

View File

@@ -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);
}
}

View File

@@ -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();
}

View File

@@ -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;
}

View File

@@ -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;