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
e5b12c1a
Commit
e5b12c1a
authored
Dec 07, 2009
by
Thomas Witkowski
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
First test with 3d parallelization.
parent
eda641eb
Changes
13
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
273 additions
and
144 deletions
+273
-144
AMDiS/libtool
AMDiS/libtool
+35
-35
AMDiS/src/ConditionalEstimator.cc
AMDiS/src/ConditionalEstimator.cc
+3
-5
AMDiS/src/DOFAdmin.cc
AMDiS/src/DOFAdmin.cc
+7
-3
AMDiS/src/Element.h
AMDiS/src/Element.h
+16
-10
AMDiS/src/ElementDofIterator.cc
AMDiS/src/ElementDofIterator.cc
+1
-1
AMDiS/src/InteriorBoundary.h
AMDiS/src/InteriorBoundary.h
+3
-0
AMDiS/src/Line.h
AMDiS/src/Line.h
+2
-2
AMDiS/src/ParallelDomainBase.cc
AMDiS/src/ParallelDomainBase.cc
+69
-37
AMDiS/src/RefinementManager2d.cc
AMDiS/src/RefinementManager2d.cc
+0
-16
AMDiS/src/Tetrahedron.cc
AMDiS/src/Tetrahedron.cc
+116
-17
AMDiS/src/Tetrahedron.h
AMDiS/src/Tetrahedron.h
+2
-2
AMDiS/src/Triangle.cc
AMDiS/src/Triangle.cc
+15
-14
AMDiS/src/Triangle.h
AMDiS/src/Triangle.h
+4
-2
No files found.
AMDiS/libtool
View file @
e5b12c1a
...
...
@@ -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
deimos102
:
# 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,25 +82,25 @@ 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
gcc_dir
=
`
gcc
-print-file-name
=
.
| /bin/sed
's,/\.$,,'
`
gcc_dir
=
`
gcc
-print-file-name
=
.
|
/usr
/bin/sed
's,/\.$,,'
`
gcc_ver
=
`
gcc
-dumpversion
`
# 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"
...
...
@@ -174,7 +174,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"
...
...
@@ -328,10 +328,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
=
`
echo
"
/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/
"
|
$SED
-e
"s@
${
gcc_dir
}
@
\$
{gcc_dir}@g;s@
${
gcc_ver
}
@
\$
{gcc_ver}@g"
`
sys_lib_search_path_spec
=
`
echo
"
/lib64 /usr/lib64 /usr/local/lib64
"
|
$SED
-e
"s@
${
gcc_dir
}
@
\$
{gcc_dir}@g;s@
${
gcc_ver
}
@
\$
{gcc_ver}@g"
`
# 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
/usr/lib/qt4
/lib "
sys_lib_dlsearch_path_spec
=
"/lib
64
/usr/lib
64
/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/Pathscale
3.
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
/lib
so
"
# Fix the shell variable $srcfile for the compiler.
fix_srcfile_path
=
""
...
...
@@ -6763,7 +6763,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
deimos102
:
# Shell to use when invoking shell scripts.
SHELL
=
"/bin/sh"
...
...
@@ -6785,12 +6785,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.
...
...
@@ -6801,25 +6801,25 @@ 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
gcc_dir
=
`
gcc
-print-file-name
=
.
| /bin/sed
's,/\.$,,'
`
gcc_dir
=
`
gcc
-print-file-name
=
.
|
/usr
/bin/sed
's,/\.$,,'
`
gcc_ver
=
`
gcc
-dumpversion
`
# 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"
...
...
@@ -6893,7 +6893,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"
...
...
@@ -6948,11 +6948,11 @@ striplib="strip --strip-unneeded"
# Dependencies to place before the objects being linked to create a
# shared library.
predep_objects
=
`
echo
"/usr/lib/gcc/
i386-redhat
-linux/4.1.2/../../../crti.o /usr/lib/gcc/
i386-redhat
-linux/4.1.2/crtbeginS.o"
|
$SED
-e
"s@
${
gcc_dir
}
@
\$
{gcc_dir}@g;s@
${
gcc_ver
}
@
\$
{gcc_ver}@g"
`
predep_objects
=
`
echo
"/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"
|
$SED
-e
"s@
${
gcc_dir
}
@
\$
{gcc_dir}@g;s@
${
gcc_ver
}
@
\$
{gcc_ver}@g"
`
# Dependencies to place after the objects being linked to create a
# shared library.
postdep_objects
=
`
echo
"/usr/lib/gcc/
i386-redhat
-linux/4.1.2/crtendS.o /usr/lib/gcc/
i386-redhat
-linux/4.1.2/../../../crtn.o"
|
$SED
-e
"s@
${
gcc_dir
}
@
\$
{gcc_dir}@g;s@
${
gcc_ver
}
@
\$
{gcc_ver}@g"
`
postdep_objects
=
`
echo
"/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"
|
$SED
-e
"s@
${
gcc_dir
}
@
\$
{gcc_dir}@g;s@
${
gcc_ver
}
@
\$
{gcc_ver}@g"
`
# Dependencies to place before the objects being linked to create a
# shared library.
...
...
@@ -6960,11 +6960,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
=
`
echo
"-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/../../.."
|
$SED
-e
"s@
${
gcc_dir
}
@
\$
{gcc_dir}@g;s@
${
gcc_ver
}
@
\$
{gcc_ver}@g"
`
compiler_lib_search_path
=
`
echo
"-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/../../.."
|
$SED
-e
"s@
${
gcc_dir
}
@
\$
{gcc_dir}@g;s@
${
gcc_ver
}
@
\$
{gcc_ver}@g"
`
# Method to check whether dependent libraries are shared objects.
deplibs_check_method
=
"pass_all"
...
...
@@ -7044,10 +7044,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
=
`
echo
"
/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/
"
|
$SED
-e
"s@
${
gcc_dir
}
@
\$
{gcc_dir}@g;s@
${
gcc_ver
}
@
\$
{gcc_ver}@g"
`
sys_lib_search_path_spec
=
`
echo
"
/lib64 /usr/lib64 /usr/local/lib64
"
|
$SED
-e
"s@
${
gcc_dir
}
@
\$
{gcc_dir}@g;s@
${
gcc_ver
}
@
\$
{gcc_ver}@g"
`
# 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
/usr/lib/qt4
/lib "
sys_lib_dlsearch_path_spec
=
"/lib
64
/usr/lib
64
/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/Pathscale
3.
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
/lib
so
"
# Fix the shell variable $srcfile for the compiler.
fix_srcfile_path
=
""
...
...
@@ -7071,7 +7071,7 @@ include_expsyms=""
# ### BEGIN LIBTOOL TAG CONFIG: F77
# Libtool was configured on host
NWRW15
:
# Libtool was configured on host
deimos102
:
# Shell to use when invoking shell scripts.
SHELL
=
"/bin/sh"
...
...
@@ -7093,12 +7093,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.
...
...
@@ -7109,7 +7109,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"
...
...
@@ -7118,16 +7118,16 @@ LTCFLAGS="-g -O2"
CC
=
"g77"
# Is the compiler the GNU C compiler?
with_gcc
=
yes
with_gcc
=
gcc_dir
=
`
gcc
-print-file-name
=
.
| /bin/sed
's,/\.$,,'
`
gcc_dir
=
`
gcc
-print-file-name
=
.
|
/usr
/bin/sed
's,/\.$,,'
`
gcc_ver
=
`
gcc
-dumpversion
`
# 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"
...
...
@@ -7355,10 +7355,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
=
`
echo
"
/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/
"
|
$SED
-e
"s@
${
gcc_dir
}
@
\$
{gcc_dir}@g;s@
${
gcc_ver
}
@
\$
{gcc_ver}@g"
`
sys_lib_search_path_spec
=
`
echo
"
/lib64 /usr/lib64 /usr/local/lib64
"
|
$SED
-e
"s@
${
gcc_dir
}
@
\$
{gcc_dir}@g;s@
${
gcc_ver
}
@
\$
{gcc_ver}@g"
`
# 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
/usr/lib/qt4
/lib "
sys_lib_dlsearch_path_spec
=
"/lib
64
/usr/lib
64
/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/Pathscale
3.
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
/lib
so
"
# Fix the shell variable $srcfile for the compiler.
fix_srcfile_path
=
""
...
...
AMDiS/src/ConditionalEstimator.cc
View file @
e5b12c1a
...
...
@@ -9,7 +9,7 @@ namespace AMDiS {
double
ConditionalEstimator
::
estimate
(
double
ts
)
{
if
(
decoratedEstimator_
)
{
if
(
decoratedEstimator_
)
{
double
partition_sum
=
0.0
;
...
...
@@ -22,7 +22,7 @@ namespace AMDiS {
TraverseStack
stack
;
ElInfo
*
elInfo
=
stack
.
traverseFirst
(
mesh
,
-
1
,
traverseFlag
);
while
(
elInfo
)
{
while
(
elInfo
)
{
PartitionElementData
*
elData
=
dynamic_cast
<
PartitionElementData
*>
(
elInfo
->
getElement
()
->
getElementData
(
PARTITION_ED
));
...
...
@@ -40,9 +40,7 @@ namespace AMDiS {
}
elInfo
=
stack
.
traverseFirst
(
mesh
,
-
1
,
traverseFlag
);
while
(
elInfo
)
{
PartitionElementData
*
elData
=
dynamic_cast
<
PartitionElementData
*>
(
elInfo
->
getElement
()
->
getElementData
(
PARTITION_ED
));
while
(
elInfo
)
{
//if(status == IN) {
elementCount_
++
;
partition_sum
+=
elInfo
->
getElement
()
->
getEstimation
(
row_
);
...
...
AMDiS/src/DOFAdmin.cc
View file @
e5b12c1a
...
...
@@ -306,16 +306,20 @@ namespace AMDiS {
(
*
dc
)
->
compressDOFContainer
(
n
,
new_dof
);
}
void
DOFAdmin
::
setNumberOfDOFs
(
int
i
,
int
v
)
void
DOFAdmin
::
setNumberOfDOFs
(
int
i
,
int
v
)
{
TEST_EXIT_DBG
((
0
<=
i
)
&&
(
4
>
i
))(
""
);
FUNCNAME
(
"DOFAdmin::setNumberOfDOFs()"
);
TEST_EXIT_DBG
(
0
<=
i
&&
4
>
i
)(
"Should not happen!
\n
"
);
nrDOF
[
i
]
=
v
;
}
void
DOFAdmin
::
setNumberOfPreDOFs
(
int
i
,
int
v
)
{
TEST_EXIT_DBG
((
0
<=
i
)
&&
(
4
>
i
))(
""
);
FUNCNAME
(
"DOFAdmin::setNumberOfPreDOFs()"
);
TEST_EXIT_DBG
(
0
<=
i
&&
4
>
i
)(
"Should not happen!
\n
"
);
nr0DOF
[
i
]
=
v
;
}
...
...
AMDiS/src/Element.h
View file @
e5b12c1a
...
...
@@ -371,31 +371,37 @@ namespace AMDiS {
virtual
bool
hasSide
(
Element
*
sideElem
)
const
=
0
;
/** \brief
* Traverses an edge of a given element (this includes also all children of
the
* element having the same edge). All vertex dofs alonge this edge
are assembled
* and put together to a list.
* Traverses an edge
/face
of a given element (this includes also all children of
*
the
element having the same edge
/face
). All vertex dofs alonge this edge
/face
*
are assembled
and put together to a list.
*
* \param[in] feSpace FE space which is used to get the dofs.
* \param[in] ith
Edge
Defines the edge on which all the vertex dofs
* \param[in] ith
Defines the edge
/face
on which all the vertex dofs
* are assembled.
* \param[in] geoPos Must be either EDGE or FACE. Defines whether an
* edge or a face (only in 3d) should be traversed.
* \param[out] dofs List of dofs, where the result is stored.
* \param[in] parentVertices If true, also the two vertices of the parent
* element are put into the result list.
*/
virtual
void
getVertexDofs
(
FiniteElemSpace
*
feSpace
,
int
ithEdge
,
virtual
void
getVertexDofs
(
FiniteElemSpace
*
feSpace
,
int
ith
,
int
elType
,
DofContainer
&
dofs
,
bool
parentVertices
=
0
)
const
=
0
;
/** \brief
* Traverses an edge of a given element (this includes also all children of
the
* element having the same edge). All non vertex dofs alonge this edge
ar
e
* assembled and put together to a list.
* Traverses an edge
/face
of a given element (this includes also all children of
*
the
element having the same edge
/face
). All non vertex dofs alonge this edge
/fac
e
*
are
assembled and put together to a list.
*
* \param[in] feSpace FE space which is used to get the dofs.
* \param[in] ith
Edge
Defines the edge on which all the non vertex
* \param[in] ith
Defines the edge
/face
on which all the non vertex
* dofs are assembled.
* \param[in] geoPos Must be either EDGE or FACE. Defines whether an
* edge or a face (only in 3d) should be traversed.
* \param[out] dofs All dofs are put to this dof list.
*/
virtual
void
getNonVertexDofs
(
FiniteElemSpace
*
feSpace
,
int
ithEdge
,
virtual
void
getNonVertexDofs
(
FiniteElemSpace
*
feSpace
,
int
ith
,
int
elType
,
DofContainer
&
dofs
)
const
=
0
;
...
...
AMDiS/src/ElementDofIterator.cc
View file @
e5b12c1a
...
...
@@ -67,7 +67,7 @@ namespace AMDiS {
// Get number of dofs in this position.
nDofs
=
admin
->
getNumberOfDOFs
(
posIndex
);
}
while
(
nDofs
==
0
&&
pos
<
dim
);
if
(
nDofs
>
0
&&
pos
<=
dim
)
{
// We have found on more position with dofs.
...
...
AMDiS/src/InteriorBoundary.h
View file @
e5b12c1a
...
...
@@ -39,6 +39,9 @@ namespace AMDiS {
/// Index of the macro element.
int
elIndex
;
/// Element type index, only used in 3d.
int
elType
;
/** \brief
* Defines the geometrical object at the boundary. It must be "a part" of the
* macro element \ref el, i.e., either 1 (a vertex), 2 (an edge) or 3 (a face).
...
...
AMDiS/src/Line.h
View file @
e5b12c1a
...
...
@@ -147,7 +147,7 @@ namespace AMDiS {
return
"Line"
;
}
void
getVertexDofs
(
FiniteElemSpace
*
feSpace
,
int
ithEdge
,
void
getVertexDofs
(
FiniteElemSpace
*
feSpace
,
int
ithEdge
,
int
elType
,
DofContainer
&
dofs
,
bool
parentVertices
=
0
)
const
{
FUNCNAME
(
"Line::getVertexDofs()"
);
...
...
@@ -155,7 +155,7 @@ namespace AMDiS {
ERROR_EXIT
(
"Not yet implemented!
\n
"
);
}
void
getNonVertexDofs
(
FiniteElemSpace
*
feSpace
,
int
ithEdge
,
void
getNonVertexDofs
(
FiniteElemSpace
*
feSpace
,
int
ithEdge
,
int
elType
,
DofContainer
&
dofs
)
const
{
FUNCNAME
(
"Line::getNonVertexDofs()"
);
...
...
AMDiS/src/ParallelDomainBase.cc
View file @
e5b12c1a
...
...
@@ -128,8 +128,6 @@ namespace AMDiS {
createPeriodicMap
();
// exit(0);
// === Global refinements. ===
int
globalRefinement
=
0
;
...
...
@@ -155,8 +153,6 @@ namespace AMDiS {
createPeriodicMap
();
}
// exit(0);
#if (DEBUG != 0)
dbgTestCommonDofs
(
true
);
#endif
...
...
@@ -1021,12 +1017,14 @@ namespace AMDiS {
AtomicBoundary
bound
;
bound
.
rankObj
.
el
=
element
;
bound
.
rankObj
.
elIndex
=
element
->
getIndex
();
bound
.
rankObj
.
elType
=
elInfo
->
getType
();
bound
.
rankObj
.
subObj
=
subObj
;
bound
.
rankObj
.
ithObj
=
i
;
// Do not set a pointer to the element, because if will be deleted from
// mesh after partitioning and the pointer would become invalid.
bound
.
neighObj
.
el
=
NULL
;
bound
.
neighObj
.
elIndex
=
elInfo
->
getNeighbour
(
i
)
->
getIndex
();
bound
.
neighObj
.
elType
=
-
1
;
bound
.
neighObj
.
subObj
=
subObj
;
bound
.
neighObj
.
ithObj
=
elInfo
->
getSideOfNeighbour
(
i
);
...
...
@@ -1413,7 +1411,6 @@ namespace AMDiS {
rankDofsNewGlobalIndex
);
}
void
ParallelDomainBase
::
updateLocalGlobalNumbering
(
int
&
nRankDofs
,
int
&
nOverallDOFs
)
{
FUNCNAME
(
"ParallelDomainBase::updateLocalGlobalNumbering()"
);
...
...
@@ -1490,24 +1487,26 @@ namespace AMDiS {
for
(
RankToBoundMap
::
iterator
it
=
myIntBoundary
.
boundary
.
begin
();
it
!=
myIntBoundary
.
boundary
.
end
();
++
it
)
{
DofContainer
&
dofsToSend
=
sendDofs
[
it
->
first
];
for
(
std
::
vector
<
AtomicBoundary
>::
iterator
boundIt
=
it
->
second
.
begin
();
boundIt
!=
it
->
second
.
end
();
++
boundIt
)
{
DofContainer
dofs
;
boundIt
->
rankObj
.
el
->
getVertexDofs
(
feSpace
,
boundIt
->
rankObj
.
ithObj
,
dofs
);
boundIt
->
rankObj
.
el
->
getNonVertexDofs
(
feSpace
,
boundIt
->
rankObj
.
ithObj
,
dofs
);
for
(
int
i
=
0
;
i
<
static_cast
<
int
>
(
dofs
.
size
());
i
++
)
{
TEST_EXIT_DBG
(
find
(
dofsToSend
.
begin
(),
dofsToSend
.
end
(),
dofs
[
i
])
==
dofsToSend
.
end
())
(
"Should not happen!
\n
"
);
boundIt
->
rankObj
.
el
->
getVertexDofs
(
feSpace
,
boundIt
->
rankObj
.
ithObj
,
boundIt
->
rankObj
.
elType
,
dofs
);
boundIt
->
rankObj
.
el
->
getNonVertexDofs
(
feSpace
,
boundIt
->
rankObj
.
ithObj
,
boundIt
->
rankObj
.
elType
,
dofs
);
for
(
int
i
=
0
;
i
<
static_cast
<
int
>
(
dofs
.
size
());
i
++
)
dofsToSend
.
push_back
(
dofs
[
i
]);
}
}
}
}
for
(
RankToBoundMap
::
iterator
it
=
otherIntBoundary
.
boundary
.
begin
();
it
!=
otherIntBoundary
.
boundary
.
end
();
++
it
)
{
...
...
@@ -1516,22 +1515,36 @@ namespace AMDiS {
for
(
std
::
vector
<
AtomicBoundary
>::
iterator
boundIt
=
it
->
second
.
begin
();
boundIt
!=
it
->
second
.
end
();
++
boundIt
)
{
DofContainer
dofs
;
boundIt
->
rankObj
.
el
->
getNonVertexDofs
(
feSpace
,
boundIt
->
rankObj
.
ithObj
,
dofs
);
boundIt
->
rankObj
.
el
->
getVertexDofs
(
feSpace
,
boundIt
->
rankObj
.
ithObj
,
dofs
);
for
(
int
i
=
static_cast
<
int
>
(
dofs
.
size
())
-
1
;
i
>=
0
;
i
--
)
{
TEST_EXIT_DBG
(
find
(
dofsToRecv
.
begin
(),
dofsToRecv
.
end
(),
dofs
[
i
])
==
dofsToRecv
.
end
())
(
"Should not happen!
\n
"
);
DofContainer
::
iterator
eraseIt
=
find
(
rankDofs
.
begin
(),
rankDofs
.
end
(),
dofs
[
i
]);
if
(
eraseIt
!=
rankDofs
.
end
())
rankDofs
.
erase
(
eraseIt
);
dofsToRecv
.
push_back
(
dofs
[
i
]);
boundIt
->
rankObj
.
el
->
getNonVertexDofs
(
feSpace
,
boundIt
->
rankObj
.
ithObj
,
boundIt
->
rankObj
.
elType
,
dofs
);
boundIt
->
rankObj
.
el
->
getVertexDofs
(
feSpace
,
boundIt
->
rankObj
.
ithObj
,
boundIt
->
rankObj
.
elType
,
dofs
);
if
(
mesh
->
getDim
()
==
2
)
{
for
(
int
i
=
static_cast
<
int
>
(
dofs
.
size
())
-
1
;
i
>=
0
;
i
--
)
{
DofContainer
::
iterator
eraseIt
=
find
(
rankDofs
.
begin
(),
rankDofs
.
end
(),
dofs
[
i
]);
if
(
eraseIt
!=
rankDofs
.
end
())
rankDofs
.
erase
(
eraseIt
);
dofsToRecv
.
push_back
(
dofs
[
i
]);
}
}
else
{
for
(
int
i
=
0
;
i
<
static_cast
<
int
>
(
dofs
.
size
());
i
++
)
{
DofContainer
::
iterator
eraseIt
=
find
(
rankDofs
.
begin
(),
rankDofs
.
end
(),
dofs
[
i
]);
if
(
eraseIt
!=
rankDofs
.
end
())
rankDofs
.
erase
(
eraseIt
);
dofsToRecv
.
push_back
(
dofs
[
i
]);
}
}
}
}
...
...
@@ -1769,8 +1782,14 @@ namespace AMDiS {
for
(
std
::
vector
<
AtomicBoundary
>::
iterator
boundIt
=
it
->
second
.
begin
();
boundIt
!=
it
->
second
.
end
();
++
boundIt
)
{
boundIt
->
rankObj
.
el
->
getVertexDofs
(
feSpace
,
boundIt
->
rankObj
.
ithObj
,
dofs
,
true
);
boundIt
->
rankObj
.
el
->
getNonVertexDofs
(
feSpace
,
boundIt
->
rankObj
.
ithObj
,
dofs
);
boundIt
->
rankObj
.
el
->
getVertexDofs
(
feSpace
,
boundIt
->
rankObj
.
ithObj
,
boundIt
->
rankObj
.
elType
,
dofs
,
true
);
boundIt
->
rankObj
.
el
->
getNonVertexDofs
(
feSpace
,
boundIt
->
rankObj
.
ithObj
,
boundIt
->
rankObj
.
elType
,
dofs
);
}
// Send the global indices to the rank on the other side.
...
...
@@ -1813,8 +1832,14 @@ namespace AMDiS {
for
(
std
::
vector
<
AtomicBoundary
>::
iterator
boundIt
=
it
->
second
.
begin
();
boundIt
!=
it
->
second
.
end
();
++
boundIt
)
{
DofContainer
tmpdofs
;
boundIt
->
rankObj
.
el
->
getNonVertexDofs
(
feSpace
,
boundIt
->
rankObj
.
ithObj
,
tmpdofs
);
boundIt
->
rankObj
.
el
->
getVertexDofs
(
feSpace
,
boundIt
->
rankObj
.
ithObj
,
tmpdofs
,
true
);
boundIt
->
rankObj
.
el
->
getNonVertexDofs
(
feSpace
,
boundIt
->
rankObj
.
ithObj
,
boundIt
->
rankObj
.
elType
,
tmpdofs
);
boundIt
->
rankObj
.
el
->
getVertexDofs
(
feSpace
,
boundIt
->
rankObj
.
ithObj
,
boundIt
->
rankObj
.
elType
,
tmpdofs
,
true
);
for
(
int
j
=
static_cast
<
int
>
(
tmpdofs
.
size
())
-
1
;
j
>=
0
;
j
--
)
dofs
.
push_back
(
tmpdofs
[
j
]);
}
...
...
@@ -1834,8 +1859,9 @@ namespace AMDiS {
sendBuffers
.
clear
();
recvBuffers
.
clear
();
TEST_EXIT_DBG
(
mesh
->
getDim
()
==
2
)
(
"Periodic boundary corner problem must be generalized to 3d!
\n
"
);
if
(
dofFromRank
.
size
()
>
0
)
TEST_EXIT_DBG
(
mesh
->
getDim
()
==
2
)
(
"Periodic boundary corner problem must be generalized to 3d!
\n
"
);
requestCounter
=
0
;
for
(
std
::
map
<
DegreeOfFreedom
,
std
::
set
<
int
>
>::
iterator
it
=
dofFromRank
.
begin
();
...
...
@@ -2274,11 +2300,17 @@ namespace AMDiS {
std
::
cout
<<
"[DBG] "
<<
"Rank "
<<
mpiRank
<<
" from rank "
<<
it
->
first
<<
" expect coords ("
;
for
(
int
k
=
0
;
k
<
dimOfWorld
;
k
++
)
std
::
cout
<<
(
it
->
second
)[
i
][
k
]
<<
" , "
;
for
(
int
k
=
0
;
k
<
dimOfWorld
;
k
++
)
{
std
::
cout
<<
(
it
->
second
)[
i
][
k
];
if
(
k
+
1
<
dimOfWorld
)
std
::
cout
<<
" / "
;
}
std
::
cout
<<
") received coords ("
;
for
(
int
k
=
0
;
k
<
dimOfWorld
;
k
++
)
std
::
cout
<<
recvCoordsBuffer
[
it
->
first
][
i
*
dimOfWorld
+
k
]
<<
" , "
;
for
(
int
k
=
0
;
k
<
dimOfWorld
;
k
++
)
{
std
::
cout
<<
recvCoordsBuffer
[
it
->
first
][
i
*
dimOfWorld
+
k
];
if
(
k
+
1
<
dimOfWorld
)
std
::
cout
<<
" / "
;
}
std
::
cout
<<
")"
<<
std
::
endl
;
}
...
...
AMDiS/src/RefinementManager2d.cc
View file @
e5b12c1a
...
...
@@ -19,17 +19,11 @@ namespace AMDiS {
{
FUNCNAME
(
"RefinementManager::refineFunction()"
);
// if (MPI::COMM_WORLD.Get_rank() == 0)
// std::cout << "IN EL = " << el_info->getElement()->getIndex() << std::endl;
bool
bound
=
false
;
DegreeOfFreedom
*
edge
[
2
];
RCNeighbourList
*
refineList
=
new
RCNeighbourList
(
2
);
if
(
el_info
->
getElement
()
->
getMark
()
<=
0
)
{
// if (MPI::COMM_WORLD.Get_rank() == 0)
// std::cout << "RETURN!" << std::endl;
delete
refineList
;
// Element may not be refined.
...
...
@@ -90,15 +84,8 @@ namespace AMDiS {
firstNewDOF
=
newDOF
;
if
(
lastNewDOF
!=
-
1
)
{
int
i
=
0
;
for
(
it
=
mesh
->
getPeriodicAssociations
().
begin
();
it
!=
end
;
++
it
)
{
// if (MPI::COMM_WORLD.Get_rank() == 0)
// std::cout << "i = " << i++ << std::endl;
if
(
it
->
second
)
{
// if (MPI::COMM_WORLD.Get_rank() == 0)
// std::cout << "*: " << newDOF << " " << lastNewDOF << std::endl;
if
(((
*
(
it
->
second
))[
edge
[
0
][
0
]]
==
last_edge
[
0
][
0
]
&&
(
*
(
it
->
second
))[
edge
[
1
][
0
]]
==
last_edge
[
1
][
0
])
||
((
*
(
it
->
second
))[
edge
[
0
][
0
]]
==
last_edge
[
1
][
0
]
&&
...
...
@@ -125,9 +112,6 @@ namespace AMDiS {
(
*
(
it
->
second
))[
first_edge
[
1
][
0
]]
==
last_edge
[
1
][
0
])
||
((
*
(
it
->
second
))[
first_edge
[
0
][
0
]]
==
last_edge
[
1
][
0
]
&&