SemiDiscreteOT 1.0
Semi-Discrete Optimal Transport Library
Loading...
Searching...
No Matches
Public Member Functions | Private Member Functions | Private Attributes | List of all members
EpsilonScalingHandler Class Reference

Handler for epsilon scaling in multilevel optimization. More...

#include <EpsilonScalingHandler.h>

Public Member Functions

 EpsilonScalingHandler (const MPI_Comm &comm, double initial_epsilon, double scaling_factor, unsigned int num_steps)
 Constructor.
 
std::vector< std::vector< double > > compute_epsilon_distribution (unsigned int num_levels)
 Compute epsilon distribution for multilevel optimization.
 
const std::vector< double > & get_epsilon_values_for_level (unsigned int level_index) const
 Get epsilon values for a specific level.
 
void print_epsilon_distribution () const
 Print the epsilon distribution.
 

Private Member Functions

std::vector< double > generate_epsilon_sequence () const
 Generate the sequence of epsilon values.
 
std::vector< std::vector< double > > distribute_epsilon_values (const std::vector< double > &epsilon_sequence, unsigned int num_levels)
 Distribute epsilon values across levels.
 

Private Attributes

MPI_Comm mpi_communicator
 The MPI communicator.
 
const unsigned int this_mpi_process
 The rank of the current MPI process.
 
ConditionalOStream pcout
 A conditional output stream for parallel printing.
 
double initial_epsilon
 The initial epsilon value.
 
double scaling_factor
 The scaling factor for epsilon.
 
unsigned int num_steps
 The total number of epsilon scaling steps.
 
std::vector< std::vector< double > > epsilon_distribution
 The computed epsilon distribution.
 

Detailed Description

Handler for epsilon scaling in multilevel optimization.

This class manages the distribution of epsilon values across different levels of a multilevel optimization process, either for target point clouds or source meshes.

Handler for epsilon scaling in multilevel optimization.

This class manages the distribution of epsilon values across different levels of a multilevel optimization process, either for target point clouds or source meshes.

Definition at line 25 of file EpsilonScalingHandler.h.

Constructor & Destructor Documentation

◆ EpsilonScalingHandler()

EpsilonScalingHandler::EpsilonScalingHandler ( const MPI_Comm &  comm,
double  initial_epsilon,
double  scaling_factor,
unsigned int  num_steps 
)

Constructor.

Parameters
commMPI communicator
initial_epsilonInitial epsilon value
scaling_factorFactor by which epsilon is scaled between steps
num_stepsTotal number of epsilon scaling steps

Definition at line 6 of file EpsilonScalingHandler.cc.

Member Function Documentation

◆ compute_epsilon_distribution()

std::vector< std::vector< double > > EpsilonScalingHandler::compute_epsilon_distribution ( unsigned int  num_levels)

Compute epsilon distribution for multilevel optimization.

Parameters
num_levelsNumber of levels in the hierarchy
Returns
Vector of vectors containing epsilon values for each level

Definition at line 92 of file EpsilonScalingHandler.cc.

Here is the call graph for this function:

◆ get_epsilon_values_for_level()

const std::vector< double > & EpsilonScalingHandler::get_epsilon_values_for_level ( unsigned int  level_index) const

Get epsilon values for a specific level.

Parameters
level_indexIndex of the level (0 = coarsest)
Returns
Vector of epsilon values for the specified level

Definition at line 102 of file EpsilonScalingHandler.cc.

◆ print_epsilon_distribution()

void EpsilonScalingHandler::print_epsilon_distribution ( ) const

Print the epsilon distribution.

Definition at line 116 of file EpsilonScalingHandler.cc.

◆ generate_epsilon_sequence()

std::vector< double > EpsilonScalingHandler::generate_epsilon_sequence ( ) const
private

Generate the sequence of epsilon values.

Returns
Vector of epsilon values from largest to smallest

Definition at line 30 of file EpsilonScalingHandler.cc.

Here is the caller graph for this function:

◆ distribute_epsilon_values()

std::vector< std::vector< double > > EpsilonScalingHandler::distribute_epsilon_values ( const std::vector< double > &  epsilon_sequence,
unsigned int  num_levels 
)
private

Distribute epsilon values across levels.

Parameters
epsilon_sequenceSequence of epsilon values
num_levelsNumber of levels
Returns
Vector of vectors containing epsilon values for each level

Definition at line 44 of file EpsilonScalingHandler.cc.

Here is the caller graph for this function:

Member Data Documentation

◆ mpi_communicator

MPI_Comm EpsilonScalingHandler::mpi_communicator
private

The MPI communicator.

Definition at line 63 of file EpsilonScalingHandler.h.

◆ this_mpi_process

const unsigned int EpsilonScalingHandler::this_mpi_process
private

The rank of the current MPI process.

Definition at line 64 of file EpsilonScalingHandler.h.

◆ pcout

ConditionalOStream EpsilonScalingHandler::pcout
private

A conditional output stream for parallel printing.

Definition at line 65 of file EpsilonScalingHandler.h.

◆ initial_epsilon

double EpsilonScalingHandler::initial_epsilon
private

The initial epsilon value.

Definition at line 67 of file EpsilonScalingHandler.h.

◆ scaling_factor

double EpsilonScalingHandler::scaling_factor
private

The scaling factor for epsilon.

Definition at line 68 of file EpsilonScalingHandler.h.

◆ num_steps

unsigned int EpsilonScalingHandler::num_steps
private

The total number of epsilon scaling steps.

Definition at line 69 of file EpsilonScalingHandler.h.

◆ epsilon_distribution

std::vector<std::vector<double> > EpsilonScalingHandler::epsilon_distribution
private

The computed epsilon distribution.

Definition at line 71 of file EpsilonScalingHandler.h.


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