![]() |
SemiDiscreteOT 1.0
Semi-Discrete Optimal Transport Library
|
#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"
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. | |