MADNESS 0.10.1
Public Types | Public Member Functions | Public Attributes | List of all members
madness::nemo_u1_functors Struct Reference

the cuspy half of the nemo tau decomposition, supplied pointwise More...

#include <xcfunctional.h>

Collaboration diagram for madness::nemo_u1_functors:
Collaboration graph
[legend]

Public Types

typedef madness::FunctionFunctorInterface< double, 3 > functorT
 

Public Member Functions

 nemo_u1_functors ()
 
 nemo_u1_functors (const std::vector< std::shared_ptr< functorT > > &u1)
 
bool active () const
 
void append (const madness::Key< 3 > &key, std::vector< madness::Tensor< double > > &t) const
 write U1 and |U1|^2 at this box's quadrature points into t[enum_u1*]
 

Public Attributes

madness::FunctionCommonData< double, 3 > cdata
 
std::vector< std::shared_ptr< functorT > > f
 

Detailed Description

the cuspy half of the nemo tau decomposition, supplied pointwise

Holds the four analytic ncf quantities that must never become MRA functions – $ U_{1,x}, U_{1,y}, U_{1,z}, |\mathbf U_1|^2 $ – and writes their values into the argument vector at the quadrature points of whatever box the caller is operating on. Empty unless a nuclear correlation factor is in play, in which case active() is true and the four enum_u1* slots are filled.

The point is that nothing is projected. A product of U1 with anything, formed as a Function, has to be represented on some tree; on a tree too coarse for U1's eprec-scale structure the polynomial fit rings across the whole box. Evaluating U1 here instead means its values go straight into the functional's pointwise arithmetic and only the potential is ever projected – which the existing machinery already does, and already has to.

$ |\mathbf U_1|^2 $ comes from its own functor rather than from summing the squares of the three components: that functor treats its diagonal specially, because smoothed_unitvec has norm < 1 inside eprec while the exact diagonal is $ (S'/S)^2 $.

Member Typedef Documentation

◆ functorT

Constructor & Destructor Documentation

◆ nemo_u1_functors() [1/2]

madness::nemo_u1_functors::nemo_u1_functors ( )
inline

◆ nemo_u1_functors() [2/2]

madness::nemo_u1_functors::nemo_u1_functors ( const std::vector< std::shared_ptr< functorT > > &  u1)
inlineexplicit
Parameters
[in]u1x, y, z components of U1 followed by |U1|^2 – four functors

References f, and MADNESS_CHECK_THROW.

Member Function Documentation

◆ active()

bool madness::nemo_u1_functors::active ( ) const
inline

◆ append()

void madness::nemo_u1_functors::append ( const madness::Key< 3 > &  key,
std::vector< madness::Tensor< double > > &  t 
) const
inline

Member Data Documentation

◆ cdata

madness::FunctionCommonData<double,3> madness::nemo_u1_functors::cdata

Referenced by append().

◆ f

std::vector<std::shared_ptr<functorT> > madness::nemo_u1_functors::f

Referenced by nemo_u1_functors(), active(), and append().


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