DOLFINx 0.12.0.0
DOLFINx C++
Loading...
Searching...
No Matches
XDMFFile Class Reference

Read and write mesh::Mesh, fem::Function and other objects in XDMF. More...

#include <XDMFFile.h>

Public Types

enum class  Encoding : std::int8_t { HDF5 , ASCII }
 File encoding type.

Public Member Functions

 XDMFFile (MPI_Comm comm, const std::filesystem::path &filename, std::string_view file_mode, Encoding encoding=Encoding::HDF5)
 Constructor.
 XDMFFile (XDMFFile &&)=default
 Move constructor.
 ~XDMFFile ()
 Destructor.
void close ()
template<std::floating_point U>
void write_mesh (const mesh::Mesh< U > &mesh, std::string_view xpath="/Xdmf/Domain")
void write_geometry (const mesh::Geometry< double > &geometry, std::string_view name, std::string_view xpath="/Xdmf/Domain")
mesh::Mesh< double > read_mesh (const fem::CoordinateElement< double > &element, mesh::GhostMode mode, std::string_view name, std::string_view xpath="/Xdmf/Domain", std::optional< std::int32_t > max_facet_to_cell_links=2) const
std::pair< std::vector< std::int64_t >, std::array< std::size_t, 2 > > read_topology_data (std::string_view name, std::string_view xpath="/Xdmf/Domain") const
std::pair< std::variant< std::vector< float >, std::vector< double > >, std::array< std::size_t, 2 > > read_geometry_data (std::string_view name, std::string_view xpath="/Xdmf/Domain") const
std::pair< mesh::CellType, int > read_cell_type (std::string_view grid_name, std::string_view xpath="/Xdmf/Domain") const
template<dolfinx::scalar T, std::floating_point U = scalar_value_t<T>>
void write_function (const fem::Function< T, U > &u, double t, std::string_view mesh_xpath="/Xdmf/Domain/Grid[@GridType='Uniform'][1]")
 Write a fem::Function to file.
template<std::floating_point T>
void write_meshtags (const mesh::MeshTags< std::int32_t > &meshtags, const mesh::Geometry< T > &x, std::string_view geometry_xpath, std::string_view xpath="/Xdmf/Domain")
mesh::MeshTags< std::int32_t > read_meshtags (const mesh::Mesh< double > &mesh, std::string_view name, std::optional< std::string_view > attribute_name, std::string_view xpath="/Xdmf/Domain") const
void write_information (std::string_view name, std::string_view value, std::string_view xpath="/Xdmf/Domain/")
std::string read_information (std::string_view name, std::string_view xpath="/Xdmf/Domain/") const
void flush ()
MPI_Comm comm () const

Detailed Description

Read and write mesh::Mesh, fem::Function and other objects in XDMF.

