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

Method AddMatrix

comp/bddc.cpp:260–370  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

258 bool IsComplex() const override { return pwbmat -> IsComplex(); }
259
260 void AddMatrix (FlatMatrix<SCAL> elmat, FlatArray<int> dnums,
261 ElementId id, LocalHeap & lh)
262
263 {
264 static Timer timer ("BDDC - Addmatrix", NoTracing);
265 RegionTimer reg (timer);
266 static Timer timer2("BDDC - Add to sparse", NoTracing, NoTiming);
267 static Timer timer3("BDDC - compute", NoTracing, NoTiming);
268
269 HeapReset hr(lh);
270
271 // auto fes = bfa->GetFESpace();
272
273 ArrayMem<int, 100> localwbdofs, localintdofs;
274
275 for (int k : Range(dnums))
276 {
277 COUPLING_TYPE ct = fes->GetDofCouplingType(dnums[k]);
278 if (ct == WIREBASKET_DOF)
279 localwbdofs.Append (k);
280 else
281 localintdofs.Append (k);
282 }
283
284 int sizew = localwbdofs.Size();
285 int sizei = localintdofs.Size();
286
287 FlatArray<double> el2ifweight(sizei, lh);
288 for (int k = 0; k < sizei; k++)
289 el2ifweight[k] = fabs (elmat(localintdofs[k],
290 localintdofs[k]));
291
292 /*
293 if (typeid(SCAL) == typeid(double))
294 el2ifweight[k] = fabs (elmat(localintdofs[k],
295 localintdofs[k]));
296 else
297 el2ifweight[k] = 1;
298 */
299
300
301 FlatMatrix<SCAL> a = elmat.Rows(localwbdofs).Cols(localwbdofs) | lh;
302 FlatMatrix<SCAL> b = elmat.Rows(localwbdofs).Cols(localintdofs) | lh;
303 FlatMatrix<SCAL> c = elmat.Rows(localintdofs).Cols(localwbdofs) | lh;
304 FlatMatrix<SCAL> d = elmat.Rows(localintdofs).Cols(localintdofs) | lh;
305 FlatMatrix<SCAL> het (sizew, sizei, lh);
306 FlatMatrix<SCAL> he (sizei, sizew, lh);
307
308
309 if (sizei)
310 {
311 RegionTimer regcompute (timer3);
312 regcompute.AddFlops (sizei*sizei*sizei + 2*sizei*sizei*sizew);
313
314 CalcInverse (d); // , INVERSE_LIB::INV_NGBLA);
315
316 if (sizew)
317 {

Callers 3

MultMethod · 0.45
MultAddMethod · 0.45
AddElementMatrixMethod · 0.45

Calls 10

fabsFunction · 0.85
RangeFunction · 0.50
CalcInverseFunction · 0.50
AppendMethod · 0.45
SizeMethod · 0.45
ColsMethod · 0.45
RowsMethod · 0.45
RowMethod · 0.45
ColMethod · 0.45
AddElementMatrixMethod · 0.45

Tested by

no test coverage detected