MADNESS 0.10.1
madness::FunctionImpl< T, NDIM >::recursive_apply_op2< opT > Struct Template Reference

recursive part of recursive_apply More...

#include <funcimpl.h>

Collaboration diagram for madness::FunctionImpl< T, NDIM >::recursive_apply_op2< opT >:

Public Types

typedef std::pair< bool, coeffT > argT
typedef CoeffTracker< T, NDIM > ctT
typedef recursive_apply_op2< opT > this_type

Public Member Functions

 recursive_apply_op2 ()=default
 recursive_apply_op2 (const recursive_apply_op2 &other)
 recursive_apply_op2 (implT *result, const ctT &iaf, const opT *apply_op)
Future< this_type > activate () const
 retrieve the coefficients (parent coeffs might be remote)
argT finalize (const double kernel_norm, const keyT &key, const coeffT &coeff, const implT *r) const
 sole purpose is to wait for the kernel norm, wrap it and send it back to caller
this_type forward_ctor (implT *result1, const ctT &iaf1, const opT *apply_op1)
 taskq-compatible ctor
this_type make_child (const keyT &child) const
argT operator() (const Key< NDIM > &key) const
 send off the application of the operator
bool randomize () const
template<typename Archive>
void serialize (const Archive &ar)

Public Attributes

const opT * apply_op
 need this for randomization
ctT iaf
implT * result

Detailed Description

template<typename T, std::size_t NDIM>
template<typename opT>
struct madness::FunctionImpl< T, NDIM >::recursive_apply_op2< opT >

recursive part of recursive_apply

Member Typedef Documentation

◆ argT

template<typename T, std::size_t NDIM>
template<typename opT>
typedef std::pair<bool,coeffT> madness::FunctionImpl< T, NDIM >::recursive_apply_op2< opT >::argT

◆ ctT

template<typename T, std::size_t NDIM>
template<typename opT>
typedef CoeffTracker<T,NDIM> madness::FunctionImpl< T, NDIM >::recursive_apply_op2< opT >::ctT

◆ this_type

template<typename T, std::size_t NDIM>
template<typename opT>
typedef recursive_apply_op2<opT> madness::FunctionImpl< T, NDIM >::recursive_apply_op2< opT >::this_type

Constructor & Destructor Documentation

◆ recursive_apply_op2() [1/3]

template<typename T, std::size_t NDIM>
template<typename opT>
madness::FunctionImpl< T, NDIM >::recursive_apply_op2< opT >::recursive_apply_op2 ( )
default

Referenced by recursive_apply_op2().

◆ recursive_apply_op2() [2/3]

template<typename T, std::size_t NDIM>
template<typename opT>
madness::FunctionImpl< T, NDIM >::recursive_apply_op2< opT >::recursive_apply_op2 ( implT * result,
const ctT & iaf,
const opT * apply_op )
inline

References apply_op, iaf, and result.

◆ recursive_apply_op2() [3/3]

template<typename T, std::size_t NDIM>
template<typename opT>
madness::FunctionImpl< T, NDIM >::recursive_apply_op2< opT >::recursive_apply_op2 ( const recursive_apply_op2< opT > & other)
inline

Member Function Documentation

◆ activate()

template<typename T, std::size_t NDIM>
template<typename opT>
Future< this_type > madness::FunctionImpl< T, NDIM >::recursive_apply_op2< opT >::activate ( ) const
inline

retrieve the coefficients (parent coeffs might be remote)

References apply_op, f1, forward_ctor(), iaf, result, and madness::detail::wrap_mem_fn().

◆ finalize()

template<typename T, std::size_t NDIM>
template<typename opT>
argT madness::FunctionImpl< T, NDIM >::recursive_apply_op2< opT >::finalize ( const double kernel_norm,
const keyT & key,
const coeffT & coeff,
const implT * r ) const
inline

◆ forward_ctor()

template<typename T, std::size_t NDIM>
template<typename opT>
this_type madness::FunctionImpl< T, NDIM >::recursive_apply_op2< opT >::forward_ctor ( implT * result1,
const ctT & iaf1,
const opT * apply_op1 )
inline

taskq-compatible ctor

Referenced by activate().

◆ make_child()

template<typename T, std::size_t NDIM>
template<typename opT>
this_type madness::FunctionImpl< T, NDIM >::recursive_apply_op2< opT >::make_child ( const keyT & child) const
inline

References apply_op, iaf, and result.

◆ operator()()

template<typename T, std::size_t NDIM>
template<typename opT>
argT madness::FunctionImpl< T, NDIM >::recursive_apply_op2< opT >::operator() ( const Key< NDIM > & key) const
inline

send off the application of the operator

the first (core) neighbor (ie. the box itself) is processed immediately, all other ones are shoved into the taskq

Returns
a pair<bool,coeffT>(is_leaf,coeffT())

References apply_op, madness::FunctionImpl< T, NDIM >::do_apply_directed_screening(), madness::finalize(), madness::GenTensor< T >::has_data(), iaf, p(), and result.

◆ randomize()

template<typename T, std::size_t NDIM>
template<typename opT>
bool madness::FunctionImpl< T, NDIM >::recursive_apply_op2< opT >::randomize ( ) const
inline

◆ serialize()

template<typename T, std::size_t NDIM>
template<typename opT>
template<typename Archive>
void madness::FunctionImpl< T, NDIM >::recursive_apply_op2< opT >::serialize ( const Archive & ar)
inline

References apply_op, iaf, and result.

Member Data Documentation

◆ apply_op

template<typename T, std::size_t NDIM>
template<typename opT>
const opT* madness::FunctionImpl< T, NDIM >::recursive_apply_op2< opT >::apply_op

need this for randomization

Referenced by recursive_apply_op2(), recursive_apply_op2(), activate(), make_child(), operator()(), and serialize().

◆ iaf

template<typename T, std::size_t NDIM>
template<typename opT>
ctT madness::FunctionImpl< T, NDIM >::recursive_apply_op2< opT >::iaf

◆ result

template<typename T, std::size_t NDIM>
template<typename opT>
implT* madness::FunctionImpl< T, NDIM >::recursive_apply_op2< opT >::result
mutable

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