From 65481c8d305c5aa6405ae00f705eae7658ee4029 Mon Sep 17 00:00:00 2001 From: Thomas Witkowski <thomas.witkowski@gmx.de> Date: Tue, 9 Nov 2010 14:49:41 +0000 Subject: [PATCH] Fixed first nice bug in arh files support. --- AMDiS/src/ArhReader.cc | 26 +++++++++++++------------- AMDiS/src/ArhReader.h | 3 ++- AMDiS/src/ArhWriter.cc | 18 +++++++++--------- AMDiS/src/ArhWriter.h | 2 +- AMDiS/src/MeshStructure.cc | 4 ++-- AMDiS/src/RefinementManager3d.cc | 2 +- 6 files changed, 28 insertions(+), 27 deletions(-) diff --git a/AMDiS/src/ArhReader.cc b/AMDiS/src/ArhReader.cc index 02ca76ca..2249c29d 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 4d1ddc65..8a1b74bf 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 d15dd96f..9da84d67 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 d21c6281..b5e3ced2 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 6b35675c..e499031f 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 2674dfcf..1088d178 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. === -- GitLab