MADNESS 0.10.1
madness::Key< NDIM > Class Template Reference

Key is the index for a node of the 2^NDIM-tree. More...

#include <key.h>

Collaboration diagram for madness::Key< NDIM >:

Public Member Functions

 Key ()
 Default constructor makes an initialized key.
 Key (int n)
 Constructor with given n and l=0.
 Key (Level n, const Vector< Translation, NDIM > &l)
 Constructor with given n, l.
template<std::size_t LDIM, std::size_t KDIM>
void break_apart (Key< LDIM > &key1, Key< KDIM > &key2) const
 break key into two low-dimensional keys
uint64_t distsq () const
uint64_t distsq_bc (const array_of_bools< NDIM > &is_periodic) const
 like distsq() but accounts for periodicity
template<std::size_t NDIM2>
std::enable_if_t< NDIM >=NDIM2, uint64_t > distsq_bc (const array_of_bools< NDIM > &is_periodic, const std::array< std::size_t, NDIM2 > &axes) const
 like "periodic" distsq() but only selects the prescribed axes
uint64_t distsq_images (const array_of_bools< NDIM > &is_periodic) const
 like distsq_bc() but to the nearest lattice image other than the home cell
template<std::size_t VDIM>
Key< VDIM > extract_back () const
 extract a new key consisting of last VDIM dimensions of this
template<std::size_t VDIM>
Key< NDIM-VDIM > extract_complement_key (const std::array< int, VDIM > &v) const
 extract a new key with the Translations complementary to the ones indicated in the v array
template<std::size_t VDIM>
Key< VDIM > extract_front () const
 extract a new key consisting of first VDIM dimensions of this
template<std::size_t VDIM>
Key< VDIM > extract_key (const std::array< int, VDIM > &v) const
 extract a new key with the Translations indicated in the v array
hashT hash () const
bool is_child_of (const Key &key) const
bool is_farther_out_than (const Key< NDIM > &other) const
 return if the other key is pointing in the same direction and is farther out
bool is_invalid () const
 Checks if a key is invalid.
bool is_neighbor_of (const Key &key, const array_of_bools< NDIM > &bperiodic) const
 Assuming keys are at the same level, returns true if displaced by no more than 1 in any direction.
template<typename T>
bool is_neighbor_of (const Vector< T, NDIM > &simpt, const array_of_bools< NDIM > &bperiodic) const
 True iff this box is a neighbor of a point in simulation coordinates.
bool is_parent_of (const Key &key) const
bool is_valid () const
 Checks if a key is valid.
Level level () const
template<std::size_t LDIM>
Key< NDIM+LDIM > merge_with (const Key< LDIM > &rhs) const
 merge with other key (ie concatenate), use level of rhs, not of this
Key neighbor (const Key< NDIM > &disp) const
 given a displacement, generate a neighbor key; ignore boundary conditions and disp's level
Key neighbor (const Vector< Translation, NDIM > &disp) const
 given a displacement, generate a neighbor key; ignore boundary conditions and disp's level
bool operator!= (const Key &other) const
bool operator< (const Key &other) const
 Comparison operator less than to enable storage in STL map.
bool operator== (const Key &other) const
 Equality test.
const Translation & operator[] (std::size_t d) const
 const accessor to elements of this->translation()
Key parent (int generation=1) const
 Returns the key of the parent.
double real_distsq (const madness::Tensor< double > &widths) const
double real_distsq_bc (const array_of_bools< NDIM > &is_periodic, const Tensor< double > &widths) const
 like real_distsq() but accounts for periodicity
double real_distsq_images (const array_of_bools< NDIM > &is_periodic, const Tensor< double > &widths) const
 like real_distsq_bc() but to the nearest lattice image other than the home cell (see distsq_images())
double real_distsq_images_centers (const array_of_bools< NDIM > &is_periodic, const Tensor< double > &widths) const
 like real_distsq_images() but between the centers of the boxes
