diff --git a/AMDiS/libtool b/AMDiS/libtool index ace48e58891430cbcc2eae0fee1709dd2bac898f..80535d8da2bd29747389d924ce2317d5403a05f2 100755 --- a/AMDiS/libtool +++ b/AMDiS/libtool @@ -82,13 +82,13 @@ AR="ar" AR_FLAGS="cru" # A C compiler. -LTCC="/licsoft/libraries/openmpi/1.2.6/64bit/bin/mpicc" +LTCC="gcc" # LTCC compiler flags. LTCFLAGS="-g -O2" # A language-specific compiler. -CC="/licsoft/libraries/openmpi/1.2.6/64bit/bin/mpicc" +CC="gcc" # Is the compiler the GNU C compiler? with_gcc=yes @@ -171,7 +171,7 @@ dlopen_self=unknown dlopen_self_static=unknown # Compiler flag to prevent dynamic linking. -link_static_flag="" +link_static_flag="-static" # Compiler flag to turn off builtin functions. no_builtin_flag=" -fno-builtin" @@ -6798,13 +6798,13 @@ AR="ar" AR_FLAGS="cru" # A C compiler. -LTCC="/licsoft/libraries/openmpi/1.2.6/64bit/bin/mpicc" +LTCC="gcc" # LTCC compiler flags. LTCFLAGS="-g -O2" # A language-specific compiler. -CC="/licsoft/libraries/openmpi/1.2.6/64bit/bin/mpicxx" +CC="g++" # Is the compiler the GNU C compiler? with_gcc=yes @@ -6887,7 +6887,7 @@ dlopen_self=unknown dlopen_self_static=unknown # Compiler flag to prevent dynamic linking. -link_static_flag="" +link_static_flag="-static" # Compiler flag to turn off builtin functions. no_builtin_flag=" -fno-builtin" @@ -6954,11 +6954,11 @@ predeps="" # Dependencies to place after the objects being linked to create a # shared library. -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/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/../../.." # Method to check whether dependent libraries are shared objects. deplibs_check_method="pass_all" @@ -7103,7 +7103,7 @@ AR="ar" AR_FLAGS="cru" # A C compiler. -LTCC="/licsoft/libraries/openmpi/1.2.6/64bit/bin/mpicc" +LTCC="gcc" # LTCC compiler flags. LTCFLAGS="-g -O2" diff --git a/AMDiS/src/io/ArhReader.cc b/AMDiS/src/io/ArhReader.cc index 465750ef76b25d02fac43de78b608fe40fdf1114..b6131839fa313f0946482c387afd771cccd64633 100644 --- a/AMDiS/src/io/ArhReader.cc +++ b/AMDiS/src/io/ArhReader.cc @@ -24,27 +24,35 @@ namespace AMDiS { using namespace std; - void ArhReader::read(std::string filename, Mesh *mesh) + void ArhReader::read(string filename, Mesh *mesh, + DOFVector<double>* vec0, + DOFVector<double>* vec1, + DOFVector<double>* vec2) { - std::vector<DOFVector<double>*> vecs(0); - ArhReader::read(filename, mesh, vecs); - } + vector<DOFVector<double>*> vecs(0); + if (vec0 != NULL) + vecs.push_back(vec0); + if (vec1 != NULL) + vecs.push_back(vec1); + if (vec2 != NULL) + vecs.push_back(vec2); - - void ArhReader::read(std::string filename, Mesh *mesh, DOFVector<double>* vec) - { - std::vector<DOFVector<double>*> vecs(1); - vecs[0] = vec; - ArhReader::read(filename, mesh, vecs); } void ArhReader::read(string filename, Mesh *mesh, - std::vector<DOFVector<double>*> vecs) + vector<DOFVector<double>*> vecs) { FUNCNAME("ArhReader::read()"); + // === Get set of all macro elements in mesh. === + std::set<int> macroInMesh; + for (std::deque<MacroElement*>::iterator it = mesh->getMacroElements().begin(); + it != mesh->getMacroElements().end(); ++it) + macroInMesh.insert((*it)->getIndex()); + + RefinementManager *refManager = NULL; switch (mesh->getDim()) { case 2: @@ -88,7 +96,8 @@ namespace AMDiS { MeshStructure elementStructure; elementStructure.init(structureCode, codeSize); - elementStructure.fitMeshToStructure(mesh, refManager, false, elIndex); + if (macroInMesh.count(elIndex) == 1) + elementStructure.fitMeshToStructure(mesh, refManager, false, elIndex); uint32_t nValuesPerVector = 0; file.read(reinterpret_cast<char*>(&nValuesPerVector), 4); @@ -96,7 +105,8 @@ namespace AMDiS { for (unsigned int j = 0; j < nValueVectors; j++) { vector<double> values(nValuesPerVector); file.read(reinterpret_cast<char*>(&(values[0])), 8 * nValuesPerVector); - setDofValues(elIndex, mesh, values, vecs[j]); + if (macroInMesh.count(elIndex) == 1) + setDofValues(elIndex, mesh, values, vecs[j]); } } @@ -107,7 +117,7 @@ namespace AMDiS { void ArhReader::setDofValues(int macroElIndex, Mesh *mesh, - std::vector<double>& values, DOFVector<double>* vec) + vector<double>& values, DOFVector<double>* vec) { FUNCNAME("ArhReader::setDofValues()"); diff --git a/AMDiS/src/io/ArhReader.h b/AMDiS/src/io/ArhReader.h index 15a895474e7916fca71663ac779a042b4b26fe73..7c57b454ac938a021212790e5f098780a396c77f 100644 --- a/AMDiS/src/io/ArhReader.h +++ b/AMDiS/src/io/ArhReader.h @@ -30,9 +30,10 @@ namespace AMDiS { class ArhReader { public: - static void read(std::string filename, Mesh *mesh); - - static void read(std::string filename, Mesh *mesh, DOFVector<double>* vec); + static void read(std::string filename, Mesh *mesh, + DOFVector<double>* vec0 = NULL, + DOFVector<double>* vec1 = NULL, + DOFVector<double>* vec2 = NULL); static void read(std::string filename, Mesh *mesh, std::vector<DOFVector<double>*> vecs); diff --git a/AMDiS/src/io/ArhWriter.cc b/AMDiS/src/io/ArhWriter.cc index 196f685f4eb9711ff239615e8fe2711d17b9c435..236dd3d296f98968c2dc6e963ac37311c959f116 100644 --- a/AMDiS/src/io/ArhWriter.cc +++ b/AMDiS/src/io/ArhWriter.cc @@ -24,24 +24,25 @@ namespace AMDiS { using namespace std; - void ArhWriter::write(string filename, Mesh *mesh) + void ArhWriter::write(string filename, Mesh *mesh, + DOFVector<double>* vec0, + DOFVector<double>* vec1, + DOFVector<double>* vec2) { - std::vector<DOFVector<double>*> vecs(0); - ArhWriter::write(filename, mesh, vecs); - } - - - void ArhWriter::write(std::string filename, Mesh *mesh, DOFVector<double>* vec) - { - std::vector<DOFVector<double>*> vecs(1); - vecs[0] = vec; + vector<DOFVector<double>*> vecs(0); + if (vec0 != NULL) + vecs.push_back(vec0); + if (vec1 != NULL) + vecs.push_back(vec1); + if (vec2 != NULL) + vecs.push_back(vec2); ArhWriter::write(filename, mesh, vecs); } - void ArhWriter::write(std::string filename, Mesh *mesh, - std::vector<DOFVector<double>*> vecs) + void ArhWriter::write(string filename, Mesh *mesh, + vector<DOFVector<double>*> vecs) { FUNCNAME("ArhWriter::write()"); @@ -69,7 +70,7 @@ namespace AMDiS { file.write(reinterpret_cast<char*>(&nAllValues), 4); MeshStructure elementStructure; - std::vector<std::vector<double> > values(vecs.size()); + vector<vector<double> > values(vecs.size()); int32_t macroElIndex = -1; elInfo = stack.traverseFirst(mesh, -1, Mesh::CALL_EVERY_EL_PREORDER); @@ -111,9 +112,9 @@ namespace AMDiS { } - void ArhWriter::writeMacroElement(std::ofstream &file, + void ArhWriter::writeMacroElement(ofstream &file, MeshStructure &code, - std::vector<std::vector<double> >& values, + vector<vector<double> >& values, int32_t elIndex) { file.write(reinterpret_cast<char*>(&elIndex), 4); diff --git a/AMDiS/src/io/ArhWriter.h b/AMDiS/src/io/ArhWriter.h index 67ca01c2a670a6960013cf47e64ce763877c0379..4c2939b73c915d63727ea1dfe9a78ab8f5f048c6 100644 --- a/AMDiS/src/io/ArhWriter.h +++ b/AMDiS/src/io/ArhWriter.h @@ -33,9 +33,10 @@ namespace AMDiS { class ArhWriter { public: - static void write(std::string filename, Mesh *mesh); - - static void write(std::string filename, Mesh *mesh, DOFVector<double>* vec); + static void write(std::string filename, Mesh *mesh, + DOFVector<double>* vec0 = NULL, + DOFVector<double>* vec1 = NULL, + DOFVector<double>* vec2 = NULL); static void write(std::string filename, Mesh *mesh, std::vector<DOFVector<double>*> vecs);