00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #ifndef __deal2__data_postprocessor_h
00013 #define __deal2__data_postprocessor_h
00014
00015
00016
00017 #include <deal.II/base/subscriptor.h>
00018 #include <deal.II/base/tensor.h>
00019 #include <deal.II/lac/vector.h>
00020 #include <deal.II/fe/fe_update_flags.h>
00021 #include <deal.II/numerics/data_component_interpretation.h>
00022
00023 #include <vector>
00024 #include <string>
00025
00026 DEAL_II_NAMESPACE_OPEN
00027
00028
00097 template <int dim>
00098 class DataPostprocessor: public Subscriptor
00099 {
00100 public:
00105 virtual ~DataPostprocessor ();
00106
00121 virtual
00122 void
00123 compute_derived_quantities_scalar (const std::vector<double> &uh,
00124 const std::vector<Tensor<1,dim> > &duh,
00125 const std::vector<Tensor<2,dim> > &dduh,
00126 const std::vector<Point<dim> > &normals,
00127 std::vector<Vector<double> > &computed_quantities) const;
00128
00156 virtual
00157 void
00158 compute_derived_quantities_scalar (const std::vector<double> &uh,
00159 const std::vector<Tensor<1,dim> > &duh,
00160 const std::vector<Tensor<2,dim> > &dduh,
00161 const std::vector<Point<dim> > &normals,
00162 const std::vector<Point<dim> > &evaluation_points,
00163 std::vector<Vector<double> > &computed_quantities) const;
00164
00179 virtual
00180 void
00181 compute_derived_quantities_vector (const std::vector<Vector<double> > &uh,
00182 const std::vector<std::vector<Tensor<1,dim> > > &duh,
00183 const std::vector<std::vector<Tensor<2,dim> > > &dduh,
00184 const std::vector<Point<dim> > &normals,
00185 std::vector<Vector<double> > &computed_quantities) const;
00186
00196 virtual
00197 void
00198 compute_derived_quantities_vector (const std::vector<Vector<double> > &uh,
00199 const std::vector<std::vector<Tensor<1,dim> > > &duh,
00200 const std::vector<std::vector<Tensor<2,dim> > > &dduh,
00201 const std::vector<Point<dim> > &normals,
00202 const std::vector<Point<dim> > &evaluation_points,
00203 std::vector<Vector<double> > &computed_quantities) const;
00204
00209 virtual std::vector<std::string> get_names () const = 0;
00210
00249 virtual
00250 std::vector<DataComponentInterpretation::DataComponentInterpretation>
00251 get_data_component_interpretation () const;
00252
00264 virtual UpdateFlags get_needed_update_flags () const = 0;
00265 };
00266
00267
00268
00288 template <int dim>
00289 class DataPostprocessorScalar : public DataPostprocessor<dim>
00290 {
00291 public:
00309 DataPostprocessorScalar (const std::string &name,
00310 const UpdateFlags update_flags);
00311
00319 virtual std::vector<std::string> get_names () const;
00320
00333 virtual
00334 std::vector<DataComponentInterpretation::DataComponentInterpretation>
00335 get_data_component_interpretation () const;
00336
00344 virtual UpdateFlags get_needed_update_flags () const;
00345
00346 private:
00351 const std::string name;
00352 const UpdateFlags update_flags;
00353 };
00354
00355
00356
00378 template <int dim>
00379 class DataPostprocessorVector : public DataPostprocessor<dim>
00380 {
00381 public:
00399 DataPostprocessorVector (const std::string &name,
00400 const UpdateFlags update_flags);
00401
00409 virtual std::vector<std::string> get_names () const;
00410
00424 virtual
00425 std::vector<DataComponentInterpretation::DataComponentInterpretation>
00426 get_data_component_interpretation () const;
00427
00435 virtual UpdateFlags get_needed_update_flags () const;
00436
00437 private:
00442 const std::string name;
00443 const UpdateFlags update_flags;
00444 };
00445
00446
00447 DEAL_II_NAMESPACE_CLOSE
00448
00449 #endif
00450