MADNESS 0.10.1
madness::FunctionNode< T, NDIM > Class Template Reference

FunctionNode holds the coefficients, etc., at each node of the 2^NDIM-tree. More...

#include <funcimpl.h>

Public Types

typedef GenTensor< T > coeffT
typedef WorldContainer< Key< NDIM >, FunctionNode< T, NDIM > > dcT
typedef Tensor< T > tensorT

Public Member Functions

 FunctionNode ()
 Default constructor makes node without coeff or children.
 FunctionNode (const coeffT &coeff, bool has_children=false)
 Constructor from given coefficients with optional children.
 FunctionNode (const coeffT &coeff, double norm_tree, bool has_children)
 FunctionNode (const coeffT &coeff, double norm_tree, double dnorm_tree, double snorm, double dnorm, bool has_children)
 FunctionNode (const FunctionNode< T, NDIM > &other)
void accumulate (const coeffT &t, const typename FunctionNode< T, NDIM >::dcT &c, const Key< NDIM > &key, const TensorArgs &args, const bool do_svd_add)
 Accumulate inplace and if necessary connect node to parent.
void accumulate2 (const tensorT &t, const typename FunctionNode< T, NDIM >::dcT &c, const Key< NDIM > &key)
 Accumulate inplace and if necessary connect node to parent.
void clear_coeff ()
 Clears the coefficients (has_coeff() will subsequently return false).
coeffT & coeff ()
 Returns a non-const reference to the tensor containing the coeffs.
const coeffT & coeff () const
 Returns a const reference to the tensor containing the coeffs.
void consolidate_buffer (const TensorArgs &args, const bool do_svd_add)
template<typename Q>
FunctionNode< Q, NDIM > convert () const
 Copy with possible type conversion of coefficients, copying all other state.
template<typename Q, typename R>
void gaxpy_inplace (const T &alpha, const FunctionNode< Q, NDIM > &other, const R &beta)
 General bi-linear operation — this = this*alpha + other*beta.
double get_dnorm () const
 return the precomputed norm of the (virtual) d coefficients
double get_dnorm_tree () const
 Gets the value of dnorm_tree.
double get_norm_tree () const
 Gets the value of norm_tree.
double get_snorm () const
 get the precomputed norm of the (virtual) s coefficients
bool has_children () const
 Returns true if this node has children.
bool has_coeff () const
 Returns true if there are coefficients in this node.
bool is_invalid () const
 Returns true if this node is invalid (no coeffs and no children).
bool is_leaf () const
 Returns true if this does not have children.
FunctionNode< T, NDIM > & operator= (const FunctionNode< T, NDIM > &other)
void print_json (std::ostream &s) const
void recompute_snorm_and_dnorm (const FunctionCommonData< T, NDIM > &cdata)
void reduceRank (const double &eps)
 reduces the rank of the coefficients (if applicable)
template<typename Q>
void scale (Q a)
 Scale the coefficients of this node.
void scale_norms (const double a)
 Multiply the stored norms by a, for coefficients scaled by some q with |q| = a.
template<typename Archive>
void serialize (Archive &ar)
void set_coeff (const coeffT &coeffs)
 Takes a shallow copy of the coeff — same as this->coeff()=coeff.
void set_dnorm (const double dn)
 set the precomputed norm of the (virtual) d coefficients
void set_dnorm_tree (double dnorm_tree)
 Sets the value of dnorm_tree.
void set_has_children (bool flag)
 Sets has_children attribute to value of flag.
void set_has_children_recursive (const typename FunctionNode< T, NDIM >::dcT &c, const Key< NDIM > &key)
 Sets has_children attribute to true recurring up to ensure connected.
void set_is_leaf (bool flag)
 Sets has_children attribute to value of !flag.
void set_norm_tree (double norm_tree)
 Sets the value of norm_tree.
void set_snorm (const double sn)
 set the precomputed norm of the (virtual) s coefficients
size_t size () const
 Returns the number of coefficients in this node.
