Added nodal results reading to Femreader interface

Adjusted interface
Started to add control code to fire reader and visualization generation
This commit is contained in:
Jacob Støren 2015-04-25 08:57:34 +02:00
parent c3ec79d6e1
commit b94ba6ca0b
9 changed files with 56 additions and 27 deletions

View File

@ -717,6 +717,7 @@ bool RiaApplication::openOdbCaseFromFile(const QString& fileName)
QString caseName = gridFileName.completeBaseName();
RimGeoMechCase* geoMechCase = new RimGeoMechCase();
geoMechCase->setFileName(fileName);
geoMechCase->caseUserDescription = caseName;
RimGeoMechModels* geoMechModelCollection = m_project->activeOilField() ? m_project->activeOilField()->geoMechModels() : NULL;

View File

@ -22,30 +22,14 @@
#include "RiaApplication.h"
#include "RiaPreferences.h"
#include "RigCaseCellResultsData.h"
#include "RigCaseData.h"
#include "RigResultAccessorFactory.h"
#include "RimCase.h"
#include "RimCellEdgeResultSlot.h"
#include "RimReservoirCellResultsStorage.h"
#include "RimReservoirView.h"
#include "RimResultSlot.h"
#include "RimTernaryLegendConfig.h"
#include "RimWellCollection.h"
#include "RivCellEdgeEffectGenerator.h"
#include "RivResultToTextureMapper.h"
#include "RivScalarMapperUtils.h"
#include "RivSourceInfo.h"
#include "RivTernaryScalarMapperEffectGenerator.h"
#include "RivTernaryTextureCoordsCreator.h"
#include "RivTextureCoordsCreator.h"
#include "cafEffectGenerator.h"
#include "cafPdmFieldCvfColor.h"
#include "cafPdmFieldCvfMat4d.h"
#include "cafProgressInfo.h"
#include "cvfDrawableGeo.h"
#include "cvfMath.h"

View File

@ -37,11 +37,12 @@ public:
RifGeoMechReaderInterface();
virtual ~RifGeoMechReaderInterface();
virtual bool open(const std::string& fileName, RigGeoMechCaseData* geoMechCase) = 0;
virtual bool readFemParts(const std::string& fileName, RigGeoMechCaseData* geoMechCase) = 0;
virtual void close() = 0;
virtual std::vector<double> timeSteps() = 0;
virtual std::vector<double> timeSteps() = 0;
virtual std::vector<std::string> scalarNodeResultNames() = 0;
virtual void readScalarNodeResult(const std::string& resultName, int partIndex, int stepIndex, std::vector<float>* resultValues ) = 0;
private:
};

View File

@ -112,7 +112,7 @@ void readOdbFile(const std::string& fileName, RigGeoMechCaseData* geoMechCase)
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
bool RifOdbReader::open(const std::string& fileName, RigGeoMechCaseData* geoMechCase)
bool RifOdbReader::readFemParts(const std::string& fileName, RigGeoMechCaseData* geoMechCase)
{
odb_initializeAPI();

View File

@ -36,10 +36,12 @@ public:
RifOdbReader();
virtual ~RifOdbReader();
virtual bool open(const std::string& fileName, RigGeoMechCaseData* geoMechCase);
virtual bool readFemParts(const std::string& fileName, RigGeoMechCaseData* geoMechCase);
virtual void close();
virtual std::vector<double> timeSteps();
virtual std::vector<std::string> scalarNodeResultNames() {return std::vector<std::string> ();};
virtual void readScalarNodeResult(const std::string& resultName, int partIndex, int stepIndex, std::vector<float>* resultValues ) {};
private:
};

View File

@ -28,7 +28,7 @@ TEST(OdbReaderTest, BasicTests)
{
cvf::ref<RifOdbReader> reader = new RifOdbReader;
cvf::ref<RigGeoMechCaseData> femData = new RigGeoMechCaseData;
reader->open("C:\\pfRoot\\jjsOnJacobpcCsdep\\User\\Sigurd\\OdbApiExperiments\\viewer_tutorial.odb", femData.p());
reader->readFemParts("C:\\pfRoot\\jjsOnJacobpcCsdep\\User\\Sigurd\\OdbApiExperiments\\viewer_tutorial.odb", femData.p());
EXPECT_EQ(1, femData->partCount());
EXPECT_EQ(149, femData->part(0)->elementCount());

View File

@ -19,6 +19,11 @@
#include "RimGeoMechCase.h"
#include "RimGeoMechView.h"
#include "RiaApplication.h"
#include "RiaPreferences.h"
#include "RifOdbReader.h"
#include "RigGeomechCaseData.h"
#include <QFile>
CAF_PDM_SOURCE_INIT(RimGeoMechCase, "ResInsightGeoMechCase");
//--------------------------------------------------------------------------------------------------
@ -29,8 +34,8 @@ RimGeoMechCase::RimGeoMechCase(void)
CAF_PDM_InitObject("Geomechanical Case", ":/GeoMechCase48x48.png", "", "");
CAF_PDM_InitField(&caseUserDescription, "CaseUserDescription", QString(), "Case name", "", "" ,"");
CAF_PDM_InitField(&caseFileName, "CaseFileName", QString(), "Case file name", "", "", "");
caseFileName.setUiReadOnly(true);
CAF_PDM_InitField(&m_caseFileName, "CaseFileName", QString(), "Case file name", "", "", "");
m_caseFileName.setUiReadOnly(true);
CAF_PDM_InitFieldNoDefault(&geoMechViews, "GeoMechViews", "", "", "", "");
}
@ -64,3 +69,34 @@ caf::PdmFieldHandle* RimGeoMechCase::userDescriptionField()
return &caseUserDescription;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
bool RimGeoMechCase::openGeoMechCase()
{
// If read already, return
if (this->m_geoMechCaseData.notNull()) return true;
cvf::ref<RifGeoMechReaderInterface> readerInterface;
if (!QFile::exists(m_caseFileName()))
{
return false;
}
RiaPreferences* prefs = RiaApplication::instance()->preferences();
readerInterface = new RifOdbReader;
m_geoMechCaseData = new RigGeoMechCaseData;
if (!readerInterface->readFemParts(m_caseFileName().toStdString(), m_geoMechCaseData.p()))
{
return false;
}
// Todo: Default Results stuff, if needed
return true;
}

View File

@ -22,9 +22,10 @@
#include "cafPdmField.h"
#include "cafPdmObject.h"
#include "cafPdmPointer.h"
#include "cvfObject.h"
class RimGeoMechView;
class RigGeoMechCaseData;
//==================================================================================================
///
///
@ -36,6 +37,9 @@ class RimGeoMechCase : public caf::PdmObject
public:
RimGeoMechCase(void);
virtual ~RimGeoMechCase(void);
void setFileName(const QString& fileName) {m_caseFileName = fileName;}
bool openGeoMechCase();
RimGeoMechView* createAndAddReservoirView();
@ -46,5 +50,6 @@ public:
caf::PdmPointersField<RimGeoMechView*> geoMechViews;
private:
caf::PdmField<QString> caseFileName;
cvf::ref<RigGeoMechCaseData> m_geoMechCaseData;
caf::PdmField<QString> m_caseFileName;
};

View File

@ -73,7 +73,7 @@ public:
caf::PdmField< cvf::Color3f > backgroundColor;
protected:
virtual caf::PdmFieldHandle* userDescriptionField();
virtual caf::PdmFieldHandle* userDescriptionField();
private:
void updateViewerWidget();