| 208 | |
| 209 | template <typename FEL, typename MIP, typename MAT> |
| 210 | static void GenerateMatrix (const FEL & bfel, const MIP & mip, |
| 211 | MAT && mat, LocalHeap & lh) |
| 212 | { |
| 213 | int facetnr = mip.IP().FacetNr(); |
| 214 | if (facetnr >= 0) |
| 215 | { |
| 216 | HeapReset hr(lh); |
| 217 | |
| 218 | const FacetVolumeFiniteElement<D-1> & fel_facet = static_cast<const FacetVolumeFiniteElement<D-1>&> (bfel); |
| 219 | auto r = fel_facet.GetFacetDofs(facetnr); |
| 220 | |
| 221 | FlatMatrix<> dshaperef(r.Size(), DIM_ELEMENT, lh); |
| 222 | mat.AddSize(DIM_DMAT, bfel.GetNDof()) = 0.0; |
| 223 | /* |
| 224 | fel_facet.Facet(facetnr).CalcDShape(mip.IP(), |
| 225 | mat.Row(0).Range(fel_facet.GetFacetDofs(facetnr))); |
| 226 | */ |
| 227 | fel_facet.Facet(facetnr).CalcDShape(mip.IP(), dshaperef); |
| 228 | mat.Cols(r) = Trans(mip.GetJacobianInverse()) * Trans(dshaperef); |
| 229 | } |
| 230 | else |
| 231 | { |
| 232 | throw Exception("cannot evaluate facet-fe inside element"); |
| 233 | } |
| 234 | } |
| 235 | }; |
| 236 | |
| 237 |
nothing calls this directly
no test coverage detected