/home/kcamus/qaas_runs/169-443-9681/intel/AMG/build/AMG/AMG/parcsr_ls/par_strength.c: 253 - 472
--------------------------------------------------------------------------------

253:    for (i = start; i < stop; i++)
254:    {
255:       S_diag_i[i] = jS_diag;
256:       if (num_cols_offd)
257:       {
258:          S_offd_i[i] = jS_offd;
259:       }
260: 
261:       diag = A_diag_data[A_diag_i[i]];
262: 
263:       /* compute scaling factor and row sum */
264:       row_scale = 0.0;
265:       row_sum = diag;
266:       if (num_functions > 1)
267:       {
268:          if (diag < 0)
269:          {
270:             for (jA = A_diag_i[i]+1; jA < A_diag_i[i+1]; jA++)
271:             {
272:                if (dof_func[i] == dof_func[A_diag_j[jA]])
273:                {
274:                   row_scale = hypre_max(row_scale, A_diag_data[jA]);
275:                   row_sum += A_diag_data[jA];
276:                }
277:             }
278:             for (jA = A_offd_i[i]; jA < A_offd_i[i+1]; jA++)
279:             {
280:                if (dof_func[i] == dof_func_offd[A_offd_j[jA]])
281:                {
282:                   row_scale = hypre_max(row_scale, A_offd_data[jA]);
283:                   row_sum += A_offd_data[jA];
[...]
289:             for (jA = A_diag_i[i]+1; jA < A_diag_i[i+1]; jA++)
290:             {
291:                if (dof_func[i] == dof_func[A_diag_j[jA]])
292:                {
293:                   row_scale = hypre_min(row_scale, A_diag_data[jA]);
294:                   row_sum += A_diag_data[jA];
295:                }
296:             }
297:             for (jA = A_offd_i[i]; jA < A_offd_i[i+1]; jA++)
298:             {
299:                if (dof_func[i] == dof_func_offd[A_offd_j[jA]])
300:                {
301:                   row_scale = hypre_min(row_scale, A_offd_data[jA]);
302:                   row_sum += A_offd_data[jA];
[...]
309:          if (diag < 0)
310:          {
311:             for (jA = A_diag_i[i]+1; jA < A_diag_i[i+1]; jA++)
312:             {
313:                row_scale = hypre_max(row_scale, A_diag_data[jA]);
314:                row_sum += A_diag_data[jA];
315:             }
316:             for (jA = A_offd_i[i]; jA < A_offd_i[i+1]; jA++)
317:             {
318:                row_scale = hypre_max(row_scale, A_offd_data[jA]);
319:                row_sum += A_offd_data[jA];
320:             }
321:          }
322:          else
323:          {
324:             for (jA = A_diag_i[i]+1; jA < A_diag_i[i+1]; jA++)
325:             {
326:                row_scale = hypre_min(row_scale, A_diag_data[jA]);
327:                row_sum += A_diag_data[jA];
328:             }
329:             for (jA = A_offd_i[i]; jA < A_offd_i[i+1]; jA++)
330:             {
331:                row_scale = hypre_min(row_scale, A_offd_data[jA]);
332:                row_sum += A_offd_data[jA];
333:             }
334:          } /* diag >= 0*/
335:       } /* num_functions <= 1 */
336: 
337:       jS_diag += A_diag_i[i + 1] - A_diag_i[i] - 1;
338:       jS_offd += A_offd_i[i + 1] - A_offd_i[i];
339: 
340:       /* compute row entries of S */
341:       S_temp_diag_j[A_diag_i[i]] = -1;
342:       if ((fabs(row_sum) > fabs(diag)*max_row_sum) && (max_row_sum < 1.0))
343:       {
344:          /* make all dependencies weak */
345:          for (jA = A_diag_i[i]+1; jA < A_diag_i[i+1]; jA++)
346:          {
347:             S_temp_diag_j[jA] = -1;
348:          }
349:          jS_diag -= A_diag_i[i + 1] - (A_diag_i[i] + 1);
350: 
351:          for (jA = A_offd_i[i]; jA < A_offd_i[i+1]; jA++)
352:          {
353:             S_temp_offd_j[jA] = -1;
354:          }
355:          jS_offd -= A_offd_i[i + 1] - A_offd_i[i];
356:       }
357:       else
358:       {
359:          if (num_functions > 1)
360:          { 
361:             if (diag < 0) 
362:             { 
363:                for (jA = A_diag_i[i]+1; jA < A_diag_i[i+1]; jA++)
364:                {
365:                   if (A_diag_data[jA] <= strength_threshold * row_scale
366:                       || dof_func[i] != dof_func[A_diag_j[jA]])
367:                   {
368:                      S_temp_diag_j[jA] = -1;
369:                      --jS_diag;
370:                   }
371:                   else
372:                   {
373:                      S_temp_diag_j[jA] = A_diag_j[jA];
374:                   }
375:                }
376:                for (jA = A_offd_i[i]; jA < A_offd_i[i+1]; jA++)
377:                {
378:                   if (A_offd_data[jA] <= strength_threshold * row_scale
379:                       || dof_func[i] != dof_func_offd[A_offd_j[jA]])
380:                   {
381:                      S_temp_offd_j[jA] = -1;
382:                      --jS_offd;
383:                   }
384:                   else
385:                   {
386:                      S_temp_offd_j[jA] = A_offd_j[jA];
[...]
392:                for (jA = A_diag_i[i]+1; jA < A_diag_i[i+1]; jA++)
393:                {
394:                   if (A_diag_data[jA] >= strength_threshold * row_scale
395:                       || dof_func[i] != dof_func[A_diag_j[jA]])
396:                   {
397:                      S_temp_diag_j[jA] = -1;
398:                      --jS_diag;
399:                   }
400:                   else
401:                   {
402:                      S_temp_diag_j[jA] = A_diag_j[jA];
403:                   }
404:                }
405:                for (jA = A_offd_i[i]; jA < A_offd_i[i+1]; jA++)
406:                {
407:                   if (A_offd_data[jA] >= strength_threshold * row_scale
408:                       || dof_func[i] != dof_func_offd[A_offd_j[jA]])
409:                   {
410:                      S_temp_offd_j[jA] = -1;
411:                      --jS_offd;
412:                   }
413:                   else
414:                   {
415:                      S_temp_offd_j[jA] = A_offd_j[jA];
[...]
422:             if (diag < 0) 
423:             { 
424:                for (jA = A_diag_i[i]+1; jA < A_diag_i[i+1]; jA++)
425:                {
426:                   if (A_diag_data[jA] <= strength_threshold * row_scale)
427:                   {
428:                      S_temp_diag_j[jA] = -1;
429:                      --jS_diag;
430:                   }
431:                   else
432:                   {
433:                      S_temp_diag_j[jA] = A_diag_j[jA];
434:                   }
435:                }
436:                for (jA = A_offd_i[i]; jA < A_offd_i[i+1]; jA++)
437:                {
438:                   if (A_offd_data[jA] <= strength_threshold * row_scale)
439:                   {
440:                      S_temp_offd_j[jA] = -1;
441:                      --jS_offd;
442:                   }
443:                   else
444:                   {
445:                      S_temp_offd_j[jA] = A_offd_j[jA];
[...]
451:                for (jA = A_diag_i[i]+1; jA < A_diag_i[i+1]; jA++)
452:                {
453:                   if (A_diag_data[jA] >= strength_threshold * row_scale)
454:                   {
455:                      S_temp_diag_j[jA] = -1;
456:                      --jS_diag;
457:                   }
458:                   else
459:                   {
460:                      S_temp_diag_j[jA] = A_diag_j[jA];
461:                   }
462:                }
463:                for (jA = A_offd_i[i]; jA < A_offd_i[i+1]; jA++)
464:                {
465:                   if (A_offd_data[jA] >= strength_threshold * row_scale)
466:                   {
467:                      S_temp_offd_j[jA] = -1;
468:                      --jS_offd;
469:                   }
470:                   else
471:                   {
472:                      S_temp_offd_j[jA] = A_offd_j[jA];
