46 template <
int dim,
int spacedim,
typename Number>
60 std::greater<double>());
96 if (
static_cast<unsigned int>(
97 tria.n_active_cells() +
163template <
int dim,
typename Number,
int spacedim>
167 const double threshold,
191 for (
unsigned int index = 1; index < n_cells; ++index)
197 for (
const auto &cell :
tria.active_cell_iterators())
200 cell->is_locally_owned()) &&
207 cell->set_refine_flag();
213template <
int dim,
typename Number,
int spacedim>
217 const double threshold)
223 for (
const auto &cell :
tria.active_cell_iterators())
226 cell->is_locally_owned()) &&
227 std::fabs(
criteria(cell->active_cell_index())) <= threshold)
228 if (!cell->refine_flag_set())
229 cell->set_coarsen_flag();
235std::pair<double, double>
247 1 + 10 * std::numeric_limits<double>::epsilon(),
248 ExcInvalidParameterValue());
317template <
int dim,
typename Number,
int spacedim>
329 ExcInvalidParameterValue());
331 ExcInvalidParameterValue());
333 1 + 10 * std::numeric_limits<double>::epsilon(),
334 ExcInvalidParameterValue());
357 std::nth_element(tmp.
begin(),
360 std::greater<double>());
371 std::nth_element(tmp.
begin(),
374 std::greater<double>());
385template <
int dim,
typename Number,
int spacedim>
397 ExcInvalidParameterValue());
399 ExcInvalidParameterValue());
401 1 + 10 * std::numeric_limits<double>::epsilon(),
402 ExcInvalidParameterValue());
426 [](Number c) { return c * c; });
446template <
int dim,
typename Number,
int spacedim>
450 const unsigned int order)
462 [&
criteria](
const unsigned int left,
const unsigned int right) {
463 return criteria[left] > criteria[right];
472 double min_cost = std::numeric_limits<double>::max();
481 static_cast<double>(order) / dim) *
495#include "grid_refinement.inst"
const value_type * const_iterator
#define DEAL_II_NAMESPACE_OPEN
#define DEAL_II_NAMESPACE_CLOSE
static ::ExceptionBase & ExcNotImplemented()
#define Assert(cond, exc)
static ::ExceptionBase & ExcDimensionMismatch(std::size_t arg1, std::size_t arg2)
void refine(Triangulation< dim, spacedim > &tria, const Vector< Number > &criteria, const double threshold, const unsigned int max_to_mark=numbers::invalid_unsigned_int)
void refine_and_coarsen_fixed_number(Triangulation< dim, spacedim > &triangulation, const Vector< Number > &criteria, const double top_fraction_of_cells, const double bottom_fraction_of_cells, const unsigned int max_n_cells=std::numeric_limits< unsigned int >::max())
void refine_and_coarsen_optimize(Triangulation< dim, spacedim > &tria, const Vector< Number > &criteria, const unsigned int order=2)
void coarsen(Triangulation< dim, spacedim > &tria, const Vector< Number > &criteria, const double threshold)
std::pair< double, double > adjust_refine_and_coarsen_number_fraction(const types::global_cell_index current_n_cells, const types::global_cell_index max_n_cells, const double top_fraction_of_cells, const double bottom_fraction_of_cells)
void refine_and_coarsen_fixed_fraction(Triangulation< dim, spacedim > &tria, const Vector< Number > &criteria, const double top_fraction, const double bottom_fraction, const unsigned int max_n_cells=std::numeric_limits< unsigned int >::max(), const VectorTools::NormType norm_type=VectorTools::NormType::L1_norm)
T sum(const T &t, const MPI_Comm mpi_communicator)
static const unsigned int invalid_unsigned_int
::VectorizedArray< Number, width > min(const ::VectorizedArray< Number, width > &, const ::VectorizedArray< Number, width > &)
::VectorizedArray< Number, width > pow(const ::VectorizedArray< Number, width > &, const Number p)
const ::Triangulation< dim, spacedim > & tria