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> 37 #ifdef DEAL_II_HAVE_TECPLOT 45 DEAL_II_NAMESPACE_OPEN
242 template <
int dim,
int spacedim = dim>
367 <<
"It is not possible to have a structural dimension of " << arg1
368 <<
" to be larger than the space dimension of the surrounding" 369 <<
" space " << arg2);
392 template <
int spacedim>
513 <<
"It is not possible to have a structural dimension of " << arg1
514 <<
" to be larger than the space dimension of the surrounding" 515 <<
" space " << arg2);
531 template <
typename FlagsType>
565 template <
typename FlagsType>
571 template <
typename FlagsType>
577 template <
typename FlagsType>
581 return sizeof(FlagsType);
621 DXFlags(
const bool write_neighbors =
false,
622 const bool int_binary =
false,
623 const bool coordinates_binary =
false,
624 const bool data_binary =
false);
664 UcdFlags(
const bool write_preamble =
false);
699 GnuplotFlags(
const std::vector<std::string> &space_dimension_labels);
730 "There should be at least one space dimension per spatial " 731 "dimension (extras are ignored).");
768 const bool bicubic_patch =
false,
769 const bool external_data =
false);
948 const double min_value,
949 const double max_value);
968 default_color_function(
const double value,
969 const double min_value,
970 const double max_value);
978 grey_scale_color_function(
const double value,
979 const double min_value,
980 const double max_value);
989 reverse_grey_scale_color_function(
const double value,
990 const double min_value,
991 const double max_value);
996 EpsFlags(
const unsigned int height_vector = 0,
997 const unsigned int color_vector = 0,
999 const unsigned int size = 300,
1000 const double line_width = 0.5,
1001 const double azimut_angle = 60,
1002 const double turn_angle = 30,
1003 const double z_scaling = 1.0,
1004 const bool draw_mesh =
true,
1005 const bool draw_cells =
true,
1006 const bool shade_cells =
true,
1007 const ColorFunction color_function = &default_color_function);
1068 TecplotFlags(
const char * tecplot_binary_file_name =
nullptr,
1069 const char * zone_name =
nullptr,
1070 const double solution_time = -1.0);
1174 const double time = std::numeric_limits<double>::min(),
1175 const unsigned int cycle = std::numeric_limits<unsigned int>::min(),
1176 const bool print_date_and_time =
true,
1178 const bool write_higher_order_cells =
false);
1213 unsigned int line_thickness;
1228 SvgFlags(
const unsigned int height_vector = 0,
1229 const int azimuth_angle = 37,
1230 const int polar_angle = 45,
1231 const unsigned int line_thickness = 1,
1232 const bool margin =
true,
1233 const bool draw_colorbar =
true);
1282 const bool xdmf_hdf5_output =
false);
1350 write_point(
const unsigned int index,
const Point<dim> &p);
1357 write_cell(
const unsigned int index,
1358 const unsigned int start,
1359 const unsigned int d1,
1360 const unsigned int d2,
1361 const unsigned int d3);
1370 write_data_set(
const std::string & name,
1371 const unsigned int dimension,
1372 const unsigned int set_num,
1380 fill_node_data(std::vector<double> &node_data)
const;
1387 fill_cell_data(
const unsigned int local_node_offset,
1388 std::vector<unsigned int> &cell_data)
const;
1394 get_data_set_name(
const unsigned int set_num)
const;
1400 get_data_set_dim(
const unsigned int set_num)
const;
1407 get_data_set(
const unsigned int set_num)
const;
1428 n_data_sets()
const;
1466 return (one(0) < two(0) ||
1467 (!(two(0) < one(0)) &&
1468 (one(1) < two(1) || (!(two(1) < one(1)) && one(2) < two(2)))));
1472 using Map3DPoint = std::multimap<Point<3>,
unsigned int,
Point3Comp>;
1529 internal_add_cell(
const unsigned int cell_index,
1530 const unsigned int pt_index);
1613 template <
int dim,
int spacedim>
1614 DEAL_II_DEPRECATED
void 1617 const std::vector<std::string> & data_names,
1618 const std::vector<std::tuple<unsigned int, unsigned int, std::string>>
1619 & nonscalar_data_ranges,
1621 std::ostream & out);
1626 template <
int dim,
int spacedim>
1630 const std::vector<std::string> & data_names,
1632 std::tuple<
unsigned int,
1636 & nonscalar_data_ranges,
1638 std::ostream & out);
1645 template <
int spacedim>
1646 DEAL_II_DEPRECATED
void 1649 const std::vector<std::string> & data_names,
1650 const std::vector<std::tuple<unsigned int, unsigned int, std::string>>
1651 & nonscalar_data_ranges,
1653 std::ostream & out);
1662 template <
int dim,
int spacedim>
1663 DEAL_II_DEPRECATED
void 1666 const std::vector<std::string> & data_names,
1667 const std::vector<std::tuple<unsigned int, unsigned int, std::string>>
1668 & nonscalar_data_ranges,
1670 std::ostream & out);
1716 template <
int spacedim>
1720 const std::vector<std::string> & data_names,
1722 std::tuple<
unsigned int,
1726 & nonscalar_data_ranges,
1728 std::ostream & out);
1737 template <
int dim,
int spacedim>
1738 DEAL_II_DEPRECATED
void 1741 const std::vector<std::string> & data_names,
1742 const std::vector<std::tuple<unsigned int, unsigned int, std::string>>
1743 & nonscalar_data_ranges,
1745 std::ostream & out);
1752 template <
int dim,
int spacedim>
1756 const std::vector<std::string> & data_names,
1758 std::tuple<
unsigned int,
1762 & nonscalar_data_ranges,
1764 std::ostream & out);
1771 template <
int dim,
int spacedim>
1772 DEAL_II_DEPRECATED
void 1775 const std::vector<std::string> & data_names,
1776 const std::vector<std::tuple<unsigned int, unsigned int, std::string>>
1777 & nonscalar_data_ranges,
1779 std::ostream & out);
1790 template <
int dim,
int spacedim>
1794 const std::vector<std::string> & data_names,
1796 std::tuple<
unsigned int,
1800 & nonscalar_data_ranges,
1802 std::ostream & out);
1809 template <
int dim,
int spacedim>
1810 DEAL_II_DEPRECATED
void 1813 const std::vector<std::string> & data_names,
1814 const std::vector<std::tuple<unsigned int, unsigned int, std::string>>
1815 & nonscalar_data_ranges,
1817 std::ostream & out);
1875 template <
int dim,
int spacedim>
1879 const std::vector<std::string> & data_names,
1881 std::tuple<
unsigned int,
1885 & nonscalar_data_ranges,
1887 std::ostream & out);
1895 template <
int dim,
int spacedim>
1896 DEAL_II_DEPRECATED
void 1899 const std::vector<std::string> & data_names,
1900 const std::vector<std::tuple<unsigned int, unsigned int, std::string>>
1901 & nonscalar_data_ranges,
1903 std::ostream & out);
1950 template <
int dim,
int spacedim>
1954 const std::vector<std::string> & data_names,
1956 std::tuple<
unsigned int,
1960 & nonscalar_data_ranges,
1962 std::ostream & out);
1972 template <
int dim,
int spacedim>
1973 DEAL_II_DEPRECATED
void 1976 const std::vector<std::string> & data_names,
1977 const std::vector<std::tuple<unsigned int, unsigned int, std::string>>
1978 & nonscalar_data_ranges,
1980 std::ostream & out);
1988 template <
int dim,
int spacedim>
1992 const std::vector<std::string> & data_names,
1994 std::tuple<
unsigned int,
1998 & nonscalar_data_ranges,
2000 std::ostream & out);
2008 template <
int dim,
int spacedim>
2009 DEAL_II_DEPRECATED
void 2012 const std::vector<std::string> & data_names,
2013 const std::vector<std::tuple<unsigned int, unsigned int, std::string>>
2014 & nonscalar_data_ranges,
2016 std::ostream & out);
2037 template <
int dim,
int spacedim>
2041 const std::vector<std::string> & data_names,
2043 std::tuple<
unsigned int,
2047 & nonscalar_data_ranges,
2049 std::ostream & out);
2057 template <
int dim,
int spacedim>
2058 DEAL_II_DEPRECATED
void 2061 const std::vector<std::string> & data_names,
2062 const std::vector<std::tuple<unsigned int, unsigned int, std::string>>
2063 & nonscalar_data_ranges,
2065 std::ostream & out);
2081 template <
int dim,
int spacedim>
2085 const std::vector<std::string> & data_names,
2087 std::tuple<
unsigned int,
2091 & nonscalar_data_ranges,
2093 std::ostream & out);
2102 template <
int dim,
int spacedim>
2103 DEAL_II_DEPRECATED
void 2106 const std::vector<std::string> & data_names,
2107 const std::vector<std::tuple<unsigned int, unsigned int, std::string>>
2108 & nonscalar_data_ranges,
2110 std::ostream & out);
2131 template <
int dim,
int spacedim>
2135 const std::vector<std::string> & data_names,
2137 std::tuple<
unsigned int,
2141 & nonscalar_data_ranges,
2143 std::ostream & out);
2152 template <
int dim,
int spacedim>
2153 DEAL_II_DEPRECATED
void 2156 const std::vector<std::string> & data_names,
2157 const std::vector<std::tuple<unsigned int, unsigned int, std::string>>
2158 & nonscalar_data_ranges,
2160 std::ostream & out);
2185 template <
int dim,
int spacedim>
2189 const std::vector<std::string> & data_names,
2191 std::tuple<
unsigned int,
2195 & nonscalar_data_ranges,
2197 std::ostream & out);
2224 template <
int dim,
int spacedim>
2225 DEAL_II_DEPRECATED
void 2228 const std::vector<std::string> & data_names,
2229 const std::vector<std::tuple<unsigned int, unsigned int, std::string>>
2230 & nonscalar_data_ranges,
2232 std::ostream & out);
2240 template <
int dim,
int spacedim>
2244 const std::vector<std::string> & data_names,
2246 std::tuple<
unsigned int,
2250 & nonscalar_data_ranges,
2252 std::ostream & out);
2268 const std::vector<std::string> &piece_names,
2269 const std::vector<std::string> &data_names,
2270 const std::vector<std::tuple<unsigned int, unsigned int, std::string>>
2271 &nonscalar_data_ranges);
2317 const std::vector<std::string> &piece_names,
2318 const std::vector<std::string> &data_names,
2320 std::tuple<
unsigned int,
2324 &nonscalar_data_ranges);
2379 const std::vector<std::pair<double, std::string>> ×_and_names);
2394 const std::vector<std::string> &piece_names);
2425 const std::vector<std::vector<std::string>> &piece_names);
2462 const std::vector<std::pair<
double, std::vector<std::string>>>
2463 ×_and_piece_names);
2470 template <
int spacedim>
2471 DEAL_II_DEPRECATED
void 2474 const std::vector<std::string> & data_names,
2475 const std::vector<std::tuple<unsigned int, unsigned int, std::string>>
2476 & nonscalar_data_ranges,
2478 std::ostream & out);
2500 template <
int spacedim>
2504 const std::vector<std::string> & data_names,
2506 std::tuple<
unsigned int,
2510 & nonscalar_data_ranges,
2512 std::ostream & out);
2525 template <
int dim,
int spacedim>
2526 DEAL_II_DEPRECATED
void 2529 const std::vector<std::string> & data_names,
2530 const std::vector<std::tuple<unsigned int, unsigned int, std::string>>
2531 & nonscalar_data_ranges,
2533 std::ostream & out);
2572 template <
int dim,
int spacedim>
2576 const std::vector<std::string> & data_names,
2578 std::tuple<
unsigned int,
2582 & nonscalar_data_ranges,
2584 std::ostream & out);
2590 template <
int dim,
int spacedim>
2594 const std::string & filename,
2604 template <
int dim,
int spacedim>
2608 const bool write_mesh_file,
2609 const std::string & mesh_filename,
2610 const std::string &solution_filename,
2621 template <
int dim,
int spacedim>
2622 DEAL_II_DEPRECATED
void 2625 const std::vector<std::string> & data_names,
2626 const std::vector<std::tuple<unsigned int, unsigned int, std::string>>
2627 & nonscalar_data_ranges,
2636 template <
int dim,
int spacedim>
2640 const std::vector<std::string> & data_names,
2642 std::tuple<
unsigned int,
2646 & nonscalar_data_ranges,
2660 std::pair<unsigned int, unsigned int>
2717 <<
"The number of points in this data set is " << arg1
2718 <<
", but we expected " << arg2
2719 <<
" in each space direction.");
2724 "You are trying to write graphical data into a file, but " 2725 "no data is available in the intermediate format that " 2726 "the DataOutBase functions require. Did you forget to " 2727 "call a function such as DataOut::build_patches()?");
2732 "The error code of one of the Tecplot functions was " 2733 "not zero as expected.");
2739 <<
"There was an error opening Tecplot file " << arg1
2854 template <
int dim,
int spacedim = dim>
2966 write_vtu_in_parallel(
const char *filename, MPI_Comm comm)
const;
3003 const std::vector<std::string> &piece_names)
const;
3032 const std::string & h5_filename,
3033 const double cur_time,
3034 MPI_Comm comm)
const;
3043 const std::string & h5_mesh_filename,
3044 const std::string & h5_solution_filename,
3045 const double cur_time,
3046 MPI_Comm comm)
const;
3073 write_xdmf_file(
const std::vector<XDMFEntry> &entries,
3074 const std::string & filename,
3075 MPI_Comm comm)
const;
3093 const std::string & filename,
3094 MPI_Comm comm)
const;
3105 const bool write_mesh_file,
3106 const std::string & mesh_filename,
3107 const std::string & solution_filename,
3108 MPI_Comm comm)
const;
3129 write(std::ostream & out,
3145 template <
typename FlagType>
3147 set_flags(
const FlagType &flags);
3204 virtual const std::vector<DataOutBase::Patch<dim, spacedim>> &
3205 get_patches()
const = 0;
3211 virtual std::vector<std::string>
3212 get_dataset_names()
const = 0;
3222 virtual std::vector<std::tuple<unsigned int, unsigned int, std::string>>
3223 get_vector_data_ranges()
const;
3243 virtual std::vector<
3244 std::tuple<
unsigned int,
3248 get_nonscalar_data_ranges()
const;
3257 validate_dataset_names()
const;
3386 template <
int dim,
int spacedim = dim>
3396 read(std::istream &in);
3428 "You are trying to merge two sets of patches for which the " 3429 "declared names of the variables do not match.");
3434 "You are trying to merge two sets of patches for which the " 3435 "number of subdivisions or the number of vector components " 3445 <<
"Either the dimensions <" << arg1 <<
"> and <" << arg2
3446 <<
"> or the space dimensions <" << arg3 <<
"> and <" << arg4
3447 <<
"> do not match!");
3458 virtual const std::vector<::DataOutBase::Patch<dim, spacedim>> &
3459 get_patches()
const override;
3467 virtual std::vector<std::string>
3468 get_dataset_names()
const override;
3488 virtual std::vector<
3489 std::tuple<
unsigned int,
3493 get_nonscalar_data_ranges()
const override;
3500 std::vector<::DataOutBase::Patch<dim, spacedim>>
patches;
3501 std::vector<std::string> dataset_names;
3508 std::tuple<
unsigned int,
3539 const unsigned int nodes,
3540 const unsigned int cells,
3541 const unsigned int dim);
3547 XDMFEntry(
const std::string &mesh_filename,
3548 const std::string &solution_filename,
3550 const unsigned int nodes,
3551 const unsigned int cells,
3552 const unsigned int dim);
3557 XDMFEntry(
const std::string &mesh_filename,
3558 const std::string &solution_filename,
3560 const unsigned int nodes,
3561 const unsigned int cells,
3562 const unsigned int dim,
3563 const unsigned int spacedim);
3569 add_attribute(
const std::string &attr_name,
const unsigned int dimension);
3574 template <
class Archive>
3578 ar &valid &h5_sol_filename &h5_mesh_filename &entry_time &num_nodes
3579 &num_cells &dimension &attribute_dims;
3587 get_xdmf_content(
const unsigned int indent_level)
const;
3646 return (red == green) && (red == blue);
3660 template <
int dim,
int spacedim>
3662 operator<<(std::ostream &out, const Patch<dim, spacedim> &patch);
3674 template <
int dim,
int spacedim>
3680 DEAL_II_NAMESPACE_CLOSE
RgbValues(*)(const double value, const double min_value, const double max_value) ColorFunction
static const unsigned int invalid_unsigned_int
std::size_t memory_consumption() const
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)
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
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)
std::size_t memory_consumption() const
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)
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
bool operator==(const Patch &patch) const
#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::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)
unsigned int neighbors[dim > 0?GeometryInfo< dim >::faces_per_cell:1]
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()