T trace_conj (const FunctionNode< T, NDIM > &rhs) const

Private Attributes

coeffT _coeffs
 The coefficients, if any.
double _dnorm_tree =NORM_TREE_UNCOMPUTED
 norm of the difference coefficients summed up the tree
bool _has_children
 True if there are children.
double _norm_tree
 After norm_tree will contain norm of sum coefficients summed up tree.
coeffT buffer
 The coefficients, if any.
double dnorm =-1.0
 norm of the d coefficients, also defined if there are no d coefficients
double snorm =-1.0
 norm of the s coefficients

Detailed Description

template<typename T, std::size_t NDIM>
class madness::FunctionNode< T, NDIM >

FunctionNode holds the coefficients, etc., at each node of the 2^NDIM-tree.

Member Typedef Documentation

◆ coeffT

template<typename T, std::size_t NDIM>
typedef GenTensor<T> madness::FunctionNode< T, NDIM >::coeffT

◆ dcT

template<typename T, std::size_t NDIM>
typedef WorldContainer<Key<NDIM> , FunctionNode<T, NDIM> > madness::FunctionNode< T, NDIM >::dcT

Type of container holding the nodes

◆ tensorT

template<typename T, std::size_t NDIM>
typedef Tensor<T> madness::FunctionNode< T, NDIM >::tensorT

Constructor & Destructor Documentation

◆ FunctionNode() [1/5]

template<typename T, std::size_t NDIM>
madness::FunctionNode< T, NDIM >::FunctionNode ( )
inline

Default constructor makes node without coeff or children.

References _coeffs, _dnorm_tree, _has_children, _norm_tree, and madness::NORM_TREE_UNCOMPUTED.

Referenced by FunctionNode(), convert(), gaxpy_inplace(), operator=(), and trace_conj().

◆ FunctionNode() [2/5]

template<typename T, std::size_t NDIM>
madness::FunctionNode< T, NDIM >::FunctionNode ( const coeffT & coeff,
bool has_children = false )
inlineexplicit

Constructor from given coefficients with optional children.

Note that only a shallow copy of the coeff are taken so you should pass in a deep copy if you want the node to take ownership.

References _coeffs, _dnorm_tree, _has_children, _norm_tree, coeff(), has_children(), and madness::NORM_TREE_UNCOMPUTED.

◆ FunctionNode() [3/5]

template<typename T, std::size_t NDIM>
madness::FunctionNode< T, NDIM >::FunctionNode ( const coeffT & coeff,
double norm_tree,
bool has_children )
inlineexplicit

◆ FunctionNode() [4/5]

template<typename T, std::size_t NDIM>
madness::FunctionNode< T, NDIM >::FunctionNode ( const coeffT & coeff,
double norm_tree,
double dnorm_tree,
double snorm,
double dnorm,
bool has_children )
inlineexplicit

◆ FunctionNode() [5/5]

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

Member Function Documentation

◆ accumulate()

◆ accumulate2()

◆ clear_coeff()

◆ coeff() [1/2]

template<typename T, std::size_t NDIM>
coeffT & madness::FunctionNode< T, NDIM >::coeff ( )
inline

Returns a non-const reference to the tensor containing the coeffs.

Returns an empty tensor if there are no coefficients.

References _coeffs, MADNESS_ASSERT, and madness::MAXK.

