2
/*******************************************************
4
* Copyright (c) 2003-2010 by University of Queensland
5
* Earth Systems Science Computational Center (ESSCC)
6
* http://www.uq.edu.au/esscc
8
* Primary Business: Queensland, Australia
9
* Licensed under the Open Software License version 3.0
10
* http://www.opensource.org/licenses/osl-3.0.php
12
*******************************************************/
14
/**************************************************************/
16
/* Dudley: ElementFile */
18
/* gathers the ElementFile out from the ElementFile in using index[0:out->numElements-1]. */
19
/* index has to be between 0 and in->numElements-1. */
20
/* a conservative assumtion on the coloring is made */
22
/**************************************************************/
24
#include "ElementFile.h"
26
/**************************************************************/
28
void Dudley_ElementFile_gather(index_t * index, Dudley_ElementFile * in, Dudley_ElementFile * out)
32
dim_t NN_in = in->numNodes;
33
dim_t NN_out = out->numNodes;
37
#pragma omp parallel for private(e,k,j) schedule(static)
38
for (e = 0; e < out->numElements; e++)
41
out->Id[e] = in->Id[k];
42
out->Tag[e] = in->Tag[k];
43
out->Owner[e] = in->Owner[k];
44
out->Color[e] = in->Color[k] + out->maxColor + 1;
45
for (j = 0; j < MIN(NN_out, NN_in); j++)
46
out->Nodes[INDEX2(j, e, NN_out)] = in->Nodes[INDEX2(j, k, NN_in)];
48
out->minColor = MIN(out->minColor, in->minColor + out->maxColor + 1);
49
out->maxColor = MAX(out->maxColor, in->maxColor + out->maxColor + 1);