SemiDiscreteOT 1.0
Semi-Discrete Optimal Transport Library
Loading...
Searching...
No Matches
Namespaces | Functions
utils.h File Reference
#include <vector>
#include <string>
#include <fstream>
#include <iostream>
#include <filesystem>
#include <iomanip>
#include <limits>
#include <deal.II/grid/grid_out.h>
#include <deal.II/numerics/data_out.h>
#include <deal.II/grid/grid_in.h>
#include <deal.II/grid/grid_generator.h>
#include <deal.II/grid/grid_tools.h>
#include <deal.II/distributed/fully_distributed_tria.h>
#include <deal.II/dofs/dof_handler.h>
#include <deal.II/base/utilities.h>
#include <deal.II/base/conditional_ostream.h>
#include <deal.II/base/tensor.h>
#include <deal.II/fe/fe_values.h>
#include <deal.II/fe/fe_simplex_p.h>
#include <deal.II/fe/fe_q.h>
#include <deal.II/fe/mapping_fe.h>
#include <deal.II/fe/mapping_q1.h>
#include <deal.II/lac/vector.h>
#include <deal.II/lac/la_parallel_vector.h>
#include "SemiDiscreteOT/utils/ColorDefinitions.h"
Include dependency graph for utils.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Namespaces

namespace  Utils
 Collection of utility functions for file I/O, mesh handling and data management.
 

Functions

std::string Utils::to_scientific_string (double value, int precision=6)
 Convert a double to a string in scientific notation.
 
template<typename VectorContainer >
void Utils::write_vector (const VectorContainer &points, const std::string &filepath, const std::string &fileMode="txt")
 Write a vector container to a file in binary or text format.
 
template<typename VectorContainer >
bool Utils::read_vector (VectorContainer &points, const std::string &filepath, const std::string &fileMode="")
 Read a vector container from a file in binary or text format.
 
std::vector< std::string > Utils::select_folder (const std::string &base_dir="output", bool allow_all=true)
 List available epsilon folders and allow user selection.
 
std::vector< std::pair< std::string, std::string > > Utils::get_target_hierarchy_files (const std::string &dir)
 Get target point cloud hierarchy files.
 
template<int dim, int spacedim>
bool Utils::load_hierarchy_data (const std::string &hierarchy_dir, std::vector< std::vector< std::vector< size_t > > > &child_indices, int specific_level, const MPI_Comm &mpi_communicator, dealii::ConditionalOStream &pcout)
 Load hierarchy data from files.
 
template<int dim, int spacedim = dim>
bool Utils::write_mesh (const dealii::Triangulation< dim, spacedim > &mesh, const std::string &filepath, const std::vector< std::string > &formats, const std::vector< double > *cell_data=nullptr, const std::string &data_name="cell_data")
 Write mesh to file in specified formats with optional cell data.
 
template<int dim, int spacedim>
void Utils::interpolate_non_conforming_nearest (const dealii::DoFHandler< dim, spacedim > &source_dh, const dealii::Vector< double > &source_field, const dealii::DoFHandler< dim, spacedim > &target_dh, dealii::LinearAlgebra::distributed::Vector< double > &target_field)
 Interpolate a field from a source mesh to a target mesh using nearest neighbor approach.
 
template<int dim, int spacedim>
void Utils::interpolate_non_conforming (const dealii::DoFHandler< dim, spacedim > &source_dh, const dealii::Vector< double > &source_field, const dealii::DoFHandler< dim, spacedim > &target_dh, dealii::LinearAlgebra::distributed::Vector< double > &target_field)
 Interpolate a field from a source mesh to a target mesh.
 
template<int dim, int spacedim = dim>
std::unique_ptr< dealii::FiniteElement< dim, spacedim > > Utils::create_fe_for_mesh (const dealii::Triangulation< dim, spacedim > &triangulation, const unsigned int degree=1)
 Detect cell types in a triangulation and create appropriate finite element.
 
template<int dim, int spacedim>
std::pair< std::unique_ptr< dealii::FiniteElement< dim, spacedim > >, std::unique_ptr< dealii::Mapping< dim, spacedim > > > Utils::create_fe_and_mapping_for_mesh (const dealii::Triangulation< dim, spacedim > &triangulation, const unsigned int fe_degree=1, const unsigned int mapping_degree=1)
 Create appropriate finite element and mapping for a triangulation.
 
template<int dim, int spacedim = dim>
std::unique_ptr< dealii::Quadrature< dim > > Utils::create_quadrature_for_mesh (const dealii::Triangulation< dim, spacedim > &triangulation, const unsigned int order=2)
 Create appropriate quadrature for a triangulation based on cell types.
 
template<int spacedim>
bool Utils::write_points_with_density_vtk (const std::vector< dealii::Point< spacedim > > &points, const std::vector< double > &density, const std::string &filename, const std::string &description="Points with density values", const std::string &density_name="density")
 Write points with associated density to VTK file.
 
template<int spacedim>
bool Utils::write_points_with_displacement_vtk (const std::vector< dealii::Point< spacedim > > &source_points, const std::vector< dealii::Point< spacedim > > &mapped_points, const std::vector< double > &density, const std::string &filename, const std::string &description="Points with displacement vectors", const std::string &density_name="density")
 Write points with displacement vectors and density to VTK file.
 
template<int dim, int spacedim = dim>
bool Utils::read_vtk_field (const std::string &filename, dealii::DoFHandler< dim, spacedim > &vtk_dof_handler, dealii::Vector< double > &vtk_field, dealii::Triangulation< dim, spacedim > &vtk_tria, const MPI_Comm &mpi_communicator, dealii::ConditionalOStream &pcout, bool broadcast_field=false, const std::string &field_name="normalized_density")
 Read a scalar field from a VTK file.