diff --git a/AMDiS/src/BasisFunction.h b/AMDiS/src/BasisFunction.h index 80aaa3f0c5f4062bfbad0f942dc44ceb9c5feda6..56a68a3518d9ab725829c46a02a11acc7be907b0 100644 --- a/AMDiS/src/BasisFunction.h +++ b/AMDiS/src/BasisFunction.h @@ -64,9 +64,9 @@ namespace AMDiS { class BasFctType { public: - BasFctType() {}; + BasFctType() {} - virtual ~BasFctType() {}; + virtual ~BasFctType() {} virtual double operator()(const DimVec<double>&) const = 0; }; @@ -78,9 +78,9 @@ namespace AMDiS { class GrdBasFctType { public: - GrdBasFctType() {}; + GrdBasFctType() {} - virtual ~GrdBasFctType() {}; + virtual ~GrdBasFctType() {} virtual void operator()(const DimVec<double>&, DimVec<double>&) const = 0; @@ -93,9 +93,9 @@ namespace AMDiS { class D2BasFctType { public: - D2BasFctType() {}; + D2BasFctType() {} - virtual ~D2BasFctType() {}; + virtual ~D2BasFctType() {} virtual void operator()(const DimVec<double>&, DimMat<double>&) const = 0; @@ -131,7 +131,7 @@ namespace AMDiS { /** \brief * Creates a BasisFunction object of given dim and degree */ - BasisFunction(const std::string& name_, int dim_, int degree_); + BasisFunction(const std::string& name, int dim, int degree); /** \brief * destructor @@ -144,14 +144,14 @@ namespace AMDiS { */ virtual bool operator==(const BasisFunction& a) const { return a.getName() == name; - }; + } /** \brief * Returns !(*this == b) */ inline bool operator!=(const BasisFunction& b) const { return !(operator == (b)); - }; + } /** \brief * Used by \ref getDOFIndices and \ref getVec @@ -194,28 +194,28 @@ namespace AMDiS { */ inline const int getDegree() const { return degree; - }; + } /** \brief * Returns \ref dim of BasisFunction */ inline const int getDim() const { return dim; - }; + } /** \brief * Returns \ref nBasFcts which is the number of local basis functions */ inline const int getNumber() const { return nBasFcts; - }; + } /** \brief * Returns \ref name of BasisFunction */ inline const std::string& getName() const { return name; - }; + } /** \brief * Returns \ref nDOF[i] @@ -227,7 +227,7 @@ namespace AMDiS { */ inline DimVec<int>* getNumberOfDOFs() const { return nDOF; - }; + } /** \brief * Initialisation of the \ref nDOF vector. Must be implemented by sub classes diff --git a/AMDiS/src/DOFAdmin.cc b/AMDiS/src/DOFAdmin.cc index d62b63dc8dd91fd8127e37a9fc631d0e9548fb6b..8a1e3820a6d9dd2a5d6213bae5b19f38991e8286 100755 --- a/AMDiS/src/DOFAdmin.cc +++ b/AMDiS/src/DOFAdmin.cc @@ -53,9 +53,10 @@ namespace AMDiS { usedCount = src.usedCount; holeCount = src.holeCount; sizeUsed = src.sizeUsed; - for (int i = 0; i < 4; nrDOF[i] = src.nrDOF[i++]) { + for (int i = 0; i < mesh->getDim(); i++) { + nrDOF[i] = src.nrDOF[i]; nr0DOF[i] = src.nr0DOF[i]; - }; + } dofIndexedList = src.dofIndexedList; dofContainerList = src.dofContainerList; } diff --git a/AMDiS/src/FiniteElemSpace.cc b/AMDiS/src/FiniteElemSpace.cc index dbec0d6e0c1eb4147b36db9d466c36265355e6c6..c1a8ae7c6a6c03468142e54f8d059c3427bc31dc 100644 --- a/AMDiS/src/FiniteElemSpace.cc +++ b/AMDiS/src/FiniteElemSpace.cc @@ -55,12 +55,12 @@ namespace AMDiS { if (&feSpace == this) return *this; - if (feSpace.admin == &(feSpace.mesh->getDOFAdmin(0))) { - std::cout << "JA, SIND GLEICH\n"; - } else { - std::cout << "NO, NICHT WIRKLICH\n"; - } - ERROR_EXIT("\n"); + mesh = NEW Mesh(feSpace.mesh->getName(), feSpace.mesh->getDim()); + *mesh = *(feSpace.mesh); + admin = &(const_cast<DOFAdmin&>(mesh->getDOFAdmin(0))); + + TEST_EXIT(feSpace.admin == &(feSpace.mesh->getDOFAdmin(0))) + ("Gut, dass muss ich mir noch mal ueberlegen!\n"); return *this; } diff --git a/AMDiS/src/Mesh.cc b/AMDiS/src/Mesh.cc index 46fa9223da91a1528f79500d5d983b90d0d7fde6..ae0e0310297c6c0e0fd76bec01dd644153258e8c 100644 --- a/AMDiS/src/Mesh.cc +++ b/AMDiS/src/Mesh.cc @@ -153,7 +153,7 @@ namespace AMDiS { admin.resize(m.admin.size()); for (int i = 0; i < static_cast<int>(admin.size()); i++) { admin[i] = NEW DOFAdmin(this); - *admin[i] = *(m.admin[i]); + *(admin[i]) = *(m.admin[i]); admin[i]->setMesh(this); } diff --git a/AMDiS/src/SolutionDataStorage.h b/AMDiS/src/SolutionDataStorage.h index 2f410456dcaa6d05701ebf750abc50a543e2190b..b853043e68f3b5acf955c0ebdb0595c08e5cc692 100644 --- a/AMDiS/src/SolutionDataStorage.h +++ b/AMDiS/src/SolutionDataStorage.h @@ -59,9 +59,13 @@ namespace AMDiS { bool pop(T **solution, double *timestep); + /** \brief + * + */ bool pop(T **solution, - double *timestep, - typename SolutionHelper<T>::type feSpace); + typename SolutionHelper<T>::type feSpace, + double *timestep); + /** \brief * Returns for a given solution number the corresponding fe Space. If the diff --git a/AMDiS/src/SolutionDataStorage.hh b/AMDiS/src/SolutionDataStorage.hh index 901d7908bbb75a62c9368be6606c73131d1775ad..95e5fb7f4151b68085c35d420397c7c5ad90b8ad 100644 --- a/AMDiS/src/SolutionDataStorage.hh +++ b/AMDiS/src/SolutionDataStorage.hh @@ -92,8 +92,9 @@ namespace AMDiS { template<typename T> bool SolutionDataStorage<T>::pop(T **solution, - double *timestep, - typename SolutionHelper<T>::type feSpace) + typename SolutionHelper<T>::type feSpace, + double *timestep) + { if (!pop(solution, timestep)) return false; diff --git a/AMDiS/src/VtkWriter.cc b/AMDiS/src/VtkWriter.cc index 0e4aa54f43f933411b3900c689c5c427d365b894..643d7d7e22dd4b57aaa26821f92222a6d8750b00 100644 --- a/AMDiS/src/VtkWriter.cc +++ b/AMDiS/src/VtkWriter.cc @@ -75,5 +75,18 @@ namespace AMDiS { return 0; } + void VtkWriter::writeFile(DOFVector<double> *values, + const char *filename) + { + DataCollector *dc = NEW DataCollector(values->getFESpace(), values); + std::vector<DataCollector*> dcList(0); + dcList.push_back(dc); + + VtkWriter *writer = NEW VtkWriter(&dcList); + writer->writeFile(filename); + + DELETE writer; + DELETE dc; + } } diff --git a/AMDiS/src/VtkWriter.h b/AMDiS/src/VtkWriter.h index 1951e1d11dfbefbc171342794b7871cad6c1cf54..bb6fce4ca504b85f1ce94d56b226f06df3fd0872 100644 --- a/AMDiS/src/VtkWriter.h +++ b/AMDiS/src/VtkWriter.h @@ -45,7 +45,7 @@ namespace AMDiS { { degree = (*dataCollector)[0]->getFeSpace()->getBasisFcts()->getDegree(); dim = (*dataCollector)[0]->getMesh()->getDim(); - }; + } /** \brief @@ -53,6 +53,11 @@ namespace AMDiS { */ int writeFile(const char *name); + /** \brief + * May be used to simply write ParaView files. + */ + static void writeFile(DOFVector<double> *values, + const char *filename); /** \brief * Set a compressing method for file output.