Integrator_fT_p2_4D_2ang< dim, NT, KERNEL, ExecutionSpace > Class Template Reference#

DiFfRG: DiFfRG::Integrator_fT_p2_4D_2ang< dim, NT, KERNEL, ExecutionSpace > Class Template Reference
DiFfRG
Discretization Framework for functional Renormalization Group flows
DiFfRG::Integrator_fT_p2_4D_2ang< dim, NT, KERNEL, ExecutionSpace > Class Template Reference

#include <integrator_fT_p2_4d_2ang.hh>

Inheritance diagram for DiFfRG::Integrator_fT_p2_4D_2ang< dim, NT, KERNEL, ExecutionSpace >:
DiFfRG::QuadratureIntegrator_fT< 4, NT, internal::Transform_fT_p2_4D_2ang< NT, KERNEL >, ExecutionSpace > DiFfRG::AbstractIntegrator

Public Types

using ctype = typename get_type::ctype<NT>
 Numerical type to be used for integration tasks e.g. the argument or possible jacobians.
 
using execution_space = ExecutionSpace
 Execution space to be used for the integration, e.g. GPU_exec, TBB_exec.
 
- Public Types inherited from DiFfRG::QuadratureIntegrator_fT< 4, NT, internal::Transform_fT_p2_4D_2ang< NT, KERNEL >, ExecutionSpace >
using ctype
 Numerical type to be used for integration tasks e.g. the argument or possible jacobians.
 
using execution_space
 Execution space to be used for the integration, e.g. GPU_exec, TBB_exec.
 

Public Member Functions

void apply_matsubara_overrides (const ConfigTree &config)
 Apply the /integration/force_exact_matsubara_sum override, if the model sets it.
 
 Integrator_fT_p2_4D_2ang (QuadratureProvider &quadrature_provider, const ConfigTree &config)
 
 Integrator_fT_p2_4D_2ang (QuadratureProvider &quadrature_provider, const std::array< size_t, 3 > grid_size, ctype x_extent=2., ctype T=1, ctype typical_E=1)
 
void set_x_extent (ctype x_extent)
 
void set_k (ctype k)
 
void set_typical_E (ctype typical_E)
 
- Public Member Functions inherited from DiFfRG::QuadratureIntegrator_fT< 4, NT, internal::Transform_fT_p2_4D_2ang< NT, KERNEL >, ExecutionSpace >
 QuadratureIntegrator_fT (QuadratureProvider &quadrature_provider, const std::array< size_t, sdim > _grid_size, std::array< ctype, sdim > grid_min, std::array< ctype, sdim > grid_max, const std::array< QuadratureType, sdim > quadrature_type, const ctype T=1, const ctype typical_E=1)
 
void set_grid_extents (const std::array< ctype, sdim > grid_min, const std::array< ctype, sdim > grid_max)
 
void set_T (const ctype T)
 
void set_k (const ctype k)
 The RG scale, which is the DEFAULT frequency scale.
 
void set_typical_E (const ctype typical_E)
 The heaviest scale the summand carries, if the model knows it. Zero means "only k".
 
void set_frequency_cutoff (const ctype freq_cutoff)
 The frequency beyond which the summand is known to vanish, enabling the exact sum.
 
void set_allow_exact_matsubara_sum (const bool allow)
 Force the exact sum on (or off) regardless of the kernel's trait.
 
void set_matsubara_extent_margin (const ctype margin)
 
size_t get_matsubara_size () const
 Nodes on the frequency axis, INCLUDING the zero mode.
 
bool uses_exact_matsubara_sum () const
 True if the frequency axis is currently the exact sum rather than a Gaussian quadrature rule.
 
void get (NT &dest, const T &...t) const
 
void get (OT &dest, const T &...t) const
 
void get (ExecutionSpace &space, OT &dest, const Args &...t) const
 
void map (ExecutionSpace &space, const view_type integral_view, const Coordinates &coordinates, const Args &...args)
 
auto map (NT *dest, const Coordinates &coordinates, const Args &...args)
 
