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

Method AddMatrixGF

comp/bilinearform.cpp:5970–8118  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

5968
5969 template <class SCAL>
5970 void S_BilinearForm<SCAL> :: AddMatrixGF (SCAL val,
5971 const BaseVector & x,
5972 BaseVector & y,
5973 bool transpose,
5974 LocalHeap & lh) const
5975 {
5976 static Timer t("BilinearForm::Apply - geomfree");
5977 static Timer tgetx("BilinearForm::Apply - get x");
5978 static Timer tx("BilinearForm::Apply - transform x");
5979 static Timer ty("BilinearForm::Apply - transform y");
5980 static Timer taddy("BilinearForm::Apply - add y");
5981 static Timer tgf("BilinearForm::Apply - geomfree gridfunction");
5982 static Timer tgfmult("BilinearForm::Apply - geomfree gridfunction - mult");
5983 static Timer tm("BilinearForm::Apply - geomfree mult");
5984 static Timer teval("BilinearForm::Apply - evaluate");
5985 RegionTimer reg(t);
5986
5987 // classify:
5988 auto fesx = GetTrialSpace();
5989 auto fesy = GetTestSpace();
5990 if (transpose) Swap (fesx, fesy);
5991 auto ma = GetMeshAccess();
5992
5993 /*
5994 Array<short> classnr(ma->GetNE());
5995 ma->IterateElements
5996 (VOL, lh, [&] (auto el, LocalHeap & llh)
5997 {
5998 classnr[el.Nr()] =
5999 SwitchET<ET_TRIG,ET_TET>
6000 (el.GetType(),
6001 [el] (auto et) { return ET_trait<et.ElementType()>::GetClassNr(el.Vertices()); });
6002 });
6003
6004 TableCreator<size_t> creator;
6005 for ( ; !creator.Done(); creator++)
6006 for (auto i : Range(classnr))
6007 creator.Add (classnr[i], i);
6008 Table<size_t> table = creator.MoveTable();
6009 */
6010
6011 const Table<size_t> & table = ma->GetElementsOfClass();
6012 // auto dof_tablex = fesx->CreateDofTable(VOL);
6013
6014
6015
6016#ifdef OLDPARALLEL
6017
6018 for (auto elclass_inds : table)
6019 {
6020 if (elclass_inds.Size() == 0) continue;
6021 HeapReset hr(lh);
6022
6023 ElementId ei(VOL,elclass_inds[0]);
6024 auto & felx = GetTrialSpace()->GetFE (ei, lh);
6025 auto & fely = GetTestSpace()->GetFE (ei, lh);
6026 auto & trafo = GetTrialSpace()->GetMeshAccess()->GetTrafo(ei, lh);
6027

Callers

nothing calls this directly

Calls 15

GetTrialSpaceFunction · 0.85
GetTestSpaceFunction · 0.85
SwapFunction · 0.85
GetMeshAccessMethod · 0.80
GetIndirectMethod · 0.80
ElementVBMethod · 0.80
GetFESpaceMethod · 0.80
FacetTypeMethod · 0.80
AddIntegratorMethod · 0.80
RangeFunction · 0.50
SizeFunction · 0.50
TransFunction · 0.50

Tested by

no test coverage detected