Reference documentation for deal.II version 8.1.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
data_out_base.h
1 // ---------------------------------------------------------------------
2 // @f$Id: data_out_base.h 31932 2013-12-08 02:15:54Z heister @f$
3 //
4 // Copyright (C) 1999 - 2013 by the deal.II authors
5 //
6 // This file is part of the deal.II library.
7 //
8 // The deal.II library is free software; you can use it, redistribute
9 // it, and/or modify it under the terms of the GNU Lesser General
10 // Public License as published by the Free Software Foundation; either
11 // version 2.1 of the License, or (at your option) any later version.
12 // The full text of the license can be found in the file LICENSE at
13 // the top level of the deal.II distribution.
14 //
15 // ---------------------------------------------------------------------
16 
17 #ifndef __deal2__data_out_base_h
18 #define __deal2__data_out_base_h
19 
20 
21 #include <deal.II/base/config.h>
22 #include <deal.II/base/point.h>
23 #include <deal.II/base/table.h>
24 #include <deal.II/base/geometry_info.h>
25 #include <deal.II/base/std_cxx1x/tuple.h>
26 
27 #include <vector>
28 #include <string>
29 #include <limits>
30 
31 #include <deal.II/base/mpi.h>
32 
33 // Only include the Tecplot API header if the appropriate files
34 // were detected by configure
35 #ifdef DEAL_II_HAVE_TECPLOT
36 # include "TECIO.h"
37 # include <string.h>
38 #endif
39 
40 #include <ostream>
41 
42 DEAL_II_NAMESPACE_OPEN
43 
44 
45 class ParameterHandler;
46 class XDMFEntry;
47 class DataOutFilter;
48 
220 {
221 public:
246  template <int dim, int spacedim=dim>
247  struct Patch
248  {
252  static const unsigned int space_dim=spacedim;
253 
261 
268  unsigned int neighbors[dim > 0
269  ?
271  :
272  1];
273 
278  unsigned int patch_index;
279 
285  unsigned int n_subdivisions;
286 
308 
322 
326  Patch ();
327 
332  bool operator == (const Patch &patch) const;
333 
342  std::size_t memory_consumption () const;
343 
347  static const unsigned int no_neighbor = numbers::invalid_unsigned_int;
354  DeclException2 (ExcInvalidCombinationOfDimensions,
355  int, int,
356  << "It is not possible to have a structural dimension of " << arg1
357  << " to be larger than the space dimension of the surrounding"
358  << " space " << arg2);
360  };
361 
367  struct DXFlags
368  {
384 
389 
395 
399  DXFlags (const bool write_neighbors = false,
400  const bool int_binary = false,
401  const bool coordinates_binary = false,
402  const bool data_binary = false);
403 
408  static void declare_parameters (ParameterHandler &prm);
409 
417  void parse_parameters (const ParameterHandler &prm);
418 
423  std::size_t memory_consumption () const;
424  };
425 
431  struct UcdFlags
432  {
443 
447  UcdFlags (const bool write_preamble = false);
448 
453  static void declare_parameters (ParameterHandler &prm);
454 
462  void parse_parameters (const ParameterHandler &prm);
463 
472  std::size_t memory_consumption () const;
473  };
474 
482  {
483  private:
489  int dummy;
490 
491  public:
495  GnuplotFlags ();
496 
501  static void declare_parameters (ParameterHandler &prm);
502 
510  void parse_parameters (const ParameterHandler &prm) const;
511 
520  std::size_t memory_consumption () const;
521  };
522 
529  struct PovrayFlags
530  {
536  bool smooth;
537 
544 
552 
556  PovrayFlags (const bool smooth = false,
557  const bool bicubic_patch = false,
558  const bool external_data = false);
559 
564  static void declare_parameters (ParameterHandler &prm);
565 
573  void parse_parameters (const ParameterHandler &prm);
574 
583  std::size_t memory_consumption () const;
584  };
585 
586 
593  struct EpsFlags
594  {
602  unsigned int height_vector;
603 
608  unsigned int color_vector;
609 
615  enum SizeType
616  {
621  };
622 
627 
635  unsigned int size;
636 
640  double line_width;
641 
647  double azimut_angle;
648 
672  double turn_angle;
673 
685  double z_scaling;
686 
693  bool draw_mesh;
694 
713 
724 
728  struct RgbValues
729  {
730  float red;
731  float green;
732  float blue;
733 
738  bool is_grey () const;
739  };
740 
749  typedef RgbValues (*ColorFunction) (const double value,
750  const double min_value,
751  const double max_value);
752 
759 
760 
769  static RgbValues
770  default_color_function (const double value,
771  const double min_value,
772  const double max_value);
773 
780  static RgbValues
781  grey_scale_color_function (const double value,
782  const double min_value,
783  const double max_value);
784 
792  static RgbValues
793  reverse_grey_scale_color_function (const double value,
794  const double min_value,
795  const double max_value);
796 
800  EpsFlags (const unsigned int height_vector = 0,
801  const unsigned int color_vector = 0,
802  const SizeType size_type = width,
803  const unsigned int size = 300,
804  const double line_width = 0.5,
805  const double azimut_angle = 60,
806  const double turn_angle = 30,
807  const double z_scaling = 1.0,
808  const bool draw_mesh = true,
809  const bool draw_cells = true,
810  const bool shade_cells = true,
812 
820  static void declare_parameters (ParameterHandler &prm);
821 
829  void parse_parameters (const ParameterHandler &prm);
830 
839  std::size_t memory_consumption () const;
840  };
841 
848  struct GmvFlags
849  {
850  private:
856  int dummy;
857 
858  public:
862  GmvFlags ();
863 
868  static void declare_parameters (ParameterHandler &prm);
869 
877  void parse_parameters (const ParameterHandler &prm) const;
878 
887  std::size_t memory_consumption () const;
888  };
889 
896  {
897 
898  public:
899 
907 
912  const char *zone_name;
913 
917  TecplotFlags (const char *tecplot_binary_file_name = NULL,
918  const char *zone_name = NULL);
919 
924  static void declare_parameters (ParameterHandler &prm);
925 
933  void parse_parameters (const ParameterHandler &prm) const;
934 
943  std::size_t memory_consumption () const;
944  };
945 
951  struct VtkFlags
952  {
953  public:
964  double time;
965 
977  unsigned int cycle;
978 
986 
990  VtkFlags (const double time = std::numeric_limits<double>::min(),
991  const unsigned int cycle = std::numeric_limits<unsigned int>::min(),
992  const bool print_date_and_time = true);
993 
1006  static void declare_parameters (ParameterHandler &prm);
1007 
1015  void parse_parameters (const ParameterHandler &prm) const;
1016 
1025  std::size_t memory_consumption () const;
1026  };
1027 
1028 
1032  struct SvgFlags
1033  {
1034  public:
1039  unsigned int height;
1040 
1045  unsigned int width;
1046 
1054  unsigned int height_vector;
1055 
1059  int azimuth_angle, polar_angle;
1060 
1061  unsigned int line_thickness;
1062 
1066  bool margin;
1067 
1072 
1076  SvgFlags(const unsigned int height_vector = 0,
1077  const int azimuth_angle = 37,
1078  const int polar_angle = 45,
1079  const unsigned int line_thickness = 1,
1080  const bool margin = true,
1081  const bool draw_colorbar = true);
1082 
1091  std::size_t memory_consumption () const;
1092 
1093  private:
1094 
1095  };
1096 
1097 
1105  {
1113  static const unsigned int format_version = 3;
1114  private:
1120  int dummy;
1121 
1122  public:
1127 
1132  static void declare_parameters (ParameterHandler &prm);
1133 
1141  void parse_parameters (const ParameterHandler &prm) const;
1142 
1151  std::size_t memory_consumption () const;
1152  };
1153 
1161  {
1168 
1174 
1178  DataOutFilterFlags (const bool filter_duplicate_vertices = false,
1179  const bool xdmf_hdf5_output = false);
1180 
1186  static void declare_parameters (ParameterHandler &prm);
1187 
1197  void parse_parameters (const ParameterHandler &prm);
1198 
1205  std::size_t memory_consumption () const;
1206  };
1207 
1230  {
1231  private:
1235  struct Point3Comp
1236  {
1237  bool operator() (const Point<3> &lhs, const Point<3> &rhs) const
1238  {
1239  return (lhs(0) < rhs(0) || (!(rhs(0) < lhs(0)) && (lhs(1) < rhs(1) || (!(rhs(1) < lhs(1)) && lhs(2) < rhs(2)))));
1240  }
1241  };
1242 
1243  typedef std::multimap<Point<3>, unsigned int, Point3Comp> Map3DPoint;
1244 
1247 
1250 
1253 
1255  Map3DPoint existing_points;
1256 
1258  std::map<unsigned int, unsigned int> filtered_points;
1259 
1261  std::map<unsigned int, unsigned int> filtered_cells;
1262 
1264  std::vector<std::string> data_set_names;
1265 
1267  std::vector<unsigned int> data_set_dims;
1268 
1270  std::vector<std::vector<double> > data_sets;
1271 
1275  void internal_add_cell(const unsigned int &cell_index, const unsigned int &pt_index);
1276 
1277  public:
1278  DataOutFilter() : flags(false, true) {};
1279  DataOutFilter(const DataOutBase::DataOutFilterFlags &flags) : flags(flags) {};
1280 
1287  template<int dim>
1288  void write_point(const unsigned int &index, const Point<dim> &p);
1289 
1293  template<int dim>
1294  void write_cell(unsigned int index, unsigned int start, unsigned int d1, unsigned int d2, unsigned int d3);
1295 
1303  void write_data_set(const std::string &name, const unsigned int &dimension, const unsigned int &set_num, const Table<2,double> &data_vectors);
1304 
1309  void fill_node_data(std::vector<double> &node_data) const;
1310 
1315  void fill_cell_data(const unsigned int &local_node_offset, std::vector<unsigned int> &cell_data) const;
1316 
1320  std::string get_data_set_name(const unsigned int &set_num) const
1321  {
1322  return data_set_names.at(set_num);
1323  };
1324 
1328  unsigned int get_data_set_dim(const unsigned int &set_num) const
1329  {
1330  return data_set_dims.at(set_num);
1331  };
1332 
1336  const double *get_data_set(const unsigned int &set_num) const
1337  {
1338  return &data_sets[set_num][0];
1339  };
1340 
1345  unsigned int n_nodes() const
1346  {
1347  return existing_points.size();
1348  };
1349 
1354  unsigned int n_cells() const
1355  {
1356  return filtered_cells.size()/n_cell_verts;
1357  };
1358 
1363  unsigned int n_data_sets() const
1364  {
1365  return data_set_names.size();
1366  };
1367 
1371  void flush_points () {};
1372 
1376  void flush_cells () {};
1377 
1378  };
1379 
1380 
1386  {
1429 
1434 
1439 
1444 
1449 
1454  };
1455 
1456 
1465  template <int dim, int spacedim>
1466  static void write_dx (const std::vector<Patch<dim,spacedim> > &patches,
1467  const std::vector<std::string> &data_names,
1468  const std::vector<std_cxx1x::tuple<unsigned int, unsigned int, std::string> > &vector_data_ranges,
1469  const DXFlags &flags,
1470  std::ostream &out);
1471 
1517  template <int dim, int spacedim>
1518  static void write_eps (const std::vector<Patch<dim,spacedim> > &patches,
1519  const std::vector<std::string> &data_names,
1520  const std::vector<std_cxx1x::tuple<unsigned int, unsigned int, std::string> > &vector_data_ranges,
1521  const EpsFlags &flags,
1522  std::ostream &out);
1523 
1534  template <int dim, int spacedim>
1535  static void write_gmv (const std::vector<Patch<dim,spacedim> > &patches,
1536  const std::vector<std::string> &data_names,
1537  const std::vector<std_cxx1x::tuple<unsigned int, unsigned int, std::string> > &vector_data_ranges,
1538  const GmvFlags &flags,
1539  std::ostream &out);
1540 
1601  template <int dim, int spacedim>
1602  static void write_gnuplot (const std::vector<Patch<dim,spacedim> > &patches,
1603  const std::vector<std::string> &data_names,
1604  const std::vector<std_cxx1x::tuple<unsigned int, unsigned int, std::string> > &vector_data_ranges,
1605  const GnuplotFlags &flags,
1606  std::ostream &out);
1607 
1655  template <int dim, int spacedim>
1656  static void write_povray (const std::vector<Patch<dim,spacedim> > &patches,
1657  const std::vector<std::string> &data_names,
1658  const std::vector<std_cxx1x::tuple<unsigned int, unsigned int, std::string> > &vector_data_ranges,
1659  const PovrayFlags &flags,
1660  std::ostream &out);
1661 
1669  template <int dim, int spacedim>
1670  static void write_tecplot (const std::vector<Patch<dim,spacedim> > &patches,
1671  const std::vector<std::string> &data_names,
1672  const std::vector<std_cxx1x::tuple<unsigned int, unsigned int, std::string> > &vector_data_ranges,
1673  const TecplotFlags &flags,
1674  std::ostream &out);
1675 
1697  template <int dim, int spacedim>
1698  static void write_tecplot_binary (
1699  const std::vector<Patch<dim,spacedim> > &patches,
1700  const std::vector<std::string> &data_names,
1701  const std::vector<std_cxx1x::tuple<unsigned int, unsigned int, std::string> > &vector_data_ranges,
1702  const TecplotFlags &flags,
1703  std::ostream &out);
1704 
1720  template <int dim, int spacedim>
1721  static void write_ucd (const std::vector<Patch<dim,spacedim> > &patches,
1722  const std::vector<std::string> &data_names,
1723  const std::vector<std_cxx1x::tuple<unsigned int, unsigned int, std::string> > &vector_data_ranges,
1724  const UcdFlags &flags,
1725  std::ostream &out);
1726 
1746  template <int dim, int spacedim>
1747  static void write_vtk (const std::vector<Patch<dim,spacedim> > &patches,
1748  const std::vector<std::string> &data_names,
1749  const std::vector<std_cxx1x::tuple<unsigned int, unsigned int, std::string> > &vector_data_ranges,
1750  const VtkFlags &flags,
1751  std::ostream &out);
1752 
1753 
1777  template <int dim, int spacedim>
1778  static void write_vtu (const std::vector<Patch<dim,spacedim> > &patches,
1779  const std::vector<std::string> &data_names,
1780  const std::vector<std_cxx1x::tuple<unsigned int, unsigned int, std::string> > &vector_data_ranges,
1781  const VtkFlags &flags,
1782  std::ostream &out);
1783 
1790  static void write_vtu_header (std::ostream &out,
1791  const VtkFlags &flags);
1792 
1799  static void write_vtu_footer (std::ostream &out);
1800 
1807  template <int dim, int spacedim>
1808  static void write_vtu_main (const std::vector<Patch<dim,spacedim> > &patches,
1809  const std::vector<std::string> &data_names,
1810  const std::vector<std_cxx1x::tuple<unsigned int, unsigned int, std::string> > &vector_data_ranges,
1811  const VtkFlags &flags,
1812  std::ostream &out);
1813 
1835  template <int dim, int spacedim>
1836  static void write_svg (const std::vector<Patch<dim,spacedim> > &patches,
1837  const std::vector<std::string> &data_names,
1838  const std::vector<std_cxx1x::tuple<unsigned int, unsigned int, std::string> > &vector_data_ranges,
1839  const SvgFlags &flags,
1840  std::ostream &out);
1841 
1882  template <int dim, int spacedim>
1883  static void write_deal_II_intermediate (
1884  const std::vector<Patch<dim,spacedim> > &patches,
1885  const std::vector<std::string> &data_names,
1886  const std::vector<std_cxx1x::tuple<unsigned int, unsigned int, std::string> > &vector_data_ranges,
1887  const Deal_II_IntermediateFlags &flags,
1888  std::ostream &out);
1889 
1894  template <int dim, int spacedim>
1895  static void write_hdf5_parallel (const std::vector<Patch<dim,spacedim> > &patches,
1896  const DataOutFilter &data_filter,
1897  const std::string &filename,
1898  MPI_Comm comm);
1899 
1907  template <int dim, int spacedim>
1908  static void write_hdf5_parallel (const std::vector<Patch<dim,spacedim> > &patches,
1909  const DataOutFilter &data_filter,
1910  const bool write_mesh_file,
1911  const std::string &mesh_filename,
1912  const std::string &solution_filename,
1913  MPI_Comm comm);
1914 
1921  template <int dim, int spacedim>
1922  static void write_filtered_data (const std::vector<Patch<dim,spacedim> > &patches,
1923  const std::vector<std::string> &data_names,
1924  const std::vector<std_cxx1x::tuple<unsigned int, unsigned int, std::string> > &vector_data_ranges,
1925  DataOutFilter &filtered_data);
1926 
1939  static
1940  std::pair<unsigned int, unsigned int>
1941  determine_intermediate_format_dimensions (std::istream &input);
1942 
1958  static OutputFormat parse_output_format (const std::string &format_name);
1959 
1965  static std::string get_output_format_names ();
1966 
1986  static std::string default_suffix (const OutputFormat output_format);
1987 
1996  static std::size_t memory_consumption ();
1997 
2004  DeclException2 (ExcInvalidDatasetSize,
2005  int, int,
2006  << "The number of points in this data set is " << arg1
2007  << ", but we expected " << arg2 << " in each space direction.");
2011  DeclException0 (ExcNoPatches);
2015  DeclException0 (ExcTecplotAPIError);
2019  DeclException1 (ExcErrorOpeningTecplotFile,
2020  char *,
2021  << "There was an error opening Tecplot file " << arg1
2022  << " for output");
2023 
2025 private:
2029  template <int dim, int spacedim, typename STREAM>
2030  static void write_nodes (const std::vector<Patch<dim,spacedim> > &patches,
2031  STREAM &out);
2032 
2036  template <int dim, int spacedim, typename STREAM>
2037  static void write_cells (const std::vector<Patch<dim,spacedim> > &patches,
2038  STREAM &out);
2039 
2043  template <int dim, int spacedim, class STREAM>
2044  static void write_data (const std::vector<Patch<dim,spacedim> > &patches,
2045  const unsigned int n_data_sets,
2046  const bool double_precision,
2047  STREAM &out);
2048 
2049 
2060  static Point<2> svg_project_point(Point<3> point,
2061  Point<3> camera_position,
2062  Point<3> camera_direction,
2063  Point<3> camera_horizontal,
2064  float camera_focus);
2072 
2079  class SvgCell
2080  {
2081  public:
2082 
2083  // Center of the cell (three-dimensional)
2084  Point<3> center;
2085 
2090 
2095  float depth;
2096 
2101 
2102  // Center of the cell (projected, two-dimensional)
2103  Point<2> projected_center;
2104 
2108  bool operator < (const SvgCell &) const;
2109  };
2110 
2111 
2119  {
2120  public:
2121 
2126 
2132 
2137  float depth;
2138 
2142  bool operator < (const EpsCell2d &) const;
2143  };
2144 
2145 
2156  template <int dim, int spacedim>
2157  static void
2158  write_gmv_reorder_data_vectors (const std::vector<Patch<dim,spacedim> > &patches,
2159  Table<2,double> &data_vectors);
2160 
2161 
2162 
2163 };
2164 
2165 
2166 
2167 
2282 template <int dim, int spacedim=dim>
2284 {
2285 public:
2286  /*
2287  * Import a few names that were
2288  * previously in this class and have then
2289  * moved to the base class. Since the
2290  * base class is inherited from
2291  * privately, we need to re-import these
2292  * symbols to make sure that references
2293  * to DataOutInterface<dim,spacedim>::XXX
2294  * remain valid.
2295  */
2298  using DataOutBase::dx;
2299  using DataOutBase::gnuplot;
2300  using DataOutBase::povray;
2301  using DataOutBase::eps;
2302  using DataOutBase::tecplot;
2304  using DataOutBase::vtk;
2305  using DataOutBase::vtu;
2310 
2314  DataOutInterface ();
2315 
2321  virtual ~DataOutInterface ();
2322 
2329  void write_dx (std::ostream &out) const;
2330 
2337  void write_eps (std::ostream &out) const;
2338 
2345  void write_gmv (std::ostream &out) const;
2346 
2353  void write_gnuplot (std::ostream &out) const;
2354 
2361  void write_povray (std::ostream &out) const;
2362 
2369  void write_tecplot (std::ostream &out) const;
2370 
2380  void write_tecplot_binary (std::ostream &out) const;
2381 
2389  void write_ucd (std::ostream &out) const;
2390 
2404  void write_vtk (std::ostream &out) const;
2405 
2430  void write_vtu (std::ostream &out) const;
2431 
2445  void write_vtu_in_parallel (const char *filename, MPI_Comm comm) const;
2446 
2499  void write_pvtu_record (std::ostream &out,
2500  const std::vector<std::string> &piece_names) const;
2501 
2554  void write_pvd_record (std::ostream &out,
2555  const std::vector<std::pair<double,std::string> > &times_and_names) const;
2556 
2567  void write_visit_record (std::ostream &out,
2568  const std::vector<std::string> &piece_names) const;
2569 
2598  void write_visit_record (std::ostream &out,
2599  const std::vector<std::vector<std::string> > &piece_names) const;
2600 
2605  void write_svg(std::ostream &out) const;
2606 
2618  void write_deal_II_intermediate (std::ostream &out) const;
2619 
2624  XDMFEntry create_xdmf_entry (const std::string &h5_filename,
2625  const double cur_time,
2626  MPI_Comm comm) const DEAL_II_DEPRECATED;
2627 
2633  XDMFEntry create_xdmf_entry (const DataOutFilter &data_filter,
2634  const std::string &h5_filename,
2635  const double cur_time,
2636  MPI_Comm comm) const;
2637 
2643  XDMFEntry create_xdmf_entry (const DataOutFilter &data_filter,
2644  const std::string &h5_mesh_filename,
2645  const std::string &h5_solution_filename,
2646  const double cur_time,
2647  MPI_Comm comm) const;
2648 
2668  void write_xdmf_file (const std::vector<XDMFEntry> &entries,
2669  const std::string &filename,
2670  MPI_Comm comm) const;
2671 
2677  void write_hdf5_parallel (const std::string &filename, MPI_Comm comm) const DEAL_II_DEPRECATED;
2678 
2692  void write_hdf5_parallel (const DataOutFilter &data_filter, const std::string &filename, MPI_Comm comm) const;
2693 
2701  void write_hdf5_parallel (const DataOutFilter &data_filter, const bool write_mesh_file, const std::string &mesh_filename, const std::string &solution_filename, MPI_Comm comm) const;
2702 
2709  void write_filtered_data (DataOutFilter &filtered_data) const;
2710 
2711 
2726  void write (std::ostream &out,
2727  const OutputFormat output_format = default_format) const;
2728 
2734 
2738  void set_flags (const DXFlags &dx_flags);
2739 
2743  void set_flags (const UcdFlags &ucd_flags);
2744 
2748  void set_flags (const GnuplotFlags &gnuplot_flags);
2749 
2753  void set_flags (const PovrayFlags &povray_flags);
2754 
2758  void set_flags (const EpsFlags &eps_flags);
2759 
2763  void set_flags (const GmvFlags &gmv_flags);
2764 
2768  void set_flags (const TecplotFlags &tecplot_flags);
2769 
2773  void set_flags (const VtkFlags &vtk_flags);
2774 
2778  void set_flags (const SvgFlags &svg_flags);
2779 
2785 
2794  std::string
2795  default_suffix (const OutputFormat output_format = default_format) const;
2796 
2812  static void declare_parameters (ParameterHandler &prm);
2813 
2822  void parse_parameters (ParameterHandler &prm);
2823 
2832  std::size_t memory_consumption () const;
2833 
2834 protected:
2842  virtual
2843  const std::vector<typename DataOutBase::Patch<dim,spacedim> > &
2844  get_patches () const = 0;
2845 
2850  virtual
2851  std::vector<std::string>
2852  get_dataset_names () const = 0;
2853 
2873  virtual
2874  std::vector<std_cxx1x::tuple<unsigned int, unsigned int, std::string> >
2875  get_vector_data_ranges () const;
2876 
2882  unsigned int default_subdivisions;
2883 
2884 private:
2891 
2897 
2903 
2909 
2915 
2922 
2929 
2936 
2943 
2950 
2957 };
2958 
2959 
2960 
3011 template <int dim, int spacedim=dim>
3012 class DataOutReader : public DataOutInterface<dim,spacedim>
3013 {
3014 public:
3020  void read (std::istream &in);
3021 
3047  void merge (const DataOutReader<dim,spacedim> &other);
3048 
3052  DeclException0 (ExcNoPatches);
3056  DeclException0 (ExcIncompatibleDatasetNames);
3060  DeclException0 (ExcIncompatiblePatchLists);
3064  DeclException4 (ExcIncompatibleDimensions,
3065  int, int, int, int,
3066  << "Either the dimensions <" << arg1 << "> and <"
3067  << arg2 << "> or the space dimensions <"
3068  << arg3 << "> and <" << arg4
3069  << "> do not match!");
3070 
3071 protected:
3080  virtual const std::vector<typename ::DataOutBase::Patch<dim,spacedim> > &
3081  get_patches () const;
3082 
3090  virtual std::vector<std::string> get_dataset_names () const;
3091 
3111  virtual
3112  std::vector<std_cxx1x::tuple<unsigned int, unsigned int, std::string> >
3113  get_vector_data_ranges () const;
3114 
3115 private:
3120  std::vector<typename ::DataOutBase::Patch<dim,spacedim> > patches;
3121  std::vector<std::string> dataset_names;
3122 
3127  std::vector<std_cxx1x::tuple<unsigned int, unsigned int, std::string> >
3129 };
3130 
3131 
3132 
3133 
3144 {
3145 private:
3147  bool valid;
3149  std::string h5_sol_filename, h5_mesh_filename;
3151  double entry_time;
3153  unsigned int num_nodes, num_cells, dimension;
3155  std::map<std::string, unsigned int> attribute_dims;
3156 
3158  std::string indent(const unsigned int indent_level) const
3159  {
3160  std::string res = "";
3161  for (unsigned int i=0; i<indent_level; ++i) res += " ";
3162  return res;
3163  }
3164 
3165 public:
3166  XDMFEntry() : valid(false) {};
3167  XDMFEntry(const std::string filename, const double time, const unsigned int nodes, const unsigned int cells, const unsigned int dim) : valid(true), h5_sol_filename(filename), h5_mesh_filename(filename), entry_time(time), num_nodes(nodes), num_cells(cells), dimension(dim) {};
3168  XDMFEntry(const std::string mesh_filename, const std::string solution_filename, const double time, const unsigned int nodes, const unsigned int cells, const unsigned int dim) : valid(true), h5_sol_filename(solution_filename), h5_mesh_filename(mesh_filename), entry_time(time), num_nodes(nodes), num_cells(cells), dimension(dim) {};
3169 
3173  void add_attribute(const std::string &attr_name, const unsigned int dimension)
3174  {
3175  attribute_dims[attr_name] = dimension;
3176  }
3177 
3181  template <class Archive>
3182  void serialize(Archive &ar, const unsigned int version)
3183  {
3184  ar &valid
3186  &h5_mesh_filename
3187  &entry_time
3188  &num_nodes
3189  &num_cells
3190  &dimension
3191  &attribute_dims;
3192  }
3193 
3196  std::string get_xdmf_content(const unsigned int indent_level) const;
3197 };
3198 
3199 
3200 
3201 /* -------------------- inline functions ------------------- */
3202 
3203 inline
3204 bool
3206 {
3207  return (red == green) && (red == blue);
3208 }
3209 
3210 
3211 /* -------------------- template functions ------------------- */
3212 
3222 template <int dim, int spacedim>
3223 std::ostream &
3224 operator << (std::ostream &out,
3225  const DataOutBase::Patch<dim,spacedim> &patch);
3226 
3227 
3228 
3237 template <int dim, int spacedim>
3238 std::istream &
3239 operator >> (std::istream &in,
3241 
3242 
3243 
3244 DEAL_II_NAMESPACE_CLOSE
3245 
3246 #endif
static void write_filtered_data(const std::vector< Patch< dim, spacedim > > &patches, const std::vector< std::string > &data_names, const std::vector< std_cxx1x::tuple< unsigned int, unsigned int, std::string > > &vector_data_ranges, DataOutFilter &filtered_data)
void fill_node_data(std::vector< double > &node_data) const
Point< 2 > projected_vertices[4]
static const unsigned int invalid_unsigned_int
Definition: types.h:191
std::size_t memory_consumption() const
unsigned int n_cells() const
Map3DPoint existing_points
Map of points to an internal index.
unsigned int height_vector
static void declare_parameters(ParameterHandler &prm)
RgbValues(* ColorFunction)(const double value, const double min_value, const double max_value)
void parse_parameters(const ParameterHandler &prm)
void write_eps(std::ostream &out) const
bool operator<(const EpsCell2d &) const
static void declare_parameters(ParameterHandler &prm)
DeclException0(ExcNoPatches)
std::size_t memory_consumption() const
std::size_t memory_consumption() const
static std::pair< unsigned int, unsigned int > determine_intermediate_format_dimensions(std::istream &input)
GnuplotFlags gnuplot_flags
virtual std::vector< std_cxx1x::tuple< unsigned int, unsigned int, std::string > > get_vector_data_ranges() const
virtual std::vector< std::string > get_dataset_names() const =0
static Point< 6 > svg_get_gradient_parameters(Point< 3 > points[])
std::map< unsigned int, unsigned int > filtered_cells
Map of cells to the filtered points.
static void declare_parameters(ParameterHandler &prm)
static RgbValues grey_scale_color_function(const double value, const double min_value, const double max_value)
void write_vtu_in_parallel(const char *filename, MPI_Comm comm) const
void write_visit_record(std::ostream &out, const std::vector< std::string > &piece_names) const
void write_hdf5_parallel(const std::string &filename, MPI_Comm comm) const DEAL_II_DEPRECATED
TecplotFlags(const char *tecplot_binary_file_name=NULL, const char *zone_name=NULL)
static std::string get_output_format_names()
std::string default_suffix(const OutputFormat output_format=default_format) const
void write_cell(unsigned int index, unsigned int start, unsigned int d1, unsigned int d2, unsigned int d3)
std::size_t memory_consumption() const
Deal_II_IntermediateFlags deal_II_intermediate_flags
void parse_parameters(const ParameterHandler &prm)
void merge(const DataOutReader< dim, spacedim > &other)
static std::string default_suffix(const OutputFormat output_format)
bool valid
Whether this entry is valid and contains data to be written.
static void write_vtu_footer(std::ostream &out)
static void write_data(const std::vector< Patch< dim, spacedim > > &patches, const unsigned int n_data_sets, const bool double_precision, STREAM &out)
virtual const std::vector< typename DataOutBase::Patch< dim, spacedim > > & get_patches() const =0
double entry_time
The simulation time associated with this entry.
Point< 3 > vertices[4]
static void write_gnuplot(const std::vector< Patch< dim, spacedim > > &patches, const std::vector< std::string > &data_names, const std::vector< std_cxx1x::tuple< unsigned int, unsigned int, std::string > > &vector_data_ranges, const GnuplotFlags &flags, std::ostream &out)
static void write_ucd(const std::vector< Patch< dim, spacedim > > &patches, const std::vector< std::string > &data_names, const std::vector< std_cxx1x::tuple< unsigned int, unsigned int, std::string > > &vector_data_ranges, const UcdFlags &flags, std::ostream &out)
void serialize(Archive &ar, const unsigned int version)
void write_vtk(std::ostream &out) const
std::string get_data_set_name(const unsigned int &set_num) const
static void write_svg(const std::vector< Patch< dim, spacedim > > &patches, const std::vector< std::string > &data_names, const std::vector< std_cxx1x::tuple< unsigned int, unsigned int, std::string > > &vector_data_ranges, const SvgFlags &flags, std::ostream &out)
void set_flags(const DXFlags &dx_flags)
void write_pvd_record(std::ostream &out, const std::vector< std::pair< double, std::string > > &times_and_names) const
std::size_t memory_consumption() const
unsigned int default_subdivisions
std::vector< unsigned int > data_set_dims
Data set dimensions.
Point< spacedim > vertices[GeometryInfo< dim >::vertices_per_cell]
std::size_t memory_consumption() const
std::vector< std::vector< double > > data_sets
Data set data.
static void write_deal_II_intermediate(const std::vector< Patch< dim, spacedim > > &patches, const std::vector< std::string > &data_names, const std::vector< std_cxx1x::tuple< unsigned int, unsigned int, std::string > > &vector_data_ranges, const Deal_II_IntermediateFlags &flags, std::ostream &out)
std::map< std::string, unsigned int > attribute_dims
The attributes associated with this entry and their dimension.
std::size_t memory_consumption() const
void parse_parameters(ParameterHandler &prm)
static void write_hdf5_parallel(const std::vector< Patch< dim, spacedim > > &patches, const DataOutFilter &data_filter, const std::string &filename, MPI_Comm comm)
virtual std::vector< std::string > get_dataset_names() const
void write(std::ostream &out, const OutputFormat output_format=default_format) const
Scale to given height.
const char * tecplot_binary_file_name
static RgbValues default_color_function(const double value, const double min_value, const double max_value)
int n_cell_verts
Number of vertices per cell.
DataOutBase::DataOutFilterFlags flags
Flags used to specify filtering behavior.
SvgFlags(const unsigned int height_vector=0, const int azimuth_angle=37, const int polar_angle=45, const unsigned int line_thickness=1, const bool margin=true, const bool draw_colorbar=true)
XDMFEntry create_xdmf_entry(const std::string &h5_filename, const double cur_time, MPI_Comm comm) const DEAL_II_DEPRECATED
EpsFlags(const unsigned int height_vector=0, const unsigned int color_vector=0, const SizeType size_type=width, const unsigned int size=300, const double line_width=0.5, const double azimut_angle=60, const double turn_angle=30, const double z_scaling=1.0, const bool draw_mesh=true, const bool draw_cells=true, const bool shade_cells=true, const ColorFunction color_function=&default_color_function)
unsigned int patch_index
static void write_vtk(const std::vector< Patch< dim, spacedim > > &patches, const std::vector< std::string > &data_names, const std::vector< std_cxx1x::tuple< unsigned int, unsigned int, std::string > > &vector_data_ranges, const VtkFlags &flags, std::ostream &out)
static void declare_parameters(ParameterHandler &prm)
static void declare_parameters(ParameterHandler &prm)
std::vector< typename::DataOutBase::Patch< dim, spacedim > > patches
TecplotFlags tecplot_flags
std::vector< std::string > data_set_names
Data set names.
void add_attribute(const std::string &attr_name, const unsigned int dimension)
std::size_t memory_consumption() const
void write_svg(std::ostream &out) const
PovrayFlags povray_flags
DXFlags(const bool write_neighbors=false, const bool int_binary=false, const bool coordinates_binary=false, const bool data_binary=false)
unsigned int n_data_sets() const
virtual std::vector< std_cxx1x::tuple< unsigned int, unsigned int, std::string > > get_vector_data_ranges() const
unsigned int get_data_set_dim(const unsigned int &set_num) const
void read(std::istream &in)
static std::size_t memory_consumption()
static void write_tecplot(const std::vector< Patch< dim, spacedim > > &patches, const std::vector< std::string > &data_names, const std::vector< std_cxx1x::tuple< unsigned int, unsigned int, std::string > > &vector_data_ranges, const TecplotFlags &flags, std::ostream &out)
std::size_t memory_consumption() const
static void declare_parameters(ParameterHandler &prm)
int node_dim
Dimensionality of the nodes, used to properly output filtered data.
void internal_add_cell(const unsigned int &cell_index, const unsigned int &pt_index)
std::size_t memory_consumption() const
static void declare_parameters(ParameterHandler &prm)
static void declare_parameters(ParameterHandler &prm)
static void write_vtu_main(const std::vector< Patch< dim, spacedim > > &patches, const std::vector< std::string > &data_names, const std::vector< std_cxx1x::tuple< unsigned int, unsigned int, std::string > > &vector_data_ranges, const VtkFlags &flags, std::ostream &out)
bool operator<(const SvgCell &) const
ColorFunction color_function
void write_pvtu_record(std::ostream &out, const std::vector< std::string > &piece_names) const
void parse_parameters(const ParameterHandler &prm) const
DataOutFilterFlags(const bool filter_duplicate_vertices=false, const bool xdmf_hdf5_output=false)
std::size_t memory_consumption() const
unsigned int n_subdivisions
BlockCompressedSparsityPattern CompressedBlockSparsityPattern DEAL_II_DEPRECATED
static void declare_parameters(ParameterHandler &prm)
void parse_parameters(const ParameterHandler &prm)
void write_ucd(std::ostream &out) const
virtual const std::vector< typename::DataOutBase::Patch< dim, spacedim > > & get_patches() const
Scale to given width.
VtkFlags(const double time=std::numeric_limits< double >::min(), const unsigned int cycle=std::numeric_limits< unsigned int >::min(), const bool print_date_and_time=true)
virtual ~DataOutInterface()
std::string h5_sol_filename
The name of the HDF5 heavy data solution and/or mesh files this entry references. ...
void parse_parameters(const ParameterHandler &prm)
std::size_t memory_consumption() const
void write_xdmf_file(const std::vector< XDMFEntry > &entries, const std::string &filename, MPI_Comm comm) const
unsigned int n_nodes() const
DeclException1(ExcErrorOpeningTecplotFile, char *,<< "There was an error opening Tecplot file "<< arg1<< " for output")
static void write_vtu_header(std::ostream &out, const VtkFlags &flags)
std::ostream & operator<<(std::ostream &os, const Vector< number > &v)
Definition: vector.h:1546
DeclException2(ExcInvalidDatasetSize, int, int,<< "The number of points in this data set is "<< arg1<< ", but we expected "<< arg2<< " in each space direction.")
static void write_povray(const std::vector< Patch< dim, spacedim > > &patches, const std::vector< std::string > &data_names, const std::vector< std_cxx1x::tuple< unsigned int, unsigned int, std::string > > &vector_data_ranges, const PovrayFlags &flags, std::ostream &out)
static const unsigned int no_neighbor
void write_point(const unsigned int &index, const Point< dim > &p)
const double * get_data_set(const unsigned int &set_num) const
static void declare_parameters(ParameterHandler &prm)
static const unsigned int format_version
void write_tecplot(std::ostream &out) const
DeclException0(ExcNoPatches)
DeclException2(ExcInvalidCombinationOfDimensions, int, int,<< "It is not possible to have a structural dimension of "<< arg1<< " to be larger than the space dimension of the surrounding"<< " space "<< arg2)
void write_filtered_data(DataOutFilter &filtered_data) const
static OutputFormat parse_output_format(const std::string &format_name)
static const unsigned int space_dim
void write_gnuplot(std::ostream &out) const
static Point< 2 > svg_project_point(Point< 3 > point, Point< 3 > camera_position, Point< 3 > camera_direction, Point< 3 > camera_horizontal, float camera_focus)
bool operator==(const Patch &patch) const
static void write_nodes(const std::vector< Patch< dim, spacedim > > &patches, STREAM &out)
unsigned int num_nodes
The number of nodes, cells and dimensionality associated with the data.
void parse_parameters(const ParameterHandler &prm) const
void write_vtu(std::ostream &out) const
PovrayFlags(const bool smooth=false, const bool bicubic_patch=false, const bool external_data=false)
static void write_cells(const std::vector< Patch< dim, spacedim > > &patches, STREAM &out)
void write_tecplot_binary(std::ostream &out) const
unsigned int color_vector
std::vector< std_cxx1x::tuple< unsigned int, unsigned int, std::string > > vector_data_ranges
static void write_eps(const std::vector< Patch< dim, spacedim > > &patches, const std::vector< std::string > &data_names, const std::vector< std_cxx1x::tuple< unsigned int, unsigned int, std::string > > &vector_data_ranges, const EpsFlags &flags, std::ostream &out)
void write_dx(std::ostream &out) const
std::size_t memory_consumption() const
static void write_dx(const std::vector< Patch< dim, spacedim > > &patches, const std::vector< std::string > &data_names, const std::vector< std_cxx1x::tuple< unsigned int, unsigned int, std::string > > &vector_data_ranges, const DXFlags &flags, std::ostream &out)
void parse_parameters(const ParameterHandler &prm) const
std::string indent(const unsigned int indent_level) const
Small function to create indentation for XML file.
void parse_parameters(const ParameterHandler &prm) const
static void write_vtu(const std::vector< Patch< dim, spacedim > > &patches, const std::vector< std::string > &data_names, const std::vector< std_cxx1x::tuple< unsigned int, unsigned int, std::string > > &vector_data_ranges, const VtkFlags &flags, std::ostream &out)
void write_povray(std::ostream &out) const
std::map< unsigned int, unsigned int > filtered_points
Map of actual point index to internal point index.
void fill_cell_data(const unsigned int &local_node_offset, std::vector< unsigned int > &cell_data) const
DeclException4(ExcIncompatibleDimensions, int, int, int, int,<< "Either the dimensions <"<< arg1<< "> and <"<< arg2<< "> or the space dimensions <"<< arg3<< "> and <"<< arg4<< "> do not match!")
static RgbValues reverse_grey_scale_color_function(const double value, const double min_value, const double max_value)
std::string get_xdmf_content(const unsigned int indent_level) const
void write_data_set(const std::string &name, const unsigned int &dimension, const unsigned int &set_num, const Table< 2, double > &data_vectors)
OutputFormat default_fmt
UcdFlags(const bool write_preamble=false)
void parse_parameters(const ParameterHandler &prm)
void parse_parameters(const ParameterHandler &prm) const
unsigned int neighbors[dim > 0?GeometryInfo< dim >::faces_per_cell:1]
void write_deal_II_intermediate(std::ostream &out) const
void set_default_format(const OutputFormat default_format)
void write_gmv(std::ostream &out) const
static void write_tecplot_binary(const std::vector< Patch< dim, spacedim > > &patches, const std::vector< std::string > &data_names, const std::vector< std_cxx1x::tuple< unsigned int, unsigned int, std::string > > &vector_data_ranges, const TecplotFlags &flags, std::ostream &out)
Table< 2, float > data
unsigned int height_vector
static void write_gmv_reorder_data_vectors(const std::vector< Patch< dim, spacedim > > &patches, Table< 2, double > &data_vectors)
static void write_gmv(const std::vector< Patch< dim, spacedim > > &patches, const std::vector< std::string > &data_names, const std::vector< std_cxx1x::tuple< unsigned int, unsigned int, std::string > > &vector_data_ranges, const GmvFlags &flags, std::ostream &out)
static void declare_parameters(ParameterHandler &prm)