1 |
jgs |
150 |
/* |
2 |
|
|
****************************************************************************** |
3 |
|
|
* * |
4 |
|
|
* COPYRIGHT ACcESS 2003,2004,2005 - All Rights Reserved * |
5 |
|
|
* * |
6 |
|
|
* This software is the property of ACcESS. No part of this code * |
7 |
|
|
* may be copied in any form or by any means without the expressed written * |
8 |
|
|
* consent of ACcESS. Copying, use or modification of this software * |
9 |
|
|
* by any unauthorised person is illegal unless that person has a software * |
10 |
|
|
* license agreement with ACcESS. * |
11 |
|
|
* * |
12 |
|
|
****************************************************************************** |
13 |
|
|
*/ |
14 |
jgs |
82 |
|
15 |
jgs |
150 |
/* Version: $Id$ */ |
16 |
|
|
|
17 |
jgs |
82 |
#ifndef INC_FINLEY_NODEFILE |
18 |
|
|
#define INC_FINLEY_NODEFILE |
19 |
|
|
|
20 |
|
|
#define MAX_numDim 3 |
21 |
|
|
|
22 |
jgs |
150 |
#include "Finley.h" |
23 |
jgs |
82 |
#include "escript/Data/DataC.h" |
24 |
robwdcock |
186 |
#ifdef __cplusplus |
25 |
|
|
extern "C" { |
26 |
|
|
#endif |
27 |
jgs |
82 |
|
28 |
|
|
struct Finley_NodeFile { |
29 |
jgs |
123 |
dim_t numNodes; /* number of nodes */ |
30 |
|
|
dim_t numDim; /* spatial dimension */ |
31 |
|
|
index_t *Id; /* Id[i] is the id number of node i. this number is not really |
32 |
jgs |
82 |
used but useful when the nodes are |
33 |
|
|
relabled. see also Finley_resolveNodeIds. */ |
34 |
jgs |
123 |
/* in the entire code the term 'node id' refers to i but nor to Id[i] */ |
35 |
|
|
/* if not explicitly stated otherwise. */ |
36 |
|
|
index_t *Tag; /* Tag[i] is the tag of node i. */ |
37 |
|
|
double *Coordinates; /* Coordinates[INDEX2(k,i,numDim)] is the k-th coordinate of the */ |
38 |
|
|
/* node i. */ |
39 |
|
|
index_t* degreeOfFreedom; /* degreeOfFreedom[i] is the degree of freedom assigned to node i */ |
40 |
|
|
/* this index is used to consider periodic boundary conditions by assigning */ |
41 |
|
|
/* the same degreeOfFreedom to the same node */ |
42 |
jgs |
82 |
/* the following data are set by Finley_NodeFile_? */ |
43 |
jgs |
123 |
dim_t numDegreesOfFreedom; /* number of degrees of freedom in the mesh (<=numNodes)*/ |
44 |
|
|
/* notice that numDegreesOfFreedom=max(degreeOfFreedom[:]) */ |
45 |
|
|
index_t* reducedDegreeOfFreedom; /* reducedDegreeOfFreedom[i] is the degree of freedom in the reduced version of the mesh */ |
46 |
|
|
/* assigned to node i. reducedDegreeOfFreedom[i]<0 indicates that the node is not appearing */ |
47 |
|
|
/* as a degree of freedom in the reduced version of the mesh. */ |
48 |
|
|
dim_t reducedNumDegreesOfFreedom; /* number of degrees of freedom in the reduced version of the mesh */ |
49 |
|
|
/* notice that reducedNumDegreesOfFreedom=max(reducedDegreeOfFreedom[:]) */ |
50 |
jgs |
82 |
/* this information is used by interfaces to postprocessing tools that can deal with linear elements only: */ |
51 |
jgs |
123 |
dim_t reducedNumNodes; /* returnes the number of nodes in the mesh when looking at the corners */ |
52 |
|
|
/* of elements only */ |
53 |
|
|
index_t *toReduced; /* toReduced[i] is the node id in the reduced mesh. if toReduced[i]<0 it means that the node does not appear in the reduced mesh */ |
54 |
jgs |
82 |
}; |
55 |
|
|
|
56 |
|
|
typedef struct Finley_NodeFile Finley_NodeFile; |
57 |
|
|
|
58 |
jgs |
123 |
Finley_NodeFile * Finley_NodeFile_alloc(dim_t); |
59 |
jgs |
82 |
void Finley_NodeFile_dealloc(Finley_NodeFile*); |
60 |
jgs |
123 |
void Finley_NodeFile_setIdRange(index_t*,index_t*,Finley_NodeFile*); |
61 |
|
|
void Finley_NodeFile_scatter(index_t*,Finley_NodeFile*,Finley_NodeFile*); |
62 |
|
|
void Finley_NodeFile_gather(index_t*,Finley_NodeFile*,Finley_NodeFile*); |
63 |
jgs |
82 |
void Finley_NodeFile_setCoordinates(Finley_NodeFile*,escriptDataC*); |
64 |
jgs |
123 |
void Finley_NodeFile_copyTable(dim_t,Finley_NodeFile*,dim_t,dim_t,Finley_NodeFile*); |
65 |
|
|
void Finley_NodeFile_allocTable(Finley_NodeFile*,dim_t); |
66 |
jgs |
82 |
void Finley_NodeFile_deallocTable(Finley_NodeFile*); |
67 |
robwdcock |
186 |
#ifdef __cplusplus |
68 |
|
|
} |
69 |
|
|
#endif /* __cplusplus */ |
70 |
jgs |
82 |
|
71 |
robwdcock |
186 |
|
72 |
jgs |
82 |
#endif |
73 |
|
|
|
74 |
|
|
/* |
75 |
|
|
* $Log$ |
76 |
jgs |
150 |
* Revision 1.3 2005/09/15 03:44:23 jgs |
77 |
|
|
* Merge of development branch dev-02 back to main trunk on 2005-09-15 |
78 |
|
|
* |
79 |
|
|
* Revision 1.2.2.1 2005/09/07 06:26:20 gross |
80 |
|
|
* the solver from finley are put into the standalone package paso now |
81 |
|
|
* |
82 |
jgs |
123 |
* Revision 1.2 2005/07/08 04:07:55 jgs |
83 |
|
|
* Merge of development branch back to main trunk on 2005-07-08 |
84 |
jgs |
82 |
* |
85 |
jgs |
123 |
* Revision 1.1.1.1.2.1 2005/06/29 02:34:54 gross |
86 |
|
|
* some changes towards 64 integers in finley |
87 |
|
|
* |
88 |
|
|
* Revision 1.1.1.1 2004/10/26 06:53:57 jgs |
89 |
|
|
* initial import of project esys2 |
90 |
|
|
* |
91 |
jgs |
82 |
* Revision 1.2 2004/07/02 04:21:13 gross |
92 |
|
|
* Finley C code has been included |
93 |
|
|
* |
94 |
|
|
* Revision 1.1.1.1 2004/06/24 04:00:40 johng |
95 |
|
|
* Initial version of eys using boost-python. |
96 |
|
|
* |
97 |
|
|
* |
98 |
|
|
*/ |