/home/kcamus/qaas_runs/169-443-9681/intel/AMG/build/AMG/AMG/parcsr_ls/par_multi_interp.c: 1605 - 1660
--------------------------------------------------------------------------------

1605:            for (i=thread_start; i < thread_stop; i++) 
1606:            {
1607:              i1 = pass_array[i];
1608:              sum_C = 0;
1609:              sum_N = 0;
1610:              j_start = P_diag_start[i1];
1611:              j_end = j_start+P_diag_i[i1+1]-P_diag_i[i1];
1612:              for (j=j_start; j < j_end; j++)
1613:              {
1614:                 k1 = P_diag_pass[1][j];
1615:                 tmp_marker[C_array[k1]] = i1;
1616:              }
1617:              cnt = P_diag_i[i1];
1618:              for (j=A_diag_i[i1]+1; j < A_diag_i[i1+1]; j++)
1619:              {
1620:                 j1 = A_diag_j[j];
1621:                 if (CF_marker[j1] != -3 && 
1622:                    (num_functions == 1 || dof_func[i1] == dof_func[j1]))
1623:                    sum_N += A_diag_data[j];
1624:                 if (j1 != -1 && tmp_marker[j1] == i1)
1625:                 {
1626:                    P_diag_data[cnt] = A_diag_data[j];
1627:                    P_diag_j[cnt++] = fine_to_coarse[j1];
1628:                    sum_C += A_diag_data[j];
1629:                 }
1630:              }
1631:              j_start = P_offd_start[i1];
1632:              j_end = j_start+P_offd_i[i1+1]-P_offd_i[i1];
1633:              for (j=j_start; j < j_end; j++)
1634:              {
1635:                 k1 = P_offd_pass[1][j];
1636:                 tmp_marker_offd[C_array_offd[k1]] = i1;
1637:              }
1638:              cnt_offd = P_offd_i[i1];
1639:              for (j=A_offd_i[i1]; j < A_offd_i[i1+1]; j++)
1640:              {
1641:                 if (col_offd_S_to_A)
1642:                     j1 = map_A_to_S[A_offd_j[j]];
1643:                 else
1644:                     j1 = A_offd_j[j];
1645:                 if (CF_marker_offd[j1] != -3 && 
1646:                   (num_functions == 1 || dof_func[i1] == dof_func_offd[j1]))
1647:                     sum_N += A_offd_data[j];
1648:                 if (j1 != -1 && tmp_marker_offd[j1] == i1)
1649:                 {
1650:                    P_offd_data[cnt_offd] = A_offd_data[j];
1651:                    P_offd_j[cnt_offd++] = map_S_to_new[j1];
1652:                    sum_C += A_offd_data[j];
1653:                 }
1654:              }
1655:              diagonal = A_diag_data[A_diag_i[i1]];
1656:              if (sum_C*diagonal) alfa = -sum_N/(sum_C*diagonal);
1657:              for (j=P_diag_i[i1]; j < cnt; j++)
1658:                 P_diag_data[j] *= alfa;
1659:              for (j=P_offd_i[i1]; j < cnt_offd; j++)
1660:                 P_offd_data[j] *= alfa;
