| 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 |
nothing calls this directly
no test coverage detected