diff --git a/ApplicationCode/Commands/RicImportFormationNamesFeature.cpp b/ApplicationCode/Commands/RicImportFormationNamesFeature.cpp index 80f91e7a6c..603c1678ed 100644 --- a/ApplicationCode/Commands/RicImportFormationNamesFeature.cpp +++ b/ApplicationCode/Commands/RicImportFormationNamesFeature.cpp @@ -20,10 +20,18 @@ #include "RiaApplication.h" +#include "RimCase.h" +#include "RimEclipseCase.h" #include "RimFormationNames.h" #include "RimFormationNamesCollection.h" +#include "RimGeoMechCase.h" #include "RimOilField.h" #include "RimProject.h" + +#include "RigEclipseCaseData.h" +#include "RigFemPartResultsCollection.h" +#include "RigGeoMechCaseData.h" + #include "RiuMainWindow.h" #include @@ -66,6 +74,28 @@ void RicImportFormationNamesFeature::onActionTriggered(bool isChecked) // For each file, find existing Formation names item, or create new RimFormationNames* formationName = fomNameColl->importFiles(fileNames); + + std::vector cases; + proj->allCases(cases); + + if (cases.size() == 1) + { + std::vector eclCases = proj->eclipseCases(); + if (eclCases.size() == 1) + { + eclCases[0]->activeFormationNames = formationName; + eclCases[0]->eclipseCaseData()->setActiveFormationNames(formationName->formationNamesData()); + } + + std::vector geoMechCases = proj->geoMechCases(); + + if (geoMechCases.size() == 1) + { + geoMechCases[0]->activeFormationNames = formationName; + geoMechCases[0]->geoMechData()->femPartResults()->setActiveFormationNames(formationName->formationNamesData()); + } + } + proj->updateConnectedEditors(); if (formationName) diff --git a/ApplicationCode/ProjectDataModel/RimProject.cpp b/ApplicationCode/ProjectDataModel/RimProject.cpp index 04623b0f52..e94594bb87 100644 --- a/ApplicationCode/ProjectDataModel/RimProject.cpp +++ b/ApplicationCode/ProjectDataModel/RimProject.cpp @@ -919,6 +919,30 @@ RimWellPath* RimProject::wellPathFromSimulationWell(const QString& simWellName, return nullptr; } +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +std::vector RimProject::geoMechCases() const +{ + std::vector cases; + + for (size_t oilFieldIdx = 0; oilFieldIdx < oilFields().size(); oilFieldIdx++) + { + RimOilField* oilField = oilFields[oilFieldIdx]; + if (!oilField) continue; + + RimGeoMechModels* geomModels = oilField->geoMechModels(); + if (geomModels) + { + for (size_t caseIdx = 0; caseIdx < geomModels->cases.size(); caseIdx++) + { + cases.push_back(geomModels->cases[caseIdx]); + } + } + } + return cases; +} + //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationCode/ProjectDataModel/RimProject.h b/ApplicationCode/ProjectDataModel/RimProject.h index cefd61de55..9773b6fd27 100644 --- a/ApplicationCode/ProjectDataModel/RimProject.h +++ b/ApplicationCode/ProjectDataModel/RimProject.h @@ -34,10 +34,12 @@ class RigGridManager; class RigMainGrid; class RigWellPath; +class RimCalculationCollection; class RimCase; class RimCommandObject; class RimDialogData; class RimEclipseCase; +class RimGeoMechCase; class RimIdenticalGridCaseGroup; class RimMainPlotCollection; class RimMultiSnapshotDefinition; @@ -48,9 +50,8 @@ class RimSummaryCase; class RimView; class RimViewLinker; class RimViewLinkerCollection; -class RimWellPathImport; -class RimCalculationCollection; class RimWellPath; +class RimWellPathImport; namespace caf { @@ -127,6 +128,8 @@ public: std::vector simulationWellBranches(const QString& simWellName); RimWellPath* wellPathFromSimulationWell(const QString& simWellName, int branchIndex = -1); + std::vector geoMechCases() const; + protected: // Overridden methods void initScriptDirectories();