#pragma once #include #include namespace AMDiS { /** * \addtogroup operators * @{ **/ namespace tag { struct partialtest_trial { std::size_t comp; }; } /// first-order operator \f$ \langle\partial_i\psi, c\,\phi\rangle \f$ template class GridFunctionOperator : public GridFunctionOperator { using Transposed = GridFunctionOperator; public: GridFunctionOperator(tag::partialtest_trial tag, GridFct const& expr, QuadCreator const& quadCreator) : Transposed(tag::test_partialtrial{tag.comp}, expr, quadCreator) {} template void calculateElementMatrix(Context const& context, QuadratureRule const& quad, ElementMatrix& elementMatrix, RowNode const& rowNode, ColNode const& colNode, std::integral_constant flagSameFE, std::integral_constant flagSameNode) { auto elementMatrixTransposed = trans(elementMatrix); Transposed::calculateElementMatrix( context, quad, elementMatrixTransposed, colNode, rowNode, flagSameFE, flagSameNode); } }; /** @} **/ } // end namespace AMDiS