Commit 884ca79b authored by Thomas Witkowski's avatar Thomas Witkowski
Browse files

Speedup assembling.

parent 85ed6370
...@@ -30,10 +30,10 @@ ...@@ -30,10 +30,10 @@
# the same distribution terms that you use for the rest of that program. # the same distribution terms that you use for the rest of that program.
# A sed program that does not truncate output. # A sed program that does not truncate output.
SED="/usr/bin/sed" SED="/bin/sed"
# Sed that helps us avoid accidentally triggering echo(1) options like -n. # Sed that helps us avoid accidentally triggering echo(1) options like -n.
Xsed="/usr/bin/sed -e 1s/^X//" Xsed="/bin/sed -e 1s/^X//"
# The HP-UX ksh and POSIX shell print the target directory to stdout # The HP-UX ksh and POSIX shell print the target directory to stdout
# if CDPATH is set. # if CDPATH is set.
...@@ -44,7 +44,7 @@ available_tags=" CXX F77" ...@@ -44,7 +44,7 @@ available_tags=" CXX F77"
# ### BEGIN LIBTOOL CONFIG # ### BEGIN LIBTOOL CONFIG
# Libtool was configured on host p2d020: # Libtool was configured on host NWRW15:
# Shell to use when invoking shell scripts. # Shell to use when invoking shell scripts.
SHELL="/bin/sh" SHELL="/bin/sh"
...@@ -66,12 +66,12 @@ fast_install=yes ...@@ -66,12 +66,12 @@ fast_install=yes
# The host system. # The host system.
host_alias= host_alias=
host=x86_64-unknown-linux-gnu host=i686-pc-linux-gnu
host_os=linux-gnu host_os=linux-gnu
# The build system. # The build system.
build_alias= build_alias=
build=x86_64-unknown-linux-gnu build=i686-pc-linux-gnu
build_os=linux-gnu build_os=linux-gnu
# An echo program that does not interpret backslashes. # An echo program that does not interpret backslashes.
...@@ -82,13 +82,13 @@ AR="ar" ...@@ -82,13 +82,13 @@ AR="ar"
AR_FLAGS="cru" AR_FLAGS="cru"
# A C compiler. # A C compiler.
LTCC="/licsoft/libraries/openmpi/1.2.6/64bit/bin/mpicc" LTCC="gcc"
# LTCC compiler flags. # LTCC compiler flags.
LTCFLAGS="-g -O2" LTCFLAGS="-g -O2"
# A language-specific compiler. # A language-specific compiler.
CC="/licsoft/libraries/openmpi/1.2.6/64bit/bin/mpicc" CC="gcc"
# Is the compiler the GNU C compiler? # Is the compiler the GNU C compiler?
with_gcc=yes with_gcc=yes
...@@ -97,7 +97,7 @@ with_gcc=yes ...@@ -97,7 +97,7 @@ with_gcc=yes
EGREP="grep -E" EGREP="grep -E"
# The linker used to build libraries. # The linker used to build libraries.
LD="/usr/x86_64-suse-linux/bin/ld -m elf_x86_64" LD="/usr/bin/ld"
# Whether we need hard or soft links. # Whether we need hard or soft links.
LN_S="ln -s" LN_S="ln -s"
...@@ -171,7 +171,7 @@ dlopen_self=unknown ...@@ -171,7 +171,7 @@ dlopen_self=unknown
dlopen_self_static=unknown dlopen_self_static=unknown
# Compiler flag to prevent dynamic linking. # Compiler flag to prevent dynamic linking.
link_static_flag="" link_static_flag="-static"
# Compiler flag to turn off builtin functions. # Compiler flag to turn off builtin functions.
no_builtin_flag=" -fno-builtin" no_builtin_flag=" -fno-builtin"
...@@ -325,10 +325,10 @@ variables_saved_for_relink="PATH LD_LIBRARY_PATH LD_RUN_PATH GCC_EXEC_PREFIX COM ...@@ -325,10 +325,10 @@ variables_saved_for_relink="PATH LD_LIBRARY_PATH LD_RUN_PATH GCC_EXEC_PREFIX COM
link_all_deplibs=unknown link_all_deplibs=unknown
# Compile-time system search path for libraries # Compile-time system search path for libraries
sys_lib_search_path_spec=" /usr/lib64/gcc/x86_64-suse-linux/4.1.2/ /usr/lib/gcc/x86_64-suse-linux/4.1.2/ /usr/lib64/gcc/x86_64-suse-linux/4.1.2/../../../../x86_64-suse-linux/lib/x86_64-suse-linux/4.1.2/ /usr/lib64/gcc/x86_64-suse-linux/4.1.2/../../../../x86_64-suse-linux/lib/../lib64/ /usr/lib64/gcc/x86_64-suse-linux/4.1.2/../../../x86_64-suse-linux/4.1.2/ /usr/lib64/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/" 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/"
# Run-time system search path for libraries # Run-time system search path for libraries
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 " sys_lib_dlsearch_path_spec="/lib /usr/lib /usr/lib/octave-2.9.9 /usr/lib/qt-3.3/lib "
# Fix the shell variable $srcfile for the compiler. # Fix the shell variable $srcfile for the compiler.
fix_srcfile_path="" fix_srcfile_path=""
...@@ -6760,7 +6760,7 @@ build_old_libs=`case $build_libtool_libs in yes) $echo no;; *) $echo yes;; esac` ...@@ -6760,7 +6760,7 @@ build_old_libs=`case $build_libtool_libs in yes) $echo no;; *) $echo yes;; esac`
# End: # End:
# ### BEGIN LIBTOOL TAG CONFIG: CXX # ### BEGIN LIBTOOL TAG CONFIG: CXX
# Libtool was configured on host p2d020: # Libtool was configured on host NWRW15:
# Shell to use when invoking shell scripts. # Shell to use when invoking shell scripts.
SHELL="/bin/sh" SHELL="/bin/sh"
...@@ -6782,12 +6782,12 @@ fast_install=yes ...@@ -6782,12 +6782,12 @@ fast_install=yes
# The host system. # The host system.
host_alias= host_alias=
host=x86_64-unknown-linux-gnu host=i686-pc-linux-gnu
host_os=linux-gnu host_os=linux-gnu
# The build system. # The build system.
build_alias= build_alias=
build=x86_64-unknown-linux-gnu build=i686-pc-linux-gnu
build_os=linux-gnu build_os=linux-gnu
# An echo program that does not interpret backslashes. # An echo program that does not interpret backslashes.
...@@ -6798,13 +6798,13 @@ AR="ar" ...@@ -6798,13 +6798,13 @@ AR="ar"
AR_FLAGS="cru" AR_FLAGS="cru"
# A C compiler. # A C compiler.
LTCC="/licsoft/libraries/openmpi/1.2.6/64bit/bin/mpicc" LTCC="gcc"
# LTCC compiler flags. # LTCC compiler flags.
LTCFLAGS="-g -O2" LTCFLAGS="-g -O2"
# A language-specific compiler. # A language-specific compiler.
CC="/licsoft/libraries/openmpi/1.2.6/64bit/bin/mpiCC" CC="g++"
# Is the compiler the GNU C compiler? # Is the compiler the GNU C compiler?
with_gcc=yes with_gcc=yes
...@@ -6813,7 +6813,7 @@ with_gcc=yes ...@@ -6813,7 +6813,7 @@ with_gcc=yes
EGREP="grep -E" EGREP="grep -E"
# The linker used to build libraries. # The linker used to build libraries.
LD="/usr/x86_64-suse-linux/bin/ld -m elf_x86_64" LD="/usr/bin/ld"
# Whether we need hard or soft links. # Whether we need hard or soft links.
LN_S="ln -s" LN_S="ln -s"
...@@ -6887,7 +6887,7 @@ dlopen_self=unknown ...@@ -6887,7 +6887,7 @@ dlopen_self=unknown
dlopen_self_static=unknown dlopen_self_static=unknown
# Compiler flag to prevent dynamic linking. # Compiler flag to prevent dynamic linking.
link_static_flag="" link_static_flag="-static"
# Compiler flag to turn off builtin functions. # Compiler flag to turn off builtin functions.
no_builtin_flag=" -fno-builtin" no_builtin_flag=" -fno-builtin"
...@@ -6942,11 +6942,11 @@ striplib="strip --strip-unneeded" ...@@ -6942,11 +6942,11 @@ striplib="strip --strip-unneeded"
# Dependencies to place before the objects being linked to create a # Dependencies to place before the objects being linked to create a
# shared library. # shared library.
predep_objects="/usr/lib64/gcc/x86_64-suse-linux/4.1.2/../../../../lib64/crti.o /usr/lib64/gcc/x86_64-suse-linux/4.1.2/crtbeginS.o" predep_objects="/usr/lib/gcc/i386-redhat-linux/4.1.2/../../../crti.o /usr/lib/gcc/i386-redhat-linux/4.1.2/crtbeginS.o"
# Dependencies to place after the objects being linked to create a # Dependencies to place after the objects being linked to create a
# shared library. # shared library.
postdep_objects="/usr/lib64/gcc/x86_64-suse-linux/4.1.2/crtendS.o /usr/lib64/gcc/x86_64-suse-linux/4.1.2/../../../../lib64/crtn.o" postdep_objects="/usr/lib/gcc/i386-redhat-linux/4.1.2/crtendS.o /usr/lib/gcc/i386-redhat-linux/4.1.2/../../../crtn.o"
# Dependencies to place before the objects being linked to create a # Dependencies to place before the objects being linked to create a
# shared library. # shared library.
...@@ -6954,11 +6954,11 @@ predeps="" ...@@ -6954,11 +6954,11 @@ predeps=""
# Dependencies to place after the objects being linked to create a # Dependencies to place after the objects being linked to create a
# shared library. # shared library.
postdeps="-lmpi_cxx -lmpi -lopen-rte -lopen-pal -libverbs -lrt -lnuma -ldl -lnsl -lutil -ldl -lstdc++ -lm -lgcc_s -lpthread -lc -lgcc_s" postdeps="-lstdc++ -lm -lgcc_s -lc -lgcc_s"
# The library search path used internally by the compiler when linking # The library search path used internally by the compiler when linking
# a shared library. # a shared library.
compiler_lib_search_path="-L/usr/lib64 -L/licsoft/libraries/openmpi/1.2.6/64bit/lib -L/usr/lib64/gcc/x86_64-suse-linux/4.1.2 -L/usr/lib64/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/../../.." 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/../../.."
# Method to check whether dependent libraries are shared objects. # Method to check whether dependent libraries are shared objects.
deplibs_check_method="pass_all" deplibs_check_method="pass_all"
...@@ -7038,10 +7038,10 @@ variables_saved_for_relink="PATH LD_LIBRARY_PATH LD_RUN_PATH GCC_EXEC_PREFIX COM ...@@ -7038,10 +7038,10 @@ variables_saved_for_relink="PATH LD_LIBRARY_PATH LD_RUN_PATH GCC_EXEC_PREFIX COM
link_all_deplibs=unknown link_all_deplibs=unknown
# Compile-time system search path for libraries # Compile-time system search path for libraries
sys_lib_search_path_spec=" /usr/lib64/gcc/x86_64-suse-linux/4.1.2/ /usr/lib/gcc/x86_64-suse-linux/4.1.2/ /usr/lib64/gcc/x86_64-suse-linux/4.1.2/../../../../x86_64-suse-linux/lib/x86_64-suse-linux/4.1.2/ /usr/lib64/gcc/x86_64-suse-linux/4.1.2/../../../../x86_64-suse-linux/lib/../lib64/ /usr/lib64/gcc/x86_64-suse-linux/4.1.2/../../../x86_64-suse-linux/4.1.2/ /usr/lib64/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/" 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/"
# Run-time system search path for libraries # Run-time system search path for libraries
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 " sys_lib_dlsearch_path_spec="/lib /usr/lib /usr/lib/octave-2.9.9 /usr/lib/qt-3.3/lib "
# Fix the shell variable $srcfile for the compiler. # Fix the shell variable $srcfile for the compiler.
fix_srcfile_path="" fix_srcfile_path=""
...@@ -7065,7 +7065,7 @@ include_expsyms="" ...@@ -7065,7 +7065,7 @@ include_expsyms=""
# ### BEGIN LIBTOOL TAG CONFIG: F77 # ### BEGIN LIBTOOL TAG CONFIG: F77
# Libtool was configured on host p2d020: # Libtool was configured on host NWRW15:
# Shell to use when invoking shell scripts. # Shell to use when invoking shell scripts.
SHELL="/bin/sh" SHELL="/bin/sh"
...@@ -7087,12 +7087,12 @@ fast_install=yes ...@@ -7087,12 +7087,12 @@ fast_install=yes
# The host system. # The host system.
host_alias= host_alias=
host=x86_64-unknown-linux-gnu host=i686-pc-linux-gnu
host_os=linux-gnu host_os=linux-gnu
# The build system. # The build system.
build_alias= build_alias=
build=x86_64-unknown-linux-gnu build=i686-pc-linux-gnu
build_os=linux-gnu build_os=linux-gnu
# An echo program that does not interpret backslashes. # An echo program that does not interpret backslashes.
...@@ -7103,7 +7103,7 @@ AR="ar" ...@@ -7103,7 +7103,7 @@ AR="ar"
AR_FLAGS="cru" AR_FLAGS="cru"
# A C compiler. # A C compiler.
LTCC="/licsoft/libraries/openmpi/1.2.6/64bit/bin/mpicc" LTCC="gcc"
# LTCC compiler flags. # LTCC compiler flags.
LTCFLAGS="-g -O2" LTCFLAGS="-g -O2"
...@@ -7112,13 +7112,13 @@ LTCFLAGS="-g -O2" ...@@ -7112,13 +7112,13 @@ LTCFLAGS="-g -O2"
CC="g77" CC="g77"
# Is the compiler the GNU C compiler? # Is the compiler the GNU C compiler?
with_gcc= with_gcc=yes
# An ERE matcher. # An ERE matcher.
EGREP="grep -E" EGREP="grep -E"
# The linker used to build libraries. # The linker used to build libraries.
LD="/usr/x86_64-suse-linux/bin/ld -m elf_x86_64" LD="/usr/bin/ld"
# Whether we need hard or soft links. # Whether we need hard or soft links.
LN_S="ln -s" LN_S="ln -s"
...@@ -7346,10 +7346,10 @@ variables_saved_for_relink="PATH LD_LIBRARY_PATH LD_RUN_PATH GCC_EXEC_PREFIX COM ...@@ -7346,10 +7346,10 @@ variables_saved_for_relink="PATH LD_LIBRARY_PATH LD_RUN_PATH GCC_EXEC_PREFIX COM
link_all_deplibs=unknown link_all_deplibs=unknown
# Compile-time system search path for libraries # Compile-time system search path for libraries
sys_lib_search_path_spec=" /usr/lib64/gcc-lib/x86_64-suse-linux/3.3.5/ /usr/lib/gcc/x86_64-suse-linux/3.3.5/ /usr/lib64/gcc-lib/x86_64-suse-linux/3.3.5/../../../../x86_64-suse-linux/lib/x86_64-suse-linux/3.3.5/ /usr/lib64/gcc-lib/x86_64-suse-linux/3.3.5/../../../../x86_64-suse-linux/lib/ /usr/lib64/gcc-lib/x86_64-suse-linux/3.3.5/../../../x86_64-suse-linux/3.3.5/ /usr/lib64/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/" 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/"
# Run-time system search path for libraries # Run-time system search path for libraries
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 " sys_lib_dlsearch_path_spec="/lib /usr/lib /usr/lib/octave-2.9.9 /usr/lib/qt-3.3/lib "
# Fix the shell variable $srcfile for the compiler. # Fix the shell variable $srcfile for the compiler.
fix_srcfile_path="" fix_srcfile_path=""
......
...@@ -285,6 +285,17 @@ namespace AMDiS { ...@@ -285,6 +285,17 @@ namespace AMDiS {
return NULL; return NULL;
} }
inline void getLocalIndices(const Element *el,
const DOFAdmin *admin,
std::vector<DegreeOfFreedom> &indices) const
{
FUNCNAME("BasisFunction::getLocalIndices()");
TEST_EXIT_DBG(indices.size() >= nBasFcts)("Index vector is too small!\n");
getLocalIndices(el, admin, &(indices[0]));
}
/// Returns local dof indices of the element for the given fe space. /// Returns local dof indices of the element for the given fe space.
virtual void getLocalIndicesVec(const Element *el, virtual void getLocalIndicesVec(const Element *el,
const DOFAdmin *admin, const DOFAdmin *admin,
......
...@@ -167,66 +167,51 @@ namespace AMDiS { ...@@ -167,66 +167,51 @@ namespace AMDiS {
return *this; return *this;
} }
void DOFMatrix::addElementMatrix(double sign, void DOFMatrix::addElementMatrix(const ElementMatrix& elMat,
const ElementMatrix& elMat,
const BoundaryType *bound, const BoundaryType *bound,
ElInfo* rowElInfo, ElInfo* rowElInfo,
ElInfo* colElInfo, ElInfo* colElInfo)
bool add)
{ {
FUNCNAME("DOFMatrix::addElementMatrix()"); FUNCNAME("DOFMatrix::addElementMatrix()");
TEST_EXIT_DBG(inserter)("DOFMatrix is not in insertion mode"); TEST_EXIT_DBG(inserter)("DOFMatrix is not in insertion mode");
inserter_type &ins= *inserter;
// === Get indices mapping from local to global matrix indices. === // === Get indices mapping from local to global matrix indices. ===
rowFESpace->getBasisFcts()->getLocalIndicesVec(rowElInfo->getElement(), rowFESpace->getBasisFcts()->getLocalIndices(rowElInfo->getElement(),
rowFESpace->getAdmin(), rowFESpace->getAdmin(),
&rowIndices); rowIndices);
if (rowFESpace == colFESpace) { if (rowFESpace == colFESpace) {
colIndices = rowIndices; *inserter << element_matrix(elMat, rowIndices, rowIndices);
} else { } else {
if (colElInfo) { if (colElInfo) {
colFESpace->getBasisFcts()->getLocalIndicesVec(colElInfo->getElement(), colFESpace->getBasisFcts()->getLocalIndices(colElInfo->getElement(),
colFESpace->getAdmin(), colFESpace->getAdmin(),
&colIndices); colIndices);
} else { } else {
// If there is no colElInfo pointer, use rowElInfo the get the indices. // If there is no colElInfo pointer, use rowElInfo the get the indices.
colFESpace->getBasisFcts()->getLocalIndicesVec(rowElInfo->getElement(), colFESpace->getBasisFcts()->getLocalIndices(rowElInfo->getElement(),
colFESpace->getAdmin(), colFESpace->getAdmin(),
&colIndices); colIndices);
}
} }
// === Add element matrix to the global matrix using the indices mapping. === *inserter << element_matrix(elMat, rowIndices, colIndices);
}
for (int i = 0; i < nRow; i++) { // for all rows of element matrix
DegreeOfFreedom row = rowIndices[i];
for (int i = 0; i < nRow; i++) {
BoundaryCondition *condition = BoundaryCondition *condition =
bound ? boundaryManager->getBoundaryCondition(bound[i]) : NULL; bound ? boundaryManager->getBoundaryCondition(bound[i]) : NULL;
if (condition && condition->isDirichlet()) { if (condition && condition->isDirichlet()) {
if (condition->applyBoundaryCondition()) { if (condition->applyBoundaryCondition()) {
#ifdef HAVE_PARALLEL_DOMAIN_AMDIS #ifdef HAVE_PARALLEL_DOMAIN_AMDIS
if (rankDofs[row]) if (rankDofs[rowIndices[i]])
applyDBCs.insert(static_cast<int>(row)); applyDBCs.insert(static_cast<int>(rowIndices[i]));
#else #else
applyDBCs.insert(static_cast<int>(row)); applyDBCs.insert(static_cast<int>(rowIndices[i]));
#endif #endif
} }
} else {
for (int j = 0; j < nCol; j++) { // for all columns
DegreeOfFreedom col = colIndices[j];
double entry = elMat[i][j];
if (add)
ins[row][col] += sign * entry;
else
ins[row][col] = sign * entry;
}
} }
} }
} }
...@@ -251,7 +236,10 @@ namespace AMDiS { ...@@ -251,7 +236,10 @@ namespace AMDiS {
if ((*it)->getNeedDualTraverse() == false) if ((*it)->getNeedDualTraverse() == false)
(*it)->getElementMatrix(elInfo, elementMatrix, *factorIt ? **factorIt : 1.0); (*it)->getElementMatrix(elInfo, elementMatrix, *factorIt ? **factorIt : 1.0);
addElementMatrix(factor, elementMatrix, bound, elInfo, NULL); if (factor != 1.0)
elementMatrix *= factor;
addElementMatrix(elementMatrix, bound, elInfo, NULL);
} }
void DOFMatrix::assemble(double factor, ElInfo *elInfo, const BoundaryType *bound, void DOFMatrix::assemble(double factor, ElInfo *elInfo, const BoundaryType *bound,
...@@ -263,7 +251,11 @@ namespace AMDiS { ...@@ -263,7 +251,11 @@ namespace AMDiS {
set_to_zero(elementMatrix); set_to_zero(elementMatrix);
op->getElementMatrix(elInfo, elementMatrix, factor); op->getElementMatrix(elInfo, elementMatrix, factor);
addElementMatrix(factor, elementMatrix, bound, elInfo, NULL);
if (factor != 1.0)
elementMatrix *= factor;
addElementMatrix(elementMatrix, bound, elInfo, NULL);
} }
void DOFMatrix::assemble(double factor, void DOFMatrix::assemble(double factor,
...@@ -292,7 +284,10 @@ namespace AMDiS { ...@@ -292,7 +284,10 @@ namespace AMDiS {
} }
} }
addElementMatrix(factor, elementMatrix, bound, rowElInfo, colElInfo); if (factor != 1.0)
elementMatrix *= factor;
addElementMatrix(elementMatrix, bound, rowElInfo, colElInfo);
} }
void DOFMatrix::assemble2(double factor, void DOFMatrix::assemble2(double factor,
...@@ -327,7 +322,10 @@ namespace AMDiS { ...@@ -327,7 +322,10 @@ namespace AMDiS {
} }
} }
addElementMatrix(factor, elementMatrix, bound, mainElInfo, NULL); if (factor != 1.0)
elementMatrix *= factor;
addElementMatrix(elementMatrix, bound, mainElInfo, NULL);
} }
void DOFMatrix::finishAssembling() void DOFMatrix::finishAssembling()
......
...@@ -55,7 +55,7 @@ namespace AMDiS { ...@@ -55,7 +55,7 @@ namespace AMDiS {
typedef mtl::compressed2D<value_type> base_matrix_type; typedef mtl::compressed2D<value_type> base_matrix_type;
/// Type of inserter for the base matrix; /// Type of inserter for the base matrix;
typedef mtl::matrix::inserter<base_matrix_type> inserter_type; typedef mtl::matrix::inserter<base_matrix_type, mtl::operations::update_plus<value_type> > inserter_type;
private: private:
/// Symbolic constant for an unused matrix entry /// Symbolic constant for an unused matrix entry
...@@ -227,12 +227,10 @@ namespace AMDiS { ...@@ -227,12 +227,10 @@ namespace AMDiS {
Operator *op = NULL); Operator *op = NULL);
/// Adds an element matrix to \ref matrix /// Adds an element matrix to \ref matrix
void addElementMatrix(double sign, void addElementMatrix(const ElementMatrix& elMat,
const ElementMatrix& elMat,
const BoundaryType *bound, const BoundaryType *bound,
ElInfo* rowElInfo, ElInfo* rowElInfo,
ElInfo* colElInfo, ElInfo* colElInfo);
bool add = true);
/* \brief /* \brief
* That function must be called after the matrix assembling has been finished. * That function must be called after the matrix assembling has been finished.
...@@ -391,8 +389,8 @@ namespace AMDiS { ...@@ -391,8 +389,8 @@ namespace AMDiS {
if (num_rows(matrix) != 0) if (num_rows(matrix) != 0)
nnzPerRow = int(double(matrix.nnz()) / num_rows(matrix) * 1.2); nnzPerRow = int(double(matrix.nnz()) / num_rows(matrix) * 1.2);
if (nnzPerRow < 5) if (nnzPerRow < 20)
nnzPerRow= 5; nnzPerRow = 20;
} }
/// Returns \ref nnzPerRow. /// Returns \ref nnzPerRow.
...@@ -541,10 +539,10 @@ namespace AMDiS { ...@@ -541,10 +539,10 @@ namespace AMDiS {
int nCol; int nCol;
/// Maps local row indices of an element to global matrix indices. /// Maps local row indices of an element to global matrix indices.
Vector<DegreeOfFreedom> rowIndices; std::vector<DegreeOfFreedom> rowIndices;
/// Maps local col indices of an element to global matrix indices. /// Maps local col indices of an element to global matrix indices.
Vector<DegreeOfFreedom> colIndices; std::vector<DegreeOfFreedom> colIndices;
/* \brief /* \brief
* A set of row indices. When assembling the DOF matrix, all rows, that * A set of row indices. When assembling the DOF matrix, all rows, that
......
...@@ -640,26 +640,6 @@ namespace AMDiS { ...@@ -640,26 +640,6 @@ namespace AMDiS {
if (useGetBound) if (useGetBound)
assembleFlag |= Mesh::FILL_BOUND; assembleFlag |= Mesh::FILL_BOUND;
#if 0
for (int i = 0; i < nComponents; i++) {
for (int j = 0; j < nComponents; j++) {
if ((*systemMatrix)[i][j]) {
DOFMatrix* dof_matrix= (*systemMatrix)[i][j];
DOFMatrix::base_matrix_type& base_matrix= dof_matrix->getBaseMatrix();
dof_matrix->calculateNnz();