24 #ifndef BLOCKSTRUCTURE_H
25 #define BLOCKSTRUCTURE_H
44 template<
class BlockType>
57 template<
class MyBlockType>
58 friend std::ostream &operator<< (std::ostream &output,const doci2DM::BlockStructure<MyBlockType> &blocks_p);
104 double operator()(
int block,
int i,
int j)
const;
120 double trace()
const;
124 void dscal(
double alpha);
136 virtual void sqrt(
int);
150 std::vector< std::unique_ptr<BlockType> >
blocks;
BlockStructure & operator*=(double)
std::vector< int > degen
degeneracy of the blocks
BlockStructure< Matrix > BlockMatrix
virtual ~BlockStructure()=default
double ddot(const BlockStructure< BlockType > &) const
BlockStructure & operator-=(const BlockStructure< BlockType > &)
virtual BlockStructure< BlockType > & mprod(const BlockStructure< BlockType > &, const BlockStructure< BlockType > &)
double & operator()(int block, int i, int j)
BlockType & operator[](int block)
void setDim(int, int, int)
std::vector< std::unique_ptr< BlockType > > blocks
BlockStructure & operator=(const BlockStructure< BlockType > &)
BlockStructure< Vector > BlockVector
BlockStructure & operator/=(double)
virtual void L_map(const BlockStructure< BlockType > &, const BlockStructure< BlockType > &)
virtual void sep_pm(BlockStructure< BlockType > &, BlockStructure< BlockType > &)
BlockStructure & operator+=(const BlockStructure< BlockType > &)
BlockStructure & daxpy(double alpha, const BlockStructure< BlockType > &)