void rehash ()
 Recomputes hashval ... presently only done when reading from external storage.
bool thisKeyContains (const Vector< double, NDIM > &x, const unsigned int &dim0, const unsigned int &dim1) const
 check if this MultiIndex contains point x, disregarding these two dimensions
const Vector< Translation, NDIM > & translation () const

Static Public Member Functions

static constexpr uint64_t distsq_images_axis_max ()
 the largest contribution of one axis to distsq_images(); NDIM <= 6 of them sum below 2^63
static Key< NDIM > invalid ()
 Returns an invalid key.

Static Public Attributes

static const std::size_t static_size = NDIM

Private Member Functions

template<typename F>
auto distsq_images_impl (const array_of_bools< NDIM > &is_periodic, F &&axis_distsq) const

Private Attributes

hashT hashval = 0
Vector< Translation, NDIM > l = Vector<Translation, NDIM>(0)
Level n = 0

Static Private Attributes

static constexpr uint64_t distsq_images_axis_cap = uint64_t(1) << 30
 |l| in boxes at which distsq_images() saturates

Friends

class KeyChildIterator< NDIM >

Detailed Description

template<std::size_t NDIM>
class madness::Key< NDIM >

Key is the index for a node of the 2^NDIM-tree.

See KeyChildIterator for facile generation of children, and foreach_child(parent,op) for facile application of operators to child keys.

Constructor & Destructor Documentation

◆ Key() [1/3]

◆ Key() [2/3]

template<std::size_t NDIM>
madness::Key< NDIM >::Key ( Level n,
const Vector< Translation, NDIM > & l )
inline

Constructor with given n, l.

◆ Key() [3/3]

template<std::size_t NDIM>
madness::Key< NDIM >::Key ( int n)
inline

Constructor with given n and l=0.

Member Function Documentation

◆ break_apart()

template<std::size_t NDIM>
template<std::size_t LDIM, std::size_t KDIM>
void madness::Key< NDIM >::break_apart ( Key< LDIM > & key1,
Key< KDIM > & key2 ) const
inline

break key into two low-dimensional keys

Referenced by madness::FunctionImpl< T, NDIM >::Vphi_op_NS< opT, LDIM >::compute_error_from_inaccurate_refinement(), madness::FunctionImpl< T, LDIM >::dirac_convolution_op(), madness::FunctionImpl< T, LDIM >::do_dirac_convolution(), madness::SeparatedConvolution< double, 3 >::get_source_key(), madness::composite_product_op_NS< T, NDIM, opT, LDIM >::make_child(), madness::FunctionImpl< T, NDIM >::hartree_op< LDIM, leaf_opT >::make_child(), madness::FunctionImpl< T, NDIM >::multiply_op< LDIM >::make_child(), madness::FunctionImpl< T, NDIM >::project_out_op< LDIM >::make_child(), madness::FunctionImpl< T, NDIM >::recursive_apply_op< opT, LDIM >::make_child(), madness::FunctionImpl< T, NDIM >::recursive_apply_op_vec< opT, LDIM >::make_child(), madness::FunctionImpl< T, NDIM >::Vphi_ij_u_op_NS< opT, LDIM >::make_child(), madness::FunctionImpl< T, NDIM >::Vphi_op_NS< opT, LDIM >::make_child(), madness::composite_product_op_NS< T, NDIM, opT, LDIM >::make_sum_coeffs(), madness::FunctionImpl< T, NDIM >::Vphi_ij_u_op_NS< opT, LDIM >::make_sum_coeffs(), madness::FunctionImpl< T, NDIM >::Vphi_op_NS< opT, LDIM >::make_sum_coeffs(), madness::composite_product_op_NS< T, NDIM, opT, LDIM >::make_term_coeffs(), madness::ElectronCuspyBox_op< T, NDIM >::operator()(), madness::FunctionImpl< T, NDIM >::do_inner_local_on_demand< R >::operator()(), madness::FunctionImpl< T, NDIM >::hartree_op< LDIM, leaf_opT >::operator()(), madness::FunctionImpl< T, NDIM >::multiply_op< LDIM >::operator()(), madness::FunctionImpl< T, NDIM >::pointwise_multiplier< LDIM >::operator()(), madness::FunctionImpl< T, NDIM >::project_out_op< LDIM >::operator()(), madness::FunctionImpl< T, NDIM >::recursive_apply_op< opT, LDIM >::operator()(), madness::FunctionImpl< T, NDIM >::recursive_apply_op_vec< opT, LDIM >::operator()(), madness::NuclearCuspyBox_op< T, NDIM >::operator()(), madness::FunctionImpl< T, LDIM >::partial_inner_contract(), and madness::FunctionImpl< T, LDIM >::project_out2().

