21#include <deal.II/numerics/data_out_dof_data.templates.h>
30template <
int dim,
int patch_dim,
int spacedim>
40template <
int dim,
int patch_dim,
int spacedim>
44 const unsigned int n_subdivisions)
53 std::vector<std::pair<types::global_dof_index, Point<spacedim>>> points_all;
64 partitioner = std::make_shared<Utilities::MPI::Partitioner>(
74 cell->get_dof_indices(dof_indices);
76 for (
unsigned int i = 0; i < dof_indices.size(); ++i)
77 points_all.emplace_back(
partitioner->global_to_local(dof_indices[i]),
81 std::sort(points_all.begin(),
83 [](
const auto &a,
const auto &b) { return a.first < b.first; });
84 points_all.erase(std::unique(points_all.begin(),
86 [](
const auto &a,
const auto &b) {
87 return a.first == b.first;
91 std::vector<Point<spacedim>> points;
93 for (
const auto &i : points_all)
96 points.push_back(i.second);
104template <
int dim,
int patch_dim,
int spacedim>
108 const unsigned int n_subdivisions,
117template <
int dim,
int patch_dim,
int spacedim>
124 if (
rpe.is_ready() ==
false)
129 "Mapping is not valid anymore! Please register a new mapping via "
130 "update_mapping() or the other build_patches() function."));
134 std::vector<std::shared_ptr<LinearAlgebra::distributed::Vector<double>>>
139 unsigned int counter = 0;
141 for (
const auto &data : this->
dof_data)
143 const auto data_ptr =
dynamic_cast<
144 internal::DataOutImplementation::DataEntry<dim, spacedim, double> *
>(
149 const auto &dh = *data_ptr->dof_handler;
153 for (
const auto &fe : dh.get_fe_collection())
155 fe.n_base_elements() == 1,
157 "This class currently only supports scalar elements and elements "
158 "with a single base element."));
161 for (
unsigned int comp = 0; comp < dh.get_fe_collection().n_components();
167 vectors.emplace_back(
171 for (
unsigned int j = 0; j < values.size(); ++j)
175 vectors.back()->set_ghost_state(
true);
182 std::string(
"temp_" + std::to_string(counter)),
184 DataVectorType::type_dof_data);
197template <
int dim,
int patch_dim,
int spacedim>
198const std::vector<typename DataOutBase::Patch<patch_dim, spacedim>> &
206#include "numerics/data_out_resample.inst"
ObserverPointer< const Mapping< dim, spacedim > > mapping
virtual const std::vector< typename DataOutBase::Patch< patch_dim, spacedim > > & get_patches() const override
std::shared_ptr< Utilities::MPI::Partitioner > partitioner
DataOutResample(const Triangulation< patch_dim, spacedim > &patch_tria, const Mapping< patch_dim, spacedim > &patch_mapping)
DoFHandler< patch_dim, spacedim > patch_dof_handler
std::vector< types::global_dof_index > point_to_local_vector_indices
const ObserverPointer< const Mapping< patch_dim, spacedim > > patch_mapping
void build_patches(const Mapping< dim, spacedim > &mapping, const unsigned int n_subdivisions=0, const typename DataOut< patch_dim, spacedim >::CurvedCellRegion curved_region=DataOut< patch_dim, spacedim >::CurvedCellRegion::curved_boundary)
Utilities::MPI::RemotePointEvaluation< dim, spacedim > rpe
void update_mapping(const Mapping< dim, spacedim > &mapping, const unsigned int n_subdivisions=0)
DataOut< patch_dim, spacedim > patch_data_out
std::vector< std::shared_ptr< internal::DataOutImplementation::DataEntryBase< dim, spacedim > > > dof_data
ObserverPointer< const Triangulation< dim, spacedim > > triangulation
friend class DataOut_DoFData
const Point< spacedim > & quadrature_point(const unsigned int q_point) const
void reinit(const TriaIterator< DoFCellAccessor< dim, spacedim, level_dof_access > > &cell)
unsigned int n_dofs_per_cell() const
const std::vector< Point< dim > > & get_unit_support_points() const
Abstract base class for mapping classes.
#define DEAL_II_NAMESPACE_OPEN
constexpr bool running_in_debug_mode()
#define DEAL_II_NAMESPACE_CLOSE
static ::ExceptionBase & ExcNotImplemented()
#define Assert(cond, exc)
static ::ExceptionBase & ExcMessage(std::string arg1)
@ update_quadrature_points
Transformed quadrature points.
::VectorizedArray< Number, width > max(const ::VectorizedArray< Number, width > &, const ::VectorizedArray< Number, width > &)