ESScript  Revision_
finley/src/Assemble.h
Go to the documentation of this file.
1 
2 /*****************************************************************************
3 *
4 * Copyright (c) 2003-2013 by University of Queensland
5 * http://www.uq.edu.au
6 *
7 * Primary Business: Queensland, Australia
8 * Licensed under the Open Software License version 3.0
9 * http://www.opensource.org/licenses/osl-3.0.php
10 *
11 * Development until 2012 by Earth Systems Science Computational Center (ESSCC)
12 * Development since 2012 by School of Earth Sciences
13 *
14 *****************************************************************************/
15 
16 
17 /****************************************************************************
18 
19  Assemblage routines: header file
20 
21 *****************************************************************************/
22 
23 #ifndef __FINLEY_ASSEMBLE_H__
24 #define __FINLEY_ASSEMBLE_H__
25 
26 #include "Finley.h"
27 #include "ElementFile.h"
28 #include "NodeFile.h"
29 #include "paso/SystemMatrix.h"
30 
31 namespace finley {
32 
34  AssembleParameters(const NodeFile* nodes, const ElementFile* ef,
35  Paso_SystemMatrix* sm, escript::Data& rhs,
36  bool reducedOrder);
37 
43  escript::Data& F;
49  int numSides;
51  int numSub;
53  int numDim;
55  int NN;
58 
59  int numEqu;
60  const int* row_DOF;
63  const int* row_node;
66  int numComp;
67  const int* col_DOF;
70  const int* col_node;
73 };
74 
75 
79 void Assemble_PDE(const NodeFile* nodes, const ElementFile* elements,
80  Paso_SystemMatrix* S, escript::Data& F,
81  const escript::Data& A, const escript::Data& B,
82  const escript::Data& C, const escript::Data& D,
83  const escript::Data& X, const escript::Data& Y);
84 
85 void Assemble_PDE_Points(const AssembleParameters& p, escript::Data& d_dirac,
86  escript::Data& y_dirac);
87 
88 void Assemble_PDE_Single_1D(const AssembleParameters& p, escript::Data& A,
89  escript::Data& B, escript::Data& C, escript::Data& D, escript::Data& X,
90  escript::Data& Y);
91 
92 void Assemble_PDE_Single_2D(const AssembleParameters& p, escript::Data& A,
93  escript::Data& B, escript::Data& C, escript::Data& D, escript::Data& X,
94  escript::Data& Y);
95 
96 void Assemble_PDE_Single_3D(const AssembleParameters& p, escript::Data& A,
97  escript::Data& B, escript::Data& C, escript::Data& D, escript::Data& X,
98  escript::Data& Y);
99 
100 void Assemble_PDE_Single_C(const AssembleParameters& p, escript::Data& D,
101  escript::Data& Y);
102 
103 void Assemble_PDE_System_1D(const AssembleParameters& p, escript::Data& A,
104  escript::Data& B, escript::Data& C, escript::Data& D, escript::Data& X,
105  escript::Data& Y);
106 
107 void Assemble_PDE_System_2D(const AssembleParameters& p, escript::Data& A,
108  escript::Data& B, escript::Data& C, escript::Data& D, escript::Data& X,
109  escript::Data& Y);
110 
111 void Assemble_PDE_System_3D(const AssembleParameters& p, escript::Data& A,
112  escript::Data& B, escript::Data& C, escript::Data& D, escript::Data& X,
113  escript::Data& Y);
114 
115 void Assemble_PDE_System_C(const AssembleParameters& p, escript::Data& D,
116  escript::Data& Y);
117 
118 void Assemble_addToSystemMatrix(Paso_SystemMatrix*, const int NN_Equa,
119  const int* Nodes_Equa, const int num_Equa, const int NN_Sol,
120  const int* Nodes_Sol, const int num_Sol, const double* array);
121 
122 void Assemble_LumpedSystem(const NodeFile* nodes, const ElementFile* elements,
123  escript::Data& lumpedMat, const escript::Data& D,
124  bool useHRZ);
125 
126 void Assemble_AverageElementData(const ElementFile* elements,
127  escript::Data& out, const escript::Data& in);
128 
129 void Assemble_CopyElementData(const ElementFile* elements, escript::Data& out,
130  const escript::Data& in);
131 
132 void Assemble_CopyNodalData(const NodeFile* nodes, escript::Data& out,
133  const escript::Data& in);
134 
135 void Assemble_NodeCoordinates(const NodeFile* nodes, escript::Data& out);
136 
137 void Assemble_getNormal(const NodeFile* nodes, const ElementFile* elements,
138  escript::Data& normals);
139 
140 void Assemble_getSize(const NodeFile* nodes, const ElementFile* elements,
141  escript::Data& size);
142 
143 void Assemble_gradient(const NodeFile* nodes, const ElementFile* elements,
144  escript::Data& gradient, const escript::Data& data);
145 
146 void Assemble_integrate(const NodeFile* nodes, const ElementFile* elements,
147  const escript::Data& data, double* integrals);
148 
149 void Assemble_interpolate(const NodeFile* nodes, const ElementFile* elements,
150  const escript::Data& data, escript::Data& output);
151 
152 void Assemble_jacobians_1D(const double* coordinates, int numQuad,
153  const double* QuadWeights, int numShape,
154  int numElements, int numNodes, const int* nodes,
155  const double* DSDv, int numTest, const double* DTDv,
156  double* dTdX, double* volume, const int* elementId);
157 void Assemble_jacobians_2D(const double* coordinates, int numQuad,
158  const double* QuadWeights, int numShape,
159  int numElements, int numNodes, const int* nodes,
160  const double* DSDv, int numTest, const double* DTDv,
161  double* dTdX, double* volume, const int* elementId);
162 void Assemble_jacobians_2D_M1D_E1D(const double* coordinates, int numQuad,
163  const double* QuadWeights, int numShape,
164  int numElements, int numNodes, const int* nodes,
165  const double* DSDv, int numTest, const double* DTDv,
166  double* dTdX, double* volume, const int* elementId);
167 void Assemble_jacobians_2D_M1D_E1D_C(const double* coordinates, int numQuad,
168  const double* QuadWeights, int numShape,
169  int numElements, int numNodes, const int* nodes,
170  const double* DSDv, int numTest, const double* DTDv,
171  double* dTdX, double* volume, const int* elementId);
172 void Assemble_jacobians_2D_M1D_E2D(const double* coordinates, int numQuad,
173  const double* QuadWeights, int numShape,
174  int numElements, int numNodes, const int* nodes,
175  const double* DSDv, int numTest, const double* DTDv,
176  double* dTdX, double* volume, const int* elementId);
177 void Assemble_jacobians_2D_M1D_E2D_C(const double* coordinates, int numQuad,
178  const double* QuadWeights, int numShape,
179  int numElements, int numNodes, const int* nodes,
180  const double* DSDv, int numTest, const double* DTDv,
181  double* dTdX, double* volume, const int* elementId);
182 void Assemble_jacobians_3D(const double* coordinates, int numQuad,
183  const double* QuadWeights, int numShape,
184  int numElements, int numNodes, const int* nodes,
185  const double* DSDv, int numTest, const double* DTDv,
186  double* dTdX, double* volume, const int* elementId);
187 void Assemble_jacobians_3D_M2D_E2D(const double* coordinates, int numQuad,
188  const double* QuadWeights, int numShape,
189  int numElements, int numNodes, const int* nodes,
190  const double* DSDv, int numTest, const double* DTDv,
191  double* dTdX, double* volume, const int* elementId);
192 void Assemble_jacobians_3D_M2D_E2D_C(const double* coordinates, int numQuad,
193  const double* QuadWeights, int numShape,
194  int numElements, int numNodes, const int* nodes,
195  const double* DSDv, int numTest, const double* DTDv,
196  double* dTdX, double* volume, const int* elementId);
197 void Assemble_jacobians_3D_M2D_E3D(const double* coordinates, int numQuad,
198  const double* QuadWeights, int numShape,
199  int numElements, int numNodes, const int* nodes,
200  const double* DSDv, int numTest, const double* DTDv,
201  double* dTdX, double* volume, const int* elementId);
202 void Assemble_jacobians_3D_M2D_E3D_C(const double* coordinates, int numQuad,
203  const double* QuadWeights, int numShape,
204  int numElements, int numNodes, const int* nodes,
205  const double* DSDv, int numTest, const double* DTDv,
206  double* dTdX, double* volume, const int* elementId);
207 
208 } // namespace finley
209 
210 #endif // __FINLEY_ASSEMBLE_H__
211