Line data Source code
1 : !--------------------------------------------------------------------------------------------------!
2 : ! CP2K: A general program to perform molecular dynamics simulations !
3 : ! Copyright 2000-2024 CP2K developers group <https://cp2k.org> !
4 : ! !
5 : ! SPDX-License-Identifier: GPL-2.0-or-later !
6 : !--------------------------------------------------------------------------------------------------!
7 :
8 : ! **************************************************************************************************
9 : !> \brief Filters for interpolating scaling functions .
10 : !> \author Florian Schiffmann (09.2007,fschiff)
11 : ! **************************************************************************************************
12 : MODULE lazy
13 :
14 : USE kinds, ONLY: dp
15 : #include "../base/base_uses.f90"
16 :
17 : IMPLICIT NONE
18 :
19 : PRIVATE
20 :
21 : CHARACTER(len=*), PARAMETER, PRIVATE :: moduleN = 'lazy'
22 :
23 : ! *** Public data types ***
24 :
25 : PUBLIC :: lazy_arrays
26 :
27 : CONTAINS
28 :
29 : ! **************************************************************************************************
30 : !> \brief ...
31 : !> \param itype ...
32 : !> \param m ...
33 : !> \param ch ...
34 : !> \param cg ...
35 : !> \param cgt ...
36 : !> \param cht ...
37 : !> \par History
38 : !> 09.2007 created [Florian Schiffmann]
39 : !> \author fschiff
40 : ! **************************************************************************************************
41 47225 : SUBROUTINE lazy_arrays(itype, m, ch, cg, cgt, cht)
42 : INTEGER, INTENT(in) :: itype, m
43 : REAL(KIND=dp), DIMENSION(:), POINTER :: ch, cg, cgt, cht
44 :
45 : INTEGER :: i
46 :
47 141675 : ALLOCATE (ch(-m:m))
48 141675 : ALLOCATE (cg(-m:m))
49 141675 : ALLOCATE (cgt(-m:m))
50 141675 : ALLOCATE (cht(-m:m))
51 :
52 47225 : SELECT CASE (itype)
53 : CASE (8)
54 :
55 0 : DO i = -m, m
56 0 : ch(i) = 0._dp
57 0 : cht(i) = 0._dp
58 0 : cg(i) = 0._dp
59 0 : cgt(i) = 0._dp
60 : END DO
61 :
62 : ! The normalization is chosen such that a constant function remains the same constant
63 : ! on each level of the transform
64 :
65 0 : ch(-7) = -5._dp/2048._dp
66 0 : ch(-6) = 0._dp
67 0 : ch(-5) = 49._dp/2048._dp
68 0 : ch(-4) = 0._dp
69 0 : ch(-3) = -245._dp/2048._dp
70 0 : ch(-2) = 0._dp
71 0 : ch(-1) = 1225._dp/2048._dp
72 0 : ch(0) = 1._dp
73 0 : ch(1) = 1225._dp/2048._dp
74 0 : ch(2) = 0._dp
75 0 : ch(3) = -245._dp/2048._dp
76 0 : ch(4) = 0._dp
77 0 : ch(5) = 49._dp/2048._dp
78 0 : ch(6) = 0._dp
79 0 : ch(7) = -5._dp/2048._dp
80 : !
81 0 : cht(0) = 1._dp
82 :
83 : ! g coefficients from h coefficients
84 0 : DO i = -m, m - 1
85 0 : cg(i + 1) = cht(-i)*(-1)**(i + 1)
86 0 : cgt(i + 1) = ch(-i)*(-1)**(i + 1)
87 : END DO
88 :
89 : CASE (14)
90 : ch = (/ &
91 : 0._dp, 0._dp, 0._dp, 0.0000275373458862304687_dp, 0._dp, -0.000423073768615722656_dp, 0._dp, &
92 : 0.00310254096984863281_dp, 0._dp, -0.0146262645721435547_dp, 0._dp, &
93 : 0.0511919260025024414_dp, 0._dp, -0.153575778007507324_dp, 0._dp, 0.614303112030029297_dp, &
94 : 1._dp, 0.614303112030029297_dp, 0._dp, -0.153575778007507324_dp, 0._dp, &
95 : 0.0511919260025024414_dp, 0._dp, -0.0146262645721435547_dp, 0._dp, &
96 : 0.00310254096984863281_dp, 0._dp, -0.000423073768615722656_dp, 0._dp, &
97 : 0.0000275373458862304687_dp, 0._dp, 0._dp, 0._dp &
98 38930 : /)
99 :
100 38930 : DO i = -m, m
101 37785 : cht(i) = 0._dp
102 37785 : cg(i) = 0._dp
103 38930 : cgt(i) = 0._dp
104 : END DO
105 :
106 : ! the normalization is chosen such that a constant function remains the same constant
107 : ! on each level of the transform
108 :
109 1145 : cht(0) = 1._dp
110 :
111 : ! g coefficients from h coefficients
112 37785 : DO i = -m, m - 1
113 36640 : cg(i + 1) = cht(-i)*(-1)**(i + 1)
114 37785 : cgt(i + 1) = ch(-i)*(-1)**(i + 1)
115 : END DO
116 :
117 : CASE (16)
118 : ch = (/ &
119 : 0._dp, 0._dp, 0._dp, -6.39259815216064453e-6_dp, 0._dp, 0.000110641121864318848_dp, 0._dp, &
120 : -0.000915303826332092285_dp, 0._dp, 0.00484772026538848877_dp, 0._dp, &
121 : -0.0186983495950698853_dp, 0._dp, 0.0575909167528152466_dp, 0._dp, &
122 : -0.159974768757820129_dp, 0._dp, 0.617045536637306213_dp, 1._dp, 0.617045536637306213_dp, &
123 : 0._dp, -0.159974768757820129_dp, 0._dp, 0.0575909167528152466_dp, 0._dp, &
124 : -0.0186983495950698853_dp, 0._dp, 0.00484772026538848877_dp, 0._dp, &
125 : -0.000915303826332092285_dp, 0._dp, 0.000110641121864318848_dp, 0._dp, &
126 : -6.39259815216064453e-6_dp, 0._dp, 0._dp, 0._dp &
127 0 : /)
128 :
129 0 : DO i = -m, m
130 0 : cht(i) = 0._dp
131 0 : cg(i) = 0._dp
132 0 : cgt(i) = 0._dp
133 : END DO
134 :
135 : ! the normalization is chosen such that a constant function remains the same constant
136 : ! on each level of the transform
137 :
138 0 : cht(0) = 1._dp
139 :
140 : ! g coefficients from h coefficients
141 0 : DO i = -m, m - 1
142 0 : cg(i + 1) = cht(-i)*(-1)**(i + 1)
143 0 : cgt(i + 1) = ch(-i)*(-1)**(i + 1)
144 : END DO
145 :
146 : CASE (20)
147 : ch = (/ &
148 : 0._dp, 0._dp, 0._dp, &
149 : -3.53757059201598167e-7_dp, 0._dp, 7.51213519833981991e-6_dp, 0._dp, &
150 : -0.0000766237790230661631_dp, 0._dp, 0.000501001632073894143_dp, 0._dp, &
151 : -0.00236837135162204504_dp, 0._dp, 0.00868402828928083181_dp, 0._dp, &
152 : -0.0260520848678424954_dp, 0._dp, 0.0677354206563904881_dp, 0._dp, &
153 : -0.16933855164097622_dp, 0._dp, 0.620908022683579475_dp, 1._dp, 0.620908022683579475_dp, &
154 : 0._dp, -0.16933855164097622_dp, 0._dp, 0.0677354206563904881_dp, 0._dp, &
155 : -0.0260520848678424954_dp, 0._dp, 0.00868402828928083181_dp, 0._dp, &
156 : -0.00236837135162204504_dp, 0._dp, 0.000501001632073894143_dp, 0._dp, &
157 : -0.0000766237790230661631_dp, 0._dp, 7.51213519833981991e-6_dp, 0._dp, &
158 : -3.53757059201598167e-7_dp, &
159 0 : 0._dp, 0._dp, 0._dp/)
160 :
161 : !******** coefficients for wavelet transform *********************
162 0 : DO i = -m, m
163 0 : cht(i) = 0._dp
164 0 : cg(i) = 0._dp
165 0 : cgt(i) = 0._dp
166 : END DO
167 :
168 : ! the normalization is chosen such that a constant function remains the same constant
169 : ! on each level of the transform
170 :
171 0 : cht(0) = 1._dp
172 :
173 : ! g coefficients from h coefficients
174 0 : DO i = -m, m - 1
175 0 : cg(i + 1) = cht(-i)*(-1)**(i + 1)
176 0 : cgt(i + 1) = ch(-i)*(-1)**(i + 1)
177 : END DO
178 :
179 : CASE (24)
180 : ch = (/ &
181 : 0._dp, 0._dp, 0._dp, &
182 : -2.00495833269087598e-8_dp, 0._dp, 5.0505855142546352e-7_dp, 0._dp, &
183 : -6.14044870417274069e-6_dp, 0._dp, 0.0000480399810385279125_dp, 0._dp, &
184 : -0.000272226559218324837_dp, 0._dp, 0.00119360875964957813_dp, 0._dp, &
185 : -0.00423188560239395883_dp, 0._dp, 0.0125613112325027032_dp, 0._dp, &
186 : -0.032300514597864094_dp, 0._dp, 0.0753678673950162192_dp, 0._dp, &
187 : -0.175858357255037845_dp, 0._dp, 0.623497812086043268_dp, 1._dp, 0.623497812086043268_dp, &
188 : 0._dp, -0.175858357255037845_dp, 0._dp, 0.0753678673950162192_dp, 0._dp, &
189 : -0.032300514597864094_dp, 0._dp, 0.0125613112325027032_dp, 0._dp, &
190 : -0.00423188560239395883_dp, 0._dp, 0.00119360875964957813_dp, 0._dp, &
191 : -0.000272226559218324837_dp, 0._dp, 0.0000480399810385279125_dp, 0._dp, &
192 : -6.14044870417274069e-6_dp, 0._dp, 5.0505855142546352e-7_dp, 0._dp, &
193 : -2.00495833269087598e-8_dp, &
194 0 : 0._dp, 0._dp, 0._dp/)
195 :
196 : !******** coefficients for wavelet transform *********************
197 0 : DO i = -m, m
198 0 : cht(i) = 0._dp
199 0 : cg(i) = 0._dp
200 0 : cgt(i) = 0._dp
201 : END DO
202 :
203 : ! the normalization is chosen such that a constant function remains the same constant
204 : ! on each level of the transform
205 :
206 0 : cht(0) = 1._dp
207 :
208 : ! g coefficients from h coefficients
209 0 : DO i = -m, m - 1
210 0 : cg(i + 1) = cht(-i)*(-1)**(i + 1)
211 0 : cgt(i + 1) = ch(-i)*(-1)**(i + 1)
212 : END DO
213 :
214 : CASE (30)
215 : ch = (/ &
216 : 0._dp, 0._dp, 0._dp, &
217 : 2.78364831185484718e-10_dp, 0._dp, -8.6705490009997277e-9_dp, 0._dp, &
218 : 1.31098700895115883e-7_dp, 0._dp, -1.28248729136526407e-6_dp, 0._dp, &
219 : 9.13008809805271326e-6_dp, 0._dp, -0.000050455750015554468_dp, 0._dp, &
220 : 0.000225566882422478798_dp, 0._dp, -0.00083996810502084962_dp, 0._dp, &
221 : 0.0026652834101623113_dp, 0._dp, -0.00734972091893243418_dp, 0._dp, &
222 : 0.0179659844685015058_dp, 0._dp, -0.039898484988490357_dp, 0._dp, &
223 : 0.0837868184758297496_dp, 0._dp, -0.18261229667809048_dp, 0._dp, 0.626099302896310217_dp, &
224 : 1._dp, 0.626099302896310217_dp, 0._dp, -0.18261229667809048_dp, 0._dp, &
225 : 0.0837868184758297496_dp, 0._dp, -0.039898484988490357_dp, 0._dp, &
226 : 0.0179659844685015058_dp, 0._dp, -0.00734972091893243418_dp, 0._dp, &
227 : 0.0026652834101623113_dp, 0._dp, -0.00083996810502084962_dp, 0._dp, &
228 : 0.000225566882422478798_dp, 0._dp, -0.000050455750015554468_dp, 0._dp, &
229 : 9.13008809805271326e-6_dp, 0._dp, -1.28248729136526407e-6_dp, 0._dp, &
230 : 1.31098700895115883e-7_dp, 0._dp, -8.6705490009997277e-9_dp, 0._dp, &
231 : 2.78364831185484718e-10_dp, &
232 0 : 0._dp, 0._dp, 0._dp/)
233 :
234 : !******** coefficients for wavelet transform *********************
235 0 : DO i = -m, m
236 0 : cht(i) = 0._dp
237 0 : cg(i) = 0._dp
238 0 : cgt(i) = 0._dp
239 : END DO
240 :
241 : ! the normalization is chosen such that a constant function remains the same constant
242 : ! on each level of the transform
243 :
244 0 : cht(0) = 1._dp
245 :
246 : ! g coefficients from h coefficients
247 0 : DO i = -m, m - 1
248 0 : cg(i + 1) = cht(-i)*(-1)**(i + 1)
249 0 : cgt(i + 1) = ch(-i)*(-1)**(i + 1)
250 : END DO
251 :
252 : CASE (40)
253 : ch = (/ &
254 : 0._dp, 0._dp, 0._dp, &
255 : -2.33895335687458837e-13_dp, 0._dp, 9.61499474542229436e-12_dp, 0._dp, &
256 : -1.9312403731519637e-10_dp, 0._dp, 2.52621846791090201e-9_dp, 0._dp, &
257 : -2.42028027409528354e-8_dp, 0._dp, 1.81103730854716044e-7_dp, 0._dp, &
258 : -1.10227332483179024e-6_dp, 0._dp, 5.61214589957214346e-6_dp, 0._dp, &
259 : -0.0000244006343459658411_dp, 0._dp, 0.0000920510703104425647_dp, 0._dp, &
260 : -0.000305221969976730609_dp, 0._dp, 0.000899343879450152758_dp, 0._dp, &
261 : -0.00237826492565707063_dp, 0._dp, 0.00569939227746221067_dp, 0._dp, &
262 : -0.0125090557778066702_dp, 0._dp, 0.0254814099177543281_dp, 0._dp, &
263 : -0.0491427191270976329_dp, 0._dp, 0.0930820915230908105_dp, 0._dp, &
264 : -0.189611667917407207_dp, 0._dp, 0.628712372568244948_dp, 1._dp, 0.628712372568244948_dp, &
265 : 0._dp, -0.189611667917407207_dp, 0._dp, 0.0930820915230908105_dp, 0._dp, &
266 : -0.0491427191270976329_dp, 0._dp, 0.0254814099177543281_dp, 0._dp, &
267 : -0.0125090557778066702_dp, 0._dp, 0.00569939227746221067_dp, 0._dp, &
268 : -0.00237826492565707063_dp, 0._dp, 0.000899343879450152758_dp, 0._dp, &
269 : -0.000305221969976730609_dp, 0._dp, 0.0000920510703104425647_dp, 0._dp, &
270 : -0.0000244006343459658411_dp, 0._dp, 5.61214589957214346e-6_dp, 0._dp, &
271 : -1.10227332483179024e-6_dp, 0._dp, 1.81103730854716044e-7_dp, 0._dp, &
272 : -2.42028027409528354e-8_dp, 0._dp, 2.52621846791090201e-9_dp, 0._dp, &
273 : -1.9312403731519637e-10_dp, 0._dp, 9.61499474542229436e-12_dp, 0._dp, &
274 : -2.33895335687458837e-13_dp, &
275 3962880 : 0._dp, 0._dp, 0._dp/)
276 :
277 : !******** coefficients for wavelet transform *********************
278 3962880 : DO i = -m, m
279 3916800 : cht(i) = 0._dp
280 3916800 : cg(i) = 0._dp
281 3962880 : cgt(i) = 0._dp
282 : END DO
283 :
284 : ! the normalization is chosen such that a constant function remains the same constant
285 : ! on each level of the transform
286 :
287 46080 : cht(0) = 1._dp
288 :
289 : ! g coefficients from h coefficients
290 3916800 : DO i = -m, m - 1
291 3870720 : cg(i + 1) = cht(-i)*(-1)**(i + 1)
292 3916800 : cgt(i + 1) = ch(-i)*(-1)**(i + 1)
293 : END DO
294 :
295 : CASE (50)
296 : !******** coefficients for wavelet transform *********************
297 :
298 : ch(-m:0) = (/0._dp, 0._dp, 0._dp, &
299 : 2.03510990661269603e-16_dp, 0._dp, -1.03963806080363471e-14_dp, 0._dp, &
300 : 2.60602607241444435e-13_dp, 0._dp, -4.27267065360972853e-12_dp, 0._dp, &
301 : 5.15325765417075794e-11_dp, 0._dp, -4.87577454971540944e-10_dp, 0._dp, &
302 : 3.76884194923947865e-9_dp, 0._dp, -2.44743981275102471e-8_dp, 0._dp, &
303 : 1.36277898664545694e-7_dp, 0._dp, -6.60874540835592558e-7_dp, 0._dp, &
304 : 2.82580838150391301e-6_dp, 0._dp, -0.0000107609066649189415_dp, 0._dp, &
305 : 0.0000368023007940227798_dp, 0._dp, -0.000113853271687194218_dp, 0._dp, &
306 : 0.000320647989649649023_dp, 0._dp, -0.00082693428909646327_dp, 0._dp, &
307 : 0.00196396893660410027_dp, 0._dp, -0.00432073166052902059_dp, 0._dp, &
308 : 0.008863039303649273_dp, 0._dp, -0.0170899753079935742_dp, 0._dp, &
309 : 0.0313316213979882195_dp, 0._dp, -0.0556296135025505121_dp, 0._dp, &
310 : 0.0991218567863627306_dp, 0._dp, -0.193934067625492299_dp, 0._dp, &
311 0 : 0.630285719782849972_dp, 1._dp/)
312 : ch(1:m) = (/ &
313 : 0.630285719782849972_dp, 0._dp, -0.193934067625492299_dp, 0._dp, &
314 : 0.0991218567863627306_dp, 0._dp, -0.0556296135025505121_dp, 0._dp, &
315 : 0.0313316213979882195_dp, 0._dp, -0.0170899753079935742_dp, 0._dp, &
316 : 0.008863039303649273_dp, 0._dp, -0.00432073166052902059_dp, 0._dp, &
317 : 0.00196396893660410027_dp, 0._dp, -0.00082693428909646327_dp, 0._dp, &
318 : 0.000320647989649649023_dp, 0._dp, -0.000113853271687194218_dp, 0._dp, &
319 : 0.0000368023007940227798_dp, 0._dp, -0.0000107609066649189415_dp, 0._dp, &
320 : 2.82580838150391301e-6_dp, 0._dp, -6.60874540835592558e-7_dp, 0._dp, &
321 : 1.36277898664545694e-7_dp, 0._dp, -2.44743981275102471e-8_dp, 0._dp, &
322 : 3.76884194923947865e-9_dp, 0._dp, -4.87577454971540944e-10_dp, 0._dp, &
323 : 5.15325765417075794e-11_dp, 0._dp, -4.27267065360972853e-12_dp, 0._dp, &
324 : 2.60602607241444435e-13_dp, 0._dp, -1.03963806080363471e-14_dp, 0._dp, &
325 : 2.03510990661269603e-16_dp, &
326 0 : 0._dp, 0._dp, 0._dp/)
327 0 : DO i = -m, m
328 0 : cht(i) = 0._dp
329 0 : cg(i) = 0._dp
330 0 : cgt(i) = 0._dp
331 : END DO
332 :
333 : ! the normalization is chosen such that a constant function remains the same constant
334 : ! on each level of the transform
335 :
336 0 : cht(0) = 1._dp
337 :
338 : ! g coefficients from h coefficients
339 0 : DO i = -m, m - 1
340 0 : cg(i + 1) = cht(-i)*(-1)**(i + 1)
341 0 : cgt(i + 1) = ch(-i)*(-1)**(i + 1)
342 : END DO
343 :
344 : CASE (60)
345 : !******** coefficients for wavelet transform *********************
346 : ch(-m:0) = (/ &
347 : 0._dp, 0._dp, 0._dp, &
348 : -1.80960777804178984e-19_dp, 0._dp, 1.10513064480060885e-17_dp, 0._dp, &
349 : -3.32141991973710259e-16_dp, 0._dp, 6.54883738891560793e-15_dp, 0._dp, &
350 : -9.5279163579909433e-14_dp, 0._dp, 1.09084919935365698e-12_dp, 0._dp, &
351 : -1.02354148279779304e-11_dp, 0._dp, 8.09410105920413478e-11_dp, 0._dp, &
352 : -5.50587106934234749e-10_dp, 0._dp, 3.27218841600752522e-9_dp, 0._dp, &
353 : -1.71999647508087864e-8_dp, 0._dp, 8.07595396530604197e-8_dp, 0._dp, &
354 : -3.41497481961512632e-7_dp, 0._dp, 1.30947169656570694e-6_dp, 0._dp, &
355 : -4.58013372208926991e-6_dp, 0._dp, 0.0000146880150398035208_dp, 0._dp, &
356 : -0.0000433840444231233622_dp, 0._dp, 0.000118515001353520526_dp, 0._dp, &
357 : -0.000300581525171972349_dp, 0._dp, 0.000710396937937769235_dp, 0._dp, &
358 : -0.00157035112596770041_dp, 0._dp, 0.00325946830347917649_dp, 0._dp, &
359 : -0.00638065613347741822_dp, 0._dp, 0.0118436928230099234_dp, 0._dp, &
360 : -0.0209956372771539552_dp, 0._dp, 0.0359258682297967678_dp, 0._dp, &
361 : -0.0604028333973506096_dp, 0._dp, 0.103355959368799932_dp, 0._dp, &
362 0 : -0.196868494035809394_dp, 0._dp, 0.631336894666561161_dp, 1._dp/)
363 : ch(1:m) = (/0.631336894666561161_dp, &
364 : 0._dp, -0.196868494035809394_dp, 0._dp, 0.103355959368799932_dp, 0._dp, &
365 : -0.0604028333973506096_dp, 0._dp, 0.0359258682297967678_dp, 0._dp, &
366 : -0.0209956372771539552_dp, 0._dp, 0.0118436928230099234_dp, 0._dp, &
367 : -0.00638065613347741822_dp, 0._dp, 0.00325946830347917649_dp, 0._dp, &
368 : -0.00157035112596770041_dp, 0._dp, 0.000710396937937769235_dp, 0._dp, &
369 : -0.000300581525171972349_dp, 0._dp, 0.000118515001353520526_dp, 0._dp, &
370 : -0.0000433840444231233622_dp, 0._dp, 0.0000146880150398035208_dp, 0._dp, &
371 : -4.58013372208926991e-6_dp, 0._dp, 1.30947169656570694e-6_dp, 0._dp, &
372 : -3.41497481961512632e-7_dp, 0._dp, 8.07595396530604197e-8_dp, 0._dp, &
373 : -1.71999647508087864e-8_dp, 0._dp, 3.27218841600752522e-9_dp, 0._dp, &
374 : -5.50587106934234749e-10_dp, 0._dp, 8.09410105920413478e-11_dp, 0._dp, &
375 : -1.02354148279779304e-11_dp, 0._dp, 1.09084919935365698e-12_dp, 0._dp, &
376 : -9.5279163579909433e-14_dp, 0._dp, 6.54883738891560793e-15_dp, 0._dp, &
377 : -3.32141991973710259e-16_dp, 0._dp, 1.10513064480060885e-17_dp, 0._dp, &
378 : -1.80960777804178984e-19_dp, &
379 0 : 0._dp, 0._dp, 0._dp/)
380 :
381 0 : DO i = -m, m
382 0 : cht(i) = 0._dp
383 0 : cg(i) = 0._dp
384 0 : cgt(i) = 0._dp
385 : END DO
386 :
387 : ! the normalization is chosen such that a constant function remains the same constant
388 : ! on each level of the transform
389 :
390 0 : cht(0) = 1._dp
391 :
392 : ! g coefficients from h coefficients
393 0 : DO i = -m, m - 1
394 0 : cg(i + 1) = cht(-i)*(-1)**(i + 1)
395 0 : cgt(i + 1) = ch(-i)*(-1)**(i + 1)
396 : END DO
397 :
398 : CASE (100)
399 : !******** coefficients for wavelet transform *********************
400 : ch(-m:-m + 22) = (/ &
401 : 0._dp, 0._dp, 0._dp, &
402 : -1.2683805626484815e-31_dp, 0._dp, 1.28158741180595538e-29_dp, 0._dp, &
403 : -6.41198417717232202e-28_dp, 0._dp, 2.11779334023809847e-26_dp, 0._dp, &
404 : -5.19441179715542395e-25_dp, 0._dp, 1.00911662890805933e-23_dp, 0._dp, &
405 : -1.61729304931893186e-22_dp, 0._dp, 2.19924673311587861e-21_dp, 0._dp, &
406 0 : -2.59007672484430282e-20_dp, 0._dp, 2.68351845030850743e-19_dp, 0._dp/)
407 : ch(-m + 23:0) = (/ &
408 : -2.47631006363911635e-18_dp, 0._dp, 2.05560047903738218e-17_dp, 0._dp, &
409 : -1.54763876066192241e-16_dp, 0._dp, 1.06410357358472536e-15_dp, 0._dp, &
410 : -6.72076683598079057e-15_dp, 0._dp, 3.91882394735691508e-14_dp, 0._dp, &
411 : -2.1187969775075261e-13_dp, 0._dp, 1.06630135673478305e-12_dp, 0._dp, &
412 : -5.01180443685748998e-12_dp, 0._dp, 2.20666419683207691e-11_dp, 0._dp, &
413 : -9.1258654919835045e-11_dp, 0._dp, 3.55352205999457932e-10_dp, 0._dp, &
414 : -1.30569909741619005e-9_dp, 0._dp, 4.53620646231137398e-9_dp, 0._dp, &
415 : -1.49279735540769725e-8_dp, 0._dp, 4.66118357913015673e-8_dp, 0._dp, &
416 : -1.38309751701521672e-7_dp, 0._dp, 3.90568525175243503e-7_dp, 0._dp, &
417 : -1.05103157937523999e-6_dp, 0._dp, 2.69873794098621337e-6_dp, 0._dp, &
418 : -6.61998110310293365e-6_dp, 0._dp, 0.0000155312721433740143_dp, 0._dp, &
419 : -0.0000348898934935080536_dp, 0._dp, 0.0000751302114254144957_dp, 0._dp, &
420 : -0.000155250095336387829_dp, 0._dp, 0.000308205854288494064_dp, 0._dp, &
421 : -0.000588508297900663563_dp, 0._dp, 0.00108221904295030132_dp, 0._dp, &
422 : -0.00191926718143360074_dp, 0._dp, 0.00328782888345707184_dp, 0._dp, &
423 : -0.00545087420152093489_dp, 0._dp, 0.00876675750345045625_dp, 0._dp, &
424 : -0.0137206712673049998_dp, 0._dp, 0.0209859998811194541_dp, 0._dp, &
425 : -0.031565718829452402_dp, 0._dp, 0.0471537281279474153_dp, 0._dp, &
426 : -0.0711699126403181485_dp, 0._dp, 0.112357606764076737_dp, 0._dp, &
427 0 : -0.202867901101805219_dp, 0._dp, 0.633444670787269357_dp, 1._dp/)
428 : ch(1:80) = (/0.633444670787269357_dp, &
429 : 0._dp, -0.202867901101805219_dp, 0._dp, 0.112357606764076737_dp, 0._dp, &
430 : -0.0711699126403181485_dp, 0._dp, 0.0471537281279474153_dp, 0._dp, &
431 : -0.031565718829452402_dp, 0._dp, 0.0209859998811194541_dp, 0._dp, &
432 : -0.0137206712673049998_dp, 0._dp, 0.00876675750345045625_dp, 0._dp, &
433 : -0.00545087420152093489_dp, 0._dp, 0.00328782888345707184_dp, 0._dp, &
434 : -0.00191926718143360074_dp, 0._dp, 0.00108221904295030132_dp, 0._dp, &
435 : -0.000588508297900663563_dp, 0._dp, 0.000308205854288494064_dp, 0._dp, &
436 : -0.000155250095336387829_dp, 0._dp, 0.0000751302114254144957_dp, 0._dp, &
437 : -0.0000348898934935080536_dp, 0._dp, 0.0000155312721433740143_dp, 0._dp, &
438 : -6.61998110310293365e-6_dp, 0._dp, 2.69873794098621337e-6_dp, 0._dp, &
439 : -1.05103157937523999e-6_dp, 0._dp, 3.90568525175243503e-7_dp, 0._dp, &
440 : -1.38309751701521672e-7_dp, 0._dp, 4.66118357913015673e-8_dp, 0._dp, &
441 : -1.49279735540769725e-8_dp, 0._dp, 4.53620646231137398e-9_dp, 0._dp, &
442 : -1.30569909741619005e-9_dp, 0._dp, 3.55352205999457932e-10_dp, 0._dp, &
443 : -9.1258654919835045e-11_dp, 0._dp, 2.20666419683207691e-11_dp, 0._dp, &
444 : -5.01180443685748998e-12_dp, 0._dp, 1.06630135673478305e-12_dp, 0._dp, &
445 : -2.1187969775075261e-13_dp, 0._dp, 3.91882394735691508e-14_dp, 0._dp, &
446 : -6.72076683598079057e-15_dp, 0._dp, 1.06410357358472536e-15_dp, 0._dp, &
447 : -1.54763876066192241e-16_dp, 0._dp, 2.05560047903738218e-17_dp, 0._dp, &
448 0 : -2.47631006363911635e-18_dp, 0._dp/)
449 : ch(81:m) = (/2.68351845030850743e-19_dp, 0._dp, &
450 : -2.59007672484430282e-20_dp, 0._dp, 2.19924673311587861e-21_dp, 0._dp, &
451 : -1.61729304931893186e-22_dp, 0._dp, 1.00911662890805933e-23_dp, 0._dp, &
452 : -5.19441179715542395e-25_dp, 0._dp, 2.11779334023809847e-26_dp, 0._dp, &
453 : -6.41198417717232202e-28_dp, 0._dp, 1.28158741180595538e-29_dp, 0._dp, &
454 : -1.2683805626484815e-31_dp, &
455 0 : 0._dp, 0._dp, 0._dp/)
456 :
457 0 : DO i = -m, m
458 0 : cht(i) = 0._dp
459 0 : cg(i) = 0._dp
460 0 : cgt(i) = 0._dp
461 : END DO
462 :
463 : ! the normalization is chosen such that a constant function remains the same constant
464 : ! on each level of the transform
465 :
466 0 : cht(0) = 1._dp
467 :
468 : ! g coefficients from h coefficients
469 47225 : DO i = -m, m - 1
470 0 : cg(i + 1) = cht(-i)*(-1)**(i + 1)
471 0 : cgt(i + 1) = ch(-i)*(-1)**(i + 1)
472 : END DO
473 :
474 : END SELECT
475 :
476 47225 : END SUBROUTINE lazy_arrays
477 : END MODULE lazy
|