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>
144 const std::string &subsection =
"/MeshAdaptor");
183 std::uint_fast64_t random_adaptation_mersenne_twister_seed_;
186 double refinement_fraction_;
187 double coarsening_fraction_;
188 unsigned int min_refinement_level_;
189 unsigned int max_refinement_level_;
190 unsigned int max_num_cells_;
193 std::vector<Number> adaptation_time_points_;
194 unsigned int adaptation_cycle_interval_;
196 std::vector<std::string> kelly_quantities_;
206 dealii::SmartPointer<const OfflineData<dim, Number>> offline_data_;
207 dealii::SmartPointer<const HyperbolicSystem> hyperbolic_system_;
208 dealii::SmartPointer<const ParabolicSystem> parabolic_system_;
210 bool need_mesh_adaptation_;
212 mutable dealii::Vector<float> indicators_;
216 void compute_random_indicators()
const;
218 mutable std::mt19937_64 mersenne_twister_;
222 void populate_kelly_quantities(
const StateVector &state_vector)
const;
223 void compute_kelly_indicators()
const;
228 mutable std::vector<ScalarVector> kelly_components_;
typename Proxy< dim >::Triangulation Triangulation
typename View::StateVector StateVector
typename Discretization< dim >::Triangulation Triangulation
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
typename Description::template HyperbolicSystemView< dim, Number > View
const auto & need_mesh_adaptation() const
void prepare(const Number t)
void mark_cells_for_coarsening_and_refinement(Triangulation &triangulation) const
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