Referenced by FunctionNode(), FunctionNode(), FunctionNode(), accumulate(), accumulate2(), madness::FunctionImpl< T, LDIM >::add_keys_to_map(), madness::FunctionImpl< T, NDIM >::add_scalar_inplace(), madness::FunctionImpl< T, NDIM >::autorefine_square_test(), madness::FunctionImpl< T, NDIM >::broaden(), clear_coeff(), consolidate_buffer(), convert(), madness::FunctionImpl< T, LDIM >::dirac_convolution_op(), 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 >::evalR(), gaxpy_inplace(), madness::FunctionImpl< T, LDIM >::get_contraction_node_lists(), madness::load_balance(), madness::FunctionImpl< T, NDIM >::nCoeff_local(), LBCost::operator()(), madness::DerivativeBase< T, NDIM >::submit_op::operator()(), madness::detail::scaleinplace< T, NDIM >::operator()(), madness::FunctionImpl< T, NDIM >::do_accumulate_trees< Q, R >::operator()(), madness::FunctionImpl< T, NDIM >::do_average::operator()(), madness::FunctionImpl< T, NDIM >::do_change_tensor_type::operator()(), madness::FunctionImpl< T, NDIM >::do_check_symmetry_local::operator()(), madness::FunctionImpl< T, NDIM >::do_dot_local< R >::operator()(), madness::FunctionImpl< T, NDIM >::do_inner_local< R >::operator()(), madness::FunctionImpl< T, NDIM >::do_inner_local_on_demand< R >::operator()(), madness::FunctionImpl< T, NDIM >::do_keep_sum_coeffs::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_norm2sq_local::operator()(), madness::FunctionImpl< T, NDIM >::do_standard::operator()(), madness::FunctionImpl< T, NDIM >::do_truncate_NS_leafs::operator()(), madness::FunctionImpl< T, NDIM >::do_unary_op_value_inplace< opT >::operator()(), madness::FunctionImpl< T, NDIM >::project_out_op< LDIM >::operator()(), madness::LBCost::operator()(), madness::operator<<(), operator=(), print_json(), madness::FunctionImpl< T, NDIM >::print_plane_local(), madness::FunctionImpl< T, NDIM >::print_stats(), madness::FunctionImpl< T, NDIM >::project(), madness::FunctionImpl< T, LDIM >::project_out2(), madness::FunctionImpl< T, NDIM >::real_size(), recompute_snorm_and_dnorm(), madness::FunctionImpl< T, NDIM >::reconstruct_op(), madness::FunctionImpl< T, LDIM >::recur_down_for_contraction_map(), madness::FunctionImpl< T, LDIM >::refine_op(), serialize(), set_coeff(), madness::FunctionImpl< T, NDIM >::sock_it_to_me(), madness::FunctionImpl< T, NDIM >::sock_it_to_me_too(), madness::FunctionImpl< T, NDIM >::sum_down_spawn(), madness::FunctionImpl< T, NDIM >::trace_local(), madness::FunctionImpl< T, NDIM >::trickle_down_op(), madness::FunctionImpl< T, NDIM >::truncate_op(), madness::FunctionImpl< T, NDIM >::truncate_spawn(), and madness::FunctionImpl< T, LDIM >::unary_op_coeff_inplace().

◆ coeff() [2/2]

template<typename T, std::size_t NDIM>
const coeffT & madness::FunctionNode< T, NDIM >::coeff ( ) const
inline

Returns a const reference to the tensor containing the coeffs.

Returns an empty tensor if there are no coefficeints.

References _coeffs.

◆ consolidate_buffer()

template<typename T, std::size_t NDIM>
void madness::FunctionNode< T, NDIM >::consolidate_buffer ( const TensorArgs & args,
const bool do_svd_add )
inline

◆ convert()

template<typename T, std::size_t NDIM>
template<typename Q>
FunctionNode< Q, NDIM > madness::FunctionNode< T, NDIM >::convert ( ) const
inline

Copy with possible type conversion of coefficients, copying all other state.

Choose to not overload copy and type conversion operators so there are no automatic type conversions.

References FunctionNode(), _dnorm_tree, _has_children, _norm_tree, coeff(), madness::convert(), dnorm, and snorm.

◆ gaxpy_inplace()

template<typename T, std::size_t NDIM>
template<typename Q, typename R>
void madness::FunctionNode< T, NDIM >::gaxpy_inplace ( const T & alpha,
const FunctionNode< Q, NDIM > & other,
const R & beta )
inline

General bi-linear operation — this = this*alpha + other*beta.

This/other may not have coefficients. Has_children will be true in the result if either this/other have children.