◆ distsq()

template<std::size_t NDIM>
uint64_t madness::Key< NDIM >::distsq ( ) const
inline

◆ distsq_bc() [1/2]

template<std::size_t NDIM>
uint64_t madness::Key< NDIM >::distsq_bc ( const array_of_bools< NDIM > & is_periodic) const
inline

like distsq() but accounts for periodicity

◆ distsq_bc() [2/2]

template<std::size_t NDIM>
template<std::size_t NDIM2>
std::enable_if_t< NDIM >=NDIM2, uint64_t > madness::Key< NDIM >::distsq_bc ( const array_of_bools< NDIM > & is_periodic,
const std::array< std::size_t, NDIM2 > & axes ) const
inline

like "periodic" distsq() but only selects the prescribed axes

◆ distsq_images()

template<std::size_t NDIM>
uint64_t madness::Key< NDIM >::distsq_images ( const array_of_bools< NDIM > & is_periodic) const
inline

like distsq_bc() but to the nearest lattice image other than the home cell

The rest-of-crystal kernel (OperatorInfo::images_only) at displacement l sums the free-space kernel at l + R 2^n over the lattice vectors R != 0 of the periodic axes, so it decays with this distance as an ordinary lattice-summed kernel decays with distsq_bc().

Note
saturates: each axis contributes at most distsq_images_axis_max(), since from level 31 on the offset to the next-nearest image (~2^n boxes) squared does not fit; real_distsq_images() does not

◆ distsq_images_axis_max()

template<std::size_t NDIM>
constexpr uint64_t madness::Key< NDIM >::distsq_images_axis_max ( )
inlinestaticconstexpr

the largest contribution of one axis to distsq_images(); NDIM <= 6 of them sum below 2^63

◆ distsq_images_impl()

template<std::size_t NDIM>
template<typename F>
auto madness::Key< NDIM >::distsq_images_impl ( const array_of_bools< NDIM > & is_periodic,
F && axis_distsq ) const
inlineprivate

min over R != 0 of sum_d axis_distsq(d, l_d + R_d 2^n), R_d = 0 along nonperiodic axes. The sum is separable, so the minimum takes the nearest image on every axis (as distsq_bc() does) unless that is R = 0 on every periodic axis; then exactly one periodic axis moves to its next-nearest image, the one that costs least.

Referenced by madness::Key< D >::distsq_images(), madness::Key< D >::real_distsq_images(), and madness::Key< D >::real_distsq_images_centers().

◆ extract_back()

template<std::size_t NDIM>
template<std::size_t VDIM>
Key< VDIM > madness::Key< NDIM >::extract_back ( ) const
inline

extract a new key consisting of last VDIM dimensions of this

◆ extract_complement_key()

template<std::size_t NDIM>
template<std::size_t VDIM>
Key< NDIM-VDIM > madness::Key< NDIM >::extract_complement_key ( const std::array< int, VDIM > & v) const
inline

extract a new key with the Translations complementary to the ones indicated in the v array

