#include <exchangeoperator.h>
◆ Algorithm
template<typename T , std::size_t NDIM>
template<typename T , std::size_t NDIM>
◆ functionT
template<typename T , std::size_t NDIM>
template<typename T , std::size_t NDIM>
◆ vecfuncT
template<typename T , std::size_t NDIM>
template<typename T , std::size_t NDIM>
◆ ExchangeImpl() [1/3]
template<typename T , std::size_t NDIM>
template<typename T , std::size_t NDIM>
◆ ExchangeImpl() [2/3]
template<typename T , std::size_t NDIM>
template<typename T , std::size_t NDIM>
ctor with a conventional calculation
References madness::SCF::amo, madness::SCF::bmo, madness::conj(), madness::Exchange< T, NDIM >::ExchangeImpl< T, NDIM >::mo_bra, madness::Exchange< T, NDIM >::ExchangeImpl< T, NDIM >::mo_ket, and madness::Exchange< T, NDIM >::ExchangeImpl< T, NDIM >::world.
◆ ExchangeImpl() [3/3]
template<typename T , std::size_t NDIM>
template<typename T , std::size_t NDIM>
ctor with a nemo calculation
References madness::Nemo::get_calc(), madness::Exchange< T, NDIM >::ExchangeImpl< T, NDIM >::mo_bra, madness::Exchange< T, NDIM >::ExchangeImpl< T, NDIM >::mo_ket, madness::mul(), madness::NemoBase::ncf, madness::truncate(), and madness::Exchange< T, NDIM >::ExchangeImpl< T, NDIM >::world.
◆ compute_K_tile()
template<typename T , std::size_t NDIM>
template<typename T , std::size_t NDIM>
computing the upper triangle of the double sum (over vket and the K orbitals)
References madness::apply(), madness::compress(), madness::cpu_time(), madness::WorldGopInterface::fence(), madness::World::gop, ij(), madness::mul_sparse(), madness::norm_tree(), madness::reconstruct(), and madness::truncate().
Referenced by madness::Exchange< T, NDIM >::ExchangeImpl< T, NDIM >::MacroTaskExchangeSimple::compute_batch_in_asymmetric_matrix(), and madness::Exchange< T, NDIM >::ExchangeImpl< T, NDIM >::MacroTaskExchangeSimple::compute_diagonal_batch_in_symmetric_matrix().
◆ do_print_timings()
template<typename T , std::size_t NDIM>
template<typename T , std::size_t NDIM>
◆ info()
template<typename T , std::size_t NDIM>
template<typename T , std::size_t NDIM>
◆ is_symmetric()
template<typename T , std::size_t NDIM>
template<typename T , std::size_t NDIM>
◆ K_large_memory()
template<typename T , std::size_t NDIM>
template<typename T , std::size_t NDIM>
◆ K_macrotask_efficient()
template<typename T , std::size_t NDIM>
template<typename T , std::size_t NDIM>
exchange using macrotasks, i.e. apply K on a function in individual worlds
apply the exchange operator by tiling the exchange matrix
compute the matrix N_{ik} = N \phi_i \phi_k by tiles, with i,k \in batches A,B, do a local reduce within the tiles: K_{iB} = \sum_{k \in batch B} \phi_k N_{ik} and a universe-wide reduce of the tiles: K\phi_i = \sum_{batches B} K_{iB} saving up to half of the cpu time compared to the naive algorithm
- Template Parameters
-
T | number type |
NDIM | physical dimension of the argument vket |
- Parameters
-
vf | argument of the exchange operator |
mul_tol | cutoff parameter for sparse multiplication |
- Returns
- the exchange operator applied on vket
◆ K_small_memory()
template<typename T , std::size_t NDIM>
template<typename T , std::size_t NDIM>
◆ operator()()
template<typename T , std::size_t NDIM>
template<typename T , std::size_t NDIM>
apply the exchange operator on a vector of functions
note that only one spin is used (either alpha or beta orbitals)
- Parameters
-
[in] | vket | the orbitals |i> that the operator is applied on |
- Returns
- a vector of orbitals K| i>
◆ print_timer()
template<typename T , std::size_t NDIM>
template<typename T , std::size_t NDIM>
◆ printdebug()
template<typename T , std::size_t NDIM>
template<typename T , std::size_t NDIM>
◆ reset_timer()
template<typename T , std::size_t NDIM>
template<typename T , std::size_t NDIM>
◆ set_algorithm()
template<typename T , std::size_t NDIM>
template<typename T , std::size_t NDIM>
◆ set_bra_and_ket()
template<typename T , std::size_t NDIM>
template<typename T , std::size_t NDIM>
set the bra and ket orbital spaces, and the occupation
- Parameters
-
[in] | bra | bra space, must be provided as complex conjugate |
[in] | ket | ket space |
References madness::copy().
◆ set_poisson()
template<typename T , std::size_t NDIM>
template<typename T , std::size_t NDIM>
◆ set_printlevel()
template<typename T , std::size_t NDIM>
template<typename T , std::size_t NDIM>
◆ set_taskq()
template<typename T , std::size_t NDIM>
template<typename T , std::size_t NDIM>
◆ symmetric()
template<typename T , std::size_t NDIM>
template<typename T , std::size_t NDIM>
◆ algorithm_
template<typename T , std::size_t NDIM>
template<typename T , std::size_t NDIM>
◆ apply_timer
template<typename T , std::size_t NDIM>
template<typename T , std::size_t NDIM>
◆ lo
template<typename T , std::size_t NDIM>
template<typename T , std::size_t NDIM>
◆ mo_bra
template<typename T , std::size_t NDIM>
template<typename T , std::size_t NDIM>
◆ mo_ket
template<typename T , std::size_t NDIM>
template<typename T , std::size_t NDIM>
◆ mul1_timer
template<typename T , std::size_t NDIM>
template<typename T , std::size_t NDIM>
◆ mul2_timer
template<typename T , std::size_t NDIM>
template<typename T , std::size_t NDIM>
◆ mul_tol
template<typename T , std::size_t NDIM>
template<typename T , std::size_t NDIM>
◆ printlevel
template<typename T , std::size_t NDIM>
template<typename T , std::size_t NDIM>
◆ symmetric_
template<typename T , std::size_t NDIM>
template<typename T , std::size_t NDIM>
◆ taskq
template<typename T , std::size_t NDIM>
template<typename T , std::size_t NDIM>
◆ thresh
template<typename T , std::size_t NDIM>
template<typename T , std::size_t NDIM>
◆ world
template<typename T , std::size_t NDIM>
template<typename T , std::size_t NDIM>
The documentation for this class was generated from the following files: