escript Revision_
lagrange_functions.h
Go to the documentation of this file.
1
2/*****************************************************************************
3*
4* Copyright (c) 2003-2020 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-2017 by Centre for Geoscience Computing (GeoComp)
14* Development from 2019 by School of Earth and Environmental Sciences
15**
16*****************************************************************************/
17
18namespace speckley {
19
20inline double lagrange_degree2_0(double xi) {
21 return 0.5*xi*(xi - 1.0);
22}
23
24inline double lagrange_degree2_1(double xi) {
25 return -1.0*pow(xi, 2) + 1.0;
26}
27
28inline double lagrange_degree2_2(double xi) {
29 return 0.5*xi*(xi + 1.0);
30}
31
32inline double lagrange_degree3_0(double xi) {
33 return (-0.625*xi + 0.625)*(xi - 0.447213595499958)*(xi + 0.447213595499958);
34}
35
36inline double lagrange_degree3_1(double xi) {
37 return (xi - 0.447213595499958)*(xi + 1.0)*(1.39754248593737*xi - 1.39754248593737);
38}
39
40inline double lagrange_degree3_2(double xi) {
41 return (-1.39754248593737*xi + 1.39754248593737)*(xi + 0.447213595499958)*(xi + 1.0);
42}
43
44inline double lagrange_degree3_3(double xi) {
45 return (0.625*xi - 0.279508497187474)*(xi + 0.447213595499958)*(xi + 1.0);
46}
47
48inline double lagrange_degree4_0(double xi) {
49 return 0.874999999999998*xi*(xi - 1.0)*(xi - 0.654653670707977)*(xi + 0.654653670707977);
50}
51
52inline double lagrange_degree4_1(double xi) {
53 return -2.04166666666667*xi*(xi - 1.0)*(xi - 0.654653670707977)*(xi + 1.0);
54}
55
56inline double lagrange_degree4_2(double xi) {
57 return (xi - 0.654653670707977)*(xi + 0.654653670707977)*(xi + 1.0)*(2.33333333333333*xi - 2.33333333333333);
58}
59
60inline double lagrange_degree4_3(double xi) {
61 return -2.04166666666667*xi*(xi - 1.0)*(xi + 0.654653670707977)*(xi + 1.0);
62}
63
64inline double lagrange_degree4_4(double xi) {
65 return 0.875*xi*(xi - 0.654653670707977)*(xi + 0.654653670707977)*(xi + 1.0);
66}
67
68inline double lagrange_degree5_0(double xi) {
69 return (-1.31250000000001*xi + 1.31250000000001)*(xi - 0.765055323929464)*(xi - 0.285231516480645)*(xi + 0.285231516480645)*(xi + 0.765055323929466);
70}
71
72inline double lagrange_degree5_1(double xi) {
73 return (xi - 0.765055323929464)*(xi - 0.285231516480645)*(xi + 0.285231516480645)*(xi + 1.0)*(3.12725658269744*xi - 3.12725658269744);
74}
75
76inline double lagrange_degree5_2(double xi) {
77 return (-3.78648303389511*xi + 3.78648303389511)*(xi - 0.765055323929464)*(xi - 0.285231516480645)*(xi + 0.765055323929466)*(xi + 1.0);
78}
79
80inline double lagrange_degree5_3(double xi) {
81 return (xi - 0.765055323929464)*(xi + 0.285231516480645)*(xi + 0.765055323929466)*(xi + 1.0)*(3.78648303389512*xi - 3.78648303389512);
82}
83
84inline double lagrange_degree5_4(double xi) {
85 return (-3.12725658269744*xi + 3.12725658269744)*(xi - 0.285231516480645)*(xi + 0.285231516480645)*(xi + 0.765055323929466)*(xi + 1.0);
86}
87
88inline double lagrange_degree5_5(double xi) {
89 return (xi - 0.285231516480645)*(xi + 0.285231516480645)*(xi + 0.765055323929466)*(xi + 1.0)*(1.3125*xi - 1.00413511265742);
90}
91
92inline double lagrange_degree6_0(double xi) {
93 return 2.06249999999999*xi*(xi - 1.0)*(xi - 0.830223896278565)*(xi - 0.468848793470715)*(xi + 0.468848793470714)*(xi + 0.830223896278566);
94}
95
96inline double lagrange_degree6_1(double xi) {
97 return -4.97286970608696*xi*(xi - 1.0)*(xi - 0.830223896278565)*(xi - 0.468848793470715)*(xi + 0.468848793470714)*(xi + 1.0);
98}
99
100inline double lagrange_degree6_2(double xi) {
101 return 6.21036970608698*xi*(xi - 1.0)*(xi - 0.830223896278565)*(xi - 0.468848793470715)*(xi + 0.830223896278566)*(xi + 1.0);
102}
103
104inline double lagrange_degree6_3(double xi) {
105 return -6.6*pow(xi, 6) + 12.6*pow(xi, 4) - 7.0*pow(xi, 2) + 1.46549439250521e-15*xi + 1.0;
106}
107
108inline double lagrange_degree6_4(double xi) {
109 return 6.21036970608699*xi*(xi - 1.0)*(xi - 0.830223896278565)*(xi + 0.468848793470714)*(xi + 0.830223896278566)*(xi + 1.0);
110}
111
112inline double lagrange_degree6_5(double xi) {
113 return -4.97286970608697*xi*(xi - 1.0)*(xi - 0.468848793470715)*(xi + 0.468848793470714)*(xi + 0.830223896278566)*(xi + 1.0);
114}
115
116inline double lagrange_degree6_6(double xi) {
117 return 2.06249999999999*xi*(xi - 0.830223896278565)*(xi - 0.468848793470715)*(xi + 0.468848793470714)*(xi + 0.830223896278566)*(xi + 1.0);
118}
119
120inline double lagrange_degree7_0(double xi) {
121 return (-3.35156249999998*xi + 3.35156249999997)*(xi - 0.871740148509608)*(xi - 0.591700181433143)*(xi - 0.209299217902479)*(xi + 0.209299217902479)*(xi + 0.591700181433142)*(xi + 0.871740148509606);
122}
123
124inline double lagrange_degree7_1(double xi) {
125 return (xi - 0.871740148509608)*(xi - 0.591700181433143)*(xi - 0.209299217902479)*(xi + 0.209299217902479)*(xi + 0.591700181433142)*(xi + 1.0)*(8.14072271825386*xi - 8.14072271825384);
126}
127
128inline double lagrange_degree7_2(double xi) {
129 return (-10.3581368289505*xi + 10.3581368289505)*(xi - 0.871740148509608)*(xi - 0.591700181433143)*(xi - 0.209299217902479)*(xi + 0.209299217902479)*(xi + 0.871740148509606)*(xi + 1.0);
130}
131
132inline double lagrange_degree7_3(double xi) {
133 return (xi - 0.871740148509608)*(xi - 0.591700181433143)*(xi - 0.209299217902479)*(xi + 0.591700181433142)*(xi + 0.871740148509606)*(xi + 1.0)*(11.3898137484866*xi - 11.3898137484866);
134}
135
136inline double lagrange_degree7_4(double xi) {
137 return (-11.3898137484866*xi + 11.3898137484866)*(xi - 0.871740148509608)*(xi - 0.591700181433143)*(xi + 0.209299217902479)*(xi + 0.591700181433142)*(xi + 0.871740148509606)*(xi + 1.0);
138}
139
140inline double lagrange_degree7_5(double xi) {
141 return (xi - 0.871740148509608)*(xi - 0.209299217902479)*(xi + 0.209299217902479)*(xi + 0.591700181433142)*(xi + 0.871740148509606)*(xi + 1.0)*(10.3581368289505*xi - 10.3581368289505);
142}
143
144inline double lagrange_degree7_6(double xi) {
145 return (-8.140722718254*xi + 8.14072271825398)*(xi - 0.591700181433143)*(xi - 0.209299217902479)*(xi + 0.209299217902479)*(xi + 0.591700181433142)*(xi + 0.871740148509606)*(xi + 1.0);
146}
147
148inline double lagrange_degree7_7(double xi) {
149 return (xi - 0.591700181433143)*(xi - 0.209299217902479)*(xi + 0.209299217902479)*(xi + 0.591700181433142)*(xi + 0.871740148509606)*(xi + 1.0)*(3.35156250000011*xi - 2.92169159148933);
150}
151
152inline double lagrange_degree8_0(double xi) {
153 return 5.58593750000054*xi*(xi - 1.0)*(xi - 0.899757995411458)*(xi - 0.677186279510736)*(xi - 0.363117463826179)*(xi + 0.363117463826178)*(xi + 0.677186279510735)*(xi + 0.899757995411471);
154}
155
156inline double lagrange_degree8_1(double xi) {
157 return -13.63453200049*xi*(xi - 1.0)*(xi - 0.899757995411458)*(xi - 0.677186279510736)*(xi - 0.363117463826179)*(xi + 0.363117463826178)*(xi + 0.677186279510735)*(xi + 1.0);
158}
159
160inline double lagrange_degree8_2(double xi) {
161 return 17.5609949844529*xi*(xi - 1.0)*(xi - 0.899757995411458)*(xi - 0.677186279510736)*(xi - 0.363117463826179)*(xi + 0.363117463826178)*(xi + 0.899757995411471)*(xi + 1.0);
162}
163
164inline double lagrange_degree8_3(double xi) {
165 return -19.7266861982491*xi*(xi - 1.0)*(xi - 0.899757995411458)*(xi - 0.677186279510736)*(xi - 0.363117463826179)*(xi + 0.677186279510735)*(xi + 0.899757995411471)*(xi + 1.0);
166}
167
168inline double lagrange_degree8_4(double xi) {
169 return (xi - 0.899757995411458)*(xi - 0.677186279510736)*(xi - 0.363117463826179)*(xi + 0.363117463826178)*(xi + 0.677186279510735)*(xi + 0.899757995411471)*(xi + 1.0)*(20.4285714285713*xi - 20.4285714285713);
170}
171
172inline double lagrange_degree8_5(double xi) {
173 return -19.7266861982493*xi*(xi - 1.0)*(xi - 0.899757995411458)*(xi - 0.677186279510736)*(xi + 0.363117463826178)*(xi + 0.677186279510735)*(xi + 0.899757995411471)*(xi + 1.0);
174}
175
176inline double lagrange_degree8_6(double xi) {
177 return 17.5609949844536*xi*(xi - 1.0)*(xi - 0.899757995411458)*(xi - 0.363117463826179)*(xi + 0.363117463826178)*(xi + 0.677186279510735)*(xi + 0.899757995411471)*(xi + 1.0);
178}
179
180inline double lagrange_degree8_7(double xi) {
181 return -13.6345320004894*xi*(xi - 1.0)*(xi - 0.677186279510736)*(xi - 0.363117463826179)*(xi + 0.363117463826178)*(xi + 0.677186279510735)*(xi + 0.899757995411471)*(xi + 1.0);
182}
183
184inline double lagrange_degree8_8(double xi) {
185 return 5.58593749999947*xi*(xi - 0.899757995411458)*(xi - 0.677186279510736)*(xi - 0.363117463826179)*(xi + 0.363117463826178)*(xi + 0.677186279510735)*(xi + 0.899757995411471)*(xi + 1.0);
186}
187
188inline double lagrange_degree9_0(double xi) {
189 return (-9.49609374999916*xi + 9.49609374999925)*(xi - 0.919533908166451)*(xi - 0.738773865105506)*(xi - 0.477924949810445)*(xi - 0.165278957666387)*(xi + 0.165278957666387)*(xi + 0.477924949810445)*(xi + 0.738773865105507)*(xi + 0.919533908166451);
190}
191
192inline double lagrange_degree9_1(double xi) {
193 return (xi - 0.919533908166451)*(xi - 0.738773865105506)*(xi - 0.477924949810445)*(xi - 0.165278957666387)*(xi + 0.165278957666387)*(xi + 0.477924949810445)*(xi + 0.738773865105507)*(xi + 1.0)*(23.2581991069278*xi - 23.258199106928);
194}
195
196inline double lagrange_degree9_2(double xi) {
197 return (-30.2089539641755*xi + 30.2089539641758)*(xi - 0.919533908166451)*(xi - 0.738773865105506)*(xi - 0.477924949810445)*(xi - 0.165278957666387)*(xi + 0.165278957666387)*(xi + 0.477924949810445)*(xi + 0.919533908166451)*(xi + 1.0);
198}
199
200inline double lagrange_degree9_3(double xi) {
201 return (xi - 0.919533908166451)*(xi - 0.738773865105506)*(xi - 0.477924949810445)*(xi - 0.165278957666387)*(xi + 0.165278957666387)*(xi + 0.738773865105507)*(xi + 0.919533908166451)*(xi + 1.0)*(34.4250370034967*xi - 34.425037003497);
202}
203
204inline double lagrange_degree9_4(double xi) {
205 return (-36.4571961125312*xi + 36.4571961125316)*(xi - 0.919533908166451)*(xi - 0.738773865105506)*(xi - 0.477924949810445)*(xi - 0.165278957666387)*(xi + 0.477924949810445)*(xi + 0.738773865105507)*(xi + 0.919533908166451)*(xi + 1.0);
206}
207
208inline double lagrange_degree9_5(double xi) {
209 return (xi - 0.919533908166451)*(xi - 0.738773865105506)*(xi - 0.477924949810445)*(xi + 0.165278957666387)*(xi + 0.477924949810445)*(xi + 0.738773865105507)*(xi + 0.919533908166451)*(xi + 1.0)*(36.4571961125312*xi - 36.4571961125316);
210}
211
212inline double lagrange_degree9_6(double xi) {
213 return (-34.4250370034965*xi + 34.4250370034968)*(xi - 0.919533908166451)*(xi - 0.738773865105506)*(xi - 0.165278957666387)*(xi + 0.165278957666387)*(xi + 0.477924949810445)*(xi + 0.738773865105507)*(xi + 0.919533908166451)*(xi + 1.0);
214}
215
216inline double lagrange_degree9_7(double xi) {
217 return (xi - 0.919533908166451)*(xi - 0.477924949810445)*(xi - 0.165278957666387)*(xi + 0.165278957666387)*(xi + 0.477924949810445)*(xi + 0.738773865105507)*(xi + 0.919533908166451)*(xi + 1.0)*(30.2089539641749*xi - 30.2089539641752);
218}
219
220inline double lagrange_degree9_8(double xi) {
221 return (-23.2581991069258*xi + 23.258199106926)*(xi - 0.738773865105506)*(xi - 0.477924949810445)*(xi - 0.165278957666387)*(xi + 0.165278957666387)*(xi + 0.477924949810445)*(xi + 0.738773865105507)*(xi + 0.919533908166451)*(xi + 1.0);
222}
223
224inline double lagrange_degree9_9(double xi) {
225 return (xi - 0.738773865105506)*(xi - 0.477924949810445)*(xi - 0.165278957666387)*(xi + 0.165278957666387)*(xi + 0.477924949810445)*(xi + 0.738773865105507)*(xi + 0.919533908166451)*(xi + 1.0)*(9.49609374999766*xi - 8.73198019825036);
226}
227
228inline double lagrange_degree10_0(double xi) {
229 return 16.4023437499897*xi*(xi - 1.00000000000002)*(xi - 0.934001430408021)*(xi - 0.784483473663165)*(xi - 0.565235326996199)*(xi - 0.29575813558694)*(xi + 0.295758135586939)*(xi + 0.565235326996199)*(xi + 0.784483473663166)*(xi + 0.934001430408012);
230}
231
232inline double lagrange_degree10_1(double xi) {
233 return -40.2732656174519*xi*(xi - 1.00000000000002)*(xi - 0.934001430408021)*(xi - 0.784483473663165)*(xi - 0.565235326996199)*(xi - 0.29575813558694)*(xi + 0.295758135586939)*(xi + 0.565235326996199)*(xi + 0.784483473663166)*(xi + 1.0);
234}
235
236inline double lagrange_degree10_2(double xi) {
237 return 52.62659082067*xi*(xi - 1.00000000000002)*(xi - 0.934001430408021)*(xi - 0.784483473663165)*(xi - 0.565235326996199)*(xi - 0.29575813558694)*(xi + 0.295758135586939)*(xi + 0.565235326996199)*(xi + 0.934001430408012)*(xi + 1.0);
238}
239
240inline double lagrange_degree10_3(double xi) {
241 return -60.5836186612294*xi*(xi - 1.00000000000002)*(xi - 0.934001430408021)*(xi - 0.784483473663165)*(xi - 0.565235326996199)*(xi - 0.29575813558694)*(xi + 0.295758135586939)*(xi + 0.784483473663166)*(xi + 0.934001430408012)*(xi + 1.0);
242}
243
244inline double lagrange_degree10_4(double xi) {
245 return 65.1533465334198*xi*(xi - 1.00000000000002)*(xi - 0.934001430408021)*(xi - 0.784483473663165)*(xi - 0.565235326996199)*(xi - 0.29575813558694)*(xi + 0.565235326996199)*(xi + 0.784483473663166)*(xi + 0.934001430408012)*(xi + 1.0);
246}
247
248inline double lagrange_degree10_5(double xi) {
249 return (-66.650793650796*xi + 66.6507936507973)*(xi - 0.934001430408021)*(xi - 0.784483473663165)*(xi - 0.565235326996199)*(xi - 0.29575813558694)*(xi + 0.295758135586939)*(xi + 0.565235326996199)*(xi + 0.784483473663166)*(xi + 0.934001430408012)*(xi + 1.0);
250}
251
252inline double lagrange_degree10_6(double xi) {
253 return 65.1533465334186*xi*(xi - 1.00000000000002)*(xi - 0.934001430408021)*(xi - 0.784483473663165)*(xi - 0.565235326996199)*(xi + 0.295758135586939)*(xi + 0.565235326996199)*(xi + 0.784483473663166)*(xi + 0.934001430408012)*(xi + 1.0);
254}
255
256inline double lagrange_degree10_7(double xi) {
257 return -60.5836186612267*xi*(xi - 1.00000000000002)*(xi - 0.934001430408021)*(xi - 0.784483473663165)*(xi - 0.29575813558694)*(xi + 0.295758135586939)*(xi + 0.565235326996199)*(xi + 0.784483473663166)*(xi + 0.934001430408012)*(xi + 1.0);
258}
259
260inline double lagrange_degree10_8(double xi) {
261 return 52.6265908206628*xi*(xi - 1.00000000000002)*(xi - 0.934001430408021)*(xi - 0.565235326996199)*(xi - 0.29575813558694)*(xi + 0.295758135586939)*(xi + 0.565235326996199)*(xi + 0.784483473663166)*(xi + 0.934001430408012)*(xi + 1.0);
262}
263
264inline double lagrange_degree10_9(double xi) {
265 return -40.2732656174398*xi*(xi - 1.00000000000002)*(xi - 0.784483473663165)*(xi - 0.565235326996199)*(xi - 0.29575813558694)*(xi + 0.295758135586939)*(xi + 0.565235326996199)*(xi + 0.784483473663166)*(xi + 0.934001430408012)*(xi + 1.0);
266}
267
268inline double lagrange_degree10_10(double xi) {
269 return 16.402343749983*xi*(xi - 0.934001430408021)*(xi - 0.784483473663165)*(xi - 0.565235326996199)*(xi - 0.29575813558694)*(xi + 0.295758135586939)*(xi + 0.565235326996199)*(xi + 0.784483473663166)*(xi + 0.934001430408012)*(xi + 1.0);
270}
271
272} //namespace speckley
273
Definition AbstractAssembler.cpp:19
double lagrange_degree9_7(double xi)
Definition lagrange_functions.h:216
double lagrange_degree2_2(double xi)
Definition lagrange_functions.h:28
double lagrange_degree9_8(double xi)
Definition lagrange_functions.h:220
double lagrange_degree10_4(double xi)
Definition lagrange_functions.h:244
double lagrange_degree8_0(double xi)
Definition lagrange_functions.h:152
double lagrange_degree6_4(double xi)
Definition lagrange_functions.h:108
double lagrange_degree4_2(double xi)
Definition lagrange_functions.h:56
double lagrange_degree10_8(double xi)
Definition lagrange_functions.h:260
double lagrange_degree10_3(double xi)
Definition lagrange_functions.h:240
double lagrange_degree7_0(double xi)
Definition lagrange_functions.h:120
double lagrange_degree9_0(double xi)
Definition lagrange_functions.h:188
double lagrange_degree9_9(double xi)
Definition lagrange_functions.h:224
double lagrange_degree2_0(double xi)
Definition lagrange_functions.h:20
double lagrange_degree5_1(double xi)
Definition lagrange_functions.h:72
double lagrange_degree6_5(double xi)
Definition lagrange_functions.h:112
double lagrange_degree3_2(double xi)
Definition lagrange_functions.h:40
double lagrange_degree5_5(double xi)
Definition lagrange_functions.h:88
double lagrange_degree9_1(double xi)
Definition lagrange_functions.h:192
double lagrange_degree7_1(double xi)
Definition lagrange_functions.h:124
double lagrange_degree6_6(double xi)
Definition lagrange_functions.h:116
double lagrange_degree8_4(double xi)
Definition lagrange_functions.h:168
double lagrange_degree7_5(double xi)
Definition lagrange_functions.h:140
double lagrange_degree10_7(double xi)
Definition lagrange_functions.h:256
double lagrange_degree7_4(double xi)
Definition lagrange_functions.h:136
double lagrange_degree8_8(double xi)
Definition lagrange_functions.h:184
double lagrange_degree8_1(double xi)
Definition lagrange_functions.h:156
double lagrange_degree10_0(double xi)
Definition lagrange_functions.h:228
double lagrange_degree9_6(double xi)
Definition lagrange_functions.h:212
double lagrange_degree2_1(double xi)
Definition lagrange_functions.h:24
double lagrange_degree10_2(double xi)
Definition lagrange_functions.h:236
double lagrange_degree5_3(double xi)
Definition lagrange_functions.h:80
double lagrange_degree10_5(double xi)
Definition lagrange_functions.h:248
double lagrange_degree8_2(double xi)
Definition lagrange_functions.h:160
double lagrange_degree9_2(double xi)
Definition lagrange_functions.h:196
double lagrange_degree10_10(double xi)
Definition lagrange_functions.h:268
double lagrange_degree3_1(double xi)
Definition lagrange_functions.h:36
double lagrange_degree6_3(double xi)
Definition lagrange_functions.h:104
double lagrange_degree3_3(double xi)
Definition lagrange_functions.h:44
double lagrange_degree8_5(double xi)
Definition lagrange_functions.h:172
double lagrange_degree7_7(double xi)
Definition lagrange_functions.h:148
double lagrange_degree9_3(double xi)
Definition lagrange_functions.h:200
double lagrange_degree10_1(double xi)
Definition lagrange_functions.h:232
double lagrange_degree6_2(double xi)
Definition lagrange_functions.h:100
double lagrange_degree9_4(double xi)
Definition lagrange_functions.h:204
double lagrange_degree8_6(double xi)
Definition lagrange_functions.h:176
double lagrange_degree4_3(double xi)
Definition lagrange_functions.h:60
double lagrange_degree8_3(double xi)
Definition lagrange_functions.h:164
double lagrange_degree6_0(double xi)
Definition lagrange_functions.h:92
double lagrange_degree4_0(double xi)
Definition lagrange_functions.h:48
double lagrange_degree4_4(double xi)
Definition lagrange_functions.h:64
double lagrange_degree5_0(double xi)
Definition lagrange_functions.h:68
double lagrange_degree3_0(double xi)
Definition lagrange_functions.h:32
double lagrange_degree8_7(double xi)
Definition lagrange_functions.h:180
double lagrange_degree10_6(double xi)
Definition lagrange_functions.h:252
double lagrange_degree5_2(double xi)
Definition lagrange_functions.h:76
double lagrange_degree4_1(double xi)
Definition lagrange_functions.h:52
double lagrange_degree10_9(double xi)
Definition lagrange_functions.h:264
double lagrange_degree6_1(double xi)
Definition lagrange_functions.h:96
double lagrange_degree7_3(double xi)
Definition lagrange_functions.h:132
double lagrange_degree7_6(double xi)
Definition lagrange_functions.h:144
double lagrange_degree5_4(double xi)
Definition lagrange_functions.h:84
double lagrange_degree7_2(double xi)
Definition lagrange_functions.h:128
double lagrange_degree9_5(double xi)
Definition lagrange_functions.h:208