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

Method AddMatrixTP

comp/bilinearform.cpp:4657–5042  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

4655
4656 template<class SCAL>
4657 void S_BilinearForm<SCAL> :: AddMatrixTP(SCAL val,
4658 const BaseVector & x,
4659 BaseVector & y, LocalHeap & clh) const
4660 {
4661 static Timer timerall ("Apply Matrix1 (TP) - all");
4662 static Timer timervol ("Apply Matrix1 (TP) - volume");
4663 static Timer timerfac1 ("Apply Matrix1 (TP) - facets 1");
4664 static Timer timerfac2 ("Apply Matrix1 (TP) - facets 2");
4665 RegionTimer rall(timerall);
4666 // bool hasbound = false;
4667 bool hasinner = false;
4668 bool hasskeletonbound = false;
4669 bool hasskeletoninner = false;
4670 int volumeintegrals = -1;
4671 for(int j=0;j<parts.Size();j++)
4672 {
4673 const BilinearFormIntegrator & bfi = *GetIntegrator(j);
4674 if (bfi.BoundaryForm())
4675 {
4676 if (bfi.SkeletonForm())
4677 hasskeletonbound = true;
4678 // else
4679 // hasbound = true;
4680 }
4681 else
4682 if (bfi.SkeletonForm())
4683 hasskeletoninner = true;
4684 else
4685 {
4686 hasinner = true;
4687 volumeintegrals = j;
4688 }
4689 }
4690 LocalHeap chelperheap(1000000000,"my x heap");
4691 const shared_ptr<TPHighOrderFESpace> & tpfes = dynamic_pointer_cast<TPHighOrderFESpace > (fespace);
4692 const Array<shared_ptr<FESpace> > & spaces = tpfes->Spaces(0);
4693 int dimspace = tpfes->GetDimension();
4694 const Table<int> & element_coloring0 = spaces[0]->ElementColoring(VOL);
4695 auto meshx = spaces[0]->GetMeshAccess();
4696 auto meshy = spaces[1]->GetMeshAccess();
4697 int nelx = meshx->GetNE();
4698 int nely = meshy->GetNE();
4699 int ndofxspace = spaces[0]->GetNDof();
4700 int ndofyspace = spaces[1]->GetNDof();
4701 if(hasinner)
4702 {
4703 timervol.Start();
4704 // if (task_manager)
4705 // {
4706 //HeapReset hr(chelperheap);
4707 for (FlatArray<int> els_of_col : element_coloring0)
4708 {
4709 SharedLoop2 sl(els_of_col.Range());
4710 // task_manager -> CreateJob
4711 ParallelJob
4712 ( [&] (const TaskInfo & ti)
4713 {
4714 LocalHeap lh = clh.Split(ti.thread_nr, ti.nthreads);

Callers

nothing calls this directly

Calls 15

ElementIdClass · 0.85
GetMeshAccessMethod · 0.80
GetSliceDofNrsMethod · 0.80
GetIndirectMethod · 0.80
StopMethod · 0.80
GetDGFormulationMethod · 0.80
ApplyFacetMatrixMethod · 0.80
GetIntegratorFunction · 0.70
NumIntegratorsFunction · 0.70
SizeMethod · 0.45
BoundaryFormMethod · 0.45
GetDimensionMethod · 0.45

Tested by

no test coverage detected