diff --git a/ApplicationCode/Commands/CompletionExportCommands/RicWellPathFractureTextReportFeatureImpl.cpp b/ApplicationCode/Commands/CompletionExportCommands/RicWellPathFractureTextReportFeatureImpl.cpp index ce2cb0b4ed..28305c963d 100644 --- a/ApplicationCode/Commands/CompletionExportCommands/RicWellPathFractureTextReportFeatureImpl.cpp +++ b/ApplicationCode/Commands/CompletionExportCommands/RicWellPathFractureTextReportFeatureImpl.cpp @@ -87,7 +87,7 @@ QString RicWellPathFractureTextReportFeatureImpl::wellPathFractureReport( textStream << lineStart << "\n"; - auto proj = RiaApplication::instance()->project(); + auto proj = RiaApplication::instance()->project(); auto fractureTemplates = proj->activeOilField()->fractureDefinitionCollection()->fractureTemplates(); std::vector stimPlanTemplates; @@ -108,7 +108,6 @@ QString RicWellPathFractureTextReportFeatureImpl::wellPathFractureReport( } } - if (!RiaRegressionTestRunner::instance()->isRunningRegressionTests()) { if (sourceCase) @@ -124,7 +123,6 @@ QString RicWellPathFractureTextReportFeatureImpl::wellPathFractureReport( textStream << lineStart << "\n"; } - { QString tableText = createStimPlanFileLocationText(stimPlanTemplates); textStream << tableText; @@ -154,19 +152,14 @@ QString RicWellPathFractureTextReportFeatureImpl::wellPathFractureReport( std::vector wellPathFractures; for (const auto& w : wellPaths) { - std::set> sortedFracturesByMd; - for (const auto& frac : w->fractureCollection()->activeFractures()) { - sortedFracturesByMd.insert(std::make_pair(frac->fractureMD(), frac)); - } - - for (const auto& mdAndFracture : sortedFracturesByMd) - { - wellPathFractures.push_back(mdAndFracture.second); + wellPathFractures.push_back(frac); } } + std::sort(wellPathFractures.begin(), wellPathFractures.end(), RimWellPathFracture::compareByWellPathNameAndMD); + { QString tableText = createFractureInstancesText(wellPathFractures); textStream << tableText; @@ -303,8 +296,8 @@ QString RicWellPathFractureTextReportFeatureImpl::createStimPlanFractureText( QString tableText; - RiaEclipseUnitTools::UnitSystem unitSystem = stimPlanTemplates.front()->fractureTemplateUnit(); - bool isFieldUnits = unitSystem == RiaEclipseUnitTools::UNITS_FIELD; + RiaEclipseUnitTools::UnitSystem unitSystem = stimPlanTemplates.front()->fractureTemplateUnit(); + bool isFieldUnits = unitSystem == RiaEclipseUnitTools::UNITS_FIELD; QTextStream stream(&tableText); RifEclipseDataTableFormatter formatter(stream); @@ -355,8 +348,8 @@ QString RicWellPathFractureTextReportFeatureImpl::createEllipseFractureText( QString tableText; - RiaEclipseUnitTools::UnitSystem unitSystem = ellipseTemplates.front()->fractureTemplateUnit(); - bool isFieldUnits = unitSystem == RiaEclipseUnitTools::UNITS_FIELD; + RiaEclipseUnitTools::UnitSystem unitSystem = ellipseTemplates.front()->fractureTemplateUnit(); + bool isFieldUnits = unitSystem == RiaEclipseUnitTools::UNITS_FIELD; QTextStream stream(&tableText); RifEclipseDataTableFormatter formatter(stream); @@ -500,8 +493,8 @@ QString RicWellPathFractureTextReportFeatureImpl::createFractureInstancesText( { if (fractures.empty()) return ""; - RiaEclipseUnitTools::UnitSystem unitSystem = fractures.front()->fractureUnit(); // Fix - bool isFieldUnits = unitSystem == RiaEclipseUnitTools::UNITS_FIELD; + RiaEclipseUnitTools::UnitSystem unitSystem = fractures.front()->fractureUnit(); // Fix + bool isFieldUnits = unitSystem == RiaEclipseUnitTools::UNITS_FIELD; QString tableText; @@ -599,8 +592,8 @@ QString RicWellPathFractureTextReportFeatureImpl::createFractureCompletionSummar { QString tableText; - RiaEclipseUnitTools::UnitSystem unitSystem = wellPathFractureReportItems.front().unitSystem(); - bool isFieldUnits = unitSystem == RiaEclipseUnitTools::UNITS_FIELD; + RiaEclipseUnitTools::UnitSystem unitSystem = wellPathFractureReportItems.front().unitSystem(); + bool isFieldUnits = unitSystem == RiaEclipseUnitTools::UNITS_FIELD; QTextStream stream(&tableText); RifEclipseDataTableFormatter formatter(stream); @@ -672,9 +665,10 @@ QString RicWellPathFractureTextReportFeatureImpl::createFractureCompletionSummar } //-------------------------------------------------------------------------------------------------- -/// +/// //-------------------------------------------------------------------------------------------------- -QString RicWellPathFractureTextReportFeatureImpl::createConnectionsPerWellText(const std::vector& wellPathFractureReportItems) const +QString RicWellPathFractureTextReportFeatureImpl::createConnectionsPerWellText( + const std::vector& wellPathFractureReportItems) const { QString tableText; @@ -682,10 +676,7 @@ QString RicWellPathFractureTextReportFeatureImpl::createConnectionsPerWellText(c RifEclipseDataTableFormatter formatter(stream); configureFormatter(&formatter); - std::vector header = { - RifEclipseOutputTableColumn("Well"), - floatNumberColumn("ConnCount") - }; + std::vector header = {RifEclipseOutputTableColumn("Well"), floatNumberColumn("ConnCount")}; formatter.header(header); formatter.addHorizontalLine('-'); diff --git a/ApplicationCode/ProjectDataModel/Completions/RimWellPathFracture.cpp b/ApplicationCode/ProjectDataModel/Completions/RimWellPathFracture.cpp index 7b071d3faa..ea8323fbac 100644 --- a/ApplicationCode/ProjectDataModel/Completions/RimWellPathFracture.cpp +++ b/ApplicationCode/ProjectDataModel/Completions/RimWellPathFracture.cpp @@ -162,6 +162,30 @@ std::vector RimWellPathFracture::perforationLengthCenterLineCoords() return wellPathCoords; } +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +bool RimWellPathFracture::compareByWellPathNameAndMD(const RimWellPathFracture* lhs, const RimWellPathFracture* rhs) +{ + CVF_TIGHT_ASSERT(lhs && rhs); + + RimWellPath* lhsWellPath = nullptr; + lhs->firstAncestorOrThisOfType(lhsWellPath); + + RimWellPath* rhsWellPath = nullptr; + rhs->firstAncestorOrThisOfType(rhsWellPath); + + if (lhsWellPath && rhsWellPath) + { + if (lhsWellPath->name() != rhsWellPath->name()) + { + return lhsWellPath->name() < rhsWellPath->name(); + } + } + + return lhs->fractureMD() < rhs->fractureMD(); +} + //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationCode/ProjectDataModel/Completions/RimWellPathFracture.h b/ApplicationCode/ProjectDataModel/Completions/RimWellPathFracture.h index c681ffe448..af13464cc1 100644 --- a/ApplicationCode/ProjectDataModel/Completions/RimWellPathFracture.h +++ b/ApplicationCode/ProjectDataModel/Completions/RimWellPathFracture.h @@ -49,6 +49,8 @@ public: virtual std::vector perforationLengthCenterLineCoords() const override; + static bool compareByWellPathNameAndMD(const RimWellPathFracture* lhs, const RimWellPathFracture* rhs); + protected: virtual void defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering) override; virtual void defineEditorAttribute(const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute * attribute) override;