Liebe Gitlab-Nutzer, lieber Gitlab-Nutzer, es ist nun möglich sich mittels des ZIH-Logins/LDAP an unserem Dienst anzumelden. Ein Anmelden über dieses erzeugt ein neues Konto. Das alte Konto ist über den Reiter "Standard" erreichbar. Die Administratoren

Dear Gitlab user, it is now possible to log in to our service using the ZIH login/LDAP. Logging in via this will create a new account. The old account can be accessed via the "Standard" tab. The administrators

Commit 159489a8 authored by Thomas Witkowski's avatar Thomas Witkowski
Browse files

* Bugfix in ParallelDomainProblem (segdev)

parent 746b26ef
......@@ -30,10 +30,10 @@
# the same distribution terms that you use for the rest of that program.
# A sed program that does not truncate output.
SED="/bin/sed"
SED="/usr/bin/sed"
# Sed that helps us avoid accidentally triggering echo(1) options like -n.
Xsed="/bin/sed -e 1s/^X//"
Xsed="/usr/bin/sed -e 1s/^X//"
# The HP-UX ksh and POSIX shell print the target directory to stdout
# if CDPATH is set.
......@@ -44,7 +44,7 @@ available_tags=" CXX F77"
# ### BEGIN LIBTOOL CONFIG
# Libtool was configured on host NWRW15:
# Libtool was configured on host deimos103:
# Shell to use when invoking shell scripts.
SHELL="/bin/sh"
......@@ -66,12 +66,12 @@ fast_install=yes
# The host system.
host_alias=
host=i686-pc-linux-gnu
host=x86_64-unknown-linux-gnu
host_os=linux-gnu
# The build system.
build_alias=
build=i686-pc-linux-gnu
build=x86_64-unknown-linux-gnu
build_os=linux-gnu
# An echo program that does not interpret backslashes.
......@@ -82,13 +82,13 @@ AR="ar"
AR_FLAGS="cru"
# A C compiler.
LTCC="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
......@@ -97,7 +97,7 @@ with_gcc=yes
EGREP="grep -E"
# The linker used to build libraries.
LD="/usr/bin/ld"
LD="/usr/x86_64-suse-linux/bin/ld -m elf_x86_64"
# Whether we need hard or soft links.
LN_S="ln -s"
......@@ -171,7 +171,7 @@ dlopen_self=unknown
dlopen_self_static=unknown
# Compiler flag to prevent dynamic linking.
link_static_flag="-static"
link_static_flag=""
# Compiler flag to turn off builtin functions.
no_builtin_flag=" -fno-builtin"
......@@ -325,10 +325,10 @@ variables_saved_for_relink="PATH LD_LIBRARY_PATH LD_RUN_PATH GCC_EXEC_PREFIX COM
link_all_deplibs=unknown
# Compile-time system search path for libraries
sys_lib_search_path_spec=" /usr/lib/gcc/i386-redhat-linux/4.1.2/ /usr/lib/gcc/i386-redhat-linux/4.1.2/ /usr/lib/gcc/i386-redhat-linux/4.1.2/../../../../i386-redhat-linux/lib/i386-redhat-linux/4.1.2/ /usr/lib/gcc/i386-redhat-linux/4.1.2/../../../../i386-redhat-linux/lib/ /usr/lib/gcc/i386-redhat-linux/4.1.2/../../../i386-redhat-linux/4.1.2/ /usr/lib/gcc/i386-redhat-linux/4.1.2/../../../ /lib/i386-redhat-linux/4.1.2/ /lib/ /usr/lib/i386-redhat-linux/4.1.2/ /usr/lib/"
sys_lib_search_path_spec=" /usr/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/"
# Run-time system search path for libraries
sys_lib_dlsearch_path_spec="/lib /usr/lib /usr/lib/octave-2.9.9 /usr/lib/qt-3.3/lib "
sys_lib_dlsearch_path_spec="/lib /usr/lib /usr/X11R6/lib64/Xaw3d /usr/X11R6/lib64 /usr/X11R6/lib/Xaw3d /usr/X11R6/lib /usr/x86_64-suse-linux/lib /usr/local/lib64 /usr/local/lib /opt/kde3/lib64 /opt/kde3/lib /opt/gnome/lib64 /opt/gnome/lib /lib64 /lib /usr/lib64 /usr/lib /opt/cluster/intel/cce/9.1.042/lib /opt/cluster/intel/fce/9.1.036/lib /opt/cluster/Pathscale3.0/lib/2.9.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=""
......@@ -6760,7 +6760,7 @@ build_old_libs=`case $build_libtool_libs in yes) $echo no;; *) $echo yes;; esac`
# End:
# ### BEGIN LIBTOOL TAG CONFIG: CXX
# Libtool was configured on host NWRW15:
# Libtool was configured on host deimos103:
# Shell to use when invoking shell scripts.
SHELL="/bin/sh"
......@@ -6782,12 +6782,12 @@ fast_install=yes
# The host system.
host_alias=
host=i686-pc-linux-gnu
host=x86_64-unknown-linux-gnu
host_os=linux-gnu
# The build system.
build_alias=
build=i686-pc-linux-gnu
build=x86_64-unknown-linux-gnu
build_os=linux-gnu
# An echo program that does not interpret backslashes.
......@@ -6798,13 +6798,13 @@ AR="ar"
AR_FLAGS="cru"
# A C compiler.
LTCC="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
......@@ -6813,7 +6813,7 @@ with_gcc=yes
EGREP="grep -E"
# The linker used to build libraries.
LD="/usr/bin/ld"
LD="/usr/x86_64-suse-linux/bin/ld -m elf_x86_64"
# Whether we need hard or soft links.
LN_S="ln -s"
......@@ -6887,7 +6887,7 @@ dlopen_self=unknown
dlopen_self_static=unknown
# Compiler flag to prevent dynamic linking.
link_static_flag="-static"
link_static_flag=""
# Compiler flag to turn off builtin functions.
no_builtin_flag=" -fno-builtin"
......@@ -6942,11 +6942,11 @@ striplib="strip --strip-unneeded"
# Dependencies to place before the objects being linked to create a
# shared library.
predep_objects="/usr/lib/gcc/i386-redhat-linux/4.1.2/../../../crti.o /usr/lib/gcc/i386-redhat-linux/4.1.2/crtbeginS.o"
predep_objects="/usr/lib64/gcc/x86_64-suse-linux/4.1.2/../../../../lib64/crti.o /usr/lib64/gcc/x86_64-suse-linux/4.1.2/crtbeginS.o"
# Dependencies to place after the objects being linked to create a
# shared library.
postdep_objects="/usr/lib/gcc/i386-redhat-linux/4.1.2/crtendS.o /usr/lib/gcc/i386-redhat-linux/4.1.2/../../../crtn.o"
postdep_objects="/usr/lib64/gcc/x86_64-suse-linux/4.1.2/crtendS.o /usr/lib64/gcc/x86_64-suse-linux/4.1.2/../../../../lib64/crtn.o"
# Dependencies to place before the objects being linked to create a
# shared library.
......@@ -6954,11 +6954,11 @@ predeps=""
# Dependencies to place after the objects being linked to create a
# shared library.
postdeps="-lstdc++ -lm -lgcc_s -lc -lgcc_s"
postdeps="-lmpi_cxx -lmpi -lopen-rte -lopen-pal -libverbs -lrt -lnuma -ldl -lnsl -lutil -ldl -lstdc++ -lm -lgcc_s -lpthread -lc -lgcc_s"
# The library search path used internally by the compiler when linking
# a shared library.
compiler_lib_search_path="-L/usr/lib/gcc/i386-redhat-linux/4.1.2 -L/usr/lib/gcc/i386-redhat-linux/4.1.2 -L/usr/lib/gcc/i386-redhat-linux/4.1.2/../../.."
compiler_lib_search_path="-L/usr/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/../../.."
# Method to check whether dependent libraries are shared objects.
deplibs_check_method="pass_all"
......@@ -7038,10 +7038,10 @@ variables_saved_for_relink="PATH LD_LIBRARY_PATH LD_RUN_PATH GCC_EXEC_PREFIX COM
link_all_deplibs=unknown
# Compile-time system search path for libraries
sys_lib_search_path_spec=" /usr/lib/gcc/i386-redhat-linux/4.1.2/ /usr/lib/gcc/i386-redhat-linux/4.1.2/ /usr/lib/gcc/i386-redhat-linux/4.1.2/../../../../i386-redhat-linux/lib/i386-redhat-linux/4.1.2/ /usr/lib/gcc/i386-redhat-linux/4.1.2/../../../../i386-redhat-linux/lib/ /usr/lib/gcc/i386-redhat-linux/4.1.2/../../../i386-redhat-linux/4.1.2/ /usr/lib/gcc/i386-redhat-linux/4.1.2/../../../ /lib/i386-redhat-linux/4.1.2/ /lib/ /usr/lib/i386-redhat-linux/4.1.2/ /usr/lib/"
sys_lib_search_path_spec=" /usr/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/"
# Run-time system search path for libraries
sys_lib_dlsearch_path_spec="/lib /usr/lib /usr/lib/octave-2.9.9 /usr/lib/qt-3.3/lib "
sys_lib_dlsearch_path_spec="/lib /usr/lib /usr/X11R6/lib64/Xaw3d /usr/X11R6/lib64 /usr/X11R6/lib/Xaw3d /usr/X11R6/lib /usr/x86_64-suse-linux/lib /usr/local/lib64 /usr/local/lib /opt/kde3/lib64 /opt/kde3/lib /opt/gnome/lib64 /opt/gnome/lib /lib64 /lib /usr/lib64 /usr/lib /opt/cluster/intel/cce/9.1.042/lib /opt/cluster/intel/fce/9.1.036/lib /opt/cluster/Pathscale3.0/lib/2.9.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=""
......@@ -7065,7 +7065,7 @@ include_expsyms=""
# ### BEGIN LIBTOOL TAG CONFIG: F77
# Libtool was configured on host NWRW15:
# Libtool was configured on host deimos103:
# Shell to use when invoking shell scripts.
SHELL="/bin/sh"
......@@ -7087,12 +7087,12 @@ fast_install=yes
# The host system.
host_alias=
host=i686-pc-linux-gnu
host=x86_64-unknown-linux-gnu
host_os=linux-gnu
# The build system.
build_alias=
build=i686-pc-linux-gnu
build=x86_64-unknown-linux-gnu
build_os=linux-gnu
# An echo program that does not interpret backslashes.
......@@ -7103,7 +7103,7 @@ AR="ar"
AR_FLAGS="cru"
# A C compiler.
LTCC="gcc"
LTCC="/licsoft/libraries/openmpi/1.2.6/64bit/bin/mpicc"
# LTCC compiler flags.
LTCFLAGS="-g -O2"
......@@ -7112,13 +7112,13 @@ LTCFLAGS="-g -O2"
CC="g77"
# Is the compiler the GNU C compiler?
with_gcc=yes
with_gcc=
# An ERE matcher.
EGREP="grep -E"
# The linker used to build libraries.
LD="/usr/bin/ld"
LD="/usr/x86_64-suse-linux/bin/ld -m elf_x86_64"
# Whether we need hard or soft links.
LN_S="ln -s"
......@@ -7346,10 +7346,10 @@ variables_saved_for_relink="PATH LD_LIBRARY_PATH LD_RUN_PATH GCC_EXEC_PREFIX COM
link_all_deplibs=unknown
# Compile-time system search path for libraries
sys_lib_search_path_spec=" /usr/lib/gcc/i386-redhat-linux/3.4.6/ /usr/lib/gcc/i386-redhat-linux/3.4.6/ /usr/lib/gcc/i386-redhat-linux/3.4.6/../../../../i386-redhat-linux/lib/i386-redhat-linux/3.4.6/ /usr/lib/gcc/i386-redhat-linux/3.4.6/../../../../i386-redhat-linux/lib/ /usr/lib/gcc/i386-redhat-linux/3.4.6/../../../i386-redhat-linux/3.4.6/ /usr/lib/gcc/i386-redhat-linux/3.4.6/../../../ /lib/i386-redhat-linux/3.4.6/ /lib/ /usr/lib/i386-redhat-linux/3.4.6/ /usr/lib/"
sys_lib_search_path_spec=" /usr/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/"
# Run-time system search path for libraries
sys_lib_dlsearch_path_spec="/lib /usr/lib /usr/lib/octave-2.9.9 /usr/lib/qt-3.3/lib "
sys_lib_dlsearch_path_spec="/lib /usr/lib /usr/X11R6/lib64/Xaw3d /usr/X11R6/lib64 /usr/X11R6/lib/Xaw3d /usr/X11R6/lib /usr/x86_64-suse-linux/lib /usr/local/lib64 /usr/local/lib /opt/kde3/lib64 /opt/kde3/lib /opt/gnome/lib64 /opt/gnome/lib /lib64 /lib /usr/lib64 /usr/lib /opt/cluster/intel/cce/9.1.042/lib /opt/cluster/intel/fce/9.1.036/lib /opt/cluster/Pathscale3.0/lib/2.9.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=""
......
......@@ -34,8 +34,8 @@ namespace AMDiS {
FUNCNAME("ElInfo::fillMacroInfo()");
macroElement_ = const_cast<MacroElement*>(mel);
element_ = const_cast<Element*>(mel->getElement());
parent_ = NULL;
element_ = const_cast<Element*>(mel->getElement());
parent_ = NULL;
level = 0;
if (fillFlag_.isSet(Mesh::FILL_COORDS) ||
......
......@@ -14,11 +14,11 @@ namespace AMDiS {
if (!elementData)
return -1;
ElementRegion_ED* red = dynamic_cast<ElementRegion_ED*>(elementData->getElementData(ELEMENT_REGION));
ElementRegion_ED* red =
dynamic_cast<ElementRegion_ED*>(elementData->getElementData(ELEMENT_REGION));
if (red) {
return red->getRegion();
}
if (red)
return red->getRegion();
return -1;
}
......@@ -52,16 +52,14 @@ namespace AMDiS {
// call destructor through Mesh::freeElement !!!
Element::~Element()
{
if (child[0]) {
if (child[0])
DELETE child[0];
}
if (child[1]) {
DELETE child[1];
}
if (child[1])
DELETE child[1];
if (newCoord) {
DELETE newCoord;
}
if (newCoord)
DELETE newCoord;
if (elementData) {
elementData->deleteDecorated();
......
......@@ -22,10 +22,6 @@
#ifndef AMDIS_ELEMENT_H
#define AMDIS_ELEMENT_H
// ============================================================================
// ===== includes =============================================================
// ============================================================================
#include "Global.h"
#include "RefinementManager.h"
#include "Serializable.h"
......@@ -34,23 +30,14 @@
namespace AMDiS {
// ============================================================================
// ===== forward declarations =================================================
// ============================================================================
class Mesh;
class DOFAdmin;
template<typename T> class WorldVector;
class CoarseningManager;
template<typename T, GeoIndex d> class FixVec;
#define AMDIS_UNDEFINED 5
// ============================================================================
// ===== class Element ========================================================
// ============================================================================
/** \ingroup Triangulation
* \brief
* Base class for Line, Triangle, Tetrahedron
......@@ -103,8 +90,6 @@ namespace AMDiS {
*/
Element* cloneWithDOFs();
// ===== getting methods ======================================================
/** \name getting methods
* \{
*/
......@@ -232,8 +217,6 @@ namespace AMDiS {
/** \} */
// ===== setting methods ======================================================
/** \name setting methods
* \{
*/
......@@ -454,9 +437,9 @@ namespace AMDiS {
/// Deserialize an element from a file.
void deserialize(std::istream &in);
///
int calcMemoryUsage();
// ===== protected methods ====================================================
protected:
/// Sets Element's \ref dof pointer. Used by friend class Mesh.
void setDOFPtrs();
......
......@@ -40,10 +40,6 @@ namespace AMDiS {
template<typename T> class WorldVector;
template<typename T> class DimVec;
// ============================================================================
// ===== class MacroElement ===================================================
// ============================================================================
/** \ingroup Triangulation
* \brief
* MacroElements form the macro triangulation of a Mesh. In a MacroElement
......@@ -64,8 +60,6 @@ namespace AMDiS {
///
MacroElement& operator=(const MacroElement &el);
// ===== getting methods ======================================================
/** \name getting methods
* \{
*/
......@@ -117,8 +111,6 @@ namespace AMDiS {
/** \} */
// ===== setting methods ======================================================
/** \name setting methods
* \{
*/
......
......@@ -23,7 +23,6 @@
#include "Projection.h"
#include "ElInfoStack.h"
namespace AMDiS {
#define TIME_USED(f,s) ((double)((s)-(f))/(double)CLOCKS_PER_SEC)
......@@ -268,45 +267,91 @@ namespace AMDiS {
me->setIndex(macroElements.size());
}
void Mesh::removeMacroElement(MacroElement* me)
void Mesh::removeMacroElements(std::vector<MacroElement*>& macros)
{
FUNCNAME("Mesh::removeMacroElement()");
TEST_EXIT(dim == 2)("Not yet implemented!\n");
bool found = false;
// Remove the macro element from mesh's list of all macro elements.
for (std::deque<MacroElement*>::iterator it = macroElements.begin();
it != macroElements.end();
++it) {
if (*it == me) {
macroElements.erase(it, it + 1);
found = true;
break;
}
// Map that stores for each dof pointer (which may have a list of dofs)
// all macro element indices that own the dof.
std::map<const DegreeOfFreedom*, std::set<MacroElement*> > dofsOwner;
// Determine all dof owner macro elements.
for (std::deque<MacroElement*>::iterator macroIt = macroElements.begin();
macroIt != macroElements.end();
++macroIt) {
Element *el = (*macroIt)->getElement();
for (int i = 0; i < 3; i++)
dofsOwner[el->getDOF(i)].insert(*macroIt);
}
TEST_EXIT(found)("Cannot find MacroElement that should be removed!\n");
// Go through all neighbours of the macro element and remove this macro element
// to be neighbour of some other macro element.
for (int i = 0; i < dim; i++) {
if (me->getNeighbour(i)) {
for (int j = 0; j < dim; j++) {
if (me->getNeighbour(i)->getNeighbour(j) == me) {
me->getNeighbour(i)->setNeighbour(j, NULL);
// Remove all the given macro elements.
for (std::vector<MacroElement*>::iterator macroIt = macros.begin();
macroIt != macros.end();
++macroIt) {
bool found = false;
// Remove the macro element from mesh's list of all macro elements.
for (std::deque<MacroElement*>::iterator it = macroElements.begin();
it != macroElements.end();
++it) {
if (*it == *macroIt) {
macroElements.erase(it, it + 1);
found = true;
break;
}
}
TEST_EXIT(found)("Cannot find MacroElement that should be removed!\n");
// Go through all neighbours of the macro element and remove this macro element
// to be neighbour of some other macro element.
for (int i = 0; i <= dim; i++) {
if ((*macroIt)->getNeighbour(i)) {
for (int j = 0; j <= dim; j++) {
if ((*macroIt)->getNeighbour(i)->getNeighbour(j) == *macroIt) {
(*macroIt)->getNeighbour(i)->setNeighbour(j, NULL);
}
}
} else {
// There is no neighbour at this edge, so we have to decrease the number
// of edges in the mesh.
nEdges--;
}
}
nLeaves--;
nElements--;
// Remove this macro element from the dof owner list.
for (std::map<const DegreeOfFreedom*, std::set<MacroElement*> >::iterator dofsIt = dofsOwner.begin();
dofsIt != dofsOwner.end();
++dofsIt) {
std::set<MacroElement*>::iterator mIt = dofsIt->second.find(*macroIt);
if (mIt != dofsIt->second.end())
dofsIt->second.erase(mIt);
}
// And remove the macro element from memory
delete *macroIt;
}
int nRemainDofs = 0;
// Check now all the dofs, that have no owner anymore and therefore have to
// be removed.
for (std::map<const DegreeOfFreedom*, std::set<MacroElement*> >::iterator dofsIt = dofsOwner.begin();
dofsIt != dofsOwner.end();
++dofsIt) {
if (dofsIt->second.size() == 0) {
dofsOwner.erase(dofsIt++);
} else {
// There is no neighbour at this edge, so we have to decrease the number
// of edges in the mesh.
nEdges--;
nRemainDofs++;
}
}
nLeaves--;
nElements--;
nVertices = nRemainDofs;
}
int Mesh::traverse(int level, Flag flag, int (*el_fct)(ElInfo*))
......
......@@ -415,11 +415,11 @@ namespace AMDiS {
void addMacroElement(MacroElement* me);
/* \brief
* Removes a macro element from the mesh. This works only for the case, that
* there are no global or local refinements, i.e., all macro elements have no
* children.
* Removes a set of macro elements from the mesh. This works only for the case,
* that there are no global or local refinements, i.e., all macro elements have
* no children.
*/
void removeMacroElement(MacroElement* me);
void removeMacroElements(std::vector<MacroElement*>& macros);
/// Frees the array of DOF pointers (see \ref createDOFPtrs)
void freeDOFPtrs(DegreeOfFreedom **ptrs);
......
......@@ -18,6 +18,7 @@ namespace AMDiS {
: iterationIF(iIF),
timeIF(tIF),
mesh(m),
initialPartitionMesh(true),
nRankDOFs(0)
{
mpiRank = MPI::COMM_WORLD.Get_rank();
......@@ -95,23 +96,20 @@ namespace AMDiS {
}
}
bool removed = false;
do {
removed = false;
for (std::deque<MacroElement*>::iterator it = mesh->firstMacroElement();
it != mesh->endOfMacroElements();
++it) {
PartitionElementData *partitionData =
dynamic_cast<PartitionElementData*>
((*it)->getElement()->getElementData(PARTITION_ED));
if (partitionData->getPartitionStatus() != IN) {
mesh->removeMacroElement(*it);
removed = true;
break;
}
std::vector<MacroElement*> macrosToRemove;
for (std::deque<MacroElement*>::iterator it = mesh->firstMacroElement();
it != mesh->endOfMacroElements();
++it) {
PartitionElementData *partitionData =
dynamic_cast<PartitionElementData*>
((*it)->getElement()->getElementData(PARTITION_ED));
if (partitionData->getPartitionStatus() != IN) {
macrosToRemove.push_back(*it);
}
} while (removed);
}
mesh->removeMacroElements(macrosToRemove);
int *gOrder = (int*)(malloc(sizeof(int) * rankDofs.size()));
int *lOrder = (int*)(malloc(sizeof(int) * rankDofs.size()));
......
......@@ -34,10 +34,8 @@ namespace AMDiS {
return static_cast<Flag>(0);
globalMark = mark;
aMesh->traverse(-1,
Mesh::CALL_LEAF_EL |
Mesh::FILL_COORDS |
Mesh::FILL_BOUND,
aMesh->traverse(-1,
Mesh::CALL_LEAF_EL | Mesh::FILL_COORDS | Mesh::FILL_BOUND,
globalRefineFct);
return refineMesh(aMesh);
}
......@@ -51,23 +49,22 @@ namespace AMDiS {
mesh = aMesh;
int n_elements = mesh->getNumberOfLeaves();
ElInfo *el_info;
ElInfo *elInfo;
newCoords = false;
stack = NEW TraverseStack;
doMoreRecursiveRefine = true;
while (doMoreRecursiveRefine) {
doMoreRecursiveRefine = false;
el_info = stack->traverseFirst(mesh, -1,
Mesh::CALL_LEAF_EL | Mesh::FILL_NEIGH| Mesh::FILL_BOUND);
while (el_info) {
if (el_info->getElement()->getMark() > 0) {
elInfo = stack->traverseFirst(mesh, -1,
Mesh::CALL_LEAF_EL | Mesh::FILL_NEIGH | Mesh::FILL_BOUND);
while (elInfo) {
if (elInfo->getElement()->getMark() > 0) {
doMoreRecursiveRefine = doMoreRecursiveRefine ||
(el_info->getElement()->getMark() > 1);
el_info = refineFunction(el_info);
}
el_info = stack->traverseNext(el_info);
(elInfo->getElement()->getMark() > 1);
elInfo = refineFunction(elInfo);
}
elInfo = stack->traverseNext(elInfo);
}
}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment