#pragma once #include #include namespace AMDiS { /** * \addtogroup operators * @{ **/ namespace tag { struct partialtest_trial { std::size_t comp; }; struct partial_test { std::size_t comp; }; } /// first-order operator \f$ \langle\partial_i\psi, c\,\phi\rangle \f$ template class GridFunctionOperator : public GridFunctionOperatorTransposed, GridFunctionOperator> { using Self = GridFunctionOperator; using Transposed = GridFunctionOperator; using Super = GridFunctionOperatorTransposed; public: GridFunctionOperator(tag::partialtest_trial tag, GridFct const& expr) : Super(tag::test_partialtrial{tag.comp}, expr) {} }; /// Create a first-order term with derivative on trial-function template auto fot(Expr&& expr, tag::partial_test t, QuadratureArgs&&... args) { return makeOperator(tag::partialtest_trial{t.comp}, FWD(expr), FWD(args)...); } /** @} **/ } // end namespace AMDiS