References FunctionNode(), _has_children, alpha, beta, coeff(), madness::GenTensor< T >::gaxpy(), has_children(), has_coeff(), R, and madness::GenTensor< T >::scale().

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

◆ get_dnorm()

template<typename T, std::size_t NDIM>
double madness::FunctionNode< T, NDIM >::get_dnorm ( ) const
inline

return the precomputed norm of the (virtual) d coefficients

References dnorm.

Referenced by madness::FunctionImpl< T, LDIM >::get_contraction_node_lists(), madness::operator<<(), and print_json().

◆ get_dnorm_tree()

template<typename T, std::size_t NDIM>
double madness::FunctionNode< T, NDIM >::get_dnorm_tree ( ) const
inline

Gets the value of dnorm_tree.

References _dnorm_tree.

Referenced by madness::operator<<().

◆ get_norm_tree()

template<typename T, std::size_t NDIM>
double madness::FunctionNode< T, NDIM >::get_norm_tree ( ) const
inline

Gets the value of norm_tree.

References _norm_tree.

Referenced by madness::FunctionImpl< T, NDIM >::broaden(), madness::operator<<(), and print_json().

◆ get_snorm()

template<typename T, std::size_t NDIM>
double madness::FunctionNode< T, NDIM >::get_snorm ( ) const
inline

get the precomputed norm of the (virtual) s coefficients

References snorm.

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

◆ has_children()

template<typename T, std::size_t NDIM>
bool madness::FunctionNode< T, NDIM >::has_children ( ) const
inline

Returns true if this node has children.

References _has_children.

Referenced by FunctionNode(), FunctionNode(), FunctionNode(), madness::FunctionImpl< T, NDIM >::compress_spawn(), madness::FunctionImpl< T, LDIM >::dirac_convolution_op(), madness::FunctionImpl< T, NDIM >::do_print_tree(), madness::FunctionImpl< T, NDIM >::do_print_tree_graphviz(), madness::FunctionImpl< T, NDIM >::do_print_tree_json(), gaxpy_inplace(), is_invalid(), madness::FunctionImpl< T, NDIM >::norm_tree_spawn(), 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_norm2sq_local::operator()(), madness::FunctionImpl< T, NDIM >::do_standard::operator()(), madness::FunctionImpl< T, NDIM >::remove_internal_coeffs::operator()(), madness::FunctionImpl< T, NDIM >::remove_leaf_coeffs::operator()(), madness::LoadBalanceDeux< NDIM >::add_op< T, costT >::operator()(), madness::operator<<(), print_json(), madness::FunctionImpl< T, NDIM >::reconstruct_op(), madness::FunctionImpl< T, LDIM >::recur_down_for_contraction_map(), madness::FunctionImpl< T, LDIM >::refine_spawn(), set_has_children_recursive(), madness::FunctionImpl< T, NDIM >::sum_down_spawn(), madness::FunctionImpl< T, NDIM >::trace_local(), madness::FunctionImpl< T, NDIM >::trickle_down_op(), madness::FunctionImpl< T, NDIM >::truncate_op(), and madness::FunctionImpl< T, NDIM >::truncate_spawn().

◆ has_coeff()

template<typename T, std::size_t NDIM>
bool madness::FunctionNode< T, NDIM >::has_coeff ( ) const
inline

Returns true if there are coefficients in this node.

References _coeffs.