Referenced by madness::FunctionImpl< T, LDIM >::recur_down_for_contraction_map().

◆ extract_front()

template<std::size_t NDIM>
template<std::size_t VDIM>
Key< VDIM > madness::Key< NDIM >::extract_front ( ) const
inline

extract a new key consisting of first VDIM dimensions of this

◆ extract_key()

template<std::size_t NDIM>
template<std::size_t VDIM>
Key< VDIM > madness::Key< NDIM >::extract_key ( const std::array< int, VDIM > & v) const
inline

extract a new key with the Translations indicated in the v array

Referenced by madness::Key< D >::extract_complement_key(), and madness::FunctionImpl< T, LDIM >::recur_down_for_contraction_map().

◆ hash()

◆ invalid()

template<std::size_t NDIM>
Key< NDIM > madness::Key< NDIM >::invalid ( )
inlinestatic

◆ is_child_of()

template<std::size_t NDIM>
bool madness::Key< NDIM >::is_child_of ( const Key< NDIM > & key) const
inline

◆ is_farther_out_than()

template<std::size_t NDIM>
bool madness::Key< NDIM >::is_farther_out_than ( const Key< NDIM > & other) const
inline

return if the other key is pointing in the same direction and is farther out

unlike in distsq() the direction is taken into account, and other must be longer than this in each dimension

Parameters
[in]othera key
Returns
if other is farther out

◆ is_invalid()

template<std::size_t NDIM>
bool madness::Key< NDIM >::is_invalid ( ) const
inline

◆ is_neighbor_of() [1/2]

template<std::size_t NDIM>
bool madness::Key< NDIM >::is_neighbor_of ( const Key< NDIM > & key,
const array_of_bools< NDIM > & bperiodic ) const
inline

Assuming keys are at the same level, returns true if displaced by no more than 1 in any direction.

Assumes key and this are at the same level

Referenced by madness::Specialbox_op< T, NDIM >::check_special_points(), and madness::FunctionImpl< T, NDIM >::project_refine_op().

◆ is_neighbor_of() [2/2]

template<std::size_t NDIM>
template<typename T>
bool madness::Key< NDIM >::is_neighbor_of ( const Vector< T, NDIM > & simpt,
const array_of_bools< NDIM > & bperiodic ) const
inline

True iff this box is a neighbor of a point in simulation coordinates.

Geometrically: this box's closure overlaps the closed box of half-width 1 (one box-width at this level) centered on simpt. Equivalently, the Chebyshev distance from this box to simpt (measured in box-widths) is at most 1.

This is the point-argument analogue of the key-vs-key overload is_neighbor_of(Key, bperiodic); both express "within one box-width" adjacency. It supersedes the legacy idiom simpt2key(simpt, n).is_neighbor_of(*this, ...), which was asymmetric for points lying on box boundaries because simpt2key truncates to a single key. The new test reports face-, edge-, and corner-coincident points as contained in every box that shares the face/edge/corner — and therefore every neighbor of those boxes is correctly flagged too.

Parameters
[in]simptpoint in simulation coordinates (in [0,1]^NDIM, modulo 1 in periodic dimensions)
[in]bperiodicper-dimension periodic-boundary flags

◆ is_parent_of()

template<std::size_t NDIM>
bool madness::Key< NDIM >::is_parent_of ( const Key< NDIM > & key) const
inline

◆ is_valid()

template<std::size_t NDIM>
bool madness::Key< NDIM >::is_valid ( ) const
inline

◆ level()

template<std::size_t NDIM>
Level madness::Key< NDIM >::level ( ) const
inline

