term_coefficients.hpp serif/utils/dependencies/dependency_context.hpp serif/backend/mfem/discretization/term_binding.hpp src/include/serif/backend/mfem/discretization/field_values.hpp src/include/serif/backend/mfem/geometry/surface/boundary_data.hpp src/include/serif/backend/mfem/model/state.hpp src/include/serif/backend/mfem/operators/element_preparation.hpp src/include/serif/backend/mfem/operators/volume_data.hpp serif::operators::backend::mfem::MappingCoefficients serif::operators::backend::mfem::CoefficientView serif serif::operators serif::operators::backend serif::operators::backend::mfem #pragmaonce #include"serif/utils/dependencies/dependency_context.hpp" #include"serif/backend/mfem/discretization/term_binding.hpp" namespaceserif::operators::backend::mfem{ structMappingCoefficients{ const::mfem::FiniteElementSpace&binding; const::mfem::Vector&values; }; template<typenameBindingT> structCoefficientView{ usingTerm=BindingT::Term; constBindingT&binding; const::mfem::Vector&values; }; template<typenameBindingT> [[nodiscard]]CoefficientView<BindingT>bind(constBindingT&binding,const::mfem::Vector&values){ return{binding,values}; } template<typenameBindingT> voidbind(constBindingT&,::mfem::Vector&&)=delete; template<typenameBindingT> voidbind(constBindingT&,const::mfem::Vector&&)=delete; template<typenameBindingT> voidbind(constBindingT&&,const::mfem::Vector&)=delete; template<typename...BindingTs> [[nodiscard]]automake_term_coefficients(BindingTs...bindings){ usingnamespaceutils::dependencies; static_assert(sizeof...(BindingTs)>0,"Coefficientinputsmustbindatleastoneterm."); returnmake_dependency_context(own<typenameBindingTs::Term>(bindings)...); } }//namespaceserif::operators::backend::mfem