diff --git a/AMDiS/src/ArhReader.cc b/AMDiS/src/ArhReader.cc index 02ca76ca020f24e0c3eeeb6ed1c2e198fa067910..2249c29de49d1a0afdc2e8032ad70ab162a1d678 100644 --- a/AMDiS/src/ArhReader.cc +++ b/AMDiS/src/ArhReader.cc @@ -8,7 +8,7 @@ namespace AMDiS { using namespace std; - void ArhReader::read(string filename, Mesh *mesh) + void ArhReader::read(string filename, Mesh *mesh, bool ignoreFinerMesh) { FUNCNAME("ArhReader::read()"); @@ -28,36 +28,36 @@ namespace AMDiS { file.open(filename.c_str(), ios::in | ios::binary); string typeId = ""; - long nMacroElements = 0; - long nValueVectors = 0; - long nAllValues = 0; + uint32_t nMacroElements = 0; + uint32_t nValueVectors = 0; + uint32_t nAllValues = 0; file.read(const_cast<char*>(typeId.data()), 4); file.read(reinterpret_cast<char*>(&nMacroElements), 4); file.read(reinterpret_cast<char*>(&nValueVectors), 4); file.read(reinterpret_cast<char*>(&nAllValues), 4); - for (long i = 0; i < nMacroElements; i++) { - long elIndex = 0; - long nStructureCodes = 0; - long codeSize = 0; + for (unsigned int i = 0; i < nMacroElements; i++) { + uint32_t elIndex = 0; + uint32_t nStructureCodes = 0; + uint32_t codeSize = 0; file.read(reinterpret_cast<char*>(&elIndex), 4); file.read(reinterpret_cast<char*>(&nStructureCodes), 4); file.read(reinterpret_cast<char*>(&codeSize), 4); vector<unsigned long> structureCode(nStructureCodes); - file.read(reinterpret_cast<char*>(&(structureCode[0])), 4 * nStructureCodes); + file.read(reinterpret_cast<char*>(&(structureCode[0])), 8 * nStructureCodes); MeshStructure elementStructure; elementStructure.init(structureCode, codeSize); - elementStructure.fitMeshToStructure(mesh, refManager, - false, false, elIndex, true); + elementStructure.fitMeshToStructure(mesh, refManager, false, + false, elIndex, ignoreFinerMesh); - long nValuesPerVector = 0; + uint32_t nValuesPerVector = 0; file.read(reinterpret_cast<char*>(&nValuesPerVector), 4); - for (long j = 0; j < nValuesPerVector * nValueVectors; j++) { + for (unsigned int j = 0; j < nValuesPerVector * nValueVectors; j++) { double value = 0.0; file.read(reinterpret_cast<char*>(&value), 8); } diff --git a/AMDiS/src/ArhReader.h b/AMDiS/src/ArhReader.h index 4d1ddc651a430953244250020366cb34d9d50d98..8a1b74bffd8a8bc75e585e32bf15ca2140a68fe9 100644 --- a/AMDiS/src/ArhReader.h +++ b/AMDiS/src/ArhReader.h @@ -29,7 +29,8 @@ namespace AMDiS { class ArhReader { public: - static void read(std::string filename, Mesh *mesh); + static void read(std::string filename, Mesh *mesh, + bool ignoreFinerMesh = true); }; } diff --git a/AMDiS/src/ArhWriter.cc b/AMDiS/src/ArhWriter.cc index d15dd96f415de7d1d30cbca5b74238948ef88b28..9da84d67438055c74fbb0f60e0a1a6f952f0a95b 100644 --- a/AMDiS/src/ArhWriter.cc +++ b/AMDiS/src/ArhWriter.cc @@ -19,7 +19,7 @@ namespace AMDiS { string typeId = "arhS"; file.write(typeId.c_str(), 4); - long nMacroElements = 0; + uint32_t nMacroElements = 0; TraverseStack stack; ElInfo *elInfo = stack.traverseFirst(mesh, 0, Mesh::CALL_EL_LEVEL); while (elInfo) { @@ -29,14 +29,14 @@ namespace AMDiS { file.write(reinterpret_cast<char*>(&nMacroElements), 4); - long nValueVectors = 0; + uint32_t nValueVectors = 0; file.write(reinterpret_cast<char*>(&nValueVectors), 4); - long nAllValues = 0; + uint32_t nAllValues = 0; file.write(reinterpret_cast<char*>(&nAllValues), 4); MeshStructure elementStructure; - long macroElIndex = -1; + int32_t macroElIndex = -1; elInfo = stack.traverseFirst(mesh, -1, Mesh::CALL_EVERY_EL_PREORDER); while (elInfo) { @@ -67,20 +67,20 @@ namespace AMDiS { void ArhWriter::writeMacroElement(std::ofstream &file, MeshStructure &code, - long elIndex) + int32_t elIndex) { file.write(reinterpret_cast<char*>(&elIndex), 4); - long nStructureCodes = code.getCode().size(); + uint32_t nStructureCodes = code.getCode().size(); file.write(reinterpret_cast<char*>(&nStructureCodes), 4); - long codeSize = code.getNumElements(); + uint32_t codeSize = code.getNumElements(); file.write(reinterpret_cast<char*>(&codeSize), 4); file.write(reinterpret_cast<char*>(&(const_cast<vector<unsigned long int>&>(code.getCode())[0])), - 4 * nStructureCodes); + 8 * nStructureCodes); - long nValuesPerVector = 0; + uint32_t nValuesPerVector = 0; file.write(reinterpret_cast<char*>(&nValuesPerVector), 4); } diff --git a/AMDiS/src/ArhWriter.h b/AMDiS/src/ArhWriter.h index d21c628159258fbcd8b7fb7b21aa0d867e462e1c..b5e3ced2b2458d5ea86b798c2b34558ffa1b5ee3 100644 --- a/AMDiS/src/ArhWriter.h +++ b/AMDiS/src/ArhWriter.h @@ -37,7 +37,7 @@ namespace AMDiS { protected: static void writeMacroElement(std::ofstream &file, MeshStructure &code, - long elIndex); + int32_t elIndex); }; } diff --git a/AMDiS/src/MeshStructure.cc b/AMDiS/src/MeshStructure.cc index 6b35675ce0928763a8ce0431cbdbebba2feb782c..e499031ff4a56d7bc55dcd5db839e34520c077ae 100644 --- a/AMDiS/src/MeshStructure.cc +++ b/AMDiS/src/MeshStructure.cc @@ -257,8 +257,8 @@ namespace AMDiS { elInfo = stack.traverseNext(elInfo); } else { TEST_EXIT(element->isLeaf()) - ("Mesh is finer than strucutre code! (Element index: %d\n", - element->getIndex()); + ("Mesh is finer than strucutre code! (Element index: %d Macro element index: %d)\n", + element->getIndex(), elInfo->getMacroElement()->getIndex()); } } diff --git a/AMDiS/src/RefinementManager3d.cc b/AMDiS/src/RefinementManager3d.cc index 2674dfcff350b2476a5f67474013b0e1e268e489..1088d1787d0fb17439c927f0a5956b3898d45db6 100644 --- a/AMDiS/src/RefinementManager3d.cc +++ b/AMDiS/src/RefinementManager3d.cc @@ -598,7 +598,7 @@ namespace AMDiS { DegreeOfFreedom *edge[2]; if (el_info->getElement()->getMark() <= 0) - return el_info; /* element may not be refined */ + return el_info; // element may not be refined // === Get memory for a list of all elements at the refinement edge. ===