QMCPACK
Array< T, D, ALLOC > Struct Template Reference

A D-dimensional Array class based on PETE. More...

+ Inheritance diagram for Array< T, D, ALLOC >:
+ Collaboration diagram for Array< T, D, ALLOC >:

Public Types

using Type_t = T
 
using Container_t = qmcplusplus::Vector< T, ALLOC >
 
using This_t = Array< T, D, ALLOC >
 
using sizes_type = decltype(std::declval< base_type const & >().sizes())
 

Public Member Functions

 Array ()
 
 Array (const Array &rhs)
 
template<typename SIZET = size_t, typename = std::is_integral<SIZET>>
 Array (const std::array< SIZET, D > &dims)
 
template<typename... Args>
 Array (Args... sizes)
 Provides specialized constructors with signature (size_1, ... , size_D) for array dimension D. More...
 
unsigned dim () const
 
const std::array< size_t, D > & shape () const
 
size_t size () const
 
size_t size (int i) const
 
Container_tstorage ()
 
template<typename SIZET = size_t, typename = std::is_integral<SIZET>>
void resize (const std::array< SIZET, D > &dims)
 Resize the container. More...
 
template<typename... Args>
void resize (Args... sizes)
 Provides specialized resize(size_1, ... , size_D) functions for the array D. More...
 
Container_t::iterator begin ()
 
Container_t::iterator end ()
 
Container_t::const_iterator begin () const
 
Container_t::const_iterator end () const
 
const Type_tfirst_address () const
 
const Type_tlast_address () const
 
Type_tfirst_address ()
 
Type_tlast_address ()
 
This_toperator= (const T &rhs)
 
This_toperator= (const Array &rhs)
 
template<typename TT , typename ALLOC2 >
This_toperator= (const Array< TT, D, ALLOC2 > &rhs)
 
Type_t sum () const
 
template<typename Allocator = ALLOC, typename = qmcplusplus::IsDualSpace<Allocator>>
void updateTo (size_t size=0, std::ptrdiff_t offset=0)
 
template<typename Allocator = ALLOC, typename = qmcplusplus::IsDualSpace<Allocator>>
void updateFrom (size_t size=0, std::ptrdiff_t offset=0)
 
Arrayoperator= (const T t)
 
 Array (int rs, int cs)
 
std::ptrdiff_t extent (int d) const
 
auto rows () const
 
auto cols () const
 
void resize (int rs, int cs)
 
sizes_type shape () const
 
void resize (sizes_type sizes)
 
template<class... Ints>
void resizeAndPreserve (Ints... sizes)
 
void resizeAndPreserve (sizes_type sizes)
 
template<class... Ints>
void resize (Ints... ns)
 
base_type::element_ptr data ()
 
base_type::element_const_ptr data () const
 
Type_tdata ()
 
const Type_tdata () const
 
template<typename Allocator = ALLOC, typename = qmcplusplus::IsDualSpace<Allocator>>
Type_tdevice_data ()
 
template<typename Allocator = ALLOC, typename = qmcplusplus::IsDualSpace<Allocator>>
const Type_tdevice_data () const
 
template<typename SIZET = size_t, typename = std::is_integral<SIZET>>
Type_tdata_at (const std::array< SIZET, D > &indices)
 
template<typename SIZET = size_t, typename = std::is_integral<SIZET>>
const Type_tdata_at (const std::array< SIZET, D > &indices) const
 
template<typename SIZET = size_t, typename = std::is_integral<SIZET>, typename Allocator = ALLOC, typename = qmcplusplus::IsDualSpace<Allocator>>
Type_tdevice_data_at (const std::array< SIZET, D > &indices)
 
template<typename SIZET = size_t, typename = std::is_integral<SIZET>, typename Allocator = ALLOC, typename = qmcplusplus::IsDualSpace<Allocator>>
const Type_tdevice_data_at (const std::array< SIZET, D > &indices) const
 
template<typename... Args>
Type_tdata_at (Args... indices)
 
template<typename... Args>
const Type_tdata_at (Args... indices) const
 
template<typename... Args, typename Allocator = ALLOC, typename = qmcplusplus::IsDualSpace<Allocator>>
Type_tdevice_data_at (Args... indices)
 
template<typename... Args, typename Allocator = ALLOC, typename = qmcplusplus::IsDualSpace<Allocator>>
const Type_tdevice_data_at (Args... indices) const
 
template<typename SIZET = size_t, typename = std::is_integral<SIZET>>
Type_toperator() (const std::array< SIZET, D > &indices)
 
