/[escript]/trunk/dudley/src/NodeFile_scatter.c
ViewVC logotype

Annotation of /trunk/dudley/src/NodeFile_scatter.c

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3259 - (hide annotations)
Mon Oct 11 01:48:14 2010 UTC (9 years, 1 month ago) by jfenwick
File MIME type: text/plain
File size: 2071 byte(s)
Merging dudley and scons updates from branches

1 jgs 150
2 ksteube 1312 /*******************************************************
3 ksteube 1811 *
4 jfenwick 2881 * Copyright (c) 2003-2010 by University of Queensland
5 ksteube 1811 * Earth Systems Science Computational Center (ESSCC)
6     * http://www.uq.edu.au/esscc
7     *
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
11     *
12     *******************************************************/
13 ksteube 1312
14 jgs 82 /**************************************************************/
15    
16 jfenwick 3086 /* Dudley: Mesh: NodeFile */
17 jgs 82
18     /* scatters the NodeFile in into NodeFile out using index[0:in->numNodes-1]. */
19     /* index has to be between 0 and out->numNodes-1. */
20     /* coloring is choosen for the worst case */
21    
22     /**************************************************************/
23    
24 ksteube 1312 #include "NodeFile.h"
25 jgs 82
26     /**************************************************************/
27    
28 jfenwick 3224 void Dudley_NodeFile_scatterEntries(dim_t n, index_t * index, index_t min_index, index_t max_index,
29     index_t * Id_out, index_t * Id_in,
30     index_t * Tag_out, index_t * Tag_in,
31     index_t * globalDegreesOfFreedom_out, index_t * globalDegreesOfFreedom_in,
32     dim_t numDim, double *Coordinates_out, double *Coordinates_in)
33 ksteube 1312 {
34 jfenwick 3224 dim_t i;
35     register index_t k;
36     const index_t range = max_index - min_index;
37     const size_t numDim_size = (size_t) numDim * sizeof(double);
38 jgs 82
39 jfenwick 3224 #pragma omp parallel for private(i,k) schedule(static)
40     for (i = 0; i < n; i++)
41     {
42     k = index[i] - min_index;
43     if ((k >= 0) && (k < range))
44     {
45     Id_out[k] = Id_in[i];
46     Tag_out[k] = Tag_in[i];
47     globalDegreesOfFreedom_out[k] = globalDegreesOfFreedom_in[i];
48     memcpy(&(Coordinates_out[INDEX2(0, k, numDim)]), &(Coordinates_in[INDEX2(0, i, numDim)]), numDim_size);
49     }
50     }
51 jgs 82 }
52 ksteube 1312
53 jfenwick 3224 void Dudley_NodeFile_scatter(index_t * index, Dudley_NodeFile * in, Dudley_NodeFile * out)
54 ksteube 1312 {
55 jfenwick 3224 Dudley_NodeFile_scatterEntries(out->numNodes, index, 0, in->numNodes,
56     out->Id, in->Id,
57     out->Tag, in->Tag,
58     out->globalDegreesOfFreedom, in->globalDegreesOfFreedom,
59     out->numDim, out->Coordinates, in->Coordinates);
60 ksteube 1312 }

Properties

Name Value
svn:eol-style native
svn:keywords Author Date Id Revision

  ViewVC Help
Powered by ViewVC 1.1.26