Commit c0e846fa authored by Kenneth Leiter's avatar Kenneth Leiter

ENH: Add XdmfGridRegular for CoRectilinear (Regular) Structured Grids. Add...

ENH: Add XdmfGridRegular for CoRectilinear (Regular) Structured Grids.  Add test for interaction and output.
parent 87c6965e
......@@ -122,7 +122,6 @@ include_directories(${XdmfCore_INCLUDE_DIRS})
option(XDMF_BUILD_CORE_ONLY OFF)
if(NOT XDMF_BUILD_CORE_ONLY)
set(XdmfSources
XdmfAttribute
XdmfAttributeCenter
......@@ -133,6 +132,7 @@ if(NOT XDMF_BUILD_CORE_ONLY)
XdmfGrid
XdmfGridCollection
XdmfGridCollectionType
XdmfGridRegular
XdmfItemFactory
XdmfMap
XdmfReader
......@@ -168,5 +168,4 @@ if(NOT XDMF_BUILD_CORE_ONLY)
file(GLOB XdmfHeaders *.hpp)
install(FILES ${XdmfHeaders} DESTINATION include)
install(TARGETS Xdmf LIBRARY DESTINATION lib)
endif(NOT XDMF_BUILD_CORE_ONLY)
......@@ -37,7 +37,7 @@ public:
/**
* Get the number of points stored in this geometry.
*/
unsigned int getNumberPoints() const;
virtual unsigned int getNumberPoints() const;
/**
* Get the XdmfGeometryType associated with this geometry.
......
......@@ -46,9 +46,9 @@ public:
*
* @return an int containing number of dimensions.
*/
unsigned int getDimensions() const;
virtual unsigned int getDimensions() const;
void getProperties(std::map<std::string, std::string> & collectedProperties) const;
virtual void getProperties(std::map<std::string, std::string> & collectedProperties) const;
/*
* Compare two XdmfGeometryTypes for equality.
......
......@@ -6,8 +6,8 @@
*/
#include "XdmfAttribute.hpp"
#include "XdmfGrid.hpp"
#include "XdmfGeometry.hpp"
#include "XdmfGrid.hpp"
#include "XdmfMap.hpp"
#include "XdmfSet.hpp"
#include "XdmfTime.hpp"
......@@ -22,10 +22,10 @@ boost::shared_ptr<XdmfGrid> XdmfGrid::New()
return p;
}
XdmfGrid::XdmfGrid() :
mName("Grid"),
XdmfGrid::XdmfGrid(const std::string & name) :
mGeometry(XdmfGeometry::New()),
mMap(boost::shared_ptr<XdmfMap>()),
mName(name),
mTime(boost::shared_ptr<XdmfTime>()),
mTopology(XdmfTopology::New())
{
......
......@@ -146,11 +146,9 @@ public:
protected:
XdmfGrid();
XdmfGrid(const std::string & name = "Grid");
virtual void populateItem(const std::map<std::string, std::string> & itemProperties, std::vector<boost::shared_ptr<XdmfItem> > & childItems, const XdmfCoreReader * const reader);
std::string mName;
private:
XdmfGrid(const XdmfGrid & grid); // Not implemented.
......@@ -158,8 +156,10 @@ private:
boost::shared_ptr<XdmfGeometry> mGeometry;
boost::shared_ptr<XdmfMap> mMap;
std::string mName;
boost::shared_ptr<XdmfTime> mTime;
boost::shared_ptr<XdmfTopology> mTopology;
};
#endif /* XDMFGRID_HPP_ */
......@@ -16,10 +16,9 @@ boost::shared_ptr<XdmfGridCollection> XdmfGridCollection::New()
XdmfGridCollection::XdmfGridCollection() :
XdmfDomain(),
XdmfGrid(),
XdmfGrid("Collection"),
mType(XdmfGridCollectionType::NoCollectionType())
{
mName = "Collection";
}
XdmfGridCollection::~XdmfGridCollection()
......@@ -30,8 +29,7 @@ const std::string XdmfGridCollection::ItemTag = "Grid";
std::map<std::string, std::string> XdmfGridCollection::getItemProperties() const
{
std::map<std::string, std::string> collectionProperties;
collectionProperties["Name"] = mName;
std::map<std::string, std::string> collectionProperties = XdmfGrid::getItemProperties();
collectionProperties["GridType"] = "Collection";
mType->getProperties(collectionProperties);
return collectionProperties;
......
/*
* XdmfGridRegular.cpp
*
* Created on: Jan 25, 2010
* Author: kleiter
*/
#include <cmath>
#include "XdmfArray.hpp"
#include "XdmfGeometry.hpp"
#include "XdmfGeometryType.hpp"
#include "XdmfGridRegular.hpp"
#include "XdmfTopology.hpp"
#include "XdmfTopologyType.hpp"
/**
* PIMPL
*/
class XdmfGridRegular::XdmfGridRegularImpl {
public:
class XdmfGeometryRegular : public XdmfGeometry
{
public:
static boost::shared_ptr<XdmfGeometryRegular> New(XdmfGridRegular * const regularGrid)
{
boost::shared_ptr<XdmfGeometryRegular> p(new XdmfGeometryRegular(regularGrid));
return p;
}
unsigned int getNumberPoints() const
{
const boost::shared_ptr<const XdmfArray> dimensions = mRegularGrid->getDimensions();
if(dimensions->getSize() == 0)
{
return 0;
}
unsigned int toReturn = 1;
for(unsigned int i=0; i<dimensions->getSize(); ++i)
{
toReturn *= dimensions->getValue<unsigned int>(i);
}
return toReturn;
}
void traverse(const boost::shared_ptr<XdmfBaseVisitor> visitor)
{
boost::shared_ptr<XdmfArray> origin = mRegularGrid->getOrigin();
boost::shared_ptr<XdmfArray> brickSize = mRegularGrid->getBrickSize();
origin->accept(visitor);
brickSize->accept(visitor);
}
private:
XdmfGeometryRegular(XdmfGridRegular * const regularGrid) :
mRegularGrid(regularGrid)
{
this->setType(XdmfGeometryTypeRegular::New(regularGrid));
}
XdmfGridRegular * const mRegularGrid;
};
class XdmfGeometryTypeRegular : public XdmfGeometryType
{
public:
static boost::shared_ptr<const XdmfGeometryTypeRegular> New(const XdmfGridRegular * const regularGrid)
{
boost::shared_ptr<const XdmfGeometryTypeRegular> p(new XdmfGeometryTypeRegular(regularGrid));
return p;
}
unsigned int getDimensions() const
{
return mRegularGrid->getDimensions()->getSize();
}
void getProperties(std::map<std::string, std::string> & collectedProperties) const
{
const boost::shared_ptr<const XdmfArray> dimensions = mRegularGrid->getDimensions();
if(dimensions->getSize() == 3)
{
collectedProperties["Type"] = "ORIGIN_DXDYDZ";
}
else if(dimensions->getSize() == 2)
{
collectedProperties["Type"] = "ORIGIN_DXDY";
}
else
{
assert(false);
}
}
private:
XdmfGeometryTypeRegular(const XdmfGridRegular * const regularGrid) :
XdmfGeometryType("", 0),
mRegularGrid(regularGrid)
{
}
const XdmfGridRegular * const mRegularGrid;
};
class XdmfTopologyRegular : public XdmfTopology
{
public:
static boost::shared_ptr<XdmfTopologyRegular> New(const XdmfGridRegular * const regularGrid)
{
boost::shared_ptr<XdmfTopologyRegular> p(new XdmfTopologyRegular(regularGrid));
return p;
}
unsigned int getNumberElements() const
{
const boost::shared_ptr<const XdmfArray> dimensions = mRegularGrid->getDimensions();
if(dimensions->getSize() == 0)
{
return 0;
}
unsigned int toReturn = 1;
for(unsigned int i=0; i<dimensions->getSize(); ++i)
{
toReturn *= (dimensions->getValue<unsigned int>(i) - 1);
}
return toReturn;
}
private:
XdmfTopologyRegular(const XdmfGridRegular * const regularGrid) :
mRegularGrid(regularGrid)
{
this->setType(XdmfTopologyTypeRegular::New(regularGrid));
}
const XdmfGridRegular * const mRegularGrid;
};
class XdmfTopologyTypeRegular : public XdmfTopologyType
{
public:
static boost::shared_ptr<const XdmfTopologyTypeRegular> New(const XdmfGridRegular * const regularGrid)
{
boost::shared_ptr<const XdmfTopologyTypeRegular> p(new XdmfTopologyTypeRegular(regularGrid));
return p;
}
unsigned int getNodesPerElement() const
{
// 2 ^ Dimensions
// e.g. 1D = 2 nodes per element and 2D = 4 nodes per element.
return (unsigned int)std::pow(2, (double)mRegularGrid->getDimensions()->getSize());
}
void getProperties(std::map<std::string, std::string> & collectedProperties) const
{
boost::shared_ptr<const XdmfArray> dimensions = mRegularGrid->getDimensions();
if(dimensions->getSize() == 3)
{
collectedProperties["Type"] = "3DCoRectMesh";
}
else if(dimensions->getSize() == 2)
{
collectedProperties["Type"] = "2DCoRectMesh";
}
else
{
assert(false);
}
collectedProperties["Dimensions"] = dimensions->getValuesString();
}
private:
XdmfTopologyTypeRegular(const XdmfGridRegular * const regularGrid) :
XdmfTopologyType(0, "foo", XdmfTopologyType::Structured),
mRegularGrid(regularGrid)
{
}
const XdmfGridRegular * const mRegularGrid;
};
XdmfGridRegularImpl(const unsigned int dimension) :
mBrickSize(XdmfArray::New()),
mDimensions(XdmfArray::New()),
mOrigin(XdmfArray::New())
{
mBrickSize->initialize<double>(dimension);
mDimensions->initialize<unsigned int>(dimension);
mOrigin->initialize<double>(dimension);
}
boost::shared_ptr<XdmfArray> mBrickSize;
boost::shared_ptr<XdmfArray> mDimensions;
boost::shared_ptr<XdmfArray> mOrigin;
};
boost::shared_ptr<XdmfGridRegular> XdmfGridRegular::New(const double brickSizeX, const double brickSizeY, const unsigned int numPointsX,
const unsigned int numPointsY, const double originX, const double originY)
{
boost::shared_ptr<XdmfGridRegular> p(new XdmfGridRegular(brickSizeX, brickSizeY, numPointsX, numPointsY, originX, originY));
return p;
}
boost::shared_ptr<XdmfGridRegular> XdmfGridRegular::New(const double brickSizeX, const double brickSizeY, const double brickSizeZ,
const unsigned int numPointsX, const unsigned int numPointsY, const unsigned int numPointsZ,
const double originX, const double originY, const double originZ)
{
boost::shared_ptr<XdmfGridRegular> p(new XdmfGridRegular(brickSizeX, brickSizeY, brickSizeZ, numPointsX, numPointsY, numPointsZ, originX, originY, originZ));
return p;
}
XdmfGridRegular::XdmfGridRegular(const double brickSizeX, const double brickSizeY, const unsigned int numPointsX,
const unsigned int numPointsY, const double originX, const double originY) :
mImpl(new XdmfGridRegularImpl(2))
{
this->setGeometry(XdmfGridRegularImpl::XdmfGeometryRegular::New(this));
this->setTopology(XdmfGridRegularImpl::XdmfTopologyRegular::New(this));
mImpl->mBrickSize->insert(0, brickSizeX);
mImpl->mBrickSize->insert(1, brickSizeY);
mImpl->mDimensions->insert(0, numPointsX);
mImpl->mDimensions->insert(1, numPointsY);
mImpl->mOrigin->insert(0, originX);
mImpl->mOrigin->insert(1, originY);
}
XdmfGridRegular::XdmfGridRegular(const double brickSizeX, const double brickSizeY, const double brickSizeZ,
const unsigned int numPointsX, const unsigned int numPointsY, const unsigned int numPointsZ,
const double originX, const double originY, const double originZ) :
mImpl(new XdmfGridRegularImpl(3))
{
this->setGeometry(XdmfGridRegularImpl::XdmfGeometryRegular::New(this));
this->setTopology(XdmfGridRegularImpl::XdmfTopologyRegular::New(this));
mImpl->mBrickSize->insert(0, brickSizeX);
mImpl->mBrickSize->insert(1, brickSizeY);
mImpl->mBrickSize->insert(2, brickSizeZ);
mImpl->mDimensions->insert(0, numPointsX);
mImpl->mDimensions->insert(1, numPointsY);
mImpl->mDimensions->insert(2, numPointsZ);
mImpl->mOrigin->insert(0, originX);
mImpl->mOrigin->insert(1, originY);
mImpl->mOrigin->insert(2, originZ);
}
XdmfGridRegular::~XdmfGridRegular()
{
delete mImpl;
}
const std::string XdmfGridRegular::ItemTag = "Grid";
boost::shared_ptr<XdmfArray> XdmfGridRegular::getBrickSize()
{
return boost::const_pointer_cast<XdmfArray>(static_cast<const XdmfGridRegular &>(*this).getBrickSize());
}
boost::shared_ptr<const XdmfArray> XdmfGridRegular::getBrickSize() const
{
return mImpl->mBrickSize;
}
boost::shared_ptr<XdmfArray> XdmfGridRegular::getDimensions()
{
return boost::const_pointer_cast<XdmfArray>(static_cast<const XdmfGridRegular &>(*this).getDimensions());
}
boost::shared_ptr<const XdmfArray> XdmfGridRegular::getDimensions() const
{
return mImpl->mDimensions;
}
boost::shared_ptr<XdmfArray> XdmfGridRegular::getOrigin()
{
return boost::const_pointer_cast<XdmfArray>(static_cast<const XdmfGridRegular &>(*this).getOrigin());
}
boost::shared_ptr<const XdmfArray> XdmfGridRegular::getOrigin() const
{
return mImpl->mOrigin;
}
void XdmfGridRegular::setBrickSize(const boost::shared_ptr<XdmfArray> brickSize)
{
mImpl->mBrickSize = brickSize;
}
void XdmfGridRegular::setDimensions(const boost::shared_ptr<XdmfArray> dimensions)
{
mImpl->mDimensions = dimensions;
}
void XdmfGridRegular::setOrigin(const boost::shared_ptr<XdmfArray> origin)
{
mImpl->mOrigin = origin;
}
#ifndef XDMFGRIDREGULAR_HPP_
#define XDMFGRIDREGULAR_HPP_
// Includes
#include "XdmfGrid.hpp"
/**
* @brief A mesh consisting of congruent points arranged regularly in space.
*
* XdmfGridRegular represents a regular mesh of congruent points arranged in space.
* In order to define a regular grid, three sets of terms need to be supplied:
*
* Brick Size (Dx, Dy, (Dz)) - Size of an individual brick.
* Dimensions (X, Y, (Z)) - Number of points in X, Y, and Z directions
* Origin Location (X, Y, (Z)) - Location of the origin of the mesh in space.
*/
class XdmfGridRegular : public XdmfGrid {
public:
/**
* Create a new structured grid (Two dimensional).
*
* @param brickSizeX the size of the brick in the x direction.
* @param brickSizeY the size of the brick in the y direction.
* @param numPointsX the number of points in the x direction.
* @param numPointsY the number of points in the y direction.
* @param originX the x coordinate of the origin.
* @param originY the y coordinate of the origin.
*
* @return constructed structured grid.
*/
static boost::shared_ptr<XdmfGridRegular> New(const double brickSizeX, const double brickSizeY, const unsigned int numPointsX,
const unsigned int numPointsY, const double originX = 0, const double originY = 0);
/**
* Create a new structured grid (Three dimensional).
*
* @param brickSizeX the size of the brick in the x direction.
* @param brickSizeY the size of the brick in the y direction.
* @param brickSizeZ the size of the brick in the z direction.
* @param numPointsX the number of points in the x direction.
* @param numPointsY the number of points in the y direction.
* @param numPointsZ the number of points in the z direction.
* @param originX the x coordinate of the origin.
* @param originY the y coordinate of the origin.
* @param originZ the z coordinate of the origin.
*
* @return constructed structured grid.
*/
static boost::shared_ptr<XdmfGridRegular> New(const double brickSizeX, const double brickSizeY, const double brickSizeZ,
const unsigned int numPointsX, const unsigned int numPointsY, const unsigned int numPointsZ,
const double originX = 0, const double originY = 0, const double originZ = 0);
virtual ~XdmfGridRegular();
LOKI_DEFINE_VISITABLE(XdmfGridRegular, XdmfGrid)
static const std::string ItemTag;
/**
* Get the size of the points composing the grid.
*
* @return XdmfArray containing brick sizes for this grid.
*/
boost::shared_ptr<XdmfArray> getBrickSize();
/**
* Get the size of the points composing the grid (const version).
*
* @return XdmfArray containing brick sizes for this grid.
*/
boost::shared_ptr<const XdmfArray> getBrickSize() const;
/**
* Get the dimensions of the grid, the number of points in each direction.
*
* @return XdmfArray containing dimensions of this grid.
*/
boost::shared_ptr<XdmfArray> getDimensions();
/**
* Get the dimensions of the grid, the number of points in each direction.
*
* @return XdmfArray containing the dimensions of this grid.
*/
boost::shared_ptr<const XdmfArray> getDimensions() const;
/**
* Get the location of the origin of the grid.
*
* @return XdmfArray containing the location of the origin of the grid.
*/
boost::shared_ptr<XdmfArray> getOrigin();
/**
* Get the location of the origin of the grid.
*
* @return XdmfArray containing the location of the origin of the grid.
*/
boost::shared_ptr<const XdmfArray> getOrigin() const;
/**
* Set the size of the points composing the grid.
*
* @param brickSize the sizes of the points composing the mesh. This should
* have the same number of terms as the dimensionality of the mesh.
*/
void setBrickSize(const boost::shared_ptr<XdmfArray> brickSize);
/**
* Set the dimensions of the grid, the number of points in each direction.
*
* @param dimensions the dimension of the grid.
*/
void setDimensions(const boost::shared_ptr<XdmfArray> dimensions);
/**
* Set the origin of the grid.
*
* @param origin location of the origin of the grid. This should have
* the same number of terms as the dimensionality of the mesh.
*/
void setOrigin(const boost::shared_ptr<XdmfArray> origin);
protected:
XdmfGridRegular(const double brickSizeX, const double brickSizeY, const unsigned int numPointsX,
const unsigned int numPointsY, const double originX, const double originY);
XdmfGridRegular(const double brickSizeX, const double brickSizeY, const double brickSizeZ,
const unsigned int numPointsX, const unsigned int numPointsY, const unsigned int numPointsZ,
const double originX, const double originY, const double originZ);
//virtual void populateItem(const std::map<std::string, std::string> & itemProperties, std::vector<boost::shared_ptr<XdmfItem> > & childItems, const XdmfCoreReader * const reader);
private:
/**
* PIMPL
*/
class XdmfGridRegularImpl;
XdmfGridRegular(const XdmfGridRegular & grid); // Not implemented.
void operator=(const XdmfGridRegular & grid); // Not implemented.
XdmfGridRegularImpl * mImpl;
};
#endif /* XDMFGRIDREGULAR_HPP_ */
......@@ -35,7 +35,7 @@ std::map<std::string, std::string> XdmfTopology::getItemProperties() const
{
std::map<std::string, std::string> topologyProperties;
mType->getProperties(topologyProperties);
if(mType != XdmfTopologyType::Polyvertex())
if(mType->getCellType() != XdmfTopologyType::Structured && mType != XdmfTopologyType::Polyvertex())
{
std::stringstream numElements;
numElements << this->getNumberElements();
......@@ -75,4 +75,5 @@ void XdmfTopology::populateItem(const std::map<std::string, std::string> & itemP
void XdmfTopology::setType(const boost::shared_ptr<const XdmfTopologyType> type)
{
mType = type;
}
......@@ -39,7 +39,7 @@ public:
*
* @return int of number elements in the Topology.
*/
unsigned int getNumberElements() const;
virtual unsigned int getNumberElements() const;
/**
* Get the XdmfTopologyType associated with this topology.
......
......@@ -173,6 +173,7 @@ boost::shared_ptr<const XdmfTopologyType> XdmfTopologyType::Mixed()
return p;
}
/*
boost::shared_ptr<const XdmfTopologyType> XdmfTopologyType::TwoDSMesh()
{
static boost::shared_ptr<const XdmfTopologyType> p(new XdmfTopologyType(1, "2DSMesh", Structured));
......@@ -207,7 +208,7 @@ boost::shared_ptr<const XdmfTopologyType> XdmfTopologyType::ThreeDCoRectMesh()
{
static boost::shared_ptr<const XdmfTopologyType> p(new XdmfTopologyType(1, "3DCoRectMesh", Structured));
return p;
}
}*/
XdmfTopologyType::XdmfTopologyType(const int& nodesPerElement, const std::string& name, const CellType& cellType) :
mCellType(cellType),
......@@ -321,6 +322,7 @@ boost::shared_ptr<const XdmfTopologyType> XdmfTopologyType::New(const std::map<s
{
return Mixed();
}
/*
else if(typeVal.compare("2DSMESH") == 0)
{
return TwoDSMesh();
......@@ -345,6 +347,7 @@ boost::shared_ptr<const XdmfTopologyType> XdmfTopologyType::New(const std::map<s
{
return ThreeDCoRectMesh();
}
*/
else
{
assert(false);
......
......@@ -82,12 +82,10 @@ public:
static boost::shared_ptr<const XdmfTopologyType> Hexahedron_125();
static boost::shared_ptr<const XdmfTopologyType> Hexahedron_125_GLL();
static boost::shared_ptr<const XdmfTopologyType> Mixed();
static boost::shared_ptr<const XdmfTopologyType> TwoDSMesh();
static boost::shared_ptr<const XdmfTopologyType> TwoDRectMesh();
static boost::shared_ptr<const XdmfTopologyType> TwoDCoRectMesh();
static boost::shared_ptr<const XdmfTopologyType> ThreeDSMesh();
static boost::shared_ptr<const XdmfTopologyType> ThreeDRectMesh();
static boost::shared_ptr<const XdmfTopologyType> ThreeDCoRectMesh();
//static boost::shared_ptr<const XdmfTopologyType> TwoDRectMesh();
//static boost::shared_ptr<const XdmfTopologyType> TwoDCoRectMesh();
//static boost::shared_ptr<const XdmfTopologyType> ThreeDRectMesh();
//static boost::shared_ptr<const XdmfTopologyType> ThreeDCoRectMesh();
/**
* Get the cell type associated with this topology type
......@@ -101,9 +99,9 @@ public:
*
* @return an unsigned int containing number of nodes per element.
*/
unsigned int getNodesPerElement() const;
virtual unsigned int getNodesPerElement() const;
void getProperties(std::map<std::string, std::string> & collectedProperties) const;
virtual void getProperties(std::map<std::string, std::string> & collectedProperties) const;
/*
* Compare two XdmfTopologyTypes for equality.
......
......@@ -187,7 +187,16 @@ public:
void initialize(const boost::shared_ptr<const XdmfArrayType> arrayType, const unsigned int size = 0);
/**
* Copy values from an XdmfArray into this array.
* Insert value into this array
*
* @param index the index in this array to insert.
* @param value the value to insert
*/
template<typename T>
void insert(const unsigned int index, const T & value);
/**
* Insert values from an XdmfArray into this array.
*
* @param startIndex the index in this array to begin insertion.
* @param values a shared pointer to an XdmfArray to copy into this array.
......@@ -199,7 +208,7 @@ public:
void insert(const unsigned int startIndex, const boost::shared_ptr<const XdmfArray> values, const unsigned int valuesStartIndex= 0, const unsigned int numValues = 1, const unsigned int arrayStride = 1, const unsigned int valuesStride = 1);
/**
* Copy values into this array.
* Insert values into this array.
*
* @param startIndex the index in this XdmfArray to begin insertion.
* @param valuesPointer a pointer to the values to copy into this XdmfArray.
......
......@@ -188,6 +188,20 @@ boost::shared_ptr<std::vector<T> > XdmfArray::initialize(const unsigned int size
return newArray;
}
template<typename T>
void XdmfArray::insert(const unsigned int index, const T & value)
{
if(mHaveArrayPointer)
{
internalizeArrayPointer();
}
if(!mHaveArray)
{
initialize<T>();
}
boost::apply_visitor(Insert<T>(index, &value, 1, 0, 0), mArray);
}
template <typename T>
void XdmfArray::insert(const unsigned int startIndex, const T * const valuesPointer, const unsigned int numValues, const unsigned int arrayStride, const unsigned int valuesStride)
{
......
......@@ -20,7 +20,7 @@ class XdmfCoreReader {
public:
virtual ~XdmfCoreReader();
virtual ~XdmfCoreReader() = 0;
/**
* Read an Xdmf file from disk into memory.
......
......@@ -16,10 +16,10 @@ boost::shared_ptr<XdmfHDF5Controller> XdmfHDF5Controller::New(const std::string
XdmfHDF5Controller::XdmfHDF5Controller(const std::string & hdf5FilePath, const std::string & dataSetPath, const unsigned int size, const boost::shared_ptr<const XdmfArrayType> type) :
mDataSetPath(dataSetPath),
mFilePath(XdmfSystemUtils::getRealPath(hdf5FilePath)),
mSize(size),
mType(type)
{
mFilePath = XdmfSystemUtils::getRealPath(hdf5FilePath);
}
XdmfHDF5Controller::~XdmfHDF5Controller()
......
......@@ -19,7 +19,7 @@ class XdmfItemProperty {
public:
virtual ~XdmfItemProperty();
virtual ~XdmfItemProperty() = 0;
/**
* Retrieve the key/value pairs that this XdmfItemProperty contains by inserting into the passed vector.
......
......@@ -18,7 +18,7 @@ class XdmfVisitor : public XdmfBaseVisitor,