Referenced by madness::FunctionNode< T, NDIM >::accumulate(), madness::FunctionNode< T, NDIM >::accumulate2(), madness::nemo_u1_functors::append(), madness::FunctionImpl< T, LDIM >::apply_1d_realspace_push_op(), madness::Specialbox_op< T, NDIM >::box_is_at_boundary(), madness::Specialbox_op< T, NDIM >::check_special_points(), madness::FunctionImpl< T, NDIM >::chop_at_level(), madness::FunctionCommonFunctionality< T, NDIM >::coeffs2values(), madness::FunctionCommonFunctionality< T, NDIM >::coeffs2values(), madness::FunctionImpl< T, LDIM >::coeffs2values(), madness::FunctionImpl< T, LDIM >::coeffs2values(), madness::Leaf_op< T, NDIM, opT, specialboxT >::compare_to_parent(), madness::FunctionImpl< T, NDIM >::compress_op(), madness::Key< D >::distsq_bc(), madness::Key< D >::distsq_bc(), madness::Key< D >::distsq_images_impl(), madness::FunctionImpl< T, LDIM >::do_apply(), madness::FunctionImpl< T, LDIM >::do_apply_directed_screening(), madness::FunctionImpl< T, LDIM >::do_binary_op(), madness::Derivative< double, 1 >::do_diff2b(), madness::Derivative< double, 1 >::do_diff2i(), madness::FunctionImpl< T, LDIM >::do_mul(), madness::FunctionImpl< T, NDIM >::do_print_grid(), madness::FunctionImpl< T, NDIM >::do_print_tree(), madness::FunctionImpl< T, NDIM >::do_print_tree_graphviz(), madness::FunctionImpl< T, NDIM >::do_print_tree_json(), madness::FunctionImpl< T, NDIM >::erase(), madness::FunctionImpl< T, LDIM >::err_box(), madness::FunctionImpl< T, NDIM >::eval(), madness::FunctionImpl< T, NDIM >::eval_local_only(), madness::FunctionImpl< T, NDIM >::eval_local_only(), madness::FunctionImpl< T, NDIM >::evaldepthpt(), madness::FunctionImpl< T, NDIM >::evalR(), madness::Key< D >::extract_back(), madness::Key< D >::extract_front(), madness::Key< D >::extract_key(), madness::fcube(), madness::FunctionImpl< T, LDIM >::fcube_for_mul(), madness::FunctionImpl< T, LDIM >::fcube_for_mul(), madness::FunctionImpl< T, NDIM >::recursive_apply_op2< opT >::finalize(), madness::FunctionImpl< T, NDIM >::recursive_apply_op< opT, LDIM >::finalize(), madness::FunctionImpl< T, NDIM >::recursive_apply_op_vec< opT, LDIM >::finalize(), madness::DerivativeBase< T, NDIM >::find_neighbor(), madness::FunctionImpl< T, LDIM >::get_contraction_node_lists(), madness::FunctionImpl< T, NDIM >::get_norm_tree_recursive(), madness::FunctionImpl< Q, NDIM >::get_norm_tree_recursive(), FunctionIOData< T, NDIM >::initialize_func_coeffs(), madness::FunctionImpl< T, NDIM >::insert_zero_down_to_initial_level(), madness::CoeffTracker< T, LDIM >::make_child(), madness::TwoElectronInterface< T, NDIM >::make_coeff(), madness::Key< D >::merge_with(), madness::Convolution1D< double_complex >::mod_nonstandard(), madness::FunctionImpl< T, LDIM >::mul(), madness::DerivativeBase< T, NDIM >::neighbor(), madness::FunctionImpl< T, NDIM >::neighbor(), madness::Key< D >::neighbor(), madness::Key< D >::neighbor(), madness::FunctionImpl< T, NDIM >::neighbor_in_volume(), madness::MyPmap< D >::not_so_simple_hash(), madness::FunctionImpl< T, LDIM >::NS_fcube_for_mul(), madness::FunctionImpl< T, LDIM >::NScoeffs2values(), DirichletLBCost< NDIM >::operator()(), LBCost::operator()(), LBCost::operator()(), lbcost< T, NDIM >::operator()(), madness::composite_product_op_NS< T, NDIM, opT, LDIM >::operator()(), madness::ElectronCuspyBox_op< T, NDIM >::operator()(), madness::FunctionImpl< T, NDIM >::do_check_symmetry_local::operator()(), madness::FunctionImpl< T, NDIM >::do_map_and_mirror::operator()(), madness::FunctionImpl< T, NDIM >::do_mapdim::operator()(), madness::FunctionImpl< T, NDIM >::do_mirror::operator()(), madness::FunctionImpl< T, NDIM >::do_standard::operator()(), madness::FunctionImpl< T, NDIM >::do_unary_op_value_inplace< opT >::operator()(), madness::FunctionImpl< T, NDIM >::multiply_op< LDIM >::operator()(), madness::FunctionImpl< T, NDIM >::Vphi_ij_u_op_NS< opT, LDIM >::operator()(), madness::FunctionImpl< T, NDIM >::Vphi_op_NS< opT, LDIM >::operator()(), madness::hartree_convolute_leaf_op< T, NDIM, LDIM, opT >::operator()(), madness::hartree_leaf_op< T, NDIM >::operator()(), madness::hartree_leaf_op_vec< T, NDIM >::operator()(), madness::lbcost< T, NDIM >::operator()(), madness::NuclearCuspyBox_op< T, NDIM >::operator()(), madness::op_leaf_op< T, NDIM, opT >::operator()(), madness::op_leaf_op< T, NDIM, opT >::operator()(), true_if_n_gt_op::operator()(), YetAnotherWrapperClass::operator()(), madness::operator<<(), LevelPmap::owner(), LevelPmapX::owner(), madness::LBDeuxPmap< NDIM >::owner(), PartitionPmap::owner(), madness::FunctionImpl< T, NDIM >::parent_to_child(), madness::FunctionImpl< T, NDIM >::parent_to_child_NS(), madness::FunctionImpl< T, LDIM >::partial_inner_contract(), madness::Leaf_op< T, NDIM, opT, specialboxT >::post_screening(), madness::FunctionImpl< T, NDIM >::print_plane_local(), madness::FunctionImpl< T, NDIM >::project(), madness::FunctionImpl< T, NDIM >::project_refine_op(), madness::FunctionImpl< T, LDIM >::read_grid(), madness::FunctionImpl< T, LDIM >::read_grid2(), madness::Key< D >::real_distsq_bc(), madness::FunctionImpl< T, NDIM >::reconstruct_op(), madness::FunctionImpl< T, LDIM >::recur_down_for_contraction_map(), madness::FunctionImpl< T, LDIM >::refine_op(), madness::FunctionNode< T, NDIM >::set_has_children_recursive(), madness::MyPmap< D >::simple_hash(), madness::Leaf_op< T, NDIM, opT, specialboxT >::special_refinement_needed(), madness::LBNodeDeux< NDIM >::sum(), madness::LoadBalanceDeux< NDIM >::sum(), madness::FunctionImpl< T, NDIM >::trace_local(), madness::FunctionImpl< T, NDIM >::trickle_down_op(), madness::FunctionImpl< T, NDIM >::truncate_op(), madness::FunctionImpl< T, NDIM >::truncate_reconstructed_op(), madness::FunctionImpl< T, NDIM >::truncate_spawn(), madness::FunctionImpl< T, NDIM >::truncate_tol(), madness::FunctionCommonFunctionality< T, NDIM >::values2coeffs(), madness::FunctionCommonFunctionality< T, NDIM >::values2coeffs(), madness::FunctionImpl< T, LDIM >::values2coeffs(), madness::FunctionImpl< T, LDIM >::values2coeffs(), madness::FunctionImpl< T, LDIM >::values2NScoeffs(), FunctionIO< double, D >::write_function_coeffs(), and write_function_coeffs().

