Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Aland, Sebastian
amdis
Commits
173ee421
Commit
173ee421
authored
Feb 09, 2011
by
Thomas Witkowski
Browse files
Code revision in mesh refinement and coarsening.
parent
c417d753
Changes
15
Hide whitespace changes
Inline
Side-by-side
AMDiS/libtool
View file @
173ee421
...
...
@@ -30,10 +30,10 @@
# the same distribution terms that you use for the rest of that program.
# A sed program that does not truncate output.
SED
=
"/bin/sed"
SED
=
"/
usr/
bin/sed"
# Sed that helps us avoid accidentally triggering echo(1) options like -n.
Xsed
=
"/bin/sed -e 1s/^X//"
Xsed
=
"/
usr/
bin/sed -e 1s/^X//"
# The HP-UX ksh and POSIX shell print the target directory to stdout
# if CDPATH is set.
...
...
@@ -44,7 +44,7 @@ available_tags=" CXX F77"
# ### BEGIN LIBTOOL CONFIG
# Libtool was configured on host
NWRW15
:
# Libtool was configured on host
p1q024
:
# Shell to use when invoking shell scripts.
SHELL
=
"/bin/sh"
...
...
@@ -66,12 +66,12 @@ fast_install=yes
# The host system.
host_alias
=
host
=
i686-pc
-linux-gnu
host
=
x86_64-unknown
-linux-gnu
host_os
=
linux-gnu
# The build system.
build_alias
=
build
=
i686-pc
-linux-gnu
build
=
x86_64-unknown
-linux-gnu
build_os
=
linux-gnu
# An echo program that does not interpret backslashes.
...
...
@@ -82,13 +82,13 @@ AR="ar"
AR_FLAGS
=
"cru"
# A C compiler.
LTCC
=
"
g
cc"
LTCC
=
"
/licsoft/libraries/openmpi/1.2.6/64bit/bin/mpi
cc"
# LTCC compiler flags.
LTCFLAGS
=
"-g -O2"
# A language-specific compiler.
CC
=
"
g
cc"
CC
=
"
/licsoft/libraries/openmpi/1.2.6/64bit/bin/mpi
cc"
# Is the compiler the GNU C compiler?
with_gcc
=
yes
...
...
@@ -97,7 +97,7 @@ with_gcc=yes
EGREP
=
"grep -E"
# The linker used to build libraries.
LD
=
"/usr/
bin/ld
"
LD
=
"/usr/
x86_64-suse-linux/bin/ld -m elf_x86_64
"
# Whether we need hard or soft links.
LN_S
=
"ln -s"
...
...
@@ -171,7 +171,7 @@ dlopen_self=unknown
dlopen_self_static
=
unknown
# Compiler flag to prevent dynamic linking.
link_static_flag
=
"
-static
"
link_static_flag
=
""
# Compiler flag to turn off builtin functions.
no_builtin_flag
=
" -fno-builtin"
...
...
@@ -325,10 +325,10 @@ variables_saved_for_relink="PATH LD_LIBRARY_PATH LD_RUN_PATH GCC_EXEC_PREFIX COM
link_all_deplibs
=
unknown
# Compile-time system search path for libraries
sys_lib_search_path_spec
=
" /
u/witkowski/local/lib/i386-redhat-linux/4.1.2/ /u/witkowski/local/lib/ /u/witkowski/local/intel/mkl/10.0.1.014/lib/32/i386-redhat-linux/4.1.2/ /u/witkowski/local/intel/mkl/10.0.1.014/lib/3
2/ /usr/lib/gcc/
i386-redhat
-linux/4.1.2/
/usr/lib/gcc/i386-redhat
-linux/4.1.2/ /usr/lib/gcc/
i386-redhat
-linux/4.1.2/../../../../
i386-redhat-linux/lib/i386-redhat-linux/4.1.2
/ /usr/lib/gcc/
i386-redhat
-linux/4.1.2/../../../
../i386-redhat
-linux/
lib
/ /usr/lib/gcc/
i386-redhat
-linux/4.1.2/../../../
i386-redhat-linux/4.1.2/ /usr/lib/gcc/i386-redhat-linux/4.1.2/../../../ /lib/i386-redhat-linux/4.1.2/ /lib/ /usr/lib/i386-redhat-linux/4.1.2
/ /usr/lib/"
sys_lib_search_path_spec
=
" /
fastfs/wir/local/lib/x86_64-suse-linux/4.1.2/ /fastfs/wir/local/lib/../lib64/ /usr/lib64/gcc/x86_64-suse-linux/4.1.2/ /usr/lib/gcc/x86_64-suse-linux/4.1.
2/ /usr/lib
64
/gcc/
x86_64-suse
-linux/4.1.2/
../../../../x86_64-suse-linux/lib/x86_64-suse
-linux/4.1.2/ /usr/lib
64
/gcc/
x86_64-suse
-linux/4.1.2/../../../../
x86_64-suse-linux/lib/../lib64
/ /usr/lib
64
/gcc/
x86_64-suse
-linux/4.1.2/../../../
x86_64-suse
-linux/
4.1.2
/ /usr/lib
64
/gcc/
x86_64-suse
-linux/4.1.2/../../../
../lib64/ /lib/x86_64-suse-linux/4.1.2/ /lib/../lib64/ /usr/lib/x86_64-suse-linux/4.1.2/ /usr/lib/../lib64/ /fastfs/wir/local/lib/ /usr/lib64/gcc/x86_64-suse-linux/4.1.2/../../../../x86_64-suse-linux/lib/ /usr/lib64/gcc/x86_64-suse-linux/4.1.2/../../../ /lib
/ /usr/lib/"
# Run-time system search path for libraries
sys_lib_dlsearch_path_spec
=
"/lib /usr/lib /usr/
lib/mysql /usr/lib/octave-2.9.9 /usr/lib/qt-3.3/lib /usr/lib/qt4/lib /usr/lib/xulrunner-1.9.2
"
sys_lib_dlsearch_path_spec
=
"/lib /usr/lib /usr/
X11R6/lib64/Xaw3d /usr/X11R6/lib64 /usr/X11R6/lib/Xaw3d /usr/X11R6/lib /usr/x86_64-suse-linux/lib /usr/local/lib64 /usr/local/lib /opt/kde3/lib64 /opt/kde3/lib /opt/gnome/lib64 /opt/gnome/lib /lib64 /lib /usr/lib64 /usr/lib /opt/cluster/intel/cce/9.1.042/lib /opt/cluster/intel/fce/9.1.036/lib /opt/cluster/Pathscale3.0/lib/2.9.99 /opt/cluster/Pathscale3.0/lib/2.9.99/32 /work/licsoft/compilers/pgi/linux86-64/6.2/lib /work/licsoft/compilers/pgi/linux86-64/6.2/libso
"
# Fix the shell variable $srcfile for the compiler.
fix_srcfile_path
=
""
...
...
@@ -6760,7 +6760,7 @@ build_old_libs=`case $build_libtool_libs in yes) $echo no;; *) $echo yes;; esac`
# End:
# ### BEGIN LIBTOOL TAG CONFIG: CXX
# Libtool was configured on host
NWRW15
:
# Libtool was configured on host
p1q024
:
# Shell to use when invoking shell scripts.
SHELL
=
"/bin/sh"
...
...
@@ -6782,12 +6782,12 @@ fast_install=yes
# The host system.
host_alias
=
host
=
i686-pc
-linux-gnu
host
=
x86_64-unknown
-linux-gnu
host_os
=
linux-gnu
# The build system.
build_alias
=
build
=
i686-pc
-linux-gnu
build
=
x86_64-unknown
-linux-gnu
build_os
=
linux-gnu
# An echo program that does not interpret backslashes.
...
...
@@ -6798,13 +6798,13 @@ AR="ar"
AR_FLAGS
=
"cru"
# A C compiler.
LTCC
=
"
g
cc"
LTCC
=
"
/licsoft/libraries/openmpi/1.2.6/64bit/bin/mpi
cc"
# LTCC compiler flags.
LTCFLAGS
=
"-g -O2"
# A language-specific compiler.
CC
=
"
g++
"
CC
=
"
/licsoft/libraries/openmpi/1.2.6/64bit/bin/mpicxx
"
# Is the compiler the GNU C compiler?
with_gcc
=
yes
...
...
@@ -6813,7 +6813,7 @@ with_gcc=yes
EGREP
=
"grep -E"
# The linker used to build libraries.
LD
=
"/usr/
bin/ld
"
LD
=
"/usr/
x86_64-suse-linux/bin/ld -m elf_x86_64
"
# Whether we need hard or soft links.
LN_S
=
"ln -s"
...
...
@@ -6887,7 +6887,7 @@ dlopen_self=unknown
dlopen_self_static
=
unknown
# Compiler flag to prevent dynamic linking.
link_static_flag
=
"
-static
"
link_static_flag
=
""
# Compiler flag to turn off builtin functions.
no_builtin_flag
=
" -fno-builtin"
...
...
@@ -6942,11 +6942,11 @@ striplib="strip --strip-unneeded"
# Dependencies to place before the objects being linked to create a
# shared library.
predep_objects
=
"/usr/lib/gcc/
i386-redhat
-linux/4.1.2/../../../crti.o /usr/lib/gcc/
i386-redhat
-linux/4.1.2/crtbeginS.o"
predep_objects
=
"/usr/lib
64
/gcc/
x86_64-suse
-linux/4.1.2/../../../
../lib64/
crti.o /usr/lib
64
/gcc/
x86_64-suse
-linux/4.1.2/crtbeginS.o"
# Dependencies to place after the objects being linked to create a
# shared library.
postdep_objects
=
"/usr/lib/gcc/
i386-redhat
-linux/4.1.2/crtendS.o /usr/lib/gcc/
i386-redhat
-linux/4.1.2/../../../crtn.o"
postdep_objects
=
"/usr/lib
64
/gcc/
x86_64-suse
-linux/4.1.2/crtendS.o /usr/lib
64
/gcc/
x86_64-suse
-linux/4.1.2/../../../
../lib64/
crtn.o"
# Dependencies to place before the objects being linked to create a
# shared library.
...
...
@@ -6954,11 +6954,11 @@ predeps=""
# Dependencies to place after the objects being linked to create a
# shared library.
postdeps
=
"-lstdc++ -lm -lgcc_s -lc -lgcc_s"
postdeps
=
"
-lmpi_cxx -lmpi -lopen-rte -lopen-pal -libverbs -lrt -lnuma -ldl -lnsl -lutil -ldl
-lstdc++ -lm -lgcc_s
-lpthread
-lc -lgcc_s"
# The library search path used internally by the compiler when linking
# a shared library.
compiler_lib_search_path
=
"-L/u
/witkowski/local
/lib -L/
u/witkowski/local/intel/mkl/10.0.1.014/lib/3
2 -L/usr/lib/gcc/
i386-redhat
-linux/4.1.2
-L/usr/lib/gcc/i386-redhat-linux/4.1.2
-L/usr/lib/gcc/
i386-redhat
-linux/4.1.2/../../.."
compiler_lib_search_path
=
"-L/u
sr
/lib
64
-L/
licsoft/libraries/openmpi/1.2.6/64bit/lib -L/usr/lib64/gcc/x86_64-suse-linux/4.1.
2 -L/usr/lib
64
/gcc/
x86_64-suse
-linux/4.1.2
/../../../../lib64 -L/lib/../lib64 -L/usr/lib/../lib64 -L/fastfs/wir/local/lib -L/usr/lib64/gcc/x86_64-suse-linux/4.1.2/../../../../x86_64-suse-linux/lib
-L/usr/lib
64
/gcc/
x86_64-suse
-linux/4.1.2/../../.."
# Method to check whether dependent libraries are shared objects.
deplibs_check_method
=
"pass_all"
...
...
@@ -7038,10 +7038,10 @@ variables_saved_for_relink="PATH LD_LIBRARY_PATH LD_RUN_PATH GCC_EXEC_PREFIX COM
link_all_deplibs
=
unknown
# Compile-time system search path for libraries
sys_lib_search_path_spec
=
" /
u/witkowski/local/lib/i386-redhat-linux/4.1.2/ /u/witkowski/local/lib/ /u/witkowski/local/intel/mkl/10.0.1.014/lib/32/i386-redhat-linux/4.1.2/ /u/witkowski/local/intel/mkl/10.0.1.014/lib/3
2/ /usr/lib/gcc/
i386-redhat
-linux/4.1.2/
/usr/lib/gcc/i386-redhat
-linux/4.1.2/ /usr/lib/gcc/
i386-redhat
-linux/4.1.2/../../../../
i386-redhat-linux/lib/i386-redhat-linux/4.1.2
/ /usr/lib/gcc/
i386-redhat
-linux/4.1.2/../../../
../i386-redhat
-linux/
lib
/ /usr/lib/gcc/
i386-redhat
-linux/4.1.2/../../../
i386-redhat-linux/4.1.2/ /usr/lib/gcc/i386-redhat-linux/4.1.2/../../../ /lib/i386-redhat-linux/4.1.2/ /lib/ /usr/lib/i386-redhat-linux/4.1.2
/ /usr/lib/"
sys_lib_search_path_spec
=
" /
fastfs/wir/local/lib/x86_64-suse-linux/4.1.2/ /fastfs/wir/local/lib/../lib64/ /usr/lib64/gcc/x86_64-suse-linux/4.1.2/ /usr/lib/gcc/x86_64-suse-linux/4.1.
2/ /usr/lib
64
/gcc/
x86_64-suse
-linux/4.1.2/
../../../../x86_64-suse-linux/lib/x86_64-suse
-linux/4.1.2/ /usr/lib
64
/gcc/
x86_64-suse
-linux/4.1.2/../../../../
x86_64-suse-linux/lib/../lib64
/ /usr/lib
64
/gcc/
x86_64-suse
-linux/4.1.2/../../../
x86_64-suse
-linux/
4.1.2
/ /usr/lib
64
/gcc/
x86_64-suse
-linux/4.1.2/../../../
../lib64/ /lib/x86_64-suse-linux/4.1.2/ /lib/../lib64/ /usr/lib/x86_64-suse-linux/4.1.2/ /usr/lib/../lib64/ /fastfs/wir/local/lib/ /usr/lib64/gcc/x86_64-suse-linux/4.1.2/../../../../x86_64-suse-linux/lib/ /usr/lib64/gcc/x86_64-suse-linux/4.1.2/../../../ /lib
/ /usr/lib/"
# Run-time system search path for libraries
sys_lib_dlsearch_path_spec
=
"/lib /usr/lib /usr/
lib/mysql /usr/lib/octave-2.9.9 /usr/lib/qt-3.3/lib /usr/lib/qt4/lib /usr/lib/xulrunner-1.9.2
"
sys_lib_dlsearch_path_spec
=
"/lib /usr/lib /usr/
X11R6/lib64/Xaw3d /usr/X11R6/lib64 /usr/X11R6/lib/Xaw3d /usr/X11R6/lib /usr/x86_64-suse-linux/lib /usr/local/lib64 /usr/local/lib /opt/kde3/lib64 /opt/kde3/lib /opt/gnome/lib64 /opt/gnome/lib /lib64 /lib /usr/lib64 /usr/lib /opt/cluster/intel/cce/9.1.042/lib /opt/cluster/intel/fce/9.1.036/lib /opt/cluster/Pathscale3.0/lib/2.9.99 /opt/cluster/Pathscale3.0/lib/2.9.99/32 /work/licsoft/compilers/pgi/linux86-64/6.2/lib /work/licsoft/compilers/pgi/linux86-64/6.2/libso
"
# Fix the shell variable $srcfile for the compiler.
fix_srcfile_path
=
""
...
...
@@ -7065,7 +7065,7 @@ include_expsyms=""
# ### BEGIN LIBTOOL TAG CONFIG: F77
# Libtool was configured on host
NWRW15
:
# Libtool was configured on host
p1q024
:
# Shell to use when invoking shell scripts.
SHELL
=
"/bin/sh"
...
...
@@ -7087,12 +7087,12 @@ fast_install=yes
# The host system.
host_alias
=
host
=
i686-pc
-linux-gnu
host
=
x86_64-unknown
-linux-gnu
host_os
=
linux-gnu
# The build system.
build_alias
=
build
=
i686-pc
-linux-gnu
build
=
x86_64-unknown
-linux-gnu
build_os
=
linux-gnu
# An echo program that does not interpret backslashes.
...
...
@@ -7103,7 +7103,7 @@ AR="ar"
AR_FLAGS
=
"cru"
# A C compiler.
LTCC
=
"
g
cc"
LTCC
=
"
/licsoft/libraries/openmpi/1.2.6/64bit/bin/mpi
cc"
# LTCC compiler flags.
LTCFLAGS
=
"-g -O2"
...
...
@@ -7112,13 +7112,13 @@ LTCFLAGS="-g -O2"
CC
=
"g77"
# Is the compiler the GNU C compiler?
with_gcc
=
yes
with_gcc
=
# An ERE matcher.
EGREP
=
"grep -E"
# The linker used to build libraries.
LD
=
"/usr/
bin/ld
"
LD
=
"/usr/
x86_64-suse-linux/bin/ld -m elf_x86_64
"
# Whether we need hard or soft links.
LN_S
=
"ln -s"
...
...
@@ -7346,10 +7346,10 @@ variables_saved_for_relink="PATH LD_LIBRARY_PATH LD_RUN_PATH GCC_EXEC_PREFIX COM
link_all_deplibs
=
unknown
# Compile-time system search path for libraries
sys_lib_search_path_spec
=
" /
u/witkowski/local/lib/i386-redhat-linux/3.4.6/ /u/witkowski/local/lib/ /u/witkowski/local/intel/mkl/10.0.1.014/lib/32/i386-redhat-linux/3.4.6/ /u/witkowski/local/intel/mkl/10.0.1.014/lib/32
/ /usr/lib/gcc
/i386-redhat
-linux/3.
4.6
/ /usr/lib/gcc/
i386-redhat
-linux/3.
4.6
/ /usr/lib/gcc
/i386-redhat
-linux/3.
4.6
/../../../../
i386-redhat-linux/lib/i386-redhat
-linux/3.
4.6
/ /usr/lib/gcc
/i386-redhat
-linux/3.
4.6
/../../../../
i386-redhat
-linux/lib/ /usr/lib/gcc
/i386-redhat
-linux/3.
4.6
/../../../
i386-redhat
-linux/3.
4.6
/ /usr/lib/gcc
/i386-redhat
-linux/3.
4.6
/../../../ /lib/
i386-redhat
-linux/3.
4.6
/ /lib/ /usr/lib/
i386-redhat
-linux/3.
4.6
/ /usr/lib/"
sys_lib_search_path_spec
=
" /
fastfs/wir/local/lib/x86_64-suse-linux/3.3.5/ /fastfs/wir/local/lib
/ /usr/lib
64
/gcc
-lib/x86_64-suse
-linux/3.
3.5
/ /usr/lib/gcc/
x86_64-suse
-linux/3.
3.5
/ /usr/lib
64
/gcc
-lib/x86_64-suse
-linux/3.
3.5
/../../../../
x86_64-suse-linux/lib/x86_64-suse
-linux/3.
3.5
/ /usr/lib
64
/gcc
-lib/x86_64-suse
-linux/3.
3.5
/../../../../
x86_64-suse
-linux/lib/ /usr/lib
64
/gcc
-lib/x86_64-suse
-linux/3.
3.5
/../../../
x86_64-suse
-linux/3.
3.5
/ /usr/lib
64
/gcc
-lib/x86_64-suse
-linux/3.
3.5
/../../../ /lib/
x86_64-suse
-linux/3.
3.5
/ /lib/ /usr/lib/
x86_64-suse
-linux/3.
3.5
/ /usr/lib/"
# Run-time system search path for libraries
sys_lib_dlsearch_path_spec
=
"/lib /usr/lib /usr/
lib/mysql /usr/lib/octave-2.9.9 /usr/lib/qt-3.3/lib /usr/lib/qt4/lib /usr/lib/xulrunner-1.9.2
"
sys_lib_dlsearch_path_spec
=
"/lib /usr/lib /usr/
X11R6/lib64/Xaw3d /usr/X11R6/lib64 /usr/X11R6/lib/Xaw3d /usr/X11R6/lib /usr/x86_64-suse-linux/lib /usr/local/lib64 /usr/local/lib /opt/kde3/lib64 /opt/kde3/lib /opt/gnome/lib64 /opt/gnome/lib /lib64 /lib /usr/lib64 /usr/lib /opt/cluster/intel/cce/9.1.042/lib /opt/cluster/intel/fce/9.1.036/lib /opt/cluster/Pathscale3.0/lib/2.9.99 /opt/cluster/Pathscale3.0/lib/2.9.99/32 /work/licsoft/compilers/pgi/linux86-64/6.2/lib /work/licsoft/compilers/pgi/linux86-64/6.2/libso
"
# Fix the shell variable $srcfile for the compiler.
fix_srcfile_path
=
""
...
...
AMDiS/src/CoarseningManager.h
View file @
173ee421
...
...
@@ -72,16 +72,8 @@ namespace AMDiS {
protected:
/** \brief
* If the mesh is coarsened by non recurisive traversal, this method
* spezifies
* how one element of the mesh is coarsened. The method can be overriden
* by sub classes, if used.
*/
virtual
int
coarsenFunction
(
ElInfo
*
)
{
return
0
;
}
/// Defines the way how one element of the mesh is coarsen.
virtual
void
coarsenFunction
(
ElInfo
*
)
{}
/** \brief
* Propagate coarsening information over the whole hierarchy
...
...
AMDiS/src/CoarseningManager1d.h
View file @
173ee421
...
...
@@ -50,11 +50,10 @@ namespace AMDiS {
protected:
/// Not needed in this sub class
int
coarsenFunction
(
ElInfo
*
)
void
coarsenFunction
(
ElInfo
*
)
{
FUNCNAME
(
"CoarseningManager1d::coarsenFunction"
);
ERROR_EXIT
(
"not used for dim = 1"
);
return
0
;
}
/// Needed instead of coarsenFunction in 1d.
...
...
AMDiS/src/CoarseningManager2d.cc
View file @
173ee421
...
...
@@ -73,14 +73,14 @@ namespace AMDiS {
/* of data (if possible) and finally coarsen the patch elements */
/****************************************************************************/
void
CoarseningManager2d
::
coarsenPatch
(
RCNeighbourList
*
coarsenList
,
void
CoarseningManager2d
::
coarsenPatch
(
RCNeighbourList
&
coarsenList
,
int
n_neigh
,
int
bound
)
{
Triangle
*
el
=
dynamic_cast
<
Triangle
*>
(
const_cast
<
Element
*>
(
coarsenList
->
getElement
(
0
)));
dynamic_cast
<
Triangle
*>
(
const_cast
<
Element
*>
(
coarsenList
.
getElement
(
0
)));
Triangle
*
neigh
=
dynamic_cast
<
Triangle
*>
(
const_cast
<
Element
*>
(
coarsenList
->
getElement
(
1
)));
dynamic_cast
<
Triangle
*>
(
const_cast
<
Element
*>
(
coarsenList
.
getElement
(
1
)));
DegreeOfFreedom
*
dof
[
3
];
dof
[
0
]
=
const_cast
<
int
*>
(
el
->
getChild
(
0
)
->
getDof
(
2
));
...
...
@@ -103,7 +103,7 @@ namespace AMDiS {
}
if
(
mesh
->
getNumberOfDofs
(
EDGE
)
||
mesh
->
getNumberOfDofs
(
CENTER
))
coarsenList
->
addDOFParents
(
n_neigh
);
coarsenList
.
addDOFParents
(
n_neigh
);
// restrict dof vectors to the parents on the patch
...
...
@@ -112,7 +112,7 @@ namespace AMDiS {
DOFAdmin
*
admin
=
const_cast
<
DOFAdmin
*>
(
&
mesh
->
getDofAdmin
(
iadmin
));
for
(
std
::
list
<
DOFIndexedBase
*>::
iterator
it
=
admin
->
beginDOFIndexed
();
it
!=
admin
->
endDOFIndexed
();
++
it
)
(
*
it
)
->
coarseRestrict
(
*
coarsenList
,
n_neigh
);
(
*
it
)
->
coarseRestrict
(
coarsenList
,
n_neigh
);
}
coarsenTriangle
(
el
);
...
...
@@ -133,7 +133,7 @@ namespace AMDiS {
}
int
CoarseningManager2d
::
coarsenFunction
(
ElInfo
*
el_info
)
void
CoarseningManager2d
::
coarsenFunction
(
ElInfo
*
el_info
)
{
Triangle
*
el
=
dynamic_cast
<
Triangle
*>
(
const_cast
<
Element
*>
(
el_info
->
getElement
()));
DegreeOfFreedom
*
edge
[
2
];
...
...
@@ -143,20 +143,20 @@ namespace AMDiS {
coarse_list
.
setCoarseningManager
(
this
);
if
(
el
->
getMark
()
>=
0
)
return
0
;
// el must not be coarsend, return
return
;
// el must not be coarsend, return
if
(
!
(
el
->
getChild
(
0
)))
return
0
;
// single leaves don't get coarsened
return
;
// single leaves don't get coarsened
if
(
el
->
getChild
(
0
)
->
getMark
()
>=
0
||
el
->
getChild
(
1
)
->
getMark
()
>=
0
)
{
// one of the children must not be coarsend; return :(
el
->
setMark
(
0
);
return
0
;
return
;
}
if
(
!
el
->
getChild
(
0
)
->
isLeaf
()
||
!
el
->
getChild
(
1
)
->
isLeaf
())
{
// one of the children is not a leaf element; try again later on
doMore
=
true
;
return
0
;
return
;
}
// give the refinement edge the right orientation
...
...
@@ -186,15 +186,12 @@ namespace AMDiS {
if
(
coarse_list
.
doCoarsePatch
(
n_neigh
))
{
int
n_neigh_periodic
;
DegreeOfFreedom
*
next_edge
[
2
];
RCNeighbourList
*
periodicList
;
RCNeighbourList
periodicList
;
while
(
edge
[
0
]
!=
NULL
)
{
periodicList
=
coarse_list
.
periodicSplit
(
edge
,
next_edge
,
&
n_neigh
,
&
n_neigh_periodic
);
TEST_EXIT_DBG
(
periodicList
)(
"periodicList = NULL
\n
"
);
coarse_list
.
periodicSplit
(
edge
,
next_edge
,
&
n_neigh
,
&
n_neigh_periodic
,
periodicList
);
coarsenPatch
(
periodicList
,
n_neigh_periodic
,
bound
);
...
...
@@ -202,8 +199,6 @@ namespace AMDiS {
edge
[
1
]
=
next_edge
[
1
];
}
}
return
0
;
}
}
AMDiS/src/CoarseningManager2d.h
View file @
173ee421
...
...
@@ -44,8 +44,8 @@ namespace AMDiS {
virtual
~
CoarseningManager2d
()
{}
protected:
/// Implements CoarseningManager::coarsenFunction
v
irtual
int
coarsenFunction
(
ElInfo
*
el_info
);
/// Implements
\ref
CoarseningManager::coarsenFunction
v
oid
coarsenFunction
(
ElInfo
*
el_info
);
/** \brief
* Coarsens a single Triangle of the coarsening patch. DOFs
...
...
@@ -59,7 +59,7 @@ namespace AMDiS {
* First rebuild the DOFs on the parents then do restriction
* of data (if possible) and finally coarsen the patch elements
*/
void
coarsenPatch
(
RCNeighbourList
*
coarsenList
,
int
n_neigh
,
int
bound
);
void
coarsenPatch
(
RCNeighbourList
&
coarsenList
,
int
n_neigh
,
int
bound
);
};
...
...
AMDiS/src/CoarseningManager3d.cc
View file @
173ee421
...
...
@@ -22,39 +22,39 @@
namespace
AMDiS
{
int
CoarseningManager3d
::
coarsenFunction
(
ElInfo
*
el_info
)
void
CoarseningManager3d
::
coarsenFunction
(
ElInfo
*
el_info
)
{
Tetrahedron
*
el
=
dynamic_cast
<
Tetrahedron
*>
(
const_cast
<
Element
*>
(
el_info
->
getElement
()));
DegreeOfFreedom
*
edge
[
2
];
int
n_neigh
,
bound
=
0
;
ElInfo
*
elinfo
=
el_info
;
RCNeighbourList
*
coarsenList
;
if
(
el
->
getMark
()
>=
0
)
return
0
;
// el must not be coarsend, return :-(
return
;
// el must not be coarsend, return :-(
if
(
el
->
isLeaf
())
return
0
;
// single leaves don't get coarsened
return
;
// single leaves don't get coarsened
if
(
el
->
getChild
(
0
)
->
getMark
()
>=
0
||
el
->
getChild
(
1
)
->
getMark
()
>=
0
)
{
if
(
el
->
getChild
(
0
)
->
getMark
()
>=
0
||
el
->
getChild
(
1
)
->
getMark
()
>=
0
)
{
// one of the children must not be coarsend; return :-(
el
->
setMark
(
0
);
return
0
;
return
;
}
if
(
!
(
el
->
getChild
(
0
)
->
isLeaf
())
||
!
(
el
->
getChild
(
1
)
->
isLeaf
()))
{
// one of the children is not a leaf element; try again later on
doMore
=
true
;
return
0
;
return
;
}
DegreeOfFreedom
*
edge
[
2
];
int
n_neigh
,
bound
=
0
;
ElInfo
*
elinfo
=
el_info
;
/****************************************************************************/
/* get a list for storing all elements at the coarsening edge and fill it */
/****************************************************************************/
coarsenList
=
new
RCNeighbour
List
(
mesh
->
getMaxEdgeNeigh
());
coarsenList
->
setCoarseningManager
(
this
);
RCNeighbourList
coarsen
List
(
mesh
->
getMaxEdgeNeigh
());
coarsenList
.
setCoarseningManager
(
this
);
/****************************************************************************/
/* give the refinement edge the right orientation */
...
...
@@ -68,17 +68,17 @@ namespace AMDiS {
edge
[
0
]
=
const_cast
<
int
*>
(
el
->
getDof
(
1
));
}
coarsenList
->
setElement
(
0
,
el
,
true
);
coarsenList
.
setElement
(
0
,
el
,
true
);
n_neigh
=
1
;
coarsenList
->
setOppVertex
(
0
,
0
,
0
);
coarsenList
->
setElType
(
0
,
el_info
->
getType
());
coarsenList
.
setOppVertex
(
0
,
0
,
0
);
coarsenList
.
setElType
(
0
,
el_info
->
getType
());
bound
=
false
;
if
(
getCoarsenPatch
(
elinfo
,
edge
,
0
,
coarsenList
,
&
n_neigh
))
{
getCoarsenPatch
(
elinfo
,
edge
,
1
,
coarsenList
,
&
n_neigh
);
bound
=
true
;
}
coarsenList
->
getNeighOnPatch
(
n_neigh
,
bound
);
coarsenList
.
fillNeighbourRelations
(
n_neigh
,
bound
);
/****************************************************************************/
/* check wether we can coarsen the patch or not */
...
...
@@ -88,18 +88,15 @@ namespace AMDiS {
// === check for periodic boundary ==========================================
// ==========================================================================
if
(
coarsenList
->
doCoarsePatch
(
n_neigh
))
{
if
(
coarsenList
.
doCoarsePatch
(
n_neigh
))
{
int
n_neigh_periodic
;
DegreeOfFreedom
*
next_edge
[
2
];
RCNeighbourList
*
periodicList
;
RCNeighbourList
periodicList
;
while
(
edge
[
0
]
!=
NULL
)
{
periodicList
=
coarsenList
->
periodicSplit
(
edge
,
next_edge
,
&
n_neigh
,
&
n_neigh_periodic
);
TEST_EXIT_DBG
(
periodicList
)(
"periodicList = NULL
\n
"
);
coarsenList
.
periodicSplit
(
edge
,
next_edge
,
&
n_neigh
,
&
n_neigh_periodic
,
periodicList
);
coarsenPatch
(
periodicList
,
n_neigh_periodic
,
bound
);
...
...
@@ -107,10 +104,6 @@ namespace AMDiS {
edge
[
1
]
=
next_edge
[
1
];
}
}
delete
coarsenList
;
return
0
;
}
/*****************************************************************************/
...
...
@@ -120,18 +113,18 @@ namespace AMDiS {
/* is part of the domains boundary */
/*****************************************************************************/
void
CoarseningManager3d
::
coarsenTetrahedron
(
RCNeighbourList
*
coarsenList
,
void
CoarseningManager3d
::
coarsenTetrahedron
(
RCNeighbourList
&
coarsenList
,
int
index
)
{
Tetrahedron
*
el
=
dynamic_cast
<
Tetrahedron
*>
(
const_cast
<
Element
*>
(
coarsenList
->
getElement
(
index
)));
dynamic_cast
<
Tetrahedron
*>
(
const_cast
<
Element
*>
(
coarsenList
.
getElement
(
index
)));
Tetrahedron
*
child
[
2
];
Tetrahedron
*
neigh
;
int
dir
,
el_type
,
i
,
node
,
opp_v
;
child
[
0
]
=
dynamic_cast
<
Tetrahedron
*>
(
const_cast
<
Element
*>
(
el
->
getChild
(
0
)));
child
[
1
]
=
dynamic_cast
<
Tetrahedron
*>
(
const_cast
<
Element
*>
(
el
->
getChild
(
1
)));
el_type
=
coarsenList
->
getType
(
index
);
el_type
=
coarsenList
.
getType
(
index
);
/****************************************************************************/
/* Information about patch neighbours is still valid! But edge and face */
...
...
@@ -140,10 +133,10 @@ namespace AMDiS {
for
(
dir
=
0
;
dir
<
2
;
dir
++
)
{
neigh
=
dynamic_cast
<
Tetrahedron
*>
(
const_cast
<
Element
*>
(
coarsenList
->
getNeighbourElement
(
index
,
dir
)));
opp_v
=
coarsenList
->
getOppVertex
(
index
,
dir
);
dynamic_cast
<
Tetrahedron
*>
(
const_cast
<
Element
*>
(
coarsenList
.
getNeighbourElement
(
index
,
dir
)));
opp_v
=
coarsenList
.
getOppVertex
(
index
,
dir
);
if
(
!
neigh
||
neigh
->
isLeaf
())
{
if
(
!
neigh
||
neigh
->
isLeaf
())
{
/****************************************************************************/
/* boundary face or neigh has been coarsend: free the dof's in the face */
/****************************************************************************/
...
...
@@ -215,7 +208,7 @@ namespace AMDiS {
bool
CoarseningManager3d
::
getCoarsenPatch
(
ElInfo
*
el_info
,
DegreeOfFreedom
*
edge
[
2
],
int
dir
,
RCNeighbourList
*
coarsenList
,
RCNeighbourList
&
coarsenList
,
int
*
n_neigh
)
{
FUNCNAME
(
"CoarseningManager3d::getCoarsenPatch"
);
...
...
@@ -231,13 +224,14 @@ namespace AMDiS {
{
0
,
1
}};
el
=
dynamic_cast
<
Tetrahedron
*>
(
const_cast
<
Element
*>
(
el_info
->
getElement
()));
neigh
=
dynamic_cast
<
Tetrahedron
*>
(
const_cast
<
Element
*>
(
el_info
->
getNeighbour
(
3
-
dir
)));
neigh
=
dynamic_cast
<
Tetrahedron
*>
(
const_cast
<
Element
*>
(
el_info
->
getNeighbour
(
3
-
dir
)));
if
(
neigh
==
NULL
)
return
true
;
opp_v
=
el_info
->
getOppVertex
(
3
-
dir
);
opp_v
=
el_info
->
getOppVertex
(
3
-
dir
);
neigh_info
=
stack
->
traverseNeighbour3d
(
el_info
,
3
-
dir
);
neigh_info
=
stack
->
traverseNeighbour3d
(
el_info
,
3
-
dir
);
TEST_EXIT_DBG
(
neigh
==
neigh_info
->
getElement
())
(
"neigh %d and neigh_info->el %d are not identical
\n
"
,
neigh
->
getIndex
(),
neigh_info
->
getElement
()
->
getIndex
());
...
...
@@ -245,9 +239,9 @@ namespace AMDiS {
/* we have to go back to the starting element via opp_v values */
/* correct information is produce by get_neigh_on_patch() */
/****************************************************************************/
coarsenList
->
setOppVertex
(
*
n_neigh
,
0
,
opp_v
);
coarsenList
->
setElement
(
*
n_neigh
,
neigh
);
coarsenList
->
setElType
(
*
n_neigh
,
neigh_info
->
getType
());
coarsenList
.
setOppVertex
(
*
n_neigh
,
0
,
opp_v
);
coarsenList
.
setElement
(
*
n_neigh
,
neigh
);
coarsenList
.
setElType
(
*
n_neigh
,
neigh_info
->
getType
());
int
n_vertices
=
mesh
->
getGeo
(
VERTEX
);
...
...
@@ -273,7 +267,7 @@ namespace AMDiS {
neigh
->
getDof
(
1
,
0
),
neigh
->
getDof
(
2
,
0
),
neigh
->
getDof
(
3
,
0
));
}
edge_no
=
Tetrahedron
::
edgeOfDofs
[
j
][
k
];
coarsenList
->
setCoarsePatch
(
*
n_neigh
,
edge_no
==
0
);
coarsenList
.
setCoarsePatch
(
*
n_neigh
,
edge_no
==
0
);
/****************************************************************************/
/* get the direction of the next neighbour */
...
...
@@ -287,7 +281,8 @@ namespace AMDiS {
++*
n_neigh
;
opp_v
=
neigh_info
->
getOppVertex
(
i
);
neigh
=
dynamic_cast
<
Tetrahedron
*>
(
const_cast
<
Element
*>
(
neigh_info
->
getNeighbour
(
i
)));
neigh
=
dynamic_cast
<
Tetrahedron
*>
(
const_cast
<
Element
*>
(
neigh_info
->
getNeighbour
(
i
)));
if
(
neigh
)
{
neigh_info
=
stack
->
traverseNeighbour3d
(
neigh_info
,
i
);
TEST_EXIT_DBG
(
neigh
==
neigh_info
->
getElement
())
...
...
@@ -297,9 +292,9 @@ namespace AMDiS {
/* we have to go back to the starting element via opp_v values */
/* correct information is produce by get_neigh_on_patch() */
/****************************************************************************/
coarsenList
->
setOppVertex
(
*
n_neigh
,
0
,
opp_v
);
coarsenList
->
setElement
(
*
n_neigh
,
neigh
);
coarsenList
->
setElType
(
*
n_neigh
,
neigh_info
->
getType
());
coarsenList
.
setOppVertex
(
*
n_neigh
,
0
,
opp_v
);
coarsenList
.
setElement
(
*
n_neigh
,
neigh
);
coarsenList
.
setElType
(
*
n_neigh
,
neigh_info
->
getType
());
}
else
{
break
;
}
...
...
@@ -313,13 +308,13 @@ namespace AMDiS {
/****************************************************************************/
i
=
*
n_neigh
-
1
;
opp_v
=
coarsenList
->
getOppVertex
(
i
,
0
);
opp_v
=
coarsenList
.
getOppVertex
(
i
,
0
);
do
{
TEST_EXIT_DBG
(
neigh_info
->
getNeighbour
(
opp_v
)
&&
i
>
0
)
(
"while looping back domains boundary was reached or i == 0
\n
"
);
opp_v
=
coarsenList
->
getOppVertex
(
i
--
,
0
);
opp_v
=
coarsenList
.
getOppVertex
(
i
--
,
0
);
neigh_info
=
stack
->
traverseNeighbour3d
(
neigh_info
,
opp_v
);
}
while
(
neigh_info
->
getElement
()
!=
el
);
}
while
(
neigh_info
->
getElement
()
!=
el
);
return
true
;
}
...
...
@@ -329,14 +324,14 @@ namespace AMDiS {
/* of data (if possible) and finally coarsen the patch elements */
/****************************************************************************/
void
CoarseningManager3d
::
coarsenPatch
(
RCNeighbourList
*
coarsenList
,
void
CoarseningManager3d
::
coarsenPatch
(
RCNeighbourList
&
coarsenList
,
int
n_neigh
,