Reference documentation for deal.II version 8.4.2
grid_out.h
1 // ---------------------------------------------------------------------
2 //
3 // Copyright (C) 1999 - 2016 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 at
12 // the top level of the deal.II distribution.
13 //
14 // ---------------------------------------------------------------------
15 
16 #ifndef dealii__grid_out_h
17 #define dealii__grid_out_h
18 
19 
20 
21 #include <deal.II/base/config.h>
22 #include <deal.II/base/exceptions.h>
23 #include <deal.II/base/point.h>
24 #include <deal.II/base/data_out_base.h>
25 #include <deal.II/grid/tria.h>
26 #include <deal.II/fe/mapping.h>
27 
28 #include <string>
29 
30 DEAL_II_NAMESPACE_OPEN
31 
32 class ParameterHandler;
33 template <int dim, int spacedim> class Triangulation;
34 template <int dim, int spacedim> class Mapping;
35 
36 
45 namespace GridOutFlags
46 {
52  struct DX
53  {
58 
63 
68 
73 
79 
83  DX (const bool write_cells = true,
84  const bool write_faces = false,
85  const bool write_diameter = false,
86  const bool write_measure = false,
87  const bool write_all_faces = true);
88 
92  static void declare_parameters (ParameterHandler &param);
93 
97  void parse_parameters (ParameterHandler &param);
98  };
99 
105  struct Msh
106  {
135 
139  Msh (const bool write_faces = false,
140  const bool write_lines = false);
144  static void declare_parameters (ParameterHandler &param);
145 
149  void parse_parameters (ParameterHandler &param);
150  };
151 
152 
158  struct Ucd
159  {
170 
184 
200 
204  Ucd (const bool write_preamble = false,
205  const bool write_faces = false,
206  const bool write_lines = false);
207 
211  static void declare_parameters (ParameterHandler &param);
212 
216  void parse_parameters (ParameterHandler &param);
217  };
218 
219 
225  struct Gnuplot
226  {
237 
245 
252 
256  Gnuplot (const bool write_cell_number = false,
257  const unsigned int n_boundary_face_points = 2,
258  const bool curved_inner_cells = false);
262  static void declare_parameters (ParameterHandler &param);
263 
267  void parse_parameters (ParameterHandler &param);
268  };
269 
282  {
288  enum SizeType
289  {
290  width, height
291  };
292 
297 
305  unsigned int size;
306 
310  double line_width;
311 
319 
331 
339 
343  EpsFlagsBase (const SizeType size_type = width,
344  const unsigned int size = 300,
345  const double line_width = 0.5,
346  const bool color_lines_on_user_flag = false,
347  const unsigned int n_boundary_face_points = 2,
348  const bool color_lines_level = false);
352  static void declare_parameters (ParameterHandler &param);
353 
357  void parse_parameters (ParameterHandler &param);
358  };
359 
360 
371  template <int dim>
372  struct Eps
373  {};
374 
380  template <>
381  struct Eps<1> : public EpsFlagsBase
382  {
386  Eps (const SizeType size_type = width,
387  const unsigned int size = 300,
388  const double line_width = 0.5,
389  const bool color_lines_on_user_flag = false,
390  const unsigned int n_boundary_face_points = 2);
394  static void declare_parameters (ParameterHandler &param);
395 
399  void parse_parameters (ParameterHandler &param);
400  };
401 
402 
408  template <>
409  struct Eps<2> : public EpsFlagsBase
410  {
428 
434 
438  Eps (const SizeType size_type = width,
439  const unsigned int size = 300,
440  const double line_width = 0.5,
441  const bool color_lines_on_user_flag = false,
442  const unsigned int n_boundary_face_points = 2,
443  const bool write_cell_numbers = false,
444  const bool write_cell_number_level = true,
445  const bool write_vertex_numbers = false,
446  const bool color_lines_level = false);
450  static void declare_parameters (ParameterHandler &param);
451 
455  void parse_parameters (ParameterHandler &param);
456  };
457 
463  template <>
464  struct Eps<3> : public EpsFlagsBase
465  {
471  double azimut_angle;
472 
481  double turn_angle;
482 
486  Eps (const SizeType size_type = width,
487  const unsigned int size = 300,
488  const double line_width = 0.5,
489  const bool color_lines_on_user_flag = false,
490  const unsigned int n_boundary_face_points = 2,
491  const double azimut_angle = 60,
492  const double turn_angle = 30);
496  static void declare_parameters (ParameterHandler &param);
497 
501  void parse_parameters (ParameterHandler &param);
502  };
503 
509  struct XFig
510  {
515 
519  enum Coloring
520  {
528  level_subdomain_id
529  } color_by;
530 
538 
543 
548 
554 
561 
567 
574 
579 
584 
588  XFig();
592  static void declare_parameters (ParameterHandler &param);
593 
597  void parse_parameters (ParameterHandler &param);
598  };
599 
600 
606  struct Svg
607  {
609  unsigned int height;
611  unsigned int width;
613  unsigned int line_thickness;
616 
618  bool margin;
619 
624  {
631  };
632 
633  Background background;
634 
635  // View angles for the perspective view of the grid; Default is 0, 0 (top view).
644 
648  enum Coloring
649  {
659  level_subdomain_id
660  };
661 
662  Coloring coloring;
663 
666 
669 
682 
687 
691  Svg(const unsigned int line_thickness = 2,
692  const unsigned int boundary_line_thickness = 4,
693  bool margin = true,
694  const Background background = white,
695  const int azimuth_angle = 0,
696  const int polar_angle = 0,
697  const Coloring coloring = level_number,
698  const bool convert_level_number_to_height = false,
699  const bool label_level_number = true,
700  const bool label_cell_index = true,
701  const bool label_material_id = false,
702  const bool label_subdomain_id = false,
703  const bool draw_colorbar = true,
704  const bool draw_legend = true);
705  };
706 
712  struct MathGL
713  {
717  MathGL ();
718 
723 
727  static void declare_parameters (ParameterHandler &param);
728 
732  void parse_parameters (ParameterHandler &param);
733  };
734 
735 
742  struct Vtk : public DataOutBase::VtkFlags
743  {};
744 
745 
752  struct Vtu : public DataOutBase::VtkFlags
753  {};
754 }
755 
756 
757 
832 class GridOut
833 {
834 public:
841  {
845  dx,
863  vtu
864  };
865 
869  GridOut ();
870 
879  template <int dim, int spacedim>
880  void write_dx (const Triangulation<dim,spacedim> &tria,
881  std::ostream &out) const;
882 
914  template <int dim, int spacedim>
915  void write_gnuplot (const Triangulation<dim,spacedim> &tria,
916  std::ostream &out,
917  const Mapping<dim,spacedim> *mapping=0) const;
918 
937  template <int dim, int spacedim>
938  void write_msh (const Triangulation<dim,spacedim> &tria,
939  std::ostream &out) const;
940 
960  template <int dim, int spacedim>
961  void write_ucd (const Triangulation<dim,spacedim> &tria,
962  std::ostream &out) const;
963 
993  template <int dim, int spacedim>
994  void write_eps (const Triangulation<dim, spacedim> &tria,
995  std::ostream &out,
996  const Mapping<dim, spacedim> *mapping=0) const;
997 
1016  template <int dim, int spacedim>
1017  void write_xfig (const Triangulation<dim, spacedim> &tria,
1018  std::ostream &out,
1019  const Mapping<dim, spacedim> *mapping=0) const;
1020 
1039  void write_svg (const Triangulation<2,2> &tria,
1040  std::ostream &out) const;
1041 
1047  template <int dim, int spacedim>
1048  void write_svg (const Triangulation<dim,spacedim> &tria,
1049  std::ostream &out) const;
1050 
1051 
1066  template <int dim, int spacedim>
1067  void write_mathgl (const Triangulation<dim, spacedim> &tria,
1068  std::ostream &out) const;
1069 
1073  template <int dim, int spacedim>
1074  void write_vtk (const Triangulation<dim,spacedim> &tria,
1075  std::ostream &out) const;
1076 
1080  template <int dim, int spacedim>
1081  void write_vtu (const Triangulation<dim,spacedim> &tria,
1082  std::ostream &out) const;
1083 
1088  template <int dim, int spacedim>
1089  void write (const Triangulation<dim,spacedim> &tria,
1090  std::ostream &out,
1091  const OutputFormat output_format,
1092  const Mapping<dim,spacedim> *mapping=0) const;
1093 
1097  template <int dim, int spacedim>
1098  void write (const Triangulation<dim,spacedim> &tria,
1099  std::ostream &out,
1100  const Mapping<dim,spacedim> *mapping=0) const;
1101 
1105  void set_flags (const GridOutFlags::DX &flags);
1106 
1110  void set_flags (const GridOutFlags::Msh &flags);
1111 
1115  void set_flags (const GridOutFlags::Ucd &flags);
1116 
1120  void set_flags (const GridOutFlags::Gnuplot &flags);
1121 
1125  void set_flags (const GridOutFlags::Eps<1> &flags);
1126 
1130  void set_flags (const GridOutFlags::Eps<2> &flags);
1131 
1135  void set_flags (const GridOutFlags::Eps<3> &flags);
1136 
1140  void set_flags (const GridOutFlags::XFig &flags);
1141 
1145  void set_flags (const GridOutFlags::Svg &flags);
1146 
1150  void set_flags (const GridOutFlags::MathGL &flags);
1151 
1155  void set_flags (const GridOutFlags::Vtk &flags);
1156 
1160  void set_flags (const GridOutFlags::Vtu &flags);
1161 
1176  static std::string default_suffix (const OutputFormat output_format);
1177 
1182  std::string default_suffix () const;
1183 
1197  static OutputFormat parse_output_format (const std::string &format_name);
1198 
1204  static std::string get_output_format_names ();
1205 
1209  static void declare_parameters (ParameterHandler &param);
1210 
1214  void parse_parameters (ParameterHandler &param);
1215 
1220  std::size_t memory_consumption () const;
1221 
1225  DeclException0 (ExcInvalidState);
1226 
1227 private:
1232 
1237 
1243 
1249 
1255 
1261 
1267 
1273 
1278 
1283 
1288 
1293 
1298 
1324  template <int dim, int spacedim>
1325  unsigned int
1326  write_msh_faces (const Triangulation<dim,spacedim> &tria,
1327  const unsigned int next_element_index,
1328  std::ostream &out) const;
1329 
1333  unsigned int
1334  write_msh_faces (const Triangulation<1,1> &tria,
1335  const unsigned int next_element_index,
1336  std::ostream &out) const;
1341  unsigned int
1342  write_msh_faces (const Triangulation<1,2> &tria,
1343  const unsigned int next_element_index,
1344  std::ostream &out) const;
1345  unsigned int
1346  write_msh_faces (const Triangulation<1,3> &tria,
1347  const unsigned int next_element_index,
1348  std::ostream &out) const;
1349 
1350 
1351 
1377  template <int dim, int spacedim>
1378  unsigned int
1379  write_msh_lines (const Triangulation<dim,spacedim> &tria,
1380  const unsigned int next_element_index,
1381  std::ostream &out) const;
1382 
1386  unsigned int
1387  write_msh_lines (const Triangulation<1,1> &tria,
1388  const unsigned int next_element_index,
1389  std::ostream &out) const;
1390 
1395  unsigned int
1396  write_msh_lines (const Triangulation<1,2> &tria,
1397  const unsigned int next_element_index,
1398  std::ostream &out) const;
1399  unsigned int
1400  write_msh_lines (const Triangulation<1,3> &tria,
1401  const unsigned int next_element_index,
1402  std::ostream &out) const;
1406  unsigned int
1407  write_msh_lines (const Triangulation<2,2> &tria,
1408  const unsigned int next_element_index,
1409  std::ostream &out) const;
1414  unsigned int
1415  write_msh_lines (const Triangulation<2,3> &tria,
1416  const unsigned int next_element_index,
1417  std::ostream &out) const;
1418 
1444  template <int dim, int spacedim>
1445  unsigned int
1446  write_ucd_faces (const Triangulation<dim,spacedim> &tria,
1447  const unsigned int next_element_index,
1448  std::ostream &out) const;
1449 
1453  unsigned int
1454  write_ucd_faces (const Triangulation<1,1> &tria,
1455  const unsigned int next_element_index,
1456  std::ostream &out) const;
1457 
1462  unsigned int
1463  write_ucd_faces (const Triangulation<1,2> &tria,
1464  const unsigned int next_element_index,
1465  std::ostream &out) const;
1466  unsigned int
1467  write_ucd_faces (const Triangulation<1,3> &tria,
1468  const unsigned int next_element_index,
1469  std::ostream &out) const;
1470 
1471 
1497  template <int dim, int spacedim>
1498  unsigned int
1499  write_ucd_lines (const Triangulation<dim,spacedim> &tria,
1500  const unsigned int next_element_index,
1501  std::ostream &out) const;
1502 
1506  unsigned int
1507  write_ucd_lines (const Triangulation<1,1> &tria,
1508  const unsigned int next_element_index,
1509  std::ostream &out) const;
1514  unsigned int
1515  write_ucd_lines (const Triangulation<1,2> &tria,
1516  const unsigned int next_element_index,
1517  std::ostream &out) const;
1518  unsigned int
1519  write_ucd_lines (const Triangulation<1,3> &tria,
1520  const unsigned int next_element_index,
1521  std::ostream &out) const;
1522 
1523 
1527  unsigned int
1528  write_ucd_lines (const Triangulation<2,2> &tria,
1529  const unsigned int next_element_index,
1530  std::ostream &out) const;
1535  unsigned int
1536  write_ucd_lines (const Triangulation<2,3> &tria,
1537  const unsigned int next_element_index,
1538  std::ostream &out) const;
1539 
1540 
1551  static Point<2> svg_project_point(Point<3> point,
1552  Point<3> camera_position,
1553  Point<3> camera_direction,
1554  Point<3> camera_horizontal,
1555  float camera_focus);
1556 
1569  template <int dim, int spacedim>
1570  unsigned int n_boundary_faces (const Triangulation<dim,spacedim> &tria) const;
1571 
1576  unsigned int n_boundary_faces (const Triangulation<1,1> &tria) const;
1577 
1582  unsigned int n_boundary_faces (const Triangulation<1,2> &tria) const;
1583  unsigned int n_boundary_faces (const Triangulation<1,3> &tria) const;
1584 
1597  template <int dim, int spacedim>
1598  unsigned int n_boundary_lines (const Triangulation<dim,spacedim> &tria) const;
1599 
1604  unsigned int n_boundary_lines (const Triangulation<1,1> &tria) const;
1605 
1610  unsigned int n_boundary_lines (const Triangulation<1,2> &tria) const;
1611  unsigned int n_boundary_lines (const Triangulation<1,3> &tria) const;
1612 
1617  unsigned int n_boundary_lines (const Triangulation<2,2> &tria) const;
1622  unsigned int n_boundary_lines (const Triangulation<2,3> &tria) const;
1623 };
1624 
1625 
1626 
1627 DEAL_II_NAMESPACE_CLOSE
1628 
1629 #endif
Use white background.
Definition: grid_out.h:628
OutputFormat default_format
Definition: grid_out.h:1231
DX(const bool write_cells=true, const bool write_faces=false, const bool write_diameter=false, const bool write_measure=false, const bool write_all_faces=true)
Definition: grid_out.cc:41
bool margin
Margin around the plotted area.
Definition: grid_out.h:618
bool write_cells
Definition: grid_out.h:57
write() calls write_dx()
Definition: grid_out.h:845
unsigned int n_boundary_face_points
Definition: grid_out.h:542
No cell coloring.
Definition: grid_out.h:651
GridOutFlags::Eps< 2 > eps_flags_2
Definition: grid_out.h:1266
unsigned int height
Height of the plot in SVG units, computed from width if zero. Defaults to 1000.
Definition: grid_out.h:609
OutputFormat
Definition: grid_out.h:840
bool draw_legend
Draw a legend next to the plotted grid, explaining the label of the cells.
Definition: grid_out.h:686
Use transparent value of SVG.
Definition: grid_out.h:626
Convert the level number into the cell color.
Definition: grid_out.h:655
write() calls write_eps()
Definition: grid_out.h:849
unsigned int line_thickness
Thickness of the lines between cells.
Definition: grid_out.h:613
unsigned int n_boundary_face_points
Definition: grid_out.h:244
bool convert_level_number_to_height
Interpret the level number of the cells as altitude over the x-y-plane (useful in the perspective vie...
Definition: grid_out.h:665
bool write_diameter
Definition: grid_out.h:67
unsigned int boundary_line_thickness
Thickness of lines at the boundary.
Definition: grid_out.h:615
void parse_parameters(ParameterHandler &param)
Definition: grid_out.cc:70
bool write_all_faces
Definition: grid_out.h:78
write() calls write_ucd()
Definition: grid_out.h:851
GridOutFlags::Vtk vtk_flags
Definition: grid_out.h:1292
Point< 2 > scaling
Definition: grid_out.h:547
bool label_cell_index
Write cell index into each cell. Defaults to true.
Definition: grid_out.h:675
GridOutFlags::Gnuplot gnuplot_flags
Definition: grid_out.h:1254
Convert the global subdomain id into the cell color.
Definition: grid_out.h:526
Convert the material id into the cell color.
Definition: grid_out.h:522
GridOutFlags::MathGL mathgl_flags
Definition: grid_out.h:1287
write() calls write_mathgl()
Definition: grid_out.h:859
GridOutFlags::DX dx_flags
Definition: grid_out.h:1236
GridOutFlags::Msh msh_flags
Definition: grid_out.h:1242
GridOutFlags::Eps< 1 > eps_flags_1
Definition: grid_out.h:1260
write() calls write_gnuplot()
Definition: grid_out.h:847
bool label_material_id
Write material id of each cell. Defaults to false.
Definition: grid_out.h:677
Abstract base class for mapping classes.
Definition: dof_tools.h:52
GridOutFlags::XFig xfig_flags
Definition: grid_out.h:1277
bool label_subdomain_id
Write subdomain id of each cell. Defaults to false.
Definition: grid_out.h:679
#define DeclException0(Exception0)
Definition: exceptions.h:522
bool label_level_subdomain_id
Write level subdomain id of each cell. Defaults to false.
Definition: grid_out.h:681
Convert the subdomain id into the cell color.
Definition: grid_out.h:657
GridOutFlags::Ucd ucd_flags
Definition: grid_out.h:1248
Do nothing in write()
Definition: grid_out.h:843
float cell_font_scaling
Scaling of the font for cell annotations. Defaults to 1.
Definition: grid_out.h:671
write() calls write_xfig()
Definition: grid_out.h:853
bool write_faces
Definition: grid_out.h:62
Convert the level into the cell color.
Definition: grid_out.h:524
unsigned int n_boundary_face_points
Definition: grid_out.h:330
Point< 2 > offset
Definition: grid_out.h:553
write() calls write_msh()
Definition: grid_out.h:855
write() calls write_svg()
Definition: grid_out.h:857
GridOutFlags::Svg svg_flags
Definition: grid_out.h:1282
bool write_measure
Definition: grid_out.h:72
Convert the material id into the cell color (default)
Definition: grid_out.h:653
float level_height_factor
The factor determining the vertical distance between levels (default = 0.3)
Definition: grid_out.h:668
GridOutFlags::Eps< 3 > eps_flags_3
Definition: grid_out.h:1272
static void declare_parameters(ParameterHandler &param)
Definition: grid_out.cc:53
bool label_level_number
Write level number into each cell. Defaults to true.
Definition: grid_out.h:673
bool draw_colorbar
Draw a colorbar next to the plotted grid with respect to the chosen coloring of the cells...
Definition: grid_out.h:684
GridOutFlags::Vtu vtu_flags
Definition: grid_out.h:1297
unsigned int width
The width of the plot. Computed automatically from height if zero (default)
Definition: grid_out.h:611
write() calls write_vtk()
Definition: grid_out.h:861