◆ merge_with()

template<std::size_t NDIM>
template<std::size_t LDIM>
Key< NDIM+LDIM > madness::Key< NDIM >::merge_with ( const Key< LDIM > & rhs) const
inline

◆ neighbor() [1/2]

template<std::size_t NDIM>
Key madness::Key< NDIM >::neighbor ( const Key< NDIM > & disp) const
inline

given a displacement, generate a neighbor key; ignore boundary conditions and disp's level

Parameters
[in]dispthe displacement
Returns
a new key

◆ neighbor() [2/2]

template<std::size_t NDIM>
Key madness::Key< NDIM >::neighbor ( const Vector< Translation, NDIM > & disp) const
inline

given a displacement, generate a neighbor key; ignore boundary conditions and disp's level

Parameters
[in]dispthe displacement
Returns
a new key

◆ operator!=()

template<std::size_t NDIM>
bool madness::Key< NDIM >::operator!= ( const Key< NDIM > & other) const
inline

◆ operator<()

template<std::size_t NDIM>
bool madness::Key< NDIM >::operator< ( const Key< NDIM > & other) const
inline

Comparison operator less than to enable storage in STL map.

◆ operator==()

template<std::size_t NDIM>
bool madness::Key< NDIM >::operator== ( const Key< NDIM > & other) const
inline

