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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1388 - (hide annotations)
Fri Jan 11 07:45:58 2008 UTC (11 years, 6 months ago) by trankine
File MIME type: text/plain
File size: 2313 byte(s)
And get the *(&(*&(* name right
1 jgs 150
2 ksteube 1312 /* $Id$ */
3    
4     /*******************************************************
5     *
6     * Copyright 2003-2007 by ACceSS MNRF
7     * Copyright 2007 by University of Queensland
8     *
9     * http://esscc.uq.edu.au
10     * Primary Business: Queensland, Australia
11     * Licensed under the Open Software License version 3.0
12     * http://www.opensource.org/licenses/osl-3.0.php
13     *
14     *******************************************************/
15    
16 jgs 82 /**************************************************************/
17    
18     /* Finley: Mesh: NodeFile */
19    
20     /* scatters the NodeFile in into NodeFile out using index[0:in->numNodes-1]. */
21     /* index has to be between 0 and out->numNodes-1. */
22     /* coloring is choosen for the worst case */
23    
24     /**************************************************************/
25    
26 ksteube 1312 #include "NodeFile.h"
27 jgs 82
28     /**************************************************************/
29    
30 ksteube 1312 void Finley_NodeFile_scatterEntries(dim_t n, index_t* index, index_t min_index, index_t max_index,
31     index_t* Id_out, index_t* Id_in,
32     index_t* Tag_out, index_t* Tag_in,
33     index_t* globalDegreesOfFreedom_out, index_t* globalDegreesOfFreedom_in,
34     dim_t numDim, double* Coordinates_out, double* Coordinates_in)
35     {
36     dim_t i;
37     register index_t k;
38     register const index_t range=max_index-min_index;
39     const size_t numDim_size=(size_t)numDim*sizeof(double);
40 jgs 82
41 ksteube 1312 #pragma omp parallel for private(i,k) schedule(static)
42     for (i=0;i<n;i++) {
43     k=index[i]-min_index;
44     if ((k>=0) && (k <range)) {
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 jgs 82 }
51     }
52 ksteube 1312
53     void Finley_NodeFile_scatter(index_t* index, Finley_NodeFile* in, Finley_NodeFile* out)
54     {
55     Finley_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     }

Properties

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

  ViewVC Help
Powered by ViewVC 1.1.26