template<typename SIZET = size_t, typename = std::is_integral<SIZET>>
const Type_toperator() (const std::array< SIZET, D > &indices) const
 
template<typename... Args>
Type_toperator() (Args... indices)
 
template<typename... Args>
const Type_toperator() (Args... indices) const
 

Private Member Functions

size_t full_size (const std::array< size_t, D > &dims) const
 compute the full size of dims More...
 
template<typename SIZET = size_t, typename = std::is_integral<SIZET>>
SIZET compute_offset (const std::array< SIZET, D > &indices) const
 

Private Attributes

std::array< size_t, D > Length
 
Container_t X
 

Detailed Description

template<class T, unsigned D, typename ALLOC = std::allocator<T>>
struct Array< T, D, ALLOC >

A D-dimensional Array class based on PETE.

Definition at line 25 of file OhmmsArray.h.

Member Typedef Documentation

◆ Container_t

using Container_t = qmcplusplus::Vector<T, ALLOC>

Definition at line 29 of file OhmmsArray.h.

◆ sizes_type

using sizes_type = decltype(std::declval<base_type const&>().sizes())

Definition at line 92 of file Blitz.h.

◆ This_t

using This_t = Array<T, D, ALLOC>

Definition at line 30 of file OhmmsArray.h.

◆ Type_t

using Type_t = T

Definition at line 28 of file OhmmsArray.h.

Constructor & Destructor Documentation

◆ Array() [1/5]

Array ( )
inline

Definition at line 33 of file OhmmsArray.h.

33 { Length.fill(0); }
std::array< size_t, D > Length
Definition: OhmmsArray.h:235

◆ Array() [2/5]

Array ( const Array< T, D, ALLOC > &  rhs)
inline

Definition at line 36 of file OhmmsArray.h.

37  {
38  resize(rhs.shape());
39  std::copy(rhs.begin(), rhs.end(), X.begin());
40  }
void resize(const std::array< SIZET, D > &dims)
Resize the container.
Definition: OhmmsArray.h:65
void copy(const Array< T1, 3 > &src, Array< T2, 3 > &dest)
Definition: Blitz.h:639
Container_t::iterator begin()
Definition: OhmmsArray.h:80
Container_t X
Definition: OhmmsArray.h:236
const std::array< size_t, D > & shape() const
Definition: OhmmsArray.h:56
Container_t::iterator end()
Definition: OhmmsArray.h:81

◆ Array() [3/5]

Array ( const std::array< SIZET, D > &  dims)
inline

Definition at line 43 of file OhmmsArray.h.

44  {
45  resize(dims);
46  }
void resize(const std::array< SIZET, D > &dims)
Resize the container.
Definition: OhmmsArray.h:65
std::vector< int > dims

◆ Array() [4/5]

Array ( Args...  sizes)
inline

Provides specialized constructors with signature (size_1, ... , size_D) for array dimension D.

Definition at line 50 of file OhmmsArray.h.

51  {
52  resize(sizes...);
53  }
void resize(const std::array< SIZET, D > &dims)
Resize the container.
Definition: OhmmsArray.h:65

◆ Array() [5/5]

Array ( int  rs,
int  cs 
)
inline

Definition at line 76 of file Blitz.h.

76 : base_type({rs, cs}) {}

Member Function Documentation

◆ begin() [1/2]

◆ begin() [2/2]

Container_t::const_iterator begin ( ) const
inline

Definition at line 82 of file OhmmsArray.h.

82 { return X.begin(); }
Container_t X
Definition: OhmmsArray.h:236

◆ cols()

auto cols ( ) const
inline

Definition at line 90 of file Blitz.h.

Referenced by RungeKutta2< IntegrandClass >::IntegrateForw(), and RungeKutta2< IntegrandClass >::IntegrateRev().

90 { return std::get<1>(base_type::sizes()); }

◆ compute_offset()

SIZET compute_offset ( const std::array< SIZET, D > &  indices) const
inlineprivate

Definition at line 247 of file OhmmsArray.h.

Referenced by Array< T, D >::data_at(), Array< T, D >::device_data_at(), and Array< T, D >::operator()().

248  {
249  SIZET offset = indices[0];
250  for (int i = 1; i < indices.size(); i++)
251  offset = offset * Length[i] + indices[i];
252  return offset;
253  }
std::array< size_t, D > Length
Definition: OhmmsArray.h:235

◆ data() [1/4]

Type_t* data ( )
inline

access the container data pointer

Definition at line 87 of file OhmmsArray.h.

Referenced by Array2Vec(), MultiQuinticSpline1D< T >::batched_evaluate(), SoaSphericalTensor< ST >::batched_evaluateV(), SoaCartesianTensor< T >::batched_evaluateV(), MultiFunctorAdapter< FN >::batched_evaluateVGL(), SoaSphericalTensor< ST >::batched_evaluateVGL(), SoaCartesianTensor< T >::batched_evaluateVGL(), MultiQuinticSpline1D< T >::batched_evaluateVGL(), Communicate::bcast(), TraceBuffer< TraceInt >::collect_sample(), MPC::compute_g_G(), conjdot(), OneSplineOrbData::create(), Grid::data(), BackflowTransformation::evaluateDerivatives(), OneSplineOrbData::fft_spline(), qmcplusplus::fix_phase_rotate(), qmcplusplus::fix_phase_rotate_c2c(), qmcplusplus::fix_phase_rotate_c2r(), container_traits< Array< T, D > >::getElementPtr(), MPC::init_spline(), WalkerLogBuffer< WLog::Real >::makeNewRow(), SoaAtomicBasisSet< ROT, SH >::mw_evaluateV(), LCAOrbitalSet::mw_evaluateValueImplGEMM(), LCAOrbitalSet::mw_evaluateValueVPsImplGEMM(), SoaAtomicBasisSet< ROT, SH >::mw_evaluateVGL(), LCAOrbitalSet::mw_evaluateVGLandDetRatioGrads(), SplineC2COMPTarget< ST >::mw_evaluateVGLandDetRatioGrads(), SplineC2ROMPTarget< ST >::mw_evaluateVGLandDetRatioGrads(), SpinorSet::mw_evaluateVGLandDetRatioGradsWithSpin(), LCAOrbitalSet::mw_evaluateVGLImplGEMM(), norm(), Normalize(), Orthogonalize(), GridExternalPotential::put(), h5data_proxy< Array< T, D > >::read(), WalkerLogBuffer< WLog::Real >::resetRowSize(), qmcplusplus::split_real_components_c2c(), qmcplusplus::TEST_CASE(), BackflowTransformation::testDeriv(), Vec2Array(), h5data_proxy< Array< T, D > >::write(), TraceBuffer< TraceInt >::write_hdf(), and WalkerLogBuffer< WLog::Real >::writeHDF().

87 { return X.data(); }
Container_t X
Definition: OhmmsArray.h:236

◆ data() [2/4]

const Type_t* data ( ) const
inline

Definition at line 88 of file OhmmsArray.h.

88 { return X.data(); }
Container_t X
Definition: OhmmsArray.h:236

◆ data() [3/4]

base_type::element_ptr data ( )
inline

Definition at line 116 of file Blitz.h.

116 { return base_type::data_elements(); }

◆ data() [4/4]

base_type::element_const_ptr data ( ) const
inline

Definition at line 117 of file Blitz.h.

117 { return base_type::data_elements(); }

◆ data_at() [1/4]

Type_t* data_at ( const std::array< SIZET, D > &  indices)
inline

access the data pointer at {index_1, ..., index_D}

Definition at line 104 of file OhmmsArray.h.

Referenced by MultiFunctorAdapter< FN >::batched_evaluateVGL(), MultiQuinticSpline1D< T >::batched_evaluateVGL(), Array< T, D >::data_at(), LCAOrbitalSet::mw_evaluateValueVPsImplGEMM(), LCAOrbitalSet::mw_evaluateVGLandDetRatioGrads(), SPOSet::mw_evaluateVGLandDetRatioGrads(), and qmcplusplus::TEST_CASE().

105  {
106  return X.data() + compute_offset(indices);
107  }
SIZET compute_offset(const std::array< SIZET, D > &indices) const
Definition: OhmmsArray.h:247
Container_t X
Definition: OhmmsArray.h:236

◆ data_at() [2/4]

const Type_t* data_at ( const std::array< SIZET, D > &  indices) const
inline

Definition at line 109 of file OhmmsArray.h.

110  {
111  return X.data() + compute_offset(indices);
112  }
SIZET compute_offset(const std::array< SIZET, D > &indices) const
Definition: OhmmsArray.h:247
Container_t X
Definition: OhmmsArray.h:236

◆ data_at() [3/4]

Type_t* data_at ( Args...  indices)
inline

Definition at line 131 of file OhmmsArray.h.

