Commit e5b12c1a authored by Thomas Witkowski's avatar Thomas Witkowski

First test with 3d parallelization.

parent eda641eb
......@@ -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="gcc"
LTCC="/licsoft/libraries/openmpi/1.2.6/64bit/bin/mpicc"
# LTCC compiler flags.
LTCFLAGS="-g -O2"
# A language-specific compiler.
CC="gcc"
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"
......@@ -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="/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_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="gcc"
LTCC="/licsoft/libraries/openmpi/1.2.6/64bit/bin/mpicc"
# 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/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
# 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
# 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/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.
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="/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_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="gcc"
LTCC="/licsoft/libraries/openmpi/1.2.6/64bit/bin/mpicc"
# 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="/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_srcfile_path=""
......
......@@ -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_);
......
......@@ -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;
}
......
......@@ -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] ithEdge 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 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 non 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] ithEdge 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;
......
......@@ -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.
......
......@@ -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).
......
......@@ -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()");
......
......@@ -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;
}
......
......@@ -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] &&
(*(it->second))[first_edge[1][0]] == last_edge[0][0])) {
// if (MPI::COMM_WORLD.Get_rank() == 0)
// std::cout << "**: " << newDOF << " " << lastNewDOF << std::endl;
(*(it->second))[lastNewDOF] = firstNewDOF;
(*(it->second))[firstNewDOF] = lastNewDOF;
}
......
......@@ -3,6 +3,7 @@
#include "Mesh.h"
#include "CoarseningManager.h"
#include "FixVec.h"
#include "ElementDofIterator.h"
namespace AMDiS {
......@@ -69,10 +70,10 @@ namespace AMDiS {
}
int Tetrahedron::getVertexOfPosition(GeoIndex position,
int positionIndex,
int vertexIndex) const
int positionIndex,
int vertexIndex) const
{
FUNCNAME("Triangle::getVertexOfPosition");
FUNCNAME("Triangle::getVertexOfPosition()");