Skip to content
Snippets Groups Projects
Commit 7eca6cd0 authored by Tom Fischer's avatar Tom Fischer
Browse files

renamed struct for type of element from FEMElemType to CellType and renamed...

renamed struct for type of element from FEMElemType to CellType and renamed virtual method getFEMType() to getCellType() in Elemnts class hierarchy
parent 913f8c49
No related branches found
No related tags found
No related merge requests found
Showing
with 166 additions and 166 deletions
...@@ -16,7 +16,7 @@ ...@@ -16,7 +16,7 @@
namespace MeshLib { namespace MeshLib {
typedef TemplateEdge<2,FEMElemType::EDGE2> Edge; typedef TemplateEdge<2,CellType::EDGE2> Edge;
} }
......
...@@ -122,7 +122,7 @@ public: ...@@ -122,7 +122,7 @@ public:
* Get the type of the element in context of the finite element method. * Get the type of the element in context of the finite element method.
* @return a value of the enum FEMElemType::type * @return a value of the enum FEMElemType::type
*/ */
virtual FEMElemType::type getFEMType() const = 0; virtual CellType::type getCellType() const = 0;
/** /**
* Get the value for this element. The value can be used to store a link * Get the value for this element. The value can be used to store a link
......
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
#include "TemplateHex.h" #include "TemplateHex.h"
namespace MeshLib { namespace MeshLib {
typedef TemplateHex<8, FEMElemType::HEX8> Hex; typedef TemplateHex<8, CellType::HEX8> Hex;
} }
#endif /* HEX_H_ */ #endif /* HEX_H_ */
...@@ -16,7 +16,7 @@ ...@@ -16,7 +16,7 @@
namespace MeshLib { namespace MeshLib {
typedef TemplatePrism<6, FEMElemType::PRISM6> Prism; typedef TemplatePrism<6, CellType::PRISM6> Prism;
} }
......
...@@ -16,7 +16,7 @@ ...@@ -16,7 +16,7 @@
namespace MeshLib { namespace MeshLib {
typedef TemplatePyramid<5,FEMElemType::PYRAMID5> Pyramid; typedef TemplatePyramid<5,CellType::PYRAMID5> Pyramid;
} }
......
...@@ -16,7 +16,7 @@ ...@@ -16,7 +16,7 @@
namespace MeshLib { namespace MeshLib {
typedef TemplateQuad<4,FEMElemType::QUAD4> Quad; typedef TemplateQuad<4,CellType::QUAD4> Quad;
} }
......
...@@ -30,7 +30,7 @@ namespace MeshLib { ...@@ -30,7 +30,7 @@ namespace MeshLib {
* 0--------1 * 0--------1
* @endcode * @endcode
*/ */
template<unsigned NNODES, FEMElemType::type FEMEDGETYPE> template<unsigned NNODES, CellType::type CELLEDGETYPE>
class TemplateEdge : public Element class TemplateEdge : public Element
{ {
public: public:
...@@ -89,7 +89,7 @@ public: ...@@ -89,7 +89,7 @@ public:
* Get the type of the element in context of the finite element method. * Get the type of the element in context of the finite element method.
* @return a value of the enum FEMElemType::type * @return a value of the enum FEMElemType::type
*/ */
virtual FEMElemType::type getFEMType() const { return FEMEDGETYPE; } virtual CellType::type getCellType() const { return CELLEDGETYPE; }
/// Returns true if these two indices form an edge and false otherwise /// Returns true if these two indices form an edge and false otherwise
bool isEdge(unsigned idx1, unsigned idx2) const bool isEdge(unsigned idx1, unsigned idx2) const
...@@ -101,7 +101,7 @@ public: ...@@ -101,7 +101,7 @@ public:
virtual Element* clone() const virtual Element* clone() const
{ {
return new TemplateEdge<NNODES,FEMEDGETYPE>(*this); return new TemplateEdge<NNODES,CELLEDGETYPE>(*this);
} }
/** /**
......
...@@ -11,16 +11,16 @@ ...@@ -11,16 +11,16 @@
namespace MeshLib { namespace MeshLib {
template <unsigned NNODES, FEMElemType::type FEMEDGETYPE> template<unsigned NNODES, CellType::type CELLEDGETYPE>
TemplateEdge<NNODES,FEMEDGETYPE>::TemplateEdge(Node* nodes[NNODES], unsigned value) : TemplateEdge<NNODES,CELLEDGETYPE>::TemplateEdge(Node* nodes[NNODES], unsigned value) :
Element(value) Element(value)
{ {
_nodes = nodes; _nodes = nodes;
this->_length = this->computeVolume(); this->_length = this->computeVolume();
} }
template <unsigned NNODES, FEMElemType::type FEMEDGETYPE> template <unsigned NNODES, CellType::type CELLEDGETYPE>
TemplateEdge<NNODES,FEMEDGETYPE>::TemplateEdge(const TemplateEdge<NNODES,FEMEDGETYPE> &edge) : TemplateEdge<NNODES,CELLEDGETYPE>::TemplateEdge(const TemplateEdge<NNODES,CELLEDGETYPE> &edge) :
Element(edge.getValue()) Element(edge.getValue())
{ {
_nodes = new Node*[NNODES]; _nodes = new Node*[NNODES];
...@@ -29,8 +29,8 @@ TemplateEdge<NNODES,FEMEDGETYPE>::TemplateEdge(const TemplateEdge<NNODES,FEMEDGE ...@@ -29,8 +29,8 @@ TemplateEdge<NNODES,FEMEDGETYPE>::TemplateEdge(const TemplateEdge<NNODES,FEMEDGE
_length = edge.getLength(); _length = edge.getLength();
} }
template <unsigned NNODES, FEMElemType::type FEMEDGETYPE> template <unsigned NNODES, CellType::type CELLEDGETYPE>
TemplateEdge<NNODES,FEMEDGETYPE>::~TemplateEdge() TemplateEdge<NNODES,CELLEDGETYPE>::~TemplateEdge()
{} {}
} // namespace MeshLib } // namespace MeshLib
......
...@@ -43,7 +43,7 @@ namespace MeshLib { ...@@ -43,7 +43,7 @@ namespace MeshLib {
* *
* @endcode * @endcode
*/ */
template <unsigned NNODES, FEMElemType::type FEMHEXTYPE> template <unsigned NNODES, CellType::type CELLHEXTYPE>
class TemplateHex : public Cell class TemplateHex : public Cell
{ {
public: public:
...@@ -87,7 +87,7 @@ public: ...@@ -87,7 +87,7 @@ public:
* Method returns the FEM type of the element. * Method returns the FEM type of the element.
* @return * @return
*/ */
virtual FEMElemType::type getFEMType() const { return FEMHEXTYPE; } virtual CellType::type getCellType() const { return CELLHEXTYPE; }
/// Returns true if these two indices form an edge and false otherwise /// Returns true if these two indices form an edge and false otherwise
bool isEdge(unsigned i, unsigned j) const; bool isEdge(unsigned i, unsigned j) const;
......
...@@ -18,8 +18,8 @@ ...@@ -18,8 +18,8 @@
namespace MeshLib { namespace MeshLib {
template <unsigned NNODES, FEMElemType::type FEMHEXTYPE> template <unsigned NNODES, CellType::type CELLHEXTYPE>
const unsigned TemplateHex<NNODES,FEMHEXTYPE>::_face_nodes[6][4] = const unsigned TemplateHex<NNODES,CELLHEXTYPE>::_face_nodes[6][4] =
{ {
{0, 3, 2, 1}, // Face 0 {0, 3, 2, 1}, // Face 0
{0, 1, 5, 4}, // Face 1 {0, 1, 5, 4}, // Face 1
...@@ -29,8 +29,8 @@ const unsigned TemplateHex<NNODES,FEMHEXTYPE>::_face_nodes[6][4] = ...@@ -29,8 +29,8 @@ const unsigned TemplateHex<NNODES,FEMHEXTYPE>::_face_nodes[6][4] =
{4, 5, 6, 7} // Face 5 {4, 5, 6, 7} // Face 5
}; };
template <unsigned NNODES, FEMElemType::type FEMHEXTYPE> template <unsigned NNODES, CellType::type CELLHEXTYPE>
const unsigned TemplateHex<NNODES,FEMHEXTYPE>::_edge_nodes[12][2] = const unsigned TemplateHex<NNODES,CELLHEXTYPE>::_edge_nodes[12][2] =
{ {
{0, 1}, // Edge 0 {0, 1}, // Edge 0
{1, 2}, // Edge 1 {1, 2}, // Edge 1
...@@ -46,8 +46,8 @@ const unsigned TemplateHex<NNODES,FEMHEXTYPE>::_edge_nodes[12][2] = ...@@ -46,8 +46,8 @@ const unsigned TemplateHex<NNODES,FEMHEXTYPE>::_edge_nodes[12][2] =
{4, 7} // Edge 11 {4, 7} // Edge 11
}; };
template <unsigned NNODES, FEMElemType::type FEMHEXTYPE> template <unsigned NNODES, CellType::type CELLHEXTYPE>
TemplateHex<NNODES,FEMHEXTYPE>::TemplateHex(Node* nodes[NNODES], unsigned value) TemplateHex<NNODES,CELLHEXTYPE>::TemplateHex(Node* nodes[NNODES], unsigned value)
: Cell(value) : Cell(value)
{ {
_nodes = nodes; _nodes = nodes;
...@@ -59,8 +59,8 @@ TemplateHex<NNODES,FEMHEXTYPE>::TemplateHex(Node* nodes[NNODES], unsigned value) ...@@ -59,8 +59,8 @@ TemplateHex<NNODES,FEMHEXTYPE>::TemplateHex(Node* nodes[NNODES], unsigned value)
this->_volume = this->computeVolume(); this->_volume = this->computeVolume();
} }
template <unsigned NNODES, FEMElemType::type FEMHEXTYPE> template <unsigned NNODES, CellType::type CELLHEXTYPE>
TemplateHex<NNODES,FEMHEXTYPE>::TemplateHex(const TemplateHex<NNODES,FEMHEXTYPE> &hex) TemplateHex<NNODES,CELLHEXTYPE>::TemplateHex(const TemplateHex<NNODES,CELLHEXTYPE> &hex)
: Cell(hex.getValue()) : Cell(hex.getValue())
{ {
_nodes = new Node*[NNODES]; _nodes = new Node*[NNODES];
...@@ -74,13 +74,13 @@ TemplateHex<NNODES,FEMHEXTYPE>::TemplateHex(const TemplateHex<NNODES,FEMHEXTYPE> ...@@ -74,13 +74,13 @@ TemplateHex<NNODES,FEMHEXTYPE>::TemplateHex(const TemplateHex<NNODES,FEMHEXTYPE>
_volume = hex.getVolume(); _volume = hex.getVolume();
} }
template <unsigned NNODES, FEMElemType::type FEMHEXTYPE> template <unsigned NNODES, CellType::type CELLHEXTYPE>
TemplateHex<NNODES,FEMHEXTYPE>::~TemplateHex() TemplateHex<NNODES,CELLHEXTYPE>::~TemplateHex()
{ {
} }
template <unsigned NNODES, FEMElemType::type FEMHEXTYPE> template <unsigned NNODES, CellType::type CELLHEXTYPE>
double TemplateHex<NNODES,FEMHEXTYPE>::computeVolume() double TemplateHex<NNODES,CELLHEXTYPE>::computeVolume()
{ {
return MathLib::calcTetrahedronVolume(_nodes[4]->getCoords(), _nodes[7]->getCoords(), _nodes[5]->getCoords(), _nodes[0]->getCoords()) return MathLib::calcTetrahedronVolume(_nodes[4]->getCoords(), _nodes[7]->getCoords(), _nodes[5]->getCoords(), _nodes[0]->getCoords())
+ MathLib::calcTetrahedronVolume(_nodes[5]->getCoords(), _nodes[3]->getCoords(), _nodes[1]->getCoords(), _nodes[0]->getCoords()) + MathLib::calcTetrahedronVolume(_nodes[5]->getCoords(), _nodes[3]->getCoords(), _nodes[1]->getCoords(), _nodes[0]->getCoords())
...@@ -90,8 +90,8 @@ double TemplateHex<NNODES,FEMHEXTYPE>::computeVolume() ...@@ -90,8 +90,8 @@ double TemplateHex<NNODES,FEMHEXTYPE>::computeVolume()
+ MathLib::calcTetrahedronVolume(_nodes[3]->getCoords(), _nodes[7]->getCoords(), _nodes[5]->getCoords(), _nodes[2]->getCoords()); + MathLib::calcTetrahedronVolume(_nodes[3]->getCoords(), _nodes[7]->getCoords(), _nodes[5]->getCoords(), _nodes[2]->getCoords());
} }
template <unsigned NNODES, FEMElemType::type FEMHEXTYPE> template <unsigned NNODES, CellType::type CELLHEXTYPE>
const Element* TemplateHex<NNODES,FEMHEXTYPE>::getFace(unsigned i) const const Element* TemplateHex<NNODES,CELLHEXTYPE>::getFace(unsigned i) const
{ {
if (i<this->getNFaces()) if (i<this->getNFaces())
{ {
...@@ -105,8 +105,8 @@ const Element* TemplateHex<NNODES,FEMHEXTYPE>::getFace(unsigned i) const ...@@ -105,8 +105,8 @@ const Element* TemplateHex<NNODES,FEMHEXTYPE>::getFace(unsigned i) const
return NULL; return NULL;
} }
template <unsigned NNODES, FEMElemType::type FEMHEXTYPE> template <unsigned NNODES, CellType::type CELLHEXTYPE>
bool TemplateHex<NNODES,FEMHEXTYPE>::isEdge(unsigned idx1, unsigned idx2) const bool TemplateHex<NNODES,CELLHEXTYPE>::isEdge(unsigned idx1, unsigned idx2) const
{ {
for (unsigned i(0); i<12; i++) for (unsigned i(0); i<12; i++)
{ {
...@@ -116,14 +116,14 @@ bool TemplateHex<NNODES,FEMHEXTYPE>::isEdge(unsigned idx1, unsigned idx2) const ...@@ -116,14 +116,14 @@ bool TemplateHex<NNODES,FEMHEXTYPE>::isEdge(unsigned idx1, unsigned idx2) const
return false; return false;
} }
template <unsigned NNODES, FEMElemType::type FEMHEXTYPE> template <unsigned NNODES, CellType::type CELLHEXTYPE>
Element* TemplateHex<NNODES,FEMHEXTYPE>::clone() const Element* TemplateHex<NNODES,CELLHEXTYPE>::clone() const
{ {
return new TemplateHex<NNODES,FEMHEXTYPE>(*this); return new TemplateHex<NNODES,CELLHEXTYPE>(*this);
} }
template <unsigned NNODES, FEMElemType::type FEMHEXTYPE> template <unsigned NNODES, CellType::type CELLHEXTYPE>
unsigned TemplateHex<NNODES,FEMHEXTYPE>::identifyFace(Node* nodes[3]) const unsigned TemplateHex<NNODES,CELLHEXTYPE>::identifyFace(Node* nodes[3]) const
{ {
for (unsigned i=0; i<6; i++) for (unsigned i=0; i<6; i++)
{ {
...@@ -138,8 +138,8 @@ unsigned TemplateHex<NNODES,FEMHEXTYPE>::identifyFace(Node* nodes[3]) const ...@@ -138,8 +138,8 @@ unsigned TemplateHex<NNODES,FEMHEXTYPE>::identifyFace(Node* nodes[3]) const
return std::numeric_limits<unsigned>::max(); return std::numeric_limits<unsigned>::max();
} }
template <unsigned NNODES, FEMElemType::type FEMHEXTYPE> template <unsigned NNODES, CellType::type CELLHEXTYPE>
Element* TemplateHex<NNODES,FEMHEXTYPE>::reviseElement() const Element* TemplateHex<NNODES,CELLHEXTYPE>::reviseElement() const
{ {
std::vector<size_t> collapsed_edges; std::vector<size_t> collapsed_edges;
for (size_t edge(0); edge<getNEdges(); edge++) { for (size_t edge(0); edge<getNEdges(); edge++) {
...@@ -149,7 +149,7 @@ Element* TemplateHex<NNODES,FEMHEXTYPE>::reviseElement() const ...@@ -149,7 +149,7 @@ Element* TemplateHex<NNODES,FEMHEXTYPE>::reviseElement() const
} }
if (collapsed_edges.size() == 1) { if (collapsed_edges.size() == 1) {
std::cerr << "[TemplateHex<NNODES,FEMHEXTYPE>::reviseElement()] collapsing of one edge in hexahedron not handled" << std::endl; std::cerr << "[TemplateHex<NNODES,CELLHEXTYPE>::reviseElement()] collapsing of one edge in hexahedron not handled" << std::endl;
return NULL; return NULL;
} }
......
...@@ -41,7 +41,7 @@ namespace MeshLib { ...@@ -41,7 +41,7 @@ namespace MeshLib {
* *
* @endcode * @endcode
*/ */
template <unsigned NNODES, FEMElemType::type FEMPRISMTYPE> template <unsigned NNODES, CellType::type CELLPRISMTYPE>
class TemplatePrism : public Cell class TemplatePrism : public Cell
{ {
public: public:
...@@ -83,9 +83,9 @@ public: ...@@ -83,9 +83,9 @@ public:
/** /**
* Get the type of the element in context of the finite element method. * Get the type of the element in context of the finite element method.
* @return a value of the enum FEMElemType::type * @return a value of the enum CellType::type
*/ */
virtual FEMElemType::type getFEMType() const { return FEMPRISMTYPE; }; virtual CellType::type getCellType() const { return CELLPRISMTYPE; };
/// Returns true if these two indeces form an edge and false otherwise /// Returns true if these two indeces form an edge and false otherwise
bool isEdge(unsigned i, unsigned j) const; bool isEdge(unsigned i, unsigned j) const;
......
...@@ -19,8 +19,8 @@ ...@@ -19,8 +19,8 @@
namespace MeshLib { namespace MeshLib {
template <unsigned NNODES, FEMElemType::type FEMPRISMTYPE> template <unsigned NNODES, CellType::type CELLPRISMTYPE>
const unsigned TemplatePrism<NNODES,FEMPRISMTYPE>::_face_nodes[5][4] = const unsigned TemplatePrism<NNODES,CELLPRISMTYPE>::_face_nodes[5][4] =
{ {
{0, 2, 1, 99}, // Face 0 {0, 2, 1, 99}, // Face 0
{0, 1, 4, 3}, // Face 1 {0, 1, 4, 3}, // Face 1
...@@ -29,8 +29,8 @@ const unsigned TemplatePrism<NNODES,FEMPRISMTYPE>::_face_nodes[5][4] = ...@@ -29,8 +29,8 @@ const unsigned TemplatePrism<NNODES,FEMPRISMTYPE>::_face_nodes[5][4] =
{3, 4, 5, 99} // Face 4 {3, 4, 5, 99} // Face 4
}; };
template <unsigned NNODES, FEMElemType::type FEMPRISMTYPE> template <unsigned NNODES, CellType::type CELLPRISMTYPE>
const unsigned TemplatePrism<NNODES,FEMPRISMTYPE>::_edge_nodes[9][2] = const unsigned TemplatePrism<NNODES,CELLPRISMTYPE>::_edge_nodes[9][2] =
{ {
{0, 1}, // Edge 0 {0, 1}, // Edge 0
{1, 2}, // Edge 1 {1, 2}, // Edge 1
...@@ -43,11 +43,11 @@ const unsigned TemplatePrism<NNODES,FEMPRISMTYPE>::_edge_nodes[9][2] = ...@@ -43,11 +43,11 @@ const unsigned TemplatePrism<NNODES,FEMPRISMTYPE>::_edge_nodes[9][2] =
{3, 5} // Edge 8 {3, 5} // Edge 8
}; };
template <unsigned NNODES, FEMElemType::type FEMPRISMTYPE> template <unsigned NNODES, CellType::type CELLPRISMTYPE>
const unsigned TemplatePrism<NNODES,FEMPRISMTYPE>::_n_face_nodes[5] = { 3, 4, 4, 4, 3 }; const unsigned TemplatePrism<NNODES,CELLPRISMTYPE>::_n_face_nodes[5] = { 3, 4, 4, 4, 3 };
template <unsigned NNODES, FEMElemType::type FEMPRISMTYPE> template <unsigned NNODES, CellType::type CELLPRISMTYPE>
TemplatePrism<NNODES,FEMPRISMTYPE>::TemplatePrism(Node* nodes[NNODES], unsigned value) TemplatePrism<NNODES,CELLPRISMTYPE>::TemplatePrism(Node* nodes[NNODES], unsigned value)
: Cell(value) : Cell(value)
{ {
_nodes = nodes; _nodes = nodes;
...@@ -57,8 +57,8 @@ TemplatePrism<NNODES,FEMPRISMTYPE>::TemplatePrism(Node* nodes[NNODES], unsigned ...@@ -57,8 +57,8 @@ TemplatePrism<NNODES,FEMPRISMTYPE>::TemplatePrism(Node* nodes[NNODES], unsigned
this->_volume = this->computeVolume(); this->_volume = this->computeVolume();
} }
template <unsigned NNODES, FEMElemType::type FEMPRISMTYPE> template <unsigned NNODES, CellType::type CELLPRISMTYPE>
TemplatePrism<NNODES,FEMPRISMTYPE>::TemplatePrism(const TemplatePrism<NNODES,FEMPRISMTYPE> &prism) TemplatePrism<NNODES,CELLPRISMTYPE>::TemplatePrism(const TemplatePrism<NNODES,CELLPRISMTYPE> &prism)
: Cell(prism.getValue()) : Cell(prism.getValue())
{ {
_nodes = new Node*[NNODES]; _nodes = new Node*[NNODES];
...@@ -72,21 +72,21 @@ TemplatePrism<NNODES,FEMPRISMTYPE>::TemplatePrism(const TemplatePrism<NNODES,FEM ...@@ -72,21 +72,21 @@ TemplatePrism<NNODES,FEMPRISMTYPE>::TemplatePrism(const TemplatePrism<NNODES,FEM
_volume = prism.getVolume(); _volume = prism.getVolume();
} }
template <unsigned NNODES, FEMElemType::type FEMPRISMTYPE> template <unsigned NNODES, CellType::type CELLPRISMTYPE>
TemplatePrism<NNODES,FEMPRISMTYPE>::~TemplatePrism() TemplatePrism<NNODES,CELLPRISMTYPE>::~TemplatePrism()
{ {
} }
template <unsigned NNODES, FEMElemType::type FEMPRISMTYPE> template <unsigned NNODES, CellType::type CELLPRISMTYPE>
double TemplatePrism<NNODES,FEMPRISMTYPE>::computeVolume() double TemplatePrism<NNODES,CELLPRISMTYPE>::computeVolume()
{ {
return MathLib::calcTetrahedronVolume(_nodes[0]->getCoords(), _nodes[1]->getCoords(), _nodes[2]->getCoords(), _nodes[3]->getCoords()) return MathLib::calcTetrahedronVolume(_nodes[0]->getCoords(), _nodes[1]->getCoords(), _nodes[2]->getCoords(), _nodes[3]->getCoords())
+ MathLib::calcTetrahedronVolume(_nodes[1]->getCoords(), _nodes[4]->getCoords(), _nodes[2]->getCoords(), _nodes[3]->getCoords()) + MathLib::calcTetrahedronVolume(_nodes[1]->getCoords(), _nodes[4]->getCoords(), _nodes[2]->getCoords(), _nodes[3]->getCoords())
+ MathLib::calcTetrahedronVolume(_nodes[2]->getCoords(), _nodes[4]->getCoords(), _nodes[5]->getCoords(), _nodes[3]->getCoords()); + MathLib::calcTetrahedronVolume(_nodes[2]->getCoords(), _nodes[4]->getCoords(), _nodes[5]->getCoords(), _nodes[3]->getCoords());
} }
template <unsigned NNODES, FEMElemType::type FEMPRISMTYPE> template <unsigned NNODES, CellType::type CELLPRISMTYPE>
const Element* TemplatePrism<NNODES,FEMPRISMTYPE>::getFace(unsigned i) const const Element* TemplatePrism<NNODES,CELLPRISMTYPE>::getFace(unsigned i) const
{ {
if (i<this->getNFaces()) if (i<this->getNFaces())
{ {
...@@ -104,8 +104,8 @@ const Element* TemplatePrism<NNODES,FEMPRISMTYPE>::getFace(unsigned i) const ...@@ -104,8 +104,8 @@ const Element* TemplatePrism<NNODES,FEMPRISMTYPE>::getFace(unsigned i) const
return NULL; return NULL;
} }
template <unsigned NNODES, FEMElemType::type FEMPRISMTYPE> template <unsigned NNODES, CellType::type CELLPRISMTYPE>
unsigned TemplatePrism<NNODES,FEMPRISMTYPE>::getNFaceNodes(unsigned i) const unsigned TemplatePrism<NNODES,CELLPRISMTYPE>::getNFaceNodes(unsigned i) const
{ {
if (i<5) if (i<5)
return _n_face_nodes[i]; return _n_face_nodes[i];
...@@ -113,8 +113,8 @@ unsigned TemplatePrism<NNODES,FEMPRISMTYPE>::getNFaceNodes(unsigned i) const ...@@ -113,8 +113,8 @@ unsigned TemplatePrism<NNODES,FEMPRISMTYPE>::getNFaceNodes(unsigned i) const
return 0; return 0;
} }
template <unsigned NNODES, FEMElemType::type FEMPRISMTYPE> template <unsigned NNODES, CellType::type CELLPRISMTYPE>
bool TemplatePrism<NNODES,FEMPRISMTYPE>::isEdge(unsigned idx1, unsigned idx2) const bool TemplatePrism<NNODES,CELLPRISMTYPE>::isEdge(unsigned idx1, unsigned idx2) const
{ {
for (unsigned i(0); i<9; i++) for (unsigned i(0); i<9; i++)
{ {
...@@ -124,14 +124,14 @@ bool TemplatePrism<NNODES,FEMPRISMTYPE>::isEdge(unsigned idx1, unsigned idx2) co ...@@ -124,14 +124,14 @@ bool TemplatePrism<NNODES,FEMPRISMTYPE>::isEdge(unsigned idx1, unsigned idx2) co
return false; return false;
} }
template <unsigned NNODES, FEMElemType::type FEMPRISMTYPE> template <unsigned NNODES, CellType::type CELLPRISMTYPE>
Element* TemplatePrism<NNODES,FEMPRISMTYPE>::clone() const Element* TemplatePrism<NNODES,CELLPRISMTYPE>::clone() const
{ {
return new TemplatePrism<NNODES,FEMPRISMTYPE>(*this); return new TemplatePrism<NNODES,CELLPRISMTYPE>(*this);
} }
template <unsigned NNODES, FEMElemType::type FEMPRISMTYPE> template <unsigned NNODES, CellType::type CELLPRISMTYPE>
unsigned TemplatePrism<NNODES,FEMPRISMTYPE>::identifyFace(Node* nodes[3]) const unsigned TemplatePrism<NNODES,CELLPRISMTYPE>::identifyFace(Node* nodes[3]) const
{ {
for (unsigned i=0; i<5; i++) for (unsigned i=0; i<5; i++)
{ {
...@@ -146,8 +146,8 @@ unsigned TemplatePrism<NNODES,FEMPRISMTYPE>::identifyFace(Node* nodes[3]) const ...@@ -146,8 +146,8 @@ unsigned TemplatePrism<NNODES,FEMPRISMTYPE>::identifyFace(Node* nodes[3]) const
return std::numeric_limits<unsigned>::max(); return std::numeric_limits<unsigned>::max();
} }
template <unsigned NNODES, FEMElemType::type FEMPRISMTYPE> template <unsigned NNODES, CellType::type CELLPRISMTYPE>
Element* TemplatePrism<NNODES,FEMPRISMTYPE>::reviseElement() const Element* TemplatePrism<NNODES,CELLPRISMTYPE>::reviseElement() const
{ {
// try to create Pyramid // try to create Pyramid
if (_nodes[_edge_nodes[3][0]] == _nodes[_edge_nodes[3][1]]) { if (_nodes[_edge_nodes[3][0]] == _nodes[_edge_nodes[3][1]]) {
......
...@@ -39,7 +39,7 @@ namespace MeshLib { ...@@ -39,7 +39,7 @@ namespace MeshLib {
* 0 * 0
* @endcode * @endcode
*/ */
template <unsigned NNODES, FEMElemType::type FEMPYRAMIDTYPE> template <unsigned NNODES, CellType::type CELLPYRAMIDTYPE>
class TemplatePyramid : public Cell class TemplatePyramid : public Cell
{ {
public: public:
...@@ -81,9 +81,9 @@ public: ...@@ -81,9 +81,9 @@ public:
/** /**
* Get the type of the element in context of the finite element method. * Get the type of the element in context of the finite element method.
* @return a value of the enum FEMElemType::type * @return a value of the enum CellType::type
*/ */
virtual FEMElemType::type getFEMType() const { return FEMPYRAMIDTYPE; } virtual CellType::type getCellType() const { return CELLPYRAMIDTYPE; }
/// Returns true if these two indeces form an edge and false otherwise /// Returns true if these two indeces form an edge and false otherwise
bool isEdge(unsigned i, unsigned j) const; bool isEdge(unsigned i, unsigned j) const;
......
...@@ -19,8 +19,8 @@ ...@@ -19,8 +19,8 @@
namespace MeshLib { namespace MeshLib {
template <unsigned NNODES, FEMElemType::type FEMPYRAMIDTYPE> template <unsigned NNODES, CellType::type CELLPYRAMIDTYPE>
const unsigned TemplatePyramid<NNODES,FEMPYRAMIDTYPE>::_face_nodes[5][4] = const unsigned TemplatePyramid<NNODES,CELLPYRAMIDTYPE>::_face_nodes[5][4] =
{ {
{0, 1, 4, 99}, // Face 0 {0, 1, 4, 99}, // Face 0
{1, 2, 4, 99}, // Face 1 {1, 2, 4, 99}, // Face 1
...@@ -29,8 +29,8 @@ const unsigned TemplatePyramid<NNODES,FEMPYRAMIDTYPE>::_face_nodes[5][4] = ...@@ -29,8 +29,8 @@ const unsigned TemplatePyramid<NNODES,FEMPYRAMIDTYPE>::_face_nodes[5][4] =
{0, 3, 2, 1} // Face 4 {0, 3, 2, 1} // Face 4
}; };
template <unsigned NNODES, FEMElemType::type FEMPYRAMIDTYPE> template <unsigned NNODES, CellType::type CELLPYRAMIDTYPE>
const unsigned TemplatePyramid<NNODES,FEMPYRAMIDTYPE>::_edge_nodes[8][2] = const unsigned TemplatePyramid<NNODES,CELLPYRAMIDTYPE>::_edge_nodes[8][2] =
{ {
{0, 1}, // Edge 0 {0, 1}, // Edge 0
{1, 2}, // Edge 1 {1, 2}, // Edge 1
...@@ -42,11 +42,11 @@ const unsigned TemplatePyramid<NNODES,FEMPYRAMIDTYPE>::_edge_nodes[8][2] = ...@@ -42,11 +42,11 @@ const unsigned TemplatePyramid<NNODES,FEMPYRAMIDTYPE>::_edge_nodes[8][2] =
{3, 4} // Edge 7 {3, 4} // Edge 7
}; };
template <unsigned NNODES, FEMElemType::type FEMPYRAMIDTYPE> template <unsigned NNODES, CellType::type CELLPYRAMIDTYPE>
const unsigned TemplatePyramid<NNODES,FEMPYRAMIDTYPE>::_n_face_nodes[5] = { 3, 3, 3, 3, 4 }; const unsigned TemplatePyramid<NNODES,CELLPYRAMIDTYPE>::_n_face_nodes[5] = { 3, 3, 3, 3, 4 };
template <unsigned NNODES, FEMElemType::type FEMPYRAMIDTYPE> template <unsigned NNODES, CellType::type CELLPYRAMIDTYPE>
TemplatePyramid<NNODES,FEMPYRAMIDTYPE>::TemplatePyramid(Node* nodes[NNODES], unsigned value) TemplatePyramid<NNODES,CELLPYRAMIDTYPE>::TemplatePyramid(Node* nodes[NNODES], unsigned value)
: Cell(value) : Cell(value)
{ {
_nodes = nodes; _nodes = nodes;
...@@ -58,8 +58,8 @@ TemplatePyramid<NNODES,FEMPYRAMIDTYPE>::TemplatePyramid(Node* nodes[NNODES], uns ...@@ -58,8 +58,8 @@ TemplatePyramid<NNODES,FEMPYRAMIDTYPE>::TemplatePyramid(Node* nodes[NNODES], uns
this->_volume = this->computeVolume(); this->_volume = this->computeVolume();
} }
template <unsigned NNODES, FEMElemType::type FEMPYRAMIDTYPE> template <unsigned NNODES, CellType::type CELLPYRAMIDTYPE>
TemplatePyramid<NNODES,FEMPYRAMIDTYPE>::TemplatePyramid(const TemplatePyramid<NNODES,FEMPYRAMIDTYPE> &pyramid) TemplatePyramid<NNODES,CELLPYRAMIDTYPE>::TemplatePyramid(const TemplatePyramid<NNODES,CELLPYRAMIDTYPE> &pyramid)
: Cell(pyramid.getValue()) : Cell(pyramid.getValue())
{ {
_nodes = new Node*[NNODES]; _nodes = new Node*[NNODES];
...@@ -75,20 +75,20 @@ TemplatePyramid<NNODES,FEMPYRAMIDTYPE>::TemplatePyramid(const TemplatePyramid<NN ...@@ -75,20 +75,20 @@ TemplatePyramid<NNODES,FEMPYRAMIDTYPE>::TemplatePyramid(const TemplatePyramid<NN
_volume = pyramid.getVolume(); _volume = pyramid.getVolume();
} }
template <unsigned NNODES, FEMElemType::type FEMPYRAMIDTYPE> template <unsigned NNODES, CellType::type CELLPYRAMIDTYPE>
TemplatePyramid<NNODES,FEMPYRAMIDTYPE>::~TemplatePyramid() TemplatePyramid<NNODES,CELLPYRAMIDTYPE>::~TemplatePyramid()
{ {
} }
template <unsigned NNODES, FEMElemType::type FEMPYRAMIDTYPE> template <unsigned NNODES, CellType::type CELLPYRAMIDTYPE>
double TemplatePyramid<NNODES,FEMPYRAMIDTYPE>::computeVolume() double TemplatePyramid<NNODES,CELLPYRAMIDTYPE>::computeVolume()
{ {
return MathLib::calcTetrahedronVolume(_nodes[0]->getCoords(), _nodes[1]->getCoords(), _nodes[2]->getCoords(), _nodes[4]->getCoords()) return MathLib::calcTetrahedronVolume(_nodes[0]->getCoords(), _nodes[1]->getCoords(), _nodes[2]->getCoords(), _nodes[4]->getCoords())
+ MathLib::calcTetrahedronVolume(_nodes[2]->getCoords(), _nodes[3]->getCoords(), _nodes[0]->getCoords(), _nodes[4]->getCoords()); + MathLib::calcTetrahedronVolume(_nodes[2]->getCoords(), _nodes[3]->getCoords(), _nodes[0]->getCoords(), _nodes[4]->getCoords());
} }
template <unsigned NNODES, FEMElemType::type FEMPYRAMIDTYPE> template <unsigned NNODES, CellType::type CELLPYRAMIDTYPE>
const Element* TemplatePyramid<NNODES,FEMPYRAMIDTYPE>::getFace(unsigned i) const const Element* TemplatePyramid<NNODES,CELLPYRAMIDTYPE>::getFace(unsigned i) const
{ {
if (i<this->getNFaces()) if (i<this->getNFaces())
{ {
...@@ -106,8 +106,8 @@ const Element* TemplatePyramid<NNODES,FEMPYRAMIDTYPE>::getFace(unsigned i) const ...@@ -106,8 +106,8 @@ const Element* TemplatePyramid<NNODES,FEMPYRAMIDTYPE>::getFace(unsigned i) const
return NULL; return NULL;
} }
template <unsigned NNODES, FEMElemType::type FEMPYRAMIDTYPE> template <unsigned NNODES, CellType::type CELLPYRAMIDTYPE>
unsigned TemplatePyramid<NNODES,FEMPYRAMIDTYPE>::getNFaceNodes(unsigned i) const unsigned TemplatePyramid<NNODES,CELLPYRAMIDTYPE>::getNFaceNodes(unsigned i) const
{ {
if (i<5) if (i<5)
return _n_face_nodes[i]; return _n_face_nodes[i];
...@@ -115,8 +115,8 @@ unsigned TemplatePyramid<NNODES,FEMPYRAMIDTYPE>::getNFaceNodes(unsigned i) const ...@@ -115,8 +115,8 @@ unsigned TemplatePyramid<NNODES,FEMPYRAMIDTYPE>::getNFaceNodes(unsigned i) const
return 0; return 0;
} }
template <unsigned NNODES, FEMElemType::type FEMPYRAMIDTYPE> template <unsigned NNODES, CellType::type CELLPYRAMIDTYPE>
bool TemplatePyramid<NNODES,FEMPYRAMIDTYPE>::isEdge(unsigned idx1, unsigned idx2) const bool TemplatePyramid<NNODES,CELLPYRAMIDTYPE>::isEdge(unsigned idx1, unsigned idx2) const
{ {
for (unsigned i(0); i<8; i++) for (unsigned i(0); i<8; i++)
{ {
...@@ -126,14 +126,14 @@ bool TemplatePyramid<NNODES,FEMPYRAMIDTYPE>::isEdge(unsigned idx1, unsigned idx2 ...@@ -126,14 +126,14 @@ bool TemplatePyramid<NNODES,FEMPYRAMIDTYPE>::isEdge(unsigned idx1, unsigned idx2
return false; return false;
} }
template <unsigned NNODES, FEMElemType::type FEMPYRAMIDTYPE> template <unsigned NNODES, CellType::type CELLPYRAMIDTYPE>
Element* TemplatePyramid<NNODES,FEMPYRAMIDTYPE>::clone() const Element* TemplatePyramid<NNODES,CELLPYRAMIDTYPE>::clone() const
{ {
return new TemplatePyramid<NNODES,FEMPYRAMIDTYPE>(*this); return new TemplatePyramid<NNODES,CELLPYRAMIDTYPE>(*this);
} }
template <unsigned NNODES, FEMElemType::type FEMPYRAMIDTYPE> template <unsigned NNODES, CellType::type CELLPYRAMIDTYPE>
unsigned TemplatePyramid<NNODES,FEMPYRAMIDTYPE>::identifyFace(Node* nodes[3]) const unsigned TemplatePyramid<NNODES,CELLPYRAMIDTYPE>::identifyFace(Node* nodes[3]) const
{ {
for (unsigned i=0; i<5; i++) for (unsigned i=0; i<5; i++)
{ {
...@@ -148,8 +148,8 @@ unsigned TemplatePyramid<NNODES,FEMPYRAMIDTYPE>::identifyFace(Node* nodes[3]) co ...@@ -148,8 +148,8 @@ unsigned TemplatePyramid<NNODES,FEMPYRAMIDTYPE>::identifyFace(Node* nodes[3]) co
return std::numeric_limits<unsigned>::max(); return std::numeric_limits<unsigned>::max();
} }
template <unsigned NNODES, FEMElemType::type FEMPYRAMIDTYPE> template <unsigned NNODES, CellType::type CELLPYRAMIDTYPE>
Element* TemplatePyramid<NNODES,FEMPYRAMIDTYPE>::reviseElement() const Element* TemplatePyramid<NNODES,CELLPYRAMIDTYPE>::reviseElement() const
{ {
// try to create tetrahedron // try to create tetrahedron
if (_nodes[_edge_nodes[0][0]] == _nodes[_edge_nodes[0][1]] if (_nodes[_edge_nodes[0][0]] == _nodes[_edge_nodes[0][1]]
......
...@@ -33,7 +33,7 @@ namespace MeshLib { ...@@ -33,7 +33,7 @@ namespace MeshLib {
* 0 * 0
* @endcode * @endcode
*/ */
template <unsigned NNODES, FEMElemType::type FEMQUADTYPE> template <unsigned NNODES, CellType::type CELLQUADTYPE>
class TemplateQuad : public Face class TemplateQuad : public Face
{ {
public: public:
...@@ -66,9 +66,9 @@ public: ...@@ -66,9 +66,9 @@ public:
/** /**
* Get the type of the element in context of the finite element method. * Get the type of the element in context of the finite element method.
* @return a value of the enum FEMElemType::type * @return a value of the enum CellType::type
*/ */
virtual FEMElemType::type getFEMType() const { return FEMQUADTYPE; } virtual CellType::type getCellType() const { return CELLQUADTYPE; }
/// Returns true if these two indeces form an edge and false otherwise /// Returns true if these two indeces form an edge and false otherwise
bool isEdge(unsigned i, unsigned j) const; bool isEdge(unsigned i, unsigned j) const;
...@@ -105,8 +105,8 @@ protected: ...@@ -105,8 +105,8 @@ protected:
}; /* class */ }; /* class */
template <unsigned NNODES, FEMElemType::type FEMQUADTYPE> template <unsigned NNODES, CellType::type CELLQUADTYPE>
const unsigned TemplateQuad<NNODES, FEMQUADTYPE>::_edge_nodes[4][2] = const unsigned TemplateQuad<NNODES, CELLQUADTYPE>::_edge_nodes[4][2] =
{ {
{0, 1}, // Edge 0 {0, 1}, // Edge 0
{1, 2}, // Edge 1 {1, 2}, // Edge 1
......
...@@ -17,8 +17,8 @@ ...@@ -17,8 +17,8 @@
namespace MeshLib { namespace MeshLib {
template <unsigned NNODES, FEMElemType::type FEMQUADTYPE> template <unsigned NNODES, CellType::type CELLQUADTYPE>
TemplateQuad<NNODES,FEMQUADTYPE>::TemplateQuad(Node* nodes[NNODES], unsigned value) TemplateQuad<NNODES,CELLQUADTYPE>::TemplateQuad(Node* nodes[NNODES], unsigned value)
: Face(value) : Face(value)
{ {
_nodes = nodes; _nodes = nodes;
...@@ -30,8 +30,8 @@ TemplateQuad<NNODES,FEMQUADTYPE>::TemplateQuad(Node* nodes[NNODES], unsigned val ...@@ -30,8 +30,8 @@ TemplateQuad<NNODES,FEMQUADTYPE>::TemplateQuad(Node* nodes[NNODES], unsigned val
this->_area = this->computeVolume(); this->_area = this->computeVolume();
} }
template <unsigned NNODES, FEMElemType::type FEMQUADTYPE> template <unsigned NNODES, CellType::type CELLQUADTYPE>
TemplateQuad<NNODES,FEMQUADTYPE>::TemplateQuad(const TemplateQuad<NNODES,FEMQUADTYPE> &quad) TemplateQuad<NNODES,CELLQUADTYPE>::TemplateQuad(const TemplateQuad<NNODES,CELLQUADTYPE> &quad)
: Face(quad.getValue()) : Face(quad.getValue())
{ {
_nodes = new Node*[NNODES]; _nodes = new Node*[NNODES];
...@@ -47,20 +47,20 @@ TemplateQuad<NNODES,FEMQUADTYPE>::TemplateQuad(const TemplateQuad<NNODES,FEMQUAD ...@@ -47,20 +47,20 @@ TemplateQuad<NNODES,FEMQUADTYPE>::TemplateQuad(const TemplateQuad<NNODES,FEMQUAD
_area = quad.getArea(); _area = quad.getArea();
} }
template <unsigned NNODES, FEMElemType::type FEMQUADTYPE> template <unsigned NNODES, CellType::type CELLQUADTYPE>
TemplateQuad<NNODES,FEMQUADTYPE>::~TemplateQuad() TemplateQuad<NNODES,CELLQUADTYPE>::~TemplateQuad()
{ {
} }
template <unsigned NNODES, FEMElemType::type FEMQUADTYPE> template <unsigned NNODES, CellType::type CELLQUADTYPE>
double TemplateQuad<NNODES,FEMQUADTYPE>::computeVolume() double TemplateQuad<NNODES,CELLQUADTYPE>::computeVolume()
{ {
return MathLib::calcTriangleArea(_nodes[0]->getCoords(), _nodes[1]->getCoords(), _nodes[2]->getCoords()) return MathLib::calcTriangleArea(_nodes[0]->getCoords(), _nodes[1]->getCoords(), _nodes[2]->getCoords())
+ MathLib::calcTriangleArea(_nodes[2]->getCoords(), _nodes[3]->getCoords(), _nodes[0]->getCoords()); + MathLib::calcTriangleArea(_nodes[2]->getCoords(), _nodes[3]->getCoords(), _nodes[0]->getCoords());
} }
template <unsigned NNODES, FEMElemType::type FEMQUADTYPE> template <unsigned NNODES, CellType::type CELLQUADTYPE>
bool TemplateQuad<NNODES,FEMQUADTYPE>::isEdge(unsigned idx1, unsigned idx2) const bool TemplateQuad<NNODES,CELLQUADTYPE>::isEdge(unsigned idx1, unsigned idx2) const
{ {
for (unsigned i(0); i<4; i++) for (unsigned i(0); i<4; i++)
{ {
...@@ -70,14 +70,14 @@ bool TemplateQuad<NNODES,FEMQUADTYPE>::isEdge(unsigned idx1, unsigned idx2) cons ...@@ -70,14 +70,14 @@ bool TemplateQuad<NNODES,FEMQUADTYPE>::isEdge(unsigned idx1, unsigned idx2) cons
return false; return false;
} }
template <unsigned NNODES, FEMElemType::type FEMQUADTYPE> template <unsigned NNODES, CellType::type CELLQUADTYPE>
Element* TemplateQuad<NNODES,FEMQUADTYPE>::clone() const Element* TemplateQuad<NNODES,CELLQUADTYPE>::clone() const
{ {
return new TemplateQuad(*this); return new TemplateQuad(*this);
} }
template <unsigned NNODES, FEMElemType::type FEMQUADTYPE> template <unsigned NNODES, CellType::type CELLQUADTYPE>
unsigned TemplateQuad<NNODES,FEMQUADTYPE>::identifyFace(Node* nodes[3]) const unsigned TemplateQuad<NNODES,CELLQUADTYPE>::identifyFace(Node* nodes[3]) const
{ {
for (unsigned i=0; i<4; i++) for (unsigned i=0; i<4; i++)
{ {
...@@ -92,8 +92,8 @@ unsigned TemplateQuad<NNODES,FEMQUADTYPE>::identifyFace(Node* nodes[3]) const ...@@ -92,8 +92,8 @@ unsigned TemplateQuad<NNODES,FEMQUADTYPE>::identifyFace(Node* nodes[3]) const
return std::numeric_limits<unsigned>::max(); return std::numeric_limits<unsigned>::max();
} }
template <unsigned NNODES, FEMElemType::type FEMQUADTYPE> template <unsigned NNODES, CellType::type CELLQUADTYPE>
Element* TemplateQuad<NNODES,FEMQUADTYPE>::reviseElement() const Element* TemplateQuad<NNODES,CELLQUADTYPE>::reviseElement() const
{ {
if (_nodes[0] == _nodes[1] || _nodes[1] == _nodes[2]) { if (_nodes[0] == _nodes[1] || _nodes[1] == _nodes[2]) {
MeshLib::Node** tri_nodes = new MeshLib::Node*[3]; MeshLib::Node** tri_nodes = new MeshLib::Node*[3];
......
...@@ -38,7 +38,7 @@ namespace MeshLib { ...@@ -38,7 +38,7 @@ namespace MeshLib {
* *
* @endcode * @endcode
*/ */
template <unsigned NNODES, FEMElemType::type FEMTETTYPE> template <unsigned NNODES, CellType::type CELLTETTYPE>
class TemplateTet : public Cell class TemplateTet : public Cell
{ {
public: public:
...@@ -80,9 +80,9 @@ public: ...@@ -80,9 +80,9 @@ public:
/** /**
* Get the type of the element in context of the finite element method. * Get the type of the element in context of the finite element method.
* @return a value of the enum FEMElemType::type * @return a value of the enum CellType::type
*/ */
virtual FEMElemType::type getFEMType() const { return FEMTETTYPE; } virtual CellType::type getCellType() const { return CELLTETTYPE; }
/// Returns true if these two indeces form an edge and false otherwise /// Returns true if these two indeces form an edge and false otherwise
bool isEdge(unsigned i, unsigned j) const; bool isEdge(unsigned i, unsigned j) const;
......
...@@ -17,8 +17,8 @@ ...@@ -17,8 +17,8 @@
namespace MeshLib { namespace MeshLib {
template <unsigned NNODES, FEMElemType::type FEMTETTYPE> template <unsigned NNODES, CellType::type CELLTETTYPE>
const unsigned TemplateTet<NNODES,FEMTETTYPE>::_face_nodes[4][3] = const unsigned TemplateTet<NNODES,CELLTETTYPE>::_face_nodes[4][3] =
{ {
{0, 2, 1}, // Face 0 {0, 2, 1}, // Face 0
{0, 1, 3}, // Face 1 {0, 1, 3}, // Face 1
...@@ -26,8 +26,8 @@ const unsigned TemplateTet<NNODES,FEMTETTYPE>::_face_nodes[4][3] = ...@@ -26,8 +26,8 @@ const unsigned TemplateTet<NNODES,FEMTETTYPE>::_face_nodes[4][3] =
{2, 0, 3} // Face 3 {2, 0, 3} // Face 3
}; };
template <unsigned NNODES, FEMElemType::type FEMTETTYPE> template <unsigned NNODES, CellType::type CELLTETTYPE>
const unsigned TemplateTet<NNODES,FEMTETTYPE>::_edge_nodes[6][2] = const unsigned TemplateTet<NNODES,CELLTETTYPE>::_edge_nodes[6][2] =
{ {
{0, 1}, // Edge 0 {0, 1}, // Edge 0
{1, 2}, // Edge 1 {1, 2}, // Edge 1
...@@ -37,8 +37,8 @@ const unsigned TemplateTet<NNODES,FEMTETTYPE>::_edge_nodes[6][2] = ...@@ -37,8 +37,8 @@ const unsigned TemplateTet<NNODES,FEMTETTYPE>::_edge_nodes[6][2] =
{2, 3} // Edge 5 {2, 3} // Edge 5
}; };
template <unsigned NNODES, FEMElemType::type FEMTETTYPE> template <unsigned NNODES, CellType::type CELLTETTYPE>
TemplateTet<NNODES,FEMTETTYPE>::TemplateTet(Node* nodes[NNODES], unsigned value) TemplateTet<NNODES,CELLTETTYPE>::TemplateTet(Node* nodes[NNODES], unsigned value)
: Cell(value) : Cell(value)
{ {
_nodes = nodes; _nodes = nodes;
...@@ -50,8 +50,8 @@ TemplateTet<NNODES,FEMTETTYPE>::TemplateTet(Node* nodes[NNODES], unsigned value) ...@@ -50,8 +50,8 @@ TemplateTet<NNODES,FEMTETTYPE>::TemplateTet(Node* nodes[NNODES], unsigned value)
this->_volume = this->computeVolume(); this->_volume = this->computeVolume();
} }
template <unsigned NNODES, FEMElemType::type FEMTETTYPE> template <unsigned NNODES, CellType::type CELLTETTYPE>
TemplateTet<NNODES,FEMTETTYPE>::TemplateTet(const TemplateTet<NNODES,FEMTETTYPE> &tet) TemplateTet<NNODES,CELLTETTYPE>::TemplateTet(const TemplateTet<NNODES,CELLTETTYPE> &tet)
: Cell(tet.getValue()) : Cell(tet.getValue())
{ {
_nodes = new Node*[NNODES]; _nodes = new Node*[NNODES];
...@@ -68,19 +68,19 @@ TemplateTet<NNODES,FEMTETTYPE>::TemplateTet(const TemplateTet<NNODES,FEMTETTYPE> ...@@ -68,19 +68,19 @@ TemplateTet<NNODES,FEMTETTYPE>::TemplateTet(const TemplateTet<NNODES,FEMTETTYPE>
_volume = tet.getVolume(); _volume = tet.getVolume();
} }
template <unsigned NNODES, FEMElemType::type FEMTETTYPE> template <unsigned NNODES, CellType::type CELLTETTYPE>
TemplateTet<NNODES,FEMTETTYPE>::~TemplateTet() TemplateTet<NNODES,CELLTETTYPE>::~TemplateTet()
{ {
} }
template <unsigned NNODES, FEMElemType::type FEMTETTYPE> template <unsigned NNODES, CellType::type CELLTETTYPE>
double TemplateTet<NNODES,FEMTETTYPE>::computeVolume() double TemplateTet<NNODES,CELLTETTYPE>::computeVolume()
{ {
return MathLib::calcTetrahedronVolume(_nodes[0]->getCoords(), _nodes[1]->getCoords(), _nodes[2]->getCoords(), _nodes[3]->getCoords()); return MathLib::calcTetrahedronVolume(_nodes[0]->getCoords(), _nodes[1]->getCoords(), _nodes[2]->getCoords(), _nodes[3]->getCoords());
} }
template <unsigned NNODES, FEMElemType::type FEMTETTYPE> template <unsigned NNODES, CellType::type CELLTETTYPE>
const Element* TemplateTet<NNODES,FEMTETTYPE>::getFace(unsigned i) const const Element* TemplateTet<NNODES,CELLTETTYPE>::getFace(unsigned i) const
{ {
if (i<this->getNFaces()) if (i<this->getNFaces())
{ {
...@@ -94,8 +94,8 @@ const Element* TemplateTet<NNODES,FEMTETTYPE>::getFace(unsigned i) const ...@@ -94,8 +94,8 @@ const Element* TemplateTet<NNODES,FEMTETTYPE>::getFace(unsigned i) const
return NULL; return NULL;
} }
template <unsigned NNODES, FEMElemType::type FEMTETTYPE> template <unsigned NNODES, CellType::type CELLTETTYPE>
bool TemplateTet<NNODES,FEMTETTYPE>::isEdge(unsigned idx1, unsigned idx2) const bool TemplateTet<NNODES,CELLTETTYPE>::isEdge(unsigned idx1, unsigned idx2) const
{ {
for (unsigned i(0); i<6; i++) for (unsigned i(0); i<6; i++)
{ {
...@@ -105,14 +105,14 @@ bool TemplateTet<NNODES,FEMTETTYPE>::isEdge(unsigned idx1, unsigned idx2) const ...@@ -105,14 +105,14 @@ bool TemplateTet<NNODES,FEMTETTYPE>::isEdge(unsigned idx1, unsigned idx2) const
return false; return false;
} }
template <unsigned NNODES, FEMElemType::type FEMTETTYPE> template <unsigned NNODES, CellType::type CELLTETTYPE>
Element* TemplateTet<NNODES,FEMTETTYPE>::clone() const Element* TemplateTet<NNODES,CELLTETTYPE>::clone() const
{ {
return new TemplateTet<NNODES,FEMTETTYPE>(*this); return new TemplateTet<NNODES,CELLTETTYPE>(*this);
} }
template <unsigned NNODES, FEMElemType::type FEMTETTYPE> template <unsigned NNODES, CellType::type CELLTETTYPE>
unsigned TemplateTet<NNODES,FEMTETTYPE>::identifyFace(Node* nodes[3]) const unsigned TemplateTet<NNODES,CELLTETTYPE>::identifyFace(Node* nodes[3]) const
{ {
for (unsigned i=0; i<4; i++) for (unsigned i=0; i<4; i++)
{ {
...@@ -127,8 +127,8 @@ unsigned TemplateTet<NNODES,FEMTETTYPE>::identifyFace(Node* nodes[3]) const ...@@ -127,8 +127,8 @@ unsigned TemplateTet<NNODES,FEMTETTYPE>::identifyFace(Node* nodes[3]) const
return std::numeric_limits<unsigned>::max(); return std::numeric_limits<unsigned>::max();
} }
template <unsigned NNODES, FEMElemType::type FEMTETTYPE> template <unsigned NNODES, CellType::type CELLTETTYPE>
Element* TemplateTet<NNODES,FEMTETTYPE>::reviseElement() const Element* TemplateTet<NNODES,CELLTETTYPE>::reviseElement() const
{ {
if (_nodes[0] == _nodes[1] || _nodes[1] == _nodes[2]) { if (_nodes[0] == _nodes[1] || _nodes[1] == _nodes[2]) {
MeshLib::Node** tri_nodes = new MeshLib::Node*[3]; MeshLib::Node** tri_nodes = new MeshLib::Node*[3];
......
...@@ -40,7 +40,7 @@ namespace MeshLib { ...@@ -40,7 +40,7 @@ namespace MeshLib {
* *
* @endcode * @endcode
*/ */
template <unsigned NNODES, FEMElemType::type FEMTRITYPE> template <unsigned NNODES, CellType::type CELLTRITYPE>
class TemplateTri : public Face class TemplateTri : public Face
{ {
public: public:
...@@ -73,9 +73,9 @@ public: ...@@ -73,9 +73,9 @@ public:
/** /**
* Get the type of the element in context of the finite element method. * Get the type of the element in context of the finite element method.
* @return a value of the enum FEMElemType::type * @return a value of the enum CellType::type
*/ */
virtual FEMElemType::type getFEMType() const { return FEMTRITYPE; } virtual CellType::type getCellType() const { return CELLTRITYPE; }
/// Returns true if these two indices form an edge and false otherwise /// Returns true if these two indices form an edge and false otherwise
bool isEdge(unsigned idx1, unsigned idx2) const; bool isEdge(unsigned idx1, unsigned idx2) const;
...@@ -86,7 +86,7 @@ public: ...@@ -86,7 +86,7 @@ public:
*/ */
virtual Element* clone() const virtual Element* clone() const
{ {
return new TemplateTri<NNODES,FEMTRITYPE>(*this); return new TemplateTri<NNODES,CELLTRITYPE>(*this);
} }
...@@ -120,8 +120,8 @@ protected: ...@@ -120,8 +120,8 @@ protected:
static const unsigned _edge_nodes[3][2]; static const unsigned _edge_nodes[3][2];
}; /* class */ }; /* class */
template <unsigned NNODES, FEMElemType::type FEMTRITYPE> template <unsigned NNODES, CellType::type CELLTRITYPE>
const unsigned TemplateTri<NNODES,FEMTRITYPE>::_edge_nodes[3][2] = { const unsigned TemplateTri<NNODES,CELLTRITYPE>::_edge_nodes[3][2] = {
{0, 1}, // Edge 0 {0, 1}, // Edge 0
{1, 2}, // Edge 1 {1, 2}, // Edge 1
{0, 2} // Edge 2 {0, 2} // Edge 2
......
...@@ -11,8 +11,8 @@ ...@@ -11,8 +11,8 @@
namespace MeshLib { namespace MeshLib {
template <unsigned NNODES, FEMElemType::type FEMTRITYPE> template <unsigned NNODES, CellType::type CELLTRITYPE>
TemplateTri<NNODES,FEMTRITYPE>::TemplateTri(Node* nodes[NNODES], unsigned value) : TemplateTri<NNODES,CELLTRITYPE>::TemplateTri(Node* nodes[NNODES], unsigned value) :
Face(value) Face(value)
{ {
_nodes = nodes; _nodes = nodes;
...@@ -22,8 +22,8 @@ TemplateTri<NNODES,FEMTRITYPE>::TemplateTri(Node* nodes[NNODES], unsigned value) ...@@ -22,8 +22,8 @@ TemplateTri<NNODES,FEMTRITYPE>::TemplateTri(Node* nodes[NNODES], unsigned value)
this->_area = this->computeVolume(); this->_area = this->computeVolume();
} }
template <unsigned NNODES, FEMElemType::type FEMTRITYPE> template <unsigned NNODES, CellType::type CELLTRITYPE>
TemplateTri<NNODES,FEMTRITYPE>::TemplateTri(const TemplateTri<NNODES,FEMTRITYPE> &tri) : TemplateTri<NNODES,CELLTRITYPE>::TemplateTri(const TemplateTri<NNODES,CELLTRITYPE> &tri) :
Face(tri.getValue()) Face(tri.getValue())
{ {
_nodes = new Node*[NNODES]; _nodes = new Node*[NNODES];
...@@ -40,12 +40,12 @@ TemplateTri<NNODES,FEMTRITYPE>::TemplateTri(const TemplateTri<NNODES,FEMTRITYPE> ...@@ -40,12 +40,12 @@ TemplateTri<NNODES,FEMTRITYPE>::TemplateTri(const TemplateTri<NNODES,FEMTRITYPE>
_area = tri.getArea(); _area = tri.getArea();
} }
template <unsigned NNODES, FEMElemType::type FEMTRITYPE> template <unsigned NNODES, CellType::type CELLTRITYPE>
TemplateTri<NNODES,FEMTRITYPE>::~TemplateTri() TemplateTri<NNODES,CELLTRITYPE>::~TemplateTri()
{} {}
template <unsigned NNODES, FEMElemType::type FEMTRITYPE> template <unsigned NNODES, CellType::type CELLTRITYPE>
bool TemplateTri<NNODES,FEMTRITYPE>::isEdge(unsigned idx1, unsigned idx2) const bool TemplateTri<NNODES,CELLTRITYPE>::isEdge(unsigned idx1, unsigned idx2) const
{ {
for (unsigned i(0); i<3; i++) for (unsigned i(0); i<3; i++)
{ {
...@@ -55,8 +55,8 @@ bool TemplateTri<NNODES,FEMTRITYPE>::isEdge(unsigned idx1, unsigned idx2) const ...@@ -55,8 +55,8 @@ bool TemplateTri<NNODES,FEMTRITYPE>::isEdge(unsigned idx1, unsigned idx2) const
return false; return false;
} }
template <unsigned NNODES, FEMElemType::type FEMTRITYPE> template <unsigned NNODES, CellType::type CELLTRITYPE>
Element* TemplateTri<NNODES,FEMTRITYPE>::reviseElement() const Element* TemplateTri<NNODES,CELLTRITYPE>::reviseElement() const
{ {
// try to create an edge // try to create an edge
if (_nodes[0] == _nodes[1] || _nodes[1] == _nodes[2]) { if (_nodes[0] == _nodes[1] || _nodes[1] == _nodes[2]) {
...@@ -76,8 +76,8 @@ Element* TemplateTri<NNODES,FEMTRITYPE>::reviseElement() const ...@@ -76,8 +76,8 @@ Element* TemplateTri<NNODES,FEMTRITYPE>::reviseElement() const
return NULL; return NULL;
} }
template <unsigned NNODES, FEMElemType::type FEMTRITYPE> template <unsigned NNODES, CellType::type CELLTRITYPE>
unsigned TemplateTri<NNODES,FEMTRITYPE>::identifyFace(Node* nodes[3]) const unsigned TemplateTri<NNODES,CELLTRITYPE>::identifyFace(Node* nodes[3]) const
{ {
for (unsigned i=0; i<3; i++) for (unsigned i=0; i<3; i++)
{ {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment