255 const Sparse3Tensor<ordinal_type,scalar_type>& Cijk,
257 typedef Sparse3Tensor<ordinal_type,scalar_type> Cijk_type;
258 typedef typename Cijk_type::k_iterator k_iterator;
259 typedef typename Cijk_type::kj_iterator kj_iterator;
260 typedef typename Cijk_type::kji_iterator kji_iterator;
262 ordinal_type num_cijk = Cijk.num_entries();
263 Teuchos::ArrayRCP< CijkData<ordinal_type,scalar_type> > coordinate_list(
265 ordinal_type idx = 0;
266 k_iterator k_begin = Cijk.k_begin();
267 k_iterator k_end = Cijk.k_end();
268 for (k_iterator k_it=k_begin; k_it!=k_end; ++k_it) {
269 ordinal_type k = index(k_it);
270 kj_iterator j_begin = Cijk.j_begin(k_it);
271 kj_iterator j_end = Cijk.j_end(k_it);
272 for (kj_iterator j_it = j_begin; j_it != j_end; ++j_it) {
273 ordinal_type
j = index(j_it);
274 kji_iterator i_begin = Cijk.i_begin(j_it);
275 kji_iterator i_end = Cijk.i_end(j_it);
276 for (kji_iterator i_it = i_begin; i_it != i_end; ++i_it) {
277 ordinal_type i = index(i_it);
279 coordinate_list[idx].i = i;
280 coordinate_list[idx].j =
j;
281 coordinate_list[idx].k = k;
282 coordinate_list[idx].c = value(i_it);
283 coordinate_list[idx].gid = idx;
287 coordinate_list[idx].i = i;
288 coordinate_list[idx].j =
j;
289 coordinate_list[idx].k = k;
291 coordinate_list[idx].c = 0.5*value(i_it);
293 coordinate_list[idx].c = value(i_it);
294 coordinate_list[idx].gid = idx;
298 coordinate_list[idx].i = i;
299 coordinate_list[idx].j =
j;
300 coordinate_list[idx].k = k;
301 if (i ==
j &&
j == k)
302 coordinate_list[idx].c = (1.0/6.0)*value(i_it);
304 coordinate_list[idx].c = value(i_it);
305 coordinate_list[idx].gid = idx;
311 coordinate_list.resize(idx);
313 return coordinate_list;