ExaTN
tensor_signature.hpp
1 
18 #ifndef EXATN_NUMERICS_TENSOR_SIGNATURE_HPP_
19 #define EXATN_NUMERICS_TENSOR_SIGNATURE_HPP_
20 
21 #include "tensor_basic.hpp"
22 #include "spaces.hpp"
23 
24 #include <utility>
25 #include <initializer_list>
26 #include <vector>
27 
28 #include <iostream>
29 #include <fstream>
30 
31 namespace exatn{
32 
33 namespace numerics{
34 
36 public:
37 
41  TensorSignature(std::initializer_list<std::pair<SpaceId,SubspaceId>> subspaces);
42  TensorSignature(const std::vector<std::pair<SpaceId,SubspaceId>> & subspaces);
44  TensorSignature(unsigned int rank);
47 
48  TensorSignature(const TensorSignature & tens_signature) = default;
49  TensorSignature & operator=(const TensorSignature & tens_signature) = default;
50  TensorSignature(TensorSignature && tens_signature) noexcept = default;
51  TensorSignature & operator=(TensorSignature && tens_signature) noexcept = default;
52  virtual ~TensorSignature() = default;
53 
55  void printIt() const;
56  void printItFile(std::ofstream & output_file) const;
57 
59  unsigned int getRank() const;
60 
62  SpaceId getDimSpaceId(unsigned int dim_id) const;
63  SubspaceId getDimSubspaceId(unsigned int dim_id) const;
64  std::pair<SpaceId,SubspaceId> getDimSpaceAttr(unsigned int dim_id) const;
65 
67  bool isCongruentTo(const TensorSignature & another) const;
68 
70  void resetDimension(unsigned int dim_id, std::pair<SpaceId,SubspaceId> subspace);
71 
73  void deleteDimension(unsigned int dim_id);
74 
76  void appendDimension(std::pair<SpaceId,SubspaceId> subspace = {SOME_SPACE,0});
77 
78 private:
79 
80  std::vector<std::pair<SpaceId,SubspaceId>> subspaces_; //tensor signature
81 };
82 
83 } //namespace numerics
84 
85 } //namespace exatn
86 
87 #endif //EXATN_NUMERICS_TENSOR_SIGNATURE_HPP_
exatn::numerics::TensorSignature::deleteDimension
void deleteDimension(unsigned int dim_id)
Definition: tensor_signature.cpp:103
exatn::numerics::TensorSignature::TensorSignature
TensorSignature()
Definition: tensor_signature.cpp:31
exatn
Definition: DriverClient.hpp:10
exatn::numerics::TensorSignature::getRank
unsigned int getRank() const
Definition: tensor_signature.cpp:63
exatn::numerics::TensorSignature
Definition: tensor_signature.hpp:35
exatn::numerics::TensorSignature::appendDimension
void appendDimension(std::pair< SpaceId, SubspaceId > subspace={SOME_SPACE, 0})
Definition: tensor_signature.cpp:110
exatn::numerics::TensorSignature::getDimSpaceId
SpaceId getDimSpaceId(unsigned int dim_id) const
Definition: tensor_signature.cpp:68
exatn::numerics::TensorSignature::printIt
void printIt() const
Definition: tensor_signature.cpp:35
exatn::numerics::TensorSignature::resetDimension
void resetDimension(unsigned int dim_id, std::pair< SpaceId, SubspaceId > subspace)
Definition: tensor_signature.cpp:96
exatn::numerics::TensorSignature::isCongruentTo
bool isCongruentTo(const TensorSignature &another) const
Definition: tensor_signature.cpp:86