This class supports the output of meshes and functions in XDMF (http://www.xdmf.org) format. It creates an XML file that describes the data and points to a HDF5 file that stores the actual problem data. Output of data in parallel is supported.

XDMF is not suitable for higher-order geometries; it only supports 1st- and 2nd-order geometries.

Member Function Documentation

◆ close()

void close ( )

Close the file

This closes open underlying HDF5 file. In ASCII mode the XML file is closed each time it is written to or read from, so close() has no effect.

◆ comm()

MPI_Comm comm ( ) const

Get the MPI communicator

Returns
The MPI communicator for the file object

◆ flush()

void flush ( )

Flush the output to disk. Output is not guaranteed to be written fully to disk with a 'write' call.

◆ read_cell_type()

std::pair< mesh::CellType, int > read_cell_type ( std::string_view grid_name,
std::string_view xpath = "/Xdmf/Domain" ) const

Read information about cell type

Parameters
[in]grid_nameName of Grid for which cell type is needed
[in]xpathXPath where Grid is stored

◆ read_geometry_data()

std::pair< std::variant< std::vector< float >, std::vector< double > >, std::array< std::size_t, 2 > > read_geometry_data ( std::string_view name,
std::string_view xpath = "/Xdmf/Domain" ) const

Read Geometry data for Mesh

Parameters
[in]nameName of the mesh (Grid)
[in]xpathXPath where Mesh Grid data is located
Returns
points on each process

◆ read_information()

std::string read_information ( std::string_view name,
std::string_view xpath = "/Xdmf/Domain/" ) const

Read Information

Parameters
[in]name
[in]xpathXPath where Information is stored in file

◆ read_mesh()

mesh::Mesh< double > read_mesh ( const fem::CoordinateElement< double > & element,
mesh::GhostMode mode,
std::string_view name,
std::string_view xpath = "/Xdmf/Domain",
std::optional< std::int32_t > max_facet_to_cell_links = 2 ) const

Read Mesh

Parameters
[in]elementElement that describes the geometry of a cell
[in]modeThe type of ghosting/halo to use for the mesh when distributed in parallel
[in]name
[in]xpathXPath where Mesh Grid is located
[in]max_facet_to_cell_linksMaximum number of cells that can be linked to a facet.
Returns
A Mesh distributed on the same communicator as the XDMFFile

◆ read_meshtags()

mesh::MeshTags< std::int32_t > read_meshtags ( const mesh::Mesh< double > & mesh,
std::string_view name,
std::optional< std::string_view > attribute_name,
std::string_view xpath = "/Xdmf/Domain" ) const

Read MeshTags

Parameters
[in]meshMesh that the input data is defined on
[in]nameName of the grid node in the xml-scheme of the XDMF-file. E.g. "Material" in Grid Name="Material" GridType="Uniform"
[in]attribute_nameName of the attribute to read
[in]xpathXPath where MeshTags Grid is stored in file

◆ read_topology_data()

std::pair< std::vector< std::int64_t >, std::array< std::size_t, 2 > > read_topology_data ( std::string_view name,
std::string_view xpath = "/Xdmf/Domain" ) const

Read Topology data for Mesh

Parameters
[in]nameName of the mesh (Grid)
[in]xpathXPath where Mesh Grid data is located
Returns
(Cell type, degree), and cells topology (global node indexing)

◆ write_function()

template<dolfinx::scalar T, std::floating_point U>
void write_function ( const fem::Function< T, U > & u,
double t,
std::string_view mesh_xpath = "/Xdmf/Domain/Grid[@GridType='Uniform'][1]" )

Write a fem::Function to file.

Precondition
The fem::Function u must be (i) a lowest-order (P0) discontinuous Lagrange element or (ii) a continuous Lagrange element where the element 'nodes' are the same as the nodes of its mesh::Mesh. Otherwise an exception is raised.
Note
User interpolation to a suitable Lagrange space may be required to satisfy the precondition on u. The VTX output (io::VTXWriter) format is recommended over XDMF for discontinuous and/or high-order spaces.
Parameters
[in]uFunction to write to file.
[in]tTime stamp to associate with u.
[in]mesh_xpathXPath for a Grid under which u will be inserted.

◆ write_geometry()

void write_geometry ( const mesh::Geometry< double > & geometry,
std::string_view name,
std::string_view xpath = "/Xdmf/Domain" )

Save Geometry

Parameters
[in]geometry
[in]name
[in]xpathXPath of a node where Geometry will be inserted

◆ write_information()

void write_information ( std::string_view name,
std::string_view value,
std::string_view xpath = "/Xdmf/Domain/" )

Write Information

Parameters
[in]name
[in]valueString to store into Information tag
[in]xpathXPath where Information will be inserted

◆ write_mesh()

template<std::floating_point U>
void write_mesh ( const mesh::Mesh< U > & mesh,
std::string_view xpath = "/Xdmf/Domain" )

Save Mesh

Parameters
[in]mesh
[in]xpathXPath where Mesh Grid will be written

◆ write_meshtags()

template<std::floating_point T>
void write_meshtags ( const mesh::MeshTags< std::int32_t > & meshtags,
const mesh::Geometry< T > & x,
std::string_view geometry_xpath,
std::string_view xpath = "/Xdmf/Domain" )

Write MeshTags

Parameters
[in]meshtags
[in]xMesh geometry
[in]geometry_xpathXPath where Geometry is already stored in file
[in]xpathXPath where MeshTags Grid will be inserted

The documentation for this class was generated from the following files: