Created FemPartCollection

Used that instead against reader to make a "results free" interface
regarding reading the element models.
This commit is contained in:
Jacob Støren 2015-04-27 10:25:04 +02:00
parent b94ba6ca0b
commit 2b967d9ca1
10 changed files with 133 additions and 43 deletions

View File

@ -13,6 +13,8 @@ add_library( ${PROJECT_NAME}
RigFemTypes.h
RigGeoMechCaseData.cpp
RigGeoMechCaseData.h
RigFemPartCollection.cpp
RigFemPartCollection.h
)

View File

@ -0,0 +1,65 @@
/////////////////////////////////////////////////////////////////////////////////
//
// Copyright (C) 2015- Statoil ASA
// Copyright (C) 2015- Ceetron Solutions AS
//
// 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 "RigFemPartCollection.h"
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RigFemPartCollection::RigFemPartCollection()
{
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RigFemPartCollection::~RigFemPartCollection()
{
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RigFemPartCollection::addFemPart(RigFemPart* part)
{
m_femParts.push_back(part);
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RigFemPart* RigFemPartCollection::part(size_t index)
{
return m_femParts[index].p();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
size_t RigFemPartCollection::partCount()
{
return m_femParts.size();
}

View File

@ -0,0 +1,42 @@
/////////////////////////////////////////////////////////////////////////////////
//
// Copyright (C) 2015- Statoil ASA
// Copyright (C) 2015- Ceetron Solutions AS
//
// 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 "RigFemPart.h"
#include "cvfCollection.h"
class RigFemPartCollection: public cvf::Object
{
public:
RigFemPartCollection();
~RigFemPartCollection();
void addFemPart(RigFemPart* part);
RigFemPart* part(size_t index);
size_t partCount();
private:
cvf::Collection<RigFemPart> m_femParts;
};

View File

@ -18,17 +18,13 @@
/////////////////////////////////////////////////////////////////////////////////
#include "RigGeoMechCaseData.h"
#include "RigFemPart.h"
#include <math.h>
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RigGeoMechCaseData::RigGeoMechCaseData()
{
m_femParts = new RigFemPartCollection();
}
//--------------------------------------------------------------------------------------------------
@ -42,23 +38,7 @@ RigGeoMechCaseData::~RigGeoMechCaseData()
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RigGeoMechCaseData::addFemPart(RigFemPart* part)
RigFemPartCollection* RigGeoMechCaseData::femParts()
{
m_femParts.push_back(part);
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RigFemPart* RigGeoMechCaseData::part(size_t index)
{
return m_femParts[index].p();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
size_t RigGeoMechCaseData::partCount()
{
return m_femParts.size();
return m_femParts.p();
}

View File

@ -19,8 +19,8 @@
#pragma once
#include "RigFemPart.h"
#include "cvfCollection.h"
#include "RigFemPartCollection.h"
class RigGeoMechCaseData: public cvf::Object
{
@ -28,11 +28,11 @@ public:
RigGeoMechCaseData();
~RigGeoMechCaseData();
void addFemPart(RigFemPart* part);
RigFemPart* part(size_t index);
size_t partCount();
RigFemPartCollection* femParts();
private:
cvf::Collection<RigFemPart> m_femParts;
cvf::ref<RigFemPartCollection> m_femParts;
};

View File

@ -23,7 +23,7 @@
#include "cvfObject.h"
#include <vector>
class RigGeoMechCaseData;
class RigFemPartCollection;
//==================================================================================================
@ -37,7 +37,7 @@ public:
RifGeoMechReaderInterface();
virtual ~RifGeoMechReaderInterface();
virtual bool readFemParts(const std::string& fileName, RigGeoMechCaseData* geoMechCase) = 0;
virtual bool readFemParts(const std::string& fileName, RigFemPartCollection* geoMechCase) = 0;
virtual void close() = 0;
virtual std::vector<double> timeSteps() = 0;

View File

@ -19,7 +19,7 @@
#include "RifOdbReader.h"
#include "RigGeoMechCaseData.h"
#include "RigFemPartCollection.h"
#include "RigFemPart.h"
#include <odb_API.h>
@ -53,9 +53,9 @@ RifOdbReader::~RifOdbReader()
}
void readOdbFile(const std::string& fileName, RigGeoMechCaseData* geoMechCase)
void readOdbFile(const std::string& fileName, RigFemPartCollection* femParts)
{
CVF_ASSERT(geoMechCase);
CVF_ASSERT(femParts);
odb_String path = fileName.c_str();
@ -103,8 +103,8 @@ void readOdbFile(const std::string& fileName, RigGeoMechCaseData* geoMechCase)
femPart->appendElement(elmType, odbElm.label(), odbElm.connectivity(nodeCount));
}
femPart->setElementPartId(geoMechCase->partCount());
geoMechCase->addFemPart(femPart);
femPart->setElementPartId(femParts->partCount());
femParts->addFemPart(femPart);
}
}
@ -112,7 +112,7 @@ void readOdbFile(const std::string& fileName, RigGeoMechCaseData* geoMechCase)
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
bool RifOdbReader::readFemParts(const std::string& fileName, RigGeoMechCaseData* geoMechCase)
bool RifOdbReader::readFemParts(const std::string& fileName, RigFemPartCollection* femParts)
{
odb_initializeAPI();
@ -120,7 +120,7 @@ bool RifOdbReader::readFemParts(const std::string& fileName, RigGeoMechCaseData*
try
{
readOdbFile(fileName, geoMechCase);
readOdbFile(fileName, femParts);
}
catch (const nex_Exception& nex)

View File

@ -22,7 +22,7 @@
#include "RifGeoMechReaderInterface.h"
#include <string>
class RigGeoMechCaseData;
class RigFemPartCollection;
//==================================================================================================
//
@ -36,7 +36,7 @@ public:
RifOdbReader();
virtual ~RifOdbReader();
virtual bool readFemParts(const std::string& fileName, RigGeoMechCaseData* geoMechCase);
virtual bool readFemParts(const std::string& fileName, RigFemPartCollection* femParts);
virtual void close();
virtual std::vector<double> timeSteps();

View File

@ -27,7 +27,8 @@
TEST(OdbReaderTest, BasicTests)
{
cvf::ref<RifOdbReader> reader = new RifOdbReader;
cvf::ref<RigGeoMechCaseData> femData = new RigGeoMechCaseData;
cvf::ref<RigGeoMechCaseData> femCase = new RigGeoMechCaseData;
cvf::ref<RigFemPartCollection> femData = femCase->femParts();
reader->readFemParts("C:\\pfRoot\\jjsOnJacobpcCsdep\\User\\Sigurd\\OdbApiExperiments\\viewer_tutorial.odb", femData.p());
EXPECT_EQ(1, femData->partCount());

View File

@ -89,7 +89,7 @@ bool RimGeoMechCase::openGeoMechCase()
readerInterface = new RifOdbReader;
m_geoMechCaseData = new RigGeoMechCaseData;
if (!readerInterface->readFemParts(m_caseFileName().toStdString(), m_geoMechCaseData.p()))
if (!readerInterface->readFemParts(m_caseFileName().toStdString(), m_geoMechCaseData->femParts()))
{
return false;
}