/[escript]/branches/arrayview_from_1695_trunk/finley/src/ElementFile.h
ViewVC logotype

Contents of /branches/arrayview_from_1695_trunk/finley/src/ElementFile.h

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: 6347 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 #ifndef INC_FINLEY_ELEMENTFILE
17 #define INC_FINLEY_ELEMENTFILE
18
19 #include "Finley.h"
20 #include "NodeFile.h"
21 #include "ReferenceElements.h"
22 #include "escript/DataC.h"
23
24 #ifdef PASO_MPI
25 #include "paso/Paso_MPI.h"
26 #endif
27
28 struct Finley_ElementFile_Jacobeans {
29 Finley_Status_t status; /* status of mesh when jacobeans where updated last time */
30 dim_t numDim; /* spatial dimension */
31 Finley_RefElement* ReferenceElement; /* reference elemnt used to calculate jacobeans (this is a borrowd reference) */
32 double* volume; /* local volume */
33 double* DSDX; /* derivatives of shape functions in global coordinates at quadrature points*/
34 };
35
36 typedef struct Finley_ElementFile_Jacobeans Finley_ElementFile_Jacobeans;
37
38 struct Finley_ElementFile {
39 Paso_MPIInfo *MPIInfo;
40 Paso_MPI_rank *Owner;
41
42 Finley_RefElement* ReferenceElement; /* the reference element, see Reference element.c */
43 Finley_RefElement* ReferenceElementReducedOrder; /* the reference element with reduced integration order, see Reference element.c */
44 Finley_RefElement* LinearReferenceElement; /* the reference element for the linear mesh. it is vital that it is using the same quadrature scheme like ReferenceElement*/
45 Finley_RefElement* LinearReferenceElementReducedOrder; /* the reference element for the linear mesh. it is vital that it is using the same quadrature
46 \ scheme like LinearReferenceElementReducedIntegration*/
47
48 dim_t numElements; /* number of elements. */
49
50 index_t *Id; /* Id[i] is the id nmber of
51 node i. this number is not
52 used but useful when
53 elements are resorted. in
54 the entire code the term
55 'element id' refers to i
56 but nor to Id[i] if not
57 explicitly stated
58 otherwise. */
59
60 index_t *Tag; /* Tag[i] is the tag of
61 element i. */
62
63 index_t *tagsInUse; /* array of tags which are actually used */
64 dim_t numTagsInUse; /* number of tags used */
65
66
67 dim_t numNodes; /* number of nodes per element = ReferenceElement.Type.numNodes */
68 index_t *Nodes; /* Nodes[INDEX(k, i, numNodes)]
69 is the k-the node in the
70 i-the element. note that
71 in the way the nodes are
72 ordered Nodes[INDEX(k, i,
73 LinearReferenceElement.Type.numNodes)
74 is k-the node of element i
75 when refering to the
76 linear version of the
77 mesh. */
78 index_t minColor; /* minimum color */
79 index_t maxColor; /* maximum color */
80 index_t *Color; /* assigns each element a color. elements with the same color */
81 /* are don't share a node so they can be processed simultaneously */
82 /* at anytime Color must provide a valid value. In any case one can set */
83 /* Color[e]=e for all e */
84 index_t order; /* order of the element integration scheme*/
85 index_t reduced_order; /* order of the reduced element integration scheme*/
86
87 Finley_ElementFile_Jacobeans* jacobeans; /* element jacobeans */
88 Finley_ElementFile_Jacobeans* jacobeans_reducedS; /* element jacobeans for reduced order of shape function*/
89 Finley_ElementFile_Jacobeans* jacobeans_reducedQ; /* element jacobeans for reduced integration order*/
90 Finley_ElementFile_Jacobeans* jacobeans_reducedS_reducedQ; /* element jacobeans for reduced integration order and reduced order of shape function*/
91
92 };
93
94 typedef struct Finley_ElementFile Finley_ElementFile;
95 Finley_ElementFile* Finley_ElementFile_alloc( ElementTypeId, index_t, index_t, Paso_MPIInfo* );
96 void Finley_ElementFile_free(Finley_ElementFile*);
97 void Finley_ElementFile_allocTable(Finley_ElementFile*,dim_t);
98 void Finley_ElementFile_freeTable(Finley_ElementFile*);
99 void Finley_ElementFile_setElementDistribution(Finley_ElementFile* in, dim_t* distribution);
100 dim_t Finley_ElementFile_getGlobalNumElements(Finley_ElementFile* in);
101 dim_t Finley_ElementFile_getMyNumElements(Finley_ElementFile* in);
102 index_t Finley_ElementFile_getFirstElement(Finley_ElementFile* in);
103 void Finley_ElementFile_distributeByRankOfDOF(Finley_ElementFile* self, Paso_MPI_rank* mpiRankOfDOF, index_t *Id);
104
105 void Finley_ElementFile_createColoring(Finley_ElementFile* in,dim_t numNodes,dim_t* degreeOfFreedom);
106 void Finley_ElementFile_optimizeOrdering(Finley_ElementFile** in);
107 void Finley_ElementFile_setNodeRange(dim_t*,dim_t*,Finley_ElementFile*);
108 void Finley_ElementFile_relableNodes(dim_t*,dim_t,Finley_ElementFile*);
109 void Finley_ElementFile_markNodes(dim_t*,dim_t,dim_t,Finley_ElementFile*,dim_t);
110 void Finley_ElementFile_scatter(dim_t*,Finley_ElementFile*,Finley_ElementFile*);
111 void Finley_ElementFile_gather(dim_t*,Finley_ElementFile*,Finley_ElementFile*);
112 void Finley_ElementFile_copyTable(dim_t,Finley_ElementFile*,dim_t,dim_t,Finley_ElementFile*);
113 void Finley_ElementFile_markDOFsConnectedToRange(index_t* mask,index_t offset,index_t marker,index_t firstDOF,index_t lastDOF,index_t *dofIndex,Finley_ElementFile*in ,bool_t useLinear);
114
115 void Finley_ElementFile_setTags(Finley_ElementFile*,const int,escriptDataC*);
116 Finley_ElementFile_Jacobeans* Finley_ElementFile_Jacobeans_alloc(Finley_RefElement*);
117 void Finley_ElementFile_Jacobeans_dealloc(Finley_ElementFile_Jacobeans*);
118 Finley_ElementFile_Jacobeans* Finley_ElementFile_borrowJacobeans(Finley_ElementFile*, Finley_NodeFile*, bool_t, bool_t);
119 void Finley_ElementFile_setTagsInUse(Finley_ElementFile* in);
120
121
122 #endif /* #ifndef INC_FINLEY_ELEMENTFILE */
123

Properties

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

  ViewVC Help
Powered by ViewVC 1.1.26