mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
#2360 Elm Props: Wire up reading of elm prop data into data structures
This commit is contained in:
parent
0dc0533501
commit
2cd006882f
@ -20,6 +20,12 @@
|
|||||||
|
|
||||||
#include "RiaApplication.h"
|
#include "RiaApplication.h"
|
||||||
|
|
||||||
|
#include "RigFemPartResultsCollection.h"
|
||||||
|
#include "RigGeoMechCaseData.h"
|
||||||
|
|
||||||
|
#include "RimGeoMechCase.h"
|
||||||
|
#include "RimGeoMechView.h"
|
||||||
|
|
||||||
#include <QAction>
|
#include <QAction>
|
||||||
#include <QFileDialog>
|
#include <QFileDialog>
|
||||||
|
|
||||||
@ -41,20 +47,31 @@ void RicImportElementPropertyFeature::onActionTriggered(bool isChecked)
|
|||||||
RiaApplication* app = RiaApplication::instance();
|
RiaApplication* app = RiaApplication::instance();
|
||||||
|
|
||||||
QString defaultDir = app->lastUsedDialogDirectory("ELM_PROPS");
|
QString defaultDir = app->lastUsedDialogDirectory("ELM_PROPS");
|
||||||
QStringList fileNames = QFileDialog::getOpenFileNames(NULL, "Import Element Property Table", defaultDir, "Property Table (*.inp)");
|
QStringList fileNames =
|
||||||
|
QFileDialog::getOpenFileNames(NULL, "Import Element Property Table", defaultDir, "Property Table (*.inp)");
|
||||||
|
|
||||||
if (fileNames.size())
|
if (fileNames.size())
|
||||||
{
|
{
|
||||||
defaultDir = QFileInfo(fileNames.last()).absolutePath();
|
defaultDir = QFileInfo(fileNames.last()).absolutePath();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::vector<QString> fileNamesStd;
|
||||||
|
for (QString filename : fileNames)
|
||||||
|
{
|
||||||
|
fileNamesStd.push_back(filename);
|
||||||
|
}
|
||||||
|
|
||||||
app->setLastUsedDialogDirectory("ELM_PROPS", defaultDir);
|
app->setLastUsedDialogDirectory("ELM_PROPS", defaultDir);
|
||||||
|
|
||||||
for (int i = 0; i < fileNames.size(); i++)
|
Rim3dView* activeView = RiaApplication::instance()->activeReservoirView();
|
||||||
{
|
if (!activeView) return;
|
||||||
QString fileName = fileNames[i];
|
|
||||||
|
|
||||||
//TODO
|
RimGeoMechView* activeGmv = dynamic_cast<RimGeoMechView*>(activeView);
|
||||||
|
if (!activeGmv) return;
|
||||||
|
|
||||||
|
if (activeGmv->geoMechCase())
|
||||||
|
{
|
||||||
|
activeGmv->geoMechCase()->addElementPropertyFiles(fileNamesStd);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -41,6 +41,8 @@ ${CEE_CURRENT_LIST_DIR}RifCsvUserDataParser.h
|
|||||||
${CEE_CURRENT_LIST_DIR}RifWellPathFormationReader.h
|
${CEE_CURRENT_LIST_DIR}RifWellPathFormationReader.h
|
||||||
${CEE_CURRENT_LIST_DIR}RifWellPathFormationsImporter.h
|
${CEE_CURRENT_LIST_DIR}RifWellPathFormationsImporter.h
|
||||||
${CEE_CURRENT_LIST_DIR}RifElementPropertyTableReader.h
|
${CEE_CURRENT_LIST_DIR}RifElementPropertyTableReader.h
|
||||||
|
${CEE_CURRENT_LIST_DIR}RifElementPropertyReader.h
|
||||||
|
|
||||||
# HDF5 file reader is directly included in ResInsight main CmakeList.txt
|
# HDF5 file reader is directly included in ResInsight main CmakeList.txt
|
||||||
#${CEE_CURRENT_LIST_DIR}RifHdf5Reader.h
|
#${CEE_CURRENT_LIST_DIR}RifHdf5Reader.h
|
||||||
)
|
)
|
||||||
@ -86,6 +88,7 @@ ${CEE_CURRENT_LIST_DIR}RifCsvUserDataParser.cpp
|
|||||||
${CEE_CURRENT_LIST_DIR}RifWellPathFormationReader.cpp
|
${CEE_CURRENT_LIST_DIR}RifWellPathFormationReader.cpp
|
||||||
${CEE_CURRENT_LIST_DIR}RifWellPathFormationsImporter.cpp
|
${CEE_CURRENT_LIST_DIR}RifWellPathFormationsImporter.cpp
|
||||||
${CEE_CURRENT_LIST_DIR}RifElementPropertyTableReader.cpp
|
${CEE_CURRENT_LIST_DIR}RifElementPropertyTableReader.cpp
|
||||||
|
${CEE_CURRENT_LIST_DIR}RifElementPropertyReader.cpp
|
||||||
|
|
||||||
# HDF5 file reader is directly included in ResInsight main CmakeList.txt
|
# HDF5 file reader is directly included in ResInsight main CmakeList.txt
|
||||||
#${CEE_CURRENT_LIST_DIR}RifHdf5Reader.cpp
|
#${CEE_CURRENT_LIST_DIR}RifHdf5Reader.cpp
|
||||||
|
81
ApplicationCode/FileInterface/RifElementPropertyReader.cpp
Normal file
81
ApplicationCode/FileInterface/RifElementPropertyReader.cpp
Normal file
@ -0,0 +1,81 @@
|
|||||||
|
/////////////////////////////////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
// Copyright (C) 2018- Statoil ASA
|
||||||
|
//
|
||||||
|
// 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.
|
||||||
|
//
|
||||||
|
/////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
#include "RifElementPropertyReader.h"
|
||||||
|
|
||||||
|
#include "cvfAssert.h"
|
||||||
|
|
||||||
|
#include <QString>
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
RifElementPropertyReader::RifElementPropertyReader() {}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
RifElementPropertyReader::~RifElementPropertyReader() {}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
void RifElementPropertyReader::addFile(const std::string& fileName)
|
||||||
|
{
|
||||||
|
RifElementPropertyMetadata metaData = RifElementPropertyTableReader::readMetadata(QString::fromStdString(fileName));
|
||||||
|
for (QString field : metaData.dataColumns)
|
||||||
|
{
|
||||||
|
m_fields[field.toStdString()] = metaData;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
std::map<std::string, std::vector<std::string>> RifElementPropertyReader::scalarElementFields()
|
||||||
|
{
|
||||||
|
std::map<std::string, std::vector<std::string>> fields;
|
||||||
|
|
||||||
|
for (std::map<std::string, RifElementPropertyMetadata>::iterator field = m_fields.begin(); field != m_fields.end(); field++)
|
||||||
|
{
|
||||||
|
fields[field->first];
|
||||||
|
}
|
||||||
|
|
||||||
|
return fields;
|
||||||
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
std::map<std::string, std::vector<float>>
|
||||||
|
RifElementPropertyReader::readAllElementPropertiesInFileContainingField(const std::string& fieldName)
|
||||||
|
{
|
||||||
|
RifElementPropertyTable table;
|
||||||
|
RifElementPropertyTableReader::readData(&m_fields[fieldName], &table);
|
||||||
|
|
||||||
|
CVF_ASSERT(m_fields[fieldName].dataColumns.size() == table.data.size());
|
||||||
|
|
||||||
|
std::map<std::string, std::vector<float>> fieldAndData;
|
||||||
|
|
||||||
|
for (size_t i = 0; i < table.data.size(); i++)
|
||||||
|
{
|
||||||
|
fieldAndData[m_fields[fieldName].dataColumns[i].toStdString()].swap(table.data[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
return fieldAndData;
|
||||||
|
}
|
49
ApplicationCode/FileInterface/RifElementPropertyReader.h
Normal file
49
ApplicationCode/FileInterface/RifElementPropertyReader.h
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
/////////////////////////////////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
// Copyright (C) 2018- Statoil ASA
|
||||||
|
//
|
||||||
|
// 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.
|
||||||
|
//
|
||||||
|
/////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "RifElementPropertyTableReader.h"
|
||||||
|
|
||||||
|
#include "cvfBase.h"
|
||||||
|
#include "cvfObject.h"
|
||||||
|
#include "cvfVector3.h"
|
||||||
|
|
||||||
|
#include <map>
|
||||||
|
#include <string>
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
|
//==================================================================================================
|
||||||
|
//
|
||||||
|
//
|
||||||
|
//==================================================================================================
|
||||||
|
class RifElementPropertyReader : public cvf::Object
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
RifElementPropertyReader();
|
||||||
|
virtual ~RifElementPropertyReader();
|
||||||
|
|
||||||
|
void addFile(const std::string& fileName);
|
||||||
|
|
||||||
|
std::map<std::string, std::vector<std::string>> scalarElementFields();
|
||||||
|
|
||||||
|
std::map<std::string, std::vector<float>> readAllElementPropertiesInFileContainingField(const std::string& fieldName);
|
||||||
|
|
||||||
|
private:
|
||||||
|
std::map<std::string, RifElementPropertyMetadata> m_fields;
|
||||||
|
};
|
@ -18,8 +18,6 @@
|
|||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "RigWellPathFormations.h"
|
|
||||||
|
|
||||||
#include <map>
|
#include <map>
|
||||||
#include <utility>
|
#include <utility>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
@ -19,6 +19,7 @@
|
|||||||
|
|
||||||
#include "RigFemPartResultsCollection.h"
|
#include "RigFemPartResultsCollection.h"
|
||||||
|
|
||||||
|
#include "RifElementPropertyReader.h"
|
||||||
#include "RifGeoMechReaderInterface.h"
|
#include "RifGeoMechReaderInterface.h"
|
||||||
|
|
||||||
#ifdef USE_ODB_API
|
#ifdef USE_ODB_API
|
||||||
@ -57,10 +58,12 @@
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
RigFemPartResultsCollection::RigFemPartResultsCollection(RifGeoMechReaderInterface* readerInterface, const RigFemPartCollection * femPartCollection)
|
RigFemPartResultsCollection::RigFemPartResultsCollection(RifGeoMechReaderInterface* readerInterface, RifElementPropertyReader* elementPropertyReader, const RigFemPartCollection* femPartCollection)
|
||||||
{
|
{
|
||||||
CVF_ASSERT(readerInterface);
|
CVF_ASSERT(readerInterface);
|
||||||
|
CVF_ASSERT(elementPropertyReader);
|
||||||
m_readerInterface = readerInterface;
|
m_readerInterface = readerInterface;
|
||||||
|
m_elementPropertyReader = elementPropertyReader;
|
||||||
m_femParts = femPartCollection;
|
m_femParts = femPartCollection;
|
||||||
|
|
||||||
m_femPartResults.resize(m_femParts->partCount());
|
m_femPartResults.resize(m_femParts->partCount());
|
||||||
@ -118,6 +121,17 @@ RigFormationNames* RigFemPartResultsCollection::activeFormationNames()
|
|||||||
return m_activeFormationNamesData.p();
|
return m_activeFormationNamesData.p();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
void RigFemPartResultsCollection::addElementPropertyFiles(const std::vector<QString>& filenames)
|
||||||
|
{
|
||||||
|
for (const QString filename : filenames)
|
||||||
|
{
|
||||||
|
m_elementPropertyReader->addFile(filename.toStdString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
@ -133,7 +147,6 @@ void RigFemPartResultsCollection::setCalculationParameters(double cohesion, doub
|
|||||||
this->deleteResult(RigFemResultAddress(RIG_INTEGRATION_POINT, "SE", "DSM", RigFemResultAddress::ALL_TIME_LAPSES));
|
this->deleteResult(RigFemResultAddress(RIG_INTEGRATION_POINT, "SE", "DSM", RigFemResultAddress::ALL_TIME_LAPSES));
|
||||||
this->deleteResult(RigFemResultAddress(RIG_ELEMENT_NODAL, "SE", "FOS", RigFemResultAddress::ALL_TIME_LAPSES));
|
this->deleteResult(RigFemResultAddress(RIG_ELEMENT_NODAL, "SE", "FOS", RigFemResultAddress::ALL_TIME_LAPSES));
|
||||||
this->deleteResult(RigFemResultAddress(RIG_INTEGRATION_POINT, "SE", "FOS", RigFemResultAddress::ALL_TIME_LAPSES));
|
this->deleteResult(RigFemResultAddress(RIG_INTEGRATION_POINT, "SE", "FOS", RigFemResultAddress::ALL_TIME_LAPSES));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
@ -155,6 +168,20 @@ RigFemScalarResultFrames* RigFemPartResultsCollection::findOrLoadScalarResult(in
|
|||||||
frames = calculateDerivedResult(partIndex, resVarAddr);
|
frames = calculateDerivedResult(partIndex, resVarAddr);
|
||||||
if (frames) return frames;
|
if (frames) return frames;
|
||||||
|
|
||||||
|
if (resVarAddr.resultPosType == RIG_ELEMENT)
|
||||||
|
{
|
||||||
|
std::map<std::string, std::vector<float>> elementProperties = m_elementPropertyReader->readAllElementPropertiesInFileContainingField(resVarAddr.fieldName);
|
||||||
|
|
||||||
|
std::vector<RigFemScalarResultFrames*> resultsForEachComponent;
|
||||||
|
for (auto elem : elementProperties)
|
||||||
|
{
|
||||||
|
RigFemScalarResultFrames* currentFrames = m_femPartResults[partIndex]->createScalarResult(resVarAddr);
|
||||||
|
currentFrames->frameData(0).swap(elem.second);
|
||||||
|
}
|
||||||
|
|
||||||
|
return m_femPartResults[partIndex]->findScalarResult(resVarAddr);
|
||||||
|
}
|
||||||
|
|
||||||
// We need to read the data as bulk fields, and populate the correct scalar caches
|
// We need to read the data as bulk fields, and populate the correct scalar caches
|
||||||
|
|
||||||
std::vector< RigFemResultAddress> resultAddressOfComponents = this->getResAddrToComponentsToRead(resVarAddr);
|
std::vector< RigFemResultAddress> resultAddressOfComponents = this->getResAddrToComponentsToRead(resVarAddr);
|
||||||
@ -384,7 +411,10 @@ std::map<std::string, std::vector<std::string> > RigFemPartResultsCollection::sc
|
|||||||
fieldCompNames["ST"].push_back("TPQV");
|
fieldCompNames["ST"].push_back("TPQV");
|
||||||
fieldCompNames["ST"].push_back("FAULTMOB");
|
fieldCompNames["ST"].push_back("FAULTMOB");
|
||||||
fieldCompNames["ST"].push_back("PCRIT");
|
fieldCompNames["ST"].push_back("PCRIT");
|
||||||
|
}
|
||||||
|
else if (resPos == RIG_ELEMENT)
|
||||||
|
{
|
||||||
|
fieldCompNames = m_elementPropertyReader->scalarElementFields();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -23,16 +23,21 @@
|
|||||||
|
|
||||||
#include "cvfCollection.h"
|
#include "cvfCollection.h"
|
||||||
#include "cvfObject.h"
|
#include "cvfObject.h"
|
||||||
|
|
||||||
|
#include <QString>
|
||||||
|
|
||||||
#include <map>
|
#include <map>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
class RifGeoMechReaderInterface;
|
class RifGeoMechReaderInterface;
|
||||||
|
class RifElementPropertyReader;
|
||||||
class RigFemScalarResultFrames;
|
class RigFemScalarResultFrames;
|
||||||
class RigFemPartResultsCollection;
|
class RigFemPartResultsCollection;
|
||||||
class RigFemPartResults;
|
class RigFemPartResults;
|
||||||
class RigStatisticsDataCache;
|
class RigStatisticsDataCache;
|
||||||
class RigFemPartCollection;
|
class RigFemPartCollection;
|
||||||
class RigFormationNames;
|
class RigFormationNames;
|
||||||
|
|
||||||
namespace caf
|
namespace caf
|
||||||
{
|
{
|
||||||
class ProgressInfo;
|
class ProgressInfo;
|
||||||
@ -41,11 +46,14 @@ namespace caf
|
|||||||
class RigFemPartResultsCollection: public cvf::Object
|
class RigFemPartResultsCollection: public cvf::Object
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
RigFemPartResultsCollection(RifGeoMechReaderInterface* readerInterface, const RigFemPartCollection * femPartCollection);
|
RigFemPartResultsCollection(RifGeoMechReaderInterface* readerInterface, RifElementPropertyReader* elementPropertyReader, const RigFemPartCollection * femPartCollection);
|
||||||
~RigFemPartResultsCollection();
|
~RigFemPartResultsCollection();
|
||||||
|
|
||||||
void setActiveFormationNames(RigFormationNames* activeFormationNames);
|
void setActiveFormationNames(RigFormationNames* activeFormationNames);
|
||||||
RigFormationNames* activeFormationNames();
|
RigFormationNames* activeFormationNames();
|
||||||
|
|
||||||
|
void addElementPropertyFiles(const std::vector<QString>& filename);
|
||||||
|
|
||||||
void setCalculationParameters(double cohesion, double frictionAngleRad);
|
void setCalculationParameters(double cohesion, double frictionAngleRad);
|
||||||
double parameterCohesion() const { return m_cohesion;}
|
double parameterCohesion() const { return m_cohesion;}
|
||||||
double parameterFrictionAngleRad() const { return m_frictionAngleRad; }
|
double parameterFrictionAngleRad() const { return m_frictionAngleRad; }
|
||||||
@ -104,6 +112,7 @@ private:
|
|||||||
|
|
||||||
cvf::Collection<RigFemPartResults> m_femPartResults;
|
cvf::Collection<RigFemPartResults> m_femPartResults;
|
||||||
cvf::ref<RifGeoMechReaderInterface> m_readerInterface;
|
cvf::ref<RifGeoMechReaderInterface> m_readerInterface;
|
||||||
|
cvf::ref<RifElementPropertyReader> m_elementPropertyReader;
|
||||||
cvf::cref<RigFemPartCollection> m_femParts;
|
cvf::cref<RigFemPartCollection> m_femParts;
|
||||||
cvf::ref<RigFormationNames> m_activeFormationNamesData;
|
cvf::ref<RigFormationNames> m_activeFormationNamesData;
|
||||||
|
|
||||||
|
@ -19,20 +19,24 @@
|
|||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
#include "RifElementPropertyReader.h"
|
||||||
|
#include "RifGeoMechReaderInterface.h"
|
||||||
|
#include "RigFemPartCollection.h"
|
||||||
#include "RigFemPartResultsCollection.h"
|
#include "RigFemPartResultsCollection.h"
|
||||||
#include "RigGeoMechCaseData.h"
|
#include "RigGeoMechCaseData.h"
|
||||||
#include "RigFemPartCollection.h"
|
|
||||||
#include "RifGeoMechReaderInterface.h"
|
|
||||||
|
|
||||||
#ifdef USE_ODB_API
|
#ifdef USE_ODB_API
|
||||||
#include "RifOdbReader.h"
|
#include "RifOdbReader.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "RigFemScalarResultFrames.h"
|
#include "RigFemScalarResultFrames.h"
|
||||||
#include "RigStatisticsDataCache.h"
|
#include "RigStatisticsDataCache.h"
|
||||||
#include <cmath>
|
|
||||||
#include "cvfBoundingBox.h"
|
|
||||||
#include "cafProgressInfo.h"
|
#include "cafProgressInfo.h"
|
||||||
|
#include "cvfBoundingBox.h"
|
||||||
|
|
||||||
#include <QString>
|
#include <QString>
|
||||||
|
#include <cmath>
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
@ -93,6 +97,8 @@ bool RigGeoMechCaseData::openAndReadFemParts(std::string* errorMessage)
|
|||||||
m_readerInterface = new RifOdbReader;
|
m_readerInterface = new RifOdbReader;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
m_elementPropertyReader = new RifElementPropertyReader;
|
||||||
|
|
||||||
if (m_readerInterface.notNull() && m_readerInterface->openFile(m_geoMechCaseFileName, errorMessage))
|
if (m_readerInterface.notNull() && m_readerInterface->openFile(m_geoMechCaseFileName, errorMessage))
|
||||||
{
|
{
|
||||||
m_femParts = new RigFemPartCollection();
|
m_femParts = new RigFemPartCollection();
|
||||||
@ -105,7 +111,7 @@ bool RigGeoMechCaseData::openAndReadFemParts(std::string* errorMessage)
|
|||||||
progress.setProgressDescription("Calculating element neighbors");
|
progress.setProgressDescription("Calculating element neighbors");
|
||||||
|
|
||||||
// Initialize results containers
|
// Initialize results containers
|
||||||
m_femPartResultsColl = new RigFemPartResultsCollection(m_readerInterface.p(), m_femParts.p());
|
m_femPartResultsColl = new RigFemPartResultsCollection(m_readerInterface.p(), m_elementPropertyReader.p(), m_femParts.p());
|
||||||
|
|
||||||
// Calculate derived Fem data
|
// Calculate derived Fem data
|
||||||
for (int pIdx = 0; pIdx < m_femParts->partCount(); ++pIdx)
|
for (int pIdx = 0; pIdx < m_femParts->partCount(); ++pIdx)
|
||||||
|
@ -31,6 +31,7 @@ class RifGeoMechReaderInterface;
|
|||||||
class RigFemPartCollection;
|
class RigFemPartCollection;
|
||||||
class RigFemScalarResultFrames;
|
class RigFemScalarResultFrames;
|
||||||
class RigFemPartResultsCollection;
|
class RigFemPartResultsCollection;
|
||||||
|
class RifElementPropertyReader;
|
||||||
|
|
||||||
class RigGeoMechCaseData: public cvf::Object
|
class RigGeoMechCaseData: public cvf::Object
|
||||||
{
|
{
|
||||||
@ -51,4 +52,5 @@ private:
|
|||||||
cvf::ref<RigFemPartCollection> m_femParts;
|
cvf::ref<RigFemPartCollection> m_femParts;
|
||||||
cvf::ref<RigFemPartResultsCollection> m_femPartResultsColl;
|
cvf::ref<RigFemPartResultsCollection> m_femPartResultsColl;
|
||||||
cvf::ref<RifGeoMechReaderInterface> m_readerInterface;
|
cvf::ref<RifGeoMechReaderInterface> m_readerInterface;
|
||||||
|
cvf::ref<RifElementPropertyReader> m_elementPropertyReader;
|
||||||
};
|
};
|
||||||
|
@ -260,6 +260,8 @@ void RivFemPartPartMgr::updateCellResultColor(size_t timeStepIndex, RimGeoMechCe
|
|||||||
vxToResultMapping = &(m_surfaceGenerator.quadVerticesToGlobalElmFaceNodeIdx());
|
vxToResultMapping = &(m_surfaceGenerator.quadVerticesToGlobalElmFaceNodeIdx());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!vxToResultMapping) return;
|
||||||
|
|
||||||
vxCount = static_cast<int>(vxToResultMapping->size());
|
vxCount = static_cast<int>(vxToResultMapping->size());
|
||||||
m_surfaceFacesTextureCoords->resize(vxCount);
|
m_surfaceFacesTextureCoords->resize(vxCount);
|
||||||
|
|
||||||
|
@ -317,6 +317,22 @@ void RimGeoMechCase::setFormationNames(RimFormationNames* formationNames)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
void RimGeoMechCase::addElementPropertyFiles(const std::vector<QString>& fileNames)
|
||||||
|
{
|
||||||
|
for (const QString& fileName : fileNames)
|
||||||
|
{
|
||||||
|
m_elementPropertyFileNames.v().push_back(fileName);
|
||||||
|
}
|
||||||
|
this->updateConnectedEditors();
|
||||||
|
if (m_geoMechCaseData.notNull())
|
||||||
|
{
|
||||||
|
geoMechData()->femPartResults()->addElementPropertyFiles(fileNames);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
@ -69,6 +69,8 @@ public:
|
|||||||
|
|
||||||
virtual void setFormationNames(RimFormationNames* formationNames) override;
|
virtual void setFormationNames(RimFormationNames* formationNames) override;
|
||||||
|
|
||||||
|
void addElementPropertyFiles(const std::vector<QString>& filenames);
|
||||||
|
|
||||||
// Fields:
|
// Fields:
|
||||||
caf::PdmChildArrayField<RimGeoMechView*> geoMechViews;
|
caf::PdmChildArrayField<RimGeoMechView*> geoMechViews;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user