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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1312 - (show annotations)
Mon Sep 24 06:18:44 2007 UTC (12 years ago) by ksteube
File MIME type: text/plain
File size: 2313 byte(s)
The MPI branch is hereby closed. All future work should be in trunk.

Previously in revision 1295 I merged the latest changes to trunk into trunk-mpi-branch.
In this revision I copied all files from trunk-mpi-branch over the corresponding
trunk files. I did not use 'svn merge', it was a copy.

1
2 /* $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 /**************************************************************/
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 #include "NodeFile.h"
27
28 /**************************************************************/
29
30 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
41 #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 }
51 }
52
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