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

Method AddMatrix1

comp/bilinearform.cpp:5141–5966  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

5139
5140 template <class SCAL>
5141 void S_BilinearForm<SCAL> :: AddMatrix1 (SCAL val,
5142 const BaseVector & x,
5143 BaseVector & y, LocalHeap & clh) const
5144 {
5145 if (geom_free_parts.Size())
5146 AddMatrixGF(val, x, y, false, clh);
5147
5148 static Timer timer ("Apply Matrix");
5149 static Timer<> timervb[4] = { string("Apply Matrix - volume"),
5150 string("Apply Matrix - boundary"),
5151 string("Apply Matrix - cd2"),
5152 string("Apply Matrix - cd3") };
5153
5154 // static Timer timer_loop ("Apply Matrix - all loop elmat");
5155 static Timer timer_applyelmat ("Apply Matrix - elmat");
5156
5157 static Timer timerDG ("Apply Matrix - DG");
5158 using TTimer = Timer<TNoTracing, TNoTiming>;
5159 static TTimer timerDGpar ("Apply Matrix - DG par");
5160 static TTimer timerDGapply ("Apply Matrix - DG par apply");
5161 static TTimer timerDG1 ("Apply Matrix - DG 1");
5162 static TTimer timerDG2 ("Apply Matrix - DG 2");
5163 static TTimer timerDG2a ("Apply Matrix - DG 2a");
5164 static TTimer timerDG2b ("Apply Matrix - DG 2b");
5165 static TTimer timerDG2c ("Apply Matrix - DG 2c");
5166 static TTimer timerDG3 ("Apply Matrix - DG 3");
5167 static TTimer timerDG4 ("Apply Matrix - DG 4");
5168 static TTimer timerDGfacet ("Apply Matrix - DG boundary");
5169 static TTimer timerDGfacet1 ("Apply Matrix - DG boundary 1");
5170 static TTimer timerDGfacet2 ("Apply Matrix - DG boundary 2");
5171 static Timer timerDGparallelfacets ("Apply Matrix - DG parallel facets");
5172 static Timer timerspecial("Apply Matrix - Special Elements");
5173 RegionTimer reg (timer);
5174
5175 // static int lh_size = 5000000;
5176 shared_ptr<TPHighOrderFESpace> tpfes = dynamic_pointer_cast<TPHighOrderFESpace>(fespace);
5177 if(tpfes)
5178 {
5179 AddMatrixTP(val,x,y,clh);
5180 return;
5181 }
5182
5183 if (!MixedSpaces())
5184 {
5185 for (auto vb : { VOL, BND, BBND, BBBND } )
5186 if (VB_parts[vb].Size())
5187 {
5188 RegionTimer reg (timervb[vb]);
5189
5190 IterateElements
5191 (*fespace, vb, clh,
5192 [&] (FESpace::Element el, LocalHeap & lh)
5193 {
5194 // RegionTimer reg (timer_loop);
5195 auto & fel = el.GetFE();
5196 auto & trafo = el.GetTrafo();
5197 auto dnums = el.GetDofs();
5198

Callers

nothing calls this directly

Calls 15

MixedSpacesFunction · 0.85
NodeIdClass · 0.85
ElementIdClass · 0.85
StdNodeTypeFunction · 0.85
ToStringFunction · 0.85
GetIndirectMethod · 0.80
TransformVecMethod · 0.80
GetDistantProcsMethod · 0.80
ApplyFacetMatrixMethod · 0.80
GetDGFormulationMethod · 0.80
ClearMethod · 0.80
GetDofNrs2Method · 0.80

Tested by

no test coverage detected