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

Function GenerateSurfaceData

comp/webgui.cpp:250–276  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

248}
249
250vector<string> GenerateSurfaceData( shared_ptr<MeshAccess> ma,
251 shared_ptr<CoefficientFunction> cf,
252 int order) {
253 // generate surface data
254 LocalHeapMem<100000> lh("webgui_surface_data");
255 auto vb = ma->GetDimension() == 3 ? BND : VOL;
256 Array<double> surface_data;
257 auto comps = cf->Dimension();
258 for (auto elnr : Range(ma->GetNElements(2))) {
259 HeapReset hr(lh);
260
261 auto el = ma->GetElement({vb, elnr});
262 auto &ir = GetElementPoints(el.GetType(), order);
263 auto &trafo = ma->GetTrafo(el, lh);
264 BaseMappedIntegrationRule &mir = trafo(ir, lh);
265 FlatMatrix<> values(ir.Size(), comps, lh);
266 cf->Evaluate(mir, values);
267 surface_data.Append(
268 FlatArray<double>(values.AsVector().Size(), values.Data()));
269 }
270 auto nip = GetElementPoints(ET_TRIG, order).Size();
271 auto nel = surface_data.Size() / nip /
272 comps; // might be different from ma->GetNElements(2), because
273 // quads are divided into 2 trigs
274 FlatTensor<3, double> data(nel, nip, comps, surface_data.Data());
275 return MapBernstein(data, ET_TRIG, order, cf->Dimension());
276}
277
278vector<string> GenerateVolumeData( shared_ptr<MeshAccess> ma,
279 shared_ptr<CoefficientFunction> cf,

Callers 1

GenerateWebguiDataFunction · 0.85

Calls 10

MapBernsteinFunction · 0.85
RangeFunction · 0.50
GetDimensionMethod · 0.45
DimensionMethod · 0.45
GetTypeMethod · 0.45
SizeMethod · 0.45
EvaluateMethod · 0.45
AppendMethod · 0.45
AsVectorMethod · 0.45
DataMethod · 0.45

Tested by

no test coverage detected