diff --git a/src/amdis/AdaptInfo.hpp b/src/amdis/AdaptInfo.hpp index b573492993edd31f3e9c02f8706621eacab28fb3..812fb24bf2d67fea4d3b2a13fecd525c43cb629d 100644 --- a/src/amdis/AdaptInfo.hpp +++ b/src/amdis/AdaptInfo.hpp @@ -3,6 +3,7 @@ // std c++ headers #include <algorithm> #include <cmath> +#include <forward_list> #include <limits> #include <map> #include <string> diff --git a/src/amdis/Marker.cpp b/src/amdis/Marker.cpp index 6f94cf2a77759638cbb4692b5ea22ff50c769f39..9584989b291d69a4b5df746e6a655cbd522ed5d3 100644 --- a/src/amdis/Marker.cpp +++ b/src/amdis/Marker.cpp @@ -9,7 +9,7 @@ namespace AMDiS { using std::pow; template <class Traits> - Marker<Traits>* Marker<Traits>::createMarker(std::string name, int number, const EstType& est, Grid* grid) + Marker<Traits>* Marker<Traits>::createMarker(std::string name, std::string component, const EstType& est, Grid* grid) { int strategy = 0; Parameters::get(name + "->strategy", strategy); @@ -22,19 +22,19 @@ namespace AMDiS { break; case 1: msg("Creating global refinement (GR) marker\n"); - marker = new GRMarker<Traits>(name, number, est, grid); + marker = new GRMarker<Traits>(name, component, est, grid); break; case 2: msg("Creating maximum strategy (MS) marker\n"); - marker = new MSMarker<Traits>(name, number, est, grid); + marker = new MSMarker<Traits>(name, component, est, grid); break; case 3: msg("Creating equidistribution strategy (ES) marker\n"); - marker = new ESMarker<Traits>(name, number, est, grid); + marker = new ESMarker<Traits>(name, component, est, grid); break; case 4: msg("Creating guaranteed error reduction strategy (GERS) marker\n"); - marker = new GERSMarker<Traits>(name, number, est, grid); + marker = new GERSMarker<Traits>(name, component, est, grid); break; default: error_exit("invalid strategy\n"); @@ -50,10 +50,10 @@ namespace AMDiS { { elMarkRefine = 0; elMarkCoarsen = 0; - estSum = pow(adaptInfo.getEstSum(number), p); - estMax = adaptInfo.getEstMax(number); - refineAllowed = adaptInfo.isRefinementAllowed(number); - coarsenAllowed = adaptInfo.isCoarseningAllowed(number); + estSum = pow(adaptInfo.getEstSum(component), p); + estMax = adaptInfo.getEstMax(component); + refineAllowed = adaptInfo.isRefinementAllowed(component); + coarsenAllowed = adaptInfo.isCoarseningAllowed(component); } @@ -123,10 +123,10 @@ namespace AMDiS { double MSGammaP = pow(MSGamma, this->p); double MSGammaCP = pow(MSGammaC, this->p); - this->markRLimit = MSGammaP * adaptInfo.getEstMax(this->number); - this->markCLimit = MSGammaCP * adaptInfo.getEstMax(this->number); + this->markRLimit = MSGammaP * adaptInfo.getEstMax(this->component); + this->markCLimit = MSGammaCP * adaptInfo.getEstMax(this->component); - msg("start max_est: ", adaptInfo.getEstMax(this->number), ", mark_limits: ", this->markRLimit, ", " , this->markCLimit, "\n"); + msg("start max_est: ", adaptInfo.getEstMax(this->component), ", mark_limits: ", this->markRLimit, ", " , this->markCLimit, "\n"); } @@ -137,7 +137,7 @@ namespace AMDiS { double ESThetaP = pow(ESTheta, this->p); double ESThetaCP = pow(ESThetaC, this->p); - double epsP = pow(adaptInfo.getSpaceTolerance(this->number), this->p); + double epsP = pow(adaptInfo.getSpaceTolerance(this->component), this->p); int nLeaves = (this->grid->leafGridView()).size(0); /*#ifdef HAVE_PARALLEL_DOMAIN_AMDIS @@ -163,7 +163,7 @@ namespace AMDiS { GERSSum = 0.0; double LTheta = pow(1.0 - GERSThetaStar, this->p); - double epsP = pow(adaptInfo.getSpaceTolerance(this->number), this->p); + double epsP = pow(adaptInfo.getSpaceTolerance(this->component), this->p); if (this->estSum < oldErrSum) { double improv = this->estSum / oldErrSum; diff --git a/src/amdis/Marker.hpp b/src/amdis/Marker.hpp index 5a2a4a964ad7bcff095159ff6f5e81640e7a3c4d..4491b06d1f654baa9fc84f153d21e45ffae3d464 100644 --- a/src/amdis/Marker.hpp +++ b/src/amdis/Marker.hpp @@ -32,9 +32,9 @@ namespace AMDiS { Marker() {} /// Constructor. - Marker(std::string name_, int number_, const EstType& est_, Grid* grid_) + Marker(std::string name_, std::string component_, const EstType& est_, Grid* grid_) : name(name_), - number(number_), + component(component_), grid(grid_), est(est_), maximumMarking(false), @@ -116,14 +116,14 @@ namespace AMDiS { } /// Creates a scalar marker depending on the strategy set in parameters. - static Marker<Traits>* createMarker(std::string name, int number_, const EstType& est_, Grid* grid_); + static Marker<Traits>* createMarker(std::string name, std::string component_, const EstType& est_, Grid* grid_); protected: /// Name of the scalar marker. std::string name; - /// Marker number - int number; + /// Problem component to work on + std::string component; /// Pointer to the grid Grid* grid; @@ -191,8 +191,8 @@ namespace AMDiS { public: /// Constructor. - GRMarker(std::string name_, int number_, const EstType& est_, Grid* grid_) - : Marker<Traits>(name_, number_, est_, grid_) + GRMarker(std::string name_, std::string component_, const EstType& est_, Grid* grid_) + : Marker<Traits>(name_, component_, est_, grid_) {} /// Implementation of Marker::markElement(). @@ -223,8 +223,8 @@ namespace AMDiS { public: /// Constructor. - MSMarker(std::string name_, int number_, const EstType& est_, Grid* grid_) - : Marker<Traits>(name_, number_, est_, grid_), + MSMarker(std::string name_, std::string component_, const EstType& est_, Grid* grid_) + : Marker<Traits>(name_, component_, est_, grid_), MSGamma(0.5), MSGammaC(0.1) { @@ -263,8 +263,8 @@ namespace AMDiS { public: /// Constructor. - ESMarker(std::string name_, int number_, const EstType& est_, Grid* grid_) - : Marker<Traits>(name_, number_, est_, grid_), + ESMarker(std::string name_, std::string component_, const EstType& est_, Grid* grid_) + : Marker<Traits>(name_, component_, est_, grid_), ESTheta(0.9), ESThetaC(0.2) { @@ -303,8 +303,8 @@ namespace AMDiS { public: /// Constructor. - GERSMarker(std::string name_, int number_, const EstType& est_, Grid* grid_) - : Marker<Traits>(name_, number_, est_, grid_), + GERSMarker(std::string name_, std::string component_, const EstType& est_, Grid* grid_) + : Marker<Traits>(name_, component_, est_, grid_), oldErrSum(0.0), GERSThetaStar(0.6), GERSNu(0.1), diff --git a/src/amdis/ProblemStat.hpp b/src/amdis/ProblemStat.hpp index 221b7239cb35dd22420776cefb558732b5ceb038..5665e44786adb248d182328f96ed224ef2aac42c 100644 --- a/src/amdis/ProblemStat.hpp +++ b/src/amdis/ProblemStat.hpp @@ -55,7 +55,7 @@ namespace AMDiS using Element = typename GridView::template Codim<0>::Entity; using WorldVector = typename Element::Geometry::GlobalCoordinate; - /// Dimension of the mesh + /// Dimension of the grid static constexpr int dim = Grid::dimension; /// Dimension of the world @@ -225,13 +225,13 @@ namespace AMDiS createFileWriter(); } - +/* /// Return the gridView of the leaf-level auto leafGridView() { return grid_->leafGridView(); } /// Return the gridView of levle `level` auto levelGridView(int level) { return grid_->levelGridView(level); } - +*/ /// Return the \ref feSpaces std::shared_ptr<GlobalBasis> const& getGlobalBasis() { return globalBasis_; } diff --git a/src/amdis/ProblemStat.inc.hpp b/src/amdis/ProblemStat.inc.hpp index 307d9cfcb91bba217784d462c0499bcc4b6ca184..339f5adb9916f9d52b454361522082bf2a8723d8 100644 --- a/src/amdis/ProblemStat.inc.hpp +++ b/src/amdis/ProblemStat.inc.hpp @@ -144,7 +144,7 @@ void ProblemStat<Traits>::createMarker() int i = std::stoi(to_string(treePath)); // TODO: To be removed // replace i with treePath once supported auto marker_ = Marker<Traits>::createMarker( - componentName, i, estimates[std::to_string(i)], componentGrids[i]); + componentName, std::to_string(i), estimates[std::to_string(i)], componentGrids[i]); if (marker_) marker.push_back(marker_);