16 #ifndef dealii_data_out_base_h 17 #define dealii_data_out_base_h 20 #include <deal.II/base/config.h> 22 #include <deal.II/base/geometry_info.h> 23 #include <deal.II/base/mpi.h> 24 #include <deal.II/base/point.h> 25 #include <deal.II/base/table.h> 27 #include <deal.II/numerics/data_component_interpretation.h> 30 #include <boost/serialization/map.hpp> 40 #ifdef DEAL_II_HAVE_TECPLOT 48 DEAL_II_NAMESPACE_OPEN
245 template <
int dim,
int spacedim = dim>
370 <<
"It is not possible to have a structural dimension of " << arg1
371 <<
" to be larger than the space dimension of the surrounding" 372 <<
" space " << arg2);
395 template <
int spacedim>
516 <<
"It is not possible to have a structural dimension of " << arg1
517 <<
" to be larger than the space dimension of the surrounding" 518 <<
" space " << arg2);
534 template <
typename FlagsType>
568 template <
typename FlagsType>
574 template <
typename FlagsType>
580 template <
typename FlagsType>
584 return sizeof(FlagsType);
624 DXFlags(
const bool write_neighbors =
false,
625 const bool int_binary =
false,
626 const bool coordinates_binary =
false,
627 const bool data_binary =
false);
667 UcdFlags(
const bool write_preamble =
false);
702 GnuplotFlags(
const std::vector<std::string> &space_dimension_labels);
733 "There should be at least one space dimension per spatial " 734 "dimension (extras are ignored).");
771 const bool bicubic_patch =
false,
772 const bool external_data =
false);
951 const double min_value,
952 const double max_value);
971 default_color_function(
const double value,
972 const double min_value,
973 const double max_value);
981 grey_scale_color_function(
const double value,
982 const double min_value,
983 const double max_value);
992 reverse_grey_scale_color_function(
const double value,
993 const double min_value,
994 const double max_value);
999 EpsFlags(
const unsigned int height_vector = 0,
1000 const unsigned int color_vector = 0,
1002 const unsigned int size = 300,
1003 const double line_width = 0.5,
1004 const double azimut_angle = 60,
1005 const double turn_angle = 30,
1006 const double z_scaling = 1.0,
1007 const bool draw_mesh =
true,
1008 const bool draw_cells =
true,
1009 const bool shade_cells =
true,
1010 const ColorFunction color_function = &default_color_function);
1077 TecplotFlags(
const char * tecplot_binary_file_name =
nullptr,
1078 const char * zone_name =
nullptr,
1079 const double solution_time = -1.0);
1183 const double time = std::numeric_limits<double>::min(),
1184 const unsigned int cycle = std::numeric_limits<unsigned int>::min(),
1185 const bool print_date_and_time =
true,
1187 const bool write_higher_order_cells =
false);
1222 unsigned int line_thickness;
1237 SvgFlags(
const unsigned int height_vector = 0,
1238 const int azimuth_angle = 37,
1239 const int polar_angle = 45,
1240 const unsigned int line_thickness = 1,
1241 const bool margin =
true,
1242 const bool draw_colorbar =
true);
1291 const bool xdmf_hdf5_output =
false);
1359 write_point(
const unsigned int index,
const Point<dim> &p);
1366 write_cell(
const unsigned int index,
1367 const unsigned int start,
1368 const unsigned int d1,
1369 const unsigned int d2,
1370 const unsigned int d3);
1379 write_data_set(
const std::string & name,
1380 const unsigned int dimension,
1381 const unsigned int set_num,
1389 fill_node_data(std::vector<double> &node_data)
const;
1396 fill_cell_data(
const unsigned int local_node_offset,
1397 std::vector<unsigned int> &cell_data)
const;
1403 get_data_set_name(
const unsigned int set_num)
const;
1409 get_data_set_dim(
const unsigned int set_num)
const;
1416 get_data_set(
const unsigned int set_num)
const;
1437 n_data_sets()
const;
1475 return (one(0) < two(0) ||
1476 (!(two(0) < one(0)) &&
1477 (one(1) < two(1) || (!(two(1) < one(1)) && one(2) < two(2)))));
1481 using Map3DPoint = std::multimap<Point<3>,
unsigned int,
Point3Comp>;
1538 internal_add_cell(
const unsigned int cell_index,
1539 const unsigned int pt_index);
1632 template <
int dim,
int spacedim>
1633 DEAL_II_DEPRECATED
void 1636 const std::vector<std::string> & data_names,
1637 const std::vector<std::tuple<unsigned int, unsigned int, std::string>>
1638 & nonscalar_data_ranges,
1640 std::ostream & out);
1645 template <
int dim,
int spacedim>
1649 const std::vector<std::string> & data_names,
1651 std::tuple<
unsigned int,
1655 & nonscalar_data_ranges,
1657 std::ostream & out);
1664 template <
int spacedim>
1665 DEAL_II_DEPRECATED
void 1668 const std::vector<std::string> & data_names,
1669 const std::vector<std::tuple<unsigned int, unsigned int, std::string>>
1670 & nonscalar_data_ranges,
1672 std::ostream & out);
1681 template <
int dim,
int spacedim>
1682 DEAL_II_DEPRECATED
void 1685 const std::vector<std::string> & data_names,
1686 const std::vector<std::tuple<unsigned int, unsigned int, std::string>>
1687 & nonscalar_data_ranges,
1689 std::ostream & out);
1735 template <
int spacedim>
1739 const std::vector<std::string> & data_names,
1741 std::tuple<
unsigned int,
1745 & nonscalar_data_ranges,
1747 std::ostream & out);
1756 template <
int dim,
int spacedim>
1757 DEAL_II_DEPRECATED
void 1760 const std::vector<std::string> & data_names,
1761 const std::vector<std::tuple<unsigned int, unsigned int, std::string>>
1762 & nonscalar_data_ranges,
1764 std::ostream & out);
1771 template <
int dim,
int spacedim>
1775 const std::vector<std::string> & data_names,
1777 std::tuple<
unsigned int,
1781 & nonscalar_data_ranges,
1783 std::ostream & out);
1790 template <
int dim,
int spacedim>
1791 DEAL_II_DEPRECATED
void 1794 const std::vector<std::string> & data_names,
1795 const std::vector<std::tuple<unsigned int, unsigned int, std::string>>
1796 & nonscalar_data_ranges,
1798 std::ostream & out);
1809 template <
int dim,
int spacedim>
1813 const std::vector<std::string> & data_names,
1815 std::tuple<
unsigned int,
1819 & nonscalar_data_ranges,
1821 std::ostream & out);
1828 template <
int dim,
int spacedim>
1829 DEAL_II_DEPRECATED
void 1832 const std::vector<std::string> & data_names,
1833 const std::vector<std::tuple<unsigned int, unsigned int, std::string>>
1834 & nonscalar_data_ranges,
1836 std::ostream & out);
1894 template <
int dim,
int spacedim>
1898 const std::vector<std::string> & data_names,
1900 std::tuple<
unsigned int,
1904 & nonscalar_data_ranges,
1906 std::ostream & out);
1914 template <
int dim,
int spacedim>
1915 DEAL_II_DEPRECATED
void 1918 const std::vector<std::string> & data_names,
1919 const std::vector<std::tuple<unsigned int, unsigned int, std::string>>
1920 & nonscalar_data_ranges,
1922 std::ostream & out);
1969 template <
int dim,
int spacedim>
1973 const std::vector<std::string> & data_names,
1975 std::tuple<
unsigned int,
1979 & nonscalar_data_ranges,
1981 std::ostream & out);
1991 template <
int dim,
int spacedim>
1992 DEAL_II_DEPRECATED
void 1995 const std::vector<std::string> & data_names,
1996 const std::vector<std::tuple<unsigned int, unsigned int, std::string>>
1997 & nonscalar_data_ranges,
1999 std::ostream & out);
2007 template <
int dim,
int spacedim>
2011 const std::vector<std::string> & data_names,
2013 std::tuple<
unsigned int,
2017 & nonscalar_data_ranges,
2019 std::ostream & out);
2027 template <
int dim,
int spacedim>
2028 DEAL_II_DEPRECATED
void 2031 const std::vector<std::string> & data_names,
2032 const std::vector<std::tuple<unsigned int, unsigned int, std::string>>
2033 & nonscalar_data_ranges,
2035 std::ostream & out);
2058 template <
int dim,
int spacedim>
2059 DEAL_II_DEPRECATED
void 2062 const std::vector<std::string> & data_names,
2064 std::tuple<
unsigned int,
2068 & nonscalar_data_ranges,
2070 std::ostream & out);
2078 template <
int dim,
int spacedim>
2079 DEAL_II_DEPRECATED
void 2082 const std::vector<std::string> & data_names,
2083 const std::vector<std::tuple<unsigned int, unsigned int, std::string>>
2084 & nonscalar_data_ranges,
2086 std::ostream & out);
2102 template <
int dim,
int spacedim>
2106 const std::vector<std::string> & data_names,
2108 std::tuple<
unsigned int,
2112 & nonscalar_data_ranges,
2114 std::ostream & out);
2123 template <
int dim,
int spacedim>
2124 DEAL_II_DEPRECATED
void 2127 const std::vector<std::string> & data_names,
2128 const std::vector<std::tuple<unsigned int, unsigned int, std::string>>
2129 & nonscalar_data_ranges,
2131 std::ostream & out);
2152 template <
int dim,
int spacedim>
2156 const std::vector<std::string> & data_names,
2158 std::tuple<
unsigned int,
2162 & nonscalar_data_ranges,
2164 std::ostream & out);
2173 template <
int dim,
int spacedim>
2174 DEAL_II_DEPRECATED
void 2177 const std::vector<std::string> & data_names,
2178 const std::vector<std::tuple<unsigned int, unsigned int, std::string>>
2179 & nonscalar_data_ranges,
2181 std::ostream & out);
2206 template <
int dim,
int spacedim>
2210 const std::vector<std::string> & data_names,
2212 std::tuple<
unsigned int,
2216 & nonscalar_data_ranges,
2218 std::ostream & out);
2245 template <
int dim,
int spacedim>
2246 DEAL_II_DEPRECATED
void 2249 const std::vector<std::string> & data_names,
2250 const std::vector<std::tuple<unsigned int, unsigned int, std::string>>
2251 & nonscalar_data_ranges,
2253 std::ostream & out);
2261 template <
int dim,
int spacedim>
2265 const std::vector<std::string> & data_names,
2267 std::tuple<
unsigned int,
2271 & nonscalar_data_ranges,
2273 std::ostream & out);
2289 const std::vector<std::string> &piece_names,
2290 const std::vector<std::string> &data_names,
2291 const std::vector<std::tuple<unsigned int, unsigned int, std::string>>
2292 &nonscalar_data_ranges);
2338 const std::vector<std::string> &piece_names,
2339 const std::vector<std::string> &data_names,
2341 std::tuple<
unsigned int,
2345 &nonscalar_data_ranges);
2400 const std::vector<std::pair<double, std::string>> ×_and_names);
2415 const std::vector<std::string> &piece_names);
2446 const std::vector<std::vector<std::string>> &piece_names);
2483 const std::vector<std::pair<
double, std::vector<std::string>>>
2484 ×_and_piece_names);
2491 template <
int spacedim>
2492 DEAL_II_DEPRECATED
void 2495 const std::vector<std::string> & data_names,
2496 const std::vector<std::tuple<unsigned int, unsigned int, std::string>>
2497 & nonscalar_data_ranges,
2499 std::ostream & out);
2521 template <
int spacedim>
2525 const std::vector<std::string> & data_names,
2527 std::tuple<
unsigned int,
2531 & nonscalar_data_ranges,
2533 std::ostream & out);
2546 template <
int dim,
int spacedim>
2547 DEAL_II_DEPRECATED
void 2550 const std::vector<std::string> & data_names,
2551 const std::vector<std::tuple<unsigned int, unsigned int, std::string>>
2552 & nonscalar_data_ranges,
2554 std::ostream & out);
2593 template <
int dim,
int spacedim>
2597 const std::vector<std::string> & data_names,
2599 std::tuple<
unsigned int,
2603 & nonscalar_data_ranges,
2605 std::ostream & out);
2611 template <
int dim,
int spacedim>
2615 const std::string & filename,
2625 template <
int dim,
int spacedim>
2629 const bool write_mesh_file,
2630 const std::string & mesh_filename,
2631 const std::string &solution_filename,
2642 template <
int dim,
int spacedim>
2643 DEAL_II_DEPRECATED
void 2646 const std::vector<std::string> & data_names,
2647 const std::vector<std::tuple<unsigned int, unsigned int, std::string>>
2648 & nonscalar_data_ranges,
2657 template <
int dim,
int spacedim>
2661 const std::vector<std::string> & data_names,
2663 std::tuple<
unsigned int,
2667 & nonscalar_data_ranges,
2681 std::pair<unsigned int, unsigned int>
2740 <<
"The number of points in this data set is " << arg1
2741 <<
", but we expected " << arg2
2742 <<
" in each space direction.");
2747 "You are trying to write graphical data into a file, but " 2748 "no data is available in the intermediate format that " 2749 "the DataOutBase functions require. Did you forget to " 2750 "call a function such as DataOut::build_patches()?");
2755 "The error code of one of the Tecplot functions was " 2756 "not zero as expected.");
2762 <<
"There was an error opening Tecplot file " << arg1
2877 template <
int dim,
int spacedim = dim>
2992 write_vtu_in_parallel(
const std::string &filename, MPI_Comm comm)
const;
3029 const std::vector<std::string> &piece_names)
const;
3058 const std::string & h5_filename,
3059 const double cur_time,
3060 MPI_Comm comm)
const;
3069 const std::string & h5_mesh_filename,
3070 const std::string & h5_solution_filename,
3071 const double cur_time,
3072 MPI_Comm comm)
const;
3099 write_xdmf_file(
const std::vector<XDMFEntry> &entries,
3100 const std::string & filename,
3101 MPI_Comm comm)
const;
3119 const std::string & filename,
3120 MPI_Comm comm)
const;
3131 const bool write_mesh_file,
3132 const std::string & mesh_filename,
3133 const std::string & solution_filename,
3134 MPI_Comm comm)
const;
3155 write(std::ostream & out,
3171 template <
typename FlagType>
3173 set_flags(
const FlagType &flags);
3230 virtual const std::vector<DataOutBase::Patch<dim, spacedim>> &
3231 get_patches()
const = 0;
3237 virtual std::vector<std::string>
3238 get_dataset_names()
const = 0;
3248 virtual std::vector<std::tuple<unsigned int, unsigned int, std::string>>
3249 get_vector_data_ranges()
const;
3269 virtual std::vector<
3270 std::tuple<
unsigned int,
3274 get_nonscalar_data_ranges()
const;
3283 validate_dataset_names()
const;
3412 template <
int dim,
int spacedim = dim>
3422 read(std::istream &in);
3454 "You are trying to merge two sets of patches for which the " 3455 "declared names of the variables do not match.");
3460 "You are trying to merge two sets of patches for which the " 3461 "number of subdivisions or the number of vector components " 3471 <<
"Either the dimensions <" << arg1 <<
"> and <" << arg2
3472 <<
"> or the space dimensions <" << arg3 <<
"> and <" << arg4
3473 <<
"> do not match!");
3484 virtual const std::vector<::DataOutBase::Patch<dim, spacedim>> &
3485 get_patches()
const override;
3493 virtual std::vector<std::string>
3494 get_dataset_names()
const override;
3514 virtual std::vector<
3515 std::tuple<
unsigned int,
3519 get_nonscalar_data_ranges()
const override;
3526 std::vector<::DataOutBase::Patch<dim, spacedim>>
patches;
3527 std::vector<std::string> dataset_names;
3534 std::tuple<
unsigned int,
3565 const unsigned int nodes,
3566 const unsigned int cells,
3567 const unsigned int dim);
3573 XDMFEntry(
const std::string &mesh_filename,
3574 const std::string &solution_filename,
3576 const unsigned int nodes,
3577 const unsigned int cells,
3578 const unsigned int dim);
3583 XDMFEntry(
const std::string &mesh_filename,
3584 const std::string &solution_filename,
3586 const unsigned int nodes,
3587 const unsigned int cells,
3588 const unsigned int dim,
3589 const unsigned int spacedim);
3595 add_attribute(
const std::string &attr_name,
const unsigned int dimension);
3600 template <
class Archive>
3604 ar &valid &h5_sol_filename &h5_mesh_filename &entry_time &num_nodes
3605 &num_cells &dimension &space_dimension &attribute_dims;
3613 get_xdmf_content(
const unsigned int indent_level)
const;
3672 return (red == green) && (red == blue);
3686 template <
int dim,
int spacedim>
3688 operator<<(std::ostream &out, const Patch<dim, spacedim> &patch);
3700 template <
int dim,
int spacedim>
3706 DEAL_II_NAMESPACE_CLOSE
RgbValues(*)(const double value, const double min_value, const double max_value) ColorFunction
static const unsigned int invalid_unsigned_int
unsigned int space_dimension
Map3DPoint existing_points
static ::ExceptionBase & ExcIncompatiblePatchLists()
unsigned int height_vector
void write_vtu_footer(std::ostream &out)
static void declare_parameters(ParameterHandler &prm)
#define DeclException2(Exception2, type1, type2, outsequence)
std::size_t memory_consumption() const
void write_vtu_main(const std::vector< Patch< dim, spacedim >> &patches, const std::vector< std::string > &data_names, const std::vector< std::tuple< unsigned int, unsigned int, std::string >> &nonscalar_data_ranges, const VtkFlags &flags, std::ostream &out)
std::map< unsigned int, unsigned int > filtered_cells
void write_gmv(const std::vector< Patch< dim, spacedim >> &patches, const std::vector< std::string > &data_names, const std::vector< std::tuple< unsigned int, unsigned int, std::string >> &nonscalar_data_ranges, const GmvFlags &flags, std::ostream &out)
void write_visit_record(std::ostream &out, const std::vector< std::string > &piece_names)
std::pair< unsigned int, unsigned int > determine_intermediate_format_dimensions(std::istream &input)
void swap(Patch< dim, spacedim > &other_patch)
void write_vtu_header(std::ostream &out, const VtkFlags &flags)
void write_svg(const std::vector< Patch< 2, spacedim >> &patches, const std::vector< std::string > &data_names, const std::vector< std::tuple< unsigned int, unsigned int, std::string >> &nonscalar_data_ranges, const SvgFlags &flags, std::ostream &out)
std::vector< std::tuple< unsigned int, unsigned int, std::string, DataComponentInterpretation::DataComponentInterpretation > > nonscalar_data_ranges
void write_pvd_record(std::ostream &out, const std::vector< std::pair< double, std::string >> ×_and_names)
TableIndices< 2 > merge(const TableIndices< 2 > &previous_indices, const unsigned int new_index, const unsigned int position)
ZlibCompressionLevel compression_level
unsigned int default_subdivisions
std::vector< unsigned int > data_set_dims
Point< spacedim > vertices[GeometryInfo< dim >::vertices_per_cell]
bool filter_duplicate_vertices
std::vector< std::vector< double > > data_sets
std::map< std::string, unsigned int > attribute_dims
void write_filtered_data(const std::vector< Patch< dim, spacedim >> &patches, const std::vector< std::string > &data_names, const std::vector< std::tuple< unsigned int, unsigned int, std::string >> &nonscalar_data_ranges, DataOutFilter &filtered_data)
void write_hdf5_parallel(const std::vector< Patch< dim, spacedim >> &patches, const DataOutFilter &data_filter, const std::string &filename, MPI_Comm comm)
void write_tecplot(const std::vector< Patch< dim, spacedim >> &patches, const std::vector< std::string > &data_names, const std::vector< std::tuple< unsigned int, unsigned int, std::string >> &nonscalar_data_ranges, const TecplotFlags &flags, std::ostream &out)
const char * tecplot_binary_file_name
unsigned int neighbors[dim > 0 ? GeometryInfo< dim >::faces_per_cell :1]
void write_deal_II_intermediate(const std::vector< Patch< dim, spacedim >> &patches, const std::vector< std::string > &data_names, const std::vector< std::tuple< unsigned int, unsigned int, std::string >> &nonscalar_data_ranges, const Deal_II_IntermediateFlags &flags, std::ostream &out)
static ::ExceptionBase & ExcNoPatches()
DataOutBase::PovrayFlags povray_flags
static ::ExceptionBase & ExcIncompatibleDatasetNames()
DataOutBase::DataOutFilterFlags flags
std::string default_suffix(const OutputFormat output_format)
std::istream & operator>>(std::istream &in, Patch< dim, spacedim > &patch)
std::vector< std::string > space_dimension_labels
void serialize(Archive &ar, const unsigned int)
#define DeclException1(Exception1, type1, outsequence)
std::vector< std::string > data_set_names
void parse_parameters(const ParameterHandler &prm)
void write_vtu(const std::vector< Patch< dim, spacedim >> &patches, const std::vector< std::string > &data_names, const std::vector< std::tuple< unsigned int, unsigned int, std::string >> &nonscalar_data_ranges, const VtkFlags &flags, std::ostream &out)
void write_tecplot_binary(const std::vector< Patch< dim, spacedim >> &patches, const std::vector< std::string > &data_names, const std::vector< std::tuple< unsigned int, unsigned int, std::string >> &nonscalar_data_ranges, const TecplotFlags &flags, std::ostream &out)
DataOutBase::Deal_II_IntermediateFlags deal_II_intermediate_flags
#define DeclExceptionMsg(Exception, defaulttext)
bool points_are_available
std::vector<::DataOutBase::Patch< dim, spacedim > > patches
OutputFormat parse_output_format(const std::string &format_name)
void write_dx(const std::vector< Patch< dim, spacedim >> &patches, const std::vector< std::string > &data_names, const std::vector< std::tuple< unsigned int, unsigned int, std::string >> &nonscalar_data_ranges, const DXFlags &flags, std::ostream &out)
ColorFunction color_function
unsigned int n_subdivisions
DataOutBase::TecplotFlags tecplot_flags
DataOutBase::SvgFlags svg_flags
std::string h5_sol_filename
std::string h5_mesh_filename
static ::ExceptionBase & ExcInvalidDatasetSize(int arg1, int arg2)
bool operator==(const Patch &patch) const
DataComponentInterpretation
void write_povray(const std::vector< Patch< dim, spacedim >> &patches, const std::vector< std::string > &data_names, const std::vector< std::tuple< unsigned int, unsigned int, std::string >> &nonscalar_data_ranges, const PovrayFlags &flags, std::ostream &out)
static const unsigned int no_neighbor
DataOutBase::GmvFlags gmv_flags
DataOutBase::VtkFlags vtk_flags
void write_ucd(const std::vector< Patch< dim, spacedim >> &patches, const std::vector< std::string > &data_names, const std::vector< std::tuple< unsigned int, unsigned int, std::string >> &nonscalar_data_ranges, const UcdFlags &flags, std::ostream &out)
static const unsigned int space_dim
DataOutBase::GnuplotFlags gnuplot_flags
#define DeclException4(Exception4, type1, type2, type3, type4, outsequence)
unsigned int color_vector
static ::ExceptionBase & ExcInvalidCombinationOfDimensions(int arg1, int arg2)
DataOutBase::OutputFormat default_fmt
DataOutBase::EpsFlags eps_flags
std::size_t memory_consumption() const
std::map< unsigned int, unsigned int > filtered_points
bool points_are_available
bool write_higher_order_cells
static unsigned int n_subdivisions
void write_pvtu_record(std::ostream &out, const std::vector< std::string > &piece_names, const std::vector< std::string > &data_names, const std::vector< std::tuple< unsigned int, unsigned int, std::string >> &nonscalar_data_ranges)
std::string get_output_format_names()
DataOutBase::UcdFlags ucd_flags
unsigned int height_vector
unsigned int vertices_per_cell
void write_gnuplot(const std::vector< Patch< dim, spacedim >> &patches, const std::vector< std::string > &data_names, const std::vector< std::tuple< unsigned int, unsigned int, std::string >> &nonscalar_data_ranges, const GnuplotFlags &flags, std::ostream &out)
void write_vtk(const std::vector< Patch< dim, spacedim >> &patches, const std::vector< std::string > &data_names, const std::vector< std::tuple< unsigned int, unsigned int, std::string >> &nonscalar_data_ranges, const VtkFlags &flags, std::ostream &out)
void write_eps(const std::vector< Patch< 2, spacedim >> &patches, const std::vector< std::string > &data_names, const std::vector< std::tuple< unsigned int, unsigned int, std::string >> &nonscalar_data_ranges, const EpsFlags &flags, std::ostream &out)
static ::ExceptionBase & ExcErrorOpeningTecplotFile(char *arg1)
DataOutBase::DXFlags dx_flags
static ::ExceptionBase & ExcTecplotAPIError()