Referenced by accumulate(), accumulate2(), madness::FunctionImpl< T, LDIM >::add_keys_to_map(), madness::FunctionImpl< T, NDIM >::add_scalar_inplace(), madness::FunctionImpl< T, NDIM >::broaden(), 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(), gaxpy_inplace(), is_invalid(), madness::FunctionImpl< T, NDIM >::nCoeff_local(), madness::DerivativeBase< T, NDIM >::submit_op::operator()(), madness::FunctionImpl< T, NDIM >::do_accumulate_trees< Q, R >::operator()(), madness::FunctionImpl< T, NDIM >::do_average::operator()(), madness::FunctionImpl< T, NDIM >::do_dot_local< R >::operator()(), madness::FunctionImpl< T, NDIM >::do_err_box< opT >::operator()(), madness::FunctionImpl< T, NDIM >::do_inner_local< R >::operator()(), madness::FunctionImpl< T, NDIM >::do_inner_local_on_demand< R >::operator()(), madness::FunctionImpl< T, NDIM >::do_norm2sq_local::operator()(), madness::FunctionImpl< T, NDIM >::do_standard::operator()(), madness::FunctionImpl< T, NDIM >::do_unary_op_value_inplace< opT >::operator()(), madness::operator<<(), print_json(), madness::FunctionImpl< T, NDIM >::print_plane_local(), madness::FunctionImpl< T, NDIM >::print_stats(), madness::FunctionImpl< T, NDIM >::project(), madness::FunctionImpl< T, NDIM >::real_size(), madness::FunctionImpl< T, NDIM >::reconstruct_op(), madness::FunctionImpl< T, LDIM >::refine_op(), set_has_children_recursive(), madness::FunctionImpl< T, NDIM >::size_local(), madness::FunctionImpl< T, NDIM >::sock_it_to_me(), madness::FunctionImpl< T, NDIM >::sock_it_to_me_too(), madness::FunctionImpl< T, NDIM >::trace_local(), madness::FunctionImpl< T, NDIM >::truncate_op(), madness::FunctionImpl< T, NDIM >::truncate_spawn(), and madness::FunctionImpl< T, LDIM >::unary_op_coeff_inplace().

◆ is_invalid()

template<typename T, std::size_t NDIM>
bool madness::FunctionNode< T, NDIM >::is_invalid ( ) const
inline

Returns true if this node is invalid (no coeffs and no children).

References has_children(), and has_coeff().

◆ is_leaf()

◆ operator=()

template<typename T, std::size_t NDIM>
FunctionNode< T, NDIM > & madness::FunctionNode< T, NDIM >::operator= ( const FunctionNode< T, NDIM > & other)
inline

◆ print_json()

template<typename T, std::size_t NDIM>
void madness::FunctionNode< T, NDIM >::print_json ( std::ostream & s) const
inline

like operator<<(ostream&, const FunctionNode<T,NDIM>&) but produces a sequence JSON-formatted key-value pairs

Warning
enclose the output in curly braces to make a valid JSON object

References coeff(), madness::GenTensor< T >::dim(), e(), get_dnorm(), get_norm_tree(), get_snorm(), has_children(), has_coeff(), norm(), madness::NORM_TREE_UNCOMPUTED, madness::GenTensor< T >::normf(), and madness::GenTensor< T >::rank().

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

◆ recompute_snorm_and_dnorm()

◆ reduceRank()

template<typename T, std::size_t NDIM>
void madness::FunctionNode< T, NDIM >::reduceRank ( const double & eps)
inline

reduces the rank of the coefficients (if applicable)

References _coeffs.

Referenced by madness::FunctionImpl< T, NDIM >::do_reduce_rank::operator()(), and madness::FunctionImpl< T, NDIM >::do_standard::operator()().

◆ scale()

template<typename T, std::size_t NDIM>
template<typename Q>
void madness::FunctionNode< T, NDIM >::scale ( Q a)
inline

Scale the coefficients of this node.

References _coeffs, a, and Q().

◆ scale_norms()

template<typename T, std::size_t NDIM>
void madness::FunctionNode< T, NDIM >::scale_norms ( const double a)
inline

Multiply the stored norms by a, for coefficients scaled by some q with |q| = a.

The tree state survives scaling, and mul_sparse screens on these norms without recomputing them. Norms that were never computed stay marked as such. A negative norm_tree is a marker left by broaden and refine_op, not a norm.

References _dnorm_tree, _norm_tree, a, dnorm, madness::NORM_TREE_UNCOMPUTED, and snorm.

Referenced by madness::detail::scaleinplace< T, NDIM >::operator()(), and madness::FunctionImpl< T, LDIM >::scale_oop().

◆ serialize()

