11#include <deal.II/base/parameter_acceptor.h>
12#include <deal.II/base/smartpointer.h>
89 "fixed fraction"}, ));
95 "simulation cycle"}, ));
106 template <
typename Description,
int dim,
typename Number =
double>
142 const std::string &subsection =
"/MeshAdaptor");
172 dealii::Triangulation<dim> &triangulation)
const;
181 std::uint_fast64_t random_adaptation_mersenne_twister_seed_;
184 double refinement_fraction_;
185 double coarsening_fraction_;
186 unsigned int min_refinement_level_;
187 unsigned int max_refinement_level_;
188 unsigned int max_num_cells_;
191 std::vector<Number> adaptation_time_points_;
192 unsigned int adaptation_cycle_interval_;
194 std::vector<std::string> kelly_quantities_;
204 dealii::SmartPointer<const OfflineData<dim, Number>> offline_data_;
205 dealii::SmartPointer<const HyperbolicSystem> hyperbolic_system_;
206 dealii::SmartPointer<const ParabolicSystem> parabolic_system_;
208 bool need_mesh_adaptation_;
210 mutable dealii::Vector<float> indicators_;
214 void compute_random_indicators()
const;
216 mutable std::mt19937_64 mersenne_twister_;
220 void populate_kelly_quantities(
const StateVector &state_vector)
const;
221 void compute_kelly_indicators()
const;
226 mutable std::vector<ScalarVector> kelly_components_;
typename View::StateVector StateVector
Vectors::ScalarVector< Number > ScalarVector
MeshAdaptor(const MPIEnsemble &mpi_ensemble, const OfflineData< dim, Number > &offline_data, const HyperbolicSystem &hyperbolic_system, const ParabolicSystem ¶bolic_system, const InitialPrecomputedVector &initial_precomputed, const ScalarVector &alpha, const std::string &subsection="/MeshAdaptor")
static constexpr auto problem_dimension
void analyze(const StateVector &state_vector, const Number t, unsigned int cycle)
typename View::InitialPrecomputedVector InitialPrecomputedVector
typename Description::ParabolicSystem ParabolicSystem
typename Description::HyperbolicSystem HyperbolicSystem
void mark_cells_for_coarsening_and_refinement(dealii::Triangulation< dim > &triangulation) const
typename Description::template HyperbolicSystemView< dim, Number > View
const auto & need_mesh_adaptation() const
void prepare(const Number t)
TimePointSelectionStrategy
#define ACCESSOR_READ_ONLY(member)
dealii::LinearAlgebra::distributed::Vector< Number > ScalarVector
std::tuple< MultiComponentVector< Number, problem_dim >, MultiComponentVector< Number, prec_dim >, BlockVector< Number > > StateVector
Euler::HyperbolicSystem HyperbolicSystem
ryujin::StubParabolicSystem ParabolicSystem