41 template <
int dim,
int spacedim>
52 if (
const auto *
p_tria =
dynamic_cast<
54 Assert(
p_tria->n_global_active_cells() == tria.n_cells(0),
64 const std::vector<Point<spacedim>> &vertices = tria.get_vertices();
71 for (; cell !=
endc; ++cell)
72 for (
const unsigned int face : cell->face_indices())
73 if (cell->face(face)->at_boundary())
74 for (
unsigned int i = 0; i < cell->face(face)->n_vertices(); ++i)
82 for (
unsigned int i = 0; i < N; ++i, ++
pi)
84 std::vector<bool>::const_iterator
pj =
pi + 1;
85 for (
unsigned int j = i + 1;
j < N; ++
j, ++
pj)
86 if ((*
pi ==
true) && (*
pj ==
true) &&
96 template <
int dim,
int spacedim>
110 template <
int dim,
int spacedim>
119 else if (
const auto *p =
144 for (
const auto &cell :
triangulation.active_cell_iterators())
145 if (cell->is_locally_owned())
147 fe_values.reinit(cell);
148 for (
unsigned int q = 0;
q < n_q_points; ++
q)
160 template <
int dim,
int spacedim>
161 std::pair<unsigned int, double>
166 unsigned int index = 0;
168 for (
unsigned int i = 0; i < dim; ++i)
169 for (
unsigned int j = i + 1;
j < dim; ++
j)
171 unsigned int ax = i % dim;
175 cell->extent_in_direction(
ax) / cell->extent_in_direction(
next_ax);
210 struct TransformR2UAffine
225 [1] = {{-1.000000}, {1.000000}};
229 {1.000000, 0.000000};
240 [2] = {{-0.500000, -0.500000},
241 {0.500000, -0.500000},
242 {-0.500000, 0.500000},
243 {0.500000, 0.500000}};
253 {0.750000, 0.250000, 0.250000, -0.250000};
259 {-0.250000, -0.250000, -0.250000},
260 {0.250000, -0.250000, -0.250000},
261 {-0.250000, 0.250000, -0.250000},
262 {0.250000, 0.250000, -0.250000},
263 {-0.250000, -0.250000, 0.250000},
264 {0.250000, -0.250000, 0.250000},
265 {-0.250000, 0.250000, 0.250000},
266 {0.250000, 0.250000, 0.250000}
285 template <
int dim,
int spacedim>
294 for (
unsigned int d = 0; d < spacedim; ++d)
296 for (
unsigned int e = 0; e < dim; ++e)
297 A[d][e] += vertices[v][d] * TransformR2UAffine<dim>::KA[v][e];
302 b += vertices[v] * TransformR2UAffine<dim>::Kb[v];
304 return std::make_pair(A, b);
321 for (
const auto &cell :
triangulation.active_cell_iterators())
323 if (cell->is_locally_owned())
327 fe_values.reinit(cell);
330 for (
unsigned int q = 0;
q < quadrature.size(); ++
q)
346 for (
unsigned int i = 0; i < dim; ++i)
347 for (
unsigned int j = 0;
j < dim; ++
j)
348 J(i,
j) = jacobian[i][
j];
352 const double max_sv = J.singular_value(0);
353 const double min_sv = J.singular_value(dim - 1);
391 template <
int dim,
int spacedim>
397 const auto predicate = [](
const iterator &) {
return true; };
400 tria, std::function<
bool(
const iterator &)>(predicate));
405 template <
int dim,
int spacedim>
410 double min_diameter = std::numeric_limits<double>::max();
411 for (
const auto &cell :
triangulation.active_cell_iterators())
412 if (!cell->is_artificial())
422 template <
int dim,
int spacedim>
428 for (
const auto &cell :
triangulation.active_cell_iterators())
429 if (!cell->is_artificial())
440#include "grid_tools_geometry.inst"
#define DEAL_II_NAMESPACE_OPEN
#define DEAL_II_NAMESPACE_CLOSE
static ::ExceptionBase & ExcNotImplemented()
#define Assert(cond, exc)
#define AssertDimension(dim1, dim2)
@ update_JxW_values
Transformed quadrature weights.
@ update_jacobians
Volume element.
T sum(const T &t, const MPI_Comm mpi_communicator)
T max(const T &t, const MPI_Comm mpi_communicator)
T min(const T &t, const MPI_Comm mpi_communicator)
::VectorizedArray< Number, width > min(const ::VectorizedArray< Number, width > &, const ::VectorizedArray< Number, width > &)
::VectorizedArray< Number, width > max(const ::VectorizedArray< Number, width > &, const ::VectorizedArray< Number, width > &)
::VectorizedArray< Number, width > sqrt(const ::VectorizedArray< Number, width > &)
const ::parallel::distributed::Triangulation< dim, spacedim > * triangulation
DEAL_II_HOST constexpr Number determinant(const SymmetricTensor< 2, dim, Number > &)