Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
/**
* Mesh.cpp
*
* Date: 2012/05/02
* Author: KR
*/
#include "Mesh.h"
#include "Node.h"
#include "Elements/Tri.h"
#include "Elements/Quad.h"
#include "Elements/Tet.h"
#include "Elements/Hex.h"
#include "Elements/Pyramid.h"
#include "Elements/Prism.h"
namespace MeshLib {
Mesh::Mesh(const std::string &name, const std::vector<Node*> &nodes, const std::vector<Element*> &elements)
: _name(name), _nodes(nodes), _elements(elements)
{
this->removeIdenticalNodes();
}
Mesh::Mesh(const Mesh &mesh)
: _name(mesh.getName()), _nodes(mesh.getNodes()), _elements(mesh.getElements())
{
}
Mesh::Mesh(const std::string &file_name)
{
// read mesh
this->removeIdenticalNodes();
}
Mesh::~Mesh()
{
const size_t nElements (_elements.size());
for (size_t i=0; i<nElements; i++)
delete _elements[i];
const size_t nNodes (_nodes.size());
for (size_t i=0; i<nNodes; i++)
delete _nodes[i];
}
void Mesh::removeIdenticalNodes()
{
//check for unique mesh nodes
}
void Mesh::addNode(Node* node)
{
_nodes.push_back(node);
}
void Mesh::addElement(Element* elem)
{
_elements.push_back(elem);
// add element informatin to nodes
size_t nNodes (elem->getNNodes());
for (size_t i=0; i<nNodes; i++)
elem->getNode(i)->addElement(elem);
}