Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
10
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Open sidebar
Backofen, Rainer
amdis
Commits
159489a8
Commit
159489a8
authored
Apr 14, 2009
by
Thomas Witkowski
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
* Bugfix in ParallelDomainProblem (segdev)
parent
746b26ef
Changes
9
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
147 additions
and
134 deletions
+147
-134
AMDiS/libtool
AMDiS/libtool
+32
-32
AMDiS/src/ElInfo2d.cc
AMDiS/src/ElInfo2d.cc
+2
-2
AMDiS/src/Element.cc
AMDiS/src/Element.cc
+10
-12
AMDiS/src/Element.h
AMDiS/src/Element.h
+1
-18
AMDiS/src/MacroElement.h
AMDiS/src/MacroElement.h
+0
-8
AMDiS/src/Mesh.cc
AMDiS/src/Mesh.cc
+72
-27
AMDiS/src/Mesh.h
AMDiS/src/Mesh.h
+4
-4
AMDiS/src/ParallelDomainProblem.cc
AMDiS/src/ParallelDomainProblem.cc
+14
-16
AMDiS/src/RefinementManager.cc
AMDiS/src/RefinementManager.cc
+12
-15
No files found.
AMDiS/libtool
View file @
159489a8
...
...
@@ -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
deimos103
:
# 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
=
" /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
=
" /usr/lib
64
/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/ /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/octave-
2.9.9 /
usr/lib/qt-3.3
/lib "
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.9
9
/
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
/lib
so
"
# 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
deimos103
:
# 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/mpiCC
"
# 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/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/usr/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/usr/lib64/gcc/x86_64-suse-linux/4.1.2/../../../../x86_64-suse-linux/lib -L/usr/lib64/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
=
" /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
=
" /usr/lib
64
/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/ /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/octave-
2.9.9 /
usr/lib/qt-3.3
/lib "
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.9
9
/
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
/lib
so
"
# 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
deimos103
:
# 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
=
" /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
=
" /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/octave-
2.9.9 /
usr/lib/qt-3.3
/lib "
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.9
9
/
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
/lib
so
"
# Fix the shell variable $srcfile for the compiler.
fix_srcfile_path
=
""
...
...
AMDiS/src/ElInfo2d.cc
View file @
159489a8
...
...
@@ -34,8 +34,8 @@ namespace AMDiS {
FUNCNAME
(
"ElInfo::fillMacroInfo()"
);
macroElement_
=
const_cast
<
MacroElement
*>
(
mel
);
element_
=
const_cast
<
Element
*>
(
mel
->
getElement
());
parent_
=
NULL
;
element_
=
const_cast
<
Element
*>
(
mel
->
getElement
());
parent_
=
NULL
;
level
=
0
;
if
(
fillFlag_
.
isSet
(
Mesh
::
FILL_COORDS
)
||
...
...
AMDiS/src/Element.cc
View file @
159489a8
...
...
@@ -14,11 +14,11 @@ namespace AMDiS {
if
(
!
elementData
)
return
-
1
;
ElementRegion_ED
*
red
=
dynamic_cast
<
ElementRegion_ED
*>
(
elementData
->
getElementData
(
ELEMENT_REGION
));
ElementRegion_ED
*
red
=
dynamic_cast
<
ElementRegion_ED
*>
(
elementData
->
getElementData
(
ELEMENT_REGION
));
if
(
red
)
{
return
red
->
getRegion
();
}
if
(
red
)
return
red
->
getRegion
();
return
-
1
;
}
...
...
@@ -52,16 +52,14 @@ namespace AMDiS {
// call destructor through Mesh::freeElement !!!
Element
::~
Element
()
{
if
(
child
[
0
])
{
if
(
child
[
0
])
DELETE
child
[
0
];
}
if
(
child
[
1
])
{
DELETE
child
[
1
];
}
if
(
child
[
1
])
DELETE
child
[
1
];
if
(
newCoord
)
{
DELETE
newCoord
;
}
if
(
newCoord
)
DELETE
newCoord
;
if
(
elementData
)
{
elementData
->
deleteDecorated
();
...
...
AMDiS/src/Element.h
View file @
159489a8
...
...
@@ -22,10 +22,6 @@
#ifndef AMDIS_ELEMENT_H
#define AMDIS_ELEMENT_H
// ============================================================================
// ===== includes =============================================================
// ============================================================================
#include "Global.h"
#include "RefinementManager.h"
#include "Serializable.h"
...
...
@@ -34,23 +30,14 @@
namespace
AMDiS
{
// ============================================================================
// ===== forward declarations =================================================
// ============================================================================
class
Mesh
;
class
DOFAdmin
;
template
<
typename
T
>
class
WorldVector
;
class
CoarseningManager
;
template
<
typename
T
,
GeoIndex
d
>
class
FixVec
;
#define AMDIS_UNDEFINED 5
// ============================================================================
// ===== class Element ========================================================
// ============================================================================
/** \ingroup Triangulation
* \brief
* Base class for Line, Triangle, Tetrahedron
...
...
@@ -103,8 +90,6 @@ namespace AMDiS {
*/
Element
*
cloneWithDOFs
();
// ===== getting methods ======================================================
/** \name getting methods
* \{
*/
...
...
@@ -232,8 +217,6 @@ namespace AMDiS {
/** \} */
// ===== setting methods ======================================================
/** \name setting methods
* \{
*/
...
...
@@ -454,9 +437,9 @@ namespace AMDiS {
/// Deserialize an element from a file.
void
deserialize
(
std
::
istream
&
in
);
///
int
calcMemoryUsage
();
// ===== protected methods ====================================================
protected:
/// Sets Element's \ref dof pointer. Used by friend class Mesh.
void
setDOFPtrs
();
...
...
AMDiS/src/MacroElement.h
View file @
159489a8
...
...
@@ -40,10 +40,6 @@ namespace AMDiS {
template
<
typename
T
>
class
WorldVector
;
template
<
typename
T
>
class
DimVec
;
// ============================================================================
// ===== class MacroElement ===================================================
// ============================================================================
/** \ingroup Triangulation
* \brief
* MacroElements form the macro triangulation of a Mesh. In a MacroElement
...
...
@@ -64,8 +60,6 @@ namespace AMDiS {
///
MacroElement
&
operator
=
(
const
MacroElement
&
el
);
// ===== getting methods ======================================================
/** \name getting methods
* \{
*/
...
...
@@ -117,8 +111,6 @@ namespace AMDiS {
/** \} */
// ===== setting methods ======================================================
/** \name setting methods
* \{
*/
...
...
AMDiS/src/Mesh.cc
View file @
159489a8
...
...
@@ -23,7 +23,6 @@
#include "Projection.h"
#include "ElInfoStack.h"
namespace
AMDiS
{
#define TIME_USED(f,s) ((double)((s)-(f))/(double)CLOCKS_PER_SEC)
...
...
@@ -268,45 +267,91 @@ namespace AMDiS {
me
->
setIndex
(
macroElements
.
size
());
}
void
Mesh
::
removeMacroElement
(
MacroElement
*
me
)
void
Mesh
::
removeMacroElement
s
(
std
::
vector
<
MacroElement
*
>&
macros
)
{
FUNCNAME
(
"Mesh::removeMacroElement()"
);
TEST_EXIT
(
dim
==
2
)(
"Not yet implemented!
\n
"
);
bool
found
=
false
;
// Remove the macro element from mesh's list of all m
acro
e
lement
s.
for
(
std
::
deque
<
MacroElement
*>::
iterator
it
=
macroElements
.
begin
();
it
!=
macro
E
lements
.
end
();
++
it
)
{
if
(
*
i
t
=
=
m
e
)
{
macro
Elements
.
erase
(
it
,
it
+
1
);
found
=
true
;
break
;
}
// Map that stores for each dof pointer (which may have a list of dofs)
// all macro element indices that own the dof.
std
::
map
<
const
DegreeOfFreedom
*
,
std
::
set
<
M
acro
E
lement
*>
>
dofsOwner
;
// Determine all dof owner
macro
e
lements.
for
(
std
::
deque
<
MacroElement
*>::
iterator
macroIt
=
macroElements
.
begin
();
macroI
t
!
=
m
acroElements
.
end
();
++
macro
It
)
{
Element
*
el
=
(
*
macroIt
)
->
getElement
()
;
for
(
int
i
=
0
;
i
<
3
;
i
++
)
dofsOwner
[
el
->
getDOF
(
i
)].
insert
(
*
macroIt
);
}
TEST_EXIT
(
found
)(
"Cannot find MacroElement that should be removed!
\n
"
);
// Go through all neighbours of the macro element and remove this macro element
// to be neighbour of some other macro element.
for
(
int
i
=
0
;
i
<
dim
;
i
++
)
{
if
(
me
->
getNeighbour
(
i
))
{
for
(
int
j
=
0
;
j
<
dim
;
j
++
)
{
if
(
me
->
getNeighbour
(
i
)
->
getNeighbour
(
j
)
==
me
)
{
me
->
getNeighbour
(
i
)
->
setNeighbour
(
j
,
NULL
);
// Remove all the given macro elements.
for
(
std
::
vector
<
MacroElement
*>::
iterator
macroIt
=
macros
.
begin
();
macroIt
!=
macros
.
end
();
++
macroIt
)
{
bool
found
=
false
;
// Remove the macro element from mesh's list of all macro elements.
for
(
std
::
deque
<
MacroElement
*>::
iterator
it
=
macroElements
.
begin
();
it
!=
macroElements
.
end
();
++
it
)
{
if
(
*
it
==
*
macroIt
)
{
macroElements
.
erase
(
it
,
it
+
1
);
found
=
true
;
break
;
}
}
TEST_EXIT
(
found
)(
"Cannot find MacroElement that should be removed!
\n
"
);
// Go through all neighbours of the macro element and remove this macro element
// to be neighbour of some other macro element.
for
(
int
i
=
0
;
i
<=
dim
;
i
++
)
{
if
((
*
macroIt
)
->
getNeighbour
(
i
))
{
for
(
int
j
=
0
;
j
<=
dim
;
j
++
)
{
if
((
*
macroIt
)
->
getNeighbour
(
i
)
->
getNeighbour
(
j
)
==
*
macroIt
)
{
(
*
macroIt
)
->
getNeighbour
(
i
)
->
setNeighbour
(
j
,
NULL
);
}
}
}
else
{
// There is no neighbour at this edge, so we have to decrease the number
// of edges in the mesh.
nEdges
--
;
}
}
nLeaves
--
;
nElements
--
;
// Remove this macro element from the dof owner list.
for
(
std
::
map
<
const
DegreeOfFreedom
*
,
std
::
set
<
MacroElement
*>
>::
iterator
dofsIt
=
dofsOwner
.
begin
();
dofsIt
!=
dofsOwner
.
end
();
++
dofsIt
)
{
std
::
set
<
MacroElement
*>::
iterator
mIt
=
dofsIt
->
second
.
find
(
*
macroIt
);
if
(
mIt
!=
dofsIt
->
second
.
end
())
dofsIt
->
second
.
erase
(
mIt
);
}
// And remove the macro element from memory
delete
*
macroIt
;
}
int
nRemainDofs
=
0
;
// Check now all the dofs, that have no owner anymore and therefore have to
// be removed.
for
(
std
::
map
<
const
DegreeOfFreedom
*
,
std
::
set
<
MacroElement
*>
>::
iterator
dofsIt
=
dofsOwner
.
begin
();
dofsIt
!=
dofsOwner
.
end
();
++
dofsIt
)
{
if
(
dofsIt
->
second
.
size
()
==
0
)
{
dofsOwner
.
erase
(
dofsIt
++
);
}
else
{
// There is no neighbour at this edge, so we have to decrease the number
// of edges in the mesh.
nEdges
--
;
nRemainDofs
++
;
}
}
nLeaves
--
;
nElements
--
;
nVertices
=
nRemainDofs
;
}
int
Mesh
::
traverse
(
int
level
,
Flag
flag
,
int
(
*
el_fct
)(
ElInfo
*
))
...
...
AMDiS/src/Mesh.h
View file @
159489a8
...
...
@@ -415,11 +415,11 @@ namespace AMDiS {
void
addMacroElement
(
MacroElement
*
me
);
/* \brief
* Removes a macro element from the mesh. This works only for the case,
that
* there are no global or local refinements, i.e., all macro elements have
no
* children.
* Removes a
set of
macro element
s
from the mesh. This works only for the case,
*
that
there are no global or local refinements, i.e., all macro elements have
*
no
children.
*/
void
removeMacroElement
(
MacroElement
*
me
);
void
removeMacroElement
s
(
std
::
vector
<
MacroElement
*
>&
macros
);
/// Frees the array of DOF pointers (see \ref createDOFPtrs)
void
freeDOFPtrs
(
DegreeOfFreedom
**
ptrs
);
...
...
AMDiS/src/ParallelDomainProblem.cc
View file @
159489a8
...
...
@@ -18,6 +18,7 @@ namespace AMDiS {
:
iterationIF
(
iIF
),
timeIF
(
tIF
),
mesh
(
m
),
initialPartitionMesh
(
true
),
nRankDOFs
(
0
)
{
mpiRank
=
MPI
::
COMM_WORLD
.
Get_rank
();
...
...
@@ -95,23 +96,20 @@ namespace AMDiS {
}
}
bool
removed
=
false
;
do
{
removed
=
false
;
for
(
std
::
deque
<
MacroElement
*>::
iterator
it
=
mesh
->
firstMacroElement
();
it
!=
mesh
->
endOfMacroElements
();
++
it
)
{
PartitionElementData
*
partitionData
=
dynamic_cast
<
PartitionElementData
*>
((
*
it
)
->
getElement
()
->
getElementData
(
PARTITION_ED
));
if
(
partitionData
->
getPartitionStatus
()
!=
IN
)
{
mesh
->
removeMacroElement
(
*
it
);
removed
=
true
;
break
;
}
std
::
vector
<
MacroElement
*>
macrosToRemove
;
for
(
std
::
deque
<
MacroElement
*>::
iterator
it
=
mesh
->
firstMacroElement
();
it
!=
mesh
->
endOfMacroElements
();
++
it
)
{
PartitionElementData
*
partitionData
=
dynamic_cast
<
PartitionElementData
*>
((
*
it
)
->
getElement
()
->
getElementData
(
PARTITION_ED
));
if
(
partitionData
->
getPartitionStatus
()
!=
IN
)
{
macrosToRemove
.
push_back
(
*
it
);
}
}
while
(
removed
);
}
mesh
->
removeMacroElements
(
macrosToRemove
);
int
*
gOrder
=
(
int
*
)(
malloc
(
sizeof
(
int
)
*
rankDofs
.
size
()));
int
*
lOrder
=
(
int
*
)(
malloc
(
sizeof
(
int
)
*
rankDofs
.
size
()));
...
...
AMDiS/src/RefinementManager.cc
View file @
159489a8
...
...
@@ -34,10 +34,8 @@ namespace AMDiS {
return
static_cast
<
Flag
>
(
0
);
globalMark
=
mark
;
aMesh
->
traverse
(
-
1
,
Mesh
::
CALL_LEAF_EL
|
Mesh
::
FILL_COORDS
|
Mesh
::
FILL_BOUND
,
aMesh
->
traverse
(
-
1
,
Mesh
::
CALL_LEAF_EL
|
Mesh
::
FILL_COORDS
|
Mesh
::
FILL_BOUND
,
globalRefineFct
);
return
refineMesh
(
aMesh
);
}
...
...
@@ -51,23 +49,22 @@ namespace AMDiS {
mesh
=
aMesh
;
int
n_elements
=
mesh
->
getNumberOfLeaves
();
ElInfo
*
el_info
;
ElInfo
*
elInfo
;
newCoords
=
false
;
stack
=
NEW
TraverseStack
;
doMoreRecursiveRefine
=
true
;
while
(
doMoreRecursiveRefine
)
{
doMoreRecursiveRefine
=
false
;
el
_i
nfo
=
stack
->
traverseFirst
(
mesh
,
-
1
,
Mesh
::
CALL_LEAF_EL
|
Mesh
::
FILL_NEIGH
|
Mesh
::
FILL_BOUND
);
while
(
el
_i
nfo
)
{
if
(
el
_i
nfo
->
getElement
()
->
getMark
()
>
0
)
{
el
I
nfo
=
stack
->
traverseFirst
(
mesh
,
-
1
,
Mesh
::
CALL_LEAF_EL
|
Mesh
::
FILL_NEIGH
|
Mesh
::
FILL_BOUND
);
while
(
el
I
nfo
)
{
if
(
el
I
nfo
->
getElement
()
->
getMark
()
>
0
)
{
doMoreRecursiveRefine
=
doMoreRecursiveRefine
||
(
el
_i
nfo
->
getElement
()
->
getMark
()
>
1
);
el
_i
nfo
=
refineFunction
(
el
_i
nfo
);
}
el
_i
nfo
=
stack
->
traverseNext
(
el
_i
nfo
);
(
el
I
nfo
->
getElement
()
->
getMark
()
>
1
);
el
I
nfo
=
refineFunction
(
el
I
nfo
);
}
el
I
nfo
=
stack
->
traverseNext
(
el
I
nfo
);
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment