Commit 53be46af authored by Thomas Witkowski's avatar Thomas Witkowski

Fixed the multi-mesh bug.

parent e25a04bd
......@@ -51,32 +51,32 @@ build_old_libs=yes
pic_mode=default
# Whether or not to optimize for fast installation.
fast_install=needless
fast_install=yes
# The host system.
host_alias=
host=x86_64-unknown-linux-gnu
host=i686-redhat-linux-gnu
host_os=linux-gnu
# The build system.
build_alias=
build=x86_64-unknown-linux-gnu
build=i686-redhat-linux-gnu
build_os=linux-gnu
# A sed program that does not truncate output.
SED="/usr/bin/sed"
SED="/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="/usr/bin/grep"
GREP="/bin/grep"
# An ERE matcher.
EGREP="/usr/bin/grep -E"
EGREP="/bin/grep -E"
# A literal string matcher.
FGREP="/usr/bin/grep -F"
FGREP="/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="/licsoft/libraries/openmpi/1.2.6/64bit/bin/mpicc"
LTCC="gcc"
# 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=yes
shlibpath_overrides_runpath=no
# 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="/usr/lib64/gcc/x86_64-suse-linux/4.1.2 /usr/lib64 /lib64 /fastfs/wir/local/lib /usr/x86_64-suse-linux/lib"
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"
# Run-time system search path for libraries.
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 "
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 "
# Whether dlopen is supported.
dlopen_support=unknown
......@@ -253,13 +253,13 @@ striplib="strip --strip-unneeded"
# The linker used to build libraries.
LD="/usr/x86_64-suse-linux/bin/ld -m elf_x86_64"
LD="/usr/bin/ld"
# Commands used to build an old-style archive.
old_archive_cmds="\$AR \$AR_FLAGS \$oldlib\$oldobjs~\$RANLIB \$oldlib"
# A language specific compiler.
CC="/licsoft/libraries/openmpi/1.2.6/64bit/bin/mpicc"
CC="gcc"
# 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=""
link_static_flag="-static"
# 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/x86_64-suse-linux/bin/ld -m elf_x86_64"
LD="/usr/bin/ld"
# Commands used to build an old-style archive.
old_archive_cmds="\$AR \$AR_FLAGS \$oldlib\$oldobjs~\$RANLIB \$oldlib"
# A language specific compiler.
CC="/licsoft/libraries/openmpi/1.2.6/64bit/bin/mpicxx"
CC="g++"
# 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=""
link_static_flag="-static"
# 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="/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/../../.."
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/../../.."
# Dependencies to place before and after the objects being linked to
# create a shared library.
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"
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"
predeps=""
postdeps="-lmpi_cxx -lmpi -lopen-rte -lopen-pal -libverbs -lrt -lnuma -ldl -lnsl -lutil -ldl -lstdc++ -lm -lgcc_s -lpthread -lc -lgcc_s"
postdeps="-lstdc++ -lm -lgcc_s -lc -lgcc_s"
# The library search path used internally by the compiler when linking
# a shared library.
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/../../.."
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/../../.."
# ### END LIBTOOL TAG CONFIG: CXX
......@@ -14,9 +14,9 @@
namespace AMDiS {
std::vector<std::map<unsigned long, mtl::dense2D<double> > > ElInfo::subElemMatrices(5);
std::vector<std::map<std::pair<int, unsigned long>, mtl::dense2D<double> > > ElInfo::subElemMatrices(5);
std::vector<std::map<unsigned long, mtl::dense2D<double> > > ElInfo::subElemGradMatrices(5);
std::vector<std::map<std::pair<int, unsigned long>, mtl::dense2D<double> > > ElInfo::subElemGradMatrices(5);
ElInfo::ElInfo(Mesh *aMesh)
: mesh(aMesh),
......
......@@ -248,12 +248,12 @@ namespace AMDiS {
virtual mtl::dense2D<double>& getSubElemCoordsMat(int degree) const
{
return subElemMatrices[degree][refinementPath];
return subElemMatrices[degree][std::make_pair(refinementPathLength, refinementPath)];
}
virtual mtl::dense2D<double>& getSubElemGradCoordsMat(int degree) const
{
return subElemGradMatrices[degree][refinementPath];
return subElemGradMatrices[degree][std::make_pair(refinementPathLength, refinementPath)];
}
/** \} */
......@@ -542,21 +542,10 @@ namespace AMDiS {
int refinementPathLength;
/** \brief
* This is a transformation matrix used during dual traverse. It is set, if
* the current element is the smaller element of an element pair in the traverse.
* Then this matrix defines a mapping for points defined in barycentric
* coordinates on the larger element, to the barycentric coordinates of the smaller
* element.
*/
mtl::dense2D<double> subElemCoordsMat;
mtl::dense2D<double> subElemGradCoordsMat;
public:
static std::vector<std::map<unsigned long, mtl::dense2D<double> > > subElemMatrices;
static std::vector<std::map<std::pair<int, unsigned long>, mtl::dense2D<double> > > subElemMatrices;
static std::vector<std::map<unsigned long, mtl::dense2D<double> > > subElemGradMatrices;
static std::vector<std::map<std::pair<int, unsigned long>, mtl::dense2D<double> > > subElemGradMatrices;
/** \brief
* child_vertex[el_type][child][i] = father's local vertex index of new
......
......@@ -48,8 +48,8 @@ namespace AMDiS {
Element *nb;
MacroElement *mnb;
macroElement = const_cast<MacroElement*>( mel);
element = const_cast<Element*>( mel->getElement());
macroElement = const_cast<MacroElement*>(mel);
element = const_cast<Element*>(mel->getElement());
parent = NULL;
level = 0;
......@@ -68,12 +68,12 @@ namespace AMDiS {
int neighbours = mesh->getGeo(NEIGH);
for (int i = 0; i < neighbours; i++) {
nb = NULL;
if ((mnb = const_cast<MacroElement*>( mel->getNeighbour(i)))) {
if ((mnb = const_cast<MacroElement*>(mel->getNeighbour(i)))) {
if (fillFlag.isSet(Mesh::FILL_OPP_COORDS)) {
oppC = mnb->coord[i];
}
nb = const_cast<Element*>( mnb->getElement());
nb = const_cast<Element*>(mnb->getElement());
while (!(nb->isLeaf())) { // make nb nearest element
if (fillFlag.isSet(Mesh::FILL_OPP_COORDS)) {
......@@ -83,7 +83,7 @@ namespace AMDiS {
oppC = (mel->coord[i] + oppC) * 0.5;
}
}
nb = const_cast<Element*>( nb->getChild(1-i));
nb = const_cast<Element*>(nb->getChild(1-i));
}
if (fillFlag.isSet(Mesh::FILL_OPP_COORDS)) {
......@@ -190,7 +190,7 @@ namespace AMDiS {
/* return the absulute value of the determinant from the */
/* transformation to the reference element */
/****************************************************************************/
double ElInfo1d::getElementNormal( WorldVector<double> &elementNormal) const
double ElInfo1d::getElementNormal(WorldVector<double> &elementNormal) const
{
FUNCNAME("ElInfo::getElementNormal()");
......@@ -254,7 +254,7 @@ namespace AMDiS {
if (fillFlag.isSet(Mesh::FILL_OPP_COORDS))
oppC = elInfoOld->coord[i];
} else {
nb = const_cast<Element*>( elInfoOld->getNeighbour(i));
nb = const_cast<Element*>(elInfoOld->getNeighbour(i));
if (nb && fillFlag.isSet(Mesh::FILL_OPP_COORDS))
oppC = elInfoOld->oppCoord[i];
......@@ -268,7 +268,7 @@ namespace AMDiS {
else
oppC = (coord[i] + oppC) * 0.5;
}
nb = const_cast<Element*>( nb->getChild(1-i));
nb = const_cast<Element*>(nb->getChild(1-i));
}
if (fillFlag.isSet(Mesh::FILL_OPP_COORDS))
......@@ -284,9 +284,8 @@ namespace AMDiS {
boundary[1 - ichild] = INTERIOR;
if (elInfoOld->getProjection(0) &&
elInfoOld->getProjection(0)->getType() == VOLUME_PROJECTION) {
projection[0] = elInfoOld->getProjection(0);
}
elInfoOld->getProjection(0)->getType() == VOLUME_PROJECTION)
projection[0] = elInfoOld->getProjection(0);
}
}
......@@ -297,7 +296,7 @@ namespace AMDiS {
using namespace mtl;
if (subElemMatrices[degree].count(refinementPath) == 0) {
if (subElemMatrices[degree].count(std::make_pair(refinementPathLength, refinementPath)) == 0) {
switch (degree) {
case 1:
{
......@@ -306,15 +305,15 @@ namespace AMDiS {
for (int i = 0; i < refinementPathLength; i++) {
if (refinementPath & (1 << i)) {
tmpMat = mat_d1_right * mat;
tmpMat = mat * mat_d1_right;
mat = tmpMat;
} else {
tmpMat = mat_d1_left * mat;
tmpMat = mat * mat_d1_left;
mat = tmpMat;
}
}
subElemMatrices[1][refinementPath] = mat;
subElemMatrices[1][std::make_pair(refinementPathLength, refinementPath)] = mat;
}
break;
......@@ -325,15 +324,15 @@ namespace AMDiS {
for (int i = 0; i < refinementPathLength; i++) {
if (refinementPath & (1 << i)) {
tmpMat = mat_d2_right * mat;
tmpMat = mat * mat_d2_right;
mat = tmpMat;
} else {
tmpMat = mat_d2_left * mat;
tmpMat = mat * mat_d2_left;
mat = tmpMat;
}
}
subElemMatrices[2][refinementPath] = mat;
subElemMatrices[2][std::make_pair(refinementPathLength, refinementPath)] = mat;
}
break;
default:
......@@ -341,7 +340,7 @@ namespace AMDiS {
}
}
return subElemMatrices[degree][refinementPath];
return subElemMatrices[degree][std::make_pair(refinementPathLength, refinementPath)];
}
......@@ -353,16 +352,16 @@ namespace AMDiS {
using namespace mtl;
if (subElemGradMatrices[degree].count(refinementPath) == 0) {
if (subElemGradMatrices[degree].count(std::make_pair(refinementPathLength, refinementPath)) == 0) {
dense2D<double> mat(mat_d1);
for (int i = 0; i < refinementPathLength; i++)
mat *= 0.5;
subElemGradMatrices[1][refinementPath] = mat;
subElemGradMatrices[1][std::make_pair(refinementPathLength, refinementPath)] = mat;
}
return subElemGradMatrices[degree][refinementPath];
return subElemGradMatrices[degree][std::make_pair(refinementPathLength, refinementPath)];
}
......
......@@ -765,7 +765,7 @@ namespace AMDiS {
using namespace mtl;
if (subElemMatrices[degree].count(refinementPath) == 0) {
if (subElemMatrices[degree].count(std::make_pair(refinementPathLength, refinementPath)) == 0) {
switch (degree) {
case 1:
{
......@@ -774,15 +774,15 @@ namespace AMDiS {
for (int i = 0; i < refinementPathLength; i++) {
if (refinementPath & (1 << i)) {
tmpMat = mat_d1_right * mat;
tmpMat = mat * mat_d1_right;
mat = tmpMat;
} else {
tmpMat = mat_d1_left * mat;
tmpMat = mat * mat_d1_left;
mat = tmpMat;
}
}
subElemMatrices[1][refinementPath] = mat;
subElemMatrices[1][std::make_pair(refinementPathLength, refinementPath)] = mat;
}
break;
case 2:
......@@ -792,15 +792,15 @@ namespace AMDiS {
for (int i = 0; i < refinementPathLength; i++) {
if (refinementPath & (1 << i)) {
tmpMat = mat_d2_right * mat;
tmpMat = mat * mat_d2_right;
mat = tmpMat;
} else {
tmpMat = mat_d2_left * mat;
tmpMat = mat * mat_d2_left;
mat = tmpMat;
}
}
subElemMatrices[2][refinementPath] = mat;
subElemMatrices[2][std::make_pair(refinementPathLength, refinementPath)] = mat;
}
break;
case 3:
......@@ -810,15 +810,15 @@ namespace AMDiS {
for (int i = 0; i < refinementPathLength; i++) {
if (refinementPath & (1 << i)) {
tmpMat = mat_d3_right * mat;
tmpMat = mat * mat_d3_right;
mat = tmpMat;
} else {
tmpMat = mat_d3_left * mat;
tmpMat = mat * mat_d3_left;
mat = tmpMat;
}
}
subElemMatrices[3][refinementPath] = mat;
subElemMatrices[3][std::make_pair(refinementPathLength, refinementPath)] = mat;
}
break;
case 4:
......@@ -828,15 +828,15 @@ namespace AMDiS {
for (int i = 0; i < refinementPathLength; i++) {
if (refinementPath & (1 << i)) {
tmpMat = mat_d4_right * mat;
tmpMat = mat * mat_d4_right;
mat = tmpMat;
} else {
tmpMat = mat_d4_left * mat;
tmpMat = mat * mat_d4_left;
mat = tmpMat;
}
}
subElemMatrices[4][refinementPath] = mat;
subElemMatrices[4][std::make_pair(refinementPathLength, refinementPath)] = mat;
}
break;
......@@ -845,7 +845,7 @@ namespace AMDiS {
}
}
return subElemMatrices[degree][refinementPath];
return subElemMatrices[degree][std::make_pair(refinementPathLength, refinementPath)];
}
......@@ -857,7 +857,7 @@ namespace AMDiS {
using namespace mtl;
if (subElemGradMatrices[degree].count(refinementPath) == 0) {
if (subElemGradMatrices[degree].count(std::make_pair(refinementPathLength, refinementPath)) == 0) {
dense2D<double> mat(3, 3), tmpMat(3, 3);
mat = 1;
......@@ -881,10 +881,9 @@ namespace AMDiS {
mat = tmpMat;
}
subElemGradMatrices[1][refinementPath] = mat;
subElemGradMatrices[1][std::make_pair(refinementPathLength, refinementPath)] = mat;
}
return subElemGradMatrices[degree][refinementPath];
return subElemGradMatrices[degree][std::make_pair(refinementPathLength, refinementPath)];
}
}
......@@ -738,7 +738,7 @@ namespace AMDiS {
using namespace mtl;
if (subElemMatrices[degree].count(refinementPath) == 0) {
if (subElemMatrices[degree].count(std::make_pair(refinementPathLength, refinementPath)) == 0) {
switch (degree) {
case 1:
{
......@@ -748,18 +748,18 @@ namespace AMDiS {
for (int i = 0; i < refinementPathLength; i++) {
if (refinementPath & (1 << i)) {
if ((level + i) % 3 == 0)
tmpMat = mat_d1_l0_right * mat;
tmpMat = mat * mat_d1_l0_right;
else
tmpMat = mat_d1_l12_right * mat;
tmpMat = mat * mat_d1_l12_right;
mat = tmpMat;
} else {
tmpMat = mat_d1_left * mat;
tmpMat = mat * mat_d1_left;
mat = tmpMat;
}
}
subElemMatrices[degree][refinementPath] = mat;
subElemMatrices[degree][std::make_pair(refinementPathLength, refinementPath)] = mat;
}
break;
case 4:
......@@ -770,18 +770,18 @@ namespace AMDiS {
for (int i = 0; i < refinementPathLength; i++) {
if (refinementPath & (1 << i)) {
if ((level + i) % 3 == 0)
tmpMat = mat_d4_l0_right * mat;
tmpMat = mat * mat_d4_l0_right;
else
tmpMat = mat_d4_l12_right * mat;
tmpMat = mat * mat_d4_l12_right;
mat = tmpMat;
} else {
tmpMat = mat_d4_left * mat;
tmpMat = mat * mat_d4_left;
mat = tmpMat;
}
}
subElemMatrices[degree][refinementPath] = mat;
subElemMatrices[degree][std::make_pair(refinementPathLength, refinementPath)] = mat;
}
break;
default:
......@@ -789,7 +789,7 @@ namespace AMDiS {
}
}
return subElemMatrices[degree][refinementPath];
return subElemMatrices[degree][std::make_pair(refinementPathLength, refinementPath)];
}
......@@ -799,7 +799,7 @@ namespace AMDiS {
ERROR_EXIT("Not yet implemented!\n");
return subElemGradMatrices[degree][refinementPath];
return subElemGradMatrices[degree][std::make_pair(refinementPathLength, refinementPath)];
}
}
......@@ -65,12 +65,12 @@ namespace AMDiS {
// create new assembler
if (!optimized) {
newAssembler = new StandardZOA(op, assembler, quad);
newAssembler = new StandardZOA(op, assembler, quad);
} else {
if (pwConst)
newAssembler = new PrecalcZOA(op, assembler, quad);
newAssembler = new PrecalcZOA(op, assembler, quad);
else
newAssembler = new FastQuadZOA(op, assembler, quad);
newAssembler = new FastQuadZOA(op, assembler, quad);
}
subAssemblers->push_back(newAssembler);
......
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