/[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 626 - (hide annotations)
Thu Mar 23 02:16:36 2006 UTC (13 years, 4 months ago) by elspeth
Original Path: trunk/finley/src/ElementFile.h
File MIME type: text/plain
File size: 5099 byte(s)
Copyright information inserted

1 jgs 150 /*
2 elspeth 626 ************************************************************
3     * Copyright 2006 by ACcESS MNRF *
4     * *
5     * http://www.access.edu.au *
6     * Primary Business: Queensland, Australia *
7     * Licensed under the Open Software License version 3.0 *
8     * http://www.opensource.org/licenses/osl-3.0.php *
9     * *
10     ************************************************************
11 jgs 150 */
12 jgs 82
13 jgs 150 /* Version: $Id$ */
14    
15 jgs 82 #ifndef INC_FINLEY_ELEMENTFILE
16     #define INC_FINLEY_ELEMENTFILE
17    
18 jgs 150 #include "Finley.h"
19 jgs 82 #include "ReferenceElements.h"
20 gross 532 #include "DataC.h"
21 jgs 82
22     struct Finley_ElementFile {
23    
24     Finley_RefElement* ReferenceElement; /* the reference element, see
25     Reference element.c */
26    
27     Finley_RefElement* LinearReferenceElement; /* the reference element for
28     the linear mesh. it is
29     vital that both are using
30     the same quadrature
31     scheme */
32    
33 jgs 123 dim_t numElements; /* number of elements. */
34    
35     index_t *Id; /* Id[i] is the id nmber of
36 jgs 82 node i. this number is not
37     used but useful when
38     elements are resorted. in
39     the entire code the term
40     'element id' refers to i
41     but nor to Id[i] if not
42     explicitly stated
43     otherwise. */
44    
45 jgs 123 index_t *Tag; /* Tag[i] is the tag of
46 jgs 82 element i. */
47    
48 jgs 123 index_t *Nodes; /* Nodes[INDEX(k, i,
49 jgs 82 ReferenceElement.Type.numNodes)
50     is the k-the node in the
51     i-the element. note that
52     in the way the nodes are
53     ordered Nodes[INDEX(k, i,
54     LinearReferenceElement.Type.numNodes)
55     is k-the node of element i
56     when refering to the
57     linear version of the
58     mesh. */
59 jgs 123 index_t minColor; /* minimum color */
60     index_t maxColor; /* maximum color */
61 gross 532 index_t *Color; /* assigns each element a color. elements with the same color */
62     /* are don't share a node so they can be processed simultaneously */
63     /* at anytime Color must provide a valid value. In any case one can set */
64     /* Color[e]=e for all e */
65     index_t order; /* order of the element */
66    
67     bool_t volume_is_valid; /* true if volume and DvDV are valid */
68     double* volume; /* local volume */
69     double* DvDV; /* inverse jacobean of element parametrization at quadrature points*/
70     bool_t DSDV_is_valid; /* true is DSDV is valid */
71     double* DSDV; /* derivatives of shape functions in global coordinates at quadrature points*/
72     bool_t DSLinearDV_is_valid; /* true if DSLinearDV is valid */
73     double* DSLinearDV; /* derivatives of linear shape functions in gloabl coordinates at quadrature points*/
74     bool_t X_is_valid; /* true if X is valid */
75     double* X; /* global coordniates of quadrature points */
76 jgs 82 };
77    
78     typedef struct Finley_ElementFile Finley_ElementFile;
79    
80 jgs 123 Finley_ElementFile* Finley_ElementFile_alloc(ElementTypeId,dim_t);
81 jgs 82 void Finley_ElementFile_dealloc(Finley_ElementFile*);
82 gross 532 void Finley_ElementFile_setCoordinates(Finley_ElementFile*,escriptDataC*);
83 jgs 123 void Finley_ElementFile_improveColoring(Finley_ElementFile* in,dim_t numNodes,dim_t* degreeOfFreedom);
84 jgs 82 void Finley_ElementFile_optimizeDistribution(Finley_ElementFile** in);
85 jgs 123 void Finley_ElementFile_setNodeRange(dim_t*,dim_t*,Finley_ElementFile*);
86     void Finley_ElementFile_relableNodes(dim_t*,dim_t,Finley_ElementFile*);
87     void Finley_ElementFile_markNodes(dim_t*,dim_t,Finley_ElementFile*,dim_t);
88     void Finley_ElementFile_scatter(dim_t*,Finley_ElementFile*,Finley_ElementFile*);
89     void Finley_ElementFile_gather(dim_t*,Finley_ElementFile*,Finley_ElementFile*);
90     void Finley_ElementFile_copyTable(dim_t,Finley_ElementFile*,dim_t,dim_t,Finley_ElementFile*);
91     void Finley_ElementFile_allocTable(Finley_ElementFile*,dim_t);
92 jgs 82 void Finley_ElementFile_deallocTable(Finley_ElementFile*);
93 jgs 123 void Finley_ElementFile_prepare(Finley_ElementFile** in,dim_t numNodes,dim_t* degreeOfFreedom);
94 jgs 82
95     #endif /* #ifndef INC_FINLEY_ELEMENTFILE */
96    
97     /*
98     * $Log$
99 jgs 150 * Revision 1.3 2005/09/15 03:44:21 jgs
100     * Merge of development branch dev-02 back to main trunk on 2005-09-15
101     *
102     * Revision 1.2.2.1 2005/09/07 06:26:18 gross
103     * the solver from finley are put into the standalone package paso now
104     *
105 jgs 123 * Revision 1.2 2005/07/08 04:07:49 jgs
106     * Merge of development branch back to main trunk on 2005-07-08
107 jgs 82 *
108 jgs 123 * Revision 1.1.1.1.2.1 2005/06/29 02:34:49 gross
109     * some changes towards 64 integers in finley
110     *
111     * Revision 1.1.1.1 2004/10/26 06:53:57 jgs
112     * initial import of project esys2
113     *
114 jgs 82 * Revision 1.1.1.1 2004/06/24 04:00:40 johng
115     * Initial version of eys using boost-python.
116     *
117     *
118     */

Properties

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

  ViewVC Help
Powered by ViewVC 1.1.26