Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
iwr
dune-curvedgrid
Commits
8c42b86a
Commit
8c42b86a
authored
Mar 23, 2020
by
Praetorius, Simon
Browse files
added torus parametrization
parent
6eb075b8
Changes
5
Hide whitespace changes
Inline
Side-by-side
dune/curvedsurfacegrid/gridfunction/spheregridfunction.hh
View file @
8c42b86a
...
...
@@ -43,6 +43,26 @@ namespace Dune
return
out
;
};
}
//! normal vector = x/|x|
template
<
class
Domain
>
Domain
normal
(
const
Domain
&
x
)
const
{
return
x
/
x
.
two_norm
();
}
//! mean curvature of the sphere = 1/R
template
<
class
Domain
>
T
mean_curvature
(
const
Domain
&
/*x*/
)
const
{
return
T
(
1
)
/
radius_
;
}
//! surface area of the sphere = 4*pi*r^2
T
area
()
const
{
return
4
*
M_PI
*
radius_
*
radius_
;
}
};
//! construct a grid function representing a sphere parametrization
...
...
dune/curvedsurfacegrid/gridfunction/torusgridfunction.hh
View file @
8c42b86a
// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
// vi: set et ts=4 sw=2 sts=2:
#ifndef DUNE_CURVED_SURFACE_GRID_
SPHERE
_GRIDFUNCTION_HH
#define DUNE_CURVED_SURFACE_GRID_
SPHERE
_GRIDFUNCTION_HH
#ifndef DUNE_CURVED_SURFACE_GRID_
TORUS
_GRIDFUNCTION_HH
#define DUNE_CURVED_SURFACE_GRID_
TORUS
_GRIDFUNCTION_HH
#include
<type_traits>
...
...
@@ -49,9 +49,9 @@ namespace Dune
T
x0
=
x
[
0
]
*
x
[
0
],
x1
=
x
[
1
]
*
x
[
1
],
x2
=
x0
+
x1
,
x3
=
sqrt
(
x2
),
x4
=
T
(
1
)
/
x3
,
x5
=
r1
*
x4
;
T
x6
=
sqrt
(
x2
*
x2
*
x2
),
x7
=
r1
/
x6
,
x8
=
x0
*
x7
,
x9
=
T
(
1
)
-
x5
,
x10
=
x8
+
x9
;
T
x11
=
x
[
2
]
*
x
[
2
],
x12
=
x9
*
x9
,
x13
=
x0
*
x12
,
x14
=
x1
*
x12
,
x15
=
x11
+
x13
+
x14
;
T
x16
=
r2
/
sqrt
(
x15
),
x17
=
x1
*
x7
,
x18
=
sqrt
(
power
(
r2
*
(
x10
+
x17
)
/
x15
,
3
));
T
x16
=
r2
/
sqrt
(
x15
),
x17
=
x1
*
x7
,
x18
=
r2
*
(
x10
+
x17
)
/
sqrt
(
power
(
x15
,
3
));
T
x19
=
sqrt
(
power
(
x2
,
5
)),
x20
=
r1
*
x19
,
x21
=
x2
*
x2
,
x22
=
r1
*
x3
;
T
x23
=
x21
-
r1
*
x6
;
x24
=
r1
-
x3
,
x25
=
x24
*
x24
,
x26
=
x0
*
x25
+
x1
*
x25
+
x11
*
x2
;
T
x23
=
x21
-
r1
*
x6
,
x24
=
r1
-
x3
,
x25
=
x24
*
x24
,
x26
=
x0
*
x25
+
x1
*
x25
+
x11
*
x2
;
T
x27
=
x26
/
x2
,
x28
=
sqrt
(
x27
),
x29
=
r2
*
x25
*
x28
,
x30
=
x2
*
x2
*
x2
*
x29
,
x31
=
x26
*
x26
;
T
x32
=
sqrt
(
x27
*
x27
*
x27
),
x33
=
-
r1
*
r2
*
sqrt
(
power
(
x2
,
13
))
*
x32
+
r1
*
sqrt
(
power
(
x2
,
9
))
*
x31
;
T
x34
=
T
(
1
)
/
x31
,
x35
=
x
[
0
]
*
x
[
1
]
*
x34
/
power
(
x2
,
6
),
x36
=
r2
*
x
[
2
],
x37
=
x
[
0
]
*
x36
;
...
...
@@ -65,6 +65,30 @@ namespace Dune
};
};
}
// phi = (sqrt(x**2 + y**2) - r2)**2 + z**2 - r1**2
// N = grad(phi) / |grad(phi)|
template
<
class
Domain
>
Domain
normal
(
const
Domain
&
x
)
{
using
std
::
sqrt
;
T
x0
=
x
[
0
]
*
x
[
0
],
x1
=
x
[
1
]
*
x
[
1
],
x2
=
x0
+
x1
,
x3
=
sqrt
(
x2
),
x4
=
radius2_
-
x3
;
T
x5
=
x4
*
x4
,
x6
=
sqrt
((
x0
*
x5
+
x1
*
x5
+
x2
*
x
[
2
]
*
x
[
2
])
/
x2
),
x7
=
x4
/
(
x6
*
x3
);
return
{
-
x
[
0
]
*
x7
,
-
x
[
1
]
*
x7
,
x
[
2
]
/
x6
};
}
template
<
class
Domain
>
auto
mean_curvature
(
const
Domain
&
x
)
{
return
0.0
;
}
//! surface area of the torus = 4*pi^2*r1*r2
T
area
()
const
{
return
4
*
M_PI
*
M_PI
*
radius1_
*
radius2_
;
}
};
//! construct a grid function representing a torus parametrization
...
...
@@ -76,4 +100,4 @@ namespace Dune
}
// end namespace Dune
#endif // DUNE_CURVED_SURFACE_GRID_
SPHERE
_GRIDFUNCTION_HH
#endif // DUNE_CURVED_SURFACE_GRID_
TORUS
_GRIDFUNCTION_HH
dune/curvedsurfacegrid/test/convergence.cc
View file @
8c42b86a
...
...
@@ -7,29 +7,30 @@
#include
<iostream>
#include
<dune/common/parallel/mpihelper.hh>
// An initializer of MPI
#include
<dune/curvedsurfacegrid/curvedsurfacegrid.hh>
#include
<dune/curvedsurfacegrid/gridfunction/analyticgridfunction.hh>
#include
<dune/curvedsurfacegrid/gridfunction/spheregridfunction.hh>
#include
<dune/curvedsurfacegrid/gridfunction/torusgridfunction.hh>
#include
<dune/geometry/quadraturerules.hh>
#include
<dune/grid/io/file/gmshreader.hh>
#include
<dune/localfunctions/lagrange/pk.hh>
//#include <dune/grid/albertagrid.hh>
#include
<dune/foamgrid/foamgrid.hh>
#include
<dune/functions/common/differentiablefunctionfromcallables.hh>
//#include <dune/functions/gridfunctions/analyticgridviewfunction.hh>
#define STR(s) STR_HELPER(s)
#define STR_HELPER(s) #s
#define TORUS
const
int
order
=
4
;
const
int
quad_order
=
order
+
10
;
const
int
num_levels
=
5
;
// Test Hausdorf-distance
template
<
class
Grid
,
class
Projection
>
typename
Grid
::
ctype
inf_error
(
Grid
const
&
grid
,
Projection
const
&
projection
)
template
<
class
Grid
>
typename
Grid
::
ctype
inf_error
(
Grid
const
&
grid
)
{
using
QuadProvider
=
Dune
::
QuadratureRules
<
typename
Grid
::
ctype
,
2
>
;
typename
Grid
::
ctype
dist
=
0
;
auto
projection
=
grid
.
gridFunction
().
f
();
for
(
auto
const
&
element
:
elements
(
grid
.
leafGridView
()))
{
auto
geometry
=
element
.
geometry
();
...
...
@@ -46,11 +47,12 @@ typename Grid::ctype inf_error(Grid const& grid, Projection const& projection)
}
// Test integrated Hausdorf-distance
template
<
class
Grid
,
class
Projection
>
typename
Grid
::
ctype
L2_error
(
Grid
const
&
grid
,
Projection
const
&
projection
)
template
<
class
Grid
>
typename
Grid
::
ctype
L2_error
(
Grid
const
&
grid
)
{
using
QuadProvider
=
Dune
::
QuadratureRules
<
typename
Grid
::
ctype
,
2
>
;
typename
Grid
::
ctype
dist
=
0
;
auto
projection
=
grid
.
gridFunction
().
f
();
for
(
auto
const
&
element
:
elements
(
grid
.
leafGridView
()))
{
auto
geometry
=
element
.
geometry
();
...
...
@@ -67,11 +69,13 @@ typename Grid::ctype L2_error(Grid const& grid, Projection const& projection)
}
// Test integrated error in normal vectors
template
<
class
Grid
,
class
Projection
>
typename
Grid
::
ctype
normal_error
(
Grid
const
&
grid
,
Projection
const
&
projection
)
template
<
class
Grid
>
typename
Grid
::
ctype
normal_error
(
Grid
const
&
grid
)
{
using
QuadProvider
=
Dune
::
QuadratureRules
<
typename
Grid
::
ctype
,
2
>
;
typename
Grid
::
ctype
dist
=
0
;
auto
projection
=
grid
.
gridFunction
().
f
();
for
(
auto
const
&
element
:
elements
(
grid
.
leafGridView
()))
{
auto
geometry
=
element
.
geometry
();
...
...
@@ -90,8 +94,8 @@ typename Grid::ctype normal_error(Grid const& grid, Projection const& projection
}
// Test integrated error in mean curvature
template
<
class
Grid
,
class
Projection
>
typename
Grid
::
ctype
curvature_error
(
Grid
const
&
grid
,
Projection
const
&
projection
)
template
<
class
Grid
>
typename
Grid
::
ctype
curvature_error
(
Grid
const
&
grid
)
{
using
GlobalCoordinate
=
typename
Grid
::
template
Codim
<
0
>
::
Entity
::
Geometry
::
GlobalCoordinate
;
using
QuadProvider
=
Dune
::
QuadratureRules
<
typename
Grid
::
ctype
,
2
>
;
...
...
@@ -103,6 +107,8 @@ typename Grid::ctype curvature_error(Grid const& grid, Projection const& project
std
::
vector
<
GlobalCoordinate
>
gradients
;
std
::
vector
<
GlobalCoordinate
>
normals
;
auto
projection
=
grid
.
gridFunction
().
f
();
typename
Grid
::
ctype
dist
=
0
;
for
(
auto
const
&
element
:
elements
(
grid
.
leafGridView
()))
{
...
...
@@ -135,7 +141,8 @@ typename Grid::ctype curvature_error(Grid const& grid, Projection const& project
for
(
std
::
size_t
i
=
0
;
i
<
gradients
.
size
();
++
i
)
H
+=
normals
[
i
].
dot
(
gradients
[
i
]);
dist
+=
std
::
abs
(
H
-
2
)
*
qp
.
weight
()
*
geometry
.
integrationElement
(
qp
.
position
());
auto
H_sphere
=
projection
.
mean_curvature
(
geometry
.
global
(
qp
.
position
()));
dist
+=
std
::
abs
(
H
/
2
-
H_sphere
)
*
qp
.
weight
()
*
geometry
.
integrationElement
(
qp
.
position
());
}
}
...
...
@@ -161,38 +168,27 @@ int main(int argc, char** argv)
// using HostGrid = AlbertaGrid<2,3>;
using
HostGrid
=
FoamGrid
<
2
,
3
>
;
#if defined(SPHERE)
std
::
unique_ptr
<
HostGrid
>
hostGrid
=
GmshReader
<
HostGrid
>::
read
(
STR
(
DUNE_GRID_PATH
)
"sphere_coarse.msh"
);
using
Signature
=
FieldVector
<
double
,
3
>
(
FieldVector
<
double
,
3
>
);
auto
sphere
=
Functions
::
makeDifferentiableFunctionFromCallables
(
Functions
::
SignatureTag
<
Signature
>
{},
[](
auto
const
&
x
)
{
return
x
/
x
.
two_norm
();
},
[](
auto
const
&
x
)
{
double
nrm
=
x
.
two_norm
();
FieldMatrix
<
double
,
3
,
3
>
out
;
for
(
int
i
=
0
;
i
<
3
;
++
i
)
for
(
int
j
=
0
;
j
<
3
;
++
j
)
out
[
i
][
j
]
=
((
i
==
j
?
1
:
0
)
-
(
x
[
i
]
/
nrm
)
*
(
x
[
j
]
/
nrm
))
/
nrm
;
return
out
;
}
);
//auto sphereGridFct = Functions::makeAnalyticGridViewFunction(sphere, hostGrid->leafGridView());
auto
sphereGridFct
=
analyticGridFunction
<
HostGrid
>
(
sphere
);
using
Grid
=
CurvedSurfaceGrid
<
decltype
(
sphereGridFct
)
>
;
auto
sphereGridFct
=
sphereGridFunction
<
HostGrid
>
(
1.0
);
using
Grid
=
CurvedSurfaceGrid
<
decltype
(
sphereGridFct
),
4
>
;
Grid
grid
(
*
hostGrid
,
sphereGridFct
);
#elif defined(TORUS)
std
::
unique_ptr
<
HostGrid
>
hostGrid
=
GmshReader
<
HostGrid
>::
read
(
STR
(
DUNE_GRID_PATH
)
"torus.msh"
);
auto
torusGridFct
=
torusGridFunction
<
HostGrid
>
(
2.0
,
1.0
);
using
Grid
=
CurvedSurfaceGrid
<
decltype
(
torusGridFct
),
4
>
;
Grid
grid
(
*
hostGrid
,
torusGridFct
);
#endif
std
::
vector
<
typename
Grid
::
ctype
>
inf_errors
,
L2_errors
,
normal_errors
,
curvature_errors
,
edge_lengths
;
for
(
int
i
=
0
;
i
<
num_levels
;
++
i
)
{
if
(
i
>
0
)
grid
.
globalRefine
(
1
);
inf_errors
.
push_back
(
inf_error
(
grid
,
sphere
)
);
L2_errors
.
push_back
(
L2_error
(
grid
,
sphere
)
);
normal_errors
.
push_back
(
normal_error
(
grid
,
sphere
)
);
curvature_errors
.
push_back
(
curvature_error
(
grid
,
sphere
)
);
inf_errors
.
push_back
(
inf_error
(
grid
)
);
L2_errors
.
push_back
(
L2_error
(
grid
)
);
normal_errors
.
push_back
(
normal_error
(
grid
)
);
curvature_errors
.
push_back
(
curvature_error
(
grid
)
);
edge_lengths
.
push_back
(
edge_length
(
grid
)
);
}
...
...
example/torus.geo
0 → 100644
View file @
8c42b86a
//+
Point(1) = {0, 0, 0, 1.0};
//+
Point(2) = {2, 0, 0, 1.0};
//+
Point(3) = {-2, 0, 0, 1.0};
//+
Point(4) = {0, 2, 0, 1.0};
//+
Point(5) = {0, -2, 0, 1.0};
//+
Point(6) = {1, 0, 0, 1.0};
//+
Point(7) = {3, 0, 0, 1.0};
//+
Point(8) = {-1, 0, 0, 1.0};
//+
Point(9) = {-3, 0, 0, 1.0};
//+
Point(10) = {0, 1, 0, 1.0};
//+
Point(11) = {0, 3, 0, 1.0};
//+
Point(12) = {0, -1, 0, 1.0};
//+
Point(13) = {0, -3, 0, 1.0};
//+
Point(14) = {2, 0, 1, 1.0};
//+
Point(15) = {2, 0, -1, 1.0};
//+
Point(16) = {-2, 0, 1, 1.0};
//+
Point(17) = {-2, 0, -1, 1.0};
//+
Point(18) = {0, 2, 1, 1.0};
//+
Point(19) = {0, 2, -1, 1.0};
//+
Point(20) = {0, -2, 1, 1.0};
//+
Point(21) = {0, -2, -1, 1.0};
//+
Circle(1) = {7, 2, 14};
//+
Circle(2) = {14, 2, 6};
//+
Circle(3) = {6, 2, 15};
//+
Circle(4) = {15, 2, 7};
//+
Circle(5) = {9, 3, 16};
//+
Circle(6) = {16, 3, 8};
//+
Circle(7) = {8, 3, 17};
//+
Circle(8) = {17, 3, 9};
//+
Circle(9) = {11, 4, 18};
//+
Circle(10) = {18, 4, 10};
//+
Circle(11) = {10, 4, 19};
//+
Circle(12) = {19, 4, 11};
//+
Circle(13) = {13, 5, 20};
//+
Circle(14) = {20, 5, 12};
//+
Circle(15) = {12, 5, 21};
//+
Circle(16) = {21, 5, 13};
//+
Circle(17) = {12, 1, 6};
//+
Circle(18) = {6, 1, 10};
//+
Circle(19) = {10, 1, 8};
//+
Circle(20) = {8, 1, 12};
//+
Circle(21) = {7, 1, 11};
//+
Circle(22) = {11, 1, 9};
//+
Circle(23) = {9, 1, 13};
//+
Circle(24) = {13, 1, 7};
//+
Point(22) = {0, 0, 1, 1.0};
//+
Point(23) = {0, 0, -1, 1.0};
//+
Circle(25) = {14, 22, 18};
//+
Circle(26) = {18, 22, 16};
//+
Circle(27) = {16, 22, 20};
//+
Circle(28) = {20, 22, 14};
//+
Circle(29) = {15, 23, 19};
//+
Circle(30) = {19, 23, 17};
//+
Circle(31) = {17, 23, 21};
//+
Circle(32) = {21, 23, 15};
//+
Line Loop(1) = {25, -9, -21, 1};
//+
Surface(1) = {1};
//+
Line Loop(2) = {26, -5, -22, 9};
//+
Surface(2) = {2};
//+
Line Loop(3) = {27, -13, -23, 5};
//+
Surface(3) = {3};
//+
Line Loop(4) = {28, -1, -24, 13};
//+
Surface(4) = {4};
//+
Line Loop(5) = {21, -12, -29, 4};
//+
Surface(5) = {5};
//+
Line Loop(6) = {4, -24, -16, 32};
//+
Surface(6) = {6};
//+
Line Loop(7) = {16, -23, -8, 31};
//+
Surface(7) = {7};
//+
Line Loop(8) = {8, -22, -12, 30};
//+
Surface(8) = {8};
//+
Line Loop(9) = {30, -7, -19, 11};
//+
Surface(9) = {9};
//+
Line Loop(10) = {11, -29, -3, 18};
//+
Surface(10) = {10};
//+
Line Loop(11) = {3, -32, -15, 17};
//+
Surface(11) = {11};
//+
Line Loop(12) = {15, -31, -7, 20};
//+
Surface(12) = {12};
//+
Line Loop(13) = {20, -14, -27, 6};
//+
Surface(13) = {13};
//+
Line Loop(14) = {14, 17, -2, -28};
//+
Surface(14) = {14};
//+
Line Loop(15) = {2, 18, -10, -25};
//+
Surface(15) = {15};
//+
Line Loop(16) = {10, 19, -6, -26};
//+
Surface(16) = {16};
example/torus.msh
0 → 100644
View file @
8c42b86a
$MeshFormat
2.2 0 8
$EndMeshFormat
$Nodes
155
1 0 0 0
2 2 0 0
3 -2 0 0
4 0 2 0
5 0 -2 0
6 1 0 0
7 3 0 0
8 -1 0 0
9 -3 0 0
10 0 1 0
11 0 3 0
12 0 -1 0
13 0 -3 0
14 2 0 1
15 2 0 -1
16 -2 0 1
17 -2 0 -1
18 0 2 1
19 0 2 -1
20 0 -2 1
21 0 -2 -1
22 0 0 1
23 0 0 -1
24 2.707106781187844 0 0.7071067811852514
25 1.292893218814767 0 0.7071067811878623
26 1.292893218812007 0 -0.7071067811851022
27 2.707106781185225 0 -0.7071067811878706
28 -2.707106781187844 0 0.7071067811852514
29 -1.292893218814767 0 0.7071067811878623
30 -1.292893218812007 0 -0.7071067811851022
31 -2.707106781185225 0 -0.7071067811878706
32 0 2.707106781187844 0.7071067811852514
33 0 1.292893218814767 0.7071067811878623
34 0 1.292893218812007 -0.7071067811851022
35 0 2.707106781185225 -0.7071067811878706
36 0 -2.707106781187844 0.7071067811852514
37 0 -1.292893218814767 0.7071067811878623
38 0 -1.292893218812007 -0.7071067811851022
39 0 -2.707106781185225 -0.7071067811878706
40 0.707106781185206 -0.7071067811878892 0
41 0.7071067811878892 0.707106781185206 0
42 -0.707106781185206 0.7071067811878892 0
43 -0.7071067811878892 -0.707106781185206 0
44 2.853169548886248 0.9270509831224205 0
45 2.427050983127515 1.763355756873741 0
46 1.763355756881216 2.427050983122084 0
47 0.9270509831266447 2.853169548884875 0
48 -0.9270509831224205 2.853169548886248 0
49 -1.763355756873741 2.427050983127515 0
50 -2.427050983122084 1.763355756881216 0
51 -2.853169548884875 0.9270509831266447 0
52 -2.853169548886248 -0.9270509831224205 0
53 -2.427050983127515 -1.763355756873741 0
54 -1.763355756881216 -2.427050983122084 0
55 -0.9270509831266447 -2.853169548884875 0
56 0.9270509831224205 -2.853169548886248 0
57 1.763355756873741 -2.427050983127515 0
58 2.427050983122084 -1.763355756881216 0
59 2.853169548884875 -0.9270509831266447 0
60 1.84775906502338 0.765366864728233 1
61 1.414213562375778 1.414213562370412 1
62 0.765366864731742 1.847759065021926 1
63 -0.765366864728233 1.84775906502338 1
64 -1.414213562370412 1.414213562375778 1
65 -1.847759065021926 0.765366864731742 1
66 -1.84775906502338 -0.765366864728233 1
67 -1.414213562375778 -1.414213562370412 1
68 -0.765366864731742 -1.847759065021926 1
69 0.765366864728233 -1.84775906502338 1
70 1.414213562370412 -1.414213562375778 1
71 1.847759065021926 -0.765366864731742 1
72 1.84775906502338 0.765366864728233 -1
73 1.414213562375778 1.414213562370412 -1
74 0.765366864731742 1.847759065021926 -1
75 -0.765366864728233 1.84775906502338 -1
76 -1.414213562370412 1.414213562375778 -1
77 -1.847759065021926 0.765366864731742 -1
78 -1.84775906502338 -0.765366864728233 -1
79 -1.414213562375778 -1.414213562370412 -1
80 -0.765366864731742 -1.847759065021926 -1
81 0.765366864728233 -1.84775906502338 -1
82 1.414213562370412 -1.414213562375778 -1
83 1.847759065021926 -0.765366864731742 -1
84 2.256761916668028 1.393519944959817 0.7071067811865475
85 1.334041972098247 2.294044207478844 0.7071067811865475
86 1.93263800118319 1.953283852568877 0.5877852522924731
87 2.481399437256458 0.6301002387975739 0.809016994374732
88 0.6172986465386927 2.485134578607818 0.8090169943747321
89 -1.393519944959817 2.256761916668028 0.7071067811865475
90 -2.294044207478844 1.334041972098247 0.7071067811865475
91 -1.953283852568877 1.93263800118319 0.5877852522924731
92 -0.6301002387975739 2.481399437256458 0.809016994374732
93 -2.485134578607818 0.6172986465386927 0.8090169943747321
94 -2.256761916668028 -1.393519944959817 0.7071067811865475
95 -1.334041972098247 -2.294044207478844 0.7071067811865475
96 -1.93263800118319 -1.953283852568877 0.5877852522924731
97 -2.481399437256458 -0.6301002387975739 0.809016994374732
98 -0.6172986465386927 -2.485134578607818 0.8090169943747321
99 1.393519944959817 -2.256761916668028 0.7071067811865475
100 2.294044207478844 -1.334041972098247 0.7071067811865475
101 1.953283852568877 -1.93263800118319 0.5877852522924731
102 0.6301002387975739 -2.481399437256458 0.809016994374732
103 2.485134578607818 -0.6172986465386927 0.8090169943747321
104 2.256761916668028 1.393519944959817 -0.7071067811865477
105 1.334041972098247 2.294044207478844 -0.7071067811865475
106 1.93263800118319 1.953283852568877 -0.5877852522924731
107 2.481399437255894 0.6301002387974353 -0.8090169943751674
108 0.6172986465385571 2.485134578607252 -0.8090169943751674
109 1.393519944959817 -2.256761916668028 -0.7071067811865475
110 2.294044207478843 -1.334041972098247 -0.7071067811865477
111 1.953283852568877 -1.932638001183191 -0.587785252292473
112 0.6301002387974354 -2.481399437255894 -0.8090169943751676
113 2.485134578607252 -0.617298646538557 -0.8090169943751676
114 -2.256761916668028 -1.393519944959817 -0.7071067811865475
115 -1.334041972098247 -2.294044207478843 -0.7071067811865477
116 -1.932638001183191 -1.953283852568877 -0.587785252292473
117 -2.481399437255894 -0.6301002387974354 -0.8090169943751676
118 -0.617298646538557 -2.485134578607252 -0.8090169943751676
119 -1.393519944959817 2.256761916668028 -0.7071067811865475
120 -2.294044207478843 1.334041972098247 -0.7071067811865477
121 -1.953283852568877 1.932638001183191 -0.587785252292473
122 -0.6301002387974354 2.481399437255894 -0.8090169943751676
123 -2.485134578607252 0.617298646538557 -0.8090169943751676
124 -0.7429126824586613 1.179366135379631 -0.7518398074786405
125 -1.18231399064295 0.7535058031604537 -0.7589872812467737
126 -1.050969392999293 0.3788098644879105 -0.4002490705072542
127 -0.3769070614562796 1.050252288341556 -0.397748474526425
128 1.179366135379631 0.7429126824586614 -0.7518398074786404
129 0.7535058031604539 1.182313990642949 -0.7589872812467736
130 1.050252288341556 0.3769070614562796 -0.397748474526425
131 0.3788098644879104 1.050969392999293 -0.4002490705072542
132 0.7429126824586614 -1.179366135379631 -0.7518398074786404
133 1.182313990642949 -0.7535058031604539 -0.7589872812467736
134 1.050969392999293 -0.3788098644879104 -0.4002490705072542
135 0.3769070614562796 -1.050252288341556 -0.397748474526425
136 -1.179366135379631 -0.7429126824586614 -0.7518398074786404
137 -0.7535058031604539 -1.182313990642949 -0.7589872812467736
138 -1.050252288341556 -0.3769070614562796 -0.397748474526425
139 -0.3788098644879104 -1.050969392999293 -0.4002490705072542
140 -1.179366135380231 -0.7429126824590293 0.7518398074792839
141 -0.7535058031608894 -1.182313990643652 0.7589872812475151
142 -1.050252288342061 -0.3769070614564729 0.3977484745275441
143 -0.3788098644881118 -1.050969392999817 0.4002490705084094
144 0.7429126824590291 -1.179366135380232 0.751839807479284
145 1.182313990643652 -0.7535058031608894 0.7589872812475149
146 1.050969392999817 -0.3788098644881119 0.4002490705084094
147 0.376907061456473 -1.050252288342061 0.3977484745275444
148 1.179366135380232 0.7429126824590291 0.751839807479284
149 0.7535058031608894 1.182313990643652 0.7589872812475149
150 1.050252288342061 0.376907061456473 0.3977484745275444
151 0.3788098644881119 1.050969392999817 0.4002490705084094
152 -0.7429126824590291 1.179366135380232 0.751839807479284
153 -1.182313990643652 0.7535058031608894 0.7589872812475149
154 -1.050969392999817 0.3788098644881119 0.4002490705084094
155 -0.376907061456473 1.050252288342061 0.3977484745275444
$EndNodes
$Elements
411
1 15 2 0 1 1
2 15 2 0 2 2
3 15 2 0 3 3
4 15 2 0 4 4
5 15 2 0 5 5
6 15 2 0 6 6
7 15 2 0 7 7
8 15 2 0 8 8
9 15 2 0 9 9
10 15 2 0 10 10
11 15 2 0 11 11
12 15 2 0 12 12
13 15 2 0 13 13
14 15 2 0 14 14
15 15 2 0 15 15
16 15 2 0 16 16
17 15 2 0 17 17
18 15 2 0 18 18
19 15 2 0 19 19
20 15 2 0 20 20
21 15 2 0 21 21
22 15 2 0 22 22
23 15 2 0 23 23
24 1 2 0 1 7 24
25 1 2 0 1 24 14
26 1 2 0 2 14 25
27 1 2 0 2 25 6
28 1 2 0 3 6 26
29 1 2 0 3 26 15
30 1 2 0 4 15 27
31 1 2 0 4 27 7
32 1 2 0 5 9 28
33 1 2 0 5 28 16
34 1 2 0 6 16 29
35 1 2 0 6 29 8
36 1 2 0 7 8 30
37 1 2 0 7 30 17
38 1 2 0 8 17 31
39 1 2 0 8 31 9
40 1 2 0 9 11 32
41 1 2 0 9 32 18
42 1 2 0 10 18 33
43 1 2 0 10 33 10
44 1 2 0 11 10 34
45 1 2 0 11 34 19
46 1 2 0 12 19 35
47 1 2 0 12 35 11
48 1 2 0 13 13 36
49 1 2 0 13 36 20
50 1 2 0 14 20 37
51 1 2 0 14 37 12
52 1 2 0 15 12 38
53 1 2 0 15 38 21
54 1 2 0 16 21 39
55 1 2 0 16 39 13
56 1 2 0 17 12 40
57 1 2 0 17 40 6
58 1 2 0 18 6 41