DiFfRG
Loading...
Searching...
No Matches
DiFfRG::internal::MatsubaraStorage Class Reference

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.
 
void set_verbosity (int v)
 
void set_vacuum_quad_size (const int size)
 
void set_min_matsubara_size (const int value)
 
void set_add_matsubara_size (const int value)
 

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
 

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)
 

Private Attributes

StorageType< double > quadratures_d
 
StorageType< float > quadratures_f
 
int verbosity = 0
 
int vacuum_quad_size = 48
 
int add_matsubara_size = 0
 
int min_matsubara_size = 32
 
std::mutex m_mutex
 

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

template<typename NT = double>
using DiFfRG::internal::MatsubaraStorage::EnergyIterator = typename StorageType<NT>::mapped_type::iterator
private

◆ StorageType

template<typename NT = double>
using DiFfRG::internal::MatsubaraStorage::StorageType = std::map<double, std::map<double, MatsubaraQuadrature<NT>>>
private

◆ SubStorageType

template<typename NT = double>
using DiFfRG::internal::MatsubaraStorage::SubStorageType = std::map<double, MatsubaraQuadrature<NT>>
private

◆ TemperatureIterator

template<typename NT = double>
using DiFfRG::internal::MatsubaraStorage::TemperatureIterator = typename StorageType<NT>::iterator
private

Member Function Documentation

◆ find_E_d()

EnergyIterator< double > DiFfRG::internal::MatsubaraStorage::find_E_d ( const double E,
TemperatureIterator< double > T_it )
private

◆ find_E_f()

EnergyIterator< float > DiFfRG::internal::MatsubaraStorage::find_E_f ( const float E,
TemperatureIterator< float > T_it )
private

◆ find_T_d()

TemperatureIterator< double > DiFfRG::internal::MatsubaraStorage::find_T_d ( const double T)
private

◆ find_T_f()

TemperatureIterator< float > DiFfRG::internal::MatsubaraStorage::find_T_f ( const float T)
private

◆ get_matsubara_quadrature()

template<typename NT = double>
MatsubaraQuadrature< NT > & DiFfRG::internal::MatsubaraStorage::get_matsubara_quadrature ( const NT T,
const NT E )
inline

Return the MatsubaraQuadrature object for a given T, E.

◆ get_matsubara_quadrature_d()

MatsubaraQuadrature< double > & DiFfRG::internal::MatsubaraStorage::get_matsubara_quadrature_d ( const double T,
const double E )
private

◆ get_matsubara_quadrature_f()

MatsubaraQuadrature< float > & DiFfRG::internal::MatsubaraStorage::get_matsubara_quadrature_f ( const float T,
const float E )
private

◆ set_add_matsubara_size()

void DiFfRG::internal::MatsubaraStorage::set_add_matsubara_size ( const int value)

◆ set_min_matsubara_size()

void DiFfRG::internal::MatsubaraStorage::set_min_matsubara_size ( const int value)

◆ 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

◆ add_matsubara_size

int DiFfRG::internal::MatsubaraStorage::add_matsubara_size = 0
private

◆ m_mutex

std::mutex DiFfRG::internal::MatsubaraStorage::m_mutex
private

◆ min_matsubara_size

int DiFfRG::internal::MatsubaraStorage::min_matsubara_size = 32
private

◆ quadratures_d

StorageType<double> DiFfRG::internal::MatsubaraStorage::quadratures_d
private

◆ quadratures_f

StorageType<float> DiFfRG::internal::MatsubaraStorage::quadratures_f
private

◆ vacuum_quad_size

int DiFfRG::internal::MatsubaraStorage::vacuum_quad_size = 48
private

◆ verbosity

int DiFfRG::internal::MatsubaraStorage::verbosity = 0
private

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