Reference documentation for deal.II version 9.1.0-pre
grid_out.h
1 // ---------------------------------------------------------------------
2 //
3 // Copyright (C) 1999 - 2018 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_grid_out_h
17 #define dealii_grid_out_h
18 
19 
20 
21 #include <deal.II/base/config.h>
22 
23 #include <deal.II/base/data_out_base.h>
24 #include <deal.II/base/exceptions.h>
25 #include <deal.II/base/point.h>
26 
27 #include <string>
28 
29 DEAL_II_NAMESPACE_OPEN
30 
31 class ParameterHandler;
32 template <int dim, int spacedim>
33 class Triangulation;
34 template <int dim, int spacedim>
35 class Mapping;
36 
37 
46 namespace GridOutFlags
47 {
53  struct DX
54  {
59 
64 
69 
74 
80 
84  DX(const bool write_cells = true,
85  const bool write_faces = false,
86  const bool write_diameter = false,
87  const bool write_measure = false,
88  const bool write_all_faces = true);
89 
93  static void
95 
99  void
101  };
102 
108  struct Msh
109  {
138 
142  Msh(const bool write_faces = false, const bool write_lines = false);
146  static void
148 
152  void
154  };
155 
156 
162  struct Ucd
163  {
174 
188 
204 
208  Ucd(const bool write_preamble = false,
209  const bool write_faces = false,
210  const bool write_lines = false);
211 
215  static void
217 
221  void
223  };
224 
225 
231  struct Gnuplot
232  {
243 
251 
262  DEAL_II_DEPRECATED unsigned int &n_boundary_face_points;
263 
269 
282 
286  Gnuplot(const bool write_cell_number = false,
287  const unsigned int n_extra_curved_line_points = 2,
288  const bool curved_inner_cells = false,
289  const bool write_additional_boundary_lines = true);
290 
295  Gnuplot(const Gnuplot &flags);
296 
301  Gnuplot &
302  operator=(const Gnuplot &flags);
303 
307  static void
309 
313  void
315  };
316 
329  {
335  enum SizeType
336  {
344  height
345  };
346 
351 
359  unsigned int size;
360 
364  double line_width;
365 
373 
385 
393 
397  EpsFlagsBase(const SizeType size_type = width,
398  const unsigned int size = 300,
399  const double line_width = 0.5,
400  const bool color_lines_on_user_flag = false,
401  const unsigned int n_boundary_face_points = 2,
402  const bool color_lines_level = false);
406  static void
408 
412  void
414  };
415 
416 
427  template <int dim>
428  struct Eps
429  {};
430 
436  template <>
437  struct Eps<1> : public EpsFlagsBase
438  {
442  Eps(const SizeType size_type = width,
443  const unsigned int size = 300,
444  const double line_width = 0.5,
445  const bool color_lines_on_user_flag = false,
446  const unsigned int n_boundary_face_points = 2);
450  static void
452 
456  void
458  };
459 
460 
466  template <>
467  struct Eps<2> : public EpsFlagsBase
468  {
486 
492 
496  Eps(const SizeType size_type = width,
497  const unsigned int size = 300,
498  const double line_width = 0.5,
499  const bool color_lines_on_user_flag = false,
500  const unsigned int n_boundary_face_points = 2,
501  const bool write_cell_numbers = false,
502  const bool write_cell_number_level = true,
503  const bool write_vertex_numbers = false,
504  const bool color_lines_level = false);
508  static void
510 
514  void
516  };
517 
523  template <>
524  struct Eps<3> : public EpsFlagsBase
525  {
531  double azimut_angle;
532 
541  double turn_angle;
542 
546  Eps(const SizeType size_type = width,
547  const unsigned int size = 300,
548  const double line_width = 0.5,
549  const bool color_lines_on_user_flag = false,
550  const unsigned int n_boundary_face_points = 2,
551  const double azimut_angle = 60,
552  const double turn_angle = 30);
556  static void
558 
562  void
564  };
565 
571  struct XFig
572  {
577 
581  enum Coloring
582  {
590  level_subdomain_id
591  } color_by;
592 
600 
605 
610 
616 
623 
629 
636 
641 
646 
650  XFig();
654  static void
656 
660  void
662  };
663 
664 
670  struct Svg
671  {
674  unsigned int height;
677  unsigned int width;
679  unsigned int line_thickness;
682 
684  bool margin;
685 
690  {
698  };
699 
700  Background background;
701 
702  // View angles for the perspective view of the grid; Default is 0, 0 (top
703  // view).
712 
716  enum Coloring
717  {
727  level_subdomain_id
728  };
729 
730  Coloring coloring;
731 
735 
739 
752 
759 
763  Svg(const unsigned int line_thickness = 2,
764  const unsigned int boundary_line_thickness = 4,
765  bool margin = true,
766  const Background background = white,
767  const int azimuth_angle = 0,
768  const int polar_angle = 0,
769  const Coloring coloring = level_number,
770  const bool convert_level_number_to_height = false,
771  const bool label_level_number = true,
772  const bool label_cell_index = true,
773  const bool label_material_id = false,
774  const bool label_subdomain_id = false,
775  const bool draw_colorbar = true,
776  const bool draw_legend = true);
777  };
778 
784  struct MathGL
785  {
789  MathGL();
790 
795 
799  static void
801 
805  void
807  };
808 
809 
816  struct Vtk : public DataOutBase::VtkFlags
817  {};
818 
819 
826  struct Vtu : public DataOutBase::VtkFlags
827  {};
828 } // namespace GridOutFlags
829 
830 
831 
907 class GridOut
908 {
909 public:
916  {
920  dx,
938  vtu
939  };
940 
944  GridOut();
945 
954  template <int dim, int spacedim>
955  void
956  write_dx(const Triangulation<dim, spacedim> &tria, std::ostream &out) const;
957 
988  template <int dim, int spacedim>
989  void
990  write_gnuplot(const Triangulation<dim, spacedim> &tria,
991  std::ostream & out,
992  const Mapping<dim, spacedim> * mapping = nullptr) const;
993 
1012  template <int dim, int spacedim>
1013  void
1014  write_msh(const Triangulation<dim, spacedim> &tria, std::ostream &out) const;
1015 
1035  template <int dim, int spacedim>
1036  void
1037  write_ucd(const Triangulation<dim, spacedim> &tria, std::ostream &out) const;
1038 
1068  template <int dim, int spacedim>
1069  void
1070  write_eps(const Triangulation<dim, spacedim> &tria,
1071  std::ostream & out,
1072  const Mapping<dim, spacedim> * mapping = nullptr) const;
1073 
1092  template <int dim, int spacedim>
1093  void
1094  write_xfig(const Triangulation<dim, spacedim> &tria,
1095  std::ostream & out,
1096  const Mapping<dim, spacedim> * mapping = nullptr) const;
1097 
1116  void
1117  write_svg(const Triangulation<2, 2> &tria, std::ostream &out) const;
1118 
1124  template <int dim, int spacedim>
1125  void
1126  write_svg(const Triangulation<dim, spacedim> &tria, std::ostream &out) const;
1127 
1128 
1143  template <int dim, int spacedim>
1144  void
1145  write_mathgl(const Triangulation<dim, spacedim> &tria,
1146  std::ostream & out) const;
1147 
1165  template <int dim, int spacedim>
1166  void
1167  write_vtk(const Triangulation<dim, spacedim> &tria, std::ostream &out) const;
1168 
1186  template <int dim, int spacedim>
1187  void
1188  write_vtu(const Triangulation<dim, spacedim> &tria, std::ostream &out) const;
1189 
1220  template <int dim, int spacedim>
1221  void
1222  write_mesh_per_processor_as_vtu(const Triangulation<dim, spacedim> &tria,
1223  const std::string &filename_without_extension,
1224  const bool view_levels = false,
1225  const bool include_artificial = false) const;
1226 
1231  template <int dim, int spacedim>
1232  void
1233  write(const Triangulation<dim, spacedim> &tria,
1234  std::ostream & out,
1235  const OutputFormat output_format,
1236  const Mapping<dim, spacedim> * mapping = nullptr) const;
1237 
1241  template <int dim, int spacedim>
1242  void
1243  write(const Triangulation<dim, spacedim> &tria,
1244  std::ostream & out,
1245  const Mapping<dim, spacedim> * mapping = nullptr) const;
1246 
1250  void
1251  set_flags(const GridOutFlags::DX &flags);
1252 
1256  void
1257  set_flags(const GridOutFlags::Msh &flags);
1258 
1262  void
1263  set_flags(const GridOutFlags::Ucd &flags);
1264 
1268  void
1269  set_flags(const GridOutFlags::Gnuplot &flags);
1270 
1274  void
1275  set_flags(const GridOutFlags::Eps<1> &flags);
1276 
1280  void
1281  set_flags(const GridOutFlags::Eps<2> &flags);
1282 
1286  void
1287  set_flags(const GridOutFlags::Eps<3> &flags);
1288 
1292  void
1293  set_flags(const GridOutFlags::XFig &flags);
1294 
1298  void
1299  set_flags(const GridOutFlags::Svg &flags);
1300 
1304  void
1305  set_flags(const GridOutFlags::MathGL &flags);
1306 
1310  void
1311  set_flags(const GridOutFlags::Vtk &flags);
1312 
1316  void
1317  set_flags(const GridOutFlags::Vtu &flags);
1318 
1333  static std::string
1334  default_suffix(const OutputFormat output_format);
1335 
1340  std::string
1341  default_suffix() const;
1342 
1356  static OutputFormat
1357  parse_output_format(const std::string &format_name);
1358 
1364  static std::string
1365  get_output_format_names();
1366 
1370  static void
1372 
1376  void
1378 
1383  std::size_t
1384  memory_consumption() const;
1385 
1390 
1391 private:
1396 
1401 
1407 
1413 
1419 
1425 
1431 
1437 
1442 
1447 
1452 
1457 
1462 
1488  template <int dim, int spacedim>
1489  unsigned int
1490  write_msh_faces(const Triangulation<dim, spacedim> &tria,
1491  const unsigned int next_element_index,
1492  std::ostream & out) const;
1493 
1497  unsigned int
1498  write_msh_faces(const Triangulation<1, 1> &tria,
1499  const unsigned int next_element_index,
1500  std::ostream & out) const;
1505  unsigned int
1506  write_msh_faces(const Triangulation<1, 2> &tria,
1507  const unsigned int next_element_index,
1508  std::ostream & out) const;
1509  unsigned int
1510  write_msh_faces(const Triangulation<1, 3> &tria,
1511  const unsigned int next_element_index,
1512  std::ostream & out) const;
1513 
1514 
1515 
1541  template <int dim, int spacedim>
1542  unsigned int
1543  write_msh_lines(const Triangulation<dim, spacedim> &tria,
1544  const unsigned int next_element_index,
1545  std::ostream & out) const;
1546 
1550  unsigned int
1551  write_msh_lines(const Triangulation<1, 1> &tria,
1552  const unsigned int next_element_index,
1553  std::ostream & out) const;
1554 
1559  unsigned int
1560  write_msh_lines(const Triangulation<1, 2> &tria,
1561  const unsigned int next_element_index,
1562  std::ostream & out) const;
1563  unsigned int
1564  write_msh_lines(const Triangulation<1, 3> &tria,
1565  const unsigned int next_element_index,
1566  std::ostream & out) const;
1570  unsigned int
1571  write_msh_lines(const Triangulation<2, 2> &tria,
1572  const unsigned int next_element_index,
1573  std::ostream & out) const;
1578  unsigned int
1579  write_msh_lines(const Triangulation<2, 3> &tria,
1580  const unsigned int next_element_index,
1581  std::ostream & out) const;
1582 
1608  template <int dim, int spacedim>
1609  unsigned int
1610  write_ucd_faces(const Triangulation<dim, spacedim> &tria,
1611  const unsigned int next_element_index,
1612  std::ostream & out) const;
1613 
1617  unsigned int
1618  write_ucd_faces(const Triangulation<1, 1> &tria,
1619  const unsigned int next_element_index,
1620  std::ostream & out) const;
1621 
1626  unsigned int
1627  write_ucd_faces(const Triangulation<1, 2> &tria,
1628  const unsigned int next_element_index,
1629  std::ostream & out) const;
1630  unsigned int
1631  write_ucd_faces(const Triangulation<1, 3> &tria,
1632  const unsigned int next_element_index,
1633  std::ostream & out) const;
1634 
1635 
1661  template <int dim, int spacedim>
1662  unsigned int
1663  write_ucd_lines(const Triangulation<dim, spacedim> &tria,
1664  const unsigned int next_element_index,
1665  std::ostream & out) const;
1666 
1670  unsigned int
1671  write_ucd_lines(const Triangulation<1, 1> &tria,
1672  const unsigned int next_element_index,
1673  std::ostream & out) const;
1678  unsigned int
1679  write_ucd_lines(const Triangulation<1, 2> &tria,
1680  const unsigned int next_element_index,
1681  std::ostream & out) const;
1682  unsigned int
1683  write_ucd_lines(const Triangulation<1, 3> &tria,
1684  const unsigned int next_element_index,
1685  std::ostream & out) const;
1686 
1687 
1691  unsigned int
1692  write_ucd_lines(const Triangulation<2, 2> &tria,
1693  const unsigned int next_element_index,
1694  std::ostream & out) const;
1699  unsigned int
1700  write_ucd_lines(const Triangulation<2, 3> &tria,
1701  const unsigned int next_element_index,
1702  std::ostream & out) const;
1703 
1704 
1715  static Point<2> svg_project_point(Point<3> point,
1716  Point<3> camera_position,
1717  Point<3> camera_direction,
1718  Point<3> camera_horizontal,
1719  float camera_focus);
1720 
1733  template <int dim, int spacedim>
1734  unsigned int
1735  n_boundary_faces(const Triangulation<dim, spacedim> &tria) const;
1736 
1741  unsigned int
1742  n_boundary_faces(const Triangulation<1, 1> &tria) const;
1743 
1748  unsigned int
1749  n_boundary_faces(const Triangulation<1, 2> &tria) const;
1750  unsigned int
1751  n_boundary_faces(const Triangulation<1, 3> &tria) const;
1752 
1765  template <int dim, int spacedim>
1766  unsigned int
1767  n_boundary_lines(const Triangulation<dim, spacedim> &tria) const;
1768 
1773  unsigned int
1774  n_boundary_lines(const Triangulation<1, 1> &tria) const;
1775 
1780  unsigned int
1781  n_boundary_lines(const Triangulation<1, 2> &tria) const;
1782  unsigned int
1783  n_boundary_lines(const Triangulation<1, 3> &tria) const;
1784 
1789  unsigned int
1790  n_boundary_lines(const Triangulation<2, 2> &tria) const;
1795  unsigned int
1796  n_boundary_lines(const Triangulation<2, 3> &tria) const;
1797 };
1798 
1799 
1800 
1801 DEAL_II_NAMESPACE_CLOSE
1802 
1803 #endif
Use white background.
Definition: grid_out.h:694
OutputFormat default_format
Definition: grid_out.h:1395
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:47
bool margin
Margin around the plotted area.
Definition: grid_out.h:684
bool write_cells
Definition: grid_out.h:58
write() calls write_dx()
Definition: grid_out.h:920
bool write_additional_boundary_lines
Definition: grid_out.h:281
unsigned int n_boundary_face_points
Definition: grid_out.h:604
No cell coloring.
Definition: grid_out.h:719
GridOutFlags::Eps< 2 > eps_flags_2
Definition: grid_out.h:1430
unsigned int height
Definition: grid_out.h:674
OutputFormat
Definition: grid_out.h:915
Use transparent value of SVG.
Definition: grid_out.h:692
Convert the level number into the cell color.
Definition: grid_out.h:723
write() calls write_eps()
Definition: grid_out.h:924
unsigned int line_thickness
Thickness of the lines between cells.
Definition: grid_out.h:679
bool convert_level_number_to_height
Definition: grid_out.h:734
bool write_diameter
Definition: grid_out.h:68
unsigned int boundary_line_thickness
Thickness of lines at the boundary.
Definition: grid_out.h:681
void parse_parameters(ParameterHandler &param)
Definition: grid_out.cc:88
unsigned int n_extra_curved_line_points
Definition: grid_out.h:250
bool write_all_faces
Definition: grid_out.h:79
write() calls write_ucd()
Definition: grid_out.h:926
GridOutFlags::Vtk vtk_flags
Definition: grid_out.h:1456
Point< 2 > scaling
Definition: grid_out.h:609
bool label_cell_index
Write cell index into each cell. Defaults to true.
Definition: grid_out.h:745
GridOutFlags::Gnuplot gnuplot_flags
Definition: grid_out.h:1418
static::ExceptionBase & ExcInvalidState()
Convert the global subdomain id into the cell color.
Definition: grid_out.h:588
unsigned int & n_boundary_face_points
Definition: grid_out.h:262
Convert the material id into the cell color.
Definition: grid_out.h:584
GridOutFlags::MathGL mathgl_flags
Definition: grid_out.h:1451
write() calls write_mathgl()
Definition: grid_out.h:934
GridOutFlags::DX dx_flags
Definition: grid_out.h:1400
GridOutFlags::Msh msh_flags
Definition: grid_out.h:1406
GridOutFlags::Eps< 1 > eps_flags_1
Definition: grid_out.h:1424
write() calls write_gnuplot()
Definition: grid_out.h:922
bool label_material_id
Write material id of each cell. Defaults to false.
Definition: grid_out.h:747
Abstract base class for mapping classes.
Definition: dof_tools.h:57
GridOutFlags::XFig xfig_flags
Definition: grid_out.h:1441
bool label_subdomain_id
Write subdomain id of each cell. Defaults to false.
Definition: grid_out.h:749
#define DeclException0(Exception0)
Definition: exceptions.h:385
bool label_level_subdomain_id
Write level subdomain id of each cell. Defaults to false.
Definition: grid_out.h:751
Convert the subdomain id into the cell color.
Definition: grid_out.h:725
GridOutFlags::Ucd ucd_flags
Definition: grid_out.h:1412
Do nothing in write()
Definition: grid_out.h:918
float cell_font_scaling
Scaling of the font for cell annotations. Defaults to 1.
Definition: grid_out.h:741
write() calls write_xfig()
Definition: grid_out.h:928
bool write_faces
Definition: grid_out.h:63
Convert the level into the cell color.
Definition: grid_out.h:586
unsigned int n_boundary_face_points
Definition: grid_out.h:384
Point< 2 > offset
Definition: grid_out.h:615
write() calls write_msh()
Definition: grid_out.h:930
write() calls write_svg()
Definition: grid_out.h:932
GridOutFlags::Svg svg_flags
Definition: grid_out.h:1446
bool write_measure
Definition: grid_out.h:73
Convert the material id into the cell color (default)
Definition: grid_out.h:721
float level_height_factor
Definition: grid_out.h:738
GridOutFlags::Eps< 3 > eps_flags_3
Definition: grid_out.h:1436
static void declare_parameters(ParameterHandler &param)
Definition: grid_out.cc:60
bool label_level_number
Write level number into each cell. Defaults to true.
Definition: grid_out.h:743
GridOutFlags::Vtu vtu_flags
Definition: grid_out.h:1461
unsigned int width
Definition: grid_out.h:677
write() calls write_vtk()
Definition: grid_out.h:936