4#include <deal.II/dofs/dof_handler.h>
5#include <deal.II/dofs/dof_tools.h>
6#include <deal.II/grid/grid_refinement.h>
7#include <deal.II/grid/tria.h>
8#include <deal.II/lac/vector.h>
9#include <deal.II/numerics/derivative_approximation.h>
10#include <deal.II/numerics/error_estimator.h>
11#include <deal.II/numerics/solution_transfer.h>
19 using namespace dealii;
25 template <
typename Assembler>
30 static constexpr uint dim = Discretization::dim;
53 if (!
adapt(sol))
return false;
71 Vector<double>
indicator(triangulation.n_active_cells());
77 std::vector<typename Triangulation<dim>::active_cell_iterator> refined_cells;
78 for (
const auto &cell : triangulation.active_cell_iterators())
79 if (cell->refine_flag_set()) refined_cells.push_back(cell);
81 for (
const auto &cell : triangulation.active_cell_iterators_on_level(
adapt_level))
82 cell->clear_refine_flag();
83 for (
const auto &cell : triangulation.active_cell_iterators_on_level(0))
84 cell->clear_coarsen_flag();
86 refined_cells.clear();
87 for (
const auto &cell : triangulation.active_cell_iterators())
88 if (cell->refine_flag_set()) refined_cells.push_back(cell);
89 if (refined_cells.size() == 0)
return false;
91 SolutionTransfer<dim, VectorType> solution_trans(dof_handler);
94 triangulation.prepare_coarsening_and_refinement();
95 solution_trans.prepare_for_coarsening_and_refinement(previous_solution);
96 triangulation.execute_coarsening_and_refinement();
102 solution_trans.interpolate(solution);
103 constraints.distribute(solution);
Implement a simple interface to do all adaptivity tasks, i.e. solution transfer, reinit of dofHandler...
Definition abstract_adaptor.hh:11
Implement a simple interface to do all adaptivity tasks, i.e. solution transfer, reinit of dofHandler...
Definition h_adaptivity.hh:27
typename Discretization::VectorType VectorType
Definition h_adaptivity.hh:29
typename Assembler::Discretization Discretization
Definition h_adaptivity.hh:28
double adapt_dt
Definition h_adaptivity.hh:114
double adapt_upper
Definition h_adaptivity.hh:114
double adapt_lower
Definition h_adaptivity.hh:114
VectorType indicator
Definition h_adaptivity.hh:112
static constexpr uint dim
Definition h_adaptivity.hh:30
HAdaptivity(Assembler &assembler, const JSONValue &json)
Definition h_adaptivity.hh:33
double adapt_t
Definition h_adaptivity.hh:114
Discretization & discretization
Definition h_adaptivity.hh:110
virtual bool adapt(VectorType &solution) override
Force an adaptation and transfer the solution sol to the new mes.
Definition h_adaptivity.hh:65
uint adapt_level
Definition h_adaptivity.hh:115
double last_adapt
Definition h_adaptivity.hh:114
virtual bool operator()(const double t, VectorType &sol) override
Check if an adaptation step should be done and tranfer the given solution to the new mesh.
Definition h_adaptivity.hh:50
Assembler & assembler
Definition h_adaptivity.hh:109
A wrapper around the boost json value class.
Definition json.hh:19
double get_double(const std::string &key) const
Get the value of a key in the json object.
uint get_uint(const std::string &key) const
Get the value of a key in the json object.
Definition complex_math.hh:14
unsigned int uint
Definition utils.hh:22