| 31 | void CheckElement (const FiniteElement& fel) const override { } |
| 32 | |
| 33 | void CalcMatrix (const FiniteElement & fel, |
| 34 | const BaseMappedIntegrationPoint & mip, |
| 35 | BareSliceMatrix<double,ColMajor> mat, |
| 36 | LocalHeap & lh) const override |
| 37 | { |
| 38 | FlatMatrix<double,ColMajor> hmat(diffop->Dim(), fel.GetNDof(), lh); |
| 39 | diffop -> CalcMatrix (fel, mip, hmat, lh); |
| 40 | |
| 41 | auto dims = factor->Dimensions(); |
| 42 | FlatMatrix<double> factorx(dims[0], dims[1], lh); |
| 43 | factor->Evaluate (mip, factorx.AsVector()); |
| 44 | |
| 45 | IntRange used = diffop->UsedDofs(fel); |
| 46 | mat.Cols(used) = factorx * hmat.Cols(used); |
| 47 | } |
| 48 | |
| 49 | void CalcMatrix (const FiniteElement & fel, |
| 50 | const SIMD_BaseMappedIntegrationRule & mir, |