linearized_block.hpp functional memory vector mfem/linalg/operator.hpp mfem/linalg/sparsemat.hpp src/include/serif/model/backend/mfem/actions.hpp src/include/serif/model/computations/point_constraints.hpp src/include/serif/operators/backend/mfem/replaced_rows.hpp src/include/serif/operators/backend/mfem/volume_field_block.hpp src/include/serif/solver/preconditioner/computations/coupling.hpp src/include/serif/solver/preconditioner/computations/ordering.hpp src/include/serif/solver/preconditioner/computations/physical_blocks.hpp src/include/serif/solver/preconditioner/recipes/block.hpp src/lib/serif/operators/backend/mfem/linearized_block.cpp serif::operators::backend::mfem::LinearizedBlock serif serif::operators serif::operators::backend serif::operators::backend::mfem #pragmaonce #include<functional> #include<memory> #include<vector> #include"mfem/linalg/operator.hpp" #include"mfem/linalg/sparsemat.hpp" namespaceserif::operators::backend::mfem { classLinearizedBlockfinal { public: usingAction=std::shared_ptr<const::mfem::Operator>; usingDiagonal=std::function<std::vector<double>()>; usingAssembly=std::function<std::shared_ptr<const::mfem::SparseMatrix>()>; explicitLinearizedBlock(Actionaction,Diagonaldiagonal={},Assemblyassembly={}); [[nodiscard]]constAction&action()constnoexcept; [[nodiscard]]boolhas_diagonal()constnoexcept; [[nodiscard]]boolhas_assembly()constnoexcept; [[nodiscard]]std::vector<double>diagonal()const; [[nodiscard]]std::shared_ptr<const::mfem::SparseMatrix>assemble()const; [[nodiscard]]booloperator==(constLinearizedBlock&)const=default; private: structData; std::shared_ptr<constData>m_data; }; [[nodiscard]]std::vector<double>checked_diagonal(constLinearizedBlock&block); [[nodiscard]]std::shared_ptr<const::mfem::SparseMatrix>checked_assembly(constLinearizedBlock&block); [[nodiscard]]LinearizedBlocklinearized_block(std::shared_ptr<const::mfem::SparseMatrix>matrix); [[nodiscard]]LinearizedBlocklinearized_block(std::shared_ptr<const::mfem::DenseMatrix>matrix); }//namespaceserif::operators::backend::mfem