1 #ifndef BLOCKDIAGONALOPERATOR_H
2 #define BLOCKDIAGONALOPERATOR_H
27 virtual Eigen::MatrixXd
Apply(Eigen::Ref<const Eigen::MatrixXd>
const& x)
override;
29 virtual Eigen::MatrixXd
ApplyTranspose(Eigen::Ref<const Eigen::MatrixXd>
const& x)
override;
31 virtual Eigen::MatrixXd
GetMatrix()
override;
34 std::vector<std::shared_ptr<LinearOperator>>
const&
GetBlocks()
const{
return blocks;};
37 std::vector<std::shared_ptr<LinearOperator>>
blocks;
39 static int SumRows(std::vector<std::shared_ptr<LinearOperator>>
const& blocksIn);
41 static int SumCols(std::vector<std::shared_ptr<LinearOperator>>
const& blocksIn);
Defines a block diagonal linear operator in terms of other linear operators.
std::vector< std::shared_ptr< LinearOperator > > const & GetBlocks() const
virtual Eigen::MatrixXd GetMatrix() override
static int SumRows(std::vector< std::shared_ptr< LinearOperator >> const &blocksIn)
BlockDiagonalOperator(std::vector< std::shared_ptr< LinearOperator >> const &blocksIn)
std::vector< std::shared_ptr< LinearOperator > > blocks
std::shared_ptr< LinearOperator > GetBlock(int i) const
virtual Eigen::MatrixXd Apply(Eigen::Ref< const Eigen::MatrixXd > const &x) override
static int SumCols(std::vector< std::shared_ptr< LinearOperator >> const &blocksIn)
virtual Eigen::MatrixXd ApplyTranspose(Eigen::Ref< const Eigen::MatrixXd > const &x) override
Generic linear operator base class.