escript  Revision_Unversioneddirectory
dudley/src/ElementFile.h
Go to the documentation of this file.
1 
2 /*****************************************************************************
3 *
4 * Copyright (c) 2003-2016 by The University of Queensland
5 * http://www.uq.edu.au
6 *
7 * Primary Business: Queensland, Australia
8 * Licensed under the Apache License, version 2.0
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Development until 2012 by Earth Systems Science Computational Center (ESSCC)
12 * Development 2012-2013 by School of Earth Sciences
13 * Development from 2014 by Centre for Geoscience Computing (GeoComp)
14 *
15 *****************************************************************************/
16 
17 #ifndef INC_DUDLEY_ELEMENTFILE
18 #define INC_DUDLEY_ELEMENTFILE
19 
20 #include "Dudley.h"
21 #include "NodeFile.h"
22 #include "ElementType.h"
23 #include "escript/DataC.h"
24 
25 #ifdef ESYS_MPI
26 #include "esysUtils/Esys_MPI.h"
27 #endif
28 
29 typedef struct {
30  Dudley_Status_t status; /* status of mesh when jacobeans where updated last time */
31  dim_t numDim; /* spatial dimension */
32  dim_t numQuad; /* number of quadrature nodes used to calculate jacobeans */
33  dim_t numShapes; /* number of shape functions */
34  dim_t numElements; /* number of elements */
35  double *absD; /* used to compute volume */
36  double quadweight; /* used to compute volume */
37  double *DSDX; /* derivatives of shape functions in global coordinates at quadrature points */
39 
43 
44  dim_t numElements; /* number of elements. */
45 
46  index_t *Id; /* Id[i] is the id nmber of
47  node i. this number is not
48  used but useful when
49  elements are resorted. in
50  the entire code the term
51  'element id' refers to i
52  but nor to Id[i] if not
53  explicitly stated
54  otherwise. */
55 
56  index_t *Tag; /* Tag[i] is the tag of element i. */
57 
58  index_t *tagsInUse; /* array of tags which are actually used */
59  dim_t numTagsInUse; /* number of tags used */
60 
61  dim_t numNodes; /* number of nodes per element */
62  index_t *Nodes; /* Nodes[INDEX(k, i, numNodes)]
63  is the k-the node in the
64  i-the element. note that
65  in the way the nodes are
66  ordered Nodes[INDEX(k, i, numNodes)
67  is k-the node of element i
68  when refering to the
69  linear version of the
70  mesh. */
71  index_t minColor; /* minimum color */
72  index_t maxColor; /* maximum color */
73  index_t *Color; /* assigns each element a color. elements with the same color
74  are don't share a node so they can be processed simultaneously
75  at anytime Color must provide a valid value. In any case one can set
76  Color[e]=e for all e */
77 
78  Dudley_ElementFile_Jacobeans *jacobeans; /* jacobeans of the shape function used for solution approximation */
79  Dudley_ElementFile_Jacobeans *jacobeans_reducedQ; /* jacobeans of the shape function used for solution approximation for reduced integration order */
80  dim_t numDim; /* spatial dimension of the domain */
81  dim_t numLocalDim; /* dimension of the element eg 2 for A line in 2D or 3D */
82  Dudley_ElementTypeId etype; /* element type */
83  const char *ename; /* name of element type */
84  dim_t numShapes; /* number of shape functions */
85 };
86 
97 
106 void Dudley_ElementFile_markDOFsConnectedToRange(index_t * mask, index_t offset, index_t marker, index_t firstDOF,
107  index_t lastDOF, index_t * dofIndex, Dudley_ElementFile * in,
108  bool useLinear);
109 
115 
116 #endif /* #ifndef INC_DUDLEY_ELEMENTFILE */
dim_t numElements
Definition: dudley/src/ElementFile.h:44
Dudley_ElementFile_Jacobeans * jacobeans_reducedQ
Definition: dudley/src/ElementFile.h:79
void Dudley_ElementFile_setTags(Dudley_ElementFile *, const int, const escript::Data *)
Definition: ElementFile_setTags.cpp:34
dim_t numElements
Definition: dudley/src/ElementFile.h:34
int Dudley_Status_t
Definition: Dudley.h:45
void Dudley_ElementFile_optimizeOrdering(Dudley_ElementFile **in)
Definition: ElementFile_optimizeOrdering.cpp:33
double * DSDX
Definition: dudley/src/ElementFile.h:37
void Dudley_ElementFile_markNodes(dim_t *, dim_t, dim_t, Dudley_ElementFile *, bool)
Definition: ElementFile_markNodes.cpp:32
double * absD
Definition: dudley/src/ElementFile.h:35
dim_t numLocalDim
Definition: dudley/src/ElementFile.h:81
void Dudley_ElementFile_distributeByRankOfDOF(Dudley_ElementFile *self, Esys_MPI_rank *mpiRankOfDOF, index_t *Id)
Definition: ElementFile_distributeByRankOfDOF.cpp:33
const char * ename
Definition: dudley/src/ElementFile.h:83
Dudley_ElementFile_Jacobeans * Dudley_ElementFile_Jacobeans_alloc(void)
Definition: ElementFile_jacobeans.cpp:30
Dudley_ElementTypeId
Definition: ElementType.h:20
esysUtils::JMPI MPIInfo
Definition: dudley/src/ElementFile.h:41
index_t Dudley_ElementFile_getFirstElement(Dudley_ElementFile *in)
Definition: dudley/src/ElementFile.cpp:170
double quadweight
Definition: dudley/src/ElementFile.h:36
Dudley_ElementFile_Jacobeans * Dudley_ElementFile_borrowJacobeans(Dudley_ElementFile *, Dudley_NodeFile *, bool)
Definition: ElementFile_jacobeans.cpp:64
void Dudley_ElementFile_markDOFsConnectedToRange(index_t *mask, index_t offset, index_t marker, index_t firstDOF, index_t lastDOF, index_t *dofIndex, Dudley_ElementFile *in, bool useLinear)
Definition: ElementFile_markNodes.cpp:50
Dudley_ElementFile_Jacobeans * jacobeans
Definition: dudley/src/ElementFile.h:78
void Dudley_ElementFile_setTagsInUse(Dudley_ElementFile *in)
Definition: ElementFile_allocTable.cpp:89
void Dudley_ElementFile_scatter(dim_t *, Dudley_ElementFile *, Dudley_ElementFile *)
Definition: ElementFile_scatter.cpp:34
dim_t Dudley_ElementFile_getGlobalNumElements(Dudley_ElementFile *in)
Definition: dudley/src/ElementFile.cpp:131
void Dudley_ElementFile_createColoring(Dudley_ElementFile *in, dim_t numNodes, dim_t *degreeOfFreedom)
Definition: ElementFile_createColoring.cpp:33
Data represents a collection of datapoints.
Definition: Data.h:68
Dudley_Status_t status
Definition: dudley/src/ElementFile.h:30
Esys_MPI_rank * Owner
Definition: dudley/src/ElementFile.h:42
dim_t Dudley_ElementFile_getMyNumElements(Dudley_ElementFile *in)
Definition: dudley/src/ElementFile.cpp:151
index_t * Tag
Definition: dudley/src/ElementFile.h:56
index_t maxColor
Definition: dudley/src/ElementFile.h:72
Definition: dudley/src/ElementFile.h:29
index_t * Nodes
Definition: dudley/src/ElementFile.h:62
index_t * tagsInUse
Definition: dudley/src/ElementFile.h:58
void Dudley_ElementFile_relableNodes(dim_t *, dim_t, Dudley_ElementFile *)
Definition: ElementFile_relableNodes.cpp:34
int index_t
Definition: types.h:24
dim_t numShapes
Definition: dudley/src/ElementFile.h:33
dim_t numNodes
Definition: dudley/src/ElementFile.h:61
index_t * Color
Definition: dudley/src/ElementFile.h:73
Dudley_ElementFile * Dudley_ElementFile_alloc(Dudley_ElementTypeId etype, esysUtils::JMPI &MPIInfo)
Definition: dudley/src/ElementFile.cpp:34
int Esys_MPI_rank
Definition: Esys_MPI.h:59
void Dudley_ElementFile_setNodeRange(dim_t *, dim_t *, Dudley_ElementFile *)
Definition: ElementFile_setNodeRange.cpp:34
dim_t numTagsInUse
Definition: dudley/src/ElementFile.h:59
void Dudley_ElementFile_allocTable(Dudley_ElementFile *, dim_t)
Definition: ElementFile_allocTable.cpp:35
index_t * Id
Definition: dudley/src/ElementFile.h:46
Definition: dudley/src/NodeFile.h:28
void Dudley_ElementFile_Jacobeans_dealloc(Dudley_ElementFile_Jacobeans *)
Definition: ElementFile_jacobeans.cpp:52
index_t dim_t
Definition: types.h:27
void Dudley_ElementFile_free(Dudley_ElementFile *)
Definition: dudley/src/ElementFile.cpp:81
dim_t numDim
Definition: dudley/src/ElementFile.h:31
void Dudley_ElementFile_freeTable(Dudley_ElementFile *)
Definition: ElementFile_allocTable.cpp:107
dim_t numShapes
Definition: dudley/src/ElementFile.h:84
void Dudley_ElementFile_gather(dim_t *, Dudley_ElementFile *, Dudley_ElementFile *)
Definition: ElementFile_gather.cpp:34
boost::shared_ptr< JMPI_ > JMPI
Definition: Esys_MPI.h:79
dim_t numDim
Definition: dudley/src/ElementFile.h:80
void Dudley_ElementFile_setElementDistribution(Dudley_ElementFile *in, dim_t *distribution)
Definition: dudley/src/ElementFile.cpp:92
void Dudley_ElementFile_copyTable(dim_t, Dudley_ElementFile *, dim_t, dim_t, Dudley_ElementFile *)
Definition: ElementFile_copyTable.cpp:32
dim_t numQuad
Definition: dudley/src/ElementFile.h:32
index_t minColor
Definition: dudley/src/ElementFile.h:71
Definition: dudley/src/ElementFile.h:40
Dudley_ElementTypeId etype
Definition: dudley/src/ElementFile.h:82