132  {
133  static_assert(sizeof...(Args) == D, "data arguments must match dimensionality of Array");
134  return data_at({static_cast<std::size_t>(std::forward<Args>(indices))...});
135  }
Type_t * data_at(const std::array< SIZET, D > &indices)
Definition: OhmmsArray.h:104

◆ data_at() [4/4]

const Type_t* data_at ( Args...  indices) const
inline

Definition at line 137 of file OhmmsArray.h.

138  {
139  static_assert(sizeof...(Args) == D, "data arguments must match dimensionality of Array");
140  return data_at({static_cast<std::size_t>(std::forward<Args>(indices))...});
141  }
Type_t * data_at(const std::array< SIZET, D > &indices)
Definition: OhmmsArray.h:104

◆ device_data() [1/2]

Type_t* device_data ( )
inline

Definition at line 90 of file OhmmsArray.h.

Referenced by LCAOrbitalSet::mw_evaluateValueImplGEMM(), LCAOrbitalSet::mw_evaluateValueVPsImplGEMM(), and LCAOrbitalSet::mw_evaluateVGLImplGEMM().

91  {
92  return X.device_data();
93  }
pointer device_data()
Return the device_ptr matching X if this is a vector attached or owning dual space memory...
Definition: OhmmsVector.h:245
Container_t X
Definition: OhmmsArray.h:236

◆ device_data() [2/2]

const Type_t* device_data ( ) const
inline

Definition at line 95 of file OhmmsArray.h.

96  {
97  return X.device_data();
98  }
pointer device_data()
Return the device_ptr matching X if this is a vector attached or owning dual space memory...
Definition: OhmmsVector.h:245
Container_t X
Definition: OhmmsArray.h:236

◆ device_data_at() [1/4]

Type_t* device_data_at ( const std::array< SIZET, D > &  indices)
inline

Definition at line 117 of file OhmmsArray.h.

Referenced by Array< T, D >::device_data_at(), DelayedUpdateBatched< PL, VALUE >::mw_accept_rejectRow(), and DelayedUpdateBatched< PL, VALUE >::mw_updateRow().

118  {
119  return X.device_data() + compute_offset(indices);
120  }
pointer device_data()
Return the device_ptr matching X if this is a vector attached or owning dual space memory...
Definition: OhmmsVector.h:245
SIZET compute_offset(const std::array< SIZET, D > &indices) const
Definition: OhmmsArray.h:247
Container_t X
Definition: OhmmsArray.h:236

◆ device_data_at() [2/4]

const Type_t* device_data_at ( const std::array< SIZET, D > &  indices) const
inline

Definition at line 125 of file OhmmsArray.h.

126  {
127  return X.device_data() + compute_offset(indices);
128  }
pointer device_data()
Return the device_ptr matching X if this is a vector attached or owning dual space memory...
Definition: OhmmsVector.h:245
SIZET compute_offset(const std::array< SIZET, D > &indices) const
Definition: OhmmsArray.h:247
Container_t X
Definition: OhmmsArray.h:236

◆ device_data_at() [3/4]

Type_t* device_data_at ( Args...  indices)
inline

Definition at line 143 of file OhmmsArray.h.

144  {
145  static_assert(sizeof...(Args) == D, "device_data arguments must match dimensionality of Array");
146  return device_data_at({static_cast<std::size_t>(std::forward<Args>(indices))...});
147  }
Type_t * device_data_at(const std::array< SIZET, D > &indices)
Definition: OhmmsArray.h:117

◆ device_data_at() [4/4]

const Type_t* device_data_at ( Args...  indices) const
inline

Definition at line 149 of file OhmmsArray.h.

150  {
151  static_assert(sizeof...(Args) == D, "device_data arguments must match dimensionality of Array");
152  return device_data_at({static_cast<std::size_t>(std::forward<Args>(indices))...});
153  }
Type_t * device_data_at(const std::array< SIZET, D > &indices)
Definition: OhmmsArray.h:117

◆ dim()

unsigned dim ( ) const
inline

Definition at line 55 of file OhmmsArray.h.

Referenced by TraceBuffer< TraceInt >::write_hdf(), and WalkerLogBuffer< WLog::Real >::writeHDF().

55 { return D; }

◆ end() [1/2]

Container_t::iterator end ( )
inline

Definition at line 81 of file OhmmsArray.h.

Referenced by Array< T, D >::Array(), Array< T, D >::operator=(), and TraceBuffer< TraceInt >::test_buffer_write().

