MADNESS 0.10.1
madness::composite_term< T, NDIM > Struct Template Reference

#include <composite_product_op.h>

Collaboration diagram for madness::composite_term< T, NDIM >:

Public Types

using FL = Function<T, LDIM>
using FN = Function<T, NDIM>

Public Attributes

double coeff = 1.0
FN extra
FL factor1
 single LDIM factor per particle (uninitialized = skip)
FL factor2
FN ket
 NDIM ket factor. If uninitialized, the term ket is Σ_k p1[k] ⊗ p2[k].
std::vector< FL > p1
 parallel vectors forming the ket as a sum of hartree products (p1.size() == p2.size())
std::vector< FL > p2

Static Public Attributes

static constexpr std::size_t LDIM = NDIM / 2

Detailed Description

template<typename T, std::size_t NDIM>
struct madness::composite_term< T, NDIM >

One term of a composite product: ket(1,2) * factor1(1) * factor2(2) * extra(1,2)

The ket is either an explicit NDIM Function (ket) or a low-rank sum of hartree products ket(1,2) = Σ_k p1[k](1) ⊗ p2[k](2). Provide ket or (p1, p2); not both.

Member Typedef Documentation

◆ FL

template<typename T, std::size_t NDIM>
using madness::composite_term< T, NDIM >::FL = Function<T, LDIM>

◆ FN

template<typename T, std::size_t NDIM>
using madness::composite_term< T, NDIM >::FN = Function<T, NDIM>

Member Data Documentation

◆ coeff

template<typename T, std::size_t NDIM>
double madness::composite_term< T, NDIM >::coeff = 1.0

scalar prefactor applied to the entire product. Used by the DSL to fold scaled subtrees (α * f) into a single term without an explicit scalar Function literal.

Referenced by madness::detail::make_term_impl().

◆ extra

template<typename T, std::size_t NDIM>
FN madness::composite_term< T, NDIM >::extra

optional single NDIM extra factor (e.g. an on-demand ERI). Multiplied into the chain in function mode; ignored in inner mode (use the global bra instead).

Referenced by madness::detail::make_term_impl().

◆ factor1

template<typename T, std::size_t NDIM>
FL madness::composite_term< T, NDIM >::factor1

◆ factor2

◆ ket

template<typename T, std::size_t NDIM>
FN madness::composite_term< T, NDIM >::ket

NDIM ket factor. If uninitialized, the term ket is Σ_k p1[k] ⊗ p2[k].

Referenced by madness::detail::make_term_impl(), madness::detail::make_term_inputs_reconstructed(), madness::detail::make_term_inputs_redundant(), and run_tests().

◆ LDIM

template<typename T, std::size_t NDIM>
std::size_t madness::composite_term< T, NDIM >::LDIM = NDIM / 2
staticconstexpr

◆ p1

template<typename T, std::size_t NDIM>
std::vector<FL> madness::composite_term< T, NDIM >::p1

parallel vectors forming the ket as a sum of hartree products (p1.size() == p2.size())

Referenced by madness::detail::make_term_impl(), madness::detail::make_term_inputs_reconstructed(), madness::detail::make_term_inputs_redundant(), and run_tests().

◆ p2


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