SemiDiscreteOT 1.0
Semi-Discrete Optimal Transport Library
Loading...
Searching...
No Matches
EpsilonScalingHandler.h
Go to the documentation of this file.
1#ifndef EPSILON_SCALING_HANDLER_H
2#define EPSILON_SCALING_HANDLER_H
3
4#include <deal.II/base/conditional_ostream.h>
5#include <deal.II/base/mpi.h>
6#include <vector>
7#include <string>
8#include <memory>
9#include <cmath>
10
11using namespace dealii;
12
26public:
35 EpsilonScalingHandler(const MPI_Comm& comm,
36 double initial_epsilon,
37 double scaling_factor,
38 unsigned int num_steps);
39
46 std::vector<std::vector<double>> compute_epsilon_distribution(
47 unsigned int num_levels);
48
55 const std::vector<double>& get_epsilon_values_for_level(unsigned int level_index) const;
56
60 void print_epsilon_distribution() const;
61
62private:
64 const unsigned int this_mpi_process;
65 ConditionalOStream pcout;
66
69 unsigned int num_steps;
70
71 std::vector<std::vector<double>> epsilon_distribution;
72
78 std::vector<double> generate_epsilon_sequence() const;
79
87 std::vector<std::vector<double>> distribute_epsilon_values(
88 const std::vector<double>& epsilon_sequence,
89 unsigned int num_levels);
90};
91
92#endif // EPSILON_SCALING_HANDLER_H
Handler for epsilon scaling in multilevel optimization.
MPI_Comm mpi_communicator
The MPI communicator.
double initial_epsilon
The initial epsilon value.
void print_epsilon_distribution() const
Print the epsilon distribution.
double scaling_factor
The scaling factor for epsilon.
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.
std::vector< std::vector< double > > epsilon_distribution
The computed epsilon distribution.
const std::vector< double > & get_epsilon_values_for_level(unsigned int level_index) const
Get epsilon values for a specific level.
unsigned int num_steps
The total number of epsilon scaling steps.
std::vector< std::vector< double > > compute_epsilon_distribution(unsigned int num_levels)
Compute epsilon distribution for multilevel optimization.
ConditionalOStream pcout
A conditional output stream for parallel printing.
const unsigned int this_mpi_process
The rank of the current MPI process.