16 #include <deal.II/base/quadrature_lib.h> 17 #include <deal.II/base/work_stream.h> 18 #include <deal.II/base/memory_consumption.h> 19 #include <deal.II/lac/vector.h> 20 #include <deal.II/lac/block_vector.h> 21 #include <deal.II/lac/parallel_vector.h> 22 #include <deal.II/lac/parallel_block_vector.h> 23 #include <deal.II/lac/petsc_vector.h> 24 #include <deal.II/lac/petsc_block_vector.h> 25 #include <deal.II/lac/trilinos_vector.h> 26 #include <deal.II/lac/trilinos_block_vector.h> 27 #include <deal.II/numerics/data_out.h> 28 #include <deal.II/numerics/data_out_dof_data.h> 29 #include <deal.II/dofs/dof_handler.h> 30 #include <deal.II/dofs/dof_accessor.h> 31 #include <deal.II/grid/tria.h> 32 #include <deal.II/grid/tria_iterator.h> 33 #include <deal.II/fe/fe.h> 34 #include <deal.II/fe/fe_dgq.h> 35 #include <deal.II/fe/fe_values.h> 36 #include <deal.II/hp/dof_handler.h> 37 #include <deal.II/hp/fe_values.h> 38 #include <deal.II/fe/mapping_q1.h> 42 DEAL_II_NAMESPACE_OPEN
49 template <
int dim,
int spacedim>
50 ParallelDataBase<dim,spacedim>::
51 ParallelDataBase (
const unsigned int n_datasets,
52 const unsigned int n_subdivisions,
53 const std::vector<unsigned int> &n_postprocessor_outputs,
57 const bool use_face_values)
59 n_datasets (n_datasets),
60 n_subdivisions (n_subdivisions),
61 postprocessed_values (n_postprocessor_outputs.size()),
62 mapping_collection (mapping),
63 finite_elements (finite_elements),
64 update_flags (update_flags)
66 unsigned int n_q_points = 0;
67 if (use_face_values ==
false)
71 n_q_points = quadrature[0].size();
72 x_fe_values.resize(this->finite_elements.size());
73 for (
unsigned int i=0; i<this->finite_elements.size(); ++i)
77 for (
unsigned int j=0; j<i; ++j)
78 if (this->finite_elements[i].
get() ==
79 this->finite_elements[j].get())
81 x_fe_values[i] = x_fe_values[j];
84 if (x_fe_values[i].
get() == 0)
85 x_fe_values[i].reset(new ::hp::FEValues<dim,spacedim>
86 (this->mapping_collection,
87 *this->finite_elements[i],
96 n_q_points = quadrature[0].size();
97 x_fe_face_values.resize(this->finite_elements.size());
98 for (
unsigned int i=0; i<this->finite_elements.size(); ++i)
102 for (
unsigned int j=0; j<i; ++j)
103 if (this->finite_elements[i].
get() ==
104 this->finite_elements[j].get())
106 x_fe_face_values[i] = x_fe_face_values[j];
109 if (x_fe_face_values[i].
get() == 0)
110 x_fe_face_values[i].reset(new ::hp::FEFaceValues<dim,spacedim>
111 (this->mapping_collection,
112 *this->finite_elements[i],
114 this->update_flags));
118 patch_values.resize (n_q_points);
119 patch_values_system.resize (n_q_points);
120 patch_gradients.resize (n_q_points);
121 patch_gradients_system.resize (n_q_points);
122 patch_hessians.resize (n_q_points);
123 patch_hessians_system.resize (n_q_points);
125 for (
unsigned int dataset=0; dataset<n_postprocessor_outputs.size(); ++dataset)
126 if (n_postprocessor_outputs[dataset] != 0)
127 postprocessed_values[dataset]
138 template <
int dim,
int spacedim>
139 ParallelDataBase<dim,spacedim>::
140 ParallelDataBase (
const ParallelDataBase<dim,spacedim> &data)
142 n_datasets (data.n_datasets),
143 n_subdivisions (data.n_subdivisions),
144 patch_values (data.patch_values),
145 patch_values_system (data.patch_values_system),
146 patch_gradients (data.patch_gradients),
147 patch_gradients_system (data.patch_gradients_system),
148 patch_hessians (data.patch_hessians),
149 patch_hessians_system (data.patch_hessians_system),
150 postprocessed_values (data.postprocessed_values),
151 mapping_collection (data.mapping_collection),
152 finite_elements (data.finite_elements),
153 update_flags (data.update_flags)
155 if (data.x_fe_values.empty() ==
false)
157 Assert(data.x_fe_face_values.empty() ==
true, ExcInternalError());
160 x_fe_values.resize(this->finite_elements.size());
161 for (
unsigned int i=0; i<this->finite_elements.size(); ++i)
165 for (
unsigned int j=0; j<i; ++j)
166 if (this->finite_elements[i].
get() ==
167 this->finite_elements[j].get())
169 x_fe_values[i] = x_fe_values[j];
172 if (x_fe_values[i].
get() == 0)
173 x_fe_values[i].reset(new ::hp::FEValues<dim,spacedim>
174 (this->mapping_collection,
175 *this->finite_elements[i],
177 this->update_flags));
184 x_fe_face_values.resize(this->finite_elements.size());
185 for (
unsigned int i=0; i<this->finite_elements.size(); ++i)
189 for (
unsigned int j=0; j<i; ++j)
190 if (this->finite_elements[i].
get() ==
191 this->finite_elements[j].get())
193 x_fe_face_values[i] = x_fe_face_values[j];
196 if (x_fe_face_values[i].
get() == 0)
197 x_fe_face_values[i].reset(new ::hp::FEFaceValues<dim,spacedim>
198 (this->mapping_collection,
199 *this->finite_elements[i],
201 this->update_flags));
208 template <
int dim,
int spacedim>
209 template <
typename DoFHandlerType>
211 ParallelDataBase<dim,spacedim>::
212 reinit_all_fe_values(std::vector<std_cxx11::shared_ptr<DataEntryBase<DoFHandlerType> > > &
dof_data,
213 const typename ::Triangulation<dim,spacedim>::cell_iterator &cell,
214 const unsigned int face)
216 for (
unsigned int dataset=0; dataset<
dof_data.size(); ++dataset)
218 bool duplicate =
false;
219 for (
unsigned int j=0; j<dataset; ++j)
220 if (finite_elements[dataset].
get() == finite_elements[j].get())
222 if (duplicate ==
false)
224 typename DoFHandlerType::active_cell_iterator dh_cell(&cell->get_triangulation(),
228 if (x_fe_values.empty())
232 x_fe_face_values[dataset]->reinit(dh_cell, face);
235 x_fe_values[dataset]->reinit (dh_cell);
240 if (x_fe_values.empty())
244 x_fe_face_values[0]->reinit(cell, face);
247 x_fe_values[0]->reinit (cell);
253 template <
int dim,
int spacedim>
255 ParallelDataBase<dim,spacedim>::
256 get_present_fe_values(
const unsigned int dataset)
const 259 if (x_fe_values.empty())
260 return x_fe_face_values[dataset]->get_present_fe_values();
262 return x_fe_values[dataset]->get_present_fe_values();
267 template <
int dim,
int spacedim>
269 ParallelDataBase<dim,spacedim>::
270 resize_system_vectors(
const unsigned int n_components)
272 Assert(patch_values_system.size() > 0, ExcInternalError());
274 patch_gradients_system.size());
276 patch_hessians_system.size());
277 if (patch_values_system[0].size() == n_components)
279 for (
unsigned int k=0; k<patch_values_system.size(); ++k)
281 patch_values_system[k].reinit(n_components);
282 patch_gradients_system[k].resize(n_components);
283 patch_hessians_system[k].resize(n_components);
294 template <
int dim,
int spacedim>
309 template <
typename DoFHandlerType>
310 DataEntryBase<DoFHandlerType>::DataEntryBase
312 const std::vector<std::string> &names_in,
313 const std::vector<DataComponentInterpretation::DataComponentInterpretation> &data_component_interpretation)
317 data_component_interpretation (data_component_interpretation),
318 postprocessor(0,
typeid(*this).name()),
319 n_output_variables(names.size())
321 Assert (names.size() == data_component_interpretation.size(),
322 ExcDimensionMismatch(data_component_interpretation.size(),
326 for (
unsigned int i=0; i<names.size(); ++i)
327 Assert (names[i].find_first_not_of(
"abcdefghijklmnopqrstuvwxyz" 328 "ABCDEFGHIJKLMNOPQRSTUVWXYZ" 329 "0123456789_<>()") == std::string::npos,
330 Exceptions::DataOut::ExcInvalidCharacter (names[i],
331 names[i].find_first_not_of(
"abcdefghijklmnopqrstuvwxyz" 332 "ABCDEFGHIJKLMNOPQRSTUVWXYZ" 333 "0123456789_<>()")));
338 template <
typename DoFHandlerType>
340 (
const DoFHandlerType *dofs,
346 postprocessor(data_postprocessor,
typeid(*this).name()),
347 n_output_variables(names.size())
352 ExcDimensionMismatch (data_postprocessor->
get_names().size(),
356 for (
unsigned int i=0; i<names.size(); ++i)
357 Assert (names[i].find_first_not_of(
"abcdefghijklmnopqrstuvwxyz" 358 "ABCDEFGHIJKLMNOPQRSTUVWXYZ" 359 "0123456789_<>()") == std::string::npos,
360 Exceptions::DataOut::ExcInvalidCharacter (names[i],
361 names[i].find_first_not_of(
"abcdefghijklmnopqrstuvwxyz" 362 "ABCDEFGHIJKLMNOPQRSTUVWXYZ" 363 "0123456789_<>()")));
368 template <
typename DoFHandlerType>
380 template <
typename DoFHandlerType,
typename VectorType>
390 (
const DoFHandlerType *dofs,
391 const VectorType *data,
392 const std::vector<std::string> &names,
393 const std::vector<DataComponentInterpretation::DataComponentInterpretation> &data_component_interpretation);
401 const VectorType *data,
410 get_cell_data_value (
const unsigned int cell_number)
const;
420 std::vector<double> &patch_values)
const;
439 get_function_gradients
450 get_function_gradients
460 get_function_hessians
471 get_function_hessians
478 virtual void clear ();
496 template <
typename DoFHandlerType,
typename VectorType>
499 const VectorType *data,
500 const std::vector<std::string> &names,
501 const std::vector<DataComponentInterpretation::DataComponentInterpretation> &data_component_interpretation)
503 DataEntryBase<DoFHandlerType> (dofs, names, data_component_interpretation),
509 template <
typename DoFHandlerType,
typename VectorType>
512 const VectorType *data,
522 template <
typename VectorType>
524 get_vector_element (
const VectorType &
vector,
525 const unsigned int cell_number)
527 return vector[cell_number];
532 get_vector_element (
const IndexSet &is,
533 const unsigned int cell_number)
541 template <
typename DoFHandlerType,
typename VectorType>
546 return get_vector_element(*
vector, cell_number);
551 template <
typename DoFHandlerType,
typename VectorType>
568 if (
typeid(
typename VectorType::value_type) ==
typeid(
double))
576 reinterpret_cast<std::vector<::Vector<typename VectorType::value_type>
>&>
577 (patch_values_system));
581 std::vector<::Vector<typename VectorType::value_type> > tmp(patch_values_system.size());
582 for (
unsigned int i = 0; i < patch_values_system.size(); i++)
583 tmp[i].reinit(patch_values_system[i]);
587 for (
unsigned int i = 0; i < patch_values_system.size(); i++)
588 patch_values_system[i] = tmp[i];
594 template <
typename DoFHandlerType,
typename VectorType>
598 std::vector<double> &patch_values)
const 611 if (
typeid(
typename VectorType::value_type) ==
typeid(
double))
619 reinterpret_cast<std::vector<typename VectorType::value_type>&
> 624 std::vector<typename VectorType::value_type> tmp (patch_values.size());
628 for (
unsigned int i = 0; i < tmp.size(); i++)
629 patch_values[i] = tmp[i];
635 template <
typename DoFHandlerType,
typename VectorType>
652 if (
typeid(
typename VectorType::value_type) ==
typeid(
double))
660 reinterpret_cast<std::vector<std::vector<Tensor<1,DoFHandlerType::space_dimension,typename VectorType::value_type>
> >&>
661 (patch_gradients_system));
665 std::vector<std::vector<
Tensor<1,DoFHandlerType::space_dimension,
666 typename VectorType::value_type> > >
667 tmp(patch_gradients_system.size());
668 for (
unsigned int i = 0; i < tmp.size(); i++)
669 tmp[i].resize(patch_gradients_system[i].size());
673 for (
unsigned int i = 0; i < tmp.size(); i++)
674 for (
unsigned int j = 0; j < tmp[i].size(); j++)
675 patch_gradients_system[i][j] = tmp[i][j];
681 template <
typename DoFHandlerType,
typename VectorType>
698 if (
typeid(
typename VectorType::value_type) ==
typeid(
double))
706 reinterpret_cast<std::vector<Tensor<1,DoFHandlerType::space_dimension,typename VectorType::value_type>
>&>
711 std::vector<Tensor<1,DoFHandlerType::space_dimension,typename VectorType::value_type> > tmp;
712 tmp.resize(patch_gradients.size());
716 for (
unsigned int i = 0; i < tmp.size(); i++)
717 patch_gradients[i] = tmp[i];
723 template <
typename DoFHandlerType,
typename VectorType>
740 if (
typeid(
typename VectorType::value_type) ==
typeid(
double))
748 reinterpret_cast<std::vector<std::vector<Tensor<2,DoFHandlerType::space_dimension,typename VectorType::value_type>
> >&>
749 (patch_hessians_system));
753 std::vector<std::vector<
Tensor<2,DoFHandlerType::space_dimension,
754 typename VectorType::value_type> > >
755 tmp(patch_hessians_system.size());
756 for (
unsigned int i = 0; i < tmp.size(); i++)
757 tmp[i].resize(patch_hessians_system[i].size());
761 for (
unsigned int i = 0; i < tmp.size(); i++)
762 for (
unsigned int j = 0; j < tmp[i].size(); j++)
763 patch_hessians_system[i][j] = tmp[i][j];
769 template <
typename DoFHandlerType,
typename VectorType>
786 if (
typeid(
typename VectorType::value_type) ==
typeid(
double))
794 reinterpret_cast<std::vector<
Tensor<2,DoFHandlerType
795 ::space_dimension,typename VectorType::value_type
> >&>
800 std::vector<Tensor<2,DoFHandlerType::space_dimension,typename VectorType::value_type> >
801 tmp(patch_hessians.size());
805 for (
unsigned int i = 0; i < tmp.size(); i++)
806 patch_hessians[i] = tmp[i];
812 template <
typename DoFHandlerType,
typename VectorType>
822 template <
typename DoFHandlerType,
typename VectorType>
834 template <
typename DoFHandlerType,
835 int patch_dim,
int patch_space_dim>
838 triangulation(0,typeid(*this).name()),
839 dofs(0,typeid(*this).name())
844 template <
typename DoFHandlerType,
int patch_dim,
int patch_space_dim>
852 template <
typename DoFHandlerType,
int patch_dim,
int patch_space_dim>
858 Exceptions::DataOut::ExcOldDataStillPresent());
860 Exceptions::DataOut::ExcOldDataStillPresent());
863 DoFHandlerType::space_dimension> >
864 (&d.get_triangulation(),
typeid(*this).name());
870 template <
typename DoFHandlerType,
int patch_dim,
int patch_space_dim>
876 Exceptions::DataOut::ExcOldDataStillPresent());
878 Exceptions::DataOut::ExcOldDataStillPresent());
881 DoFHandlerType::space_dimension> >
882 (&tria,
typeid(*this).name());
888 template <
typename DoFHandlerType,
889 int patch_dim,
int patch_space_dim>
890 template <
typename VectorType>
894 const std::string &name,
896 const std::vector<DataComponentInterpretation::DataComponentInterpretation> &data_component_interpretation)
899 Exceptions::DataOut::ExcNoTriangulationSelected ());
900 const unsigned int n_components =
901 dofs != 0 ? dofs->get_fe().n_components () : 1;
903 std::vector<std::string> names;
905 if ((n_components == 1) ||
908 names.resize (1, name);
913 names.resize (n_components);
914 for (
unsigned int i=0; i<n_components; ++i)
916 std::ostringstream namebuf;
918 names[i] = name + namebuf.str();
927 template <
typename DoFHandlerType,
928 int patch_dim,
int patch_space_dim>
929 template <
typename VectorType>
933 const std::vector<std::string> &names,
935 const std::vector<DataComponentInterpretation::DataComponentInterpretation> &data_component_interpretation_)
938 Exceptions::DataOut::ExcNoTriangulationSelected ());
940 const std::vector<DataComponentInterpretation::DataComponentInterpretation> &
941 data_component_interpretation
942 = (data_component_interpretation_.size() != 0
944 data_component_interpretation_
946 std::vector<DataComponentInterpretation::DataComponentInterpretation>
956 ExcMessage(
"Unable to determine the type of vector automatically because the number of DoFs " 957 "is equal to the number of cells. Please specify DataVectorType."));
969 ExcDimensionMismatch (vec.size(),
971 Assert (names.size() == 1,
972 Exceptions::DataOut::ExcInvalidNumberOfNames (names.size(), 1));
977 Exceptions::DataOut::ExcNoDoFHandlerSelected ());
978 Assert (vec.size() == dofs->n_dofs(),
979 Exceptions::DataOut::ExcInvalidVectorSize (vec.size(),
982 Assert (names.size() == dofs->get_fe().n_components(),
983 Exceptions::DataOut::ExcInvalidNumberOfNames (names.size(),
984 dofs->get_fe().n_components()));
989 Assert (
false, ExcInternalError());
994 data_component_interpretation);
1003 template <
typename DoFHandlerType,
1004 int patch_dim,
int patch_space_dim>
1005 template <
typename VectorType>
1017 Exceptions::DataOut::ExcNoDoFHandlerSelected ());
1019 Assert (vec.size() == dofs->n_dofs(),
1020 Exceptions::DataOut::ExcInvalidVectorSize (vec.size(),
1022 dofs->get_triangulation().n_active_cells()));
1031 template <
typename DoFHandlerType,
1032 int patch_dim,
int patch_space_dim>
1033 template <
typename VectorType>
1037 const VectorType &vec,
1054 template <
typename DoFHandlerType,
1055 int patch_dim,
int patch_space_dim>
1056 template <
typename VectorType>
1060 (
const DoFHandlerType &dof_handler,
1061 const VectorType &data,
1062 const std::string &name,
1063 const std::vector<DataComponentInterpretation::DataComponentInterpretation> &data_component_interpretation)
1065 const unsigned int n_components = dof_handler.get_fe().n_components ();
1067 std::vector<std::string> names;
1069 if (n_components == 1)
1070 names.resize (1, name);
1074 names.resize (n_components);
1075 for (
unsigned int i=0; i<n_components; ++i)
1077 std::ostringstream namebuf;
1078 namebuf <<
'_' << i;
1079 names[i] = name + namebuf.str();
1083 add_data_vector (dof_handler, data, names, data_component_interpretation);
1088 template <
typename DoFHandlerType,
1089 int patch_dim,
int patch_space_dim>
1090 template <
typename VectorType>
1094 (
const DoFHandlerType &dof_handler,
1095 const VectorType &data,
1096 const std::vector<std::string> &names,
1097 const std::vector<DataComponentInterpretation::DataComponentInterpretation> &data_component_interpretation_)
1106 ExcMessage(
"The triangulation attached to the DoFHandler does not " 1107 "match with the one set previously"));
1109 Assert (data.size() == dof_handler.n_dofs(),
1110 ExcDimensionMismatch (data.size(), dof_handler.n_dofs()));
1112 const std::vector<DataComponentInterpretation::DataComponentInterpretation> &
1113 data_component_interpretation
1114 = (data_component_interpretation_.size() != 0
1116 data_component_interpretation_
1118 std::vector<DataComponentInterpretation::DataComponentInterpretation>
1123 data_component_interpretation);
1129 template <
typename DoFHandlerType,
1130 int patch_dim,
int patch_space_dim>
1137 std::vector<Patch> dummy;
1143 template <
typename DoFHandlerType,
1144 int patch_dim,
int patch_space_dim>
1149 for (
unsigned int i=0; i<
dof_data.size(); ++i)
1152 for (
unsigned int i=0; i<
cell_data.size(); ++i)
1161 template <
typename DoFHandlerType,
1162 int patch_dim,
int patch_space_dim>
1173 std::vector<Patch> dummy;
1179 template <
typename DoFHandlerType,
1180 int patch_dim,
int patch_space_dim>
1181 std::vector<std::string>
1185 std::vector<std::string> names;
1189 typename std::vector<std_cxx11::shared_ptr<internal::DataOut::DataEntryBase<DoFHandlerType> > >::const_iterator
1192 for (data_iterator d=
dof_data.begin();
1194 for (
unsigned int i=0; i<(*d)->names.size(); ++i)
1195 names.push_back ((*d)->names[i]);
1198 Assert ((*d)->names.size() == 1, ExcInternalError());
1199 names.push_back ((*d)->names[0]);
1207 template <
typename DoFHandlerType,
1208 int patch_dim,
int patch_space_dim>
1209 std::vector<std_cxx11::tuple<unsigned int, unsigned int, std::string> >
1212 std::vector<std_cxx11::tuple<unsigned int, unsigned int, std::string> >
1218 typename std::vector<std_cxx11::shared_ptr<internal::DataOut::DataEntryBase<DoFHandlerType> > >::const_iterator
1221 unsigned int output_component = 0;
1222 for (data_iterator d=
dof_data.begin();
1224 for (
unsigned int i=0; i<(*d)->n_output_variables;
1225 ++i, ++output_component)
1230 if ((*d)->data_component_interpretation[i] ==
1237 Assert (i+patch_space_dim <=
1238 (*d)->n_output_variables,
1239 Exceptions::DataOut::ExcInvalidVectorDeclaration (i,
1241 for (
unsigned int dd=1; dd<patch_space_dim; ++dd)
1242 Assert ((*d)->data_component_interpretation[i+dd]
1245 Exceptions::DataOut::ExcInvalidVectorDeclaration (i,
1254 std::string name = (*d)->names[i];
1255 for (
unsigned int dd=1; dd<patch_space_dim; ++dd)
1256 if (name != (*d)->names[i+dd])
1264 std_cxx11::tuple<unsigned int, unsigned int, std::string>
1265 range (output_component,
1266 output_component+patch_space_dim-1,
1269 ranges.push_back (range);
1275 output_component += patch_space_dim-1;
1276 i += patch_space_dim-1;
1288 unsigned int n_output_components = 0;
1289 for (data_iterator d=
dof_data.begin();
1291 n_output_components += (*d)->n_output_variables;
1292 Assert (output_component == n_output_components,
1293 ExcInternalError());
1301 template <
typename DoFHandlerType,
1302 int patch_dim,
int patch_space_dim>
1303 const std::vector< ::DataOutBase::Patch<patch_dim, patch_space_dim> > &
1311 template <
typename DoFHandlerType,
1312 int patch_dim,
int patch_space_dim>
1314 DoFHandlerType::space_dimension> > >
1317 const unsigned int dhdim = DoFHandlerType::dimension;
1318 const unsigned int dhspacedim = DoFHandlerType::space_dimension;
1319 std::vector<std_cxx11::shared_ptr<::hp::FECollection<dhdim,dhspacedim> > >
1320 finite_elements(this->
dof_data.size());
1321 for (
unsigned int i=0; i<this->
dof_data.size(); ++i)
1324 Exceptions::DataOut::ExcNoDoFHandlerSelected ());
1332 bool duplicate =
false;
1333 for (
unsigned int j=0; j<i; ++j)
1336 finite_elements[i] = finite_elements[j];
1339 if (duplicate ==
false)
1340 finite_elements[i].reset(new ::hp::FECollection<dhdim,dhspacedim>
1341 (this->
dof_data[i]->dof_handler->get_fe()));
1345 finite_elements.resize(1);
1346 finite_elements[0].reset(new ::hp::FECollection<dhdim,dhspacedim>
1349 return finite_elements;
1354 template <
typename DoFHandlerType,
1355 int patch_dim,
int patch_space_dim>
1367 #include "data_out_dof_data.inst" 1369 DEAL_II_NAMESPACE_CLOSE
std::vector< std_cxx11::shared_ptr< internal::DataOut::DataEntryBase< DoFHandlerType > > > cell_data
void get_function_gradients(const InputVector &fe_function, std::vector< Tensor< 1, spacedim, typename InputVector::value_type > > &gradients) const
unsigned int n_active_cells() const
void clear_input_data_references()
#define AssertDimension(dim1, dim2)
void attach_triangulation(const Triangulation< DoFHandlerType::dimension, DoFHandlerType::space_dimension > &)
::ExceptionBase & ExcMessage(std::string arg1)
#define AssertIndexRange(index, range)
void get_function_values(const InputVector &fe_function, std::vector< typename InputVector::value_type > &values) const
void attach_dof_handler(const DoFHandlerType &)
virtual std::vector< std_cxx11::tuple< unsigned int, unsigned int, std::string > > get_vector_data_ranges() const
void get_function_hessians(const InputVector &fe_function, std::vector< Tensor< 2, spacedim, typename InputVector::value_type > > &hessians) const
virtual std::size_t memory_consumption() const
const VectorType * vector
#define Assert(cond, exc)
virtual ~DataOut_DoFData()
Abstract base class for mapping classes.
SmartPointer< const DoFHandlerType > dof_handler
std::vector< Patch > patches
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 >())
DataEntry(const DoFHandlerType *dofs, const VectorType *data, const std::vector< std::string > &names, const std::vector< DataComponentInterpretation::DataComponentInterpretation > &data_component_interpretation)
virtual std::vector< std::string > get_dataset_names() const
std_cxx11::enable_if< std_cxx11::is_fundamental< T >::value, std::size_t >::type memory_consumption(const T &t)
virtual double get_cell_data_value(const unsigned int cell_number) const
std::size_t memory_consumption() const
virtual void get_function_hessians(const FEValuesBase< DoFHandlerType::dimension, DoFHandlerType::space_dimension > &fe_patch_values, std::vector< Tensor< 2, DoFHandlerType::space_dimension > > &patch_hessians) const
std::vector< std_cxx11::shared_ptr<::hp::FECollection< DoFHandlerType::dimension, DoFHandlerType::space_dimension > > > get_finite_elements() const
virtual void get_function_gradients(const FEValuesBase< DoFHandlerType::dimension, DoFHandlerType::space_dimension > &fe_patch_values, std::vector< Tensor< 1, DoFHandlerType::space_dimension > > &patch_gradients) const
SmartPointer< const Triangulation< DoFHandlerType::dimension, DoFHandlerType::space_dimension > > triangulation
virtual std::vector< DataComponentInterpretation::DataComponentInterpretation > get_data_component_interpretation() const
std::vector< std_cxx11::shared_ptr< internal::DataOut::DataEntryBase< DoFHandlerType > > > dof_data
bool is_element(const size_type index) const
virtual void get_function_values(const FEValuesBase< DoFHandlerType::dimension, DoFHandlerType::space_dimension > &fe_patch_values, std::vector< double > &patch_values) const
void clear_data_vectors()
SmartPointer< const DoFHandlerType > dofs
const std::vector< std::string > names
virtual std::vector< std::string > get_names() const =0
virtual const std::vector< Patch > & get_patches() const