/home/kcamus/qaas_runs/169-443-9681/intel/AMG/build/AMG/AMG/parcsr_ls/par_lr_interp.c: 1221 - 1675
--------------------------------------------------------------------------------

1221:        if (n_fine)
[...]
1609:            for (jj = A_diag_i[i]+1; jj < A_diag_i[i+1]; jj++)
1610:            { /* i1 is a c-point and strongly influences i, accumulate
1611:               * a_(i,i1) into interpolation weight */
1612:              i1 = A_diag_j[jj];
1613:              if (P_marker[i1] >= jj_begin_row)
1614:              {
1615:                P_diag_data[P_marker[i1]] += A_diag_data[jj];
1616:              }
1617:              else if(P_marker[i1] == strong_f_marker)
1618:              {
1619:                sum = zero;
1620:                sgn = 1;
1621:                if(A_diag_data[A_diag_i[i1]] < 0) sgn = -1;
1622:                /* Loop over row of A for point i1 and calculate the sum
1623:                 * of the connections to c-points that strongly influence i. */
1624:                for(jj1 = A_diag_i[i1]+1; jj1 < A_diag_i[i1+1]; jj1++)
1625:                {
1626:                  i2 = A_diag_j[jj1];
1627:                  if((P_marker[i2] >= jj_begin_row || i2 == i) && (sgn*A_diag_data[jj1]) < 0)
1628:                    sum += A_diag_data[jj1];
1629:                }
1630:                if(num_procs > 1)
1631:                {
1632:                  for(jj1 = A_offd_i[i1]; jj1< A_offd_i[i1+1]; jj1++)
1633:                  {
1634:                    i2 = A_offd_j[jj1];
1635:                    if(P_marker_offd[i2] >= jj_begin_row_offd &&
1636:                       (sgn*A_offd_data[jj1]) < 0)
1637:                       sum += A_offd_data[jj1];
1638:                  }
1639:                }
1640:                if(sum != 0)
1641:                {
1642:                  distribute = A_diag_data[jj]/sum;
1643:                  /* Loop over row of A for point i1 and do the distribution */
1644:                  for(jj1 = A_diag_i[i1]+1; jj1 < A_diag_i[i1+1]; jj1++)
1645:                  {
1646:                    i2 = A_diag_j[jj1];
1647:                    if(P_marker[i2] >= jj_begin_row && (sgn*A_diag_data[jj1]) < 0)
1648:                       P_diag_data[P_marker[i2]] += 
1649:                       distribute*A_diag_data[jj1];
1650:                        if(i2 == i && (sgn*A_diag_data[jj1]) < 0)
1651:                          diagonal += distribute*A_diag_data[jj1];
1652:                  }
1653:                  if(num_procs > 1)
1654:                  {
1655:                    for(jj1 = A_offd_i[i1]; jj1 < A_offd_i[i1+1]; jj1++)
1656:                    {
1657:                      i2 = A_offd_j[jj1];
1658:                      if(P_marker_offd[i2] >= jj_begin_row_offd &&
1659:                                 (sgn*A_offd_data[jj1]) < 0)
1660:                        P_offd_data[P_marker_offd[i2]] +=
[...]
1667:                  diagonal += A_diag_data[jj];
1668:                }
1669:              }
1670:              /* neighbor i1 weakly influences i, accumulate a_(i,i1) into
1671:               * diagonal */
1672:              else if (CF_marker[i1] != -3)
1673:              {
1674:                if(num_functions == 1 || dof_func[i] == dof_func[i1])
1675:                  diagonal += A_diag_data[jj];
