/home/runner/work/DiFfRG_current/DiFfRG_current/DiFfRG/include/DiFfRG/common/quadrature/quadrature_provider.hh Source File#
|
DiFfRG
Discretization Framework for functional Renormalization Group flows
|
quadrature_provider.hh
Go to the documentation of this file.
30 template <typename NT = double> MatsubaraQuadrature<NT> &get_matsubara_quadrature(const NT T, const NT E)
55 template <typename NT = double> MatsubaraQuadrature<NT> &get_matsubara_exact_sum(const NT T, const NT freq_cutoff)
122 template <typename NT = double> using StorageType = std::map<double, std::map<double, MatsubaraQuadrature<NT>>>;
123 template <typename NT = double> using SubStorageType = std::map<double, MatsubaraQuadrature<NT>>;
126 template <typename NT = double> using EnergyIterator = typename StorageType<NT>::mapped_type::iterator;
134 template <typename NT = double> using ExactStorageType = std::map<double, std::map<int, MatsubaraQuadrature<NT>>>;
135 template <typename NT = double> using ExactTemperatureIterator = typename ExactStorageType<NT>::iterator;
151 template <typename NT = double> using IntervalOrderIterator = typename IntervalStorageType<NT>::iterator;
156 MatsubaraQuadrature<double> &find_interval_d(const double cutoff, IntervalOrderIterator<double> o_it,
159 MatsubaraQuadrature<float> &find_interval_f(const float cutoff, IntervalOrderIterator<float> o_it,
187 template <typename NT = double> Quadrature<NT> &get_quadrature(const size_t order, const QuadratureType type)
211 template <typename NT = double> using StorageType = std::map<QuadratureType, std::map<size_t, Quadrature<NT>>>;
215 template <typename NT = double> using OrderIterator = typename StorageType<NT>::mapped_type::iterator;
289 return matsubara_storage.get_matsubara_quadrature<NT>(T, typical_E).template nodes<MemorySpace>();
301 return matsubara_storage.get_matsubara_quadrature<NT>(T, typical_E).template weights<MemorySpace>();
309 template <typename NT = double> const MatsubaraQuadrature<NT> &matsubara_rule(const NT T, const NT typical_E)
320 template <typename NT = double> int matsubara_predicted_size(const NT T, const NT typical_E) const
329 template <typename NT = double> const MatsubaraQuadrature<NT> &matsubara_exact_sum(const NT T, const NT freq_cutoff)
342 return matsubara_storage.template get_finite_interval<NT>(cutoff, order, gl.template nodes<CPU_memory>(),
A hierarchical configuration tree, readable from JSON and TOML files.
Definition config_tree.hh:32
A quadrature rule for (bosonic) Matsubara frequencies, based on the method of Monien [1]....
Definition matsubara.hh:25
static int modes_below(const NT T, const NT freq_cutoff)
Number of positive Matsubara modes strictly inside a frequency cutoff.
static int predict_size(const NT T, const NT typical_E=1., const double precision_factor=1., const int step=2)
Nodes the Monien rule needs to reach past typical_E at this temperature.
A class that provides quadrature points and weights, in host and device memory. The quadrature points...
Definition quadrature_provider.hh:239
const MatsubaraQuadrature< NT > & matsubara_finite_interval(const NT cutoff, const size_t order)
Gauss-Legendre over the finite frequency interval a compactly supported summand lives on,...
Definition quadrature_provider.hh:339
QuadratureProvider()
internal::QuadratureStorage quadrature_storage
Definition quadrature_provider.hh:382
auto matsubara_weights(const NT T, const NT typical_E)
Get the quadrature weights for a quadrature of size quadrature_size.
Definition quadrature_provider.hh:299
int max_matsubara_size() const
The node ceiling /integration/max_matsubara_size, i.e. the budget the rule choice is made against.
Definition quadrature_provider.hh:315
auto nodes(const size_t order, const QuadratureType type=QuadratureType::legendre)
Get the quadrature points for a quadrature of size quadrature_size.
Definition quadrature_provider.hh:263
const MatsubaraQuadrature< NT > & matsubara_rule(const NT T, const NT typical_E)
The Matsubara rule itself, for callers that need more than nodes and weights – its size,...
Definition quadrature_provider.hh:309
auto matsubara_nodes(const NT T, const NT typical_E)
Get the quadrature points for a quadrature of size quadrature_size.
Definition quadrature_provider.hh:287
std::optional< RunReporter > own_logger
Definition quadrature_provider.hh:380
const MatsubaraQuadrature< NT > & matsubara_exact_sum(const NT T, const NT freq_cutoff)
The exact Matsubara sum for a summand that vanishes above freq_cutoff. See MatsubaraQuadrature::reini...
Definition quadrature_provider.hh:329
int matsubara_predicted_size(const NT T, const NT typical_E) const
Nodes the Monien rule would want at (T, typical_E). See MatsubaraStorage::predicted_size.
Definition quadrature_provider.hh:320
QuadratureProvider(const ConfigTree &config)
Construct a provider that reports the quadratures it builds.
void initialize(const ConfigTree &config, ReportPort log)
internal::MatsubaraStorage matsubara_storage
Definition quadrature_provider.hh:381
QuadratureProvider(const ConfigTree &config, ReportPort log)
auto weights(const size_t order, const QuadratureType type=QuadratureType::legendre)
Get the quadrature weights for a quadrature of size quadrature_size.
Definition quadrature_provider.hh:275
ExecutionSpace next_execution_space()
Hand out one of a small pool of execution space instances, round robin.
Definition quadrature_provider.hh:362
Definition quadrature.hh:56
Definition run_reporter.hh:96
A class that stores Matsubara quadrature points and weights for a given T, E. Its main purpose is to ...
Definition quadrature_provider.hh:24
EnergyIterator< double > find_E_d(const double E, TemperatureIterator< double > T_it)
MatsubaraQuadrature< double > & find_interval_d(const double cutoff, IntervalOrderIterator< double > o_it, const Kokkos::View< const double *, CPU_memory > n, const Kokkos::View< const double *, CPU_memory > w)
int predicted_size(const NT T, const NT typical_E) const
Nodes the Monien rule would want at (T, typical_E) under THIS provider's dials.
Definition quadrature_provider.hh:113
std::map< size_t, std::map< double, MatsubaraQuadrature< NT > > > IntervalStorageType
Definition quadrature_provider.hh:150
std::map< double, std::map< int, MatsubaraQuadrature< NT > > > ExactStorageType
Definition quadrature_provider.hh:134
void set_min_matsubara_size(const int value)
ExactStorageType< float > exact_sums_f
Definition quadrature_provider.hh:147
void set_vacuum_quad_size(const int size)
MatsubaraQuadrature< float > & find_interval_f(const float cutoff, IntervalOrderIterator< float > o_it, const Kokkos::View< const float *, CPU_memory > n, const Kokkos::View< const float *, CPU_memory > w)
StorageType< double > quadratures_d
Definition quadrature_provider.hh:143
typename ExactStorageType< NT >::iterator ExactTemperatureIterator
Definition quadrature_provider.hh:135
void set_verbosity(int v)
ExactTemperatureIterator< float > find_exact_T_f(const float T)
EnergyIterator< float > find_E_f(const float E, TemperatureIterator< float > T_it)
MatsubaraQuadrature< NT > & get_matsubara_exact_sum(const NT T, const NT freq_cutoff)
The exact Matsubara sum for a summand of finite extent in the frequency.
Definition quadrature_provider.hh:55
void set_report_port(ReportPort port)
Definition quadrature_provider.hh:96
void set_max_matsubara_size(const int value)
int min_matsubara_size
Definition quadrature_provider.hh:172
int vacuum_quad_size
Definition quadrature_provider.hh:170
ExactStorageType< double > exact_sums_d
Definition quadrature_provider.hh:146
MatsubaraQuadrature< NT > & get_matsubara_quadrature(const NT T, const NT E)
Return the MatsubaraQuadrature object for a given T, E.
Definition quadrature_provider.hh:30
TemperatureIterator< double > find_T_d(const double T)
IntervalOrderIterator< float > find_interval_order_f(const size_t order)
std::map< double, MatsubaraQuadrature< NT > > SubStorageType
Definition quadrature_provider.hh:123
MatsubaraQuadrature< float > & get_matsubara_quadrature_f(const float T, const float E)
IntervalStorageType< float > intervals_f
Definition quadrature_provider.hh:164
typename StorageType< NT >::mapped_type::iterator EnergyIterator
Definition quadrature_provider.hh:126
typename IntervalStorageType< NT >::iterator IntervalOrderIterator
Definition quadrature_provider.hh:151
IntervalOrderIterator< double > find_interval_order_d(const size_t order)
typename StorageType< NT >::iterator TemperatureIterator
Definition quadrature_provider.hh:125
MatsubaraQuadrature< double > & find_exact_d(const int n, ExactTemperatureIterator< double > T_it)
IntervalStorageType< double > intervals_d
Definition quadrature_provider.hh:163
MatsubaraQuadrature< NT > & get_finite_interval(const NT cutoff, const size_t order, const Kokkos::View< const NT *, CPU_memory > gl_nodes, const Kokkos::View< const NT *, CPU_memory > gl_weights)
Gauss-Legendre over [-cutoff, cutoff] for a summand of finite extent; see MatsubaraQuadrature::reinit...
Definition quadrature_provider.hh:80
TemperatureIterator< float > find_T_f(const float T)
ExactTemperatureIterator< double > find_exact_T_d(const double T)
MatsubaraQuadrature< float > & find_exact_f(const int n, ExactTemperatureIterator< float > T_it)
void set_matsubara_precision_factor(const double value)
double matsubara_precision_factor
Definition quadrature_provider.hh:171
int max_matsubara_size
Definition quadrature_provider.hh:173
MatsubaraQuadrature< double > & get_matsubara_quadrature_d(const double T, const double E)
StorageType< float > quadratures_f
Definition quadrature_provider.hh:144
std::map< double, std::map< double, MatsubaraQuadrature< NT > > > StorageType
Definition quadrature_provider.hh:122
int get_max_matsubara_size() const
The node ceiling every rule built here is clamped to.
Definition quadrature_provider.hh:104
A class that stores Quadrature points and weights for a given type and order Its main purpose is to a...
Definition quadrature_provider.hh:185
typename StorageType< NT >::mapped_type::iterator OrderIterator
Definition quadrature_provider.hh:215
Quadrature< NT > & get_quadrature(const size_t order, const QuadratureType type)
Definition quadrature_provider.hh:187
TypeIterator< float > find_type_f(const QuadratureType type)
std::map< size_t, Quadrature< NT > > SubStorageType
Definition quadrature_provider.hh:212
TypeIterator< double > find_type_d(const QuadratureType type)
typename StorageType< NT >::iterator TypeIterator
Definition quadrature_provider.hh:214
void set_report_port(ReportPort port)
Definition quadrature_provider.hh:205
OrderIterator< double > find_order_d(const size_t order, TypeIterator< double > type_it)
StorageType< float > quadratures_f
Definition quadrature_provider.hh:224
Quadrature< double > & get_quadrature_d(const size_t order, const QuadratureType type)
std::map< QuadratureType, std::map< size_t, Quadrature< NT > > > StorageType
Definition quadrature_provider.hh:211
OrderIterator< float > find_order_f(const size_t order, TypeIterator< float > type_it)
StorageType< double > quadratures_d
Definition quadrature_provider.hh:223
Quadrature< float > & get_quadrature_f(const size_t order, const QuadratureType type)
void set_verbosity(int v)
Definition complex_math.hh:10
Definition quadrature.hh:44
Generated by