Reference documentation for deal.II version 9.2.0
\(\newcommand{\dealvcentcolon}{\mathrel{\mathop{:}}}\) \(\newcommand{\dealcoloneq}{\dealvcentcolon\mathrel{\mkern-1.2mu}=}\) \(\newcommand{\jump}[1]{\left[\!\left[ #1 \right]\!\right]}\) \(\newcommand{\average}[1]{\left\{\!\left\{ #1 \right\}\!\right\}}\)
data_out_dof_data.h
Go to the documentation of this file.
1 // ---------------------------------------------------------------------
2 //
3 // Copyright (C) 1999 - 2020 by the deal.II authors
4 //
5 // This file is part of the deal.II library.
6 //
7 // The deal.II library is free software; you can use it, redistribute
8 // it, and/or modify it under the terms of the GNU Lesser General
9 // Public License as published by the Free Software Foundation; either
10 // version 2.1 of the License, or (at your option) any later version.
11 // The full text of the license can be found in the file LICENSE.md at
12 // the top level directory of deal.II.
13 //
14 // ---------------------------------------------------------------------
15 
16 #ifndef dealii_data_out_dof_data_h
17 #define dealii_data_out_dof_data_h
18 
19 
20 
21 #include <deal.II/base/config.h>
22 
26 
28 
29 #include <deal.II/fe/mapping.h>
30 
31 #include <deal.II/grid/tria.h>
32 
34 #include <deal.II/hp/fe_values.h>
37 
40 
41 #include <memory>
42 
44 
45 namespace Exceptions
46 {
51  namespace DataOutImplementation
52  {
57  int,
58  << "The number of subdivisions per patch, " << arg1
59  << ", is not valid. It needs to be greater or equal to "
60  "one, or zero if you want it to be determined "
61  "automatically.");
62 
67  "For the operation you are attempting, you first need to "
68  "tell the DataOut or related object which DoFHandler or "
69  "triangulation you would like to work on.");
70 
75  "For the operation you are attempting, you first need to "
76  "tell the DataOut or related object which DoFHandler "
77  "you would like to work on.");
78 
83  int,
84  int,
85  int,
86  << "The vector has size " << arg1
87  << " but the DoFHandler object says that there are " << arg2
88  << " degrees of freedom and there are " << arg3
89  << " active cells. The size of your vector needs to be"
90  << " either equal to the number of degrees of freedom, or"
91  << " equal to the number of active cells.");
97  std::string,
98  size_t,
99  << "Please use only the characters [a-zA-Z0-9_<>()] for" << std::endl
100  << "description strings since some graphics formats will only accept these."
101  << std::endl
102  << "The string you gave was <" << arg1
103  << ">, within which the invalid character is <" << arg1[arg2] << ">."
104  << std::endl);
110  "When attaching a triangulation or DoFHandler object, it is "
111  "not allowed if old data vectors are still referenced. If "
112  "you want to reuse an object of the current type, you first "
113  "need to call the 'clear_data_vector()' function.");
118  int,
119  int,
120  << "You have to give one name per component in your "
121  << "data vector. The number you gave was " << arg1
122  << ", but the number of components is " << arg2 << ".");
127  "While merging sets of patches, the two sets to be merged "
128  "need to refer to data that agrees on the names of the "
129  "various variables represented. In other words, you "
130  "cannot merge sets of patches that originate from "
131  "entirely unrelated simulations.");
136  "While merging sets of patches, the two sets to be merged "
137  "need to refer to data that agrees on the number of "
138  "subdivisions and other properties. In other words, you "
139  "cannot merge sets of patches that originate from "
140  "entirely unrelated simulations.");
141 
143  int,
144  std::string,
145  << "When declaring that a number of components in a data "
146  << "set to be output logically form a vector instead of "
147  << "simply a set of scalar fields, you need to specify "
148  << "this for all relevant components. Furthermore, "
149  << "vectors must always consist of exactly <dim> "
150  << "components. However, the vector component at "
151  << "position " << arg1 << " with name <" << arg2
152  << "> does not satisfy these conditions.");
153 
155  int,
156  std::string,
157  << "When declaring that a number of components in a data "
158  << "set to be output logically form a tensor instead of "
159  << "simply a set of scalar fields, you need to specify "
160  << "this for all relevant components. Furthermore, "
161  << "tensors must always consist of exactly <dim*dim> "
162  << "components. However, the tensor component at "
163  << "position " << arg1 << " with name <" << arg2
164  << "> does not satisfy these conditions.");
165 
166  } // namespace DataOutImplementation
167 } // namespace Exceptions
168 
169 
170 namespace internal
171 {
172  namespace DataOutImplementation
173  {
198  {
199  real_part,
201  };
202 
203 
221  template <typename DoFHandlerType>
223  {
224  public:
230  DataEntryBase(const DoFHandlerType * dofs,
231  const std::vector<std::string> &names,
232  const std::vector<
235 
241  DataEntryBase(const DoFHandlerType *dofs,
243  *data_postprocessor);
244 
248  virtual ~DataEntryBase() = default;
249 
254  virtual double
255  get_cell_data_value(const unsigned int cell_number,
256  const ComponentExtractor extract_component) const = 0;
257 
262  virtual void
264  const FEValuesBase<DoFHandlerType::dimension,
265  DoFHandlerType::space_dimension> &fe_patch_values,
266  const ComponentExtractor extract_component,
267  std::vector<double> &patch_values) const = 0;
268 
274  virtual void
276  const FEValuesBase<DoFHandlerType::dimension,
277  DoFHandlerType::space_dimension> &fe_patch_values,
278  const ComponentExtractor extract_component,
279  std::vector<::Vector<double>> &patch_values_system) const = 0;
280 
285  virtual void
287  const FEValuesBase<DoFHandlerType::dimension,
288  DoFHandlerType::space_dimension> &fe_patch_values,
289  const ComponentExtractor extract_component,
291  &patch_gradients) const = 0;
292 
298  virtual void
300  const FEValuesBase<DoFHandlerType::dimension,
301  DoFHandlerType::space_dimension> &fe_patch_values,
302  const ComponentExtractor extract_component,
303  std::vector<std::vector<Tensor<1, DoFHandlerType::space_dimension>>>
304  &patch_gradients_system) const = 0;
305 
310  virtual void
312  const FEValuesBase<DoFHandlerType::dimension,
313  DoFHandlerType::space_dimension> &fe_patch_values,
314  const ComponentExtractor extract_component,
315  std::vector<Tensor<2, DoFHandlerType::space_dimension>> &patch_hessians)
316  const = 0;
317 
323  virtual void
325  const FEValuesBase<DoFHandlerType::dimension,
326  DoFHandlerType::space_dimension> &fe_patch_values,
327  const ComponentExtractor extract_component,
328  std::vector<std::vector<Tensor<2, DoFHandlerType::space_dimension>>>
329  &patch_hessians_system) const = 0;
330 
335  virtual bool
336  is_complex_valued() const = 0;
337 
341  virtual void
342  clear() = 0;
343 
348  virtual std::size_t
349  memory_consumption() const = 0;
350 
355 
359  const std::vector<std::string> names;
360 
366  const std::vector<
369 
374  SmartPointer<
375  const ::DataPostprocessor<DoFHandlerType::space_dimension>>
377 
384  unsigned int n_output_variables;
385  };
386 
387 
404  template <int dim, int spacedim>
406  {
408  const unsigned int n_datasets,
409  const unsigned int n_subdivisions,
410  const std::vector<unsigned int> &n_postprocessor_outputs,
411  const Mapping<dim, spacedim> & mapping,
412  const std::vector<
413  std::shared_ptr<::hp::FECollection<dim, spacedim>>>
414  & finite_elements,
416  const bool use_face_values);
417 
418  ParallelDataBase(const ParallelDataBase &data);
419 
420  template <typename DoFHandlerType>
421  void
423  std::vector<std::shared_ptr<DataEntryBase<DoFHandlerType>>> &dof_data,
424  const typename ::Triangulation<dim, spacedim>::cell_iterator
425  & cell,
426  const unsigned int face = numbers::invalid_unsigned_int);
427 
429  get_present_fe_values(const unsigned int dataset) const;
430 
431  void
432  resize_system_vectors(const unsigned int n_components);
433 
434  const unsigned int n_datasets;
435  const unsigned int n_subdivisions;
436 
439  std::vector<std::vector<::Vector<double>>> postprocessed_values;
440 
441  const ::hp::MappingCollection<dim, spacedim> mapping_collection;
442  const std::vector<
443  std::shared_ptr<::hp::FECollection<dim, spacedim>>>
446 
447  std::vector<std::shared_ptr<::hp::FEValues<dim, spacedim>>>
449  std::vector<std::shared_ptr<::hp::FEFaceValues<dim, spacedim>>>
451  };
452  } // namespace DataOutImplementation
453 } // namespace internal
454 
455 
456 // TODO: Most of the documentation of DataOut_DoFData applies to DataOut.
457 
599 template <typename DoFHandlerType,
600  int patch_dim,
601  int patch_space_dim = patch_dim>
602 class DataOut_DoFData : public DataOutInterface<patch_dim, patch_space_dim>
603 {
604 public:
609  using cell_iterator =
610  typename Triangulation<DoFHandlerType::dimension,
611  DoFHandlerType::space_dimension>::cell_iterator;
612 
613 public:
623  {
628 
633 
638  };
639 
643  DataOut_DoFData();
644 
648  virtual ~DataOut_DoFData() override;
649 
658  void
659  attach_dof_handler(const DoFHandlerType &);
660 
670  void
671  attach_triangulation(const Triangulation<DoFHandlerType::dimension,
672  DoFHandlerType::space_dimension> &);
673 
742  template <class VectorType>
743  void
745  const VectorType & data,
746  const std::vector<std::string> &names,
747  const DataVectorType type = type_automatic,
748  const std::vector<DataComponentInterpretation::DataComponentInterpretation>
749  &data_component_interpretation = std::vector<
751 
768  template <class VectorType>
769  void
771  const VectorType & data,
772  const std::string & name,
773  const DataVectorType type = type_automatic,
774  const std::vector<DataComponentInterpretation::DataComponentInterpretation>
775  &data_component_interpretation = std::vector<
777 
793  template <class VectorType>
794  void
796  const DoFHandlerType & dof_handler,
797  const VectorType & data,
798  const std::vector<std::string> &names,
799  const std::vector<DataComponentInterpretation::DataComponentInterpretation>
800  &data_component_interpretation = std::vector<
802 
803 
808  template <class VectorType>
809  void
811  const DoFHandlerType &dof_handler,
812  const VectorType & data,
813  const std::string & name,
814  const std::vector<DataComponentInterpretation::DataComponentInterpretation>
815  &data_component_interpretation = std::vector<
817 
844  template <class VectorType>
845  void
846  add_data_vector(const VectorType &data,
848  &data_postprocessor);
849 
856  template <class VectorType>
857  void
858  add_data_vector(const DoFHandlerType &dof_handler,
859  const VectorType & data,
861  &data_postprocessor);
862 
880  template <class VectorType>
881  void
883  const DoFHandlerType & dof_handler,
884  const MGLevelObject<VectorType> &data,
885  const std::vector<std::string> & names,
886  const std::vector<DataComponentInterpretation::DataComponentInterpretation>
887  &data_component_interpretation = std::vector<
889 
893  template <class VectorType>
894  void
895  add_mg_data_vector(const DoFHandlerType & dof_handler,
896  const MGLevelObject<VectorType> &data,
897  const std::string & name);
898 
905  void
907 
918  void
920 
944  template <typename DoFHandlerType2>
945  void
949 
956  virtual void
957  clear();
958 
963  std::size_t
964  memory_consumption() const;
965 
966 protected:
971 
975  SmartPointer<const Triangulation<DoFHandlerType::dimension,
976  DoFHandlerType::space_dimension>>
978 
983 
987  std::vector<std::shared_ptr<
990 
994  std::vector<std::shared_ptr<
997 
1003  std::vector<Patch> patches;
1004 
1009  virtual const std::vector<Patch> &
1010  get_patches() const override;
1011 
1016  virtual std::vector<std::string>
1017  get_dataset_names() const override;
1018 
1023  std::vector<
1024  std::shared_ptr<::hp::FECollection<DoFHandlerType::dimension,
1025  DoFHandlerType::space_dimension>>>
1026  get_fes() const;
1027 
1032  virtual std::vector<
1033  std::tuple<unsigned int,
1034  unsigned int,
1035  std::string,
1037  get_nonscalar_data_ranges() const override;
1038 
1039  // Make all template siblings friends. Needed for the merge_patches()
1040  // function.
1041  template <class, int, int>
1042  friend class DataOut_DoFData;
1043 
1046  template <int, class>
1047  friend class MGDataOut;
1048 
1049 private:
1053  template <class VectorType>
1054  void
1056  const DoFHandlerType * dof_handler,
1057  const VectorType & data,
1058  const std::vector<std::string> &names,
1059  const DataVectorType type,
1060  const std::vector<DataComponentInterpretation::DataComponentInterpretation>
1061  & data_component_interpretation,
1062  const bool deduce_output_names);
1063 };
1064 
1065 
1066 
1067 // -------------------- template and inline functions ------------------------
1068 template <typename DoFHandlerType, int patch_dim, int patch_space_dim>
1069 template <typename VectorType>
1070 void
1072  const VectorType & vec,
1073  const std::string & name,
1074  const DataVectorType type,
1075  const std::vector<DataComponentInterpretation::DataComponentInterpretation>
1076  &data_component_interpretation)
1077 {
1078  Assert(triangulation != nullptr,
1080  std::vector<std::string> names(1, name);
1081  add_data_vector_internal(
1082  dofs, vec, names, type, data_component_interpretation, true);
1083 }
1084 
1085 
1086 
1087 template <typename DoFHandlerType, int patch_dim, int patch_space_dim>
1088 template <typename VectorType>
1089 void
1091  const VectorType & vec,
1092  const std::vector<std::string> &names,
1093  const DataVectorType type,
1094  const std::vector<DataComponentInterpretation::DataComponentInterpretation>
1095  &data_component_interpretation)
1096 {
1097  Assert(triangulation != nullptr,
1099  add_data_vector_internal(
1100  dofs, vec, names, type, data_component_interpretation, false);
1101 }
1102 
1103 
1104 
1105 template <typename DoFHandlerType, int patch_dim, int patch_space_dim>
1106 template <typename VectorType>
1107 void
1109  const DoFHandlerType &dof_handler,
1110  const VectorType & data,
1111  const std::string & name,
1112  const std::vector<DataComponentInterpretation::DataComponentInterpretation>
1113  &data_component_interpretation)
1114 {
1115  std::vector<std::string> names(1, name);
1116  add_data_vector_internal(&dof_handler,
1117  data,
1118  names,
1119  type_dof_data,
1120  data_component_interpretation,
1121  true);
1122 }
1123 
1124 
1125 
1126 template <typename DoFHandlerType, int patch_dim, int patch_space_dim>
1127 template <typename VectorType>
1128 void
1130  const DoFHandlerType & dof_handler,
1131  const VectorType & data,
1132  const std::vector<std::string> &names,
1133  const std::vector<DataComponentInterpretation::DataComponentInterpretation>
1134  &data_component_interpretation)
1135 {
1136  add_data_vector_internal(&dof_handler,
1137  data,
1138  names,
1139  type_dof_data,
1140  data_component_interpretation,
1141  false);
1142 }
1143 
1144 
1145 
1146 template <typename DoFHandlerType, int patch_dim, int patch_space_dim>
1147 template <typename VectorType>
1148 void
1150  const VectorType & vec,
1151  const DataPostprocessor<DoFHandlerType::space_dimension> &data_postprocessor)
1152 {
1153  Assert(dofs != nullptr,
1155  add_data_vector(*dofs, vec, data_postprocessor);
1156 }
1157 
1158 
1159 
1160 template <typename DoFHandlerType, int patch_dim, int patch_space_dim>
1161 template <typename DoFHandlerType2>
1162 void
1165  const Point<patch_space_dim> & shift)
1166 {
1167  const std::vector<Patch> &source_patches = source.get_patches();
1168  Assert((patches.size() != 0) && (source_patches.size() != 0),
1169  ExcMessage("When calling this function, both the current "
1170  "object and the one being merged need to have a "
1171  "nonzero number of patches associated with it. "
1172  "Either you called this function on objects that "
1173  "are empty, or you may have forgotten to call "
1174  "the 'build_patches()' function."));
1175  // Check equality of component names
1176  Assert(get_dataset_names() == source.get_dataset_names(),
1178 
1179  // Make sure patches are compatible. Ideally, we would check that all input
1180  // patches from both collections are all compatible, but we'll be content
1181  // with checking that just the first ones from both sources are.
1182  //
1183  // We check compatibility by testing that both sets of patches result
1184  // from the same number of subdivisions, and that they have the same
1185  // number of source vectors (they really should, since we already checked
1186  // that there are the same number of source components above, but you
1187  // never know). This implies that the data should have the same number of
1188  // columns. They should really have the same number of rows as well,
1189  // but depending on whether a patch has points included or not, the
1190  // number of rows may or may not include coordinates for the points,
1191  // and the comparison has to account for that because in each source
1192  // stream, the patches may include some that have points included.
1193  Assert(patches[0].n_subdivisions == source_patches[0].n_subdivisions,
1195  Assert(patches[0].data.n_cols() == source_patches[0].data.n_cols(),
1197  Assert((patches[0].data.n_rows() +
1198  (patches[0].points_are_available ? 0 : patch_space_dim)) ==
1199  (source_patches[0].data.n_rows() +
1200  (source_patches[0].points_are_available ? 0 : patch_space_dim)),
1202 
1203  // check equality of the vector data
1204  // specifications
1205  Assert(get_nonscalar_data_ranges().size() ==
1206  source.get_nonscalar_data_ranges().size(),
1207  ExcMessage("Both sources need to declare the same components "
1208  "as vectors."));
1209  for (unsigned int i = 0; i < get_nonscalar_data_ranges().size(); ++i)
1210  {
1211  Assert(std::get<0>(get_nonscalar_data_ranges()[i]) ==
1212  std::get<0>(source.get_nonscalar_data_ranges()[i]),
1213  ExcMessage("Both sources need to declare the same components "
1214  "as vectors."));
1215  Assert(std::get<1>(get_nonscalar_data_ranges()[i]) ==
1216  std::get<1>(source.get_nonscalar_data_ranges()[i]),
1217  ExcMessage("Both sources need to declare the same components "
1218  "as vectors."));
1219  Assert(std::get<2>(get_nonscalar_data_ranges()[i]) ==
1220  std::get<2>(source.get_nonscalar_data_ranges()[i]),
1221  ExcMessage("Both sources need to declare the same components "
1222  "as vectors."));
1223  }
1224 
1225  // merge patches. store old number
1226  // of elements, since we need to
1227  // adjust patch numbers, etc
1228  // afterwards
1229  const unsigned int old_n_patches = patches.size();
1230  patches.insert(patches.end(), source_patches.begin(), source_patches.end());
1231 
1232  // perform shift, if so desired
1233  if (shift != Point<patch_space_dim>())
1234  for (unsigned int i = old_n_patches; i < patches.size(); ++i)
1235  for (const unsigned int v : GeometryInfo<patch_dim>::vertex_indices())
1236  patches[i].vertices[v] += shift;
1237 
1238  // adjust patch numbers
1239  for (unsigned int i = old_n_patches; i < patches.size(); ++i)
1240  patches[i].patch_index += old_n_patches;
1241 
1242  // adjust patch neighbors
1243  for (unsigned int i = old_n_patches; i < patches.size(); ++i)
1244  for (const unsigned int n : GeometryInfo<patch_dim>::face_indices())
1245  if (patches[i].neighbors[n] != Patch::no_neighbor)
1246  patches[i].neighbors[n] += old_n_patches;
1247 }
1248 
1249 
1251 
1252 #endif
DeclExceptionMsg
#define DeclExceptionMsg(Exception, defaulttext)
Definition: exceptions.h:496
internal::DataOutImplementation::DataEntryBase::memory_consumption
virtual std::size_t memory_consumption() const =0
DataPostprocessor< DoFHandlerType::space_dimension >
Exceptions::DataOutImplementation::ExcInvalidCharacter
static ::ExceptionBase & ExcInvalidCharacter(std::string arg1, size_t arg2)
Exceptions
Definition: data_out_dof_data.h:45
DataOut_DoFData::patches
std::vector< Patch > patches
Definition: data_out_dof_data.h:1003
internal::DataOutImplementation::DataEntryBase::get_function_hessians
virtual void get_function_hessians(const FEValuesBase< DoFHandlerType::dimension, DoFHandlerType::space_dimension > &fe_patch_values, const ComponentExtractor extract_component, std::vector< Tensor< 2, DoFHandlerType::space_dimension >> &patch_hessians) const =0
DataOut_DoFData::memory_consumption
std::size_t memory_consumption() const
internal::DataOutImplementation::ParallelDataBase
Definition: data_out_dof_data.h:405
Triangulation
Definition: tria.h:1109
tria.h
internal::DataOutImplementation::ParallelDataBase::x_fe_values
std::vector< std::shared_ptr<::hp::FEValues< dim, spacedim > > > x_fe_values
Definition: data_out_dof_data.h:448
internal::DataOutImplementation::DataEntryBase::postprocessor
SmartPointer< const ::DataPostprocessor< DoFHandlerType::space_dimension > > postprocessor
Definition: data_out_dof_data.h:376
internal::DataOutImplementation::ParallelDataBase::x_fe_face_values
std::vector< std::shared_ptr<::hp::FEFaceValues< dim, spacedim > > > x_fe_face_values
Definition: data_out_dof_data.h:450
internal::DataOutImplementation::DataEntryBase::dof_handler
SmartPointer< const DoFHandlerType > dof_handler
Definition: data_out_dof_data.h:354
DataOut_DoFData::get_patches
virtual const std::vector< Patch > & get_patches() const override
internal::DataOutImplementation::ParallelDataBase::ParallelDataBase
ParallelDataBase(const unsigned int n_datasets, const unsigned int n_subdivisions, const std::vector< unsigned int > &n_postprocessor_outputs, const Mapping< dim, spacedim > &mapping, const std::vector< std::shared_ptr<::hp::FECollection< dim, spacedim >>> &finite_elements, const UpdateFlags update_flags, const bool use_face_values)
internal::DataOutImplementation::DataEntryBase
Definition: data_out_dof_data.h:222
internal::DataOutImplementation::ParallelDataBase::postprocessed_values
std::vector< std::vector<::Vector< double > > > postprocessed_values
Definition: data_out_dof_data.h:439
DataOut_DoFData::type_dof_data
@ type_dof_data
Definition: data_out_dof_data.h:627
GeometryInfo
Definition: geometry_info.h:1224
VectorType
Exceptions::DataOutImplementation::ExcOldDataStillPresent
static ::ExceptionBase & ExcOldDataStillPresent()
DataOut_DoFData::get_nonscalar_data_ranges
virtual std::vector< std::tuple< unsigned int, unsigned int, std::string, DataComponentInterpretation::DataComponentInterpretation > > get_nonscalar_data_ranges() const override
DataOut_DoFData< DoFHandler< dim >, DoFHandler< dim > ::dimension+1 >::DataVectorType
DataVectorType
Definition: data_out_dof_data.h:622
internal::DataOutImplementation::DataEntryBase::get_function_gradients
virtual void get_function_gradients(const FEValuesBase< DoFHandlerType::dimension, DoFHandlerType::space_dimension > &fe_patch_values, const ComponentExtractor extract_component, std::vector< Tensor< 1, DoFHandlerType::space_dimension >> &patch_gradients) const =0
DataOut_DoFData::add_data_vector_internal
void add_data_vector_internal(const DoFHandlerType *dof_handler, const VectorType &data, const std::vector< std::string > &names, const DataVectorType type, const std::vector< DataComponentInterpretation::DataComponentInterpretation > &data_component_interpretation, const bool deduce_output_names)
internal::DataOutImplementation::DataEntryBase::~DataEntryBase
virtual ~DataEntryBase()=default
internal::DataOutImplementation::DataEntryBase::get_function_values
virtual void get_function_values(const FEValuesBase< DoFHandlerType::dimension, DoFHandlerType::space_dimension > &fe_patch_values, const ComponentExtractor extract_component, std::vector< double > &patch_values) const =0
DoFTools::n_components
unsigned int n_components(const DoFHandler< dim, spacedim > &dh)
Exceptions::DataOutImplementation::ExcNoDoFHandlerSelected
static ::ExceptionBase & ExcNoDoFHandlerSelected()
internal::DataOutImplementation::DataEntryBase::is_complex_valued
virtual bool is_complex_valued() const =0
DataOut_DoFData::add_mg_data_vector
void add_mg_data_vector(const DoFHandlerType &dof_handler, const MGLevelObject< VectorType > &data, const std::vector< std::string > &names, const std::vector< DataComponentInterpretation::DataComponentInterpretation > &data_component_interpretation=std::vector< DataComponentInterpretation::DataComponentInterpretation >())
DataOut_DoFData::clear_data_vectors
void clear_data_vectors()
DataOut_DoFData::triangulation
SmartPointer< const Triangulation< DoFHandlerType::dimension, DoFHandlerType::space_dimension > > triangulation
Definition: data_out_dof_data.h:977
internal::DataOutImplementation::ComponentExtractor::imaginary_part
@ imaginary_part
Exceptions::DataOutImplementation::ExcInvalidVectorSize
static ::ExceptionBase & ExcInvalidVectorSize(int arg1, int arg2, int arg3)
internal::DataOutImplementation::ComponentExtractor
ComponentExtractor
Definition: data_out_dof_data.h:197
data_out_base.h
Mapping
Abstract base class for mapping classes.
Definition: mapping.h:302
Exceptions::DataOutImplementation::ExcInvalidNumberOfSubdivisions
static ::ExceptionBase & ExcInvalidNumberOfSubdivisions(int arg1)
DataOut_DoFData::type_automatic
@ type_automatic
Definition: data_out_dof_data.h:637
DataOut_DoFData::cell_data
std::vector< std::shared_ptr< internal::DataOutImplementation::DataEntryBase< DoFHandlerType > > > cell_data
Definition: data_out_dof_data.h:996
DataOut_DoFData::clear
virtual void clear()
StandardExceptions::ExcMessage
static ::ExceptionBase & ExcMessage(std::string arg1)
internal::DataOutImplementation::DataEntryBase::n_output_variables
unsigned int n_output_variables
Definition: data_out_dof_data.h:384
fe_collection.h
DataOut_DoFData::merge_patches
void merge_patches(const DataOut_DoFData< DoFHandlerType2, patch_dim, patch_space_dim > &source, const Point< patch_space_dim > &shift=Point< patch_space_dim >())
Definition: data_out_dof_data.h:1163
DataPostprocessorInputs::Scalar
Definition: data_postprocessor.h:238
DataOut_DoFData::dofs
SmartPointer< const DoFHandlerType > dofs
Definition: data_out_dof_data.h:982
Tensor
Definition: tensor.h:450
internal::DataOutImplementation::DataEntryBase::names
const std::vector< std::string > names
Definition: data_out_dof_data.h:359
DEAL_II_NAMESPACE_OPEN
#define DEAL_II_NAMESPACE_OPEN
Definition: config.h:358
internal::DataOutImplementation::DataEntryBase::clear
virtual void clear()=0
internal::DataOutImplementation::ParallelDataBase::resize_system_vectors
void resize_system_vectors(const unsigned int n_components)
internal::DataOutImplementation::ComponentExtractor::real_part
@ real_part
DeclException3
#define DeclException3(Exception3, type1, type2, type3, outsequence)
Definition: exceptions.h:564
DeclException1
#define DeclException1(Exception1, type1, outsequence)
Definition: exceptions.h:518
DataOut_DoFData::clear_input_data_references
void clear_input_data_references()
smartpointer.h
mg_level_object.h
DataOut_DoFData::get_dataset_names
virtual std::vector< std::string > get_dataset_names() const override
internal::DataOutImplementation::ParallelDataBase::reinit_all_fe_values
void reinit_all_fe_values(std::vector< std::shared_ptr< DataEntryBase< DoFHandlerType >>> &dof_data, const typename ::Triangulation< dim, spacedim >::cell_iterator &cell, const unsigned int face=numbers::invalid_unsigned_int)
Exceptions::DataOutImplementation::ExcIncompatibleDatasetNames
static ::ExceptionBase & ExcIncompatibleDatasetNames()
internal::DataOutImplementation::ParallelDataBase::patch_values_system
DataPostprocessorInputs::Vector< spacedim > patch_values_system
Definition: data_out_dof_data.h:438
DataOut_DoFData
Definition: data_out_dof_data.h:602
FEValuesBase
Definition: fe.h:36
internal::DataOutImplementation::ParallelDataBase::patch_values_scalar
DataPostprocessorInputs::Scalar< spacedim > patch_values_scalar
Definition: data_out_dof_data.h:437
UpdateFlags
UpdateFlags
Definition: fe_update_flags.h:66
internal::DataOutImplementation::ParallelDataBase::n_datasets
const unsigned int n_datasets
Definition: data_out_dof_data.h:434
internal::DataOutImplementation::DataEntryBase::get_cell_data_value
virtual double get_cell_data_value(const unsigned int cell_number, const ComponentExtractor extract_component) const =0
data_postprocessor.h
SmartPointer< const DoFHandlerType >
DataOut_DoFData::attach_triangulation
void attach_triangulation(const Triangulation< DoFHandlerType::dimension, DoFHandlerType::space_dimension > &)
DataOut_DoFData::attach_dof_handler
void attach_dof_handler(const DoFHandlerType &)
internal::DataOutImplementation::ParallelDataBase::mapping_collection
const ::hp::MappingCollection< dim, spacedim > mapping_collection
Definition: data_out_dof_data.h:441
mapping.h
internal::DataOutImplementation::DataEntryBase::data_component_interpretation
const std::vector< DataComponentInterpretation::DataComponentInterpretation > data_component_interpretation
Definition: data_out_dof_data.h:368
Assert
#define Assert(cond, exc)
Definition: exceptions.h:1419
DataOut_DoFData::type_cell_data
@ type_cell_data
Definition: data_out_dof_data.h:632
DataOut_DoFData::get_fes
std::vector< std::shared_ptr<::hp::FECollection< DoFHandlerType::dimension, DoFHandlerType::space_dimension > > > get_fes() const
MGLevelObject< VectorType >
Exceptions::DataOutImplementation::ExcInvalidNumberOfNames
static ::ExceptionBase & ExcInvalidNumberOfNames(int arg1, int arg2)
mapping_collection.h
dof_handler.h
GridTools::shift
void shift(const Tensor< 1, spacedim > &shift_vector, Triangulation< dim, spacedim > &triangulation)
Definition: grid_tools.cc:817
numbers::invalid_unsigned_int
static const unsigned int invalid_unsigned_int
Definition: types.h:191
data_component_interpretation.h
DataOut_DoFData::cell_iterator
typename Triangulation< DoFHandlerType::dimension, DoFHandlerType::space_dimension >::cell_iterator cell_iterator
Definition: data_out_dof_data.h:611
Exceptions::DataOutImplementation::ExcInvalidTensorDeclaration
static ::ExceptionBase & ExcInvalidTensorDeclaration(int arg1, std::string arg2)
Point
Definition: point.h:111
Exceptions::DataOutImplementation::ExcNoTriangulationSelected
static ::ExceptionBase & ExcNoTriangulationSelected()
Exceptions::DataOutImplementation::ExcIncompatiblePatchLists
static ::ExceptionBase & ExcIncompatiblePatchLists()
internal::DataOutImplementation::ParallelDataBase::finite_elements
const std::vector< std::shared_ptr<::hp::FECollection< dim, spacedim > > > finite_elements
Definition: data_out_dof_data.h:444
config.h
Exceptions::DataOutImplementation::ExcInvalidVectorDeclaration
static ::ExceptionBase & ExcInvalidVectorDeclaration(int arg1, std::string arg2)
internal::DataOutImplementation::ParallelDataBase::n_subdivisions
const unsigned int n_subdivisions
Definition: data_out_dof_data.h:435
internal::DataOutImplementation::ParallelDataBase::update_flags
const UpdateFlags update_flags
Definition: data_out_dof_data.h:445
triangulation
const typename ::parallel::distributed::Triangulation< dim, spacedim > * triangulation
Definition: p4est_wrappers.cc:69
internal
Definition: aligned_vector.h:369
q_collection.h
DataOutBase::Patch
Definition: data_out_base.h:248
fe_values.h
DataComponentInterpretation::DataComponentInterpretation
DataComponentInterpretation
Definition: data_component_interpretation.h:49
DEAL_II_NAMESPACE_CLOSE
#define DEAL_II_NAMESPACE_CLOSE
Definition: config.h:359
internal::DataOutImplementation::ParallelDataBase::get_present_fe_values
const FEValuesBase< dim, spacedim > & get_present_fe_values(const unsigned int dataset) const
internal::DataOutImplementation::DataEntryBase::DataEntryBase
DataEntryBase(const DoFHandlerType *dofs, const std::vector< std::string > &names, const std::vector< DataComponentInterpretation::DataComponentInterpretation > &data_component_interpretation)
Vector< double >
DataOutInterface
Definition: data_out_base.h:2598
DataOut_DoFData::~DataOut_DoFData
virtual ~DataOut_DoFData() override
DataOut_DoFData::dof_data
std::vector< std::shared_ptr< internal::DataOutImplementation::DataEntryBase< DoFHandlerType > > > dof_data
Definition: data_out_dof_data.h:989
DeclException2
#define DeclException2(Exception2, type1, type2, outsequence)
Definition: exceptions.h:541
DataOut_DoFData::DataOut_DoFData
friend class DataOut_DoFData
Definition: data_out_dof_data.h:1042
DataPostprocessorInputs::Vector
Definition: data_postprocessor.h:318
hp::FECollection
Definition: fe_collection.h:54
DataOut_DoFData::MGDataOut
friend class MGDataOut
Definition: data_out_dof_data.h:1047
int
DataOut_DoFData::add_data_vector
void add_data_vector(const VectorType &data, const std::vector< std::string > &names, const DataVectorType type=type_automatic, const std::vector< DataComponentInterpretation::DataComponentInterpretation > &data_component_interpretation=std::vector< DataComponentInterpretation::DataComponentInterpretation >())
Definition: data_out_dof_data.h:1090