81 { return X.end(); }
Container_t X
Definition: OhmmsArray.h:236

◆ end() [2/2]

Container_t::const_iterator end ( ) const
inline

Definition at line 83 of file OhmmsArray.h.

83 { return X.end(); }
Container_t X
Definition: OhmmsArray.h:236

◆ extent()

std::ptrdiff_t extent ( int  d) const
inline

Definition at line 77 of file Blitz.h.

Referenced by IOVarBase::Append(), Array2Vec(), copy(), IOVarASCII< T, RANK >::VarWrite(), and Vec2Array().

78  {
79  switch (d)
80  {
81  case 0:
82  return std::get<0>(base_type::sizes());
83  case 1:
84  return std::get<1>(base_type::sizes());
85  }
86  assert(false);
87  return 0;
88  }

◆ first_address() [1/2]

const Type_t* first_address ( ) const
inline

Definition at line 156 of file OhmmsArray.h.

156 { return X.data(); }
Container_t X
Definition: OhmmsArray.h:236

◆ first_address() [2/2]

Type_t* first_address ( )
inline

Definition at line 160 of file OhmmsArray.h.

160 { return X.data(); }
Container_t X
Definition: OhmmsArray.h:236

◆ full_size()

size_t full_size ( const std::array< size_t, D > &  dims) const
inlineprivate

compute the full size of dims

Definition at line 238 of file OhmmsArray.h.

Referenced by Array< T, D >::resize().

239  {
240  size_t total = dims[0];
241  for (int i = 1; i < dims.size(); i++)
242  total *= dims[i];
243  return total;
244  }
std::vector< int > dims

◆ last_address() [1/2]

const Type_t* last_address ( ) const
inline

Definition at line 158 of file OhmmsArray.h.

158 { return X.data() + X.size(); }
size_type size() const
return the current size
Definition: OhmmsVector.h:162
Container_t X
Definition: OhmmsArray.h:236

◆ last_address() [2/2]

Type_t* last_address ( )
inline

Definition at line 162 of file OhmmsArray.h.

162 { return X.data() + X.size(); }
size_type size() const
return the current size
Definition: OhmmsVector.h:162
Container_t X
Definition: OhmmsArray.h:236

◆ operator()() [1/4]

Type_t& operator() ( const std::array< SIZET, D > &  indices)
inline

access the element at {index_1, ..., index_D}

Definition at line 191 of file OhmmsArray.h.

Referenced by Array< T, D >::operator()().

192  {
193  return X[compute_offset(indices)];
194  }
SIZET compute_offset(const std::array< SIZET, D > &indices) const
Definition: OhmmsArray.h:247
Container_t X
Definition: OhmmsArray.h:236

◆ operator()() [2/4]

const Type_t& operator() ( const std::array< SIZET, D > &  indices) const
inline

Definition at line 196 of file OhmmsArray.h.

197  {
198  return X[compute_offset(indices)];
199  }
SIZET compute_offset(const std::array< SIZET, D > &indices) const
Definition: OhmmsArray.h:247
Container_t X
Definition: OhmmsArray.h:236

◆ operator()() [3/4]

Type_t& operator() ( Args...  indices)
inline

Definition at line 201 of file OhmmsArray.h.

202  {
203  static_assert(sizeof...(Args) == D, "operator() arguments must match dimensionality of Array");
204  return operator()({static_cast<std::size_t>(std::forward<Args>(indices))...});
205  }
Type_t & operator()(const std::array< SIZET, D > &indices)
Definition: OhmmsArray.h:191

◆ operator()() [4/4]

const Type_t& operator() ( Args...  indices) const
inline

Definition at line 207 of file OhmmsArray.h.

208  {
209  static_assert(sizeof...(Args) == D, "operator() arguments must match dimensionality of Array");
210  return operator()({static_cast<std::size_t>(std::forward<Args>(indices))...});
211  }
Type_t & operator()(const std::array< SIZET, D > &indices)
Definition: OhmmsArray.h:191

◆ operator=() [1/4]

Array& operator= ( const T  t)
inline

Definition at line 71 of file Blitz.h.

72  {
73  base_type::operator=(t);
74  return *this;
75  }

◆ operator=() [2/4]

This_t& operator= ( const T &  rhs)
inline

Definition at line 164 of file OhmmsArray.h.

165  {
166  std::fill(X.begin(), X.end(), rhs);
167  return *this;
168  }
Container_t X
Definition: OhmmsArray.h:236

◆ operator=() [3/4]

This_t& operator= ( const Array< T, D, ALLOC > &  rhs)
inline

Definition at line 170 of file OhmmsArray.h.

171  {
172  if (&rhs != this)
173  {
174  resize(rhs.shape());
175  std::copy(rhs.begin(), rhs.end(), X.begin());
176  }
177  return *this;
178  }
void resize(const std::array< SIZET, D > &dims)
Resize the container.
Definition: OhmmsArray.h:65
void copy(const Array< T1, 3 > &src, Array< T2, 3 > &dest)
Definition: Blitz.h:639
Container_t::iterator begin()
Definition: OhmmsArray.h:80
Container_t X
Definition: OhmmsArray.h:236
const std::array< size_t, D > & shape() const
Definition: OhmmsArray.h:56
Container_t::iterator end()
Definition: OhmmsArray.h:81

◆ operator=() [4/4]

This_t& operator= ( const Array< TT, D, ALLOC2 > &  rhs)
inline

Definition at line 181 of file OhmmsArray.h.

182  {
183  resize(rhs.shape());
184  std::copy(rhs.begin(), rhs.end(), X.begin());
185  return *this;
186  }
void resize(const std::array< SIZET, D > &dims)
Resize the container.
Definition: OhmmsArray.h:65
void copy(const Array< T1, 3 > &src, Array< T2, 3 > &dest)
Definition: Blitz.h:639
Container_t::iterator begin()
Definition: OhmmsArray.h:80
Container_t X
Definition: OhmmsArray.h:236
const std::array< size_t, D > & shape() const
Definition: OhmmsArray.h:56
Container_t::iterator end()
Definition: OhmmsArray.h:81

◆ resize() [1/5]

void resize ( const std::array< SIZET, D > &  dims)
inline

Resize the container.

For performance consideration, previous data may or may not get kept. Please avoid relying on previous data after resizing.

Definition at line 65 of file OhmmsArray.h.

Referenced by Array< T, D >::Array(), JeeIOrbitalSoA< FT >::checkOutVariables(), WalkerLogCollector::collect(), TraceBuffer< TraceInt >::collect_sample(), OneSplineOrbData::create(), CoulombPBCAB::evalConsts(), OrbitalImages::evaluate(), BackflowTransformation::evaluateDerivatives(), CubicSplineCommon::Init(), LinearGrid::Init(), JeeIOrbitalSoA< FT >::init(), GeneralGrid::Init(), OptimalGrid::Init(), OptimalGrid2::Init(), CenterGrid::Init(), LogGrid::Init(), ClusterGrid::Init(), CoulombPBCAA::initBreakup(), SHOSet::initialize(), OptimalGrid::InitRatio(), IOVarASCII< T, RANK >::IOVarASCII(), LogGrid::LogGrid(), WalkerLogBuffer< WLog::Real >::makeNewRow(), NonlinearFitClass< M, ModelType >::NonlinearFitClass(), LinearGrid::operator=(), Array< T, D >::operator=(), OptimalGrid::operator=(), OptimalGrid2::OptimalGrid2(), TraceBuffer< TraceInt >::order_and_resize(), h5data_proxy< Array< T, D > >::read(), CubicSplineCommon::Read(), TraceBuffer< TraceInt >::reset(), WalkerLogBuffer< WLog::Real >::resetBuffer(), WalkerLogBuffer< WLog::Real >::resetRowSize(), PolynomialFunctor3D::resize(), Array< T, D >::resize(), container_traits< Array< T, D > >::resize(), SymmArray< T >::resize(), JeeIOrbitalSoA< FT >::resizeWFOptVectors(), TraceBuffer< TraceInt >::test_buffer_write(), qmcplusplus::TEST_CASE(), qmcplusplus::test_LCAO_DiamondC_2x1x1_real(), SHOSet::test_overlap(), DensityMatrices1B::test_overlap(), BackflowTransformation::testDeriv(), qmcplusplus::testDualAllocator(), and IOVarASCII< T, RANK >::VarRead().

66  {
67  for (int i = 0; i < dims.size(); i++)
68  Length[i] = dims[i];
70  }
void resize(size_type n, Type_t val=Type_t())
Resize the container.
Definition: OhmmsVector.h:166
std::array< size_t, D > Length
Definition: OhmmsArray.h:235
size_t full_size(const std::array< size_t, D > &dims) const
compute the full size of dims
Definition: OhmmsArray.h:238
std::vector< int > dims
Container_t X
Definition: OhmmsArray.h:236

◆ resize() [2/5]

void resize ( Args...  sizes)
inline

Provides specialized resize(size_1, ... , size_D) functions for the array D.

Definition at line 74 of file OhmmsArray.h.

75  {
76  static_assert(sizeof...(Args) == D, "resize arguments must match dimensionality of Array");
77  resize({static_cast<std::size_t>(std::forward<Args>(sizes))...});
78  }
void resize(const std::array< SIZET, D > &dims)
Resize the container.
Definition: OhmmsArray.h:65

◆ resize() [3/5]

void resize ( int  rs,
int  cs 
)
inline

Definition at line 91 of file Blitz.h.

91 { base_type::reextent({rs, cs}); }

◆ resize() [4/5]

void resize ( sizes_type  sizes)
inline

Definition at line 94 of file Blitz.h.

94 { resizeAndPreserve(sizes); }
void resizeAndPreserve(Ints... sizes)
Definition: Blitz.h:97

◆ resize() [5/5]

void resize ( Ints...  ns)
inline

Definition at line 112 of file Blitz.h.

113  {
114  base_type::reextent({ns...});
115  }

◆ resizeAndPreserve() [1/2]

void resizeAndPreserve ( Ints...  sizes)
inline

Definition at line 97 of file Blitz.h.

Referenced by Array< T, D >::resize(), and Array< T, 1, base_type >::resize().

98  {
99  base_type::reextent(sizes...);
100  }

◆ resizeAndPreserve() [2/2]

void resizeAndPreserve ( sizes_type  sizes)
inline

Definition at line 102 of file Blitz.h.

103  {
104  // explicit conversion due to failure with libc++ type automatic conversion
105  base_type::reextent(std::apply(
106  [](auto... ss) {
107  return typename base_type::extensions_type{static_cast<typename base_type::size_type>(ss)...};
108  },
109  sizes));
110  }

◆ rows()

auto rows ( ) const
inline

Definition at line 89 of file Blitz.h.

Referenced by CubicSplineCommon::Init().

89 { return std::get<0>(base_type::sizes()); }

◆ shape() [1/2]

const std::array<size_t, D>& shape ( ) const
inline

◆ shape() [2/2]

sizes_type shape ( ) const
inline

Definition at line 93 of file Blitz.h.

93 { return base_type::sizes(); }

◆ size() [1/2]

size_t size ( void  ) const
inline

Definition at line 57 of file OhmmsArray.h.

Referenced by WalkerLogBuffer< WLog::Real >::addRow(), Array2Vec(), MultiFunctorAdapter< FN >::batched_evaluate(), MultiQuinticSpline1D< T >::batched_evaluate(), SoaSphericalTensor< ST >::batched_evaluateV(), SoaCartesianTensor< T >::batched_evaluateV(), MultiFunctorAdapter< FN >::batched_evaluateVGL(), SoaSphericalTensor< ST >::batched_evaluateVGL(), SoaCartesianTensor< T >::batched_evaluateVGL(), MultiQuinticSpline1D< T >::batched_evaluateVGL(), Communicate::bcast(), NonlinearFitClass< M, ModelType >::CalcAlphaBeta(), JeeIOrbitalSoA< FT >::checkOutVariables(), NonlinearFitClass< M, ModelType >::Chi2(), WalkerLogBuffer< WLog::Real >::collect(), TraceBuffer< TraceInt >::collect_sample(), JeeIOrbitalSoA< FT >::computeU(), JeeIOrbitalSoA< FT >::computeU3(), conjdot(), CoulombPBCAB::evaluate_sp(), CoulombPBCAA::evaluate_sp(), BackflowTransformation::evaluateDerivatives(), JeeIOrbitalSoA< FT >::evaluateDerivatives(), JeeIOrbitalSoA< FT >::evaluateDerivativesWF(), JeeIOrbitalSoA< FT >::evaluateDerivRatios(), container_traits< Array< T, D > >::getSize(), h5data_proxy< Array< T, D > >::h5data_proxy(), GeneralGrid::Init(), WalkerLogBuffer< WLog::Real >::makeNewRow(), SoaLocalizedBasisSet< COT, ORBT >::mw_evaluateValue(), LCAOrbitalSet::mw_evaluateValueImplGEMM(), SoaLocalizedBasisSet< COT, ORBT >::mw_evaluateValueVPs(), LCAOrbitalSet::mw_evaluateValueVPsImplGEMM(), SoaLocalizedBasisSet< COT, ORBT >::mw_evaluateVGL(), LCAOrbitalSet::mw_evaluateVGLandDetRatioGrads(), SplineC2COMPTarget< ST >::mw_evaluateVGLandDetRatioGrads(), SplineC2ROMPTarget< ST >::mw_evaluateVGLandDetRatioGrads(), SPOSet::mw_evaluateVGLandDetRatioGrads(), SpinorSet::mw_evaluateVGLandDetRatioGradsWithSpin(), LCAOrbitalSet::mw_evaluateVGLImplGEMM(), WalkerLogBuffer< WLog::Real >::ncols(), norm(), Normalize(), WalkerLogBuffer< WLog::Real >::nrows(), Atom::NumElecs(), operator+(), operator==(), OrthogExcluding(), OrthogLower(), Orthogonalize(), Orthogonalize2(), IOVarBase::Read(), CubicSplineCommon::Read(), GeneralGrid::Read(), EinsplineSetBuilder::ReadOrbitalInfo_ESHDF(), TraceBuffer< TraceInt >::reset(), WalkerLogBuffer< WLog::Real >::resetBuffer(), WalkerLogBuffer< WLog::Real >::resetRowSize(), TraceBuffer< TraceInt >::same_as(), WalkerLogBuffer< WLog::Real >::sameAs(), TraceBuffer< TraceInt >::test_buffer_write(), qmcplusplus::TEST_CASE(), BackflowTransformation::testDeriv(), qmcplusplus::testDualAllocator(), Array< T, D >::updateFrom(), Array< T, D >::updateTo(), Vec2Array(), TraceBuffer< TraceInt >::write_hdf(), TraceBuffer< TraceInt >::write_summary(), WalkerLogBuffer< WLog::Real >::writeHDF(), and WalkerLogBuffer< WLog::Real >::writeSummary().

57 { return X.size(); }
size_type size() const
return the current size
Definition: OhmmsVector.h:162
Container_t X
Definition: OhmmsArray.h:236

◆ size() [2/2]

size_t size ( int  i) const
inline

Definition at line 58 of file OhmmsArray.h.

58 { return Length[i]; }
std::array< size_t, D > Length
Definition: OhmmsArray.h:235

◆ storage()

◆ sum()

Type_t sum ( ) const
inline

Definition at line 214 of file OhmmsArray.h.

Referenced by LocalECPotential::evaluate_sp(), BareKineticEnergy::evaluate_sp(), CoulombPBCAB::evaluate_sp(), CoulombPBCAA::evaluate_sp(), CoulombPotential< T >::evaluate_spAA(), CoulombPotential< T >::evaluate_spAB(), and NonLocalECPotential::evaluateImpl().

215  {
216  Type_t s = 0;
217  for (int i = 0; i < X.size(); ++i)
218  s += X[i];
219  return s;
220  }
size_type size() const
return the current size
Definition: OhmmsVector.h:162
T Type_t
Definition: OhmmsArray.h:28
Container_t X
Definition: OhmmsArray.h:236

◆ updateFrom()

void updateFrom ( size_t  size = 0,
std::ptrdiff_t  offset = 0 
)
inline

Definition at line 229 of file OhmmsArray.h.

Referenced by MultiFunctorAdapter< FN >::batched_evaluate(), and MultiFunctorAdapter< FN >::batched_evaluateVGL().

230  {
231  X.updateFrom(size, offset);
232  }
void updateFrom(size_type size=0, std::ptrdiff_t offset=0)
Definition: OhmmsVector.h:272
size_t size() const
Definition: OhmmsArray.h:57
Container_t X
Definition: OhmmsArray.h:236

◆ updateTo()

void updateTo ( size_t  size = 0,
std::ptrdiff_t  offset = 0 
)
inline

Definition at line 224 of file OhmmsArray.h.

Referenced by MultiFunctorAdapter< FN >::batched_evaluate(), MultiFunctorAdapter< FN >::batched_evaluateVGL(), SPOSet::mw_evaluateVGLandDetRatioGrads(), and SoaAtomicBasisSet< ROT, SH >::setPBCParams().

225  {
226  X.updateTo(size, offset);
227  }
size_t size() const
Definition: OhmmsArray.h:57
Container_t X
Definition: OhmmsArray.h:236
void updateTo(size_type size=0, std::ptrdiff_t offset=0)
Definition: OhmmsVector.h:263

Member Data Documentation

◆ Length

std::array<size_t, D> Length
private

◆ X


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