size_t quadrature_volume () const
 Points evaluated per external grid point. Half of the scheduler's cost score.
 
auto map_dist (NT *dest, const Coordinates &coordinates, const Args &...args)
 
- Public Member Functions inherited from DiFfRG::AbstractIntegrator
 AbstractIntegrator ()
 
KOKKOS_FORCEINLINE_FUNCTION size_t integrator_id () const
 Stable, rank-independent identity of this integrator.
 

Private Types

using Base = QuadratureIntegrator_fT<4, NT, internal::Transform_fT_p2_4D_2ang<NT, KERNEL>, ExecutionSpace>
 

Private Attributes

ctype x_extent
 
ctype k
 

Additional Inherited Members

- Static Public Member Functions inherited from DiFfRG::QuadratureIntegrator_fT< 4, NT, internal::Transform_fT_p2_4D_2ang< NT, KERNEL >, ExecutionSpace >
static KOKKOS_INLINE_FUNCTION NT node_value (const XArr &x, const PosArr &pos, const ArgTuple &args, const ctype xt, const ctype wt, const bool is_tail)
 One Matsubara node's contribution at one spatial point, weight excluded.
 
- Static Public Attributes inherited from DiFfRG::QuadratureIntegrator_fT< 4, NT, internal::Transform_fT_p2_4D_2ang< NT, KERNEL >, ExecutionSpace >
static constexpr int sdim
 Spatial dimension of the integration problem.
 
- Protected Attributes inherited from DiFfRG::QuadratureIntegrator_fT< 4, NT, internal::Transform_fT_p2_4D_2ang< NT, KERNEL >, ExecutionSpace >
ExecutionSpace space
 
QuadratureProvider & quadrature_provider
 
device::array< device::array< ctype, sdim >, 2 > grid_extents
 
device::array< ctype, sdim > grid_start
 
device::array< ctype, sdim > grid_scale
 
device::array< size_t, dim > grid_size
 
device::array< Kokkos::View< const ctype *, typename ExecutionSpace::memory_space >, sdim > nodes
 
device::array< Kokkos::View< const ctype *, typename ExecutionSpace::memory_space >, sdim > weights
 
ctype T
 
ctype m_k
 The RG scale, which is the frequency scale unless the model set one; see set_k().
 
ctype m_typical_E_user
 The model's heaviest scale, or zero if it never said; see set_typical_E().
 
ctype m_freq_cutoff
 Support boundary in frequency; zero means "unknown", which disables the exact sum.
 
size_t m_n_tail
 Nodes before the boundary of the concatenated axis of a split kernel; 0 when not split.
 
Kokkos::View< ctype *, typename ExecutionSpace::memory_space > m_split_nodes
 
Kokkos::View< ctype *, typename ExecutionSpace::memory_space > m_split_weights
 
bool m_allow_exact
 
bool m_using_exact
 
ctype m_extent_margin
 
Kokkos::View< const ctype *, typename ExecutionSpace::memory_space > matsubara_nodes
 
Kokkos::View< const ctype *, typename ExecutionSpace::memory_space > matsubara_weights
 
KokkosNDView< 1+dim, NT, ExecutionSpace > m_cache
 
device::array< size_t, 1+dim > m_cache_extents
 
Kokkos::View< ctype *, typename ExecutionSpace::memory_space > m_positions
 
std::string m_positions_key
 
Kokkos::View< NT *, ExecutionSpace > m_dest_device
 
size_t m_dest_device_size
 
Kokkos::View< NT *, PinnedHost_memory > m_dest_pinned
 Page-locked staging for the device path, so the result copy is genuinely asynchronous.
 
size_t m_dest_pinned_size
 
Kokkos::View< NT, typename ExecutionSpace::memory_space > m_result_view
 
Kokkos::View< NT, typenameExecutionSpace::memory_space >::host_mirror_type m_result_host
 
bool m_result_views_initialized
 
- Protected Attributes inherited from DiFfRG::AbstractIntegrator
size_t m_integrator_id
 

Member Typedef Documentation

◆ Base

