16 #ifndef dealii__data_out_base_h 17 #define dealii__data_out_base_h 20 #include <deal.II/base/config.h> 21 #include <deal.II/base/point.h> 22 #include <deal.II/base/table.h> 23 #include <deal.II/base/geometry_info.h> 24 #include <deal.II/base/std_cxx11/tuple.h> 31 #include <deal.II/base/mpi.h> 35 #ifdef DEAL_II_HAVE_TECPLOT 42 DEAL_II_NAMESPACE_OPEN
237 template <
int dim,
int spacedim=dim>
360 <<
"It is not possible to have a structural dimension of " << arg1
361 <<
" to be larger than the space dimension of the surrounding" 362 <<
" space " << arg2);
378 template<
typename FlagsType>
409 template<
typename FlagsType>
414 template<
typename FlagsType>
419 template<
typename FlagsType>
422 return sizeof(FlagsType);
462 DXFlags (
const bool write_neighbors =
false,
463 const bool int_binary =
false,
464 const bool coordinates_binary =
false,
465 const bool data_binary =
false);
503 UcdFlags (
const bool write_preamble =
false);
536 GnuplotFlags(
const std::vector<std::string> &space_dimension_labels);
566 "There should be at least one space dimension per spatial " 567 "dimension (extras are ignored).");
604 const bool bicubic_patch =
false,
605 const bool external_data =
false);
770 bool is_grey ()
const;
781 const double min_value,
782 const double max_value);
801 default_color_function (
const double value,
802 const double min_value,
803 const double max_value);
811 grey_scale_color_function (
const double value,
812 const double min_value,
813 const double max_value);
822 reverse_grey_scale_color_function (
const double value,
823 const double min_value,
824 const double max_value);
829 EpsFlags (
const unsigned int height_vector = 0,
830 const unsigned int color_vector = 0,
832 const unsigned int size = 300,
833 const double line_width = 0.5,
834 const double azimut_angle = 60,
835 const double turn_angle = 30,
836 const double z_scaling = 1.0,
837 const bool draw_mesh =
true,
838 const bool draw_cells =
true,
839 const bool shade_cells =
true,
840 const ColorFunction color_function= &default_color_function);
899 TecplotFlags (
const char *tecplot_binary_file_name = NULL,
900 const char *zone_name = NULL,
901 const double solution_time = -1.0);
984 VtkFlags (
const double time = std::numeric_limits<double>::min(),
985 const unsigned int cycle = std::numeric_limits<unsigned int>::min(),
986 const bool print_date_and_time =
true,
1022 unsigned int line_thickness;
1037 SvgFlags(
const unsigned int height_vector = 0,
1038 const int azimuth_angle = 37,
1039 const int polar_angle = 45,
1040 const unsigned int line_thickness = 1,
1041 const bool margin =
true,
1042 const bool draw_colorbar =
true);
1088 const bool xdmf_hdf5_output =
false);
1142 return (lhs(0) < rhs(0) || (!(rhs(0) < lhs(0)) && (lhs(1) < rhs(1) || (!(rhs(1) < lhs(1)) && lhs(2) < rhs(2)))));
1146 typedef std::multimap<Point<3>,
unsigned int,
Point3Comp> Map3DPoint;
1188 void internal_add_cell(
const unsigned int &cell_index,
const unsigned int &pt_index);
1194 node_dim (
numbers::invalid_unsigned_int),
1195 vertices_per_cell (
numbers::invalid_unsigned_int)
1201 node_dim (
numbers::invalid_unsigned_int),
1202 vertices_per_cell (
numbers::invalid_unsigned_int)
1211 void write_point(
const unsigned int &index,
const Point<dim> &p);
1217 void write_cell(
unsigned int index,
unsigned int start,
unsigned int d1,
unsigned int d2,
unsigned int d3);
1225 void write_data_set(
const std::string &name,
const unsigned int &dimension,
const unsigned int &set_num,
const Table<2,double> &data_vectors);
1231 void fill_node_data(std::vector<double> &node_data)
const;
1237 void fill_cell_data(
const unsigned int &local_node_offset, std::vector<unsigned int> &cell_data)
const;
1244 return data_set_names.at(set_num);
1252 return data_set_dims.at(set_num);
1261 return &data_sets[set_num][0];
1270 return existing_points.size();
1279 return filtered_cells.size()/vertices_per_cell;
1288 return data_set_names.size();
1382 template <
int dim,
int spacedim>
1384 const std::vector<std::string> &data_names,
1385 const std::vector<std_cxx11::tuple<unsigned int, unsigned int, std::string> > &vector_data_ranges,
1433 template <
int spacedim>
1435 const std::vector<std::string> &data_names,
1436 const std::vector<std_cxx11::tuple<unsigned int, unsigned int, std::string> > &vector_data_ranges,
1445 template <
int dim,
int spacedim>
1447 const std::vector<std::string> &data_names,
1448 const std::vector<std_cxx11::tuple<unsigned int, unsigned int, std::string> > &vector_data_ranges,
1462 template <
int dim,
int spacedim>
1464 const std::vector<std::string> &data_names,
1465 const std::vector<std_cxx11::tuple<unsigned int, unsigned int, std::string> > &vector_data_ranges,
1525 template <
int dim,
int spacedim>
1527 const std::vector<std::string> &data_names,
1528 const std::vector<std_cxx11::tuple<unsigned int, unsigned int, std::string> > &vector_data_ranges,
1577 template <
int dim,
int spacedim>
1579 const std::vector<std::string> &data_names,
1580 const std::vector<std_cxx11::tuple<unsigned int, unsigned int, std::string> > &vector_data_ranges,
1590 template <
int dim,
int spacedim>
1592 const std::vector<std::string> &data_names,
1593 const std::vector<std_cxx11::tuple<unsigned int, unsigned int, std::string> > &vector_data_ranges,
1616 template <
int dim,
int spacedim>
1619 const std::vector<std::string> &data_names,
1620 const std::vector<std_cxx11::tuple<unsigned int, unsigned int, std::string> > &vector_data_ranges,
1638 template <
int dim,
int spacedim>
1640 const std::vector<std::string> &data_names,
1641 const std::vector<std_cxx11::tuple<unsigned int, unsigned int, std::string> > &vector_data_ranges,
1664 template <
int dim,
int spacedim>
1666 const std::vector<std::string> &data_names,
1667 const std::vector<std_cxx11::tuple<unsigned int, unsigned int, std::string> > &vector_data_ranges,
1695 template <
int dim,
int spacedim>
1697 const std::vector<std::string> &data_names,
1698 const std::vector<std_cxx11::tuple<unsigned int, unsigned int, std::string> > &vector_data_ranges,
1722 template <
int dim,
int spacedim>
1724 const std::vector<std::string> &data_names,
1725 const std::vector<std_cxx11::tuple<unsigned int, unsigned int, std::string> > &vector_data_ranges,
1772 const std::vector<std::string> &piece_names,
1773 const std::vector<std::string> &data_names,
1774 const std::vector<std_cxx11::tuple<unsigned int, unsigned int, std::string> > &vector_data_ranges);
1827 const std::vector<std::pair<double,std::string> > ×_and_names);
1841 const std::vector<std::string> &piece_names);
1871 const std::vector<std::vector<std::string> > &piece_names);
1905 const std::vector<std::pair<
double,std::vector<std::string> > > ×_and_piece_names);
1927 template <
int spacedim>
1929 const std::vector<std::string> &data_names,
1930 const std::vector<std_cxx11::tuple<unsigned int, unsigned int, std::string> > &vector_data_ranges,
1971 template <
int dim,
int spacedim>
1974 const std::vector<std::string> &data_names,
1975 const std::vector<std_cxx11::tuple<unsigned int, unsigned int, std::string> > &vector_data_ranges,
1983 template <
int dim,
int spacedim>
1986 const std::string &filename,
1996 template <
int dim,
int spacedim>
1999 const bool write_mesh_file,
2000 const std::string &mesh_filename,
2001 const std::string &solution_filename,
2010 template <
int dim,
int spacedim>
2012 const std::vector<std::string> &data_names,
2013 const std::vector<std_cxx11::tuple<unsigned int, unsigned int, std::string> > &vector_data_ranges,
2027 std::pair<unsigned int, unsigned int>
2080 <<
"The number of points in this data set is " << arg1
2081 <<
", but we expected " << arg2 <<
" in each space direction.");
2086 "You are trying to write graphical data into a file, but " 2087 "no data is available in the intermediate format that " 2088 "the DataOutBase functions require. Did you forget to " 2089 "call a function such as DataOut::build_patches()?");
2094 "The error code of one of the Tecplot functions was " 2095 "not zero as expected.");
2101 <<
"There was an error opening Tecplot file " << arg1
2221 template <
int dim,
int spacedim=dim>
2240 void write_dx (std::ostream &out)
const;
2246 void write_eps (std::ostream &out)
const;
2252 void write_gmv (std::ostream &out)
const;
2283 void write_ucd (std::ostream &out)
const;
2296 void write_vtk (std::ostream &out)
const;
2312 void write_vtu (std::ostream &out)
const;
2322 void write_vtu_in_parallel (
const char *filename,
2323 MPI_Comm comm)
const;
2359 const std::vector<std::string> &piece_names)
const;
2365 const std::vector<std::pair<double,std::string> > ×_and_names) DEAL_II_DEPRECATED;
2373 const std::vector<std::string> &piece_names) DEAL_II_DEPRECATED;
2381 const std::vector<std::vector<std::string> > &piece_names) DEAL_II_DEPRECATED;
2389 const std::vector<std::pair<
double,std::vector<std::string> > > ×_and_piece_names) DEAL_II_DEPRECATED;
2395 void write_svg(std::ostream &out)
const;
2415 const std::string &h5_filename,
2416 const double cur_time,
2417 MPI_Comm comm)
const;
2425 const std::string &h5_mesh_filename,
2426 const std::string &h5_solution_filename,
2427 const double cur_time,
2428 MPI_Comm comm)
const;
2450 void write_xdmf_file (
const std::vector<XDMFEntry> &entries,
2451 const std::string &filename,
2452 MPI_Comm comm)
const;
2468 const std::string &filename,
2469 MPI_Comm comm)
const;
2479 const bool write_mesh_file,
2480 const std::string &mesh_filename,
2481 const std::string &solution_filename,
2482 MPI_Comm comm)
const;
2501 void write (std::ostream &out,
2515 template<
typename FlagType>
2516 void set_flags (
const FlagType &flags);
2570 const std::vector<DataOutBase::Patch<dim,spacedim> > &
2571 get_patches ()
const = 0;
2578 std::vector<std::string>
2579 get_dataset_names ()
const = 0;
2600 std::vector<std_cxx11::tuple<unsigned int, unsigned int, std::string> >
2601 get_vector_data_ranges ()
const;
2609 void validate_dataset_names ()
const;
2738 template <
int dim,
int spacedim=dim>
2747 void read (std::istream &in);
2778 "You are trying to merge two sets of patches for which the " 2779 "declared names of the variables do not match.");
2784 "You are trying to merge two sets of patches for which the " 2785 "number of subdivisions or the number of vector components " 2792 <<
"Either the dimensions <" << arg1 <<
"> and <" 2793 << arg2 <<
"> or the space dimensions <" 2794 << arg3 <<
"> and <" << arg4
2795 <<
"> do not match!");
2806 virtual const std::vector<::DataOutBase::Patch<dim,spacedim> > &
2807 get_patches ()
const;
2815 virtual std::vector<std::string> get_dataset_names ()
const;
2836 std::vector<std_cxx11::tuple<unsigned int, unsigned int, std::string> >
2837 get_vector_data_ranges ()
const;
2844 std::vector<::DataOutBase::Patch<dim,spacedim> >
patches;
2845 std::vector<std::string> dataset_names;
2851 std::vector<std_cxx11::tuple<unsigned int, unsigned int, std::string> >
2881 std::string
indent(
const unsigned int indent_level)
const 2883 std::string res =
"";
2884 for (
unsigned int i=0; i<indent_level; ++i) res +=
" ";
2890 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) {};
2891 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) {};
2898 attribute_dims[attr_name] = dimension;
2904 template <
class Archive>
2919 std::string get_xdmf_content(
const unsigned int indent_level)
const;
2932 return (red == green) && (red == blue);
2946 template <
int dim,
int spacedim>
2961 template <
int dim,
int spacedim>
2968 DEAL_II_NAMESPACE_CLOSE
void write_gmv(const std::vector< Patch< dim, spacedim > > &patches, const std::vector< std::string > &data_names, const std::vector< std_cxx11::tuple< unsigned int, unsigned int, std::string > > &vector_data_ranges, const GmvFlags &flags, std::ostream &out)
static const unsigned int invalid_unsigned_int
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
void write_vtu_footer(std::ostream &out)
static void declare_parameters(ParameterHandler &prm)
#define DeclException2(Exception2, type1, type2, outsequence)
static::ExceptionBase & ExcIncompatiblePatchLists()
void write_ucd(const std::vector< Patch< dim, spacedim > > &patches, const std::vector< std::string > &data_names, const std::vector< std_cxx11::tuple< unsigned int, unsigned int, std::string > > &vector_data_ranges, const UcdFlags &flags, std::ostream &out)
std::map< unsigned int, unsigned int > filtered_cells
Map of cells to the filtered points.
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)
bool valid
Whether this entry is valid and contains data to be written.
void write_vtu_header(std::ostream &out, const VtkFlags &flags)
double entry_time
The simulation time associated with this entry.
ZlibCompressionLevel compression_level
std::vector< std_cxx11::tuple< unsigned int, unsigned int, std::string > > vector_data_ranges
std::string get_data_set_name(const unsigned int &set_num) const
void write_filtered_data(const std::vector< Patch< dim, spacedim > > &patches, const std::vector< std::string > &data_names, const std::vector< std_cxx11::tuple< unsigned int, unsigned int, std::string > > &vector_data_ranges, DataOutFilter &filtered_data)
unsigned int default_subdivisions
std::vector< unsigned int > data_set_dims
Data set dimensions.
Point< spacedim > vertices[GeometryInfo< dim >::vertices_per_cell]
bool filter_duplicate_vertices
std::vector< std::vector< double > > data_sets
Data set data.
std::map< std::string, unsigned int > attribute_dims
The attributes associated with this entry and their dimension.
const char * tecplot_binary_file_name
static::ExceptionBase & ExcNoPatches()
DataOutBase::PovrayFlags povray_flags
DataOutBase::DataOutFilterFlags flags
Flags used to specify filtering behavior.
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
Data set names.
void add_attribute(const std::string &attr_name, const unsigned int dimension)
void write_povray(const std::vector< Patch< dim, spacedim > > &patches, const std::vector< std::string > &data_names, const std::vector< std_cxx11::tuple< unsigned int, unsigned int, std::string > > &vector_data_ranges, const PovrayFlags &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_cxx11::tuple< unsigned int, unsigned int, std::string > > &vector_data_ranges, const EpsFlags &flags, std::ostream &out)
void parse_parameters(const ParameterHandler &prm)
void write_pvd_record(std::ostream &out, const std::vector< std::pair< double, std::string > > ×_and_names)
unsigned int n_data_sets() const
std::size_t memory_consumption() const
DataOutBase::Deal_II_IntermediateFlags deal_II_intermediate_flags
unsigned int get_data_set_dim(const unsigned int &set_num) const
#define DeclExceptionMsg(Exception, defaulttext)
OutputFormat parse_output_format(const std::string &format_name)
void write_svg(const std::vector< Patch< 2, spacedim > > &patches, const std::vector< std::string > &data_names, const std::vector< std_cxx11::tuple< unsigned int, unsigned int, std::string > > &vector_data_ranges, const SvgFlags &flags, std::ostream &out)
static::ExceptionBase & ExcIncompatibleDatasetNames()
void write_dx(const std::vector< Patch< dim, spacedim > > &patches, const std::vector< std::string > &data_names, const std::vector< std_cxx11::tuple< unsigned int, unsigned int, std::string > > &vector_data_ranges, const DXFlags &flags, std::ostream &out)
ColorFunction color_function
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_cxx11::tuple< unsigned int, unsigned int, std::string > > &vector_data_ranges)
DataOutBase::TecplotFlags tecplot_flags
std::ostream & operator<<(std::ostream &out, const Patch< dim, spacedim > &patch)
DataOutBase::SvgFlags svg_flags
std::string h5_sol_filename
The name of the HDF5 heavy data solution and/or mesh files this entry references. ...
static::ExceptionBase & ExcInvalidDatasetSize(int arg1, int arg2)
unsigned int n_nodes() const
void write_vtk(const std::vector< Patch< dim, spacedim > > &patches, const std::vector< std::string > &data_names, const std::vector< std_cxx11::tuple< unsigned int, unsigned int, std::string > > &vector_data_ranges, const VtkFlags &flags, std::ostream &out)
void write_vtu(const std::vector< Patch< dim, spacedim > > &patches, const std::vector< std::string > &data_names, const std::vector< std_cxx11::tuple< unsigned int, unsigned int, std::string > > &vector_data_ranges, const VtkFlags &flags, std::ostream &out)
static const unsigned int no_neighbor
DataOutBase::GmvFlags gmv_flags
DataOutBase::VtkFlags vtk_flags
const double * get_data_set(const unsigned int &set_num) const
std::vector<::DataOutBase::Patch< dim, spacedim > > patches
void write_tecplot_binary(const std::vector< Patch< dim, spacedim > > &patches, const std::vector< std::string > &data_names, const std::vector< std_cxx11::tuple< unsigned int, unsigned int, std::string > > &vector_data_ranges, const TecplotFlags &flags, std::ostream &out)
static const unsigned int space_dim
DataOutBase::GnuplotFlags gnuplot_flags
bool operator==(const Patch &patch) const
unsigned int num_nodes
The number of nodes, cells and dimensionality associated with the data.
#define DeclException4(Exception4, type1, type2, type3, type4, outsequence)
void write_tecplot(const std::vector< Patch< dim, spacedim > > &patches, const std::vector< std::string > &data_names, const std::vector< std_cxx11::tuple< unsigned int, unsigned int, std::string > > &vector_data_ranges, const TecplotFlags &flags, std::ostream &out)
unsigned int color_vector
void write_vtu_main(const std::vector< Patch< dim, spacedim > > &patches, const std::vector< std::string > &data_names, const std::vector< std_cxx11::tuple< unsigned int, unsigned int, std::string > > &vector_data_ranges, const VtkFlags &flags, std::ostream &out)
static::ExceptionBase & ExcInvalidCombinationOfDimensions(int arg1, int arg2)
DataOutBase::OutputFormat default_fmt
void write_hdf5_parallel(const std::vector< Patch< dim, spacedim > > &patches, const DataOutFilter &data_filter, const std::string &filename, MPI_Comm comm)
DataOutBase::EpsFlags eps_flags
std::string indent(const unsigned int indent_level) const
Small function to create indentation for XML file.
void write_deal_II_intermediate(const std::vector< Patch< dim, spacedim > > &patches, const std::vector< std::string > &data_names, const std::vector< std_cxx11::tuple< unsigned int, unsigned int, std::string > > &vector_data_ranges, const Deal_II_IntermediateFlags &flags, std::ostream &out)
void write_gnuplot(const std::vector< Patch< dim, spacedim > > &patches, const std::vector< std::string > &data_names, const std::vector< std_cxx11::tuple< unsigned int, unsigned int, std::string > > &vector_data_ranges, const GnuplotFlags &flags, std::ostream &out)
std::map< unsigned int, unsigned int > filtered_points
Map of actual point index to internal point index.
bool points_are_available
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
static::ExceptionBase & ExcErrorOpeningTecplotFile(char *arg1)
DataOutBase::DXFlags dx_flags
static::ExceptionBase & ExcTecplotAPIError()