MCPcopy Create free account
hub / github.com/NGSolve/ngsolve / AddDualTrans

Method AddDualTrans

fem/scalarfe.cpp:257–278  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

255 }
256
257 void BaseScalarFiniteElement :: AddDualTrans (const IntegrationRule & ir, BareSliceVector<double> values, BareSliceVector<> coefs) const
258 {
259 LocalHeapMem<10000> lh("adddualtranheap"); // for 16 mips
260
261 STACK_ARRAY(double, mem, GetNDof());
262 FlatVector<> shape(GetNDof(), &mem[0]);
263
264 auto & trafo = GetFEElementTransformation(ElementType());
265
266 constexpr size_t BS = 16;
267 for (size_t i = 0; i < ir.Size(); i+= BS)
268 {
269 HeapReset hr(lh);
270 IntRange r(i, std::min(ir.Size(), i+BS));
271 auto & mir = trafo(ir.Range(r.First(), r.Next()), lh);
272 for (size_t j : r)
273 {
274 CalcDualShape(mir[j-i], shape);
275 coefs += values(j) * shape;
276 }
277 }
278 }
279
280 void BaseScalarFiniteElement :: AddDualTrans (const SIMD_IntegrationRule & ir, BareVector<SIMD<double>> values, BareSliceVector<> coefs) const
281 {

Callers

nothing calls this directly

Calls 6

ElementTypeFunction · 0.85
CalcDualShapeFunction · 0.85
GetNDofFunction · 0.70
SizeMethod · 0.45
RangeMethod · 0.45
FirstMethod · 0.45

Tested by

no test coverage detected