#pragma once #include #include namespace AMDiS { /** * \addtogroup operators * @{ **/ namespace tag { struct gradtest_trialvec {}; } /// first-order operator \f$ \langle\nabla\psi, c\,\Phi\rangle \f$ template class GridFunctionOperator : public GridFunctionOperator { using Transposed = GridFunctionOperator; public: GridFunctionOperator(tag::gradtest_trialvec, GridFct const& expr, QuadCreator const& quadCreator) : Transposed(tag::testvec_gradtrial{}, 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