template<typename T, std::size_t NDIM>
template<typename Archive>
void madness::FunctionNode< T, NDIM >::serialize ( Archive & ar)
inline

◆ set_coeff()

template<typename T, std::size_t NDIM>
void madness::FunctionNode< T, NDIM >::set_coeff ( const coeffT & coeffs)
inline

◆ set_dnorm()

template<typename T, std::size_t NDIM>
void madness::FunctionNode< T, NDIM >::set_dnorm ( const double dn)
inline

set the precomputed norm of the (virtual) d coefficients

References dnorm.

◆ set_dnorm_tree()

template<typename T, std::size_t NDIM>
void madness::FunctionNode< T, NDIM >::set_dnorm_tree ( double dnorm_tree)
inline

Sets the value of dnorm_tree.

References _dnorm_tree.

◆ set_has_children()

◆ set_has_children_recursive()

template<typename T, std::size_t NDIM>
void madness::FunctionNode< T, NDIM >::set_has_children_recursive ( const typename FunctionNode< T, NDIM >::dcT & c,
const Key< NDIM > & key )
inline

◆ set_is_leaf()

template<typename T, std::size_t NDIM>
void madness::FunctionNode< T, NDIM >::set_is_leaf ( bool flag)
inline

Sets has_children attribute to value of !flag.

References _has_children.

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

◆ set_norm_tree()

template<typename T, std::size_t NDIM>
void madness::FunctionNode< T, NDIM >::set_norm_tree ( double norm_tree)
inline

◆ set_snorm()

template<typename T, std::size_t NDIM>
void madness::FunctionNode< T, NDIM >::set_snorm ( const double sn)
inline

set the precomputed norm of the (virtual) s coefficients

References snorm.

◆ size()

template<typename T, std::size_t NDIM>
size_t madness::FunctionNode< T, NDIM >::size ( ) const
inline

Returns the number of coefficients in this node.

References _coeffs.

Referenced by recompute_snorm_and_dnorm(), and madness::FunctionImpl< T, NDIM >::size_local().

◆ trace_conj()

template<typename T, std::size_t NDIM>
T madness::FunctionNode< T, NDIM >::trace_conj ( const FunctionNode< T, NDIM > & rhs) const
inline

References FunctionNode(), and _coeffs.

Member Data Documentation

◆ _coeffs

template<typename T, std::size_t NDIM>
coeffT madness::FunctionNode< T, NDIM >::_coeffs
private

◆ _dnorm_tree

template<typename T, std::size_t NDIM>
double madness::FunctionNode< T, NDIM >::_dnorm_tree =NORM_TREE_UNCOMPUTED
private

norm of the difference coefficients summed up the tree

Referenced by FunctionNode(), FunctionNode(), FunctionNode(), FunctionNode(), convert(), get_dnorm_tree(), operator=(), scale_norms(), serialize(), and set_dnorm_tree().

◆ _has_children

◆ _norm_tree

template<typename T, std::size_t NDIM>
double madness::FunctionNode< T, NDIM >::_norm_tree
private

After norm_tree will contain norm of sum coefficients summed up tree.

Referenced by FunctionNode(), FunctionNode(), FunctionNode(), FunctionNode(), FunctionNode(), convert(), get_norm_tree(), operator=(), scale_norms(), serialize(), and set_norm_tree().

◆ buffer

template<typename T, std::size_t NDIM>
coeffT madness::FunctionNode< T, NDIM >::buffer
private

The coefficients, if any.

Referenced by accumulate(), and consolidate_buffer().

◆ dnorm

template<typename T, std::size_t NDIM>
double madness::FunctionNode< T, NDIM >::dnorm =-1.0
private

norm of the d coefficients, also defined if there are no d coefficients

Referenced by FunctionNode(), FunctionNode(), convert(), get_dnorm(), operator=(), recompute_snorm_and_dnorm(), scale_norms(), serialize(), and set_dnorm().

◆ snorm

template<typename T, std::size_t NDIM>
double madness::FunctionNode< T, NDIM >::snorm =-1.0
private

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