Equality test.

◆ operator[]()

template<std::size_t NDIM>
const Translation & madness::Key< NDIM >::operator[] ( std::size_t d) const
inline

const accessor to elements of this->translation()

◆ parent()

◆ real_distsq()

template<std::size_t NDIM>
double madness::Key< NDIM >::real_distsq ( const madness::Tensor< double > & widths) const
inline

◆ real_distsq_bc()

template<std::size_t NDIM>
double madness::Key< NDIM >::real_distsq_bc ( const array_of_bools< NDIM > & is_periodic,
const Tensor< double > & widths ) const
inline

like real_distsq() but accounts for periodicity

◆ real_distsq_images()

template<std::size_t NDIM>
double madness::Key< NDIM >::real_distsq_images ( const array_of_bools< NDIM > & is_periodic,
const Tensor< double > & widths ) const
inline

like real_distsq_bc() but to the nearest lattice image other than the home cell (see distsq_images())

◆ real_distsq_images_centers()

template<std::size_t NDIM>
double madness::Key< NDIM >::real_distsq_images_centers ( const array_of_bools< NDIM > & is_periodic,
const Tensor< double > & widths ) const
inline

like real_distsq_images() but between the centers of the boxes

real_distsq_images() is the least distance between points of the two boxes, which is zero for every displacement one box from an image whatever the axis. The center distance is the axis width there, so it tells those displacements apart (Displacements::sort_displacements_images breaks ties with it).

◆ rehash()

template<std::size_t NDIM>
void madness::Key< NDIM >::rehash ( )
inline

Recomputes hashval ... presently only done when reading from external storage.

Referenced by madness::Key< D >::Key(), madness::Key< D >::Key(), madness::Key< D >::invalid(), and madness::archive::ArchiveLoadImpl< BinaryFstreamInputArchive, Key< NDIM > >::load().

◆ thisKeyContains()

template<std::size_t NDIM>
bool madness::Key< NDIM >::thisKeyContains ( const Vector< double, NDIM > & x,
const unsigned int & dim0,
const unsigned int & dim1 ) const
inline

check if this MultiIndex contains point x, disregarding these two dimensions

Referenced by madness::FunctionImpl< T, NDIM >::print_plane_local().

◆ translation()

template<std::size_t NDIM>
const Vector< Translation, NDIM > & madness::Key< NDIM >::translation ( ) const
inline

