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 4e04364c authored by Thomas Witkowski's avatar Thomas Witkowski
Browse files

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