From d2842e3cbaacae5af25828804bd07225531073f1 Mon Sep 17 00:00:00 2001 From: Thomas Witkowski <thomas.witkowski@gmx.de> Date: Mon, 21 Apr 2008 07:31:52 +0000 Subject: [PATCH] * Add some documentation comments to DataCollector and Vtkwriter --- AMDiS/src/DataCollector.cc | 10 +++++++-- AMDiS/src/DataCollector.h | 5 ++--- AMDiS/src/VtkWriter.cc | 8 +++++-- AMDiS/src/VtkWriter.h | 45 ++++++++++++++------------------------ 4 files changed, 33 insertions(+), 35 deletions(-) diff --git a/AMDiS/src/DataCollector.cc b/AMDiS/src/DataCollector.cc index b4e6f8f5..88ebc9cf 100644 --- a/AMDiS/src/DataCollector.cc +++ b/AMDiS/src/DataCollector.cc @@ -127,7 +127,6 @@ namespace AMDiS { } // Traverse elements to create interpolation values. - counter = 0; elInfo = stack.traverseFirst(mesh_, level_, traverseFlag_ | Mesh::FILL_COORDS); while (elInfo) { if (!writeElem_ || writeElem_(elInfo)) @@ -273,7 +272,9 @@ namespace AMDiS { const BasisFunction *basisFcts = feSpace_->getBasisFcts(); const DegreeOfFreedom *localDOFs = basisFcts->getLocalIndices(elInfo->getElement(), localAdmin_, NULL); const int nBasisFcts = basisFcts->getNumber(); - + + // First, traverse all DOFs at the vertices of the element, determine + // their coordinates and add them to the corresponding entry in dofCoords_. for (int i = 0; i < mesh_->getGeo(VERTEX); i++) { (*interpPointInd_)[localDOFs[i]] = -2; // mark as vertex @@ -295,6 +296,11 @@ namespace AMDiS { } + + // Then, traverse all interpolation DOFs of the element, determine + // their coordinates and add them to the corresponding entry in + // interpPointCoords_. + for (int i = mesh_->getGeo(VERTEX); i < nBasisFcts; i++) { WorldVector<double> interpolCoords; elInfo->coordToWorld(*basisFcts->getCoords(i), &interpolCoords); diff --git a/AMDiS/src/DataCollector.h b/AMDiS/src/DataCollector.h index 0ee30785..a0b58709 100644 --- a/AMDiS/src/DataCollector.h +++ b/AMDiS/src/DataCollector.h @@ -245,7 +245,8 @@ namespace AMDiS { ::std::vector< ::std::vector<int> > interpPoints_; /** \brief - * + * Stores for each DOF a list of its coordinates. If there are now periodic + * boundaries than there is also only one coordinate per DOF. */ DOFVector< ::std::list<WorldVector<double> > > *interpPointCoords_; @@ -294,8 +295,6 @@ namespace AMDiS { * Pointer to a function which decides whether an element is considered. */ bool (*writeElem_)(ElInfo*); - - int counter; }; } diff --git a/AMDiS/src/VtkWriter.cc b/AMDiS/src/VtkWriter.cc index df47b2ab..bfe25459 100644 --- a/AMDiS/src/VtkWriter.cc +++ b/AMDiS/src/VtkWriter.cc @@ -4,7 +4,6 @@ #include <cmath> #include "VtkWriter.h" -#include "Traverse.h" #include "DataCollector.h" #include "DOFVector.h" #include "SurfaceRegion_ED.h" @@ -105,7 +104,7 @@ namespace AMDiS { DOFVector< ::std::list<VertexInfo> >::Iterator it(vertexInfos, USED_DOFS); int counter = 0; - // for all DOFs + // For all DOFs of vertices, write the coordinates. for (it.reset(); !it.end(); ++it) { // for all vertex infos of this DOF ::std::list<VertexInfo>::iterator it2; @@ -115,6 +114,7 @@ namespace AMDiS { } } + // For the second dim case, write also the interpolation points. if ((dim_ == 2) && (degree_ > 1)) { DOFVector< ::std::list< WorldVector<double> > > *interpPointCoords = (*dc_)[0]->getInterpPointCoords(); DOFVector< ::std::list< WorldVector<double> > >::Iterator pointIt(interpPointCoords, USED_DOFS); @@ -139,6 +139,7 @@ namespace AMDiS { DOFVector<double>::Iterator valueIt(values, USED_DOFS); DOFVector< ::std::list<WorldVector<double> > >::Iterator coordIt(dofCoords, USED_DOFS); + // Write the values for all vertex DOFs. for (intPointIt.reset(), valueIt.reset(), coordIt.reset(); !intPointIt.end(); ++intPointIt, ++valueIt, ++coordIt) { @@ -150,6 +151,7 @@ namespace AMDiS { } } + // For the second dim case, write also the values of the interpolation points. if ((dim_ == 2) && (degree_ > 1)) { DOFVector< ::std::list<WorldVector<double> > >::Iterator interpCoordIt((*dc_)[componentNo]->getInterpPointCoords(), USED_DOFS); @@ -170,6 +172,8 @@ namespace AMDiS { void VtkWriter::writeConnectivity(::std::ofstream &file) { + // For the second dim case, and if higher order Lagrange elements are used, + // write the connectivity by extra functions. if ((dim_ == 2) && (degree_ == 2)) { writeConnectivity_dim2_degree2(file); } else if ((dim_ == 2) && (degree_ == 3)) { diff --git a/AMDiS/src/VtkWriter.h b/AMDiS/src/VtkWriter.h index 3de2e880..afb56099 100644 --- a/AMDiS/src/VtkWriter.h +++ b/AMDiS/src/VtkWriter.h @@ -32,12 +32,8 @@ namespace AMDiS { class VtkWriter { public: - VtkWriter(::std::vector<DataCollector*> *dc, - int level = -1, - Flag traverseFlag = Mesh::CALL_LEAF_EL) - : dc_(dc), - level_(level), - traverseFlag_(traverseFlag) + VtkWriter(::std::vector<DataCollector*> *dc) + : dc_(dc) { degree_ = (*dc_)[0]->getFeSpace()->getBasisFcts()->getDegree(); dim_ = (*dc_)[0]->getMesh()->getDim(); @@ -58,42 +54,47 @@ namespace AMDiS { const char *animationFilename); protected: /** \brief - * + * Writes all coordinates of vertices and interpolation points to an + * output file. */ void writeVertexCoords(::std::ofstream &file); /** \brief - * + * Writes all values of vertices and interpolation point to an output + * file. */ void writeVertexValues(::std::ofstream &file, int componentNo); /** \brief - * + * Writes the connectivity of all simplices to an output file. */ void writeConnectivity(::std::ofstream &file); /** \brief - * + * Writes the connectivity for the case dim = 2 and degree = 2 to + * an output file. */ void writeConnectivity_dim2_degree2(::std::ofstream &file); /** \brief - * + * Writes the connectivity for the case dim = 2 and degree = 3 to + * an output file. */ void writeConnectivity_dim2_degree3(::std::ofstream &file); /** \brief - * + * Writes the connectivity for the case dim = 2 and degree = 4 to + * an output file. */ void writeConnectivity_dim2_degree4(::std::ofstream &file); /** \brief - * + * Writes a world coordinate to a given file. */ inline void writeCoord(::std::ofstream &file, WorldVector<double> coord) { for (int i = 0; i < Global::getGeo(WORLD); i++) { @@ -107,31 +108,19 @@ namespace AMDiS { private: /** - * + * List of DataCollectors, for each component of the problem one. */ ::std::vector<DataCollector*> *dc_; /** \brief - * Level information for traversing the mesh. - */ - int level_; - - - /** \brief - * Flags for traversing the mesh. - */ - Flag traverseFlag_; - - - /** \brief - * + * Degree of the basis function of the problem. */ int degree_; /** \brief - * + * Dimension of the geometry. */ int dim_; }; -- GitLab