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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1387 - (hide annotations)
Fri Jan 11 07:45:26 2008 UTC (11 years, 7 months ago) by trankine
Original Path: temp/finley/src/ElementFile.h
File MIME type: text/plain
File size: 6128 byte(s)
Restore the trunk that existed before the windows changes were committed to the (now moved to branches) old trunk.
1 jgs 82
2 ksteube 1312 /* $Id$ */
3 jgs 150
4 ksteube 1312 /*******************************************************
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 #ifndef INC_FINLEY_ELEMENTFILE
17     #define INC_FINLEY_ELEMENTFILE
18    
19 jgs 150 #include "Finley.h"
20 gross 776 #include "NodeFile.h"
21 jgs 82 #include "ReferenceElements.h"
22 robwdcock 682 #include "escript/DataC.h"
23 jgs 82
24 bcumming 730 #ifdef PASO_MPI
25     #include "paso/Paso_MPI.h"
26     #endif
27    
28 gross 776 struct Finley_ElementFile_Jacobeans {
29 gross 777 Finley_Status_t status; /* status of mesh when jacobeans where updated last time */
30 gross 781 dim_t numDim; /* spatial dimension */
31 gross 777 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 gross 776 };
35    
36     typedef struct Finley_ElementFile_Jacobeans Finley_ElementFile_Jacobeans;
37    
38 jgs 82 struct Finley_ElementFile {
39 bcumming 730 Paso_MPIInfo *MPIInfo;
40 ksteube 1312 Paso_MPI_rank *Owner;
41 jgs 82
42 gross 1062 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 jgs 82
48 jgs 123 dim_t numElements; /* number of elements. */
49    
50     index_t *Id; /* Id[i] is the id nmber of
51 jgs 82 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 jgs 123 index_t *Tag; /* Tag[i] is the tag of
61 jgs 82 element i. */
62    
63 ksteube 1312 dim_t numNodes; /* number of nodes per element = ReferenceElement.Type.numNodes */
64     index_t *Nodes; /* Nodes[INDEX(k, i, numNodes)]
65 jgs 82 is the k-the node in the
66     i-the element. note that
67     in the way the nodes are
68     ordered Nodes[INDEX(k, i,
69     LinearReferenceElement.Type.numNodes)
70     is k-the node of element i
71     when refering to the
72     linear version of the
73     mesh. */
74 jgs 123 index_t minColor; /* minimum color */
75     index_t maxColor; /* maximum color */
76 gross 532 index_t *Color; /* assigns each element a color. elements with the same color */
77     /* are don't share a node so they can be processed simultaneously */
78     /* at anytime Color must provide a valid value. In any case one can set */
79     /* Color[e]=e for all e */
80 gross 1062 index_t order; /* order of the element integration scheme*/
81     index_t reduced_order; /* order of the reduced element integration scheme*/
82 gross 532
83 gross 776 Finley_ElementFile_Jacobeans* jacobeans; /* element jacobeans */
84     Finley_ElementFile_Jacobeans* jacobeans_reducedS; /* element jacobeans for reduced order of shape function*/
85     Finley_ElementFile_Jacobeans* jacobeans_reducedQ; /* element jacobeans for reduced integration order*/
86     Finley_ElementFile_Jacobeans* jacobeans_reducedS_reducedQ; /* element jacobeans for reduced integration order and reduced order of shape function*/
87    
88 jgs 82 };
89    
90     typedef struct Finley_ElementFile Finley_ElementFile;
91 gross 1062 Finley_ElementFile* Finley_ElementFile_alloc( ElementTypeId, index_t, index_t, Paso_MPIInfo* );
92 ksteube 1312 void Finley_ElementFile_free(Finley_ElementFile*);
93     void Finley_ElementFile_allocTable(Finley_ElementFile*,dim_t);
94     void Finley_ElementFile_freeTable(Finley_ElementFile*);
95     void Finley_ElementFile_setElementDistribution(Finley_ElementFile* in, dim_t* distribution);
96     dim_t Finley_ElementFile_getGlobalNumElements(Finley_ElementFile* in);
97     dim_t Finley_ElementFile_getMyNumElements(Finley_ElementFile* in);
98     index_t Finley_ElementFile_getFirstElement(Finley_ElementFile* in);
99     void Finley_ElementFile_distributeByRankOfDOF(Finley_ElementFile* self, Paso_MPI_rank* mpiRankOfDOF, index_t *Id);
100 bcumming 730
101 ksteube 1312 void Finley_ElementFile_createColoring(Finley_ElementFile* in,dim_t numNodes,dim_t* degreeOfFreedom);
102     void Finley_ElementFile_optimizeOrdering(Finley_ElementFile** in);
103 jgs 123 void Finley_ElementFile_setNodeRange(dim_t*,dim_t*,Finley_ElementFile*);
104     void Finley_ElementFile_relableNodes(dim_t*,dim_t,Finley_ElementFile*);
105     void Finley_ElementFile_markNodes(dim_t*,dim_t,Finley_ElementFile*,dim_t);
106     void Finley_ElementFile_scatter(dim_t*,Finley_ElementFile*,Finley_ElementFile*);
107     void Finley_ElementFile_gather(dim_t*,Finley_ElementFile*,Finley_ElementFile*);
108     void Finley_ElementFile_copyTable(dim_t,Finley_ElementFile*,dim_t,dim_t,Finley_ElementFile*);
109 ksteube 1312 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);
110    
111 gross 767 void Finley_ElementFile_setTags(Finley_ElementFile*,const int,escriptDataC*);
112 gross 777 Finley_ElementFile_Jacobeans* Finley_ElementFile_Jacobeans_alloc(Finley_RefElement*);
113 gross 776 void Finley_ElementFile_Jacobeans_dealloc(Finley_ElementFile_Jacobeans*);
114     Finley_ElementFile_Jacobeans* Finley_ElementFile_borrowJacobeans(Finley_ElementFile*, Finley_NodeFile*, bool_t, bool_t);
115 jgs 82
116 gross 776
117 jgs 82 #endif /* #ifndef INC_FINLEY_ELEMENTFILE */
118    

Properties

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

  ViewVC Help
Powered by ViewVC 1.1.26