Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
ElmerCSC
GitHub Repository: ElmerCSC/elmerfem
Path: blob/devel/ElmerGUI/Application/plugins/elmergrid_api.cpp
3203 views
1
#include <iostream>
2
#include "elmergrid_api.h"
3
#include "egmain.h"
4
5
6
using namespace std;
7
8
ElmergridAPI::ElmergridAPI()
9
{
10
cout << "Constructing ElmergridAPI... done" << endl;
11
cout.flush();
12
}
13
14
15
ElmergridAPI::~ElmergridAPI()
16
{
17
cout << "Destructing ElmergridAPI... done" << endl;
18
cout.flush();
19
}
20
21
int ElmergridAPI::loadElmerMeshStructure(const char *filename)
22
{
23
int retval = eg_loadmesh(filename);
24
return retval;
25
}
26
27
28
int ElmergridAPI::createElmerMeshStructure(mesh_t *mesh,const char *options)
29
{
30
#if 1
31
int retval = eg_transfermesh(mesh,options);
32
return retval;
33
#else
34
// nodes:
35
mesh->nodes = 4;
36
mesh->node = new node_t[4];
37
node_t *n;
38
39
n = &mesh->node[0];
40
n->x[0] = 0.0;
41
n->x[1] = 0.0;
42
n->x[2] = 0.0;
43
n->index = -1;
44
45
n = &mesh->node[1];
46
n->x[0] = 1.0;
47
n->x[1] = 0.0;
48
n->x[2] = 0.0;
49
n->index = -1;
50
51
n = &mesh->node[2];
52
n->x[0] = 0.0;
53
n->x[1] = 1.0;
54
n->x[2] = 0.0;
55
n->index = -1;
56
57
n = &mesh->node[3];
58
n->x[0] = 0.0;
59
n->x[1] = 0.0;
60
n->x[2] = 1.0;
61
n->index = -1;
62
63
// elements:
64
mesh->elements = 1;
65
mesh->element = new element_t[1];
66
67
element_t *e;
68
69
e = &mesh->element[0];
70
e->code = 504;
71
e->nodes = 4;
72
e->node = new int[4];
73
e->node[0] = 0;
74
e->node[1] = 1;
75
e->node[2] = 2;
76
e->node[3] = 3;
77
e->index = 1;
78
79
// boundaryelements:
80
mesh->boundaryelements = 4;
81
mesh->boundaryelement = new boundaryelement_t[4];
82
83
boundaryelement_t *b;
84
85
b = &mesh->boundaryelement[0];
86
b->code = 303;
87
b->nodes = 3;
88
b->node = new int[3];
89
b->node[0] = 0;
90
b->node[1] = 1;
91
b->node[2] = 2;
92
b->edges = 3;
93
b->edge = new int[3];
94
b->edge[0] = -1;
95
b->edge[1] = -1;
96
b->edge[2] = -1;
97
b->elements = 0;
98
b->element = new int[2]; // reserve space for 2 (will be corrected)
99
b->index = 1;
100
101
b = &mesh->boundaryelement[1];
102
b->code = 303;
103
b->nodes = 3;
104
b->node = new int[3];
105
b->node[0] = 0;
106
b->node[1] = 1;
107
b->node[2] = 3;
108
b->edges = 3;
109
b->edge = new int[3];
110
b->edge[0] = -1;
111
b->edge[1] = -1;
112
b->edge[2] = -1;
113
b->elements = 0;
114
b->element = new int[2]; // reserve space for 2 (will be corrected)
115
b->index = 1;
116
117
b = &mesh->boundaryelement[2];
118
b->code = 303;
119
b->nodes = 3;
120
b->node = new int[3];
121
b->node[0] = 0;
122
b->node[1] = 2;
123
b->node[2] = 3;
124
b->edges = 3;
125
b->edge = new int[3];
126
b->edge[0] = -1;
127
b->edge[1] = -1;
128
b->edge[2] = -1;
129
b->elements = 0;
130
b->element = new int[2]; // reserve space for 2 (will be corrected)
131
b->index = 1;
132
133
b = &mesh->boundaryelement[3];
134
b->code = 303;
135
b->nodes = 3;
136
b->node = new int[3];
137
b->node[0] = 1;
138
b->node[1] = 2;
139
b->node[2] = 3;
140
b->edges = 3;
141
b->edge = new int[3];
142
b->edge[0] = -1;
143
b->edge[1] = -1;
144
b->edge[2] = -1;
145
b->elements = 0;
146
b->element = new int[2]; // reserve space for 2 (will be corrected)
147
b->index = 1;
148
149
cout << "ok, palautan nyt uuden verkon" << endl;
150
cout.flush();
151
#endif
152
}
153
154