/[escript]/trunk/finley/src/Assemble.h
ViewVC logotype

Contents of /trunk/finley/src/Assemble.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 4496 - (show annotations)
Mon Jul 15 06:53:44 2013 UTC (6 years ago) by caltinay
File MIME type: text/plain
File size: 7375 byte(s)
finley (WIP):
-moved all of finley into its namespace
-introduced some shared pointers
-Mesh is now a class
-other bits and pieces...

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
33 struct AssembleParameters {
34 AssembleParameters(const NodeFile* nodes, const ElementFile* ef,
35 Paso_SystemMatrix* sm, escript::Data& rhs,
36 bool reducedOrder);
37
38 /// element file these parameters apply to
39 const ElementFile* elements;
40 /// system matrix to be updated
41 Paso_SystemMatrix* S;
42 /// right-hand side to be updated
43 escript::Data& F;
44 /// total number of quadrature nodes = numQuadSub * numQuadSub
45 int numQuadTotal;
46 /// number of quadrature nodes per subelements
47 int numQuadSub;
48 /// number of sides
49 int numSides;
50 /// number of sub-elements
51 int numSub;
52 /// number of spatial dimensions
53 int numDim;
54 /// leading dimension of element node table
55 int NN;
56 /// number of elements
57 int numElements;
58
59 int numEqu;
60 const int* row_DOF;
61 int row_DOF_UpperBound;
62 ElementFile_Jacobians* row_jac;
63 const int* row_node;
64 int row_numShapesTotal;
65 int row_numShapes;
66 int numComp;
67 const int* col_DOF;
68 int col_DOF_UpperBound;
69 ElementFile_Jacobians* col_jac;
70 const int* col_node;
71 int col_numShapesTotal;
72 int col_numShapes;
73 };
74
75
76 /// Entry point for PDE assembly. Checks arguments, populates an
77 /// AssembleParameters structure and calls appropriate method for the actual
78 /// work.
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(double*, int, double*, int, int, int, int*, double*,
153 int, double*, double*, double*, int*);
154 void Assemble_jacobians_2D(double*, int, double*, int, int, int, int*, double*,
155 int, double*, double*, double*, int*);
156 void Assemble_jacobians_2D_M1D_E2D(double*, int, double*, int, int, int, int*,
157 double*, int, double*, double*, double*, int*);
158 void Assemble_jacobians_2D_M1D_E2D_C(double*, int, double*, int, int, int,
159 int*, double*, int, double*, double*, double*, int*);
160 void Assemble_jacobians_2D_M1D_E1D(double*, int, double*, int, int, int, int*,
161 double*, int, double*, double*, double*, int*);
162 void Assemble_jacobians_2D_M1D_E1D_C(double*, int, double*, int, int, int,
163 int*, double*, int, double*, double*, double*, int*);
164 void Assemble_jacobians_3D(double*, int, double*, int, int, int, int*, double*,
165 int, double*, double*, double*, int*);
166 void Assemble_jacobians_3D_M2D_E3D(double*, int, double*, int, int, int, int*,
167 double*, int, double*, double*, double*, int*);
168 void Assemble_jacobians_3D_M2D_E3D_C(double*, int, double*, int, int, int,
169 int*, double*, int, double*, double*, double*, int*);
170 void Assemble_jacobians_3D_M2D_E2D(double*, int, double*, int, int, int, int*,
171 double*, int, double*, double*, double*, int*);
172 void Assemble_jacobians_3D_M2D_E2D_C(double*, int, double*, int, int, int,
173 int*, double*, int, double*, double*, double*, int*);
174
175 } // namespace finley
176
177 #endif // __FINLEY_ASSEMBLE_H__
178

Properties

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

  ViewVC Help
Powered by ViewVC 1.1.26