actions.hpp functional span vector serif/backend/mfem/operators/linearized_block.hpp src/include/serif/backend/mfem/model/deformation.hpp src/include/serif/backend/mfem/model/system.hpp src/include/serif/backend/mfem/model/volume.hpp src/lib/serif/backend/mfem/operators/actions.cpp serif serif::operators serif::operators::backend serif::operators::backend::mfem #pragmaonce #include<functional> #include<span> #include<vector> #include"serif/backend/mfem/operators/linearized_block.hpp" namespaceserif::operators::backend::mfem{ usingMatrixAction=std::function<void(const::mfem::Vector&,::mfem::Vector&)>; usingMatrixArrayAction=std::function<void(std::span<const::mfem::Vector*const>,std::span<::mfem::Vector*const>)>; [[nodiscard]]LinearizedBlocklinearized_action(introws,intcolumns,MatrixActionaction,MatrixActiontranspose); [[nodiscard]]LinearizedBlocklinearized_action(introws,intcolumns,MatrixActionaction,MatrixActiontranspose,MatrixArrayActionbatch); voidapply_many(const::mfem::Operator&action,std::span<const::mfem::Vector*const>inputs,std::span<::mfem::Vector*const>outputs); [[nodiscard]]LinearizedBlocktranspose_block(LinearizedBlockblock); [[nodiscard]]LinearizedBlockcompose_blocks(LinearizedBlockleft,LinearizedBlockright); [[nodiscard]]LinearizedBlocksum_blocks(introws,intcolumns,std::vector<LinearizedBlock>blocks); }//namespaceserif::operators::backend::mfem