Commit c8b7c594 authored by Thomas Witkowski's avatar Thomas Witkowski
Browse files

Work on parallelization for higher order elements.

parent 710471a0
...@@ -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="/bin/sed" SED="/usr/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="/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 # 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 NWRW15: # Libtool was configured on host p2q024:
# 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=i686-pc-linux-gnu host=x86_64-unknown-linux-gnu
host_os=linux-gnu host_os=linux-gnu
# The build system. # The build system.
build_alias= build_alias=
build=i686-pc-linux-gnu build=x86_64-unknown-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,25 +82,25 @@ AR="ar" ...@@ -82,25 +82,25 @@ AR="ar"
AR_FLAGS="cru" AR_FLAGS="cru"
# A C compiler. # A C compiler.
LTCC="gcc" LTCC="/licsoft/libraries/openmpi/1.2.6/64bit/bin/mpicc"
# LTCC compiler flags. # LTCC compiler flags.
LTCFLAGS="-g -O2" LTCFLAGS="-g -O2"
# A language-specific compiler. # A language-specific compiler.
CC="gcc" CC="/licsoft/libraries/openmpi/1.2.6/64bit/bin/mpicc"
# Is the compiler the GNU C compiler? # Is the compiler the GNU C compiler?
with_gcc=yes 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` gcc_ver=`gcc -dumpversion`
# 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/bin/ld" LD="/usr/x86_64-suse-linux/bin/ld -m elf_x86_64"
# Whether we need hard or soft links. # Whether we need hard or soft links.
LN_S="ln -s" LN_S="ln -s"
...@@ -174,7 +174,7 @@ dlopen_self=unknown ...@@ -174,7 +174,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="-static" link_static_flag=""
# Compiler flag to turn off builtin functions. # Compiler flag to turn off builtin functions.
no_builtin_flag=" -fno-builtin" no_builtin_flag=" -fno-builtin"
...@@ -328,10 +328,10 @@ variables_saved_for_relink="PATH LD_LIBRARY_PATH LD_RUN_PATH GCC_EXEC_PREFIX COM ...@@ -328,10 +328,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=`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 # 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="/lib64 /usr/lib64 /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 the shell variable $srcfile for the compiler.
fix_srcfile_path="" fix_srcfile_path=""
...@@ -6763,7 +6763,7 @@ build_old_libs=`case $build_libtool_libs in yes) $echo no;; *) $echo yes;; esac` ...@@ -6763,7 +6763,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 NWRW15: # Libtool was configured on host p2q024:
# Shell to use when invoking shell scripts. # Shell to use when invoking shell scripts.
SHELL="/bin/sh" SHELL="/bin/sh"
...@@ -6785,12 +6785,12 @@ fast_install=yes ...@@ -6785,12 +6785,12 @@ fast_install=yes
# The host system. # The host system.
host_alias= host_alias=
host=i686-pc-linux-gnu host=x86_64-unknown-linux-gnu
host_os=linux-gnu host_os=linux-gnu
# The build system. # The build system.
build_alias= build_alias=
build=i686-pc-linux-gnu build=x86_64-unknown-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.
...@@ -6801,25 +6801,25 @@ AR="ar" ...@@ -6801,25 +6801,25 @@ AR="ar"
AR_FLAGS="cru" AR_FLAGS="cru"
# A C compiler. # A C compiler.
LTCC="gcc" LTCC="/licsoft/libraries/openmpi/1.2.6/64bit/bin/mpicc"
# LTCC compiler flags. # LTCC compiler flags.
LTCFLAGS="-g -O2" LTCFLAGS="-g -O2"
# A language-specific compiler. # A language-specific compiler.
CC="g++" CC="/licsoft/libraries/openmpi/1.2.6/64bit/bin/mpiCC"
# Is the compiler the GNU C compiler? # Is the compiler the GNU C compiler?
with_gcc=yes 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` gcc_ver=`gcc -dumpversion`
# 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/bin/ld" LD="/usr/x86_64-suse-linux/bin/ld -m elf_x86_64"
# Whether we need hard or soft links. # Whether we need hard or soft links.
LN_S="ln -s" LN_S="ln -s"
...@@ -6893,7 +6893,7 @@ dlopen_self=unknown ...@@ -6893,7 +6893,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="-static" link_static_flag=""
# Compiler flag to turn off builtin functions. # Compiler flag to turn off builtin functions.
no_builtin_flag=" -fno-builtin" no_builtin_flag=" -fno-builtin"
...@@ -6948,11 +6948,11 @@ striplib="strip --strip-unneeded" ...@@ -6948,11 +6948,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=`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/lib64/gcc/x86_64-suse-linux/4.1.2/../../../../lib64/crti.o /usr/lib64/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 # Dependencies to place after the objects being linked to create a
# shared library. # 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/lib64/gcc/x86_64-suse-linux/4.1.2/crtendS.o /usr/lib64/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 # Dependencies to place before the objects being linked to create a
# shared library. # shared library.
...@@ -6960,11 +6960,11 @@ predeps="" ...@@ -6960,11 +6960,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="-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 # The library search path used internally by the compiler when linking
# a shared library. # 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/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/../../.." | $SED -e "s@${gcc_dir}@\${gcc_dir}@g;s@${gcc_ver}@\${gcc_ver}@g"`
# 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"
...@@ -7044,10 +7044,10 @@ variables_saved_for_relink="PATH LD_LIBRARY_PATH LD_RUN_PATH GCC_EXEC_PREFIX COM ...@@ -7044,10 +7044,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=`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 # 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="/lib64 /usr/lib64 /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 the shell variable $srcfile for the compiler.
fix_srcfile_path="" fix_srcfile_path=""
...@@ -7071,7 +7071,7 @@ include_expsyms="" ...@@ -7071,7 +7071,7 @@ include_expsyms=""
# ### BEGIN LIBTOOL TAG CONFIG: F77 # ### BEGIN LIBTOOL TAG CONFIG: F77
# Libtool was configured on host NWRW15: # Libtool was configured on host p2q024:
# Shell to use when invoking shell scripts. # Shell to use when invoking shell scripts.
SHELL="/bin/sh" SHELL="/bin/sh"
...@@ -7093,12 +7093,12 @@ fast_install=yes ...@@ -7093,12 +7093,12 @@ fast_install=yes
# The host system. # The host system.
host_alias= host_alias=
host=i686-pc-linux-gnu host=x86_64-unknown-linux-gnu
host_os=linux-gnu host_os=linux-gnu
# The build system. # The build system.
build_alias= build_alias=
build=i686-pc-linux-gnu build=x86_64-unknown-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.
...@@ -7109,7 +7109,7 @@ AR="ar" ...@@ -7109,7 +7109,7 @@ AR="ar"
AR_FLAGS="cru" AR_FLAGS="cru"
# A C compiler. # A C compiler.
LTCC="gcc" LTCC="/licsoft/libraries/openmpi/1.2.6/64bit/bin/mpicc"
# LTCC compiler flags. # LTCC compiler flags.
LTCFLAGS="-g -O2" LTCFLAGS="-g -O2"
...@@ -7118,16 +7118,16 @@ LTCFLAGS="-g -O2" ...@@ -7118,16 +7118,16 @@ LTCFLAGS="-g -O2"
CC="g77" CC="g77"
# Is the compiler the GNU C compiler? # 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` gcc_ver=`gcc -dumpversion`
# 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/bin/ld" LD="/usr/x86_64-suse-linux/bin/ld -m elf_x86_64"
# Whether we need hard or soft links. # Whether we need hard or soft links.
LN_S="ln -s" LN_S="ln -s"
...@@ -7355,10 +7355,10 @@ variables_saved_for_relink="PATH LD_LIBRARY_PATH LD_RUN_PATH GCC_EXEC_PREFIX COM ...@@ -7355,10 +7355,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=`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 # 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="/lib64 /usr/lib64 /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 the shell variable $srcfile for the compiler.
fix_srcfile_path="" fix_srcfile_path=""
......
...@@ -133,7 +133,7 @@ namespace AMDiS { ...@@ -133,7 +133,7 @@ namespace AMDiS {
* all routines using this function on the elements need the FILL_BOUND * all routines using this function on the elements need the FILL_BOUND
* flag during mesh traversal; * flag during mesh traversal;
*/ */
virtual void getBound(const ElInfo*, BoundaryType *) const {}; virtual void getBound(const ElInfo*, BoundaryType *) const {}
/// Returns \ref degree of BasisFunction /// Returns \ref degree of BasisFunction
inline const int getDegree() const inline const int getDegree() const
...@@ -197,10 +197,10 @@ namespace AMDiS { ...@@ -197,10 +197,10 @@ namespace AMDiS {
double *coeff) = 0; double *coeff) = 0;
/// WorldVector<double> valued interpol function. /// WorldVector<double> valued interpol function.
virtual const WorldVector<double>* virtual const WorldVector<double>* interpol(const ElInfo *el_info, int no,
interpol(const ElInfo *el_info, int no,
const int *b_no, const int *b_no,
AbstractFunction<WorldVector<double>,WorldVector<double> > *f, AbstractFunction<WorldVector<double>,
WorldVector<double> > *f,
WorldVector<double> *vec) = 0; WorldVector<double> *vec) = 0;
/// Returns the i-th local basis function /// Returns the i-th local basis function
...@@ -305,7 +305,8 @@ namespace AMDiS { ...@@ -305,7 +305,8 @@ namespace AMDiS {
* will be overwritten after the next call. * will be overwritten after the next call.
*/ */
const WorldVector<double>& evalUh(const DimVec<double>& lambda, const WorldVector<double>& evalUh(const DimVec<double>& lambda,
const WorldVector<double>* uh, WorldVector<double>* val) const; const WorldVector<double>* uh,
WorldVector<double>* val) const;
/** \brief /** \brief
* Evaluates the gradient at barycentric coordinates lambda. Lambda is the * Evaluates the gradient at barycentric coordinates lambda. Lambda is the
......
...@@ -47,6 +47,8 @@ namespace AMDiS { ...@@ -47,6 +47,8 @@ namespace AMDiS {
WorldVector<double>& w) const WorldVector<double>& w) const
{ {
testFlag(Mesh::FILL_COORDS);
double c = l[0]; double c = l[0];
for (int j = 0; j < dimOfWorld; j++) for (int j = 0; j < dimOfWorld; j++)
......
...@@ -47,6 +47,10 @@ namespace AMDiS { ...@@ -47,6 +47,10 @@ namespace AMDiS {
// We are finished with all element. // We are finished with all element.
elementPos = 0; elementPos = 0;
// If we have iterated over all positions, we can finish the iteration.
if (pos >= dim)
return false;
// Increase position, i.e., go from vertices to edges to faces and search // Increase position, i.e., go from vertices to edges to faces and search
// for the next position with dofs. // for the next position with dofs.
do { do {
...@@ -55,16 +59,18 @@ namespace AMDiS { ...@@ -55,16 +59,18 @@ namespace AMDiS {
posIndex = INDEX_OF_DIM(pos, dim); posIndex = INDEX_OF_DIM(pos, dim);
// Get number of dofs in this position. // Get number of dofs in this position.
nDofs = admin->getNumberOfDOFs(posIndex); nDofs = admin->getNumberOfDOFs(posIndex);
} while (nDofs == 0 && pos <= dim); } while (nDofs == 0 && pos < dim);
if (pos <= dim) { if (nDofs > 0 && pos <= dim) {
// We have found on more position with dofs. // We have found on more position with dofs.
// Get number of elements in this position, i.e, the number of vertices,. // Get number of elements in this position, i.e, the number of vertices,.
// edges and faces in the given dimension. // edges and faces in the given dimension.
nElements = Global::getGeo(posIndex, dim); nElements = Global::getGeo(posIndex, dim);
// Calculate displacement. Is used if there is more than one dof admin on the mesh. // Calculate displacement. Is used if there is more than one dof admin on the mesh.
n0 = admin->getNumberOfPreDOFs(posIndex); n0 = admin->getNumberOfPreDOFs(posIndex);
// Get first dof index position for the geo index position. // Get first dof index position for the geo index position.
node0 = mesh->getNode(posIndex); node0 = mesh->getNode(posIndex);
} else { } else {
......
...@@ -292,11 +292,10 @@ namespace AMDiS { ...@@ -292,11 +292,10 @@ namespace AMDiS {
macroInfo->fillBoundaryInfo(mesh); macroInfo->fillBoundaryInfo(mesh);
if (mesh->getNumberOfDOFs(CENTER)) { if (mesh->getNumberOfDOFs(CENTER)) {
for (int i = 0; i < mesh->getNumberOfMacros(); i++) { for (int i = 0; i < mesh->getNumberOfMacros(); i++)
const_cast<Element*>(mel[i]->getElement())-> const_cast<Element*>(mel[i]->getElement())->
setDOF(mesh->getNode(CENTER), mesh->getDOF(CENTER)); setDOF(mesh->getNode(CENTER), mesh->getDOF(CENTER));
} }
}
/****************************************************************************/ /****************************************************************************/
/* domain size */ /* domain size */
...@@ -1137,11 +1136,11 @@ namespace AMDiS { ...@@ -1137,11 +1136,11 @@ namespace AMDiS {
mesh->incrementNumberOfFaces(1); mesh->incrementNumberOfFaces(1);
if (mesh->getNumberOfDOFs(FACE)) { if (mesh->getNumberOfDOFs(FACE)) {
TEST_EXIT(!(*(mel+i))->getElement()->getDOF(lnode+k)) TEST_EXIT(!(*(mel+i))->getElement()->getDOF(lnode + k))
("dof %d on element %d already set\n", ("dof %d on element %d already set\n",
lnode+k, (*(mel+i))->getIndex()); lnode+k, (*(mel+i))->getIndex());
const_cast<Element*>((*(mel+i))->getElement())->setDOF(lnode+k, const_cast<Element*>((*(mel+i))->getElement())->setDOF(lnode + k,
mesh->getDOF(FACE)); mesh->getDOF(FACE));
if (neigh) { if (neigh) {
......
...@@ -824,9 +824,8 @@ namespace AMDiS { ...@@ -824,9 +824,8 @@ namespace AMDiS {
c_lambda2[3]); c_lambda2[3]);
if ((c_outside2 < 0) || (c_lambda2[c_outside2] > c_lambda[c_outside])) { if ((c_outside2 < 0) || (c_lambda2[c_outside2] > c_lambda[c_outside])) {
for (int i = 0; i <= dim; i++) { for (int i = 0; i <= dim; i++)
c_lambda[i] = c_lambda2[i]; c_lambda[i] = c_lambda2[i];
}
c_outside = c_outside2; c_outside = c_outside2;
*c_el_info = *c_el_info2; *c_el_info = *c_el_info2;
ichild = 1 - ichild; ichild = 1 - ichild;
...@@ -862,6 +861,33 @@ namespace AMDiS { ...@@ -862,6 +861,33 @@ namespace AMDiS {
return inside; return inside;
} }
bool Mesh::getDofIndexCoords(const DegreeOfFreedom* dof,
const FiniteElemSpace* feSpace,
WorldVector<double>& coords)
{
DimVec<double>* baryCoords;
bool found = false;
TraverseStack stack;
ElInfo *elInfo = stack.traverseFirst(this, -1,
Mesh::CALL_LEAF_EL | Mesh::FILL_COORDS);
while (elInfo) {
for (int i = 0; i < nDOFEl; i++) {
if (elInfo->getElement()->getDOF(i) == dof) {
baryCoords = feSpace->getBasisFcts()->getCoords(i);
elInfo->coordToWorld(*baryCoords, coords);
found = true;
break;
}
}
if (found)
break;
elInfo = stack.traverseNext(elInfo);
}
return found;
}
void Mesh::setDiameter(const WorldVector<double>& w) void Mesh::setDiameter(const WorldVector<double>& w)
{ {
......
...@@ -484,6 +484,23 @@ namespace AMDiS { ...@@ -484,6 +484,23 @@ namespace AMDiS {
const WorldVector<double> *xy0, const WorldVector<double> *xy0,
double *sp); double *sp);
/** \brief
* Returns for a given dof its world coordinates in this mesh. Because we do
* not have any direct connection between dofs and coordinates, this function
* has to search for the element in this mesh, that contains the dof. Than the
* coordinates can be computed. Therefore, this function is very costly and
* should be used for debugging purpose only.
*
* @param[in] dof A pointer to the dof we have to search for.
* @param[in] feSpace The fe space to be used for the search.
* @param[out] coords World vector that stores the coordinates of the dof.
*
* The function returns true, if the dof was found, otherwise false.
*/
bool getDofIndexCoords(const DegreeOfFreedom* dof,
const FiniteElemSpace* feSpace,
WorldVector<double>& coords);
/// Returns FILL_ANY_?D /// Returns FILL_ANY_?D
inline static const Flag& getFillAnyFlag(int dim) inline static const Flag& getFillAnyFlag(int dim)
......
...@@ -11,12 +11,21 @@ ...@@ -11,12 +11,21 @@
#include "DOFMatrix.h" #include "DOFMatrix.h"
#include "DOFVector.h" #include "DOFVector.h"
#include "VtkWriter.h" #include "VtkWriter.h"
#include "ElementDofIterator.h"