예제 #1
0
void
sum_into_global_linear_system(ElemData<GlobalOrdinal,Scalar>& elem_data,
                              LockingMatrix<MatrixType>& A, LockingVector<VectorType>& b)
{
  sum_in_elem_matrix(elem_data.nodes_per_elem, elem_data.elem_node_ids,
                     elem_data.elem_diffusion_matrix, A);
  sum_into_vector(elem_data.nodes_per_elem, elem_data.elem_node_ids,
                  elem_data.elem_source_vector, b);
}
예제 #2
0
 void sum_in(size_t num_indices, const GlobalOrdinal* indices, const Scalar* values)
 {
   for(int i=0; i<num_indices; ++i) {
     GlobalOrdinal row = indices[i];
     int local_row = row - myFirstRow_;
     if (local_row >= 0 && local_row < numMyRows_) {
       LockV<int> lock(row_locks_[local_row]);
       sum_into_vector(1, &row, &values[i], x_);
     }
   }
 }