Referenced by madness::nemo_u1_functors::append(), madness::FunctionImpl< T, LDIM >::apply_1d_realspace_push_op(), madness::Specialbox_op< T, NDIM >::box_is_at_boundary(), madness::FunctionImpl< T, NDIM >::child_patch(), madness::Key< D >::distsq_bc(), madness::Key< D >::distsq_bc(), madness::Key< D >::distsq_images_impl(), madness::DerivativeBase< T, NDIM >::do_diff1(), madness::Derivative< double, 1 >::do_diff2b(), madness::FunctionImpl< T, NDIM >::do_print_grid(), madness::FunctionImpl< T, NDIM >::do_print_tree_graphviz(), madness::FunctionImpl< T, NDIM >::do_print_tree_json(), madness::FunctionImpl< T, NDIM >::eval(), madness::FunctionImpl< T, NDIM >::eval_local_only(), madness::FunctionImpl< T, NDIM >::eval_local_only(), madness::FunctionImpl< Q, NDIM >::eval_local_only(), madness::FunctionImpl< T, NDIM >::evaldepthpt(), madness::FunctionImpl< T, NDIM >::evalR(), madness::Key< D >::extract_back(), madness::Key< D >::extract_front(), madness::Key< D >::extract_key(), madness::fcube(), madness::FunctionImpl< T, LDIM >::fcube_for_mul(), madness::FunctionImpl< T, LDIM >::fcube_for_mul(), madness::FunctionImpl< T, LDIM >::get_contraction_node_lists(), madness::SeparatedConvolution< double, 3 >::getmuop(), madness::SeparatedConvolution< double, 3 >::getmuop_modified(), madness::SimpleCache< Q, NDIM >::getptr(), madness::LBNodeDeux< NDIM >::index(), FunctionIOData< T, NDIM >::initialize_func_coeffs(), madness::Key< D >::is_farther_out_than(), madness::TwoElectronInterface< T, NDIM >::make_coeff(), madness::Key< D >::merge_with(), madness::Convolution1D< double_complex >::mod_nonstandard(), madness::DerivativeBase< T, NDIM >::neighbor(), madness::FunctionImpl< T, NDIM >::neighbor(), madness::Key< D >::neighbor(), madness::Key< D >::neighbor(), madness::FunctionImpl< T, NDIM >::neighbor_in_volume(), madness::MyPmap< D >::not_so_simple_hash(), madness::FunctionImpl< T, LDIM >::NS_fcube_for_mul(), madness::FunctionImpl< T, NDIM >::do_check_symmetry_local::operator()(), madness::FunctionImpl< T, NDIM >::do_map_and_mirror::operator()(), madness::FunctionImpl< T, NDIM >::do_mapdim::operator()(), madness::FunctionImpl< T, NDIM >::do_mirror::operator()(), YetAnotherWrapperClass::operator()(), madness::operator<<(), madness::SeparatedConvolution< double, 3 >::partial_upsample(), madness::FunctionImpl< T, NDIM >::print_plane_local(), madness::FunctionImpl< T, LDIM >::read_grid(), madness::FunctionImpl< T, LDIM >::read_grid2(), madness::Key< D >::real_distsq_bc(), madness::SimpleCache< Q, NDIM >::set(), madness::FunctionImpl< T, NDIM >::upsample(), madness::SeparatedConvolution< double, 3 >::upsample(), FunctionIO< double, D >::write_function_coeffs(), and write_function_coeffs().

◆ KeyChildIterator< NDIM >

template<std::size_t NDIM>
friend class KeyChildIterator< NDIM >
friend

Member Data Documentation

◆ distsq_images_axis_cap

template<std::size_t NDIM>
uint64_t madness::Key< NDIM >::distsq_images_axis_cap = uint64_t(1) << 30
staticconstexprprivate

|l| in boxes at which distsq_images() saturates

◆ hashval

template<std::size_t NDIM>
hashT Key::hashval = 0
private

◆ l

◆ n

◆ static_size

template<std::size_t NDIM>
const std::size_t madness::Key< NDIM >::static_size = NDIM
static

The documentation for this class was generated from the following files: