Skip to content
Snippets Groups Projects
Commit 947bf9a3 authored by Thimo Neubauer's avatar Thimo Neubauer
Browse files

added internal grid check. Doesn't check much yet but the

infrastructure exists now

[[Imported from SVN: r1006]]
parent 9e866054
No related branches found
No related tags found
No related merge requests found
Showing
with 1690 additions and 14 deletions
# $Id$
# don't follow the full GNU-standard
AUTOMAKE_OPTIONS = foreign
# need automake >= 1.5
AUTOMAKE_OPTIONS = foreign 1.5
SUBDIRS = common fem grid operator solver lib istl doc m4
......
DUNE-library
============
[descriptional text missing]
Getting started
---------------
The easiest way to use Dune is to rename this directory "dune" if it
has a different name and tell the application about it. That's
it. Really. :)
To compile a small library Dune has to check several components of
your system. Run
./configure
to commence those tests. Don't worry about messages telling you that
libraries are missing: they are only needed for grid-self-checks we
need for developing.
You can use
./configure --prefix=PATH
if you don't want Dune to be installed into /usr/local
If you want to install the Dune-headers globally on your system run
the following as "root":
After configuration
./configure && make install
make
make install
build and install Dune (you may need root-permissions for the install
part depending on the prefix set)
License
-------
......
......@@ -10,11 +10,87 @@ following programs installed on your system:
libtool
Run the script
For the documentation to build you'll need doxygen and latex
installed.
Dune also features a self-test. As some grid-components (e.g. Albert,
UG) depend on external libraries their self-tests will only run if
those libraries are found. The pathes would then need to be passed via
--with-...= parameters.
Important! If you don't want to develop Dune itself you won't need to
provide external components! The Dune-library and -headers are
independent of other libraries, instead the applications can choose
what parts to use.
Getting started
---------------
If these preliminaries are met, you should run the script
./autogen.sh
to get a ./configure-script.
which calls the GNU autoconf/automake to create a ./configure-script
and the Makefiles. The configure-script is automatically called and
you're ready to perform a
make
to build the library and documentation. Dune can be installed into
your system via
make install
You can provide a --prefix=PATH parameter to autogen to install the
components into PATH/lib, PATH/include, ... instead of the default
/usr/local/lib, /usr/local/include
Passing options to ./configure
------------------------------
autogen.sh also calls the newly created configure-script to
conveniently pass on options about the used compiler. Thus you'll have
to provide autogen.sh any options you want configure to get, e.g.
./autogen.sh --with-albert=... --with-ug=...
Choosing the compiler and the options
-------------------------------------
The selection of the compiler works as follows: if --gnu or --intel is
passed to autogen it reads the content of gcc.opts or icc.opts to get
the default compiler flags. With the option --optim you can switch the
compiler-specific optimization parameters on.
If you want to change the compiler options to your favourites you can
either
- adapt the appropriate .opts-file and rerun autogen.sh. Please don't
commit this changed file to CVS if you're not sure if the options
work for everybody.
- copy an existing .opts-file to a new name, change the options and
use
./autogen.sh --opts=my.opts
More info
---------
See
./autogen.sh --help
and (if it exists)
./configure --help
for further options.
The full build-system is described in the doc/Buildsystem
$Id$
......
......@@ -88,7 +88,7 @@ libtoolize --force
# prepare everything
echo "--> aclocal..."
aclocal$AMVERS
aclocal$AMVERS -I m4
# applications should provide a config.h for now
#echo "--> autoheader..."
......
......@@ -9,6 +9,7 @@ AC_CONFIG_SRCDIR([grid/common/grid.hh])
# Checks for programs.
AC_PROG_CXX
AC_LANG_PUSH([C++])
# don't build shared libs per default, this is way better for debugging...
AC_DISABLE_SHARED
......@@ -21,6 +22,20 @@ AC_CHECK_PROGS([BIBTEX], [bibtex], [true])
AC_CHECK_PROGS([DVIPDF], [dvipdf], [true])
AC_CHECK_PROGS([DVIPS], [dvips], [true])
echo
echo Checking for libraries the self-test could use:
echo
# -- check for other grid-libs so that they may be included into tests
# Albert-check
DUNE_PATH_ALBERT
DUNE_PATH_ALBERTA
# UG-check
DUNE_PATH_UG
DUNE_PATH_AMIRAMESH
# Yaspgrid-check
DUNE_MPI
# create symlink for consistent paths even when $(top_srcdir) is not
# called dune/ (if filesystem/OS supports symlinks)
AC_PROG_LN_S
......@@ -61,6 +76,12 @@ fi
# preset variable to path such that #include <dune/...> works
AC_SUBST(AM_CPPFLAGS)
echo
echo Note: the libraries checked for above are only used for the self-test of Dune.
echo The library itself will build and the headers will work even if
echo Albert, UG, Amiramesh, MPI, etc. cannot be found.
echo
# write output
AC_CONFIG_FILES([Makefile
common/Makefile
......@@ -71,8 +92,11 @@ AC_CONFIG_FILES([Makefile
fem/operator/Makefile
grid/Makefile
grid/albertgrid/Makefile
grid/bsgrid/Makefile
grid/common/Makefile
grid/sgrid/Makefile
grid/test/Makefile
grid/uggrid/Makefile
grid/yaspgrid/Makefile
istl/Makefile
istl/doc/Makefile
......
# $Id$
SUBDIRS = albertgrid common sgrid yaspgrid
SUBDIRS = albertgrid bsgrid common sgrid uggrid yaspgrid . test
griddir = $(includedir)/dune/grid
grid_HEADERS = albertgrid.hh \
bsgrid.hh \
sgrid.hh \
simplegrid.hh \
uggrid.hh \
yaspgrid.hh
Makefile
Makefile.in
semantic.cache
\ No newline at end of file
# $Id$
bsgriddir = $(includedir)/dune/grid/bsgrid/
bsgrid_HEADERS = bsgrid.cc bsinclude.hh leafwalk.hh myautoptr.hh systemincludes.hh
Makefile
Makefile.in
.deps
.libs
test-albert
test-sgrid
test-ug
test-yaspgrid
semantic.cache
\ No newline at end of file
# $Id$
# need two lists because yaspgrid needs small shell-wrapper to start with MPI
PROGLIST = test-sgrid
RUNLIST = test-sgrid
if MPI
PROGLIST += test-yaspgrid
RUNLIST += run-yaspgrid
endif
if ALBERT
PROGLIST += test-albert
RUNLIST += test-albert
endif
# UGGrid needs AmiraMeshReader for now...
# !!! trick around to beat automake
if AMIRAMESH
DO_UGTEST = test-ug
else
DO_UGTEST =
endif
if UG
PROGLIST += $(DO_UGTEST)
RUNLIST += $(DO_UGTEST)
endif
# which tests to run
TESTS = $(RUNLIST)
# programs just to build when "make check" is used
check_PROGRAMS = $(PROGLIST)
# define the programs
test_sgrid_SOURCES = test-sgrid.cc
test_yaspgrid_SOURCES = test-yaspgrid.cc
test_yaspgrid_CPPFLAGS = $(AM_CPPFLAGS) $(MPI_CPPFLAGS)
# !! last lib a bit weird...
test_yaspgrid_LDFLAGS = $(MPI_LDFLAGS) $(MPI_LIBS) ../../common/libcommon.la
# this implicitly checks the autoconf-test as well...
test_albert_SOURCES = test-albert.cc
test_albert_CPPFLAGS = $(AM_CPPFLAGS) $(ALBERT_CPPFLAGS)
test_albert_LDFLAGS = $(ALBERT_LDFLAGS) $(ALBERT_LIBS)
test_ug_SOURCES = test-ug.cc
test_ug_CPPFLAGS = $(AM_CPPFLAGS) $(UG_CPPFLAGS) $(AMIRAMESH_CPPFLAGS)
test_ug_LDFLAGS = $(UG_LDFLAGS) $(UG_LIBS) $(AMIRAMESH_LDFLAGS) $(AMIRAMESH_LIBS)
DIM: 2
DIM_OF_WORLD: 2
number of elements: 2
number of vertices: 4
vertex coordinates:
0.0 0.0
1.0 0.0
1.0 1.0
0.0 1.0
element vertices:
2 0 1
0 2 3
element boundaries:
1 1 0
1 1 0
DIM: 3
DIM_OF_WORLD: 3
number of vertices: 8
number of elements: 6
vertex coordinates:
0.0 0.0 0.0
1.0 0.0 0.0
0.0 0.0 1.0
1.0 0.0 1.0
1.0 1.0 0.0
1.0 1.0 1.0
0.0 1.0 0.0
0.0 1.0 1.0
element vertices:
0 5 4 1
0 5 3 1
0 5 3 2
0 5 4 6
0 5 7 6
0 5 7 2
element boundaries:
1 1 0 0
1 1 0 0
1 1 0 0
1 1 0 0
1 1 0 0
1 1 0 0
element neighbours:
-1 -1 1 3
-1 -1 0 2
-1 -1 5 1
-1 -1 4 0
-1 -1 3 5
-1 -1 2 4
// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
// vi: set et ts=4 sw=2 sts=2:
// $Id$
/*
Implements a generic grid check
*/
template <class Grid>
void gridcheck (Grid &g) {
// internal check if interface is complete
g.checkIF();
};
#!/bin/sh
# run lamboot if possible
lamboot 2>&1 > /dev/null
# start test and abort on fail
set -e
mpirun -np 1 test-yaspgrid
set +e
# possibly stop LAM again
lamhalt 2>&1 > /dev/null
// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
// vi: set et ts=4 sw=2 sts=2:
// $Id$
/*
Instantiate Albert-Grid and feed it to the generic gridcheck()
Note: Albert needs the defines DIM and DIM_OF_WORLD on the
commandline anyway thus we can use them to select the correct class
*/
#include <iostream>
#include <sstream>
#include <dune/grid/albertgrid.hh>
#include "gridcheck.cc"
int main () {
try {
/* use grid-file appropriate for dimensions */
std::ostringstream filename;
filename << "albert-testgrid-" << DIM << "-" << DIM_OF_WORLD << ".al";
std::cout << std::endl << "AlbertGrid<" << DIM << "," << DIM_OF_WORLD
<< "> with grid file: " << filename.str()
<< std::endl << std::endl;
// extra-environment to check destruction
{
Dune::AlbertGrid<DIM,DIM_OF_WORLD> grid(filename.str().c_str());
gridcheck(grid);
};
} catch (Dune::Exception &e) {
std::cerr << e << std::endl;
return 1;
} catch (...) {
std::cerr << "Generic exception!" << std::endl;
return 2;
}
return 0;
};
// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
// vi: set et ts=4 sw=2 sts=2:
// $Id$
#include <iostream>
#include <dune/grid/sgrid.hh>
#include "gridcheck.cc"
int main () {
try {
int n[] = { 10, 10, 10 };
double h[] = { 1.0, 2.0, 3.0 };
// extra-environment to check destruction
{
std::cout << std::endl << "SGrid<2,2>" << std::endl << std::endl;
Dune::SGrid<2,2> g1(n, h);
gridcheck(g1);
};
{
std::cout << std::endl << "SGrid<3,3>" << std::endl << std::endl;
Dune::SGrid<3,3> g2(n, h);
gridcheck(g2);
};
} catch (Dune::Exception &e) {
std::cerr << e << std::endl;
return 1;
} catch (...) {
std::cerr << "Generic exception!" << std::endl;
return 2;
}
return 0;
};
// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
// vi: set et ts=4 sw=2 sts=2:
// $Id$
/*
Instantiate UG-Grid and feed it to the generic gridcheck()
Note: UG needs -D_2 or -D_3 defined anyway, use it to select correct
gridfile and class
Currently UGGrid can only be initialized via the AmiraMeshReader
*/
#include <iostream>
// transform define to value
#ifdef _2
static const int DIM = 2;
#else
static const int DIM = 3;
#endif
#include <dune/grid/uggrid.hh>
#include <dune/io/file/amirameshreader.hh>
#include "gridcheck.cc"
int main () {
try {
/* use grid-file appropriate for dimensions */
std::ostringstream filename;
filename << "ug-testgrid-" << DIM << ".am";
std::cout << std::endl << "UGGrid<" << DIM << "," << DIM
<< "> with grid file: " << filename.str()
<< std::endl << std::endl;
// extra-environment to check destruction
{
typedef Dune::UGGrid<DIM,DIM> Grid;
Grid grid;
Dune::AmiraMeshReader<Grid>::read(grid, filename.str());
gridcheck(grid);
};
} catch (Dune::Exception &e) {
std::cerr << e << std::endl;
return 1;
} catch (...) {
std::cerr << "Generic exception!" << std::endl;
return 2;
}
return 0;
};
// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
// vi: set et ts=4 sw=2 sts=2:
// $Id$
#include <iostream>
#include <dune/grid/yaspgrid.hh>
#include "gridcheck.cc"
template <int dim>
void check_yasp() {
typedef Dune::FieldVector<int,dim> iTupel;
typedef Dune::FieldVector<double,dim> fTupel;
typedef Dune::FieldVector<bool,dim> bTupel;
std::cout << std::endl << "YaspGrid<" << dim << "," << dim << ">"
<< std::endl << std::endl;
fTupel Len; Len = 1.0;
iTupel s; s = 10;
bTupel p; p = false;
int overlap = 1;
Dune::YaspGrid<dim,dim> grid(MPI_COMM_WORLD,Len,s,p,overlap);
gridcheck(grid);
};
int main (int argc , char **argv) {
try {
// initialize MPI
MPI_Init(&argc,&argv);
// get own rank
/* int rank;
MPI_Comm_rank(MPI_COMM_WORLD,&rank); */
check_yasp<2>();
check_yasp<3>();
} catch (Dune::Exception &e) {
std::cerr << e << std::endl;
return 1;
} catch (...) {
std::cerr << "Generic exception!" << std::endl;
return 2;
}
// Terminate MPI
MPI_Finalize();
return 0;
};
# AmiraMesh 3D ASCII 2.0
# CreationDate: Mon Jun 28 11:41:40 2004
nNodes 184
nTriangles 350
Parameters {
Materials {
Substrat1 {
Color 0.8 0.1 0.1
}
Substrat2 {
Color 0.1 0.1 0.8
}
}
ContentType "HxTriangularGrid",
CreateMagnitude 1
}
Nodes { float[2] Coordinates } @1
TriangleData { int[3] Nodes } @2
TriangleData { byte Materials } @3
# Data section follows
@1
-6.74712 -7.23423
-10 -10
-5 -10
-10 -5
-3.29672 -6.92638
-5.44939 -4.24873
0 -10
-7.33975 -2.17986
-2.30707 -4.13178
-10 0
-0.295065 -5.95143
-5.01616 -1.7186
-3.47772 -2.56409
-6.2583 0.060481
2.7777 -6.73409
-0.419931 -3.91606
5 -10
-2.1147 -2.47284
-6.8306 2.84988
-3.45931 -1.21214
-1.1336 -2.85857
-4.16406 -0.183054
1.46268 -4.0076
-10 5
-2.56818 -1.61737
6.44284 -6.43305
-4.23751 1.58408
0.158393 -2.63911
4.05796 -4.01423
-1.41226 -2.07143
-3.01335 -0.346542
10 -10
-6.44466 6.43386
-1.82522 -1.60806
-2.56939 -0.859834
-4.0637 4.01707
-0.73046 -1.93106
-3.05215 0.519542
1.34254 -2.32424
2.6174 -2.47719
6.82883 -2.84894
-10 10
10 -5
-2 -1
-2.62794 2.48432
-1.27643 -1.49457
-0.057279 -1.71607
-2.70823 1.33052
-2.40705 -0.39289
0.634644 -1.72502
-2.78232 6.73571
-2.47246 0.035811
4.2342 -1.58194
-5 10
-1.6 -1
1.92013 -1.60395
-2 -0.6
-1.47796 4.0131
-0.901469 -1.36127
10 0
-0.504954 -1.38233
-2.42626 0.776375
1.26566 -1.49211
-2.38698 0.4273
-1.93012 1.61307
2.70417 -1.32731
6.25716 -0.059932
0.238141 -1.33331
-1.73428 -0.747698
-2 -0.2
-1.2 -1
-1.3709 2.34565
0 10
-0.144485 -1.28641
0.287877 5.95276
-2 1
0.898961 -1.29792
-2 0.2
0.594455 -1.27146
1.6 -1
3.05079 -0.518581
-0.8 -1
4.16284 0.183609
2 -1
-1.41128 -0.703531
-2 0.6
-1.65962 -0.435143
7.33906 2.17994
-0.197616 2.64307
0.403381 3.91756
-0.4 -1
-1.28514 1.51612
1.2 -1
-1.6 1
0 -1
0.4 -1
2.42522 -0.775554
10 5
-1.55571 -0.000143
3.29413 6.92652
5.01489 1.71866
-1.01744 -0.679007
0.8 -1
-0.714791 1.80497
-1.73435 0.74761
1.73546 -0.747663
-1.65972 0.434956
3.0127 0.346763
2.2996 4.1315
-1.25534 -0.359754
-0.608933 -0.670481
1.41405 -0.703472
5 10
2.38652 -0.426954
1.11567 2.85598
2 -0.6
3.45803 1.21206
-1.2 1
-0.199917 -0.668009
5.44742 4.24866
2.47211 -0.035592
0.208158 -0.667996
-0.036356 1.65276
1.02238 -0.678945
-0.899959 1.33233
0.615908 -0.670439
-1.41141 0.703345
0.701443 1.91699
-1.25551 0.359352
-1.05787 -0.000284
-0.82841 -0.340841
6.74635 7.23424
1.66225 -0.435078
3.47451 2.56364
2.10716 2.47108
2.56876 0.859748
-0.501653 1.34002
2.40682 0.392941
2 -0.2
10 10
-0.408379 -0.335688
1.26162 -0.35965
0.007161 -0.334589
-0.8 1
1.39921 2.0665
-1.01764 0.678714
0.421583 -0.335641
0.838605 -0.340752
0.481727 1.36264
2.56561 1.61669
2 0.2
-0.828638 0.340261
-0.160087 1.24929
-0.622004 -0.000371
1.55984 -5.9e-05
0.137086 1.25302
1.26704 1.48987
2 0.6
0.889521 1.35363
1.82022 1.60611
-0.4 1
-0.20068 -0.000407
2 1
-0.609185 0.670108
0.216555 -0.000384
1.06709 -0.00017
0.635368 -0.000293
0.4 1
1.66212 0.435019
-0.408653 0.334999
0.8 1
0 1
1.2 1
1.6 1
1.73536 0.747644
1.26139 0.359454
-0.200209 0.667601
0.006857 0.333889
0.421274 0.335044
0.838323 0.340347
0.615608 0.670147
0.207849 0.667612
1.41387 0.703402
1.02212 0.678774
@2
1 2 3
1 4 2
1 3 5
6 4 1
6 1 5
5 3 7
6 8 4
6 5 9
8 10 4
11 5 7
9 5 11
12 8 6
6 9 13
12 6 13
10 8 14
11 7 15
14 8 12
9 11 16
15 7 17
13 9 18
10 14 19
20 12 13
16 21 9
9 21 18
14 12 22
11 15 23
11 23 16
19 24 10
20 22 12
25 13 18
15 17 26
20 13 25
27 19 14
27 14 22
16 28 21
23 15 29
23 28 16
30 18 21
29 15 26
20 31 22
26 17 32
19 33 24
18 34 25
20 25 35
36 19 27
18 30 34
35 31 20
37 21 28
38 27 22
36 33 19
37 30 21
39 28 23
22 31 38
23 29 40
29 26 41
33 42 24
26 32 43
39 23 40
25 34 44
25 44 35
36 27 45
41 26 43
46 34 30
37 28 47
37 46 30
38 48 27
35 49 31
28 39 50
36 51 33
45 27 48
52 38 31
29 53 40
29 41 53
28 50 47
33 54 42
49 52 31
34 55 44
56 39 40
46 55 34
35 44 57
51 54 33
58 36 45
49 35 57
37 59 46
41 43 60
37 47 61
58 51 36
62 48 38
63 50 39
52 64 38
37 61 59
39 56 63
65 45 48
40 53 66
53 41 67
56 40 66
64 62 38
50 68 47
69 44 55
60 67 41
69 57 44
49 70 52
71 55 46
72 58 45
49 57 70
71 46 59
51 73 54
65 72 45
47 74 61
75 51 58
48 62 76
47 68 74
48 76 65
63 77 50
78 64 52
50 79 68
56 80 63
75 73 51
70 78 52
81 66 53
61 82 59
53 67 83
50 77 79
66 84 56
69 55 85
55 71 85
64 86 62
82 71 59
87 57 69
70 57 87
60 88 67
81 53 83
72 89 58
56 84 80
75 58 90
86 76 62
91 61 74
64 78 86
72 65 92
93 77 63
91 82 61
65 76 94
63 80 93
68 95 74
58 89 90
87 69 85
68 79 96
97 66 81
88 60 98
66 97 84
70 99 78
75 100 73
65 94 92
67 101 83
102 71 82
70 87 99
67 88 101
85 71 102
68 96 95
77 103 79
74 95 91
89 72 104
105 76 86
92 104 72
106 80 84
107 86 78
83 108 81
93 103 77
109 75 90
105 94 76
79 103 96
110 87 85
111 82 91
107 78 99
109 100 75
112 93 80
100 113 73
114 97 81
90 89 115
102 82 111
110 99 87
110 85 102
116 84 97
105 86 107
112 80 106
117 83 101
92 94 118
91 95 119
120 88 98
106 84 116
117 108 83
101 88 120
121 81 108
122 95 96
90 115 109
121 114 81
89 104 123
124 103 93
91 119 111
92 125 104
96 103 126
127 94 105
114 116 97
112 124 93
120 100 109
128 115 89
118 125 92
107 99 129
119 95 122
105 107 127
127 118 94
130 99 110
128 89 123
102 131 110
96 126 122
102 111 131
132 113 100
120 98 132
106 133 112
117 101 134
120 132 100
126 103 124
106 116 133
101 120 134
130 129 99
109 115 135
136 108 117
129 127 107
120 109 134
104 137 123
104 125 137
138 121 108
114 139 116
132 98 140
130 110 131
141 111 119
139 114 121
142 124 112
134 109 135
136 138 108
141 131 111
143 119 122
132 140 113
142 112 133
118 144 125
133 116 139
128 145 115
127 146 118
145 135 115
147 122 126
148 126 124
128 123 149
117 134 150
129 146 127
141 119 143
117 150 136
125 144 137
146 144 118
138 151 121
151 139 121
130 152 129
143 122 147
137 153 123
148 124 142
154 130 131
150 134 135
147 126 148
141 154 131
133 139 155
152 146 129
123 156 149
128 157 145
133 155 142
138 136 158
123 153 156
128 149 159
154 152 130
135 145 160
137 144 161
128 159 157
155 139 151
135 160 150
162 141 143
138 158 151
150 163 136
153 137 161
164 144 146
165 143 147
166 148 142
136 163 158
162 154 141
157 160 145
152 164 146
167 147 148
166 142 155
161 144 164
162 143 165
168 149 156
150 160 163
151 169 155
154 170 152
151 158 169
149 171 159
165 147 167
153 172 156
167 148 166
153 161 172
170 164 152
162 170 154
168 171 149
173 157 159
157 174 160
175 158 163
156 172 168
160 174 163
166 155 176
176 155 169
161 164 177
169 158 175
171 173 159
173 174 157
162 165 178
170 162 178
177 172 161
170 177 164
165 167 179
175 163 174
167 166 180
181 171 168
182 168 172
166 176 180
178 165 179
178 177 170
179 167 180
169 175 183
184 173 171
176 169 183
174 173 183
182 172 177
182 181 168
183 175 174
184 171 181
178 182 177
178 179 182
184 180 176
183 173 184
181 179 180
181 182 179
176 183 184
184 181 180
@3
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
2
1
2
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
2
2
1
1
2
2
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
2
1
1
1
1
2
1
1
1
2
2
1
2
1
1
1
1
2
1
2
2
1
1
1
2
1
2
2
2
1
2
1
1
1
2
2
2
1
2
2
1
1
2
1
2
1
1
1
2
1
1
1
2
2
1
2
2
1
2
1
1
1
2
2
2
2
2
1
2
2
2
1
1
2
1
1
2
2
1
2
1
1
2
1
1
1
1
1
1
2
2
1
2
1
1
2
2
1
2
1
2
1
2
1
2
2
1
1
2
2
1
1
2
1
1
2
2
1
2
2
1
2
2
2
2
1
1
2
1
1
1
2
1
1
1
2
1
2
1
1
1
2
2
2
1
2
1
2
2
2
2
2
1
1
2
2
2
1
2
1
2
1
2
2
1
1
1
2
1
1
2
2
2
2
1
1
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
# AmiraMesh 3D ASCII 2.0
# CreationDate: Fri Mar 5 14:24:12 2004
nNodes 27
nTetrahedra 48
nBoundaryTriangles 48
Parameters {
Materials {
SoftTissue {
Id 1,
Color 0.93662 0.838517 0.778318,
PoissonsRatio 0.45,
YoungsModulus 250000
}
}
BoundaryIds {
Id0 {
Id 1,
Info "Neumann",
Type "Neumann",
Color 0.93662 0.838517 0.778318
}
Id1 {
Id 2,
Info "Neumann",
Type "Neumann",
Color 0.6 0.6 0.6
}
Id2 {
Color 0.6 0.6 0.6,
Id 3,
Info "Dirichlet",
Type "Dirichlet"
}
Id3 {
Id 4,
Color 0.6 0.6 0.6,
Info "Neumann",
Type "Neumann"
}
Id4 {
Color 0.6 0.6 0.6,
Id 5,
Info "Dirichlet",
Type "Dirichlet"
}
Id5 {
Id 6,
Color 0.6 0.6 0.6,
Info "Neumann",
Type "Neumann"
}
Name "BoundaryConditions"
}
UnitLength 0.01
}
Nodes { float[3] Coordinates } @1
Tetrahedra { int[4] Nodes } @2
TetrahedronData { byte Materials } @3
BoundaryTriangleData { byte Id } @4
BoundaryTriangles { int[3] Nodes } @5
# Data section follows
@1
-1 -1 1
-1 1 1
1 1 1
1 -1 1
-1 -1 -1
-1 1 -1
1 1 -1
1 -1 -1
0 1 1
0 1 0
-1 1 0
0 0 1
-1 0 0
-1 0 1
-1 0 -1
-1 -1 0
0 1 -1
0 0 -1
1 1 0
1 0 1
0 -1 0
0 -1 1
1 0 -1
0 -1 -1
1 0 0
1 -1 0
0 0 0
@2
14 1 13 12
14 2 9 11
12 3 10 9
13 6 11 10
10 11 13 14
14 9 10 11
14 10 12 13
10 12 9 14
12 1 13 16
12 3 27 10
16 5 15 27
13 6 10 15
27 10 13 12
13 15 10 27
13 27 12 16
27 16 13 15
27 3 19 10
27 5 15 18
10 6 17 15
19 7 18 17
17 18 19 27
27 15 17 18
27 17 10 19
17 10 15 27
12 1 16 22
12 3 20 27
22 4 21 20
16 5 27 21
21 27 16 12
12 20 21 27
12 21 22 16
21 22 20 12
21 4 26 25
21 5 18 24
25 7 23 18
26 8 24 23
23 24 26 21
21 18 23 24
21 23 25 26
23 25 18 21
20 3 19 27
20 4 21 25
27 5 18 21
19 7 25 18
27 20 25 19
25 27 19 18
25 20 27 21
27 18 25 21
@3
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
@4
1
1
1
1
4
4
4
4
3
3
3
3
4
4
4
4
5
5
5
5
1
1
1
1
2
2
2
2
3
3
3
3
5
5
5
5
6
6
6
6
2
2
2
2
6
6
6
6
@5
9 2 11
3 9 10
6 10 11
10 9 11
1 13 14
11 2 14
6 11 13
13 11 14
12 1 14
9 3 12
2 9 14
9 12 14
13 1 16
5 15 16
6 13 15
15 13 16
15 5 18
6 15 17
7 17 18
17 15 18
3 10 19
10 6 17
17 7 19
10 17 19
16 1 22
4 21 22
5 16 21
21 16 22
1 12 22
20 4 22
12 3 20
12 20 22
18 5 24
7 18 23
8 23 24
23 18 24
4 25 26
7 23 25
23 8 26
25 23 26
21 4 26
5 21 24
8 24 26
24 21 26
3 19 20
4 20 25
19 7 25
20 19 25
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