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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 4492 - (show annotations)
Tue Jul 2 01:44:11 2013 UTC (5 years, 9 months ago) by caltinay
File MIME type: text/plain
File size: 6833 byte(s)
Finley changes that were held back while in release mode - moved more stuff
into finley namespace.

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 "ReferenceElements.h"
27 #include "Finley.h"
28 #include "ElementFile.h"
29 #include "NodeFile.h"
30 #include "paso/SystemMatrix.h"
31
32 namespace finley {
33
34 struct AssembleParameters {
35 AssembleParameters(const NodeFile* nodes, const ElementFile* ef,
36 Paso_SystemMatrix* sm, escript::Data& rhs,
37 bool reducedOrder);
38
39 /// element file these parameters apply to
40 const ElementFile* elements;
41 /// system matrix to be updated
42 Paso_SystemMatrix* S;
43 /// right-hand side to be updated
44 escript::Data& F;
45 /// total number of quadrature nodes = numQuadSub * numQuadSub
46 int numQuadTotal;
47 /// number of quadrature nodes per subelements
48 int numQuadSub;
49 /// number of sides
50 int numSides;
51 /// number of sub-elements
52 int numSub;
53 /// number of spatial dimensions
54 int numDim;
55 /// leading dimension of element node table
56 int NN;
57 /// number of elements
58 int numElements;
59
60 int numEqu;
61 const int* row_DOF;
62 int row_DOF_UpperBound;
63 ElementFile_Jacobians* row_jac;
64 const int* row_node;
65 int row_numShapesTotal;
66 int row_numShapes;
67 int numComp;
68 const int* col_DOF;
69 int col_DOF_UpperBound;
70 ElementFile_Jacobians* col_jac;
71 const int* col_node;
72 int col_numShapesTotal;
73 int col_numShapes;
74 };
75
76
77 /// Entry point for PDE assembly. Checks arguments, populates an
78 /// AssembleParameters structure and calls appropriate method for the actual
79 /// work.
80 void Assemble_PDE(NodeFile* nodes, ElementFile* elements, Paso_SystemMatrix* S,
81 escript::Data& F, const escript::Data& A, const escript::Data& B,
82 const escript::Data& C, const escript::Data& D, const escript::Data& X,
83 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(NodeFile* nodes, ElementFile* elements,
123 escript::Data& lumpedMat, const escript::Data& D, bool useHRZ);
124
125 void Assemble_AverageElementData(ElementFile*, escript::Data&, const escript::Data&);
126 void Assemble_CopyElementData(ElementFile*, escript::Data&, const escript::Data&);
127 void Assemble_CopyNodalData(const NodeFile*, escript::Data&, const escript::Data&);
128 void Assemble_NodeCoordinates(NodeFile*, escript::Data&);
129
130 void Assemble_gradient(const NodeFile*, const ElementFile*, escript::Data&, const escript::Data&);
131 void Assemble_integrate(NodeFile*, ElementFile*, const escript::Data&, double*);
132 void Assemble_interpolate(const NodeFile*, const ElementFile*, const escript::Data&, escript::Data&);
133 void Assemble_setNormal(NodeFile*, ElementFile*, escript::Data&);
134 void Assemble_getSize(NodeFile*, ElementFile*, escript::Data&);
135
136 void Assemble_jacobians_1D(double*, int, double*, int, int, int, int*, double*,
137 int, double*, double*, double*, int*);
138 void Assemble_jacobians_2D(double*, int, double*, int, int, int, int*, double*,
139 int, double*, double*, double*, int*);
140 void Assemble_jacobians_2D_M1D_E2D(double*, int, double*, int, int, int, int*,
141 double*, int, double*, double*, double*, int*);
142 void Assemble_jacobians_2D_M1D_E2D_C(double*, int, double*, int, int, int,
143 int*, double*, int, double*, double*, double*, int*);
144 void Assemble_jacobians_2D_M1D_E1D(double*, int, double*, int, int, int, int*,
145 double*, int, double*, double*, double*, int*);
146 void Assemble_jacobians_2D_M1D_E1D_C(double*, int, double*, int, int, int,
147 int*, double*, int, double*, double*, double*, int*);
148 void Assemble_jacobians_3D(double*, int, double*, int, int, int, int*, double*,
149 int, double*, double*, double*, int*);
150 void Assemble_jacobians_3D_M2D_E3D(double*, int, double*, int, int, int, int*,
151 double*, int, double*, double*, double*, int*);
152 void Assemble_jacobians_3D_M2D_E3D_C(double*, int, double*, int, int, int,
153 int*, double*, int, double*, double*, double*, int*);
154 void Assemble_jacobians_3D_M2D_E2D(double*, int, double*, int, int, int, int*,
155 double*, int, double*, double*, double*, int*);
156 void Assemble_jacobians_3D_M2D_E2D_C(double*, int, double*, int, int, int,
157 int*, double*, int, double*, double*, double*, int*);
158
159 } // namespace finley
160
161 #endif // __FINLEY_ASSEMBLE_H__
162

Properties

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

  ViewVC Help
Powered by ViewVC 1.1.26