@@ -2435,30 +2435,35 @@ namespace ngcomp
24352435 vol_cf->Evaluate (ir, values);
24362436 return ;
24372437 }
2438- const MeshAccess & ma = *static_cast <const MeshAccess*> (trafo.GetMesh ());
2439- int facet = ma.GetElFacets (ei)[0 ];
2440- ArrayMem<int ,2 > elnums;
2441- ma.GetFacetElements (facet, elnums);
24422438
2443- for (auto elnr : elnums)
2439+ const MeshAccess & ma = *static_cast <const MeshAccess*> (trafo.GetMesh ());
2440+ if (ei.IsBoundary ())
24442441 {
2445- ElementId vei (VOL, elnr);
2446- int locfacnr = ma.GetElFacets (vei).Pos (facet);
2447-
2448- ElementTransformation & vol_trafo = ma.GetTrafo (vei, lh);
2449- if (!vol_cf->DefinedOn (vol_trafo)) continue ;
2450-
2451- Facet2ElementTrafo f2el (vol_trafo.GetElementType (), ma.GetElVertices (vei));
2452- Array<int > surfvnums { ma.GetElVertices (ei) };
2453- Facet2SurfaceElementTrafo f2sel (trafo.GetElementType (), surfvnums);
2454- auto & ir_ref = f2sel.Inverse (ir.IR (), lh);
2455- auto & ir_vol = f2el (locfacnr, ir_ref, lh);
2456- auto & mir_vol = vol_trafo (ir_vol, lh);
2457- mir_vol.ComputeNormalsAndMeasure (vol_trafo.GetElementType (), locfacnr);
2458- vol_cf -> Evaluate (mir_vol, values);
2459- return ;
2442+ int facet = ma.GetElFacets (ei)[0 ];
2443+ ArrayMem<int ,2 > elnums;
2444+ ma.GetFacetElements (facet, elnums);
2445+
2446+ for (auto elnr : elnums)
2447+ {
2448+ ElementId vei (VOL, elnr);
2449+ int locfacnr = ma.GetElFacets (vei).Pos (facet);
2450+
2451+ ElementTransformation & vol_trafo = ma.GetTrafo (vei, lh);
2452+ if (!vol_cf->DefinedOn (vol_trafo)) continue ;
2453+
2454+ Facet2ElementTrafo f2el (vol_trafo.GetElementType (), ma.GetElVertices (vei));
2455+ Array<int > surfvnums { ma.GetElVertices (ei) };
2456+ Facet2SurfaceElementTrafo f2sel (trafo.GetElementType (), surfvnums);
2457+ auto & ir_ref = f2sel.Inverse (ir.IR (), lh);
2458+ auto & ir_vol = f2el (locfacnr, ir_ref, lh);
2459+ auto & mir_vol = vol_trafo (ir_vol, lh);
2460+ mir_vol.ComputeNormalsAndMeasure (vol_trafo.GetElementType (), locfacnr);
2461+ vol_cf -> Evaluate (mir_vol, values);
2462+ return ;
2463+ }
24602464 }
2461-
2465+
2466+ values.AddSize (Dimension (), ir.Size ()) = T (0.0 );
24622467 }
24632468
24642469 template <typename MIR, typename T, ORDERING ORD>
0 commit comments