Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
ElmerCSC
GitHub Repository: ElmerCSC/elmerfem
Path: blob/devel/meshgen2d/src/include/Layer.h
3203 views
1
#if !defined( BL_LAYER_H )
2
#define BL_LAYER_H
3
4
#include <map>
5
#include <vector>
6
#include <list>
7
8
#include "GeometryNode.h"
9
#include "GeometryEdge.h"
10
#include "Element.h"
11
#include "Border.h"
12
13
typedef std::map< int, Node * > NodeMap;
14
typedef std::map< int, Node * >::iterator NodeMapIt;
15
16
class Border;
17
18
class Layer
19
{
20
public:
21
Layer(const int t) { tag = t; }
22
~Layer() {}
23
24
void copyNodesAndEdgesFrom(std::vector< GeometryNode* >& nds, std::vector< GeometryEdge* >& eds)
25
{
26
nodes = nds; edges = eds;
27
}
28
29
void collectBoundaryElements(std::vector< BoundaryElement* >& elements)
30
{
31
bounds->collectBoundaryElements(elements);
32
}
33
34
void addFixedNode(GeometryNode *node)
35
{
36
nodes.push_back(node);
37
MeshNode *nd = new MeshNode(*node);
38
fixedGeometryNodes.push_back(nd);
39
}
40
41
virtual void sanityCheck() { }
42
43
virtual void initialize() = 0;
44
45
virtual void discretize(NodeMap& fixedNodes, NodeMap& allNodes,
46
std::list< Element* >& allElements) = 0;
47
virtual void setBounds( Border *bd ) { bounds = bd; }
48
49
protected:
50
int tag;
51
std::vector< GeometryNode* > nodes;
52
std::vector< Node* > fixedGeometryNodes;
53
std::vector< GeometryEdge* > edges;
54
std::vector< int > directions;
55
Border *bounds;
56
};
57
58
#endif /* BL_LAYER_H */
59
60