template<int dim, typename NT , typename KERNEL , typename ExecutionSpace >
using DiFfRG::Integrator_fT_p2_4D_2ang< dim, NT, KERNEL, ExecutionSpace >::Base = QuadratureIntegrator_fT<4, NT, internal::Transform_fT_p2_4D_2ang<NT, KERNEL>, ExecutionSpace>
private

◆ ctype

template<int dim, typename NT , typename KERNEL , typename ExecutionSpace >
using DiFfRG::Integrator_fT_p2_4D_2ang< dim, NT, KERNEL, ExecutionSpace >::ctype = typename get_type::ctype<NT>

Numerical type to be used for integration tasks e.g. the argument or possible jacobians.

◆ execution_space

template<int dim, typename NT , typename KERNEL , typename ExecutionSpace >
using DiFfRG::Integrator_fT_p2_4D_2ang< dim, NT, KERNEL, ExecutionSpace >::execution_space = ExecutionSpace

Execution space to be used for the integration, e.g. GPU_exec, TBB_exec.

Constructor & Destructor Documentation

◆ Integrator_fT_p2_4D_2ang() [1/2]

template<int dim, typename NT , typename KERNEL , typename ExecutionSpace >
DiFfRG::Integrator_fT_p2_4D_2ang< dim, NT, KERNEL, ExecutionSpace >::Integrator_fT_p2_4D_2ang ( QuadratureProvider & quadrature_provider,
const ConfigTree & config )
inline

◆ Integrator_fT_p2_4D_2ang() [2/2]

template<int dim, typename NT , typename KERNEL , typename ExecutionSpace >
DiFfRG::Integrator_fT_p2_4D_2ang< dim, NT, KERNEL, ExecutionSpace >::Integrator_fT_p2_4D_2ang ( QuadratureProvider & quadrature_provider,
const std::array< size_t, 3 > grid_size,
ctype x_extent = 2.,
ctype T = 1,
ctype typical_E = 1 )
inline

Member Function Documentation

◆ apply_matsubara_overrides()

template<int dim, typename NT , typename KERNEL , typename ExecutionSpace >
void DiFfRG::Integrator_fT_p2_4D_2ang< dim, NT, KERNEL, ExecutionSpace >::apply_matsubara_overrides ( const ConfigTree & config)
inline

Apply the /integration/force_exact_matsubara_sum override, if the model sets it.

The per-kernel matsubara_finite_extent trait is the right default – it is derived from the diagram algebra – but two cases need a dial. A model whose kernels predate the trait can turn the exact sum on for the whole run, and a study can turn it off to price it against the Gaussian rule on the same kernel. Forcing it ON for a summand that does NOT vanish above sqrt(x_extent)*k silently truncates the sum, so it is opt-in and absent by default.

◆ set_k()

template<int dim, typename NT , typename KERNEL , typename ExecutionSpace >
void DiFfRG::Integrator_fT_p2_4D_2ang< dim, NT, KERNEL, ExecutionSpace >::set_k ( ctype k)
inline

◆ set_typical_E()

template<int dim, typename NT , typename KERNEL , typename ExecutionSpace >
void DiFfRG::Integrator_fT_p2_4D_2ang< dim, NT, KERNEL, ExecutionSpace >::set_typical_E ( ctype typical_E)
inline

◆ set_x_extent()

template<int dim, typename NT , typename KERNEL , typename ExecutionSpace >
void DiFfRG::Integrator_fT_p2_4D_2ang< dim, NT, KERNEL, ExecutionSpace >::set_x_extent ( ctype x_extent)
inline

Member Data Documentation

◆ k

template<int dim, typename NT , typename KERNEL , typename ExecutionSpace >
ctype DiFfRG::Integrator_fT_p2_4D_2ang< dim, NT, KERNEL, ExecutionSpace >::k
private

◆ x_extent

template<int dim, typename NT , typename KERNEL , typename ExecutionSpace >
ctype DiFfRG::Integrator_fT_p2_4D_2ang< dim, NT, KERNEL, ExecutionSpace >::x_extent
private

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