From f9e40e6c85c389c58c3c952382700a476de0f034 Mon Sep 17 00:00:00 2001 From: Thomas Witkowski <thomas.witkowski@gmx.de> Date: Fri, 12 Nov 2010 14:49:53 +0000 Subject: [PATCH] Add some more debug functions. --- AMDiS/src/ArhReader.cc | 2 +- AMDiS/src/Debug.cc | 22 ++++++++++++++++++++++ AMDiS/src/Debug.h | 3 +++ AMDiS/src/SecondOrderTerm.cc | 2 +- AMDiS/src/ZeroOrderAssembler.cc | 6 +++--- 5 files changed, 30 insertions(+), 5 deletions(-) diff --git a/AMDiS/src/ArhReader.cc b/AMDiS/src/ArhReader.cc index 2249c29d..912cd865 100644 --- a/AMDiS/src/ArhReader.cc +++ b/AMDiS/src/ArhReader.cc @@ -46,7 +46,7 @@ namespace AMDiS { file.read(reinterpret_cast<char*>(&nStructureCodes), 4); file.read(reinterpret_cast<char*>(&codeSize), 4); - vector<unsigned long> structureCode(nStructureCodes); + vector<unsigned long int> structureCode(nStructureCodes); file.read(reinterpret_cast<char*>(&(structureCode[0])), 8 * nStructureCodes); MeshStructure elementStructure; diff --git a/AMDiS/src/Debug.cc b/AMDiS/src/Debug.cc index 645bcf77..ed2338e5 100644 --- a/AMDiS/src/Debug.cc +++ b/AMDiS/src/Debug.cc @@ -557,6 +557,28 @@ namespace AMDiS { } + void exportDofVectorByCoords(const DOFVector<double>* vec, + std::string filename) + { + DOFVector<WorldVector<double> > coords(vec->getFeSpace(), "dofCoords"); + vec->getFeSpace()->getMesh()->getDofIndexCoords(vec->getFeSpace(), coords); + int dim = vec->getFeSpace()->getMesh()->getDim(); + + std::ofstream file; + file.open(filename.c_str()); + file << vec->getUsedSize() << "\n"; + + DOFIterator<WorldVector<double> > it(&coords, USED_DOFS); + for (it.reset(); !it.end(); ++it) { + for (int i = 0; i < dim; i++) + file << (*it)[i] << " "; + file << (*vec)[it.getDOFIndex()] << "\n"; + } + + file.close(); + } + + void createSortedDofs(Mesh *mesh, ElementIdxToDofs &elMap) { FUNCNAME("debug::dbgCreateElementMap()"); diff --git a/AMDiS/src/Debug.h b/AMDiS/src/Debug.h index 6c383162..3112e75e 100644 --- a/AMDiS/src/Debug.h +++ b/AMDiS/src/Debug.h @@ -141,6 +141,9 @@ namespace AMDiS { int getLocalNeighbourIndex(Mesh *mesh, int elIndex, int neighIndex); + void exportDofVectorByCoords(const DOFVector<double>* vec, + std::string filename); + /** \brief * Traverse a mesh and store for each element all its vertex DOFs in local sorted * order (by values). diff --git a/AMDiS/src/SecondOrderTerm.cc b/AMDiS/src/SecondOrderTerm.cc index 85ce9e7c..e9fc26a8 100644 --- a/AMDiS/src/SecondOrderTerm.cc +++ b/AMDiS/src/SecondOrderTerm.cc @@ -194,7 +194,7 @@ namespace AMDiS { { const DimVec<WorldVector<double> > &grdLambda = elInfo->getGrdLambda(); for (int iq = 0; iq < nPoints; iq++) - l1lt(grdLambda, *(LALt[iq]), (*f)(vecAtQPs[iq])); + l1lt(grdLambda, *(LALt[iq]), (*f)(vecAtQPs[iq])); } void VecAtQP_SOT::eval(int nPoints, diff --git a/AMDiS/src/ZeroOrderAssembler.cc b/AMDiS/src/ZeroOrderAssembler.cc index f8032eb7..845ca342 100644 --- a/AMDiS/src/ZeroOrderAssembler.cc +++ b/AMDiS/src/ZeroOrderAssembler.cc @@ -68,9 +68,9 @@ namespace AMDiS { 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); @@ -130,7 +130,7 @@ namespace AMDiS { for (int i = 0; i < nRow; i++) { double psival = (*(psi->getPhi(i)))(quadrature->getLambda(iq)); for (int j = 0; j < nCol; j++) - mat[i][j] += quadrature->getWeight(iq) * c[iq] * psival * phival[j]; + mat[i][j] += quadrature->getWeight(iq) * c[iq] * psival * phival[j]; } } } -- GitLab