Commit 4e04364c authored by Thomas Witkowski's avatar Thomas Witkowski

Fixed bug for parallel reading macro files with periodic boundary conditions.

parent c71c0da0
......@@ -51,32 +51,32 @@ build_old_libs=yes
pic_mode=default
# Whether or not to optimize for fast installation.
fast_install=yes
fast_install=needless
# The host system.
host_alias=
host=i686-redhat-linux-gnu
host=x86_64-unknown-linux-gnu
host_os=linux-gnu
# The build system.
build_alias=
build=i686-redhat-linux-gnu
build=x86_64-unknown-linux-gnu
build_os=linux-gnu
# 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="$SED -e 1s/^X//"
# A grep program that handles long lines.
GREP="/bin/grep"
GREP="/usr/bin/grep"
# An ERE matcher.
EGREP="/bin/grep -E"
EGREP="/usr/bin/grep -E"
# A literal string matcher.
FGREP="/bin/grep -F"
FGREP="/usr/bin/grep -F"
# A BSD- or MS-compatible name lister.
NM="/usr/bin/nm -B"
......@@ -128,7 +128,7 @@ old_postinstall_cmds="chmod 644 \$oldlib~\$RANLIB \$oldlib"
old_postuninstall_cmds=""
# A C compiler.
LTCC="gcc"
LTCC="/licsoft/libraries/openmpi/1.2.6/64bit/bin/mpicc"
# LTCC compiler flags.
LTCFLAGS="-g -O2"
......@@ -204,7 +204,7 @@ runpath_var=LD_RUN_PATH
shlibpath_var=LD_LIBRARY_PATH
# Is shlibpath searched before the hard-coded library search path?
shlibpath_overrides_runpath=no
shlibpath_overrides_runpath=yes
# Format of library name prefix.
libname_spec="lib\$name"
......@@ -233,10 +233,10 @@ finish_eval=""
hardcode_into_libs=yes
# Compile-time system search path for libraries.
sys_lib_search_path_spec="/u/witkowski/local/lib /u/witkowski/local/intel/mkl/10.0.1.014/lib/32 /usr/lib/gcc/i386-redhat-linux/4.1.2 /usr/lib /lib"
sys_lib_search_path_spec="/usr/lib64/gcc/x86_64-suse-linux/4.1.2 /usr/lib64 /lib64 /fastfs/wir/local/lib /usr/x86_64-suse-linux/lib"
# Run-time system search path for libraries.
sys_lib_dlsearch_path_spec="/lib /usr/lib /usr/lib/mysql /usr/lib/octave-2.9.9 /usr/lib/qt-3.3/lib /usr/lib/qt4/lib /usr/lib/xulrunner-1.9.2 "
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 "
# Whether dlopen is supported.
dlopen_support=unknown
......@@ -253,13 +253,13 @@ striplib="strip --strip-unneeded"
# The linker used to build libraries.
LD="/usr/bin/ld"
LD="/usr/x86_64-suse-linux/bin/ld -m elf_x86_64"
# Commands used to build an old-style archive.
old_archive_cmds="\$AR \$AR_FLAGS \$oldlib\$oldobjs~\$RANLIB \$oldlib"
# A language specific compiler.
CC="gcc"
CC="/licsoft/libraries/openmpi/1.2.6/64bit/bin/mpicc"
# Is the compiler the GNU compiler?
with_gcc=yes
......@@ -274,7 +274,7 @@ wl="-Wl,"
pic_flag=" -fPIC -DPIC"
# Compiler flag to prevent dynamic linking.
link_static_flag="-static"
link_static_flag=""
# Does compiler simultaneously support -c and -o options?
compiler_c_o="yes"
......@@ -8908,13 +8908,13 @@ build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
# ### BEGIN LIBTOOL TAG CONFIG: CXX
# The linker used to build libraries.
LD="/usr/bin/ld"
LD="/usr/x86_64-suse-linux/bin/ld -m elf_x86_64"
# Commands used to build an old-style archive.
old_archive_cmds="\$AR \$AR_FLAGS \$oldlib\$oldobjs~\$RANLIB \$oldlib"
# A language specific compiler.
CC="g++"
CC="/licsoft/libraries/openmpi/1.2.6/64bit/bin/mpicxx"
# Is the compiler the GNU compiler?
with_gcc=yes
......@@ -8929,7 +8929,7 @@ wl="-Wl,"
pic_flag=" -fPIC -DPIC"
# Compiler flag to prevent dynamic linking.
link_static_flag="-static"
link_static_flag=""
# Does compiler simultaneously support -c and -o options?
compiler_c_o="yes"
......@@ -9039,17 +9039,17 @@ file_list_spec=""
hardcode_action=immediate
# The directories searched by this compiler when creating a shared library.
compiler_lib_search_dirs="/u/witkowski/local/lib /u/witkowski/local/intel/mkl/10.0.1.014/lib/32 /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/../../.."
compiler_lib_search_dirs="/usr/lib64 /licsoft/libraries/openmpi/1.2.6/64bit/lib /usr/lib64/gcc/x86_64-suse-linux/4.1.2 /usr/lib64/gcc/x86_64-suse-linux/4.1.2/../../../../lib64 /lib/../lib64 /usr/lib/../lib64 /fastfs/wir/local/lib /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/../../.."
# Dependencies to place before and after 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"
postdep_objects="/usr/lib/gcc/i386-redhat-linux/4.1.2/crtendS.o /usr/lib/gcc/i386-redhat-linux/4.1.2/../../../crtn.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"
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"
predeps=""
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/u/witkowski/local/lib -L/u/witkowski/local/intel/mkl/10.0.1.014/lib/32 -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/fastfs/wir/local/lib -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/../../.."
# ### END LIBTOOL TAG CONFIG: CXX
......@@ -162,11 +162,14 @@ namespace AMDiS {
void ElInfo3d::fillMacroInfo(const MacroElement * mel)
{
FUNCNAME("ElInfo3d::fillMacroInfo()");
TEST_EXIT_DBG(mel)("No macro element given!\n");
Element *nb;
MacroElement *mnb;
Flag fill_opp_coords;
macroElement = const_cast<MacroElement*>( mel);
macroElement = const_cast<MacroElement*>(mel);
element = const_cast<Element*>(mel->getElement());
parent = NULL;
level = 0;
......@@ -176,10 +179,9 @@ namespace AMDiS {
if (fillFlag.isSet(Mesh::FILL_COORDS) ||
fillFlag.isSet(Mesh::FILL_DET) ||
fillFlag.isSet(Mesh::FILL_GRD_LAMBDA)) {
fillFlag.isSet(Mesh::FILL_GRD_LAMBDA))
for (int i = 0; i < vertices; i++)
coord[i] = mel->coord[i];
}
int neighbours = mesh->getGeo(NEIGH);
......@@ -188,19 +190,19 @@ namespace AMDiS {
fill_opp_coords.setFlags(fillFlag & Mesh::FILL_OPP_COORDS);
for (int i = 0; i < neighbours; i++) {
if ((mnb = const_cast<MacroElement*>( mel->getNeighbour(i)))) {
neighbour[i] = const_cast<Element*>( mel->getNeighbour(i)->getElement());
nb = const_cast<Element*>( neighbour[i]);
if ((mnb = const_cast<MacroElement*>(mel->getNeighbour(i)))) {
neighbour[i] = const_cast<Element*>(mel->getNeighbour(i)->getElement());
nb = const_cast<Element*>(neighbour[i]);
int k;
k = oppVertex[i] = mel->getOppVertex(i);
if (nb->getChild(0) && (k < 2)) { /*make nb nearest element.*/
if (k == 1) {
neighbour[i] = const_cast<Element*>( nb->getChild(0));
nb = const_cast<Element*>( neighbour[i]);
neighbour[i] = const_cast<Element*>(nb->getChild(0));
nb = const_cast<Element*>(neighbour[i]);
} else {
neighbour[i] = const_cast<Element*>( nb->getChild(1));
nb = const_cast<Element*>( neighbour[i]);
neighbour[i] = const_cast<Element*>(nb->getChild(1));
nb = const_cast<Element*>(neighbour[i]);
}
k = oppVertex[i] = 3;
if (fill_opp_coords.isAnySet()) {
......@@ -495,7 +497,7 @@ namespace AMDiS {
TEST_EXIT_DBG(el_old->getChild(0))("missing child?\n");
element = const_cast<Element*>( el_old->getChild(ichild));
element = const_cast<Element*>(el_old->getChild(ichild));
macroElement = elInfoOld->macroElement;
fillFlag = fillFlag_local;
parent = el_old;
......@@ -546,7 +548,7 @@ namespace AMDiS {
/* if (nb = el_old->child[ochild]) old version */
if (el_old->getChild(0) &&
(nb = const_cast<Element*>( el_old->getChild(ochild)))) {
(nb = const_cast<Element*>(el_old->getChild(ochild)))) {
if (nb->getChild(0)) { /* go down one level for direct neighbour */
if (fill_opp_coords.isAnySet()) {
......@@ -558,7 +560,7 @@ namespace AMDiS {
oppCoord[0][j] = (elInfoOld->coord[ochild][j] + elInfoOld->coord[k][j]) / 2;
}
}
(*neigh_local)[0] = const_cast<Element*>( nb->getChild(1));
(*neigh_local)[0] = const_cast<Element*>(nb->getChild(1));
oppVertex[0] = 3;
} else {
if (fill_opp_coords.isAnySet())
......@@ -577,12 +579,12 @@ namespace AMDiS {
/*----- nb[1],nb[2] are childs of old neighbours nb_old[cv[i]] ----------*/
for (int i = 1; i < 3; i++) {
if ((nb = const_cast<Element*>( (*neigh_old)[cv[i]]))) {
if ((nb = const_cast<Element*>((*neigh_old)[cv[i]]))) {
TEST_EXIT_DBG(nb->getChild(0))("nonconforming triangulation\n");
int k;
for (k = 0; k < 2; k++) { /* look at both childs of old neighbour */
nbk = const_cast<Element*>( nb->getChild(k));
nbk = const_cast<Element*>(nb->getChild(k));
if (nbk->getDOF(0) == el_old->getDOF(ichild)) {
/* opp. vertex */
dof = const_cast<int*>(nb->getDOF(elInfoOld->oppVertex[cv[i]]));
......@@ -625,7 +627,7 @@ namespace AMDiS {
// periodic ?
if (k == 2 || ov == -1) {
for (k = 0; k < 2; k++) { /* look at both childs of old neighbour */
nbk = const_cast<Element*>( nb->getChild(k));
nbk = const_cast<Element*>(nb->getChild(k));
if (nbk->getDOF(0) == el_old->getDOF(ichild) ||
mesh->associated(nbk->getDOF(0, 0), el_old->getDOF(ichild, 0))) {
/* opp. vertex */
......
......@@ -24,7 +24,7 @@ namespace AMDiS {
std::string periodicFile,
int check)
{
FUNCNAME("Mesh::readMacro()");
FUNCNAME("MacroReader::readMacro()");
TEST_EXIT(filename != "")("no file specified; filename NULL pointer\n");
......@@ -124,6 +124,14 @@ namespace AMDiS {
ElementData *ld1 = element1->getElementData();
ElementData *ld2 = element2->getElementData();
TEST_EXIT_DBG(ld1)
("Should not happen: no element data pointer in macro element %d!\n",
element1->getIndex());
TEST_EXIT_DBG(ld2)
("Should not happen: no element data pointer in macro element %d!\n",
element2->getIndex());
LeafDataPeriodic *ldp1 =
dynamic_cast<LeafDataPeriodic*>(ld1->getElementData(PERIODIC));
LeafDataPeriodic *ldp2 =
......@@ -1172,7 +1180,7 @@ namespace AMDiS {
Flag fill_flag;
int error_detected = 0;
MSG("checking mesh\n");
MSG("Checking mesh ...\n");
fill_flag = Mesh::CALL_EVERY_EL_PREORDER | Mesh::FILL_NEIGH | Mesh::FILL_BOUND;
......
......@@ -81,7 +81,9 @@ namespace AMDiS {
/// Assignement operator
inline const Vector<T>& operator=(const Vector<T>& rhs)
{
TEST_EXIT_DBG(rhs.size == size)("invalid size\n");
TEST_EXIT_DBG(rhs.size == size)
("Invalid sizes %d != %d!\n", rhs.size, size);
T *rhsIt, *thisIt;
for (rhsIt = rhs.begin(), thisIt = this->begin();
rhsIt != rhs.end();
......
......@@ -614,12 +614,12 @@ namespace AMDiS {
TEST_EXIT_DBG(elementPrototype)("no element prototype\n");
Element *el = parent ? parent->clone() : elementPrototype->clone();
if (!parent && elementDataPrototype)
el->setElementData(elementDataPrototype->clone());
else
el->setElementData(NULL); // must be done in ElementData::refineElementData()
return el;
}
......@@ -747,7 +747,7 @@ namespace AMDiS {
*(g_sp) = s;
if (dim == 3)
MSG("outside finest level on el %d: s=%.3e\n", el->getIndex(), s);
MSG("Outside finest level on el %d: s = %.3e\n", el->getIndex(), s);
return false; /* ??? */
} else {
......@@ -1148,13 +1148,13 @@ namespace AMDiS {
#ifdef HAVE_PARALLEL_DOMAIN_AMDIS
if (checkParallelMacroFile(macroFilename, periodicFilename, check)) {
std::string newPeriodicFilename = "";
if (periodicFilename != "")
newPeriodicFilename = periodicFilename + ".tmp";
std::string newPeriodicFilename = "";
if (periodicFilename != "")
newPeriodicFilename = periodicFilename + ".tmp";
macroFileInfo =
MacroReader::readMacro(macroFilename + ".tmp", this,
newPeriodicFilename, check);
macroFileInfo =
MacroReader::readMacro(macroFilename + ".tmp", this,
newPeriodicFilename, check);
} else {
macroFileInfo =
MacroReader::readMacro(macroFilename, this, periodicFilename, check);
......@@ -1193,6 +1193,7 @@ namespace AMDiS {
// === Create a temporary mesh and load the macro file to it. ===
Mesh testMesh(name, dim);
testMesh.setElementDataPrototype(new LeafDataEstimatableVec(new LeafDataCoarsenableVec));
DOFAdmin *localAdmin = new DOFAdmin(&testMesh, admin[0]->getName());
localAdmin->setNumberOfDOFs(admin[0]->getNumberOfDOFs());
testMesh.addDOFAdmin(localAdmin);
......
......@@ -240,6 +240,11 @@ namespace AMDiS {
return macroElements[i];
}
std::deque<MacroElement*>& getMacroElements()
{
return macroElements;
}
/// Returns an iterator to the end of \ref macroElements
inline std::deque<MacroElement*>::iterator endOfMacroElements()
{
......
......@@ -26,6 +26,9 @@ namespace AMDiS {
traverse_level = level;
traverse_fill_flag = fill_flag;
TEST_EXIT_DBG(mesh)("No mesh!\n");
TEST_EXIT_DBG(traverse_mesh->getMacroElements().size() > 0)("Mesh is empty!\n");
if (stack_size < 1)
enlargeTraverseStack();
......
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