ExaTN
space_basis.hpp
1 
16 #ifndef EXATN_NUMERICS_SPACE_BASIS_HPP_
17 #define EXATN_NUMERICS_SPACE_BASIS_HPP_
18 
19 #include "tensor_basic.hpp"
20 #include "basis_vector.hpp"
21 
22 #include <vector>
23 
24 namespace exatn{
25 
26 namespace numerics{
27 
31  DimOffset lower; //lower bound of the subrange
32  DimOffset upper; //upper bound of the subrange
33  SymmetryId symm_id; //symmetry id of the subrange
34 };
35 
36 
38 class SpaceBasis{
39 public:
40 
42  SpaceBasis(DimExtent space_dim);
44  SpaceBasis(DimExtent space_dim,
45  const std::vector<SymmetryRange> & symmetry_subranges);
46 
47  SpaceBasis(const SpaceBasis & space_basis) = default;
48  SpaceBasis & operator=(const SpaceBasis & space_basis) = default;
49  SpaceBasis(SpaceBasis && space_basis) noexcept = default;
50  SpaceBasis & operator=(SpaceBasis && space_basis) noexcept = default;
51  virtual ~SpaceBasis() = default;
52 
54  void printIt() const;
55 
57  DimExtent getDimension() const;
58 
60  const std::vector<SymmetryRange> & getSymmetrySubranges() const;
61 
64  void registerSymmetrySubrange(const SymmetryRange subrange);
65 
66 private:
67 
68  DimExtent basis_dim_; //basis dimension (number of basis vectors)
69  std::vector<SymmetryRange> symmetry_ranges_; //symmetry subranges (may be none)
70 };
71 
72 } //namespace numerics
73 
74 } //namespace exatn
75 
76 #endif //EXATN_NUMERICS_SPACES_BASIS_HPP_
exatn::numerics::SpaceBasis::printIt
void printIt() const
Definition: space_basis.cpp:28
exatn
Definition: DriverClient.hpp:10
exatn::numerics::SpaceBasis
Definition: space_basis.hpp:38
exatn::numerics::SpaceBasis::getSymmetrySubranges
const std::vector< SymmetryRange > & getSymmetrySubranges() const
Definition: space_basis.cpp:39
exatn::numerics::SpaceBasis::getDimension
DimExtent getDimension() const
Definition: space_basis.cpp:34
exatn::numerics::SpaceBasis::SpaceBasis
SpaceBasis(DimExtent space_dim)
Definition: space_basis.cpp:16
exatn::numerics::SpaceBasis::registerSymmetrySubrange
void registerSymmetrySubrange(const SymmetryRange subrange)
Definition: space_basis.cpp:44
exatn::numerics::SymmetryRange
Definition: space_basis.hpp:30