/[escript]/branches/arrayview_from_1695_trunk/finley/src/ElementFile_allocTable.c
ViewVC logotype

Contents of /branches/arrayview_from_1695_trunk/finley/src/ElementFile_allocTable.c

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1781 - (show annotations)
Thu Sep 11 05:03:14 2008 UTC (10 years, 11 months ago) by jfenwick
File MIME type: text/plain
File size: 3035 byte(s)
Branch commit

Merged changes from trunk version 1695 up to and including version 1779.


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: ElementFile */
19
20 /* allocates and deallocates element table */
21
22 /**************************************************************/
23
24
25 #include "ElementFile.h"
26 #include "Util.h"
27
28 /****************************************************************************/
29
30 /* allocates the element table within an element file to hold numElements: */
31
32 void Finley_ElementFile_allocTable(Finley_ElementFile* in,dim_t numElements)
33 {
34 index_t *Id2=NULL,*Nodes2=NULL,*Tag2=NULL,*Color2=NULL;
35 Paso_MPI_rank *Owner2=NULL;
36 dim_t numNodes,e,i;
37
38 Finley_resetError();
39 /* allocate memory: */
40 numNodes=in->numNodes;
41 Owner2=MEMALLOC(numElements,Paso_MPI_rank);
42 Id2=MEMALLOC(numElements,index_t);
43 Nodes2=MEMALLOC(numElements*in->numNodes,index_t);
44 Tag2=MEMALLOC(numElements,index_t);
45 Color2=MEMALLOC(numElements,index_t);
46
47 /* if fine, deallocate the old table and replace by new: */
48
49 if ( Finley_checkPtr(Owner2) || Finley_checkPtr(Id2) || Finley_checkPtr(Nodes2) ||
50 Finley_checkPtr(Tag2) || Finley_checkPtr(Color2) ) {
51 MEMFREE(Owner2);
52 MEMFREE(Nodes2);
53 MEMFREE(Id2);
54 MEMFREE(Tag2);
55 MEMFREE(Color2);
56 } else {
57 Finley_ElementFile_freeTable(in);
58 in->Owner=Owner2;
59 in->numElements=numElements;
60 in->Id=Id2;
61 in->Nodes=Nodes2;
62 in->Tag=Tag2;
63 in->Color=Color2;
64
65 /* this initialization makes sure that data are located on the right processor */
66
67 #pragma omp parallel for private(e,i) schedule(static)
68 for (e=0;e<numElements;e++) {
69 for (i=0;i<numNodes;i++) in->Nodes[INDEX2(i,e,numNodes)]=-1;
70 in->Owner[e]=-1;
71 in->Id[e]=-1;
72 in->Tag[e]=-1;
73 in->Color[e]=-1;
74 }
75 in->maxColor=-1;
76 in->minColor=0;
77 }
78 return;
79 }
80
81 void Finley_ElementFile_setTagsInUse(Finley_ElementFile* in)
82 {
83 index_t *tagsInUse=NULL;
84 dim_t numTagsInUse;
85 if (in !=NULL) {
86 Finley_Util_setValuesInUse(in->Tag, in->numElements, &numTagsInUse, &tagsInUse, in->MPIInfo);
87 if (Finley_noError()) {
88 MEMFREE(in->tagsInUse);
89 in->tagsInUse=tagsInUse;
90 in->numTagsInUse=numTagsInUse;
91 }
92 }
93 }
94
95 /* deallocates the element table within an element file: */
96
97 void Finley_ElementFile_freeTable(Finley_ElementFile* in) {
98 MEMFREE(in->Owner);
99 MEMFREE(in->Id);
100 MEMFREE(in->Nodes);
101 MEMFREE(in->Tag);
102 MEMFREE(in->Color);
103 MEMFREE(in->tagsInUse);
104 in->numTagsInUse=0;
105 in->numElements=0;
106 in->maxColor=-1;
107 in->minColor=0;
108 }

Properties

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

  ViewVC Help
Powered by ViewVC 1.1.26