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

Method Update

comp/facetfespace.cpp:401–439  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

399 }
400
401 virtual void Update (const FESpace & bfes) override
402 {
403 auto & fes = dynamic_cast<const FacetFESpace&> (bfes);
404
405 size_t oldnfacet = prol_class.Size();
406 size_t nfacet = ma->GetNFacets();
407 cout << IM(3) << "update prol, level = " << ma->GetNLevels() << ", nfacet = " << nfacet << endl;
408
409 while (facets_on_level.Size() < ma->GetNLevels())
410 facets_on_level.Append(oldnfacet);
411 facets_on_level[ma->GetNLevels()-1] = nfacet;
412
413 // *testout << "update first_dofs, first_dofs.Size() == " << first_dofs.Size() << ", levels = " << ma->GetNLevels() << endl;
414 if (first_dofs.Size() < ma->GetNLevels())
415 first_dofs += fes.GetFirstFacetDof();
416
417 // *testout << /* IM(3) << */ "facets_on_level = " << endl << facets_on_level << endl;
418
419 if (ma->GetNLevels() == 1)
420 {
421 prol_class.SetSize(nfacet);
422 prol_class = 0;
423 return;
424 }
425
426 CalcMatrices();
427
428 prol_class.SetSize(nfacet);
429
430 // Array<size_t> verts(4);
431 for (size_t i = oldnfacet; i < nfacet; i++)
432 if (auto parents = get<1>(ma->GetParentEdges(i)); parents[1] == -1)
433 {
434 auto myverts = ma->GetEdgePNums(i);
435 auto paverts = ma->GetEdgePNums(parents[0]);
436 auto minpa = Min(paverts);
437 prol_class[i] = myverts.Contains(minpa) ? 0 : 1;
438 }
439 }
440 };
441
442

Callers 1

UpdateMethod · 0.45

Calls 7

IMClass · 0.85
ContainsMethod · 0.80
SizeMethod · 0.45
GetNFacetsMethod · 0.45
AppendMethod · 0.45
GetFirstFacetDofMethod · 0.45
SetSizeMethod · 0.45

Tested by

no test coverage detected