MADNESS 0.10.1
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:

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

References cdata.

◆ 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 cdata, f, and MADNESS_CHECK_THROW.

Member Function Documentation

◆ active()

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

References f.

Referenced by append().

◆ append()

Member Data Documentation

◆ cdata

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

◆ 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: