Minsky
civita::SpreadFirst Class Reference

#include <tensorOp.h>

Inheritance diagram for civita::SpreadFirst:
Inheritance graph
Collaboration diagram for civita::SpreadFirst:
Collaboration graph

Public Member Functions

void setSpreadDimensions (const Hypercube &hc)
 
double operator[] (std::size_t i) const override
 return or compute data at a location More...
 
- Public Member Functions inherited from civita::SpreadBase
void setArgument (const TensorPtr &a, const ITensor::Args &args={"", 0}) override
 
Timestamp timestamp () const override
 timestamp indicating how old the dependendent data might be. Used in CachedTensorOp to determine when to invalidate the cache More...
 
- Public Member Functions inherited from civita::ITensor
 CLASSDESC_ACCESS (ITensor)
 
 ITensor ()
 
 ITensor (const Hypercube &hc)
 
 ITensor (Hypercube &&hc)
 
 ITensor (const std::vector< unsigned > &dims)
 
 ITensor (const ITensor &)=default
 
 ITensor (ITensor &&)=default
 
ITensoroperator= (const ITensor &)=default
 
ITensoroperator= (ITensor &&)=default
 
virtual ~ITensor ()
 
virtual const Hypercube & hypercube () const
 information describing the axes, types and labels of this tensor More...
 
virtual const Hypercube & hypercube (const Hypercube &hc)
 
virtual const Hypercube & hypercube (Hypercube &&hc)
 
std::size_t rank () const
 
std::vector< unsigned > shape () const
 
void imposeDimensions (const Dimensions &dimensions)
 impose dimensions according to dimension map dimensions More...
 
virtual const Index & index () const
 the index vector - assumed to be ordered and unique More...
 
virtual std::size_t size () const
 return number of elements in tensor - maybe less than hypercube.numElements if sparse More...
 
double atHCIndex (std::size_t hcIdx) const
 returns the data value at hypercube index hcIdx, or NaN if More...
 
template<class T >
std::size_t hcIndex (const std::initializer_list< T > &indices) const
 
template<class T >
double operator() (const std::initializer_list< T > &indices) const
 
virtual void setArguments (const TensorPtr &, const TensorPtr &, const ITensor::Args &args={})
 
virtual void setArguments (const std::vector< TensorPtr > &a, const ITensor::Args &args={"", 0})
 
virtual void setArguments (const std::vector< TensorPtr > &a1, const std::vector< TensorPtr > &a2, const ITensor::Args &args={"", 0})
 

Additional Inherited Members

- Public Types inherited from civita::ITensor
using Timestamp = std::chrono::time_point< std::chrono::high_resolution_clock >
 
- Protected Member Functions inherited from civita::ITensor
void notImpl () const
 
- Protected Attributes inherited from civita::SpreadBase
TensorPtr arg
 
std::size_t numSpreadElements =1
 
- Protected Attributes inherited from civita::ITensor
Hypercube m_hypercube
 
Index m_index
 

Detailed Description

Definition at line 312 of file tensorOp.h.

Member Function Documentation

◆ operator[]()

double civita::SpreadFirst::operator[] ( std::size_t  ) const
inlineoverridevirtual

return or compute data at a location

Implements civita::ITensor.

Definition at line 328 of file tensorOp.h.

References civita::SpreadBase::arg, and civita::SpreadBase::numSpreadElements.

328  {
329  if (arg) return (*arg)[i/numSpreadElements];
330  return nan("");
331  }
std::size_t numSpreadElements
Definition: tensorOp.h:300
TensorPtr arg
Definition: tensorOp.h:299

◆ setSpreadDimensions()

void civita::SpreadFirst::setSpreadDimensions ( const Hypercube &  hc)
inline

Definition at line 315 of file tensorOp.h.

References civita::SpreadBase::arg, civita::ITensor::m_hypercube, civita::ITensor::m_index, and civita::SpreadBase::numSpreadElements.

315  {
316  if (!arg) return;
317  numSpreadElements=hc.numElements();
318  m_hypercube=hc;
319  m_hypercube.xvectors.insert(m_hypercube.xvectors.end(), arg->hypercube().xvectors.begin(),
320  arg->hypercube().xvectors.end());
321  std::set<std::size_t> idx;
322  for (auto& i: arg->index())
323  for (std::size_t j=0; j<numSpreadElements; ++j)
324  idx.insert(j+i*numSpreadElements);
325  m_index=idx;
326  }
std::size_t numSpreadElements
Definition: tensorOp.h:300
TensorPtr arg
Definition: tensorOp.h:299
Hypercube m_hypercube

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