MatsubaraStorage Class Reference#
|
DiFfRG
Discretization Framework for functional Renormalization Group flows
|
A class that stores Matsubara quadrature points and weights for a given T, E. Its main purpose is to avoid recomputing the quadrature points and weights for each Matsubara integrator and provide a search algorithm to find previously computed Matsubara quadratures. More...
#include <quadrature_provider.hh>
Public Member Functions | |
| template<typename NT = double> | |
| MatsubaraQuadrature< NT > & | get_matsubara_quadrature (const NT T, const NT E) |
| Return the MatsubaraQuadrature object for a given T, E. | |
| template<typename NT = double> | |
| 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. | |
| template<typename NT = double> | |
| 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_finite_interval. | |
| void | set_verbosity (int v) |
| void | set_report_port (ReportPort port) |
| void | set_vacuum_quad_size (const int size) |
| void | set_min_matsubara_size (const int value) |
| void | set_max_matsubara_size (const int value) |
| void | set_matsubara_precision_factor (const double value) |
| int | get_max_matsubara_size () const |
| The node ceiling every rule built here is clamped to. | |
| template<typename NT = double> | |
| 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. | |
Private Types | |
| template<typename NT = double> | |
| using | StorageType = std::map<double, std::map<double, MatsubaraQuadrature<NT>>> |
| template<typename NT = double> | |
| using | SubStorageType = std::map<double, MatsubaraQuadrature<NT>> |
| template<typename NT = double> | |
| using | TemperatureIterator = typename StorageType<NT>::iterator |
| template<typename NT = double> | |
| using | EnergyIterator = typename StorageType<NT>::mapped_type::iterator |
| template<typename NT = double> | |
| using | ExactStorageType = std::map<double, std::map<int, MatsubaraQuadrature<NT>>> |
| template<typename NT = double> | |
| using | ExactTemperatureIterator = typename ExactStorageType<NT>::iterator |
| template<typename NT = double> | |
| using | IntervalStorageType = std::map<size_t, std::map<double, MatsubaraQuadrature<NT>>> |
| template<typename NT = double> | |
| using | IntervalOrderIterator = typename IntervalStorageType<NT>::iterator |
Private Member Functions | |
| MatsubaraQuadrature< double > & | get_matsubara_quadrature_d (const double T, const double E) |
| MatsubaraQuadrature< float > & | get_matsubara_quadrature_f (const float T, const float E) |
| TemperatureIterator< double > | find_T_d (const double T) |
| TemperatureIterator< float > | find_T_f (const float T) |
| EnergyIterator< double > | find_E_d (const double E, TemperatureIterator< double > T_it) |
| EnergyIterator< float > | find_E_f (const float E, TemperatureIterator< float > T_it) |
| ExactTemperatureIterator< double > | find_exact_T_d (const double T) |
| ExactTemperatureIterator< float > | find_exact_T_f (const float T) |
| MatsubaraQuadrature< double > & | find_exact_d (const int n, ExactTemperatureIterator< double > T_it) |
| MatsubaraQuadrature< float > & | find_exact_f (const int n, ExactTemperatureIterator< float > T_it) |
| IntervalOrderIterator< double > | find_interval_order_d (const size_t order) |
| IntervalOrderIterator< float > | find_interval_order_f (const size_t order) |
| 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) |
| 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) |
Private Attributes | |
| StorageType< double > | quadratures_d |
| StorageType< float > | quadratures_f |
| ExactStorageType< double > | exact_sums_d |
| ExactStorageType< float > | exact_sums_f |
| IntervalStorageType< double > | intervals_d |
| IntervalStorageType< float > | intervals_f |
| int | verbosity = 0 |
| int | vacuum_quad_size = 64 |
| double | matsubara_precision_factor = 1 |
| int | min_matsubara_size = 8 |
| int | max_matsubara_size = 128 |
| std::mutex | m_mutex |
| ReportPort | log |
Detailed Description
A class that stores Matsubara quadrature points and weights for a given T, E. Its main purpose is to avoid recomputing the quadrature points and weights for each Matsubara integrator and provide a search algorithm to find previously computed Matsubara quadratures.
Member Typedef Documentation
◆ EnergyIterator
|
private |
◆ ExactStorageType
|
private |
◆ ExactTemperatureIterator
|
private |
◆ IntervalOrderIterator
|
private |
◆ IntervalStorageType
|
private |
◆ StorageType
|
private |
◆ SubStorageType
|
private |
◆ TemperatureIterator
|
private |
Member Function Documentation
◆ find_E_d()
|
private |
◆ find_E_f()
|
private |
◆ find_exact_d()
|
private |
◆ find_exact_f()
|
private |
◆ find_exact_T_d()
|
private |
◆ find_exact_T_f()
|
private |
◆ find_interval_d()
|
private |
◆ find_interval_f()
|
private |
◆ find_interval_order_d()
|
private |
◆ find_interval_order_f()
|
private |
◆ find_T_d()
|
private |
◆ find_T_f()
|
private |
◆ get_finite_interval()
|
inline |
Gauss-Legendre over [-cutoff, cutoff] for a summand of finite extent; see MatsubaraQuadrature::reinit_finite_interval.
Keyed on (order, cutoff). The cutoff is continuous – it tracks k – so this rebuilds once per RG step, exactly as the T=0 rule it replaces already did. The Gauss-Legendre rule itself is NOT rebuilt: it comes from QuadratureStorage and only the O(N) scaling by the cutoff happens here.
◆ get_matsubara_exact_sum()
|
inline |
The exact Matsubara sum for a summand of finite extent in the frequency.
Keyed on (T, node count) rather than on the cutoff, because that is all the rule depends on: the cutoff enters only through floor(cutoff / 2 pi T). Neighbouring RG steps therefore share an entry instead of each building their own, and the map stays bounded by the number of distinct mode counts the flow visits.
◆ get_matsubara_quadrature()
|
inline |
Return the MatsubaraQuadrature object for a given T, E.
◆ get_matsubara_quadrature_d()
|
private |
◆ get_matsubara_quadrature_f()
|
private |
◆ get_max_matsubara_size()
|
inline |
The node ceiling every rule built here is clamped to.
◆ predicted_size()
|
inline |
Nodes the Monien rule would want at (T, typical_E) under THIS provider's dials.
Exposed because choosing between a sum and an integral is the caller's decision (see QuadratureIntegrator_fT::refresh_matsubara) but the numbers that price it – the reach multiplier and matsubara_precision_factor – live here.
◆ set_matsubara_precision_factor()
| void DiFfRG::internal::MatsubaraStorage::set_matsubara_precision_factor | ( | const double | value | ) |
◆ set_max_matsubara_size()
| void DiFfRG::internal::MatsubaraStorage::set_max_matsubara_size | ( | const int | value | ) |
◆ set_min_matsubara_size()
| void DiFfRG::internal::MatsubaraStorage::set_min_matsubara_size | ( | const int | value | ) |
◆ set_report_port()
|
inline |
◆ set_vacuum_quad_size()
| void DiFfRG::internal::MatsubaraStorage::set_vacuum_quad_size | ( | const int | size | ) |
◆ set_verbosity()
| void DiFfRG::internal::MatsubaraStorage::set_verbosity | ( | int | v | ) |
Member Data Documentation
◆ exact_sums_d
|
private |
◆ exact_sums_f
|
private |
◆ intervals_d
|
private |
◆ intervals_f
|
private |
◆ log
|
private |
◆ m_mutex
|
private |
◆ matsubara_precision_factor
|
private |
◆ max_matsubara_size
|
private |
◆ min_matsubara_size
|
private |
◆ quadratures_d
|
private |
◆ quadratures_f
|
private |
◆ vacuum_quad_size
|
private |
◆ verbosity
|
private |
The documentation for this class was generated from the following file:
- /home/runner/work/DiFfRG_current/DiFfRG_current/DiFfRG/include/DiFfRG/common/quadrature/quadrature_provider.hh
Generated by