diff --git a/dune/gdt/local/bilinear-forms/interfaces.hh b/dune/gdt/local/bilinear-forms/interfaces.hh index 18f0b90a6939ac2a194d98d4b9be52f9f2146241..b65572225f3593a8734d147ed13f0c36507f9bda 100644 --- a/dune/gdt/local/bilinear-forms/interfaces.hh +++ b/dune/gdt/local/bilinear-forms/interfaces.hh @@ -172,6 +172,27 @@ public: DynamicMatrix<F>& result_out_out, const XT::Common::Parameter& param = {}) const = 0; + /** + * Variant which consideres the intersection only from the inside. + */ + virtual void apply2(const IntersectionType& intersection, + const LocalTestBasisType& test_basis, + const LocalAnsatzBasisType& ansatz_basis, + DynamicMatrix<F>& result, + const XT::Common::Parameter& param = {}) const + { + this->apply2(intersection, + test_basis, + ansatz_basis, + test_basis, + ansatz_basis, + result, + unused_result_, + unused_result_, + unused_result_, + param); + } + /** * This method is provided for convenience and should not be used within library code. */ @@ -197,7 +218,23 @@ public: result_out_out, param); return {result_in_in, result_in_out, result_out_in, result_out_out}; - } // ... apply(...) + } // ... apply2(...) + + /** + * This method is provided for convenience and should not be used within library code. + */ + DynamicMatrix<F> apply2(const IntersectionType& intersection, + const LocalTestBasisType& test_basis, + const LocalAnsatzBasisType& ansatz_basis, + const XT::Common::Parameter& param = {}) const + { + DynamicMatrix<F> result(test_basis.size(param), ansatz_basis.size(param), 0); + this->apply2(intersection.test_basis, ansatz_basis, param); + return result; + } + +protected: + mutable DynamicMatrix<F> unused_result_; }; // class LocalIntersectionBilinearFormInterface