(git:374b731)
Loading...
Searching...
No Matches
hfx_contraction_methods.F
Go to the documentation of this file.
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 Contains routines for contraction without dgemms. PLEASE DO NOT MODIFY.
10!> \notes Contains specific routines for contraction. The compiler flag
11!> -D__MAX_CONTR defines the maximum angular momentum up to which
12!> specialized code will be used. Default setting is d-functions.
13!> Increasing -D__MAX_CONTR produces faster code but might overburden
14!> the optimization capabilities of some poor compilers.
15!> This file contains specific code up to g-functions. If you need more
16!> look at cp2k/tools/hfx_tools/contraction/
17!> \par History
18!> 07.2009 created [Manuel Guidon]
19!> \author Manuel Guidon
20! **************************************************************************************************
21
23
24!** This defines the default behaviour
25#ifndef __MAX_CONTR
26#define __MAX_CONTR 2
27#endif
28
29 USE kinds, ONLY: dp
30#include "../base/base_uses.f90"
31
32 IMPLICIT NONE
33
34 PRIVATE
35 PUBLIC :: contract
36
37CONTAINS
38
39! **************************************************************************************************
40!> \brief ...
41!> \param ncoa ...
42!> \param ncob ...
43!> \param ncoc ...
44!> \param ncod ...
45!> \param nsoa ...
46!> \param nsob ...
47!> \param nsoc ...
48!> \param nsod ...
49!> \param n_a ...
50!> \param n_b ...
51!> \param n_c ...
52!> \param n_d ...
53!> \param nl_a ...
54!> \param nl_b ...
55!> \param nl_c ...
56!> \param nl_d ...
57!> \param work ...
58!> \param sphi_a ...
59!> \param sphi_b ...
60!> \param sphi_c ...
61!> \param sphi_d ...
62!> \param primitives ...
63!> \param buffer1 ...
64!> \param buffer2 ...
65! **************************************************************************************************
66 SUBROUTINE contract(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
67 n_a, n_b, n_c, n_d, nl_a, nl_b, nl_c, nl_d, work, &
68 sphi_a, sphi_b, sphi_c, sphi_d, &
69 primitives, &
70 buffer1, buffer2)
71
72 INTEGER, INTENT(IN) :: ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
73 n_a, n_b, n_c, n_d, nl_a, nl_b, nl_c, nl_d
74 REAL(dp), DIMENSION(ncoa*ncob*ncoc*ncod), INTENT(IN) :: work
75 REAL(dp), DIMENSION(ncoa, nsoa*nl_a), INTENT(IN) :: sphi_a
76 REAL(dp), DIMENSION(ncob, nsob*nl_b), INTENT(IN) :: sphi_b
77 REAL(dp), DIMENSION(ncoc, nsoc*nl_c), INTENT(IN) :: sphi_c
78 REAL(dp), DIMENSION(ncod, nsod*nl_d), INTENT(IN) :: sphi_d
79
80 REAL(dp), DIMENSION(nsoa*nl_a, nsob*nl_b, nsoc*nl_c, nsod*nl_d) :: primitives
81 REAL(dp), DIMENSION(ncoa*ncob*ncoc*ncod) :: buffer1, buffer2
82
83#if !defined(__LIBINT)
84 mark_used(ncoa)
85 mark_used(ncob)
86 mark_used(ncoc)
87 mark_used(ncod)
88 mark_used(nsoa)
89 mark_used(nsob)
90 mark_used(nsoc)
91 mark_used(nsod)
92 mark_used(n_a)
93 mark_used(n_b)
94 mark_used(n_c)
95 mark_used(n_d)
96 mark_used(nl_a)
97 mark_used(nl_b)
98 mark_used(nl_c)
99 mark_used(nl_d)
100 mark_used(sphi_a)
101 mark_used(sphi_b)
102 mark_used(sphi_c)
103 mark_used(sphi_d)
104 mark_used(work)
105 mark_used(primitives)
106 mark_used(buffer1)
107 mark_used(buffer2)
108 cpabort("libint not compiled in")
109#else
110 SELECT CASE (n_a)
111 CASE (0)
112 SELECT CASE (n_b)
113 CASE (0)
114 SELECT CASE (n_c)
115 CASE (0)
116 SELECT CASE (n_d)
117 CASE (0)
118#if __MAX_CONTR > 0 || __MAX_CONTR == 0
119 CALL contract_ssss(work, &
120 nl_a, nl_b, nl_c, nl_d, &
121 sphi_a, sphi_b, sphi_c, sphi_d, &
122 primitives, &
123 buffer1, buffer2)
124#else
125 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
126 work, nl_a, nl_b, nl_c, nl_d, &
127 sphi_a, &
128 sphi_b, &
129 sphi_c, &
130 sphi_d, &
131 primitives, &
132 buffer1, buffer2)
133#endif
134 CASE (1)
135#if __MAX_CONTR > 1 || __MAX_CONTR == 1
136 CALL contract_sssp(work, &
137 nl_a, nl_b, nl_c, nl_d, &
138 sphi_a, sphi_b, sphi_c, sphi_d, &
139 primitives, &
140 buffer1, buffer2)
141#else
142 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
143 work, nl_a, nl_b, nl_c, nl_d, &
144 sphi_a, &
145 sphi_b, &
146 sphi_c, &
147 sphi_d, &
148 primitives, &
149 buffer1, buffer2)
150#endif
151 CASE (2)
152#if __MAX_CONTR > 2 || __MAX_CONTR == 2
153 CALL contract_sssd(work, &
154 nl_a, nl_b, nl_c, nl_d, &
155 sphi_a, sphi_b, sphi_c, sphi_d, &
156 primitives, &
157 buffer1, buffer2)
158#else
159 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
160 work, nl_a, nl_b, nl_c, nl_d, &
161 sphi_a, &
162 sphi_b, &
163 sphi_c, &
164 sphi_d, &
165 primitives, &
166 buffer1, buffer2)
167#endif
168 CASE (3)
169#if __MAX_CONTR > 3 || __MAX_CONTR == 3
170 CALL contract_sssf(work, &
171 nl_a, nl_b, nl_c, nl_d, &
172 sphi_a, sphi_b, sphi_c, sphi_d, &
173 primitives, &
174 buffer1, buffer2)
175#else
176 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
177 work, nl_a, nl_b, nl_c, nl_d, &
178 sphi_a, &
179 sphi_b, &
180 sphi_c, &
181 sphi_d, &
182 primitives, &
183 buffer1, buffer2)
184#endif
185 CASE (4)
186#if __MAX_CONTR > 4 || __MAX_CONTR == 4
187 CALL contract_sssg(work, &
188 nl_a, nl_b, nl_c, nl_d, &
189 sphi_a, sphi_b, sphi_c, sphi_d, &
190 primitives, &
191 buffer1, buffer2)
192#else
193 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
194 work, nl_a, nl_b, nl_c, nl_d, &
195 sphi_a, &
196 sphi_b, &
197 sphi_c, &
198 sphi_d, &
199 primitives, &
200 buffer1, buffer2)
201#endif
202 CASE DEFAULT
203 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
204 work, nl_a, nl_b, nl_c, nl_d, &
205 sphi_a, &
206 sphi_b, &
207 sphi_c, &
208 sphi_d, &
209 primitives, &
210 buffer1, buffer2)
211 END SELECT
212 CASE (1)
213 SELECT CASE (n_d)
214 CASE (0)
215#if __MAX_CONTR > 1 || __MAX_CONTR == 1
216 CALL contract_ssps(work, &
217 nl_a, nl_b, nl_c, nl_d, &
218 sphi_a, sphi_b, sphi_c, sphi_d, &
219 primitives, &
220 buffer1, buffer2)
221#else
222 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
223 work, nl_a, nl_b, nl_c, nl_d, &
224 sphi_a, &
225 sphi_b, &
226 sphi_c, &
227 sphi_d, &
228 primitives, &
229 buffer1, buffer2)
230#endif
231 CASE (1)
232#if __MAX_CONTR > 1 || __MAX_CONTR == 1
233 CALL contract_sspp(work, &
234 nl_a, nl_b, nl_c, nl_d, &
235 sphi_a, sphi_b, sphi_c, sphi_d, &
236 primitives, &
237 buffer1, buffer2)
238#else
239 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
240 work, nl_a, nl_b, nl_c, nl_d, &
241 sphi_a, &
242 sphi_b, &
243 sphi_c, &
244 sphi_d, &
245 primitives, &
246 buffer1, buffer2)
247#endif
248 CASE (2)
249#if __MAX_CONTR > 2 || __MAX_CONTR == 2
250 CALL contract_sspd(work, &
251 nl_a, nl_b, nl_c, nl_d, &
252 sphi_a, sphi_b, sphi_c, sphi_d, &
253 primitives, &
254 buffer1, buffer2)
255#else
256 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
257 work, nl_a, nl_b, nl_c, nl_d, &
258 sphi_a, &
259 sphi_b, &
260 sphi_c, &
261 sphi_d, &
262 primitives, &
263 buffer1, buffer2)
264#endif
265 CASE (3)
266#if __MAX_CONTR > 3 || __MAX_CONTR == 3
267 CALL contract_sspf(work, &
268 nl_a, nl_b, nl_c, nl_d, &
269 sphi_a, sphi_b, sphi_c, sphi_d, &
270 primitives, &
271 buffer1, buffer2)
272#else
273 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
274 work, nl_a, nl_b, nl_c, nl_d, &
275 sphi_a, &
276 sphi_b, &
277 sphi_c, &
278 sphi_d, &
279 primitives, &
280 buffer1, buffer2)
281#endif
282 CASE (4)
283#if __MAX_CONTR > 4 || __MAX_CONTR == 4
284 CALL contract_sspg(work, &
285 nl_a, nl_b, nl_c, nl_d, &
286 sphi_a, sphi_b, sphi_c, sphi_d, &
287 primitives, &
288 buffer1, buffer2)
289#else
290 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
291 work, nl_a, nl_b, nl_c, nl_d, &
292 sphi_a, &
293 sphi_b, &
294 sphi_c, &
295 sphi_d, &
296 primitives, &
297 buffer1, buffer2)
298#endif
299 CASE DEFAULT
300 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
301 work, nl_a, nl_b, nl_c, nl_d, &
302 sphi_a, &
303 sphi_b, &
304 sphi_c, &
305 sphi_d, &
306 primitives, &
307 buffer1, buffer2)
308 END SELECT
309 CASE (2)
310 SELECT CASE (n_d)
311 CASE (0)
312#if __MAX_CONTR > 2 || __MAX_CONTR == 2
313 CALL contract_ssds(work, &
314 nl_a, nl_b, nl_c, nl_d, &
315 sphi_a, sphi_b, sphi_c, sphi_d, &
316 primitives, &
317 buffer1, buffer2)
318#else
319 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
320 work, nl_a, nl_b, nl_c, nl_d, &
321 sphi_a, &
322 sphi_b, &
323 sphi_c, &
324 sphi_d, &
325 primitives, &
326 buffer1, buffer2)
327#endif
328 CASE (1)
329#if __MAX_CONTR > 2 || __MAX_CONTR == 2
330 CALL contract_ssdp(work, &
331 nl_a, nl_b, nl_c, nl_d, &
332 sphi_a, sphi_b, sphi_c, sphi_d, &
333 primitives, &
334 buffer1, buffer2)
335#else
336 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
337 work, nl_a, nl_b, nl_c, nl_d, &
338 sphi_a, &
339 sphi_b, &
340 sphi_c, &
341 sphi_d, &
342 primitives, &
343 buffer1, buffer2)
344#endif
345 CASE (2)
346#if __MAX_CONTR > 2 || __MAX_CONTR == 2
347 CALL contract_ssdd(work, &
348 nl_a, nl_b, nl_c, nl_d, &
349 sphi_a, sphi_b, sphi_c, sphi_d, &
350 primitives, &
351 buffer1, buffer2)
352#else
353 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
354 work, nl_a, nl_b, nl_c, nl_d, &
355 sphi_a, &
356 sphi_b, &
357 sphi_c, &
358 sphi_d, &
359 primitives, &
360 buffer1, buffer2)
361#endif
362 CASE (3)
363#if __MAX_CONTR > 3 || __MAX_CONTR == 3
364 CALL contract_ssdf(work, &
365 nl_a, nl_b, nl_c, nl_d, &
366 sphi_a, sphi_b, sphi_c, sphi_d, &
367 primitives, &
368 buffer1, buffer2)
369#else
370 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
371 work, nl_a, nl_b, nl_c, nl_d, &
372 sphi_a, &
373 sphi_b, &
374 sphi_c, &
375 sphi_d, &
376 primitives, &
377 buffer1, buffer2)
378#endif
379 CASE (4)
380#if __MAX_CONTR > 4 || __MAX_CONTR == 4
381 CALL contract_ssdg(work, &
382 nl_a, nl_b, nl_c, nl_d, &
383 sphi_a, sphi_b, sphi_c, sphi_d, &
384 primitives, &
385 buffer1, buffer2)
386#else
387 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
388 work, nl_a, nl_b, nl_c, nl_d, &
389 sphi_a, &
390 sphi_b, &
391 sphi_c, &
392 sphi_d, &
393 primitives, &
394 buffer1, buffer2)
395#endif
396 CASE DEFAULT
397 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
398 work, nl_a, nl_b, nl_c, nl_d, &
399 sphi_a, &
400 sphi_b, &
401 sphi_c, &
402 sphi_d, &
403 primitives, &
404 buffer1, buffer2)
405 END SELECT
406 CASE (3)
407 SELECT CASE (n_d)
408 CASE (0)
409#if __MAX_CONTR > 3 || __MAX_CONTR == 3
410 CALL contract_ssfs(work, &
411 nl_a, nl_b, nl_c, nl_d, &
412 sphi_a, sphi_b, sphi_c, sphi_d, &
413 primitives, &
414 buffer1, buffer2)
415#else
416 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
417 work, nl_a, nl_b, nl_c, nl_d, &
418 sphi_a, &
419 sphi_b, &
420 sphi_c, &
421 sphi_d, &
422 primitives, &
423 buffer1, buffer2)
424#endif
425 CASE (1)
426#if __MAX_CONTR > 3 || __MAX_CONTR == 3
427 CALL contract_ssfp(work, &
428 nl_a, nl_b, nl_c, nl_d, &
429 sphi_a, sphi_b, sphi_c, sphi_d, &
430 primitives, &
431 buffer1, buffer2)
432#else
433 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
434 work, nl_a, nl_b, nl_c, nl_d, &
435 sphi_a, &
436 sphi_b, &
437 sphi_c, &
438 sphi_d, &
439 primitives, &
440 buffer1, buffer2)
441#endif
442 CASE (2)
443#if __MAX_CONTR > 3 || __MAX_CONTR == 3
444 CALL contract_ssfd(work, &
445 nl_a, nl_b, nl_c, nl_d, &
446 sphi_a, sphi_b, sphi_c, sphi_d, &
447 primitives, &
448 buffer1, buffer2)
449#else
450 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
451 work, nl_a, nl_b, nl_c, nl_d, &
452 sphi_a, &
453 sphi_b, &
454 sphi_c, &
455 sphi_d, &
456 primitives, &
457 buffer1, buffer2)
458#endif
459 CASE (3)
460#if __MAX_CONTR > 3 || __MAX_CONTR == 3
461 CALL contract_ssff(work, &
462 nl_a, nl_b, nl_c, nl_d, &
463 sphi_a, sphi_b, sphi_c, sphi_d, &
464 primitives, &
465 buffer1, buffer2)
466#else
467 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
468 work, nl_a, nl_b, nl_c, nl_d, &
469 sphi_a, &
470 sphi_b, &
471 sphi_c, &
472 sphi_d, &
473 primitives, &
474 buffer1, buffer2)
475#endif
476 CASE (4)
477#if __MAX_CONTR > 4 || __MAX_CONTR == 4
478 CALL contract_ssfg(work, &
479 nl_a, nl_b, nl_c, nl_d, &
480 sphi_a, sphi_b, sphi_c, sphi_d, &
481 primitives, &
482 buffer1, buffer2)
483#else
484 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
485 work, nl_a, nl_b, nl_c, nl_d, &
486 sphi_a, &
487 sphi_b, &
488 sphi_c, &
489 sphi_d, &
490 primitives, &
491 buffer1, buffer2)
492#endif
493 CASE DEFAULT
494 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
495 work, nl_a, nl_b, nl_c, nl_d, &
496 sphi_a, &
497 sphi_b, &
498 sphi_c, &
499 sphi_d, &
500 primitives, &
501 buffer1, buffer2)
502 END SELECT
503 CASE (4)
504 SELECT CASE (n_d)
505 CASE (0)
506#if __MAX_CONTR > 4 || __MAX_CONTR == 4
507 CALL contract_ssgs(work, &
508 nl_a, nl_b, nl_c, nl_d, &
509 sphi_a, sphi_b, sphi_c, sphi_d, &
510 primitives, &
511 buffer1, buffer2)
512#else
513 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
514 work, nl_a, nl_b, nl_c, nl_d, &
515 sphi_a, &
516 sphi_b, &
517 sphi_c, &
518 sphi_d, &
519 primitives, &
520 buffer1, buffer2)
521#endif
522 CASE (1)
523#if __MAX_CONTR > 4 || __MAX_CONTR == 4
524 CALL contract_ssgp(work, &
525 nl_a, nl_b, nl_c, nl_d, &
526 sphi_a, sphi_b, sphi_c, sphi_d, &
527 primitives, &
528 buffer1, buffer2)
529#else
530 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
531 work, nl_a, nl_b, nl_c, nl_d, &
532 sphi_a, &
533 sphi_b, &
534 sphi_c, &
535 sphi_d, &
536 primitives, &
537 buffer1, buffer2)
538#endif
539 CASE (2)
540#if __MAX_CONTR > 4 || __MAX_CONTR == 4
541 CALL contract_ssgd(work, &
542 nl_a, nl_b, nl_c, nl_d, &
543 sphi_a, sphi_b, sphi_c, sphi_d, &
544 primitives, &
545 buffer1, buffer2)
546#else
547 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
548 work, nl_a, nl_b, nl_c, nl_d, &
549 sphi_a, &
550 sphi_b, &
551 sphi_c, &
552 sphi_d, &
553 primitives, &
554 buffer1, buffer2)
555#endif
556 CASE (3)
557#if __MAX_CONTR > 4 || __MAX_CONTR == 4
558 CALL contract_ssgf(work, &
559 nl_a, nl_b, nl_c, nl_d, &
560 sphi_a, sphi_b, sphi_c, sphi_d, &
561 primitives, &
562 buffer1, buffer2)
563#else
564 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
565 work, nl_a, nl_b, nl_c, nl_d, &
566 sphi_a, &
567 sphi_b, &
568 sphi_c, &
569 sphi_d, &
570 primitives, &
571 buffer1, buffer2)
572#endif
573 CASE (4)
574#if __MAX_CONTR > 4 || __MAX_CONTR == 4
575 CALL contract_ssgg(work, &
576 nl_a, nl_b, nl_c, nl_d, &
577 sphi_a, sphi_b, sphi_c, sphi_d, &
578 primitives, &
579 buffer1, buffer2)
580#else
581 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
582 work, nl_a, nl_b, nl_c, nl_d, &
583 sphi_a, &
584 sphi_b, &
585 sphi_c, &
586 sphi_d, &
587 primitives, &
588 buffer1, buffer2)
589#endif
590 CASE DEFAULT
591 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
592 work, nl_a, nl_b, nl_c, nl_d, &
593 sphi_a, &
594 sphi_b, &
595 sphi_c, &
596 sphi_d, &
597 primitives, &
598 buffer1, buffer2)
599 END SELECT
600 CASE DEFAULT
601 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
602 work, nl_a, nl_b, nl_c, nl_d, &
603 sphi_a, &
604 sphi_b, &
605 sphi_c, &
606 sphi_d, &
607 primitives, &
608 buffer1, buffer2)
609 END SELECT
610 CASE (1)
611 SELECT CASE (n_c)
612 CASE (0)
613 SELECT CASE (n_d)
614 CASE (0)
615#if __MAX_CONTR > 1 || __MAX_CONTR == 1
616 CALL contract_spss(work, &
617 nl_a, nl_b, nl_c, nl_d, &
618 sphi_a, sphi_b, sphi_c, sphi_d, &
619 primitives, &
620 buffer1, buffer2)
621#else
622 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
623 work, nl_a, nl_b, nl_c, nl_d, &
624 sphi_a, &
625 sphi_b, &
626 sphi_c, &
627 sphi_d, &
628 primitives, &
629 buffer1, buffer2)
630#endif
631 CASE (1)
632#if __MAX_CONTR > 1 || __MAX_CONTR == 1
633 CALL contract_spsp(work, &
634 nl_a, nl_b, nl_c, nl_d, &
635 sphi_a, sphi_b, sphi_c, sphi_d, &
636 primitives, &
637 buffer1, buffer2)
638#else
639 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
640 work, nl_a, nl_b, nl_c, nl_d, &
641 sphi_a, &
642 sphi_b, &
643 sphi_c, &
644 sphi_d, &
645 primitives, &
646 buffer1, buffer2)
647#endif
648 CASE (2)
649#if __MAX_CONTR > 2 || __MAX_CONTR == 2
650 CALL contract_spsd(work, &
651 nl_a, nl_b, nl_c, nl_d, &
652 sphi_a, sphi_b, sphi_c, sphi_d, &
653 primitives, &
654 buffer1, buffer2)
655#else
656 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
657 work, nl_a, nl_b, nl_c, nl_d, &
658 sphi_a, &
659 sphi_b, &
660 sphi_c, &
661 sphi_d, &
662 primitives, &
663 buffer1, buffer2)
664#endif
665 CASE (3)
666#if __MAX_CONTR > 3 || __MAX_CONTR == 3
667 CALL contract_spsf(work, &
668 nl_a, nl_b, nl_c, nl_d, &
669 sphi_a, sphi_b, sphi_c, sphi_d, &
670 primitives, &
671 buffer1, buffer2)
672#else
673 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
674 work, nl_a, nl_b, nl_c, nl_d, &
675 sphi_a, &
676 sphi_b, &
677 sphi_c, &
678 sphi_d, &
679 primitives, &
680 buffer1, buffer2)
681#endif
682 CASE (4)
683#if __MAX_CONTR > 4 || __MAX_CONTR == 4
684 CALL contract_spsg(work, &
685 nl_a, nl_b, nl_c, nl_d, &
686 sphi_a, sphi_b, sphi_c, sphi_d, &
687 primitives, &
688 buffer1, buffer2)
689#else
690 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
691 work, nl_a, nl_b, nl_c, nl_d, &
692 sphi_a, &
693 sphi_b, &
694 sphi_c, &
695 sphi_d, &
696 primitives, &
697 buffer1, buffer2)
698#endif
699 CASE DEFAULT
700 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
701 work, nl_a, nl_b, nl_c, nl_d, &
702 sphi_a, &
703 sphi_b, &
704 sphi_c, &
705 sphi_d, &
706 primitives, &
707 buffer1, buffer2)
708 END SELECT
709 CASE (1)
710 SELECT CASE (n_d)
711 CASE (0)
712#if __MAX_CONTR > 1 || __MAX_CONTR == 1
713 CALL contract_spps(work, &
714 nl_a, nl_b, nl_c, nl_d, &
715 sphi_a, sphi_b, sphi_c, sphi_d, &
716 primitives, &
717 buffer1, buffer2)
718#else
719 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
720 work, nl_a, nl_b, nl_c, nl_d, &
721 sphi_a, &
722 sphi_b, &
723 sphi_c, &
724 sphi_d, &
725 primitives, &
726 buffer1, buffer2)
727#endif
728 CASE (1)
729#if __MAX_CONTR > 1 || __MAX_CONTR == 1
730 CALL contract_sppp(work, &
731 nl_a, nl_b, nl_c, nl_d, &
732 sphi_a, sphi_b, sphi_c, sphi_d, &
733 primitives, &
734 buffer1, buffer2)
735#else
736 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
737 work, nl_a, nl_b, nl_c, nl_d, &
738 sphi_a, &
739 sphi_b, &
740 sphi_c, &
741 sphi_d, &
742 primitives, &
743 buffer1, buffer2)
744#endif
745 CASE (2)
746#if __MAX_CONTR > 2 || __MAX_CONTR == 2
747 CALL contract_sppd(work, &
748 nl_a, nl_b, nl_c, nl_d, &
749 sphi_a, sphi_b, sphi_c, sphi_d, &
750 primitives, &
751 buffer1, buffer2)
752#else
753 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
754 work, nl_a, nl_b, nl_c, nl_d, &
755 sphi_a, &
756 sphi_b, &
757 sphi_c, &
758 sphi_d, &
759 primitives, &
760 buffer1, buffer2)
761#endif
762 CASE (3)
763#if __MAX_CONTR > 3 || __MAX_CONTR == 3
764 CALL contract_sppf(work, &
765 nl_a, nl_b, nl_c, nl_d, &
766 sphi_a, sphi_b, sphi_c, sphi_d, &
767 primitives, &
768 buffer1, buffer2)
769#else
770 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
771 work, nl_a, nl_b, nl_c, nl_d, &
772 sphi_a, &
773 sphi_b, &
774 sphi_c, &
775 sphi_d, &
776 primitives, &
777 buffer1, buffer2)
778#endif
779 CASE (4)
780#if __MAX_CONTR > 4 || __MAX_CONTR == 4
781 CALL contract_sppg(work, &
782 nl_a, nl_b, nl_c, nl_d, &
783 sphi_a, sphi_b, sphi_c, sphi_d, &
784 primitives, &
785 buffer1, buffer2)
786#else
787 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
788 work, nl_a, nl_b, nl_c, nl_d, &
789 sphi_a, &
790 sphi_b, &
791 sphi_c, &
792 sphi_d, &
793 primitives, &
794 buffer1, buffer2)
795#endif
796 CASE DEFAULT
797 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
798 work, nl_a, nl_b, nl_c, nl_d, &
799 sphi_a, &
800 sphi_b, &
801 sphi_c, &
802 sphi_d, &
803 primitives, &
804 buffer1, buffer2)
805 END SELECT
806 CASE (2)
807 SELECT CASE (n_d)
808 CASE (0)
809#if __MAX_CONTR > 2 || __MAX_CONTR == 2
810 CALL contract_spds(work, &
811 nl_a, nl_b, nl_c, nl_d, &
812 sphi_a, sphi_b, sphi_c, sphi_d, &
813 primitives, &
814 buffer1, buffer2)
815#else
816 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
817 work, nl_a, nl_b, nl_c, nl_d, &
818 sphi_a, &
819 sphi_b, &
820 sphi_c, &
821 sphi_d, &
822 primitives, &
823 buffer1, buffer2)
824#endif
825 CASE (1)
826#if __MAX_CONTR > 2 || __MAX_CONTR == 2
827 CALL contract_spdp(work, &
828 nl_a, nl_b, nl_c, nl_d, &
829 sphi_a, sphi_b, sphi_c, sphi_d, &
830 primitives, &
831 buffer1, buffer2)
832#else
833 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
834 work, nl_a, nl_b, nl_c, nl_d, &
835 sphi_a, &
836 sphi_b, &
837 sphi_c, &
838 sphi_d, &
839 primitives, &
840 buffer1, buffer2)
841#endif
842 CASE (2)
843#if __MAX_CONTR > 2 || __MAX_CONTR == 2
844 CALL contract_spdd(work, &
845 nl_a, nl_b, nl_c, nl_d, &
846 sphi_a, sphi_b, sphi_c, sphi_d, &
847 primitives, &
848 buffer1, buffer2)
849#else
850 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
851 work, nl_a, nl_b, nl_c, nl_d, &
852 sphi_a, &
853 sphi_b, &
854 sphi_c, &
855 sphi_d, &
856 primitives, &
857 buffer1, buffer2)
858#endif
859 CASE (3)
860#if __MAX_CONTR > 3 || __MAX_CONTR == 3
861 CALL contract_spdf(work, &
862 nl_a, nl_b, nl_c, nl_d, &
863 sphi_a, sphi_b, sphi_c, sphi_d, &
864 primitives, &
865 buffer1, buffer2)
866#else
867 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
868 work, nl_a, nl_b, nl_c, nl_d, &
869 sphi_a, &
870 sphi_b, &
871 sphi_c, &
872 sphi_d, &
873 primitives, &
874 buffer1, buffer2)
875#endif
876 CASE (4)
877#if __MAX_CONTR > 4 || __MAX_CONTR == 4
878 CALL contract_spdg(work, &
879 nl_a, nl_b, nl_c, nl_d, &
880 sphi_a, sphi_b, sphi_c, sphi_d, &
881 primitives, &
882 buffer1, buffer2)
883#else
884 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
885 work, nl_a, nl_b, nl_c, nl_d, &
886 sphi_a, &
887 sphi_b, &
888 sphi_c, &
889 sphi_d, &
890 primitives, &
891 buffer1, buffer2)
892#endif
893 CASE DEFAULT
894 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
895 work, nl_a, nl_b, nl_c, nl_d, &
896 sphi_a, &
897 sphi_b, &
898 sphi_c, &
899 sphi_d, &
900 primitives, &
901 buffer1, buffer2)
902 END SELECT
903 CASE (3)
904 SELECT CASE (n_d)
905 CASE (0)
906#if __MAX_CONTR > 3 || __MAX_CONTR == 3
907 CALL contract_spfs(work, &
908 nl_a, nl_b, nl_c, nl_d, &
909 sphi_a, sphi_b, sphi_c, sphi_d, &
910 primitives, &
911 buffer1, buffer2)
912#else
913 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
914 work, nl_a, nl_b, nl_c, nl_d, &
915 sphi_a, &
916 sphi_b, &
917 sphi_c, &
918 sphi_d, &
919 primitives, &
920 buffer1, buffer2)
921#endif
922 CASE (1)
923#if __MAX_CONTR > 3 || __MAX_CONTR == 3
924 CALL contract_spfp(work, &
925 nl_a, nl_b, nl_c, nl_d, &
926 sphi_a, sphi_b, sphi_c, sphi_d, &
927 primitives, &
928 buffer1, buffer2)
929#else
930 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
931 work, nl_a, nl_b, nl_c, nl_d, &
932 sphi_a, &
933 sphi_b, &
934 sphi_c, &
935 sphi_d, &
936 primitives, &
937 buffer1, buffer2)
938#endif
939 CASE (2)
940#if __MAX_CONTR > 3 || __MAX_CONTR == 3
941 CALL contract_spfd(work, &
942 nl_a, nl_b, nl_c, nl_d, &
943 sphi_a, sphi_b, sphi_c, sphi_d, &
944 primitives, &
945 buffer1, buffer2)
946#else
947 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
948 work, nl_a, nl_b, nl_c, nl_d, &
949 sphi_a, &
950 sphi_b, &
951 sphi_c, &
952 sphi_d, &
953 primitives, &
954 buffer1, buffer2)
955#endif
956 CASE (3)
957#if __MAX_CONTR > 3 || __MAX_CONTR == 3
958 CALL contract_spff(work, &
959 nl_a, nl_b, nl_c, nl_d, &
960 sphi_a, sphi_b, sphi_c, sphi_d, &
961 primitives, &
962 buffer1, buffer2)
963#else
964 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
965 work, nl_a, nl_b, nl_c, nl_d, &
966 sphi_a, &
967 sphi_b, &
968 sphi_c, &
969 sphi_d, &
970 primitives, &
971 buffer1, buffer2)
972#endif
973 CASE (4)
974#if __MAX_CONTR > 4 || __MAX_CONTR == 4
975 CALL contract_spfg(work, &
976 nl_a, nl_b, nl_c, nl_d, &
977 sphi_a, sphi_b, sphi_c, sphi_d, &
978 primitives, &
979 buffer1, buffer2)
980#else
981 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
982 work, nl_a, nl_b, nl_c, nl_d, &
983 sphi_a, &
984 sphi_b, &
985 sphi_c, &
986 sphi_d, &
987 primitives, &
988 buffer1, buffer2)
989#endif
990 CASE DEFAULT
991 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
992 work, nl_a, nl_b, nl_c, nl_d, &
993 sphi_a, &
994 sphi_b, &
995 sphi_c, &
996 sphi_d, &
997 primitives, &
998 buffer1, buffer2)
999 END SELECT
1000 CASE (4)
1001 SELECT CASE (n_d)
1002 CASE (0)
1003#if __MAX_CONTR > 4 || __MAX_CONTR == 4
1004 CALL contract_spgs(work, &
1005 nl_a, nl_b, nl_c, nl_d, &
1006 sphi_a, sphi_b, sphi_c, sphi_d, &
1007 primitives, &
1008 buffer1, buffer2)
1009#else
1010 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
1011 work, nl_a, nl_b, nl_c, nl_d, &
1012 sphi_a, &
1013 sphi_b, &
1014 sphi_c, &
1015 sphi_d, &
1016 primitives, &
1017 buffer1, buffer2)
1018#endif
1019 CASE (1)
1020#if __MAX_CONTR > 4 || __MAX_CONTR == 4
1021 CALL contract_spgp(work, &
1022 nl_a, nl_b, nl_c, nl_d, &
1023 sphi_a, sphi_b, sphi_c, sphi_d, &
1024 primitives, &
1025 buffer1, buffer2)
1026#else
1027 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
1028 work, nl_a, nl_b, nl_c, nl_d, &
1029 sphi_a, &
1030 sphi_b, &
1031 sphi_c, &
1032 sphi_d, &
1033 primitives, &
1034 buffer1, buffer2)
1035#endif
1036 CASE (2)
1037#if __MAX_CONTR > 4 || __MAX_CONTR == 4
1038 CALL contract_spgd(work, &
1039 nl_a, nl_b, nl_c, nl_d, &
1040 sphi_a, sphi_b, sphi_c, sphi_d, &
1041 primitives, &
1042 buffer1, buffer2)
1043#else
1044 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
1045 work, nl_a, nl_b, nl_c, nl_d, &
1046 sphi_a, &
1047 sphi_b, &
1048 sphi_c, &
1049 sphi_d, &
1050 primitives, &
1051 buffer1, buffer2)
1052#endif
1053 CASE (3)
1054#if __MAX_CONTR > 4 || __MAX_CONTR == 4
1055 CALL contract_spgf(work, &
1056 nl_a, nl_b, nl_c, nl_d, &
1057 sphi_a, sphi_b, sphi_c, sphi_d, &
1058 primitives, &
1059 buffer1, buffer2)
1060#else
1061 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
1062 work, nl_a, nl_b, nl_c, nl_d, &
1063 sphi_a, &
1064 sphi_b, &
1065 sphi_c, &
1066 sphi_d, &
1067 primitives, &
1068 buffer1, buffer2)
1069#endif
1070 CASE (4)
1071#if __MAX_CONTR > 4 || __MAX_CONTR == 4
1072 CALL contract_spgg(work, &
1073 nl_a, nl_b, nl_c, nl_d, &
1074 sphi_a, sphi_b, sphi_c, sphi_d, &
1075 primitives, &
1076 buffer1, buffer2)
1077#else
1078 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
1079 work, nl_a, nl_b, nl_c, nl_d, &
1080 sphi_a, &
1081 sphi_b, &
1082 sphi_c, &
1083 sphi_d, &
1084 primitives, &
1085 buffer1, buffer2)
1086#endif
1087 CASE DEFAULT
1088 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
1089 work, nl_a, nl_b, nl_c, nl_d, &
1090 sphi_a, &
1091 sphi_b, &
1092 sphi_c, &
1093 sphi_d, &
1094 primitives, &
1095 buffer1, buffer2)
1096 END SELECT
1097 CASE DEFAULT
1098 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
1099 work, nl_a, nl_b, nl_c, nl_d, &
1100 sphi_a, &
1101 sphi_b, &
1102 sphi_c, &
1103 sphi_d, &
1104 primitives, &
1105 buffer1, buffer2)
1106 END SELECT
1107 CASE (2)
1108 SELECT CASE (n_c)
1109 CASE (0)
1110 SELECT CASE (n_d)
1111 CASE (0)
1112#if __MAX_CONTR > 2 || __MAX_CONTR == 2
1113 CALL contract_sdss(work, &
1114 nl_a, nl_b, nl_c, nl_d, &
1115 sphi_a, sphi_b, sphi_c, sphi_d, &
1116 primitives, &
1117 buffer1, buffer2)
1118#else
1119 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
1120 work, nl_a, nl_b, nl_c, nl_d, &
1121 sphi_a, &
1122 sphi_b, &
1123 sphi_c, &
1124 sphi_d, &
1125 primitives, &
1126 buffer1, buffer2)
1127#endif
1128 CASE (1)
1129#if __MAX_CONTR > 2 || __MAX_CONTR == 2
1130 CALL contract_sdsp(work, &
1131 nl_a, nl_b, nl_c, nl_d, &
1132 sphi_a, sphi_b, sphi_c, sphi_d, &
1133 primitives, &
1134 buffer1, buffer2)
1135#else
1136 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
1137 work, nl_a, nl_b, nl_c, nl_d, &
1138 sphi_a, &
1139 sphi_b, &
1140 sphi_c, &
1141 sphi_d, &
1142 primitives, &
1143 buffer1, buffer2)
1144#endif
1145 CASE (2)
1146#if __MAX_CONTR > 2 || __MAX_CONTR == 2
1147 CALL contract_sdsd(work, &
1148 nl_a, nl_b, nl_c, nl_d, &
1149 sphi_a, sphi_b, sphi_c, sphi_d, &
1150 primitives, &
1151 buffer1, buffer2)
1152#else
1153 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
1154 work, nl_a, nl_b, nl_c, nl_d, &
1155 sphi_a, &
1156 sphi_b, &
1157 sphi_c, &
1158 sphi_d, &
1159 primitives, &
1160 buffer1, buffer2)
1161#endif
1162 CASE (3)
1163#if __MAX_CONTR > 3 || __MAX_CONTR == 3
1164 CALL contract_sdsf(work, &
1165 nl_a, nl_b, nl_c, nl_d, &
1166 sphi_a, sphi_b, sphi_c, sphi_d, &
1167 primitives, &
1168 buffer1, buffer2)
1169#else
1170 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
1171 work, nl_a, nl_b, nl_c, nl_d, &
1172 sphi_a, &
1173 sphi_b, &
1174 sphi_c, &
1175 sphi_d, &
1176 primitives, &
1177 buffer1, buffer2)
1178#endif
1179 CASE (4)
1180#if __MAX_CONTR > 4 || __MAX_CONTR == 4
1181 CALL contract_sdsg(work, &
1182 nl_a, nl_b, nl_c, nl_d, &
1183 sphi_a, sphi_b, sphi_c, sphi_d, &
1184 primitives, &
1185 buffer1, buffer2)
1186#else
1187 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
1188 work, nl_a, nl_b, nl_c, nl_d, &
1189 sphi_a, &
1190 sphi_b, &
1191 sphi_c, &
1192 sphi_d, &
1193 primitives, &
1194 buffer1, buffer2)
1195#endif
1196 CASE DEFAULT
1197 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
1198 work, nl_a, nl_b, nl_c, nl_d, &
1199 sphi_a, &
1200 sphi_b, &
1201 sphi_c, &
1202 sphi_d, &
1203 primitives, &
1204 buffer1, buffer2)
1205 END SELECT
1206 CASE (1)
1207 SELECT CASE (n_d)
1208 CASE (0)
1209#if __MAX_CONTR > 2 || __MAX_CONTR == 2
1210 CALL contract_sdps(work, &
1211 nl_a, nl_b, nl_c, nl_d, &
1212 sphi_a, sphi_b, sphi_c, sphi_d, &
1213 primitives, &
1214 buffer1, buffer2)
1215#else
1216 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
1217 work, nl_a, nl_b, nl_c, nl_d, &
1218 sphi_a, &
1219 sphi_b, &
1220 sphi_c, &
1221 sphi_d, &
1222 primitives, &
1223 buffer1, buffer2)
1224#endif
1225 CASE (1)
1226#if __MAX_CONTR > 2 || __MAX_CONTR == 2
1227 CALL contract_sdpp(work, &
1228 nl_a, nl_b, nl_c, nl_d, &
1229 sphi_a, sphi_b, sphi_c, sphi_d, &
1230 primitives, &
1231 buffer1, buffer2)
1232#else
1233 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
1234 work, nl_a, nl_b, nl_c, nl_d, &
1235 sphi_a, &
1236 sphi_b, &
1237 sphi_c, &
1238 sphi_d, &
1239 primitives, &
1240 buffer1, buffer2)
1241#endif
1242 CASE (2)
1243#if __MAX_CONTR > 2 || __MAX_CONTR == 2
1244 CALL contract_sdpd(work, &
1245 nl_a, nl_b, nl_c, nl_d, &
1246 sphi_a, sphi_b, sphi_c, sphi_d, &
1247 primitives, &
1248 buffer1, buffer2)
1249#else
1250 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
1251 work, nl_a, nl_b, nl_c, nl_d, &
1252 sphi_a, &
1253 sphi_b, &
1254 sphi_c, &
1255 sphi_d, &
1256 primitives, &
1257 buffer1, buffer2)
1258#endif
1259 CASE (3)
1260#if __MAX_CONTR > 3 || __MAX_CONTR == 3
1261 CALL contract_sdpf(work, &
1262 nl_a, nl_b, nl_c, nl_d, &
1263 sphi_a, sphi_b, sphi_c, sphi_d, &
1264 primitives, &
1265 buffer1, buffer2)
1266#else
1267 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
1268 work, nl_a, nl_b, nl_c, nl_d, &
1269 sphi_a, &
1270 sphi_b, &
1271 sphi_c, &
1272 sphi_d, &
1273 primitives, &
1274 buffer1, buffer2)
1275#endif
1276 CASE (4)
1277#if __MAX_CONTR > 4 || __MAX_CONTR == 4
1278 CALL contract_sdpg(work, &
1279 nl_a, nl_b, nl_c, nl_d, &
1280 sphi_a, sphi_b, sphi_c, sphi_d, &
1281 primitives, &
1282 buffer1, buffer2)
1283#else
1284 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
1285 work, nl_a, nl_b, nl_c, nl_d, &
1286 sphi_a, &
1287 sphi_b, &
1288 sphi_c, &
1289 sphi_d, &
1290 primitives, &
1291 buffer1, buffer2)
1292#endif
1293 CASE DEFAULT
1294 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
1295 work, nl_a, nl_b, nl_c, nl_d, &
1296 sphi_a, &
1297 sphi_b, &
1298 sphi_c, &
1299 sphi_d, &
1300 primitives, &
1301 buffer1, buffer2)
1302 END SELECT
1303 CASE (2)
1304 SELECT CASE (n_d)
1305 CASE (0)
1306#if __MAX_CONTR > 2 || __MAX_CONTR == 2
1307 CALL contract_sdds(work, &
1308 nl_a, nl_b, nl_c, nl_d, &
1309 sphi_a, sphi_b, sphi_c, sphi_d, &
1310 primitives, &
1311 buffer1, buffer2)
1312#else
1313 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
1314 work, nl_a, nl_b, nl_c, nl_d, &
1315 sphi_a, &
1316 sphi_b, &
1317 sphi_c, &
1318 sphi_d, &
1319 primitives, &
1320 buffer1, buffer2)
1321#endif
1322 CASE (1)
1323#if __MAX_CONTR > 2 || __MAX_CONTR == 2
1324 CALL contract_sddp(work, &
1325 nl_a, nl_b, nl_c, nl_d, &
1326 sphi_a, sphi_b, sphi_c, sphi_d, &
1327 primitives, &
1328 buffer1, buffer2)
1329#else
1330 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
1331 work, nl_a, nl_b, nl_c, nl_d, &
1332 sphi_a, &
1333 sphi_b, &
1334 sphi_c, &
1335 sphi_d, &
1336 primitives, &
1337 buffer1, buffer2)
1338#endif
1339 CASE (2)
1340#if __MAX_CONTR > 2 || __MAX_CONTR == 2
1341 CALL contract_sddd(work, &
1342 nl_a, nl_b, nl_c, nl_d, &
1343 sphi_a, sphi_b, sphi_c, sphi_d, &
1344 primitives, &
1345 buffer1, buffer2)
1346#else
1347 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
1348 work, nl_a, nl_b, nl_c, nl_d, &
1349 sphi_a, &
1350 sphi_b, &
1351 sphi_c, &
1352 sphi_d, &
1353 primitives, &
1354 buffer1, buffer2)
1355#endif
1356 CASE (3)
1357#if __MAX_CONTR > 3 || __MAX_CONTR == 3
1358 CALL contract_sddf(work, &
1359 nl_a, nl_b, nl_c, nl_d, &
1360 sphi_a, sphi_b, sphi_c, sphi_d, &
1361 primitives, &
1362 buffer1, buffer2)
1363#else
1364 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
1365 work, nl_a, nl_b, nl_c, nl_d, &
1366 sphi_a, &
1367 sphi_b, &
1368 sphi_c, &
1369 sphi_d, &
1370 primitives, &
1371 buffer1, buffer2)
1372#endif
1373 CASE (4)
1374#if __MAX_CONTR > 4 || __MAX_CONTR == 4
1375 CALL contract_sddg(work, &
1376 nl_a, nl_b, nl_c, nl_d, &
1377 sphi_a, sphi_b, sphi_c, sphi_d, &
1378 primitives, &
1379 buffer1, buffer2)
1380#else
1381 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
1382 work, nl_a, nl_b, nl_c, nl_d, &
1383 sphi_a, &
1384 sphi_b, &
1385 sphi_c, &
1386 sphi_d, &
1387 primitives, &
1388 buffer1, buffer2)
1389#endif
1390 CASE DEFAULT
1391 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
1392 work, nl_a, nl_b, nl_c, nl_d, &
1393 sphi_a, &
1394 sphi_b, &
1395 sphi_c, &
1396 sphi_d, &
1397 primitives, &
1398 buffer1, buffer2)
1399 END SELECT
1400 CASE (3)
1401 SELECT CASE (n_d)
1402 CASE (0)
1403#if __MAX_CONTR > 3 || __MAX_CONTR == 3
1404 CALL contract_sdfs(work, &
1405 nl_a, nl_b, nl_c, nl_d, &
1406 sphi_a, sphi_b, sphi_c, sphi_d, &
1407 primitives, &
1408 buffer1, buffer2)
1409#else
1410 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
1411 work, nl_a, nl_b, nl_c, nl_d, &
1412 sphi_a, &
1413 sphi_b, &
1414 sphi_c, &
1415 sphi_d, &
1416 primitives, &
1417 buffer1, buffer2)
1418#endif
1419 CASE (1)
1420#if __MAX_CONTR > 3 || __MAX_CONTR == 3
1421 CALL contract_sdfp(work, &
1422 nl_a, nl_b, nl_c, nl_d, &
1423 sphi_a, sphi_b, sphi_c, sphi_d, &
1424 primitives, &
1425 buffer1, buffer2)
1426#else
1427 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
1428 work, nl_a, nl_b, nl_c, nl_d, &
1429 sphi_a, &
1430 sphi_b, &
1431 sphi_c, &
1432 sphi_d, &
1433 primitives, &
1434 buffer1, buffer2)
1435#endif
1436 CASE (2)
1437#if __MAX_CONTR > 3 || __MAX_CONTR == 3
1438 CALL contract_sdfd(work, &
1439 nl_a, nl_b, nl_c, nl_d, &
1440 sphi_a, sphi_b, sphi_c, sphi_d, &
1441 primitives, &
1442 buffer1, buffer2)
1443#else
1444 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
1445 work, nl_a, nl_b, nl_c, nl_d, &
1446 sphi_a, &
1447 sphi_b, &
1448 sphi_c, &
1449 sphi_d, &
1450 primitives, &
1451 buffer1, buffer2)
1452#endif
1453 CASE (3)
1454#if __MAX_CONTR > 3 || __MAX_CONTR == 3
1455 CALL contract_sdff(work, &
1456 nl_a, nl_b, nl_c, nl_d, &
1457 sphi_a, sphi_b, sphi_c, sphi_d, &
1458 primitives, &
1459 buffer1, buffer2)
1460#else
1461 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
1462 work, nl_a, nl_b, nl_c, nl_d, &
1463 sphi_a, &
1464 sphi_b, &
1465 sphi_c, &
1466 sphi_d, &
1467 primitives, &
1468 buffer1, buffer2)
1469#endif
1470 CASE (4)
1471#if __MAX_CONTR > 4 || __MAX_CONTR == 4
1472 CALL contract_sdfg(work, &
1473 nl_a, nl_b, nl_c, nl_d, &
1474 sphi_a, sphi_b, sphi_c, sphi_d, &
1475 primitives, &
1476 buffer1, buffer2)
1477#else
1478 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
1479 work, nl_a, nl_b, nl_c, nl_d, &
1480 sphi_a, &
1481 sphi_b, &
1482 sphi_c, &
1483 sphi_d, &
1484 primitives, &
1485 buffer1, buffer2)
1486#endif
1487 CASE DEFAULT
1488 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
1489 work, nl_a, nl_b, nl_c, nl_d, &
1490 sphi_a, &
1491 sphi_b, &
1492 sphi_c, &
1493 sphi_d, &
1494 primitives, &
1495 buffer1, buffer2)
1496 END SELECT
1497 CASE (4)
1498 SELECT CASE (n_d)
1499 CASE (0)
1500#if __MAX_CONTR > 4 || __MAX_CONTR == 4
1501 CALL contract_sdgs(work, &
1502 nl_a, nl_b, nl_c, nl_d, &
1503 sphi_a, sphi_b, sphi_c, sphi_d, &
1504 primitives, &
1505 buffer1, buffer2)
1506#else
1507 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
1508 work, nl_a, nl_b, nl_c, nl_d, &
1509 sphi_a, &
1510 sphi_b, &
1511 sphi_c, &
1512 sphi_d, &
1513 primitives, &
1514 buffer1, buffer2)
1515#endif
1516 CASE (1)
1517#if __MAX_CONTR > 4 || __MAX_CONTR == 4
1518 CALL contract_sdgp(work, &
1519 nl_a, nl_b, nl_c, nl_d, &
1520 sphi_a, sphi_b, sphi_c, sphi_d, &
1521 primitives, &
1522 buffer1, buffer2)
1523#else
1524 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
1525 work, nl_a, nl_b, nl_c, nl_d, &
1526 sphi_a, &
1527 sphi_b, &
1528 sphi_c, &
1529 sphi_d, &
1530 primitives, &
1531 buffer1, buffer2)
1532#endif
1533 CASE (2)
1534#if __MAX_CONTR > 4 || __MAX_CONTR == 4
1535 CALL contract_sdgd(work, &
1536 nl_a, nl_b, nl_c, nl_d, &
1537 sphi_a, sphi_b, sphi_c, sphi_d, &
1538 primitives, &
1539 buffer1, buffer2)
1540#else
1541 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
1542 work, nl_a, nl_b, nl_c, nl_d, &
1543 sphi_a, &
1544 sphi_b, &
1545 sphi_c, &
1546 sphi_d, &
1547 primitives, &
1548 buffer1, buffer2)
1549#endif
1550 CASE (3)
1551#if __MAX_CONTR > 4 || __MAX_CONTR == 4
1552 CALL contract_sdgf(work, &
1553 nl_a, nl_b, nl_c, nl_d, &
1554 sphi_a, sphi_b, sphi_c, sphi_d, &
1555 primitives, &
1556 buffer1, buffer2)
1557#else
1558 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
1559 work, nl_a, nl_b, nl_c, nl_d, &
1560 sphi_a, &
1561 sphi_b, &
1562 sphi_c, &
1563 sphi_d, &
1564 primitives, &
1565 buffer1, buffer2)
1566#endif
1567 CASE (4)
1568#if __MAX_CONTR > 4 || __MAX_CONTR == 4
1569 CALL contract_sdgg(work, &
1570 nl_a, nl_b, nl_c, nl_d, &
1571 sphi_a, sphi_b, sphi_c, sphi_d, &
1572 primitives, &
1573 buffer1, buffer2)
1574#else
1575 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
1576 work, nl_a, nl_b, nl_c, nl_d, &
1577 sphi_a, &
1578 sphi_b, &
1579 sphi_c, &
1580 sphi_d, &
1581 primitives, &
1582 buffer1, buffer2)
1583#endif
1584 CASE DEFAULT
1585 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
1586 work, nl_a, nl_b, nl_c, nl_d, &
1587 sphi_a, &
1588 sphi_b, &
1589 sphi_c, &
1590 sphi_d, &
1591 primitives, &
1592 buffer1, buffer2)
1593 END SELECT
1594 CASE DEFAULT
1595 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
1596 work, nl_a, nl_b, nl_c, nl_d, &
1597 sphi_a, &
1598 sphi_b, &
1599 sphi_c, &
1600 sphi_d, &
1601 primitives, &
1602 buffer1, buffer2)
1603 END SELECT
1604 CASE (3)
1605 SELECT CASE (n_c)
1606 CASE (0)
1607 SELECT CASE (n_d)
1608 CASE (0)
1609#if __MAX_CONTR > 3 || __MAX_CONTR == 3
1610 CALL contract_sfss(work, &
1611 nl_a, nl_b, nl_c, nl_d, &
1612 sphi_a, sphi_b, sphi_c, sphi_d, &
1613 primitives, &
1614 buffer1, buffer2)
1615#else
1616 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
1617 work, nl_a, nl_b, nl_c, nl_d, &
1618 sphi_a, &
1619 sphi_b, &
1620 sphi_c, &
1621 sphi_d, &
1622 primitives, &
1623 buffer1, buffer2)
1624#endif
1625 CASE (1)
1626#if __MAX_CONTR > 3 || __MAX_CONTR == 3
1627 CALL contract_sfsp(work, &
1628 nl_a, nl_b, nl_c, nl_d, &
1629 sphi_a, sphi_b, sphi_c, sphi_d, &
1630 primitives, &
1631 buffer1, buffer2)
1632#else
1633 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
1634 work, nl_a, nl_b, nl_c, nl_d, &
1635 sphi_a, &
1636 sphi_b, &
1637 sphi_c, &
1638 sphi_d, &
1639 primitives, &
1640 buffer1, buffer2)
1641#endif
1642 CASE (2)
1643#if __MAX_CONTR > 3 || __MAX_CONTR == 3
1644 CALL contract_sfsd(work, &
1645 nl_a, nl_b, nl_c, nl_d, &
1646 sphi_a, sphi_b, sphi_c, sphi_d, &
1647 primitives, &
1648 buffer1, buffer2)
1649#else
1650 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
1651 work, nl_a, nl_b, nl_c, nl_d, &
1652 sphi_a, &
1653 sphi_b, &
1654 sphi_c, &
1655 sphi_d, &
1656 primitives, &
1657 buffer1, buffer2)
1658#endif
1659 CASE (3)
1660#if __MAX_CONTR > 3 || __MAX_CONTR == 3
1661 CALL contract_sfsf(work, &
1662 nl_a, nl_b, nl_c, nl_d, &
1663 sphi_a, sphi_b, sphi_c, sphi_d, &
1664 primitives, &
1665 buffer1, buffer2)
1666#else
1667 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
1668 work, nl_a, nl_b, nl_c, nl_d, &
1669 sphi_a, &
1670 sphi_b, &
1671 sphi_c, &
1672 sphi_d, &
1673 primitives, &
1674 buffer1, buffer2)
1675#endif
1676 CASE (4)
1677#if __MAX_CONTR > 4 || __MAX_CONTR == 4
1678 CALL contract_sfsg(work, &
1679 nl_a, nl_b, nl_c, nl_d, &
1680 sphi_a, sphi_b, sphi_c, sphi_d, &
1681 primitives, &
1682 buffer1, buffer2)
1683#else
1684 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
1685 work, nl_a, nl_b, nl_c, nl_d, &
1686 sphi_a, &
1687 sphi_b, &
1688 sphi_c, &
1689 sphi_d, &
1690 primitives, &
1691 buffer1, buffer2)
1692#endif
1693 CASE DEFAULT
1694 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
1695 work, nl_a, nl_b, nl_c, nl_d, &
1696 sphi_a, &
1697 sphi_b, &
1698 sphi_c, &
1699 sphi_d, &
1700 primitives, &
1701 buffer1, buffer2)
1702 END SELECT
1703 CASE (1)
1704 SELECT CASE (n_d)
1705 CASE (0)
1706#if __MAX_CONTR > 3 || __MAX_CONTR == 3
1707 CALL contract_sfps(work, &
1708 nl_a, nl_b, nl_c, nl_d, &
1709 sphi_a, sphi_b, sphi_c, sphi_d, &
1710 primitives, &
1711 buffer1, buffer2)
1712#else
1713 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
1714 work, nl_a, nl_b, nl_c, nl_d, &
1715 sphi_a, &
1716 sphi_b, &
1717 sphi_c, &
1718 sphi_d, &
1719 primitives, &
1720 buffer1, buffer2)
1721#endif
1722 CASE (1)
1723#if __MAX_CONTR > 3 || __MAX_CONTR == 3
1724 CALL contract_sfpp(work, &
1725 nl_a, nl_b, nl_c, nl_d, &
1726 sphi_a, sphi_b, sphi_c, sphi_d, &
1727 primitives, &
1728 buffer1, buffer2)
1729#else
1730 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
1731 work, nl_a, nl_b, nl_c, nl_d, &
1732 sphi_a, &
1733 sphi_b, &
1734 sphi_c, &
1735 sphi_d, &
1736 primitives, &
1737 buffer1, buffer2)
1738#endif
1739 CASE (2)
1740#if __MAX_CONTR > 3 || __MAX_CONTR == 3
1741 CALL contract_sfpd(work, &
1742 nl_a, nl_b, nl_c, nl_d, &
1743 sphi_a, sphi_b, sphi_c, sphi_d, &
1744 primitives, &
1745 buffer1, buffer2)
1746#else
1747 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
1748 work, nl_a, nl_b, nl_c, nl_d, &
1749 sphi_a, &
1750 sphi_b, &
1751 sphi_c, &
1752 sphi_d, &
1753 primitives, &
1754 buffer1, buffer2)
1755#endif
1756 CASE (3)
1757#if __MAX_CONTR > 3 || __MAX_CONTR == 3
1758 CALL contract_sfpf(work, &
1759 nl_a, nl_b, nl_c, nl_d, &
1760 sphi_a, sphi_b, sphi_c, sphi_d, &
1761 primitives, &
1762 buffer1, buffer2)
1763#else
1764 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
1765 work, nl_a, nl_b, nl_c, nl_d, &
1766 sphi_a, &
1767 sphi_b, &
1768 sphi_c, &
1769 sphi_d, &
1770 primitives, &
1771 buffer1, buffer2)
1772#endif
1773 CASE (4)
1774#if __MAX_CONTR > 4 || __MAX_CONTR == 4
1775 CALL contract_sfpg(work, &
1776 nl_a, nl_b, nl_c, nl_d, &
1777 sphi_a, sphi_b, sphi_c, sphi_d, &
1778 primitives, &
1779 buffer1, buffer2)
1780#else
1781 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
1782 work, nl_a, nl_b, nl_c, nl_d, &
1783 sphi_a, &
1784 sphi_b, &
1785 sphi_c, &
1786 sphi_d, &
1787 primitives, &
1788 buffer1, buffer2)
1789#endif
1790 CASE DEFAULT
1791 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
1792 work, nl_a, nl_b, nl_c, nl_d, &
1793 sphi_a, &
1794 sphi_b, &
1795 sphi_c, &
1796 sphi_d, &
1797 primitives, &
1798 buffer1, buffer2)
1799 END SELECT
1800 CASE (2)
1801 SELECT CASE (n_d)
1802 CASE (0)
1803#if __MAX_CONTR > 3 || __MAX_CONTR == 3
1804 CALL contract_sfds(work, &
1805 nl_a, nl_b, nl_c, nl_d, &
1806 sphi_a, sphi_b, sphi_c, sphi_d, &
1807 primitives, &
1808 buffer1, buffer2)
1809#else
1810 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
1811 work, nl_a, nl_b, nl_c, nl_d, &
1812 sphi_a, &
1813 sphi_b, &
1814 sphi_c, &
1815 sphi_d, &
1816 primitives, &
1817 buffer1, buffer2)
1818#endif
1819 CASE (1)
1820#if __MAX_CONTR > 3 || __MAX_CONTR == 3
1821 CALL contract_sfdp(work, &
1822 nl_a, nl_b, nl_c, nl_d, &
1823 sphi_a, sphi_b, sphi_c, sphi_d, &
1824 primitives, &
1825 buffer1, buffer2)
1826#else
1827 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
1828 work, nl_a, nl_b, nl_c, nl_d, &
1829 sphi_a, &
1830 sphi_b, &
1831 sphi_c, &
1832 sphi_d, &
1833 primitives, &
1834 buffer1, buffer2)
1835#endif
1836 CASE (2)
1837#if __MAX_CONTR > 3 || __MAX_CONTR == 3
1838 CALL contract_sfdd(work, &
1839 nl_a, nl_b, nl_c, nl_d, &
1840 sphi_a, sphi_b, sphi_c, sphi_d, &
1841 primitives, &
1842 buffer1, buffer2)
1843#else
1844 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
1845 work, nl_a, nl_b, nl_c, nl_d, &
1846 sphi_a, &
1847 sphi_b, &
1848 sphi_c, &
1849 sphi_d, &
1850 primitives, &
1851 buffer1, buffer2)
1852#endif
1853 CASE (3)
1854#if __MAX_CONTR > 3 || __MAX_CONTR == 3
1855 CALL contract_sfdf(work, &
1856 nl_a, nl_b, nl_c, nl_d, &
1857 sphi_a, sphi_b, sphi_c, sphi_d, &
1858 primitives, &
1859 buffer1, buffer2)
1860#else
1861 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
1862 work, nl_a, nl_b, nl_c, nl_d, &
1863 sphi_a, &
1864 sphi_b, &
1865 sphi_c, &
1866 sphi_d, &
1867 primitives, &
1868 buffer1, buffer2)
1869#endif
1870 CASE (4)
1871#if __MAX_CONTR > 4 || __MAX_CONTR == 4
1872 CALL contract_sfdg(work, &
1873 nl_a, nl_b, nl_c, nl_d, &
1874 sphi_a, sphi_b, sphi_c, sphi_d, &
1875 primitives, &
1876 buffer1, buffer2)
1877#else
1878 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
1879 work, nl_a, nl_b, nl_c, nl_d, &
1880 sphi_a, &
1881 sphi_b, &
1882 sphi_c, &
1883 sphi_d, &
1884 primitives, &
1885 buffer1, buffer2)
1886#endif
1887 CASE DEFAULT
1888 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
1889 work, nl_a, nl_b, nl_c, nl_d, &
1890 sphi_a, &
1891 sphi_b, &
1892 sphi_c, &
1893 sphi_d, &
1894 primitives, &
1895 buffer1, buffer2)
1896 END SELECT
1897 CASE (3)
1898 SELECT CASE (n_d)
1899 CASE (0)
1900#if __MAX_CONTR > 3 || __MAX_CONTR == 3
1901 CALL contract_sffs(work, &
1902 nl_a, nl_b, nl_c, nl_d, &
1903 sphi_a, sphi_b, sphi_c, sphi_d, &
1904 primitives, &
1905 buffer1, buffer2)
1906#else
1907 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
1908 work, nl_a, nl_b, nl_c, nl_d, &
1909 sphi_a, &
1910 sphi_b, &
1911 sphi_c, &
1912 sphi_d, &
1913 primitives, &
1914 buffer1, buffer2)
1915#endif
1916 CASE (1)
1917#if __MAX_CONTR > 3 || __MAX_CONTR == 3
1918 CALL contract_sffp(work, &
1919 nl_a, nl_b, nl_c, nl_d, &
1920 sphi_a, sphi_b, sphi_c, sphi_d, &
1921 primitives, &
1922 buffer1, buffer2)
1923#else
1924 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
1925 work, nl_a, nl_b, nl_c, nl_d, &
1926 sphi_a, &
1927 sphi_b, &
1928 sphi_c, &
1929 sphi_d, &
1930 primitives, &
1931 buffer1, buffer2)
1932#endif
1933 CASE (2)
1934#if __MAX_CONTR > 3 || __MAX_CONTR == 3
1935 CALL contract_sffd(work, &
1936 nl_a, nl_b, nl_c, nl_d, &
1937 sphi_a, sphi_b, sphi_c, sphi_d, &
1938 primitives, &
1939 buffer1, buffer2)
1940#else
1941 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
1942 work, nl_a, nl_b, nl_c, nl_d, &
1943 sphi_a, &
1944 sphi_b, &
1945 sphi_c, &
1946 sphi_d, &
1947 primitives, &
1948 buffer1, buffer2)
1949#endif
1950 CASE (3)
1951#if __MAX_CONTR > 3 || __MAX_CONTR == 3
1952 CALL contract_sfff(work, &
1953 nl_a, nl_b, nl_c, nl_d, &
1954 sphi_a, sphi_b, sphi_c, sphi_d, &
1955 primitives, &
1956 buffer1, buffer2)
1957#else
1958 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
1959 work, nl_a, nl_b, nl_c, nl_d, &
1960 sphi_a, &
1961 sphi_b, &
1962 sphi_c, &
1963 sphi_d, &
1964 primitives, &
1965 buffer1, buffer2)
1966#endif
1967 CASE (4)
1968#if __MAX_CONTR > 4 || __MAX_CONTR == 4
1969 CALL contract_sffg(work, &
1970 nl_a, nl_b, nl_c, nl_d, &
1971 sphi_a, sphi_b, sphi_c, sphi_d, &
1972 primitives, &
1973 buffer1, buffer2)
1974#else
1975 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
1976 work, nl_a, nl_b, nl_c, nl_d, &
1977 sphi_a, &
1978 sphi_b, &
1979 sphi_c, &
1980 sphi_d, &
1981 primitives, &
1982 buffer1, buffer2)
1983#endif
1984 CASE DEFAULT
1985 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
1986 work, nl_a, nl_b, nl_c, nl_d, &
1987 sphi_a, &
1988 sphi_b, &
1989 sphi_c, &
1990 sphi_d, &
1991 primitives, &
1992 buffer1, buffer2)
1993 END SELECT
1994 CASE (4)
1995 SELECT CASE (n_d)
1996 CASE (0)
1997#if __MAX_CONTR > 4 || __MAX_CONTR == 4
1998 CALL contract_sfgs(work, &
1999 nl_a, nl_b, nl_c, nl_d, &
2000 sphi_a, sphi_b, sphi_c, sphi_d, &
2001 primitives, &
2002 buffer1, buffer2)
2003#else
2004 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
2005 work, nl_a, nl_b, nl_c, nl_d, &
2006 sphi_a, &
2007 sphi_b, &
2008 sphi_c, &
2009 sphi_d, &
2010 primitives, &
2011 buffer1, buffer2)
2012#endif
2013 CASE (1)
2014#if __MAX_CONTR > 4 || __MAX_CONTR == 4
2015 CALL contract_sfgp(work, &
2016 nl_a, nl_b, nl_c, nl_d, &
2017 sphi_a, sphi_b, sphi_c, sphi_d, &
2018 primitives, &
2019 buffer1, buffer2)
2020#else
2021 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
2022 work, nl_a, nl_b, nl_c, nl_d, &
2023 sphi_a, &
2024 sphi_b, &
2025 sphi_c, &
2026 sphi_d, &
2027 primitives, &
2028 buffer1, buffer2)
2029#endif
2030 CASE (2)
2031#if __MAX_CONTR > 4 || __MAX_CONTR == 4
2032 CALL contract_sfgd(work, &
2033 nl_a, nl_b, nl_c, nl_d, &
2034 sphi_a, sphi_b, sphi_c, sphi_d, &
2035 primitives, &
2036 buffer1, buffer2)
2037#else
2038 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
2039 work, nl_a, nl_b, nl_c, nl_d, &
2040 sphi_a, &
2041 sphi_b, &
2042 sphi_c, &
2043 sphi_d, &
2044 primitives, &
2045 buffer1, buffer2)
2046#endif
2047 CASE (3)
2048#if __MAX_CONTR > 4 || __MAX_CONTR == 4
2049 CALL contract_sfgf(work, &
2050 nl_a, nl_b, nl_c, nl_d, &
2051 sphi_a, sphi_b, sphi_c, sphi_d, &
2052 primitives, &
2053 buffer1, buffer2)
2054#else
2055 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
2056 work, nl_a, nl_b, nl_c, nl_d, &
2057 sphi_a, &
2058 sphi_b, &
2059 sphi_c, &
2060 sphi_d, &
2061 primitives, &
2062 buffer1, buffer2)
2063#endif
2064 CASE (4)
2065#if __MAX_CONTR > 4 || __MAX_CONTR == 4
2066 CALL contract_sfgg(work, &
2067 nl_a, nl_b, nl_c, nl_d, &
2068 sphi_a, sphi_b, sphi_c, sphi_d, &
2069 primitives, &
2070 buffer1, buffer2)
2071#else
2072 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
2073 work, nl_a, nl_b, nl_c, nl_d, &
2074 sphi_a, &
2075 sphi_b, &
2076 sphi_c, &
2077 sphi_d, &
2078 primitives, &
2079 buffer1, buffer2)
2080#endif
2081 CASE DEFAULT
2082 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
2083 work, nl_a, nl_b, nl_c, nl_d, &
2084 sphi_a, &
2085 sphi_b, &
2086 sphi_c, &
2087 sphi_d, &
2088 primitives, &
2089 buffer1, buffer2)
2090 END SELECT
2091 CASE DEFAULT
2092 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
2093 work, nl_a, nl_b, nl_c, nl_d, &
2094 sphi_a, &
2095 sphi_b, &
2096 sphi_c, &
2097 sphi_d, &
2098 primitives, &
2099 buffer1, buffer2)
2100 END SELECT
2101 CASE (4)
2102 SELECT CASE (n_c)
2103 CASE (0)
2104 SELECT CASE (n_d)
2105 CASE (0)
2106#if __MAX_CONTR > 4 || __MAX_CONTR == 4
2107 CALL contract_sgss(work, &
2108 nl_a, nl_b, nl_c, nl_d, &
2109 sphi_a, sphi_b, sphi_c, sphi_d, &
2110 primitives, &
2111 buffer1, buffer2)
2112#else
2113 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
2114 work, nl_a, nl_b, nl_c, nl_d, &
2115 sphi_a, &
2116 sphi_b, &
2117 sphi_c, &
2118 sphi_d, &
2119 primitives, &
2120 buffer1, buffer2)
2121#endif
2122 CASE (1)
2123#if __MAX_CONTR > 4 || __MAX_CONTR == 4
2124 CALL contract_sgsp(work, &
2125 nl_a, nl_b, nl_c, nl_d, &
2126 sphi_a, sphi_b, sphi_c, sphi_d, &
2127 primitives, &
2128 buffer1, buffer2)
2129#else
2130 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
2131 work, nl_a, nl_b, nl_c, nl_d, &
2132 sphi_a, &
2133 sphi_b, &
2134 sphi_c, &
2135 sphi_d, &
2136 primitives, &
2137 buffer1, buffer2)
2138#endif
2139 CASE (2)
2140#if __MAX_CONTR > 4 || __MAX_CONTR == 4
2141 CALL contract_sgsd(work, &
2142 nl_a, nl_b, nl_c, nl_d, &
2143 sphi_a, sphi_b, sphi_c, sphi_d, &
2144 primitives, &
2145 buffer1, buffer2)
2146#else
2147 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
2148 work, nl_a, nl_b, nl_c, nl_d, &
2149 sphi_a, &
2150 sphi_b, &
2151 sphi_c, &
2152 sphi_d, &
2153 primitives, &
2154 buffer1, buffer2)
2155#endif
2156 CASE (3)
2157#if __MAX_CONTR > 4 || __MAX_CONTR == 4
2158 CALL contract_sgsf(work, &
2159 nl_a, nl_b, nl_c, nl_d, &
2160 sphi_a, sphi_b, sphi_c, sphi_d, &
2161 primitives, &
2162 buffer1, buffer2)
2163#else
2164 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
2165 work, nl_a, nl_b, nl_c, nl_d, &
2166 sphi_a, &
2167 sphi_b, &
2168 sphi_c, &
2169 sphi_d, &
2170 primitives, &
2171 buffer1, buffer2)
2172#endif
2173 CASE (4)
2174#if __MAX_CONTR > 4 || __MAX_CONTR == 4
2175 CALL contract_sgsg(work, &
2176 nl_a, nl_b, nl_c, nl_d, &
2177 sphi_a, sphi_b, sphi_c, sphi_d, &
2178 primitives, &
2179 buffer1, buffer2)
2180#else
2181 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
2182 work, nl_a, nl_b, nl_c, nl_d, &
2183 sphi_a, &
2184 sphi_b, &
2185 sphi_c, &
2186 sphi_d, &
2187 primitives, &
2188 buffer1, buffer2)
2189#endif
2190 CASE DEFAULT
2191 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
2192 work, nl_a, nl_b, nl_c, nl_d, &
2193 sphi_a, &
2194 sphi_b, &
2195 sphi_c, &
2196 sphi_d, &
2197 primitives, &
2198 buffer1, buffer2)
2199 END SELECT
2200 CASE (1)
2201 SELECT CASE (n_d)
2202 CASE (0)
2203#if __MAX_CONTR > 4 || __MAX_CONTR == 4
2204 CALL contract_sgps(work, &
2205 nl_a, nl_b, nl_c, nl_d, &
2206 sphi_a, sphi_b, sphi_c, sphi_d, &
2207 primitives, &
2208 buffer1, buffer2)
2209#else
2210 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
2211 work, nl_a, nl_b, nl_c, nl_d, &
2212 sphi_a, &
2213 sphi_b, &
2214 sphi_c, &
2215 sphi_d, &
2216 primitives, &
2217 buffer1, buffer2)
2218#endif
2219 CASE (1)
2220#if __MAX_CONTR > 4 || __MAX_CONTR == 4
2221 CALL contract_sgpp(work, &
2222 nl_a, nl_b, nl_c, nl_d, &
2223 sphi_a, sphi_b, sphi_c, sphi_d, &
2224 primitives, &
2225 buffer1, buffer2)
2226#else
2227 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
2228 work, nl_a, nl_b, nl_c, nl_d, &
2229 sphi_a, &
2230 sphi_b, &
2231 sphi_c, &
2232 sphi_d, &
2233 primitives, &
2234 buffer1, buffer2)
2235#endif
2236 CASE (2)
2237#if __MAX_CONTR > 4 || __MAX_CONTR == 4
2238 CALL contract_sgpd(work, &
2239 nl_a, nl_b, nl_c, nl_d, &
2240 sphi_a, sphi_b, sphi_c, sphi_d, &
2241 primitives, &
2242 buffer1, buffer2)
2243#else
2244 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
2245 work, nl_a, nl_b, nl_c, nl_d, &
2246 sphi_a, &
2247 sphi_b, &
2248 sphi_c, &
2249 sphi_d, &
2250 primitives, &
2251 buffer1, buffer2)
2252#endif
2253 CASE (3)
2254#if __MAX_CONTR > 4 || __MAX_CONTR == 4
2255 CALL contract_sgpf(work, &
2256 nl_a, nl_b, nl_c, nl_d, &
2257 sphi_a, sphi_b, sphi_c, sphi_d, &
2258 primitives, &
2259 buffer1, buffer2)
2260#else
2261 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
2262 work, nl_a, nl_b, nl_c, nl_d, &
2263 sphi_a, &
2264 sphi_b, &
2265 sphi_c, &
2266 sphi_d, &
2267 primitives, &
2268 buffer1, buffer2)
2269#endif
2270 CASE (4)
2271#if __MAX_CONTR > 4 || __MAX_CONTR == 4
2272 CALL contract_sgpg(work, &
2273 nl_a, nl_b, nl_c, nl_d, &
2274 sphi_a, sphi_b, sphi_c, sphi_d, &
2275 primitives, &
2276 buffer1, buffer2)
2277#else
2278 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
2279 work, nl_a, nl_b, nl_c, nl_d, &
2280 sphi_a, &
2281 sphi_b, &
2282 sphi_c, &
2283 sphi_d, &
2284 primitives, &
2285 buffer1, buffer2)
2286#endif
2287 CASE DEFAULT
2288 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
2289 work, nl_a, nl_b, nl_c, nl_d, &
2290 sphi_a, &
2291 sphi_b, &
2292 sphi_c, &
2293 sphi_d, &
2294 primitives, &
2295 buffer1, buffer2)
2296 END SELECT
2297 CASE (2)
2298 SELECT CASE (n_d)
2299 CASE (0)
2300#if __MAX_CONTR > 4 || __MAX_CONTR == 4
2301 CALL contract_sgds(work, &
2302 nl_a, nl_b, nl_c, nl_d, &
2303 sphi_a, sphi_b, sphi_c, sphi_d, &
2304 primitives, &
2305 buffer1, buffer2)
2306#else
2307 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
2308 work, nl_a, nl_b, nl_c, nl_d, &
2309 sphi_a, &
2310 sphi_b, &
2311 sphi_c, &
2312 sphi_d, &
2313 primitives, &
2314 buffer1, buffer2)
2315#endif
2316 CASE (1)
2317#if __MAX_CONTR > 4 || __MAX_CONTR == 4
2318 CALL contract_sgdp(work, &
2319 nl_a, nl_b, nl_c, nl_d, &
2320 sphi_a, sphi_b, sphi_c, sphi_d, &
2321 primitives, &
2322 buffer1, buffer2)
2323#else
2324 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
2325 work, nl_a, nl_b, nl_c, nl_d, &
2326 sphi_a, &
2327 sphi_b, &
2328 sphi_c, &
2329 sphi_d, &
2330 primitives, &
2331 buffer1, buffer2)
2332#endif
2333 CASE (2)
2334#if __MAX_CONTR > 4 || __MAX_CONTR == 4
2335 CALL contract_sgdd(work, &
2336 nl_a, nl_b, nl_c, nl_d, &
2337 sphi_a, sphi_b, sphi_c, sphi_d, &
2338 primitives, &
2339 buffer1, buffer2)
2340#else
2341 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
2342 work, nl_a, nl_b, nl_c, nl_d, &
2343 sphi_a, &
2344 sphi_b, &
2345 sphi_c, &
2346 sphi_d, &
2347 primitives, &
2348 buffer1, buffer2)
2349#endif
2350 CASE (3)
2351#if __MAX_CONTR > 4 || __MAX_CONTR == 4
2352 CALL contract_sgdf(work, &
2353 nl_a, nl_b, nl_c, nl_d, &
2354 sphi_a, sphi_b, sphi_c, sphi_d, &
2355 primitives, &
2356 buffer1, buffer2)
2357#else
2358 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
2359 work, nl_a, nl_b, nl_c, nl_d, &
2360 sphi_a, &
2361 sphi_b, &
2362 sphi_c, &
2363 sphi_d, &
2364 primitives, &
2365 buffer1, buffer2)
2366#endif
2367 CASE (4)
2368#if __MAX_CONTR > 4 || __MAX_CONTR == 4
2369 CALL contract_sgdg(work, &
2370 nl_a, nl_b, nl_c, nl_d, &
2371 sphi_a, sphi_b, sphi_c, sphi_d, &
2372 primitives, &
2373 buffer1, buffer2)
2374#else
2375 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
2376 work, nl_a, nl_b, nl_c, nl_d, &
2377 sphi_a, &
2378 sphi_b, &
2379 sphi_c, &
2380 sphi_d, &
2381 primitives, &
2382 buffer1, buffer2)
2383#endif
2384 CASE DEFAULT
2385 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
2386 work, nl_a, nl_b, nl_c, nl_d, &
2387 sphi_a, &
2388 sphi_b, &
2389 sphi_c, &
2390 sphi_d, &
2391 primitives, &
2392 buffer1, buffer2)
2393 END SELECT
2394 CASE (3)
2395 SELECT CASE (n_d)
2396 CASE (0)
2397#if __MAX_CONTR > 4 || __MAX_CONTR == 4
2398 CALL contract_sgfs(work, &
2399 nl_a, nl_b, nl_c, nl_d, &
2400 sphi_a, sphi_b, sphi_c, sphi_d, &
2401 primitives, &
2402 buffer1, buffer2)
2403#else
2404 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
2405 work, nl_a, nl_b, nl_c, nl_d, &
2406 sphi_a, &
2407 sphi_b, &
2408 sphi_c, &
2409 sphi_d, &
2410 primitives, &
2411 buffer1, buffer2)
2412#endif
2413 CASE (1)
2414#if __MAX_CONTR > 4 || __MAX_CONTR == 4
2415 CALL contract_sgfp(work, &
2416 nl_a, nl_b, nl_c, nl_d, &
2417 sphi_a, sphi_b, sphi_c, sphi_d, &
2418 primitives, &
2419 buffer1, buffer2)
2420#else
2421 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
2422 work, nl_a, nl_b, nl_c, nl_d, &
2423 sphi_a, &
2424 sphi_b, &
2425 sphi_c, &
2426 sphi_d, &
2427 primitives, &
2428 buffer1, buffer2)
2429#endif
2430 CASE (2)
2431#if __MAX_CONTR > 4 || __MAX_CONTR == 4
2432 CALL contract_sgfd(work, &
2433 nl_a, nl_b, nl_c, nl_d, &
2434 sphi_a, sphi_b, sphi_c, sphi_d, &
2435 primitives, &
2436 buffer1, buffer2)
2437#else
2438 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
2439 work, nl_a, nl_b, nl_c, nl_d, &
2440 sphi_a, &
2441 sphi_b, &
2442 sphi_c, &
2443 sphi_d, &
2444 primitives, &
2445 buffer1, buffer2)
2446#endif
2447 CASE (3)
2448#if __MAX_CONTR > 4 || __MAX_CONTR == 4
2449 CALL contract_sgff(work, &
2450 nl_a, nl_b, nl_c, nl_d, &
2451 sphi_a, sphi_b, sphi_c, sphi_d, &
2452 primitives, &
2453 buffer1, buffer2)
2454#else
2455 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
2456 work, nl_a, nl_b, nl_c, nl_d, &
2457 sphi_a, &
2458 sphi_b, &
2459 sphi_c, &
2460 sphi_d, &
2461 primitives, &
2462 buffer1, buffer2)
2463#endif
2464 CASE (4)
2465#if __MAX_CONTR > 4 || __MAX_CONTR == 4
2466 CALL contract_sgfg(work, &
2467 nl_a, nl_b, nl_c, nl_d, &
2468 sphi_a, sphi_b, sphi_c, sphi_d, &
2469 primitives, &
2470 buffer1, buffer2)
2471#else
2472 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
2473 work, nl_a, nl_b, nl_c, nl_d, &
2474 sphi_a, &
2475 sphi_b, &
2476 sphi_c, &
2477 sphi_d, &
2478 primitives, &
2479 buffer1, buffer2)
2480#endif
2481 CASE DEFAULT
2482 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
2483 work, nl_a, nl_b, nl_c, nl_d, &
2484 sphi_a, &
2485 sphi_b, &
2486 sphi_c, &
2487 sphi_d, &
2488 primitives, &
2489 buffer1, buffer2)
2490 END SELECT
2491 CASE (4)
2492 SELECT CASE (n_d)
2493 CASE (0)
2494#if __MAX_CONTR > 4 || __MAX_CONTR == 4
2495 CALL contract_sggs(work, &
2496 nl_a, nl_b, nl_c, nl_d, &
2497 sphi_a, sphi_b, sphi_c, sphi_d, &
2498 primitives, &
2499 buffer1, buffer2)
2500#else
2501 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
2502 work, nl_a, nl_b, nl_c, nl_d, &
2503 sphi_a, &
2504 sphi_b, &
2505 sphi_c, &
2506 sphi_d, &
2507 primitives, &
2508 buffer1, buffer2)
2509#endif
2510 CASE (1)
2511#if __MAX_CONTR > 4 || __MAX_CONTR == 4
2512 CALL contract_sggp(work, &
2513 nl_a, nl_b, nl_c, nl_d, &
2514 sphi_a, sphi_b, sphi_c, sphi_d, &
2515 primitives, &
2516 buffer1, buffer2)
2517#else
2518 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
2519 work, nl_a, nl_b, nl_c, nl_d, &
2520 sphi_a, &
2521 sphi_b, &
2522 sphi_c, &
2523 sphi_d, &
2524 primitives, &
2525 buffer1, buffer2)
2526#endif
2527 CASE (2)
2528#if __MAX_CONTR > 4 || __MAX_CONTR == 4
2529 CALL contract_sggd(work, &
2530 nl_a, nl_b, nl_c, nl_d, &
2531 sphi_a, sphi_b, sphi_c, sphi_d, &
2532 primitives, &
2533 buffer1, buffer2)
2534#else
2535 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
2536 work, nl_a, nl_b, nl_c, nl_d, &
2537 sphi_a, &
2538 sphi_b, &
2539 sphi_c, &
2540 sphi_d, &
2541 primitives, &
2542 buffer1, buffer2)
2543#endif
2544 CASE (3)
2545#if __MAX_CONTR > 4 || __MAX_CONTR == 4
2546 CALL contract_sggf(work, &
2547 nl_a, nl_b, nl_c, nl_d, &
2548 sphi_a, sphi_b, sphi_c, sphi_d, &
2549 primitives, &
2550 buffer1, buffer2)
2551#else
2552 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
2553 work, nl_a, nl_b, nl_c, nl_d, &
2554 sphi_a, &
2555 sphi_b, &
2556 sphi_c, &
2557 sphi_d, &
2558 primitives, &
2559 buffer1, buffer2)
2560#endif
2561 CASE (4)
2562#if __MAX_CONTR > 4 || __MAX_CONTR == 4
2563 CALL contract_sggg(work, &
2564 nl_a, nl_b, nl_c, nl_d, &
2565 sphi_a, sphi_b, sphi_c, sphi_d, &
2566 primitives, &
2567 buffer1, buffer2)
2568#else
2569 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
2570 work, nl_a, nl_b, nl_c, nl_d, &
2571 sphi_a, &
2572 sphi_b, &
2573 sphi_c, &
2574 sphi_d, &
2575 primitives, &
2576 buffer1, buffer2)
2577#endif
2578 CASE DEFAULT
2579 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
2580 work, nl_a, nl_b, nl_c, nl_d, &
2581 sphi_a, &
2582 sphi_b, &
2583 sphi_c, &
2584 sphi_d, &
2585 primitives, &
2586 buffer1, buffer2)
2587 END SELECT
2588 CASE DEFAULT
2589 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
2590 work, nl_a, nl_b, nl_c, nl_d, &
2591 sphi_a, &
2592 sphi_b, &
2593 sphi_c, &
2594 sphi_d, &
2595 primitives, &
2596 buffer1, buffer2)
2597 END SELECT
2598 CASE DEFAULT
2599 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
2600 work, nl_a, nl_b, nl_c, nl_d, &
2601 sphi_a, &
2602 sphi_b, &
2603 sphi_c, &
2604 sphi_d, &
2605 primitives, &
2606 buffer1, buffer2)
2607 END SELECT
2608 CASE (1)
2609 SELECT CASE (n_b)
2610 CASE (0)
2611 SELECT CASE (n_c)
2612 CASE (0)
2613 SELECT CASE (n_d)
2614 CASE (0)
2615#if __MAX_CONTR > 1 || __MAX_CONTR == 1
2616 CALL contract_psss(work, &
2617 nl_a, nl_b, nl_c, nl_d, &
2618 sphi_a, sphi_b, sphi_c, sphi_d, &
2619 primitives, &
2620 buffer1, buffer2)
2621#else
2622 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
2623 work, nl_a, nl_b, nl_c, nl_d, &
2624 sphi_a, &
2625 sphi_b, &
2626 sphi_c, &
2627 sphi_d, &
2628 primitives, &
2629 buffer1, buffer2)
2630#endif
2631 CASE (1)
2632#if __MAX_CONTR > 1 || __MAX_CONTR == 1
2633 CALL contract_pssp(work, &
2634 nl_a, nl_b, nl_c, nl_d, &
2635 sphi_a, sphi_b, sphi_c, sphi_d, &
2636 primitives, &
2637 buffer1, buffer2)
2638#else
2639 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
2640 work, nl_a, nl_b, nl_c, nl_d, &
2641 sphi_a, &
2642 sphi_b, &
2643 sphi_c, &
2644 sphi_d, &
2645 primitives, &
2646 buffer1, buffer2)
2647#endif
2648 CASE (2)
2649#if __MAX_CONTR > 2 || __MAX_CONTR == 2
2650 CALL contract_pssd(work, &
2651 nl_a, nl_b, nl_c, nl_d, &
2652 sphi_a, sphi_b, sphi_c, sphi_d, &
2653 primitives, &
2654 buffer1, buffer2)
2655#else
2656 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
2657 work, nl_a, nl_b, nl_c, nl_d, &
2658 sphi_a, &
2659 sphi_b, &
2660 sphi_c, &
2661 sphi_d, &
2662 primitives, &
2663 buffer1, buffer2)
2664#endif
2665 CASE (3)
2666#if __MAX_CONTR > 3 || __MAX_CONTR == 3
2667 CALL contract_pssf(work, &
2668 nl_a, nl_b, nl_c, nl_d, &
2669 sphi_a, sphi_b, sphi_c, sphi_d, &
2670 primitives, &
2671 buffer1, buffer2)
2672#else
2673 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
2674 work, nl_a, nl_b, nl_c, nl_d, &
2675 sphi_a, &
2676 sphi_b, &
2677 sphi_c, &
2678 sphi_d, &
2679 primitives, &
2680 buffer1, buffer2)
2681#endif
2682 CASE (4)
2683#if __MAX_CONTR > 4 || __MAX_CONTR == 4
2684 CALL contract_pssg(work, &
2685 nl_a, nl_b, nl_c, nl_d, &
2686 sphi_a, sphi_b, sphi_c, sphi_d, &
2687 primitives, &
2688 buffer1, buffer2)
2689#else
2690 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
2691 work, nl_a, nl_b, nl_c, nl_d, &
2692 sphi_a, &
2693 sphi_b, &
2694 sphi_c, &
2695 sphi_d, &
2696 primitives, &
2697 buffer1, buffer2)
2698#endif
2699 CASE DEFAULT
2700 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
2701 work, nl_a, nl_b, nl_c, nl_d, &
2702 sphi_a, &
2703 sphi_b, &
2704 sphi_c, &
2705 sphi_d, &
2706 primitives, &
2707 buffer1, buffer2)
2708 END SELECT
2709 CASE (1)
2710 SELECT CASE (n_d)
2711 CASE (0)
2712#if __MAX_CONTR > 1 || __MAX_CONTR == 1
2713 CALL contract_psps(work, &
2714 nl_a, nl_b, nl_c, nl_d, &
2715 sphi_a, sphi_b, sphi_c, sphi_d, &
2716 primitives, &
2717 buffer1, buffer2)
2718#else
2719 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
2720 work, nl_a, nl_b, nl_c, nl_d, &
2721 sphi_a, &
2722 sphi_b, &
2723 sphi_c, &
2724 sphi_d, &
2725 primitives, &
2726 buffer1, buffer2)
2727#endif
2728 CASE (1)
2729#if __MAX_CONTR > 1 || __MAX_CONTR == 1
2730 CALL contract_pspp(work, &
2731 nl_a, nl_b, nl_c, nl_d, &
2732 sphi_a, sphi_b, sphi_c, sphi_d, &
2733 primitives, &
2734 buffer1, buffer2)
2735#else
2736 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
2737 work, nl_a, nl_b, nl_c, nl_d, &
2738 sphi_a, &
2739 sphi_b, &
2740 sphi_c, &
2741 sphi_d, &
2742 primitives, &
2743 buffer1, buffer2)
2744#endif
2745 CASE (2)
2746#if __MAX_CONTR > 2 || __MAX_CONTR == 2
2747 CALL contract_pspd(work, &
2748 nl_a, nl_b, nl_c, nl_d, &
2749 sphi_a, sphi_b, sphi_c, sphi_d, &
2750 primitives, &
2751 buffer1, buffer2)
2752#else
2753 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
2754 work, nl_a, nl_b, nl_c, nl_d, &
2755 sphi_a, &
2756 sphi_b, &
2757 sphi_c, &
2758 sphi_d, &
2759 primitives, &
2760 buffer1, buffer2)
2761#endif
2762 CASE (3)
2763#if __MAX_CONTR > 3 || __MAX_CONTR == 3
2764 CALL contract_pspf(work, &
2765 nl_a, nl_b, nl_c, nl_d, &
2766 sphi_a, sphi_b, sphi_c, sphi_d, &
2767 primitives, &
2768 buffer1, buffer2)
2769#else
2770 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
2771 work, nl_a, nl_b, nl_c, nl_d, &
2772 sphi_a, &
2773 sphi_b, &
2774 sphi_c, &
2775 sphi_d, &
2776 primitives, &
2777 buffer1, buffer2)
2778#endif
2779 CASE (4)
2780#if __MAX_CONTR > 4 || __MAX_CONTR == 4
2781 CALL contract_pspg(work, &
2782 nl_a, nl_b, nl_c, nl_d, &
2783 sphi_a, sphi_b, sphi_c, sphi_d, &
2784 primitives, &
2785 buffer1, buffer2)
2786#else
2787 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
2788 work, nl_a, nl_b, nl_c, nl_d, &
2789 sphi_a, &
2790 sphi_b, &
2791 sphi_c, &
2792 sphi_d, &
2793 primitives, &
2794 buffer1, buffer2)
2795#endif
2796 CASE DEFAULT
2797 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
2798 work, nl_a, nl_b, nl_c, nl_d, &
2799 sphi_a, &
2800 sphi_b, &
2801 sphi_c, &
2802 sphi_d, &
2803 primitives, &
2804 buffer1, buffer2)
2805 END SELECT
2806 CASE (2)
2807 SELECT CASE (n_d)
2808 CASE (0)
2809#if __MAX_CONTR > 2 || __MAX_CONTR == 2
2810 CALL contract_psds(work, &
2811 nl_a, nl_b, nl_c, nl_d, &
2812 sphi_a, sphi_b, sphi_c, sphi_d, &
2813 primitives, &
2814 buffer1, buffer2)
2815#else
2816 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
2817 work, nl_a, nl_b, nl_c, nl_d, &
2818 sphi_a, &
2819 sphi_b, &
2820 sphi_c, &
2821 sphi_d, &
2822 primitives, &
2823 buffer1, buffer2)
2824#endif
2825 CASE (1)
2826#if __MAX_CONTR > 2 || __MAX_CONTR == 2
2827 CALL contract_psdp(work, &
2828 nl_a, nl_b, nl_c, nl_d, &
2829 sphi_a, sphi_b, sphi_c, sphi_d, &
2830 primitives, &
2831 buffer1, buffer2)
2832#else
2833 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
2834 work, nl_a, nl_b, nl_c, nl_d, &
2835 sphi_a, &
2836 sphi_b, &
2837 sphi_c, &
2838 sphi_d, &
2839 primitives, &
2840 buffer1, buffer2)
2841#endif
2842 CASE (2)
2843#if __MAX_CONTR > 2 || __MAX_CONTR == 2
2844 CALL contract_psdd(work, &
2845 nl_a, nl_b, nl_c, nl_d, &
2846 sphi_a, sphi_b, sphi_c, sphi_d, &
2847 primitives, &
2848 buffer1, buffer2)
2849#else
2850 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
2851 work, nl_a, nl_b, nl_c, nl_d, &
2852 sphi_a, &
2853 sphi_b, &
2854 sphi_c, &
2855 sphi_d, &
2856 primitives, &
2857 buffer1, buffer2)
2858#endif
2859 CASE (3)
2860#if __MAX_CONTR > 3 || __MAX_CONTR == 3
2861 CALL contract_psdf(work, &
2862 nl_a, nl_b, nl_c, nl_d, &
2863 sphi_a, sphi_b, sphi_c, sphi_d, &
2864 primitives, &
2865 buffer1, buffer2)
2866#else
2867 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
2868 work, nl_a, nl_b, nl_c, nl_d, &
2869 sphi_a, &
2870 sphi_b, &
2871 sphi_c, &
2872 sphi_d, &
2873 primitives, &
2874 buffer1, buffer2)
2875#endif
2876 CASE (4)
2877#if __MAX_CONTR > 4 || __MAX_CONTR == 4
2878 CALL contract_psdg(work, &
2879 nl_a, nl_b, nl_c, nl_d, &
2880 sphi_a, sphi_b, sphi_c, sphi_d, &
2881 primitives, &
2882 buffer1, buffer2)
2883#else
2884 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
2885 work, nl_a, nl_b, nl_c, nl_d, &
2886 sphi_a, &
2887 sphi_b, &
2888 sphi_c, &
2889 sphi_d, &
2890 primitives, &
2891 buffer1, buffer2)
2892#endif
2893 CASE DEFAULT
2894 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
2895 work, nl_a, nl_b, nl_c, nl_d, &
2896 sphi_a, &
2897 sphi_b, &
2898 sphi_c, &
2899 sphi_d, &
2900 primitives, &
2901 buffer1, buffer2)
2902 END SELECT
2903 CASE (3)
2904 SELECT CASE (n_d)
2905 CASE (0)
2906#if __MAX_CONTR > 3 || __MAX_CONTR == 3
2907 CALL contract_psfs(work, &
2908 nl_a, nl_b, nl_c, nl_d, &
2909 sphi_a, sphi_b, sphi_c, sphi_d, &
2910 primitives, &
2911 buffer1, buffer2)
2912#else
2913 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
2914 work, nl_a, nl_b, nl_c, nl_d, &
2915 sphi_a, &
2916 sphi_b, &
2917 sphi_c, &
2918 sphi_d, &
2919 primitives, &
2920 buffer1, buffer2)
2921#endif
2922 CASE (1)
2923#if __MAX_CONTR > 3 || __MAX_CONTR == 3
2924 CALL contract_psfp(work, &
2925 nl_a, nl_b, nl_c, nl_d, &
2926 sphi_a, sphi_b, sphi_c, sphi_d, &
2927 primitives, &
2928 buffer1, buffer2)
2929#else
2930 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
2931 work, nl_a, nl_b, nl_c, nl_d, &
2932 sphi_a, &
2933 sphi_b, &
2934 sphi_c, &
2935 sphi_d, &
2936 primitives, &
2937 buffer1, buffer2)
2938#endif
2939 CASE (2)
2940#if __MAX_CONTR > 3 || __MAX_CONTR == 3
2941 CALL contract_psfd(work, &
2942 nl_a, nl_b, nl_c, nl_d, &
2943 sphi_a, sphi_b, sphi_c, sphi_d, &
2944 primitives, &
2945 buffer1, buffer2)
2946#else
2947 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
2948 work, nl_a, nl_b, nl_c, nl_d, &
2949 sphi_a, &
2950 sphi_b, &
2951 sphi_c, &
2952 sphi_d, &
2953 primitives, &
2954 buffer1, buffer2)
2955#endif
2956 CASE (3)
2957#if __MAX_CONTR > 3 || __MAX_CONTR == 3
2958 CALL contract_psff(work, &
2959 nl_a, nl_b, nl_c, nl_d, &
2960 sphi_a, sphi_b, sphi_c, sphi_d, &
2961 primitives, &
2962 buffer1, buffer2)
2963#else
2964 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
2965 work, nl_a, nl_b, nl_c, nl_d, &
2966 sphi_a, &
2967 sphi_b, &
2968 sphi_c, &
2969 sphi_d, &
2970 primitives, &
2971 buffer1, buffer2)
2972#endif
2973 CASE (4)
2974#if __MAX_CONTR > 4 || __MAX_CONTR == 4
2975 CALL contract_psfg(work, &
2976 nl_a, nl_b, nl_c, nl_d, &
2977 sphi_a, sphi_b, sphi_c, sphi_d, &
2978 primitives, &
2979 buffer1, buffer2)
2980#else
2981 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
2982 work, nl_a, nl_b, nl_c, nl_d, &
2983 sphi_a, &
2984 sphi_b, &
2985 sphi_c, &
2986 sphi_d, &
2987 primitives, &
2988 buffer1, buffer2)
2989#endif
2990 CASE DEFAULT
2991 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
2992 work, nl_a, nl_b, nl_c, nl_d, &
2993 sphi_a, &
2994 sphi_b, &
2995 sphi_c, &
2996 sphi_d, &
2997 primitives, &
2998 buffer1, buffer2)
2999 END SELECT
3000 CASE (4)
3001 SELECT CASE (n_d)
3002 CASE (0)
3003#if __MAX_CONTR > 4 || __MAX_CONTR == 4
3004 CALL contract_psgs(work, &
3005 nl_a, nl_b, nl_c, nl_d, &
3006 sphi_a, sphi_b, sphi_c, sphi_d, &
3007 primitives, &
3008 buffer1, buffer2)
3009#else
3010 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
3011 work, nl_a, nl_b, nl_c, nl_d, &
3012 sphi_a, &
3013 sphi_b, &
3014 sphi_c, &
3015 sphi_d, &
3016 primitives, &
3017 buffer1, buffer2)
3018#endif
3019 CASE (1)
3020#if __MAX_CONTR > 4 || __MAX_CONTR == 4
3021 CALL contract_psgp(work, &
3022 nl_a, nl_b, nl_c, nl_d, &
3023 sphi_a, sphi_b, sphi_c, sphi_d, &
3024 primitives, &
3025 buffer1, buffer2)
3026#else
3027 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
3028 work, nl_a, nl_b, nl_c, nl_d, &
3029 sphi_a, &
3030 sphi_b, &
3031 sphi_c, &
3032 sphi_d, &
3033 primitives, &
3034 buffer1, buffer2)
3035#endif
3036 CASE (2)
3037#if __MAX_CONTR > 4 || __MAX_CONTR == 4
3038 CALL contract_psgd(work, &
3039 nl_a, nl_b, nl_c, nl_d, &
3040 sphi_a, sphi_b, sphi_c, sphi_d, &
3041 primitives, &
3042 buffer1, buffer2)
3043#else
3044 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
3045 work, nl_a, nl_b, nl_c, nl_d, &
3046 sphi_a, &
3047 sphi_b, &
3048 sphi_c, &
3049 sphi_d, &
3050 primitives, &
3051 buffer1, buffer2)
3052#endif
3053 CASE (3)
3054#if __MAX_CONTR > 4 || __MAX_CONTR == 4
3055 CALL contract_psgf(work, &
3056 nl_a, nl_b, nl_c, nl_d, &
3057 sphi_a, sphi_b, sphi_c, sphi_d, &
3058 primitives, &
3059 buffer1, buffer2)
3060#else
3061 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
3062 work, nl_a, nl_b, nl_c, nl_d, &
3063 sphi_a, &
3064 sphi_b, &
3065 sphi_c, &
3066 sphi_d, &
3067 primitives, &
3068 buffer1, buffer2)
3069#endif
3070 CASE (4)
3071#if __MAX_CONTR > 4 || __MAX_CONTR == 4
3072 CALL contract_psgg(work, &
3073 nl_a, nl_b, nl_c, nl_d, &
3074 sphi_a, sphi_b, sphi_c, sphi_d, &
3075 primitives, &
3076 buffer1, buffer2)
3077#else
3078 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
3079 work, nl_a, nl_b, nl_c, nl_d, &
3080 sphi_a, &
3081 sphi_b, &
3082 sphi_c, &
3083 sphi_d, &
3084 primitives, &
3085 buffer1, buffer2)
3086#endif
3087 CASE DEFAULT
3088 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
3089 work, nl_a, nl_b, nl_c, nl_d, &
3090 sphi_a, &
3091 sphi_b, &
3092 sphi_c, &
3093 sphi_d, &
3094 primitives, &
3095 buffer1, buffer2)
3096 END SELECT
3097 CASE DEFAULT
3098 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
3099 work, nl_a, nl_b, nl_c, nl_d, &
3100 sphi_a, &
3101 sphi_b, &
3102 sphi_c, &
3103 sphi_d, &
3104 primitives, &
3105 buffer1, buffer2)
3106 END SELECT
3107 CASE (1)
3108 SELECT CASE (n_c)
3109 CASE (0)
3110 SELECT CASE (n_d)
3111 CASE (0)
3112#if __MAX_CONTR > 1 || __MAX_CONTR == 1
3113 CALL contract_ppss(work, &
3114 nl_a, nl_b, nl_c, nl_d, &
3115 sphi_a, sphi_b, sphi_c, sphi_d, &
3116 primitives, &
3117 buffer1, buffer2)
3118#else
3119 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
3120 work, nl_a, nl_b, nl_c, nl_d, &
3121 sphi_a, &
3122 sphi_b, &
3123 sphi_c, &
3124 sphi_d, &
3125 primitives, &
3126 buffer1, buffer2)
3127#endif
3128 CASE (1)
3129#if __MAX_CONTR > 1 || __MAX_CONTR == 1
3130 CALL contract_ppsp(work, &
3131 nl_a, nl_b, nl_c, nl_d, &
3132 sphi_a, sphi_b, sphi_c, sphi_d, &
3133 primitives, &
3134 buffer1, buffer2)
3135#else
3136 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
3137 work, nl_a, nl_b, nl_c, nl_d, &
3138 sphi_a, &
3139 sphi_b, &
3140 sphi_c, &
3141 sphi_d, &
3142 primitives, &
3143 buffer1, buffer2)
3144#endif
3145 CASE (2)
3146#if __MAX_CONTR > 2 || __MAX_CONTR == 2
3147 CALL contract_ppsd(work, &
3148 nl_a, nl_b, nl_c, nl_d, &
3149 sphi_a, sphi_b, sphi_c, sphi_d, &
3150 primitives, &
3151 buffer1, buffer2)
3152#else
3153 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
3154 work, nl_a, nl_b, nl_c, nl_d, &
3155 sphi_a, &
3156 sphi_b, &
3157 sphi_c, &
3158 sphi_d, &
3159 primitives, &
3160 buffer1, buffer2)
3161#endif
3162 CASE (3)
3163#if __MAX_CONTR > 3 || __MAX_CONTR == 3
3164 CALL contract_ppsf(work, &
3165 nl_a, nl_b, nl_c, nl_d, &
3166 sphi_a, sphi_b, sphi_c, sphi_d, &
3167 primitives, &
3168 buffer1, buffer2)
3169#else
3170 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
3171 work, nl_a, nl_b, nl_c, nl_d, &
3172 sphi_a, &
3173 sphi_b, &
3174 sphi_c, &
3175 sphi_d, &
3176 primitives, &
3177 buffer1, buffer2)
3178#endif
3179 CASE (4)
3180#if __MAX_CONTR > 4 || __MAX_CONTR == 4
3181 CALL contract_ppsg(work, &
3182 nl_a, nl_b, nl_c, nl_d, &
3183 sphi_a, sphi_b, sphi_c, sphi_d, &
3184 primitives, &
3185 buffer1, buffer2)
3186#else
3187 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
3188 work, nl_a, nl_b, nl_c, nl_d, &
3189 sphi_a, &
3190 sphi_b, &
3191 sphi_c, &
3192 sphi_d, &
3193 primitives, &
3194 buffer1, buffer2)
3195#endif
3196 CASE DEFAULT
3197 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
3198 work, nl_a, nl_b, nl_c, nl_d, &
3199 sphi_a, &
3200 sphi_b, &
3201 sphi_c, &
3202 sphi_d, &
3203 primitives, &
3204 buffer1, buffer2)
3205 END SELECT
3206 CASE (1)
3207 SELECT CASE (n_d)
3208 CASE (0)
3209#if __MAX_CONTR > 1 || __MAX_CONTR == 1
3210 CALL contract_ppps(work, &
3211 nl_a, nl_b, nl_c, nl_d, &
3212 sphi_a, sphi_b, sphi_c, sphi_d, &
3213 primitives, &
3214 buffer1, buffer2)
3215#else
3216 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
3217 work, nl_a, nl_b, nl_c, nl_d, &
3218 sphi_a, &
3219 sphi_b, &
3220 sphi_c, &
3221 sphi_d, &
3222 primitives, &
3223 buffer1, buffer2)
3224#endif
3225 CASE (1)
3226#if __MAX_CONTR > 1 || __MAX_CONTR == 1
3227 CALL contract_pppp(work, &
3228 nl_a, nl_b, nl_c, nl_d, &
3229 sphi_a, sphi_b, sphi_c, sphi_d, &
3230 primitives, &
3231 buffer1, buffer2)
3232#else
3233 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
3234 work, nl_a, nl_b, nl_c, nl_d, &
3235 sphi_a, &
3236 sphi_b, &
3237 sphi_c, &
3238 sphi_d, &
3239 primitives, &
3240 buffer1, buffer2)
3241#endif
3242 CASE (2)
3243#if __MAX_CONTR > 2 || __MAX_CONTR == 2
3244 CALL contract_pppd(work, &
3245 nl_a, nl_b, nl_c, nl_d, &
3246 sphi_a, sphi_b, sphi_c, sphi_d, &
3247 primitives, &
3248 buffer1, buffer2)
3249#else
3250 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
3251 work, nl_a, nl_b, nl_c, nl_d, &
3252 sphi_a, &
3253 sphi_b, &
3254 sphi_c, &
3255 sphi_d, &
3256 primitives, &
3257 buffer1, buffer2)
3258#endif
3259 CASE (3)
3260#if __MAX_CONTR > 3 || __MAX_CONTR == 3
3261 CALL contract_pppf(work, &
3262 nl_a, nl_b, nl_c, nl_d, &
3263 sphi_a, sphi_b, sphi_c, sphi_d, &
3264 primitives, &
3265 buffer1, buffer2)
3266#else
3267 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
3268 work, nl_a, nl_b, nl_c, nl_d, &
3269 sphi_a, &
3270 sphi_b, &
3271 sphi_c, &
3272 sphi_d, &
3273 primitives, &
3274 buffer1, buffer2)
3275#endif
3276 CASE (4)
3277#if __MAX_CONTR > 4 || __MAX_CONTR == 4
3278 CALL contract_pppg(work, &
3279 nl_a, nl_b, nl_c, nl_d, &
3280 sphi_a, sphi_b, sphi_c, sphi_d, &
3281 primitives, &
3282 buffer1, buffer2)
3283#else
3284 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
3285 work, nl_a, nl_b, nl_c, nl_d, &
3286 sphi_a, &
3287 sphi_b, &
3288 sphi_c, &
3289 sphi_d, &
3290 primitives, &
3291 buffer1, buffer2)
3292#endif
3293 CASE DEFAULT
3294 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
3295 work, nl_a, nl_b, nl_c, nl_d, &
3296 sphi_a, &
3297 sphi_b, &
3298 sphi_c, &
3299 sphi_d, &
3300 primitives, &
3301 buffer1, buffer2)
3302 END SELECT
3303 CASE (2)
3304 SELECT CASE (n_d)
3305 CASE (0)
3306#if __MAX_CONTR > 2 || __MAX_CONTR == 2
3307 CALL contract_ppds(work, &
3308 nl_a, nl_b, nl_c, nl_d, &
3309 sphi_a, sphi_b, sphi_c, sphi_d, &
3310 primitives, &
3311 buffer1, buffer2)
3312#else
3313 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
3314 work, nl_a, nl_b, nl_c, nl_d, &
3315 sphi_a, &
3316 sphi_b, &
3317 sphi_c, &
3318 sphi_d, &
3319 primitives, &
3320 buffer1, buffer2)
3321#endif
3322 CASE (1)
3323#if __MAX_CONTR > 2 || __MAX_CONTR == 2
3324 CALL contract_ppdp(work, &
3325 nl_a, nl_b, nl_c, nl_d, &
3326 sphi_a, sphi_b, sphi_c, sphi_d, &
3327 primitives, &
3328 buffer1, buffer2)
3329#else
3330 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
3331 work, nl_a, nl_b, nl_c, nl_d, &
3332 sphi_a, &
3333 sphi_b, &
3334 sphi_c, &
3335 sphi_d, &
3336 primitives, &
3337 buffer1, buffer2)
3338#endif
3339 CASE (2)
3340#if __MAX_CONTR > 2 || __MAX_CONTR == 2
3341 CALL contract_ppdd(work, &
3342 nl_a, nl_b, nl_c, nl_d, &
3343 sphi_a, sphi_b, sphi_c, sphi_d, &
3344 primitives, &
3345 buffer1, buffer2)
3346#else
3347 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
3348 work, nl_a, nl_b, nl_c, nl_d, &
3349 sphi_a, &
3350 sphi_b, &
3351 sphi_c, &
3352 sphi_d, &
3353 primitives, &
3354 buffer1, buffer2)
3355#endif
3356 CASE (3)
3357#if __MAX_CONTR > 3 || __MAX_CONTR == 3
3358 CALL contract_ppdf(work, &
3359 nl_a, nl_b, nl_c, nl_d, &
3360 sphi_a, sphi_b, sphi_c, sphi_d, &
3361 primitives, &
3362 buffer1, buffer2)
3363#else
3364 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
3365 work, nl_a, nl_b, nl_c, nl_d, &
3366 sphi_a, &
3367 sphi_b, &
3368 sphi_c, &
3369 sphi_d, &
3370 primitives, &
3371 buffer1, buffer2)
3372#endif
3373 CASE (4)
3374#if __MAX_CONTR > 4 || __MAX_CONTR == 4
3375 CALL contract_ppdg(work, &
3376 nl_a, nl_b, nl_c, nl_d, &
3377 sphi_a, sphi_b, sphi_c, sphi_d, &
3378 primitives, &
3379 buffer1, buffer2)
3380#else
3381 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
3382 work, nl_a, nl_b, nl_c, nl_d, &
3383 sphi_a, &
3384 sphi_b, &
3385 sphi_c, &
3386 sphi_d, &
3387 primitives, &
3388 buffer1, buffer2)
3389#endif
3390 CASE DEFAULT
3391 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
3392 work, nl_a, nl_b, nl_c, nl_d, &
3393 sphi_a, &
3394 sphi_b, &
3395 sphi_c, &
3396 sphi_d, &
3397 primitives, &
3398 buffer1, buffer2)
3399 END SELECT
3400 CASE (3)
3401 SELECT CASE (n_d)
3402 CASE (0)
3403#if __MAX_CONTR > 3 || __MAX_CONTR == 3
3404 CALL contract_ppfs(work, &
3405 nl_a, nl_b, nl_c, nl_d, &
3406 sphi_a, sphi_b, sphi_c, sphi_d, &
3407 primitives, &
3408 buffer1, buffer2)
3409#else
3410 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
3411 work, nl_a, nl_b, nl_c, nl_d, &
3412 sphi_a, &
3413 sphi_b, &
3414 sphi_c, &
3415 sphi_d, &
3416 primitives, &
3417 buffer1, buffer2)
3418#endif
3419 CASE (1)
3420#if __MAX_CONTR > 3 || __MAX_CONTR == 3
3421 CALL contract_ppfp(work, &
3422 nl_a, nl_b, nl_c, nl_d, &
3423 sphi_a, sphi_b, sphi_c, sphi_d, &
3424 primitives, &
3425 buffer1, buffer2)
3426#else
3427 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
3428 work, nl_a, nl_b, nl_c, nl_d, &
3429 sphi_a, &
3430 sphi_b, &
3431 sphi_c, &
3432 sphi_d, &
3433 primitives, &
3434 buffer1, buffer2)
3435#endif
3436 CASE (2)
3437#if __MAX_CONTR > 3 || __MAX_CONTR == 3
3438 CALL contract_ppfd(work, &
3439 nl_a, nl_b, nl_c, nl_d, &
3440 sphi_a, sphi_b, sphi_c, sphi_d, &
3441 primitives, &
3442 buffer1, buffer2)
3443#else
3444 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
3445 work, nl_a, nl_b, nl_c, nl_d, &
3446 sphi_a, &
3447 sphi_b, &
3448 sphi_c, &
3449 sphi_d, &
3450 primitives, &
3451 buffer1, buffer2)
3452#endif
3453 CASE (3)
3454#if __MAX_CONTR > 3 || __MAX_CONTR == 3
3455 CALL contract_ppff(work, &
3456 nl_a, nl_b, nl_c, nl_d, &
3457 sphi_a, sphi_b, sphi_c, sphi_d, &
3458 primitives, &
3459 buffer1, buffer2)
3460#else
3461 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
3462 work, nl_a, nl_b, nl_c, nl_d, &
3463 sphi_a, &
3464 sphi_b, &
3465 sphi_c, &
3466 sphi_d, &
3467 primitives, &
3468 buffer1, buffer2)
3469#endif
3470 CASE (4)
3471#if __MAX_CONTR > 4 || __MAX_CONTR == 4
3472 CALL contract_ppfg(work, &
3473 nl_a, nl_b, nl_c, nl_d, &
3474 sphi_a, sphi_b, sphi_c, sphi_d, &
3475 primitives, &
3476 buffer1, buffer2)
3477#else
3478 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
3479 work, nl_a, nl_b, nl_c, nl_d, &
3480 sphi_a, &
3481 sphi_b, &
3482 sphi_c, &
3483 sphi_d, &
3484 primitives, &
3485 buffer1, buffer2)
3486#endif
3487 CASE DEFAULT
3488 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
3489 work, nl_a, nl_b, nl_c, nl_d, &
3490 sphi_a, &
3491 sphi_b, &
3492 sphi_c, &
3493 sphi_d, &
3494 primitives, &
3495 buffer1, buffer2)
3496 END SELECT
3497 CASE (4)
3498 SELECT CASE (n_d)
3499 CASE (0)
3500#if __MAX_CONTR > 4 || __MAX_CONTR == 4
3501 CALL contract_ppgs(work, &
3502 nl_a, nl_b, nl_c, nl_d, &
3503 sphi_a, sphi_b, sphi_c, sphi_d, &
3504 primitives, &
3505 buffer1, buffer2)
3506#else
3507 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
3508 work, nl_a, nl_b, nl_c, nl_d, &
3509 sphi_a, &
3510 sphi_b, &
3511 sphi_c, &
3512 sphi_d, &
3513 primitives, &
3514 buffer1, buffer2)
3515#endif
3516 CASE (1)
3517#if __MAX_CONTR > 4 || __MAX_CONTR == 4
3518 CALL contract_ppgp(work, &
3519 nl_a, nl_b, nl_c, nl_d, &
3520 sphi_a, sphi_b, sphi_c, sphi_d, &
3521 primitives, &
3522 buffer1, buffer2)
3523#else
3524 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
3525 work, nl_a, nl_b, nl_c, nl_d, &
3526 sphi_a, &
3527 sphi_b, &
3528 sphi_c, &
3529 sphi_d, &
3530 primitives, &
3531 buffer1, buffer2)
3532#endif
3533 CASE (2)
3534#if __MAX_CONTR > 4 || __MAX_CONTR == 4
3535 CALL contract_ppgd(work, &
3536 nl_a, nl_b, nl_c, nl_d, &
3537 sphi_a, sphi_b, sphi_c, sphi_d, &
3538 primitives, &
3539 buffer1, buffer2)
3540#else
3541 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
3542 work, nl_a, nl_b, nl_c, nl_d, &
3543 sphi_a, &
3544 sphi_b, &
3545 sphi_c, &
3546 sphi_d, &
3547 primitives, &
3548 buffer1, buffer2)
3549#endif
3550 CASE (3)
3551#if __MAX_CONTR > 4 || __MAX_CONTR == 4
3552 CALL contract_ppgf(work, &
3553 nl_a, nl_b, nl_c, nl_d, &
3554 sphi_a, sphi_b, sphi_c, sphi_d, &
3555 primitives, &
3556 buffer1, buffer2)
3557#else
3558 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
3559 work, nl_a, nl_b, nl_c, nl_d, &
3560 sphi_a, &
3561 sphi_b, &
3562 sphi_c, &
3563 sphi_d, &
3564 primitives, &
3565 buffer1, buffer2)
3566#endif
3567 CASE (4)
3568#if __MAX_CONTR > 4 || __MAX_CONTR == 4
3569 CALL contract_ppgg(work, &
3570 nl_a, nl_b, nl_c, nl_d, &
3571 sphi_a, sphi_b, sphi_c, sphi_d, &
3572 primitives, &
3573 buffer1, buffer2)
3574#else
3575 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
3576 work, nl_a, nl_b, nl_c, nl_d, &
3577 sphi_a, &
3578 sphi_b, &
3579 sphi_c, &
3580 sphi_d, &
3581 primitives, &
3582 buffer1, buffer2)
3583#endif
3584 CASE DEFAULT
3585 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
3586 work, nl_a, nl_b, nl_c, nl_d, &
3587 sphi_a, &
3588 sphi_b, &
3589 sphi_c, &
3590 sphi_d, &
3591 primitives, &
3592 buffer1, buffer2)
3593 END SELECT
3594 CASE DEFAULT
3595 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
3596 work, nl_a, nl_b, nl_c, nl_d, &
3597 sphi_a, &
3598 sphi_b, &
3599 sphi_c, &
3600 sphi_d, &
3601 primitives, &
3602 buffer1, buffer2)
3603 END SELECT
3604 CASE (2)
3605 SELECT CASE (n_c)
3606 CASE (0)
3607 SELECT CASE (n_d)
3608 CASE (0)
3609#if __MAX_CONTR > 2 || __MAX_CONTR == 2
3610 CALL contract_pdss(work, &
3611 nl_a, nl_b, nl_c, nl_d, &
3612 sphi_a, sphi_b, sphi_c, sphi_d, &
3613 primitives, &
3614 buffer1, buffer2)
3615#else
3616 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
3617 work, nl_a, nl_b, nl_c, nl_d, &
3618 sphi_a, &
3619 sphi_b, &
3620 sphi_c, &
3621 sphi_d, &
3622 primitives, &
3623 buffer1, buffer2)
3624#endif
3625 CASE (1)
3626#if __MAX_CONTR > 2 || __MAX_CONTR == 2
3627 CALL contract_pdsp(work, &
3628 nl_a, nl_b, nl_c, nl_d, &
3629 sphi_a, sphi_b, sphi_c, sphi_d, &
3630 primitives, &
3631 buffer1, buffer2)
3632#else
3633 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
3634 work, nl_a, nl_b, nl_c, nl_d, &
3635 sphi_a, &
3636 sphi_b, &
3637 sphi_c, &
3638 sphi_d, &
3639 primitives, &
3640 buffer1, buffer2)
3641#endif
3642 CASE (2)
3643#if __MAX_CONTR > 2 || __MAX_CONTR == 2
3644 CALL contract_pdsd(work, &
3645 nl_a, nl_b, nl_c, nl_d, &
3646 sphi_a, sphi_b, sphi_c, sphi_d, &
3647 primitives, &
3648 buffer1, buffer2)
3649#else
3650 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
3651 work, nl_a, nl_b, nl_c, nl_d, &
3652 sphi_a, &
3653 sphi_b, &
3654 sphi_c, &
3655 sphi_d, &
3656 primitives, &
3657 buffer1, buffer2)
3658#endif
3659 CASE (3)
3660#if __MAX_CONTR > 3 || __MAX_CONTR == 3
3661 CALL contract_pdsf(work, &
3662 nl_a, nl_b, nl_c, nl_d, &
3663 sphi_a, sphi_b, sphi_c, sphi_d, &
3664 primitives, &
3665 buffer1, buffer2)
3666#else
3667 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
3668 work, nl_a, nl_b, nl_c, nl_d, &
3669 sphi_a, &
3670 sphi_b, &
3671 sphi_c, &
3672 sphi_d, &
3673 primitives, &
3674 buffer1, buffer2)
3675#endif
3676 CASE (4)
3677#if __MAX_CONTR > 4 || __MAX_CONTR == 4
3678 CALL contract_pdsg(work, &
3679 nl_a, nl_b, nl_c, nl_d, &
3680 sphi_a, sphi_b, sphi_c, sphi_d, &
3681 primitives, &
3682 buffer1, buffer2)
3683#else
3684 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
3685 work, nl_a, nl_b, nl_c, nl_d, &
3686 sphi_a, &
3687 sphi_b, &
3688 sphi_c, &
3689 sphi_d, &
3690 primitives, &
3691 buffer1, buffer2)
3692#endif
3693 CASE DEFAULT
3694 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
3695 work, nl_a, nl_b, nl_c, nl_d, &
3696 sphi_a, &
3697 sphi_b, &
3698 sphi_c, &
3699 sphi_d, &
3700 primitives, &
3701 buffer1, buffer2)
3702 END SELECT
3703 CASE (1)
3704 SELECT CASE (n_d)
3705 CASE (0)
3706#if __MAX_CONTR > 2 || __MAX_CONTR == 2
3707 CALL contract_pdps(work, &
3708 nl_a, nl_b, nl_c, nl_d, &
3709 sphi_a, sphi_b, sphi_c, sphi_d, &
3710 primitives, &
3711 buffer1, buffer2)
3712#else
3713 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
3714 work, nl_a, nl_b, nl_c, nl_d, &
3715 sphi_a, &
3716 sphi_b, &
3717 sphi_c, &
3718 sphi_d, &
3719 primitives, &
3720 buffer1, buffer2)
3721#endif
3722 CASE (1)
3723#if __MAX_CONTR > 2 || __MAX_CONTR == 2
3724 CALL contract_pdpp(work, &
3725 nl_a, nl_b, nl_c, nl_d, &
3726 sphi_a, sphi_b, sphi_c, sphi_d, &
3727 primitives, &
3728 buffer1, buffer2)
3729#else
3730 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
3731 work, nl_a, nl_b, nl_c, nl_d, &
3732 sphi_a, &
3733 sphi_b, &
3734 sphi_c, &
3735 sphi_d, &
3736 primitives, &
3737 buffer1, buffer2)
3738#endif
3739 CASE (2)
3740#if __MAX_CONTR > 2 || __MAX_CONTR == 2
3741 CALL contract_pdpd(work, &
3742 nl_a, nl_b, nl_c, nl_d, &
3743 sphi_a, sphi_b, sphi_c, sphi_d, &
3744 primitives, &
3745 buffer1, buffer2)
3746#else
3747 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
3748 work, nl_a, nl_b, nl_c, nl_d, &
3749 sphi_a, &
3750 sphi_b, &
3751 sphi_c, &
3752 sphi_d, &
3753 primitives, &
3754 buffer1, buffer2)
3755#endif
3756 CASE (3)
3757#if __MAX_CONTR > 3 || __MAX_CONTR == 3
3758 CALL contract_pdpf(work, &
3759 nl_a, nl_b, nl_c, nl_d, &
3760 sphi_a, sphi_b, sphi_c, sphi_d, &
3761 primitives, &
3762 buffer1, buffer2)
3763#else
3764 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
3765 work, nl_a, nl_b, nl_c, nl_d, &
3766 sphi_a, &
3767 sphi_b, &
3768 sphi_c, &
3769 sphi_d, &
3770 primitives, &
3771 buffer1, buffer2)
3772#endif
3773 CASE (4)
3774#if __MAX_CONTR > 4 || __MAX_CONTR == 4
3775 CALL contract_pdpg(work, &
3776 nl_a, nl_b, nl_c, nl_d, &
3777 sphi_a, sphi_b, sphi_c, sphi_d, &
3778 primitives, &
3779 buffer1, buffer2)
3780#else
3781 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
3782 work, nl_a, nl_b, nl_c, nl_d, &
3783 sphi_a, &
3784 sphi_b, &
3785 sphi_c, &
3786 sphi_d, &
3787 primitives, &
3788 buffer1, buffer2)
3789#endif
3790 CASE DEFAULT
3791 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
3792 work, nl_a, nl_b, nl_c, nl_d, &
3793 sphi_a, &
3794 sphi_b, &
3795 sphi_c, &
3796 sphi_d, &
3797 primitives, &
3798 buffer1, buffer2)
3799 END SELECT
3800 CASE (2)
3801 SELECT CASE (n_d)
3802 CASE (0)
3803#if __MAX_CONTR > 2 || __MAX_CONTR == 2
3804 CALL contract_pdds(work, &
3805 nl_a, nl_b, nl_c, nl_d, &
3806 sphi_a, sphi_b, sphi_c, sphi_d, &
3807 primitives, &
3808 buffer1, buffer2)
3809#else
3810 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
3811 work, nl_a, nl_b, nl_c, nl_d, &
3812 sphi_a, &
3813 sphi_b, &
3814 sphi_c, &
3815 sphi_d, &
3816 primitives, &
3817 buffer1, buffer2)
3818#endif
3819 CASE (1)
3820#if __MAX_CONTR > 2 || __MAX_CONTR == 2
3821 CALL contract_pddp(work, &
3822 nl_a, nl_b, nl_c, nl_d, &
3823 sphi_a, sphi_b, sphi_c, sphi_d, &
3824 primitives, &
3825 buffer1, buffer2)
3826#else
3827 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
3828 work, nl_a, nl_b, nl_c, nl_d, &
3829 sphi_a, &
3830 sphi_b, &
3831 sphi_c, &
3832 sphi_d, &
3833 primitives, &
3834 buffer1, buffer2)
3835#endif
3836 CASE (2)
3837#if __MAX_CONTR > 2 || __MAX_CONTR == 2
3838 CALL contract_pddd(work, &
3839 nl_a, nl_b, nl_c, nl_d, &
3840 sphi_a, sphi_b, sphi_c, sphi_d, &
3841 primitives, &
3842 buffer1, buffer2)
3843#else
3844 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
3845 work, nl_a, nl_b, nl_c, nl_d, &
3846 sphi_a, &
3847 sphi_b, &
3848 sphi_c, &
3849 sphi_d, &
3850 primitives, &
3851 buffer1, buffer2)
3852#endif
3853 CASE (3)
3854#if __MAX_CONTR > 3 || __MAX_CONTR == 3
3855 CALL contract_pddf(work, &
3856 nl_a, nl_b, nl_c, nl_d, &
3857 sphi_a, sphi_b, sphi_c, sphi_d, &
3858 primitives, &
3859 buffer1, buffer2)
3860#else
3861 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
3862 work, nl_a, nl_b, nl_c, nl_d, &
3863 sphi_a, &
3864 sphi_b, &
3865 sphi_c, &
3866 sphi_d, &
3867 primitives, &
3868 buffer1, buffer2)
3869#endif
3870 CASE (4)
3871#if __MAX_CONTR > 4 || __MAX_CONTR == 4
3872 CALL contract_pddg(work, &
3873 nl_a, nl_b, nl_c, nl_d, &
3874 sphi_a, sphi_b, sphi_c, sphi_d, &
3875 primitives, &
3876 buffer1, buffer2)
3877#else
3878 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
3879 work, nl_a, nl_b, nl_c, nl_d, &
3880 sphi_a, &
3881 sphi_b, &
3882 sphi_c, &
3883 sphi_d, &
3884 primitives, &
3885 buffer1, buffer2)
3886#endif
3887 CASE DEFAULT
3888 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
3889 work, nl_a, nl_b, nl_c, nl_d, &
3890 sphi_a, &
3891 sphi_b, &
3892 sphi_c, &
3893 sphi_d, &
3894 primitives, &
3895 buffer1, buffer2)
3896 END SELECT
3897 CASE (3)
3898 SELECT CASE (n_d)
3899 CASE (0)
3900#if __MAX_CONTR > 3 || __MAX_CONTR == 3
3901 CALL contract_pdfs(work, &
3902 nl_a, nl_b, nl_c, nl_d, &
3903 sphi_a, sphi_b, sphi_c, sphi_d, &
3904 primitives, &
3905 buffer1, buffer2)
3906#else
3907 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
3908 work, nl_a, nl_b, nl_c, nl_d, &
3909 sphi_a, &
3910 sphi_b, &
3911 sphi_c, &
3912 sphi_d, &
3913 primitives, &
3914 buffer1, buffer2)
3915#endif
3916 CASE (1)
3917#if __MAX_CONTR > 3 || __MAX_CONTR == 3
3918 CALL contract_pdfp(work, &
3919 nl_a, nl_b, nl_c, nl_d, &
3920 sphi_a, sphi_b, sphi_c, sphi_d, &
3921 primitives, &
3922 buffer1, buffer2)
3923#else
3924 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
3925 work, nl_a, nl_b, nl_c, nl_d, &
3926 sphi_a, &
3927 sphi_b, &
3928 sphi_c, &
3929 sphi_d, &
3930 primitives, &
3931 buffer1, buffer2)
3932#endif
3933 CASE (2)
3934#if __MAX_CONTR > 3 || __MAX_CONTR == 3
3935 CALL contract_pdfd(work, &
3936 nl_a, nl_b, nl_c, nl_d, &
3937 sphi_a, sphi_b, sphi_c, sphi_d, &
3938 primitives, &
3939 buffer1, buffer2)
3940#else
3941 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
3942 work, nl_a, nl_b, nl_c, nl_d, &
3943 sphi_a, &
3944 sphi_b, &
3945 sphi_c, &
3946 sphi_d, &
3947 primitives, &
3948 buffer1, buffer2)
3949#endif
3950 CASE (3)
3951#if __MAX_CONTR > 3 || __MAX_CONTR == 3
3952 CALL contract_pdff(work, &
3953 nl_a, nl_b, nl_c, nl_d, &
3954 sphi_a, sphi_b, sphi_c, sphi_d, &
3955 primitives, &
3956 buffer1, buffer2)
3957#else
3958 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
3959 work, nl_a, nl_b, nl_c, nl_d, &
3960 sphi_a, &
3961 sphi_b, &
3962 sphi_c, &
3963 sphi_d, &
3964 primitives, &
3965 buffer1, buffer2)
3966#endif
3967 CASE (4)
3968#if __MAX_CONTR > 4 || __MAX_CONTR == 4
3969 CALL contract_pdfg(work, &
3970 nl_a, nl_b, nl_c, nl_d, &
3971 sphi_a, sphi_b, sphi_c, sphi_d, &
3972 primitives, &
3973 buffer1, buffer2)
3974#else
3975 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
3976 work, nl_a, nl_b, nl_c, nl_d, &
3977 sphi_a, &
3978 sphi_b, &
3979 sphi_c, &
3980 sphi_d, &
3981 primitives, &
3982 buffer1, buffer2)
3983#endif
3984 CASE DEFAULT
3985 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
3986 work, nl_a, nl_b, nl_c, nl_d, &
3987 sphi_a, &
3988 sphi_b, &
3989 sphi_c, &
3990 sphi_d, &
3991 primitives, &
3992 buffer1, buffer2)
3993 END SELECT
3994 CASE (4)
3995 SELECT CASE (n_d)
3996 CASE (0)
3997#if __MAX_CONTR > 4 || __MAX_CONTR == 4
3998 CALL contract_pdgs(work, &
3999 nl_a, nl_b, nl_c, nl_d, &
4000 sphi_a, sphi_b, sphi_c, sphi_d, &
4001 primitives, &
4002 buffer1, buffer2)
4003#else
4004 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
4005 work, nl_a, nl_b, nl_c, nl_d, &
4006 sphi_a, &
4007 sphi_b, &
4008 sphi_c, &
4009 sphi_d, &
4010 primitives, &
4011 buffer1, buffer2)
4012#endif
4013 CASE (1)
4014#if __MAX_CONTR > 4 || __MAX_CONTR == 4
4015 CALL contract_pdgp(work, &
4016 nl_a, nl_b, nl_c, nl_d, &
4017 sphi_a, sphi_b, sphi_c, sphi_d, &
4018 primitives, &
4019 buffer1, buffer2)
4020#else
4021 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
4022 work, nl_a, nl_b, nl_c, nl_d, &
4023 sphi_a, &
4024 sphi_b, &
4025 sphi_c, &
4026 sphi_d, &
4027 primitives, &
4028 buffer1, buffer2)
4029#endif
4030 CASE (2)
4031#if __MAX_CONTR > 4 || __MAX_CONTR == 4
4032 CALL contract_pdgd(work, &
4033 nl_a, nl_b, nl_c, nl_d, &
4034 sphi_a, sphi_b, sphi_c, sphi_d, &
4035 primitives, &
4036 buffer1, buffer2)
4037#else
4038 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
4039 work, nl_a, nl_b, nl_c, nl_d, &
4040 sphi_a, &
4041 sphi_b, &
4042 sphi_c, &
4043 sphi_d, &
4044 primitives, &
4045 buffer1, buffer2)
4046#endif
4047 CASE (3)
4048#if __MAX_CONTR > 4 || __MAX_CONTR == 4
4049 CALL contract_pdgf(work, &
4050 nl_a, nl_b, nl_c, nl_d, &
4051 sphi_a, sphi_b, sphi_c, sphi_d, &
4052 primitives, &
4053 buffer1, buffer2)
4054#else
4055 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
4056 work, nl_a, nl_b, nl_c, nl_d, &
4057 sphi_a, &
4058 sphi_b, &
4059 sphi_c, &
4060 sphi_d, &
4061 primitives, &
4062 buffer1, buffer2)
4063#endif
4064 CASE (4)
4065#if __MAX_CONTR > 4 || __MAX_CONTR == 4
4066 CALL contract_pdgg(work, &
4067 nl_a, nl_b, nl_c, nl_d, &
4068 sphi_a, sphi_b, sphi_c, sphi_d, &
4069 primitives, &
4070 buffer1, buffer2)
4071#else
4072 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
4073 work, nl_a, nl_b, nl_c, nl_d, &
4074 sphi_a, &
4075 sphi_b, &
4076 sphi_c, &
4077 sphi_d, &
4078 primitives, &
4079 buffer1, buffer2)
4080#endif
4081 CASE DEFAULT
4082 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
4083 work, nl_a, nl_b, nl_c, nl_d, &
4084 sphi_a, &
4085 sphi_b, &
4086 sphi_c, &
4087 sphi_d, &
4088 primitives, &
4089 buffer1, buffer2)
4090 END SELECT
4091 CASE DEFAULT
4092 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
4093 work, nl_a, nl_b, nl_c, nl_d, &
4094 sphi_a, &
4095 sphi_b, &
4096 sphi_c, &
4097 sphi_d, &
4098 primitives, &
4099 buffer1, buffer2)
4100 END SELECT
4101 CASE (3)
4102 SELECT CASE (n_c)
4103 CASE (0)
4104 SELECT CASE (n_d)
4105 CASE (0)
4106#if __MAX_CONTR > 3 || __MAX_CONTR == 3
4107 CALL contract_pfss(work, &
4108 nl_a, nl_b, nl_c, nl_d, &
4109 sphi_a, sphi_b, sphi_c, sphi_d, &
4110 primitives, &
4111 buffer1, buffer2)
4112#else
4113 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
4114 work, nl_a, nl_b, nl_c, nl_d, &
4115 sphi_a, &
4116 sphi_b, &
4117 sphi_c, &
4118 sphi_d, &
4119 primitives, &
4120 buffer1, buffer2)
4121#endif
4122 CASE (1)
4123#if __MAX_CONTR > 3 || __MAX_CONTR == 3
4124 CALL contract_pfsp(work, &
4125 nl_a, nl_b, nl_c, nl_d, &
4126 sphi_a, sphi_b, sphi_c, sphi_d, &
4127 primitives, &
4128 buffer1, buffer2)
4129#else
4130 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
4131 work, nl_a, nl_b, nl_c, nl_d, &
4132 sphi_a, &
4133 sphi_b, &
4134 sphi_c, &
4135 sphi_d, &
4136 primitives, &
4137 buffer1, buffer2)
4138#endif
4139 CASE (2)
4140#if __MAX_CONTR > 3 || __MAX_CONTR == 3
4141 CALL contract_pfsd(work, &
4142 nl_a, nl_b, nl_c, nl_d, &
4143 sphi_a, sphi_b, sphi_c, sphi_d, &
4144 primitives, &
4145 buffer1, buffer2)
4146#else
4147 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
4148 work, nl_a, nl_b, nl_c, nl_d, &
4149 sphi_a, &
4150 sphi_b, &
4151 sphi_c, &
4152 sphi_d, &
4153 primitives, &
4154 buffer1, buffer2)
4155#endif
4156 CASE (3)
4157#if __MAX_CONTR > 3 || __MAX_CONTR == 3
4158 CALL contract_pfsf(work, &
4159 nl_a, nl_b, nl_c, nl_d, &
4160 sphi_a, sphi_b, sphi_c, sphi_d, &
4161 primitives, &
4162 buffer1, buffer2)
4163#else
4164 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
4165 work, nl_a, nl_b, nl_c, nl_d, &
4166 sphi_a, &
4167 sphi_b, &
4168 sphi_c, &
4169 sphi_d, &
4170 primitives, &
4171 buffer1, buffer2)
4172#endif
4173 CASE (4)
4174#if __MAX_CONTR > 4 || __MAX_CONTR == 4
4175 CALL contract_pfsg(work, &
4176 nl_a, nl_b, nl_c, nl_d, &
4177 sphi_a, sphi_b, sphi_c, sphi_d, &
4178 primitives, &
4179 buffer1, buffer2)
4180#else
4181 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
4182 work, nl_a, nl_b, nl_c, nl_d, &
4183 sphi_a, &
4184 sphi_b, &
4185 sphi_c, &
4186 sphi_d, &
4187 primitives, &
4188 buffer1, buffer2)
4189#endif
4190 CASE DEFAULT
4191 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
4192 work, nl_a, nl_b, nl_c, nl_d, &
4193 sphi_a, &
4194 sphi_b, &
4195 sphi_c, &
4196 sphi_d, &
4197 primitives, &
4198 buffer1, buffer2)
4199 END SELECT
4200 CASE (1)
4201 SELECT CASE (n_d)
4202 CASE (0)
4203#if __MAX_CONTR > 3 || __MAX_CONTR == 3
4204 CALL contract_pfps(work, &
4205 nl_a, nl_b, nl_c, nl_d, &
4206 sphi_a, sphi_b, sphi_c, sphi_d, &
4207 primitives, &
4208 buffer1, buffer2)
4209#else
4210 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
4211 work, nl_a, nl_b, nl_c, nl_d, &
4212 sphi_a, &
4213 sphi_b, &
4214 sphi_c, &
4215 sphi_d, &
4216 primitives, &
4217 buffer1, buffer2)
4218#endif
4219 CASE (1)
4220#if __MAX_CONTR > 3 || __MAX_CONTR == 3
4221 CALL contract_pfpp(work, &
4222 nl_a, nl_b, nl_c, nl_d, &
4223 sphi_a, sphi_b, sphi_c, sphi_d, &
4224 primitives, &
4225 buffer1, buffer2)
4226#else
4227 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
4228 work, nl_a, nl_b, nl_c, nl_d, &
4229 sphi_a, &
4230 sphi_b, &
4231 sphi_c, &
4232 sphi_d, &
4233 primitives, &
4234 buffer1, buffer2)
4235#endif
4236 CASE (2)
4237#if __MAX_CONTR > 3 || __MAX_CONTR == 3
4238 CALL contract_pfpd(work, &
4239 nl_a, nl_b, nl_c, nl_d, &
4240 sphi_a, sphi_b, sphi_c, sphi_d, &
4241 primitives, &
4242 buffer1, buffer2)
4243#else
4244 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
4245 work, nl_a, nl_b, nl_c, nl_d, &
4246 sphi_a, &
4247 sphi_b, &
4248 sphi_c, &
4249 sphi_d, &
4250 primitives, &
4251 buffer1, buffer2)
4252#endif
4253 CASE (3)
4254#if __MAX_CONTR > 3 || __MAX_CONTR == 3
4255 CALL contract_pfpf(work, &
4256 nl_a, nl_b, nl_c, nl_d, &
4257 sphi_a, sphi_b, sphi_c, sphi_d, &
4258 primitives, &
4259 buffer1, buffer2)
4260#else
4261 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
4262 work, nl_a, nl_b, nl_c, nl_d, &
4263 sphi_a, &
4264 sphi_b, &
4265 sphi_c, &
4266 sphi_d, &
4267 primitives, &
4268 buffer1, buffer2)
4269#endif
4270 CASE (4)
4271#if __MAX_CONTR > 4 || __MAX_CONTR == 4
4272 CALL contract_pfpg(work, &
4273 nl_a, nl_b, nl_c, nl_d, &
4274 sphi_a, sphi_b, sphi_c, sphi_d, &
4275 primitives, &
4276 buffer1, buffer2)
4277#else
4278 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
4279 work, nl_a, nl_b, nl_c, nl_d, &
4280 sphi_a, &
4281 sphi_b, &
4282 sphi_c, &
4283 sphi_d, &
4284 primitives, &
4285 buffer1, buffer2)
4286#endif
4287 CASE DEFAULT
4288 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
4289 work, nl_a, nl_b, nl_c, nl_d, &
4290 sphi_a, &
4291 sphi_b, &
4292 sphi_c, &
4293 sphi_d, &
4294 primitives, &
4295 buffer1, buffer2)
4296 END SELECT
4297 CASE (2)
4298 SELECT CASE (n_d)
4299 CASE (0)
4300#if __MAX_CONTR > 3 || __MAX_CONTR == 3
4301 CALL contract_pfds(work, &
4302 nl_a, nl_b, nl_c, nl_d, &
4303 sphi_a, sphi_b, sphi_c, sphi_d, &
4304 primitives, &
4305 buffer1, buffer2)
4306#else
4307 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
4308 work, nl_a, nl_b, nl_c, nl_d, &
4309 sphi_a, &
4310 sphi_b, &
4311 sphi_c, &
4312 sphi_d, &
4313 primitives, &
4314 buffer1, buffer2)
4315#endif
4316 CASE (1)
4317#if __MAX_CONTR > 3 || __MAX_CONTR == 3
4318 CALL contract_pfdp(work, &
4319 nl_a, nl_b, nl_c, nl_d, &
4320 sphi_a, sphi_b, sphi_c, sphi_d, &
4321 primitives, &
4322 buffer1, buffer2)
4323#else
4324 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
4325 work, nl_a, nl_b, nl_c, nl_d, &
4326 sphi_a, &
4327 sphi_b, &
4328 sphi_c, &
4329 sphi_d, &
4330 primitives, &
4331 buffer1, buffer2)
4332#endif
4333 CASE (2)
4334#if __MAX_CONTR > 3 || __MAX_CONTR == 3
4335 CALL contract_pfdd(work, &
4336 nl_a, nl_b, nl_c, nl_d, &
4337 sphi_a, sphi_b, sphi_c, sphi_d, &
4338 primitives, &
4339 buffer1, buffer2)
4340#else
4341 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
4342 work, nl_a, nl_b, nl_c, nl_d, &
4343 sphi_a, &
4344 sphi_b, &
4345 sphi_c, &
4346 sphi_d, &
4347 primitives, &
4348 buffer1, buffer2)
4349#endif
4350 CASE (3)
4351#if __MAX_CONTR > 3 || __MAX_CONTR == 3
4352 CALL contract_pfdf(work, &
4353 nl_a, nl_b, nl_c, nl_d, &
4354 sphi_a, sphi_b, sphi_c, sphi_d, &
4355 primitives, &
4356 buffer1, buffer2)
4357#else
4358 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
4359 work, nl_a, nl_b, nl_c, nl_d, &
4360 sphi_a, &
4361 sphi_b, &
4362 sphi_c, &
4363 sphi_d, &
4364 primitives, &
4365 buffer1, buffer2)
4366#endif
4367 CASE (4)
4368#if __MAX_CONTR > 4 || __MAX_CONTR == 4
4369 CALL contract_pfdg(work, &
4370 nl_a, nl_b, nl_c, nl_d, &
4371 sphi_a, sphi_b, sphi_c, sphi_d, &
4372 primitives, &
4373 buffer1, buffer2)
4374#else
4375 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
4376 work, nl_a, nl_b, nl_c, nl_d, &
4377 sphi_a, &
4378 sphi_b, &
4379 sphi_c, &
4380 sphi_d, &
4381 primitives, &
4382 buffer1, buffer2)
4383#endif
4384 CASE DEFAULT
4385 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
4386 work, nl_a, nl_b, nl_c, nl_d, &
4387 sphi_a, &
4388 sphi_b, &
4389 sphi_c, &
4390 sphi_d, &
4391 primitives, &
4392 buffer1, buffer2)
4393 END SELECT
4394 CASE (3)
4395 SELECT CASE (n_d)
4396 CASE (0)
4397#if __MAX_CONTR > 3 || __MAX_CONTR == 3
4398 CALL contract_pffs(work, &
4399 nl_a, nl_b, nl_c, nl_d, &
4400 sphi_a, sphi_b, sphi_c, sphi_d, &
4401 primitives, &
4402 buffer1, buffer2)
4403#else
4404 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
4405 work, nl_a, nl_b, nl_c, nl_d, &
4406 sphi_a, &
4407 sphi_b, &
4408 sphi_c, &
4409 sphi_d, &
4410 primitives, &
4411 buffer1, buffer2)
4412#endif
4413 CASE (1)
4414#if __MAX_CONTR > 3 || __MAX_CONTR == 3
4415 CALL contract_pffp(work, &
4416 nl_a, nl_b, nl_c, nl_d, &
4417 sphi_a, sphi_b, sphi_c, sphi_d, &
4418 primitives, &
4419 buffer1, buffer2)
4420#else
4421 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
4422 work, nl_a, nl_b, nl_c, nl_d, &
4423 sphi_a, &
4424 sphi_b, &
4425 sphi_c, &
4426 sphi_d, &
4427 primitives, &
4428 buffer1, buffer2)
4429#endif
4430 CASE (2)
4431#if __MAX_CONTR > 3 || __MAX_CONTR == 3
4432 CALL contract_pffd(work, &
4433 nl_a, nl_b, nl_c, nl_d, &
4434 sphi_a, sphi_b, sphi_c, sphi_d, &
4435 primitives, &
4436 buffer1, buffer2)
4437#else
4438 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
4439 work, nl_a, nl_b, nl_c, nl_d, &
4440 sphi_a, &
4441 sphi_b, &
4442 sphi_c, &
4443 sphi_d, &
4444 primitives, &
4445 buffer1, buffer2)
4446#endif
4447 CASE (3)
4448#if __MAX_CONTR > 3 || __MAX_CONTR == 3
4449 CALL contract_pfff(work, &
4450 nl_a, nl_b, nl_c, nl_d, &
4451 sphi_a, sphi_b, sphi_c, sphi_d, &
4452 primitives, &
4453 buffer1, buffer2)
4454#else
4455 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
4456 work, nl_a, nl_b, nl_c, nl_d, &
4457 sphi_a, &
4458 sphi_b, &
4459 sphi_c, &
4460 sphi_d, &
4461 primitives, &
4462 buffer1, buffer2)
4463#endif
4464 CASE (4)
4465#if __MAX_CONTR > 4 || __MAX_CONTR == 4
4466 CALL contract_pffg(work, &
4467 nl_a, nl_b, nl_c, nl_d, &
4468 sphi_a, sphi_b, sphi_c, sphi_d, &
4469 primitives, &
4470 buffer1, buffer2)
4471#else
4472 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
4473 work, nl_a, nl_b, nl_c, nl_d, &
4474 sphi_a, &
4475 sphi_b, &
4476 sphi_c, &
4477 sphi_d, &
4478 primitives, &
4479 buffer1, buffer2)
4480#endif
4481 CASE DEFAULT
4482 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
4483 work, nl_a, nl_b, nl_c, nl_d, &
4484 sphi_a, &
4485 sphi_b, &
4486 sphi_c, &
4487 sphi_d, &
4488 primitives, &
4489 buffer1, buffer2)
4490 END SELECT
4491 CASE (4)
4492 SELECT CASE (n_d)
4493 CASE (0)
4494#if __MAX_CONTR > 4 || __MAX_CONTR == 4
4495 CALL contract_pfgs(work, &
4496 nl_a, nl_b, nl_c, nl_d, &
4497 sphi_a, sphi_b, sphi_c, sphi_d, &
4498 primitives, &
4499 buffer1, buffer2)
4500#else
4501 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
4502 work, nl_a, nl_b, nl_c, nl_d, &
4503 sphi_a, &
4504 sphi_b, &
4505 sphi_c, &
4506 sphi_d, &
4507 primitives, &
4508 buffer1, buffer2)
4509#endif
4510 CASE (1)
4511#if __MAX_CONTR > 4 || __MAX_CONTR == 4
4512 CALL contract_pfgp(work, &
4513 nl_a, nl_b, nl_c, nl_d, &
4514 sphi_a, sphi_b, sphi_c, sphi_d, &
4515 primitives, &
4516 buffer1, buffer2)
4517#else
4518 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
4519 work, nl_a, nl_b, nl_c, nl_d, &
4520 sphi_a, &
4521 sphi_b, &
4522 sphi_c, &
4523 sphi_d, &
4524 primitives, &
4525 buffer1, buffer2)
4526#endif
4527 CASE (2)
4528#if __MAX_CONTR > 4 || __MAX_CONTR == 4
4529 CALL contract_pfgd(work, &
4530 nl_a, nl_b, nl_c, nl_d, &
4531 sphi_a, sphi_b, sphi_c, sphi_d, &
4532 primitives, &
4533 buffer1, buffer2)
4534#else
4535 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
4536 work, nl_a, nl_b, nl_c, nl_d, &
4537 sphi_a, &
4538 sphi_b, &
4539 sphi_c, &
4540 sphi_d, &
4541 primitives, &
4542 buffer1, buffer2)
4543#endif
4544 CASE (3)
4545#if __MAX_CONTR > 4 || __MAX_CONTR == 4
4546 CALL contract_pfgf(work, &
4547 nl_a, nl_b, nl_c, nl_d, &
4548 sphi_a, sphi_b, sphi_c, sphi_d, &
4549 primitives, &
4550 buffer1, buffer2)
4551#else
4552 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
4553 work, nl_a, nl_b, nl_c, nl_d, &
4554 sphi_a, &
4555 sphi_b, &
4556 sphi_c, &
4557 sphi_d, &
4558 primitives, &
4559 buffer1, buffer2)
4560#endif
4561 CASE (4)
4562#if __MAX_CONTR > 4 || __MAX_CONTR == 4
4563 CALL contract_pfgg(work, &
4564 nl_a, nl_b, nl_c, nl_d, &
4565 sphi_a, sphi_b, sphi_c, sphi_d, &
4566 primitives, &
4567 buffer1, buffer2)
4568#else
4569 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
4570 work, nl_a, nl_b, nl_c, nl_d, &
4571 sphi_a, &
4572 sphi_b, &
4573 sphi_c, &
4574 sphi_d, &
4575 primitives, &
4576 buffer1, buffer2)
4577#endif
4578 CASE DEFAULT
4579 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
4580 work, nl_a, nl_b, nl_c, nl_d, &
4581 sphi_a, &
4582 sphi_b, &
4583 sphi_c, &
4584 sphi_d, &
4585 primitives, &
4586 buffer1, buffer2)
4587 END SELECT
4588 CASE DEFAULT
4589 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
4590 work, nl_a, nl_b, nl_c, nl_d, &
4591 sphi_a, &
4592 sphi_b, &
4593 sphi_c, &
4594 sphi_d, &
4595 primitives, &
4596 buffer1, buffer2)
4597 END SELECT
4598 CASE (4)
4599 SELECT CASE (n_c)
4600 CASE (0)
4601 SELECT CASE (n_d)
4602 CASE (0)
4603#if __MAX_CONTR > 4 || __MAX_CONTR == 4
4604 CALL contract_pgss(work, &
4605 nl_a, nl_b, nl_c, nl_d, &
4606 sphi_a, sphi_b, sphi_c, sphi_d, &
4607 primitives, &
4608 buffer1, buffer2)
4609#else
4610 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
4611 work, nl_a, nl_b, nl_c, nl_d, &
4612 sphi_a, &
4613 sphi_b, &
4614 sphi_c, &
4615 sphi_d, &
4616 primitives, &
4617 buffer1, buffer2)
4618#endif
4619 CASE (1)
4620#if __MAX_CONTR > 4 || __MAX_CONTR == 4
4621 CALL contract_pgsp(work, &
4622 nl_a, nl_b, nl_c, nl_d, &
4623 sphi_a, sphi_b, sphi_c, sphi_d, &
4624 primitives, &
4625 buffer1, buffer2)
4626#else
4627 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
4628 work, nl_a, nl_b, nl_c, nl_d, &
4629 sphi_a, &
4630 sphi_b, &
4631 sphi_c, &
4632 sphi_d, &
4633 primitives, &
4634 buffer1, buffer2)
4635#endif
4636 CASE (2)
4637#if __MAX_CONTR > 4 || __MAX_CONTR == 4
4638 CALL contract_pgsd(work, &
4639 nl_a, nl_b, nl_c, nl_d, &
4640 sphi_a, sphi_b, sphi_c, sphi_d, &
4641 primitives, &
4642 buffer1, buffer2)
4643#else
4644 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
4645 work, nl_a, nl_b, nl_c, nl_d, &
4646 sphi_a, &
4647 sphi_b, &
4648 sphi_c, &
4649 sphi_d, &
4650 primitives, &
4651 buffer1, buffer2)
4652#endif
4653 CASE (3)
4654#if __MAX_CONTR > 4 || __MAX_CONTR == 4
4655 CALL contract_pgsf(work, &
4656 nl_a, nl_b, nl_c, nl_d, &
4657 sphi_a, sphi_b, sphi_c, sphi_d, &
4658 primitives, &
4659 buffer1, buffer2)
4660#else
4661 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
4662 work, nl_a, nl_b, nl_c, nl_d, &
4663 sphi_a, &
4664 sphi_b, &
4665 sphi_c, &
4666 sphi_d, &
4667 primitives, &
4668 buffer1, buffer2)
4669#endif
4670 CASE (4)
4671#if __MAX_CONTR > 4 || __MAX_CONTR == 4
4672 CALL contract_pgsg(work, &
4673 nl_a, nl_b, nl_c, nl_d, &
4674 sphi_a, sphi_b, sphi_c, sphi_d, &
4675 primitives, &
4676 buffer1, buffer2)
4677#else
4678 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
4679 work, nl_a, nl_b, nl_c, nl_d, &
4680 sphi_a, &
4681 sphi_b, &
4682 sphi_c, &
4683 sphi_d, &
4684 primitives, &
4685 buffer1, buffer2)
4686#endif
4687 CASE DEFAULT
4688 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
4689 work, nl_a, nl_b, nl_c, nl_d, &
4690 sphi_a, &
4691 sphi_b, &
4692 sphi_c, &
4693 sphi_d, &
4694 primitives, &
4695 buffer1, buffer2)
4696 END SELECT
4697 CASE (1)
4698 SELECT CASE (n_d)
4699 CASE (0)
4700#if __MAX_CONTR > 4 || __MAX_CONTR == 4
4701 CALL contract_pgps(work, &
4702 nl_a, nl_b, nl_c, nl_d, &
4703 sphi_a, sphi_b, sphi_c, sphi_d, &
4704 primitives, &
4705 buffer1, buffer2)
4706#else
4707 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
4708 work, nl_a, nl_b, nl_c, nl_d, &
4709 sphi_a, &
4710 sphi_b, &
4711 sphi_c, &
4712 sphi_d, &
4713 primitives, &
4714 buffer1, buffer2)
4715#endif
4716 CASE (1)
4717#if __MAX_CONTR > 4 || __MAX_CONTR == 4
4718 CALL contract_pgpp(work, &
4719 nl_a, nl_b, nl_c, nl_d, &
4720 sphi_a, sphi_b, sphi_c, sphi_d, &
4721 primitives, &
4722 buffer1, buffer2)
4723#else
4724 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
4725 work, nl_a, nl_b, nl_c, nl_d, &
4726 sphi_a, &
4727 sphi_b, &
4728 sphi_c, &
4729 sphi_d, &
4730 primitives, &
4731 buffer1, buffer2)
4732#endif
4733 CASE (2)
4734#if __MAX_CONTR > 4 || __MAX_CONTR == 4
4735 CALL contract_pgpd(work, &
4736 nl_a, nl_b, nl_c, nl_d, &
4737 sphi_a, sphi_b, sphi_c, sphi_d, &
4738 primitives, &
4739 buffer1, buffer2)
4740#else
4741 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
4742 work, nl_a, nl_b, nl_c, nl_d, &
4743 sphi_a, &
4744 sphi_b, &
4745 sphi_c, &
4746 sphi_d, &
4747 primitives, &
4748 buffer1, buffer2)
4749#endif
4750 CASE (3)
4751#if __MAX_CONTR > 4 || __MAX_CONTR == 4
4752 CALL contract_pgpf(work, &
4753 nl_a, nl_b, nl_c, nl_d, &
4754 sphi_a, sphi_b, sphi_c, sphi_d, &
4755 primitives, &
4756 buffer1, buffer2)
4757#else
4758 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
4759 work, nl_a, nl_b, nl_c, nl_d, &
4760 sphi_a, &
4761 sphi_b, &
4762 sphi_c, &
4763 sphi_d, &
4764 primitives, &
4765 buffer1, buffer2)
4766#endif
4767 CASE (4)
4768#if __MAX_CONTR > 4 || __MAX_CONTR == 4
4769 CALL contract_pgpg(work, &
4770 nl_a, nl_b, nl_c, nl_d, &
4771 sphi_a, sphi_b, sphi_c, sphi_d, &
4772 primitives, &
4773 buffer1, buffer2)
4774#else
4775 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
4776 work, nl_a, nl_b, nl_c, nl_d, &
4777 sphi_a, &
4778 sphi_b, &
4779 sphi_c, &
4780 sphi_d, &
4781 primitives, &
4782 buffer1, buffer2)
4783#endif
4784 CASE DEFAULT
4785 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
4786 work, nl_a, nl_b, nl_c, nl_d, &
4787 sphi_a, &
4788 sphi_b, &
4789 sphi_c, &
4790 sphi_d, &
4791 primitives, &
4792 buffer1, buffer2)
4793 END SELECT
4794 CASE (2)
4795 SELECT CASE (n_d)
4796 CASE (0)
4797#if __MAX_CONTR > 4 || __MAX_CONTR == 4
4798 CALL contract_pgds(work, &
4799 nl_a, nl_b, nl_c, nl_d, &
4800 sphi_a, sphi_b, sphi_c, sphi_d, &
4801 primitives, &
4802 buffer1, buffer2)
4803#else
4804 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
4805 work, nl_a, nl_b, nl_c, nl_d, &
4806 sphi_a, &
4807 sphi_b, &
4808 sphi_c, &
4809 sphi_d, &
4810 primitives, &
4811 buffer1, buffer2)
4812#endif
4813 CASE (1)
4814#if __MAX_CONTR > 4 || __MAX_CONTR == 4
4815 CALL contract_pgdp(work, &
4816 nl_a, nl_b, nl_c, nl_d, &
4817 sphi_a, sphi_b, sphi_c, sphi_d, &
4818 primitives, &
4819 buffer1, buffer2)
4820#else
4821 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
4822 work, nl_a, nl_b, nl_c, nl_d, &
4823 sphi_a, &
4824 sphi_b, &
4825 sphi_c, &
4826 sphi_d, &
4827 primitives, &
4828 buffer1, buffer2)
4829#endif
4830 CASE (2)
4831#if __MAX_CONTR > 4 || __MAX_CONTR == 4
4832 CALL contract_pgdd(work, &
4833 nl_a, nl_b, nl_c, nl_d, &
4834 sphi_a, sphi_b, sphi_c, sphi_d, &
4835 primitives, &
4836 buffer1, buffer2)
4837#else
4838 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
4839 work, nl_a, nl_b, nl_c, nl_d, &
4840 sphi_a, &
4841 sphi_b, &
4842 sphi_c, &
4843 sphi_d, &
4844 primitives, &
4845 buffer1, buffer2)
4846#endif
4847 CASE (3)
4848#if __MAX_CONTR > 4 || __MAX_CONTR == 4
4849 CALL contract_pgdf(work, &
4850 nl_a, nl_b, nl_c, nl_d, &
4851 sphi_a, sphi_b, sphi_c, sphi_d, &
4852 primitives, &
4853 buffer1, buffer2)
4854#else
4855 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
4856 work, nl_a, nl_b, nl_c, nl_d, &
4857 sphi_a, &
4858 sphi_b, &
4859 sphi_c, &
4860 sphi_d, &
4861 primitives, &
4862 buffer1, buffer2)
4863#endif
4864 CASE (4)
4865#if __MAX_CONTR > 4 || __MAX_CONTR == 4
4866 CALL contract_pgdg(work, &
4867 nl_a, nl_b, nl_c, nl_d, &
4868 sphi_a, sphi_b, sphi_c, sphi_d, &
4869 primitives, &
4870 buffer1, buffer2)
4871#else
4872 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
4873 work, nl_a, nl_b, nl_c, nl_d, &
4874 sphi_a, &
4875 sphi_b, &
4876 sphi_c, &
4877 sphi_d, &
4878 primitives, &
4879 buffer1, buffer2)
4880#endif
4881 CASE DEFAULT
4882 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
4883 work, nl_a, nl_b, nl_c, nl_d, &
4884 sphi_a, &
4885 sphi_b, &
4886 sphi_c, &
4887 sphi_d, &
4888 primitives, &
4889 buffer1, buffer2)
4890 END SELECT
4891 CASE (3)
4892 SELECT CASE (n_d)
4893 CASE (0)
4894#if __MAX_CONTR > 4 || __MAX_CONTR == 4
4895 CALL contract_pgfs(work, &
4896 nl_a, nl_b, nl_c, nl_d, &
4897 sphi_a, sphi_b, sphi_c, sphi_d, &
4898 primitives, &
4899 buffer1, buffer2)
4900#else
4901 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
4902 work, nl_a, nl_b, nl_c, nl_d, &
4903 sphi_a, &
4904 sphi_b, &
4905 sphi_c, &
4906 sphi_d, &
4907 primitives, &
4908 buffer1, buffer2)
4909#endif
4910 CASE (1)
4911#if __MAX_CONTR > 4 || __MAX_CONTR == 4
4912 CALL contract_pgfp(work, &
4913 nl_a, nl_b, nl_c, nl_d, &
4914 sphi_a, sphi_b, sphi_c, sphi_d, &
4915 primitives, &
4916 buffer1, buffer2)
4917#else
4918 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
4919 work, nl_a, nl_b, nl_c, nl_d, &
4920 sphi_a, &
4921 sphi_b, &
4922 sphi_c, &
4923 sphi_d, &
4924 primitives, &
4925 buffer1, buffer2)
4926#endif
4927 CASE (2)
4928#if __MAX_CONTR > 4 || __MAX_CONTR == 4
4929 CALL contract_pgfd(work, &
4930 nl_a, nl_b, nl_c, nl_d, &
4931 sphi_a, sphi_b, sphi_c, sphi_d, &
4932 primitives, &
4933 buffer1, buffer2)
4934#else
4935 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
4936 work, nl_a, nl_b, nl_c, nl_d, &
4937 sphi_a, &
4938 sphi_b, &
4939 sphi_c, &
4940 sphi_d, &
4941 primitives, &
4942 buffer1, buffer2)
4943#endif
4944 CASE (3)
4945#if __MAX_CONTR > 4 || __MAX_CONTR == 4
4946 CALL contract_pgff(work, &
4947 nl_a, nl_b, nl_c, nl_d, &
4948 sphi_a, sphi_b, sphi_c, sphi_d, &
4949 primitives, &
4950 buffer1, buffer2)
4951#else
4952 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
4953 work, nl_a, nl_b, nl_c, nl_d, &
4954 sphi_a, &
4955 sphi_b, &
4956 sphi_c, &
4957 sphi_d, &
4958 primitives, &
4959 buffer1, buffer2)
4960#endif
4961 CASE (4)
4962#if __MAX_CONTR > 4 || __MAX_CONTR == 4
4963 CALL contract_pgfg(work, &
4964 nl_a, nl_b, nl_c, nl_d, &
4965 sphi_a, sphi_b, sphi_c, sphi_d, &
4966 primitives, &
4967 buffer1, buffer2)
4968#else
4969 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
4970 work, nl_a, nl_b, nl_c, nl_d, &
4971 sphi_a, &
4972 sphi_b, &
4973 sphi_c, &
4974 sphi_d, &
4975 primitives, &
4976 buffer1, buffer2)
4977#endif
4978 CASE DEFAULT
4979 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
4980 work, nl_a, nl_b, nl_c, nl_d, &
4981 sphi_a, &
4982 sphi_b, &
4983 sphi_c, &
4984 sphi_d, &
4985 primitives, &
4986 buffer1, buffer2)
4987 END SELECT
4988 CASE (4)
4989 SELECT CASE (n_d)
4990 CASE (0)
4991#if __MAX_CONTR > 4 || __MAX_CONTR == 4
4992 CALL contract_pggs(work, &
4993 nl_a, nl_b, nl_c, nl_d, &
4994 sphi_a, sphi_b, sphi_c, sphi_d, &
4995 primitives, &
4996 buffer1, buffer2)
4997#else
4998 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
4999 work, nl_a, nl_b, nl_c, nl_d, &
5000 sphi_a, &
5001 sphi_b, &
5002 sphi_c, &
5003 sphi_d, &
5004 primitives, &
5005 buffer1, buffer2)
5006#endif
5007 CASE (1)
5008#if __MAX_CONTR > 4 || __MAX_CONTR == 4
5009 CALL contract_pggp(work, &
5010 nl_a, nl_b, nl_c, nl_d, &
5011 sphi_a, sphi_b, sphi_c, sphi_d, &
5012 primitives, &
5013 buffer1, buffer2)
5014#else
5015 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
5016 work, nl_a, nl_b, nl_c, nl_d, &
5017 sphi_a, &
5018 sphi_b, &
5019 sphi_c, &
5020 sphi_d, &
5021 primitives, &
5022 buffer1, buffer2)
5023#endif
5024 CASE (2)
5025#if __MAX_CONTR > 4 || __MAX_CONTR == 4
5026 CALL contract_pggd(work, &
5027 nl_a, nl_b, nl_c, nl_d, &
5028 sphi_a, sphi_b, sphi_c, sphi_d, &
5029 primitives, &
5030 buffer1, buffer2)
5031#else
5032 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
5033 work, nl_a, nl_b, nl_c, nl_d, &
5034 sphi_a, &
5035 sphi_b, &
5036 sphi_c, &
5037 sphi_d, &
5038 primitives, &
5039 buffer1, buffer2)
5040#endif
5041 CASE (3)
5042#if __MAX_CONTR > 4 || __MAX_CONTR == 4
5043 CALL contract_pggf(work, &
5044 nl_a, nl_b, nl_c, nl_d, &
5045 sphi_a, sphi_b, sphi_c, sphi_d, &
5046 primitives, &
5047 buffer1, buffer2)
5048#else
5049 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
5050 work, nl_a, nl_b, nl_c, nl_d, &
5051 sphi_a, &
5052 sphi_b, &
5053 sphi_c, &
5054 sphi_d, &
5055 primitives, &
5056 buffer1, buffer2)
5057#endif
5058 CASE (4)
5059#if __MAX_CONTR > 4 || __MAX_CONTR == 4
5060 CALL contract_pggg(work, &
5061 nl_a, nl_b, nl_c, nl_d, &
5062 sphi_a, sphi_b, sphi_c, sphi_d, &
5063 primitives, &
5064 buffer1, buffer2)
5065#else
5066 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
5067 work, nl_a, nl_b, nl_c, nl_d, &
5068 sphi_a, &
5069 sphi_b, &
5070 sphi_c, &
5071 sphi_d, &
5072 primitives, &
5073 buffer1, buffer2)
5074#endif
5075 CASE DEFAULT
5076 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
5077 work, nl_a, nl_b, nl_c, nl_d, &
5078 sphi_a, &
5079 sphi_b, &
5080 sphi_c, &
5081 sphi_d, &
5082 primitives, &
5083 buffer1, buffer2)
5084 END SELECT
5085 CASE DEFAULT
5086 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
5087 work, nl_a, nl_b, nl_c, nl_d, &
5088 sphi_a, &
5089 sphi_b, &
5090 sphi_c, &
5091 sphi_d, &
5092 primitives, &
5093 buffer1, buffer2)
5094 END SELECT
5095 CASE DEFAULT
5096 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
5097 work, nl_a, nl_b, nl_c, nl_d, &
5098 sphi_a, &
5099 sphi_b, &
5100 sphi_c, &
5101 sphi_d, &
5102 primitives, &
5103 buffer1, buffer2)
5104 END SELECT
5105 CASE (2)
5106 SELECT CASE (n_b)
5107 CASE (0)
5108 SELECT CASE (n_c)
5109 CASE (0)
5110 SELECT CASE (n_d)
5111 CASE (0)
5112#if __MAX_CONTR > 2 || __MAX_CONTR == 2
5113 CALL contract_dsss(work, &
5114 nl_a, nl_b, nl_c, nl_d, &
5115 sphi_a, sphi_b, sphi_c, sphi_d, &
5116 primitives, &
5117 buffer1, buffer2)
5118#else
5119 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
5120 work, nl_a, nl_b, nl_c, nl_d, &
5121 sphi_a, &
5122 sphi_b, &
5123 sphi_c, &
5124 sphi_d, &
5125 primitives, &
5126 buffer1, buffer2)
5127#endif
5128 CASE (1)
5129#if __MAX_CONTR > 2 || __MAX_CONTR == 2
5130 CALL contract_dssp(work, &
5131 nl_a, nl_b, nl_c, nl_d, &
5132 sphi_a, sphi_b, sphi_c, sphi_d, &
5133 primitives, &
5134 buffer1, buffer2)
5135#else
5136 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
5137 work, nl_a, nl_b, nl_c, nl_d, &
5138 sphi_a, &
5139 sphi_b, &
5140 sphi_c, &
5141 sphi_d, &
5142 primitives, &
5143 buffer1, buffer2)
5144#endif
5145 CASE (2)
5146#if __MAX_CONTR > 2 || __MAX_CONTR == 2
5147 CALL contract_dssd(work, &
5148 nl_a, nl_b, nl_c, nl_d, &
5149 sphi_a, sphi_b, sphi_c, sphi_d, &
5150 primitives, &
5151 buffer1, buffer2)
5152#else
5153 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
5154 work, nl_a, nl_b, nl_c, nl_d, &
5155 sphi_a, &
5156 sphi_b, &
5157 sphi_c, &
5158 sphi_d, &
5159 primitives, &
5160 buffer1, buffer2)
5161#endif
5162 CASE (3)
5163#if __MAX_CONTR > 3 || __MAX_CONTR == 3
5164 CALL contract_dssf(work, &
5165 nl_a, nl_b, nl_c, nl_d, &
5166 sphi_a, sphi_b, sphi_c, sphi_d, &
5167 primitives, &
5168 buffer1, buffer2)
5169#else
5170 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
5171 work, nl_a, nl_b, nl_c, nl_d, &
5172 sphi_a, &
5173 sphi_b, &
5174 sphi_c, &
5175 sphi_d, &
5176 primitives, &
5177 buffer1, buffer2)
5178#endif
5179 CASE (4)
5180#if __MAX_CONTR > 4 || __MAX_CONTR == 4
5181 CALL contract_dssg(work, &
5182 nl_a, nl_b, nl_c, nl_d, &
5183 sphi_a, sphi_b, sphi_c, sphi_d, &
5184 primitives, &
5185 buffer1, buffer2)
5186#else
5187 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
5188 work, nl_a, nl_b, nl_c, nl_d, &
5189 sphi_a, &
5190 sphi_b, &
5191 sphi_c, &
5192 sphi_d, &
5193 primitives, &
5194 buffer1, buffer2)
5195#endif
5196 CASE DEFAULT
5197 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
5198 work, nl_a, nl_b, nl_c, nl_d, &
5199 sphi_a, &
5200 sphi_b, &
5201 sphi_c, &
5202 sphi_d, &
5203 primitives, &
5204 buffer1, buffer2)
5205 END SELECT
5206 CASE (1)
5207 SELECT CASE (n_d)
5208 CASE (0)
5209#if __MAX_CONTR > 2 || __MAX_CONTR == 2
5210 CALL contract_dsps(work, &
5211 nl_a, nl_b, nl_c, nl_d, &
5212 sphi_a, sphi_b, sphi_c, sphi_d, &
5213 primitives, &
5214 buffer1, buffer2)
5215#else
5216 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
5217 work, nl_a, nl_b, nl_c, nl_d, &
5218 sphi_a, &
5219 sphi_b, &
5220 sphi_c, &
5221 sphi_d, &
5222 primitives, &
5223 buffer1, buffer2)
5224#endif
5225 CASE (1)
5226#if __MAX_CONTR > 2 || __MAX_CONTR == 2
5227 CALL contract_dspp(work, &
5228 nl_a, nl_b, nl_c, nl_d, &
5229 sphi_a, sphi_b, sphi_c, sphi_d, &
5230 primitives, &
5231 buffer1, buffer2)
5232#else
5233 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
5234 work, nl_a, nl_b, nl_c, nl_d, &
5235 sphi_a, &
5236 sphi_b, &
5237 sphi_c, &
5238 sphi_d, &
5239 primitives, &
5240 buffer1, buffer2)
5241#endif
5242 CASE (2)
5243#if __MAX_CONTR > 2 || __MAX_CONTR == 2
5244 CALL contract_dspd(work, &
5245 nl_a, nl_b, nl_c, nl_d, &
5246 sphi_a, sphi_b, sphi_c, sphi_d, &
5247 primitives, &
5248 buffer1, buffer2)
5249#else
5250 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
5251 work, nl_a, nl_b, nl_c, nl_d, &
5252 sphi_a, &
5253 sphi_b, &
5254 sphi_c, &
5255 sphi_d, &
5256 primitives, &
5257 buffer1, buffer2)
5258#endif
5259 CASE (3)
5260#if __MAX_CONTR > 3 || __MAX_CONTR == 3
5261 CALL contract_dspf(work, &
5262 nl_a, nl_b, nl_c, nl_d, &
5263 sphi_a, sphi_b, sphi_c, sphi_d, &
5264 primitives, &
5265 buffer1, buffer2)
5266#else
5267 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
5268 work, nl_a, nl_b, nl_c, nl_d, &
5269 sphi_a, &
5270 sphi_b, &
5271 sphi_c, &
5272 sphi_d, &
5273 primitives, &
5274 buffer1, buffer2)
5275#endif
5276 CASE (4)
5277#if __MAX_CONTR > 4 || __MAX_CONTR == 4
5278 CALL contract_dspg(work, &
5279 nl_a, nl_b, nl_c, nl_d, &
5280 sphi_a, sphi_b, sphi_c, sphi_d, &
5281 primitives, &
5282 buffer1, buffer2)
5283#else
5284 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
5285 work, nl_a, nl_b, nl_c, nl_d, &
5286 sphi_a, &
5287 sphi_b, &
5288 sphi_c, &
5289 sphi_d, &
5290 primitives, &
5291 buffer1, buffer2)
5292#endif
5293 CASE DEFAULT
5294 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
5295 work, nl_a, nl_b, nl_c, nl_d, &
5296 sphi_a, &
5297 sphi_b, &
5298 sphi_c, &
5299 sphi_d, &
5300 primitives, &
5301 buffer1, buffer2)
5302 END SELECT
5303 CASE (2)
5304 SELECT CASE (n_d)
5305 CASE (0)
5306#if __MAX_CONTR > 2 || __MAX_CONTR == 2
5307 CALL contract_dsds(work, &
5308 nl_a, nl_b, nl_c, nl_d, &
5309 sphi_a, sphi_b, sphi_c, sphi_d, &
5310 primitives, &
5311 buffer1, buffer2)
5312#else
5313 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
5314 work, nl_a, nl_b, nl_c, nl_d, &
5315 sphi_a, &
5316 sphi_b, &
5317 sphi_c, &
5318 sphi_d, &
5319 primitives, &
5320 buffer1, buffer2)
5321#endif
5322 CASE (1)
5323#if __MAX_CONTR > 2 || __MAX_CONTR == 2
5324 CALL contract_dsdp(work, &
5325 nl_a, nl_b, nl_c, nl_d, &
5326 sphi_a, sphi_b, sphi_c, sphi_d, &
5327 primitives, &
5328 buffer1, buffer2)
5329#else
5330 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
5331 work, nl_a, nl_b, nl_c, nl_d, &
5332 sphi_a, &
5333 sphi_b, &
5334 sphi_c, &
5335 sphi_d, &
5336 primitives, &
5337 buffer1, buffer2)
5338#endif
5339 CASE (2)
5340#if __MAX_CONTR > 2 || __MAX_CONTR == 2
5341 CALL contract_dsdd(work, &
5342 nl_a, nl_b, nl_c, nl_d, &
5343 sphi_a, sphi_b, sphi_c, sphi_d, &
5344 primitives, &
5345 buffer1, buffer2)
5346#else
5347 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
5348 work, nl_a, nl_b, nl_c, nl_d, &
5349 sphi_a, &
5350 sphi_b, &
5351 sphi_c, &
5352 sphi_d, &
5353 primitives, &
5354 buffer1, buffer2)
5355#endif
5356 CASE (3)
5357#if __MAX_CONTR > 3 || __MAX_CONTR == 3
5358 CALL contract_dsdf(work, &
5359 nl_a, nl_b, nl_c, nl_d, &
5360 sphi_a, sphi_b, sphi_c, sphi_d, &
5361 primitives, &
5362 buffer1, buffer2)
5363#else
5364 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
5365 work, nl_a, nl_b, nl_c, nl_d, &
5366 sphi_a, &
5367 sphi_b, &
5368 sphi_c, &
5369 sphi_d, &
5370 primitives, &
5371 buffer1, buffer2)
5372#endif
5373 CASE (4)
5374#if __MAX_CONTR > 4 || __MAX_CONTR == 4
5375 CALL contract_dsdg(work, &
5376 nl_a, nl_b, nl_c, nl_d, &
5377 sphi_a, sphi_b, sphi_c, sphi_d, &
5378 primitives, &
5379 buffer1, buffer2)
5380#else
5381 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
5382 work, nl_a, nl_b, nl_c, nl_d, &
5383 sphi_a, &
5384 sphi_b, &
5385 sphi_c, &
5386 sphi_d, &
5387 primitives, &
5388 buffer1, buffer2)
5389#endif
5390 CASE DEFAULT
5391 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
5392 work, nl_a, nl_b, nl_c, nl_d, &
5393 sphi_a, &
5394 sphi_b, &
5395 sphi_c, &
5396 sphi_d, &
5397 primitives, &
5398 buffer1, buffer2)
5399 END SELECT
5400 CASE (3)
5401 SELECT CASE (n_d)
5402 CASE (0)
5403#if __MAX_CONTR > 3 || __MAX_CONTR == 3
5404 CALL contract_dsfs(work, &
5405 nl_a, nl_b, nl_c, nl_d, &
5406 sphi_a, sphi_b, sphi_c, sphi_d, &
5407 primitives, &
5408 buffer1, buffer2)
5409#else
5410 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
5411 work, nl_a, nl_b, nl_c, nl_d, &
5412 sphi_a, &
5413 sphi_b, &
5414 sphi_c, &
5415 sphi_d, &
5416 primitives, &
5417 buffer1, buffer2)
5418#endif
5419 CASE (1)
5420#if __MAX_CONTR > 3 || __MAX_CONTR == 3
5421 CALL contract_dsfp(work, &
5422 nl_a, nl_b, nl_c, nl_d, &
5423 sphi_a, sphi_b, sphi_c, sphi_d, &
5424 primitives, &
5425 buffer1, buffer2)
5426#else
5427 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
5428 work, nl_a, nl_b, nl_c, nl_d, &
5429 sphi_a, &
5430 sphi_b, &
5431 sphi_c, &
5432 sphi_d, &
5433 primitives, &
5434 buffer1, buffer2)
5435#endif
5436 CASE (2)
5437#if __MAX_CONTR > 3 || __MAX_CONTR == 3
5438 CALL contract_dsfd(work, &
5439 nl_a, nl_b, nl_c, nl_d, &
5440 sphi_a, sphi_b, sphi_c, sphi_d, &
5441 primitives, &
5442 buffer1, buffer2)
5443#else
5444 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
5445 work, nl_a, nl_b, nl_c, nl_d, &
5446 sphi_a, &
5447 sphi_b, &
5448 sphi_c, &
5449 sphi_d, &
5450 primitives, &
5451 buffer1, buffer2)
5452#endif
5453 CASE (3)
5454#if __MAX_CONTR > 3 || __MAX_CONTR == 3
5455 CALL contract_dsff(work, &
5456 nl_a, nl_b, nl_c, nl_d, &
5457 sphi_a, sphi_b, sphi_c, sphi_d, &
5458 primitives, &
5459 buffer1, buffer2)
5460#else
5461 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
5462 work, nl_a, nl_b, nl_c, nl_d, &
5463 sphi_a, &
5464 sphi_b, &
5465 sphi_c, &
5466 sphi_d, &
5467 primitives, &
5468 buffer1, buffer2)
5469#endif
5470 CASE (4)
5471#if __MAX_CONTR > 4 || __MAX_CONTR == 4
5472 CALL contract_dsfg(work, &
5473 nl_a, nl_b, nl_c, nl_d, &
5474 sphi_a, sphi_b, sphi_c, sphi_d, &
5475 primitives, &
5476 buffer1, buffer2)
5477#else
5478 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
5479 work, nl_a, nl_b, nl_c, nl_d, &
5480 sphi_a, &
5481 sphi_b, &
5482 sphi_c, &
5483 sphi_d, &
5484 primitives, &
5485 buffer1, buffer2)
5486#endif
5487 CASE DEFAULT
5488 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
5489 work, nl_a, nl_b, nl_c, nl_d, &
5490 sphi_a, &
5491 sphi_b, &
5492 sphi_c, &
5493 sphi_d, &
5494 primitives, &
5495 buffer1, buffer2)
5496 END SELECT
5497 CASE (4)
5498 SELECT CASE (n_d)
5499 CASE (0)
5500#if __MAX_CONTR > 4 || __MAX_CONTR == 4
5501 CALL contract_dsgs(work, &
5502 nl_a, nl_b, nl_c, nl_d, &
5503 sphi_a, sphi_b, sphi_c, sphi_d, &
5504 primitives, &
5505 buffer1, buffer2)
5506#else
5507 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
5508 work, nl_a, nl_b, nl_c, nl_d, &
5509 sphi_a, &
5510 sphi_b, &
5511 sphi_c, &
5512 sphi_d, &
5513 primitives, &
5514 buffer1, buffer2)
5515#endif
5516 CASE (1)
5517#if __MAX_CONTR > 4 || __MAX_CONTR == 4
5518 CALL contract_dsgp(work, &
5519 nl_a, nl_b, nl_c, nl_d, &
5520 sphi_a, sphi_b, sphi_c, sphi_d, &
5521 primitives, &
5522 buffer1, buffer2)
5523#else
5524 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
5525 work, nl_a, nl_b, nl_c, nl_d, &
5526 sphi_a, &
5527 sphi_b, &
5528 sphi_c, &
5529 sphi_d, &
5530 primitives, &
5531 buffer1, buffer2)
5532#endif
5533 CASE (2)
5534#if __MAX_CONTR > 4 || __MAX_CONTR == 4
5535 CALL contract_dsgd(work, &
5536 nl_a, nl_b, nl_c, nl_d, &
5537 sphi_a, sphi_b, sphi_c, sphi_d, &
5538 primitives, &
5539 buffer1, buffer2)
5540#else
5541 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
5542 work, nl_a, nl_b, nl_c, nl_d, &
5543 sphi_a, &
5544 sphi_b, &
5545 sphi_c, &
5546 sphi_d, &
5547 primitives, &
5548 buffer1, buffer2)
5549#endif
5550 CASE (3)
5551#if __MAX_CONTR > 4 || __MAX_CONTR == 4
5552 CALL contract_dsgf(work, &
5553 nl_a, nl_b, nl_c, nl_d, &
5554 sphi_a, sphi_b, sphi_c, sphi_d, &
5555 primitives, &
5556 buffer1, buffer2)
5557#else
5558 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
5559 work, nl_a, nl_b, nl_c, nl_d, &
5560 sphi_a, &
5561 sphi_b, &
5562 sphi_c, &
5563 sphi_d, &
5564 primitives, &
5565 buffer1, buffer2)
5566#endif
5567 CASE (4)
5568#if __MAX_CONTR > 4 || __MAX_CONTR == 4
5569 CALL contract_dsgg(work, &
5570 nl_a, nl_b, nl_c, nl_d, &
5571 sphi_a, sphi_b, sphi_c, sphi_d, &
5572 primitives, &
5573 buffer1, buffer2)
5574#else
5575 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
5576 work, nl_a, nl_b, nl_c, nl_d, &
5577 sphi_a, &
5578 sphi_b, &
5579 sphi_c, &
5580 sphi_d, &
5581 primitives, &
5582 buffer1, buffer2)
5583#endif
5584 CASE DEFAULT
5585 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
5586 work, nl_a, nl_b, nl_c, nl_d, &
5587 sphi_a, &
5588 sphi_b, &
5589 sphi_c, &
5590 sphi_d, &
5591 primitives, &
5592 buffer1, buffer2)
5593 END SELECT
5594 CASE DEFAULT
5595 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
5596 work, nl_a, nl_b, nl_c, nl_d, &
5597 sphi_a, &
5598 sphi_b, &
5599 sphi_c, &
5600 sphi_d, &
5601 primitives, &
5602 buffer1, buffer2)
5603 END SELECT
5604 CASE (1)
5605 SELECT CASE (n_c)
5606 CASE (0)
5607 SELECT CASE (n_d)
5608 CASE (0)
5609#if __MAX_CONTR > 2 || __MAX_CONTR == 2
5610 CALL contract_dpss(work, &
5611 nl_a, nl_b, nl_c, nl_d, &
5612 sphi_a, sphi_b, sphi_c, sphi_d, &
5613 primitives, &
5614 buffer1, buffer2)
5615#else
5616 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
5617 work, nl_a, nl_b, nl_c, nl_d, &
5618 sphi_a, &
5619 sphi_b, &
5620 sphi_c, &
5621 sphi_d, &
5622 primitives, &
5623 buffer1, buffer2)
5624#endif
5625 CASE (1)
5626#if __MAX_CONTR > 2 || __MAX_CONTR == 2
5627 CALL contract_dpsp(work, &
5628 nl_a, nl_b, nl_c, nl_d, &
5629 sphi_a, sphi_b, sphi_c, sphi_d, &
5630 primitives, &
5631 buffer1, buffer2)
5632#else
5633 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
5634 work, nl_a, nl_b, nl_c, nl_d, &
5635 sphi_a, &
5636 sphi_b, &
5637 sphi_c, &
5638 sphi_d, &
5639 primitives, &
5640 buffer1, buffer2)
5641#endif
5642 CASE (2)
5643#if __MAX_CONTR > 2 || __MAX_CONTR == 2
5644 CALL contract_dpsd(work, &
5645 nl_a, nl_b, nl_c, nl_d, &
5646 sphi_a, sphi_b, sphi_c, sphi_d, &
5647 primitives, &
5648 buffer1, buffer2)
5649#else
5650 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
5651 work, nl_a, nl_b, nl_c, nl_d, &
5652 sphi_a, &
5653 sphi_b, &
5654 sphi_c, &
5655 sphi_d, &
5656 primitives, &
5657 buffer1, buffer2)
5658#endif
5659 CASE (3)
5660#if __MAX_CONTR > 3 || __MAX_CONTR == 3
5661 CALL contract_dpsf(work, &
5662 nl_a, nl_b, nl_c, nl_d, &
5663 sphi_a, sphi_b, sphi_c, sphi_d, &
5664 primitives, &
5665 buffer1, buffer2)
5666#else
5667 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
5668 work, nl_a, nl_b, nl_c, nl_d, &
5669 sphi_a, &
5670 sphi_b, &
5671 sphi_c, &
5672 sphi_d, &
5673 primitives, &
5674 buffer1, buffer2)
5675#endif
5676 CASE (4)
5677#if __MAX_CONTR > 4 || __MAX_CONTR == 4
5678 CALL contract_dpsg(work, &
5679 nl_a, nl_b, nl_c, nl_d, &
5680 sphi_a, sphi_b, sphi_c, sphi_d, &
5681 primitives, &
5682 buffer1, buffer2)
5683#else
5684 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
5685 work, nl_a, nl_b, nl_c, nl_d, &
5686 sphi_a, &
5687 sphi_b, &
5688 sphi_c, &
5689 sphi_d, &
5690 primitives, &
5691 buffer1, buffer2)
5692#endif
5693 CASE DEFAULT
5694 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
5695 work, nl_a, nl_b, nl_c, nl_d, &
5696 sphi_a, &
5697 sphi_b, &
5698 sphi_c, &
5699 sphi_d, &
5700 primitives, &
5701 buffer1, buffer2)
5702 END SELECT
5703 CASE (1)
5704 SELECT CASE (n_d)
5705 CASE (0)
5706#if __MAX_CONTR > 2 || __MAX_CONTR == 2
5707 CALL contract_dpps(work, &
5708 nl_a, nl_b, nl_c, nl_d, &
5709 sphi_a, sphi_b, sphi_c, sphi_d, &
5710 primitives, &
5711 buffer1, buffer2)
5712#else
5713 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
5714 work, nl_a, nl_b, nl_c, nl_d, &
5715 sphi_a, &
5716 sphi_b, &
5717 sphi_c, &
5718 sphi_d, &
5719 primitives, &
5720 buffer1, buffer2)
5721#endif
5722 CASE (1)
5723#if __MAX_CONTR > 2 || __MAX_CONTR == 2
5724 CALL contract_dppp(work, &
5725 nl_a, nl_b, nl_c, nl_d, &
5726 sphi_a, sphi_b, sphi_c, sphi_d, &
5727 primitives, &
5728 buffer1, buffer2)
5729#else
5730 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
5731 work, nl_a, nl_b, nl_c, nl_d, &
5732 sphi_a, &
5733 sphi_b, &
5734 sphi_c, &
5735 sphi_d, &
5736 primitives, &
5737 buffer1, buffer2)
5738#endif
5739 CASE (2)
5740#if __MAX_CONTR > 2 || __MAX_CONTR == 2
5741 CALL contract_dppd(work, &
5742 nl_a, nl_b, nl_c, nl_d, &
5743 sphi_a, sphi_b, sphi_c, sphi_d, &
5744 primitives, &
5745 buffer1, buffer2)
5746#else
5747 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
5748 work, nl_a, nl_b, nl_c, nl_d, &
5749 sphi_a, &
5750 sphi_b, &
5751 sphi_c, &
5752 sphi_d, &
5753 primitives, &
5754 buffer1, buffer2)
5755#endif
5756 CASE (3)
5757#if __MAX_CONTR > 3 || __MAX_CONTR == 3
5758 CALL contract_dppf(work, &
5759 nl_a, nl_b, nl_c, nl_d, &
5760 sphi_a, sphi_b, sphi_c, sphi_d, &
5761 primitives, &
5762 buffer1, buffer2)
5763#else
5764 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
5765 work, nl_a, nl_b, nl_c, nl_d, &
5766 sphi_a, &
5767 sphi_b, &
5768 sphi_c, &
5769 sphi_d, &
5770 primitives, &
5771 buffer1, buffer2)
5772#endif
5773 CASE (4)
5774#if __MAX_CONTR > 4 || __MAX_CONTR == 4
5775 CALL contract_dppg(work, &
5776 nl_a, nl_b, nl_c, nl_d, &
5777 sphi_a, sphi_b, sphi_c, sphi_d, &
5778 primitives, &
5779 buffer1, buffer2)
5780#else
5781 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
5782 work, nl_a, nl_b, nl_c, nl_d, &
5783 sphi_a, &
5784 sphi_b, &
5785 sphi_c, &
5786 sphi_d, &
5787 primitives, &
5788 buffer1, buffer2)
5789#endif
5790 CASE DEFAULT
5791 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
5792 work, nl_a, nl_b, nl_c, nl_d, &
5793 sphi_a, &
5794 sphi_b, &
5795 sphi_c, &
5796 sphi_d, &
5797 primitives, &
5798 buffer1, buffer2)
5799 END SELECT
5800 CASE (2)
5801 SELECT CASE (n_d)
5802 CASE (0)
5803#if __MAX_CONTR > 2 || __MAX_CONTR == 2
5804 CALL contract_dpds(work, &
5805 nl_a, nl_b, nl_c, nl_d, &
5806 sphi_a, sphi_b, sphi_c, sphi_d, &
5807 primitives, &
5808 buffer1, buffer2)
5809#else
5810 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
5811 work, nl_a, nl_b, nl_c, nl_d, &
5812 sphi_a, &
5813 sphi_b, &
5814 sphi_c, &
5815 sphi_d, &
5816 primitives, &
5817 buffer1, buffer2)
5818#endif
5819 CASE (1)
5820#if __MAX_CONTR > 2 || __MAX_CONTR == 2
5821 CALL contract_dpdp(work, &
5822 nl_a, nl_b, nl_c, nl_d, &
5823 sphi_a, sphi_b, sphi_c, sphi_d, &
5824 primitives, &
5825 buffer1, buffer2)
5826#else
5827 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
5828 work, nl_a, nl_b, nl_c, nl_d, &
5829 sphi_a, &
5830 sphi_b, &
5831 sphi_c, &
5832 sphi_d, &
5833 primitives, &
5834 buffer1, buffer2)
5835#endif
5836 CASE (2)
5837#if __MAX_CONTR > 2 || __MAX_CONTR == 2
5838 CALL contract_dpdd(work, &
5839 nl_a, nl_b, nl_c, nl_d, &
5840 sphi_a, sphi_b, sphi_c, sphi_d, &
5841 primitives, &
5842 buffer1, buffer2)
5843#else
5844 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
5845 work, nl_a, nl_b, nl_c, nl_d, &
5846 sphi_a, &
5847 sphi_b, &
5848 sphi_c, &
5849 sphi_d, &
5850 primitives, &
5851 buffer1, buffer2)
5852#endif
5853 CASE (3)
5854#if __MAX_CONTR > 3 || __MAX_CONTR == 3
5855 CALL contract_dpdf(work, &
5856 nl_a, nl_b, nl_c, nl_d, &
5857 sphi_a, sphi_b, sphi_c, sphi_d, &
5858 primitives, &
5859 buffer1, buffer2)
5860#else
5861 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
5862 work, nl_a, nl_b, nl_c, nl_d, &
5863 sphi_a, &
5864 sphi_b, &
5865 sphi_c, &
5866 sphi_d, &
5867 primitives, &
5868 buffer1, buffer2)
5869#endif
5870 CASE (4)
5871#if __MAX_CONTR > 4 || __MAX_CONTR == 4
5872 CALL contract_dpdg(work, &
5873 nl_a, nl_b, nl_c, nl_d, &
5874 sphi_a, sphi_b, sphi_c, sphi_d, &
5875 primitives, &
5876 buffer1, buffer2)
5877#else
5878 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
5879 work, nl_a, nl_b, nl_c, nl_d, &
5880 sphi_a, &
5881 sphi_b, &
5882 sphi_c, &
5883 sphi_d, &
5884 primitives, &
5885 buffer1, buffer2)
5886#endif
5887 CASE DEFAULT
5888 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
5889 work, nl_a, nl_b, nl_c, nl_d, &
5890 sphi_a, &
5891 sphi_b, &
5892 sphi_c, &
5893 sphi_d, &
5894 primitives, &
5895 buffer1, buffer2)
5896 END SELECT
5897 CASE (3)
5898 SELECT CASE (n_d)
5899 CASE (0)
5900#if __MAX_CONTR > 3 || __MAX_CONTR == 3
5901 CALL contract_dpfs(work, &
5902 nl_a, nl_b, nl_c, nl_d, &
5903 sphi_a, sphi_b, sphi_c, sphi_d, &
5904 primitives, &
5905 buffer1, buffer2)
5906#else
5907 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
5908 work, nl_a, nl_b, nl_c, nl_d, &
5909 sphi_a, &
5910 sphi_b, &
5911 sphi_c, &
5912 sphi_d, &
5913 primitives, &
5914 buffer1, buffer2)
5915#endif
5916 CASE (1)
5917#if __MAX_CONTR > 3 || __MAX_CONTR == 3
5918 CALL contract_dpfp(work, &
5919 nl_a, nl_b, nl_c, nl_d, &
5920 sphi_a, sphi_b, sphi_c, sphi_d, &
5921 primitives, &
5922 buffer1, buffer2)
5923#else
5924 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
5925 work, nl_a, nl_b, nl_c, nl_d, &
5926 sphi_a, &
5927 sphi_b, &
5928 sphi_c, &
5929 sphi_d, &
5930 primitives, &
5931 buffer1, buffer2)
5932#endif
5933 CASE (2)
5934#if __MAX_CONTR > 3 || __MAX_CONTR == 3
5935 CALL contract_dpfd(work, &
5936 nl_a, nl_b, nl_c, nl_d, &
5937 sphi_a, sphi_b, sphi_c, sphi_d, &
5938 primitives, &
5939 buffer1, buffer2)
5940#else
5941 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
5942 work, nl_a, nl_b, nl_c, nl_d, &
5943 sphi_a, &
5944 sphi_b, &
5945 sphi_c, &
5946 sphi_d, &
5947 primitives, &
5948 buffer1, buffer2)
5949#endif
5950 CASE (3)
5951#if __MAX_CONTR > 3 || __MAX_CONTR == 3
5952 CALL contract_dpff(work, &
5953 nl_a, nl_b, nl_c, nl_d, &
5954 sphi_a, sphi_b, sphi_c, sphi_d, &
5955 primitives, &
5956 buffer1, buffer2)
5957#else
5958 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
5959 work, nl_a, nl_b, nl_c, nl_d, &
5960 sphi_a, &
5961 sphi_b, &
5962 sphi_c, &
5963 sphi_d, &
5964 primitives, &
5965 buffer1, buffer2)
5966#endif
5967 CASE (4)
5968#if __MAX_CONTR > 4 || __MAX_CONTR == 4
5969 CALL contract_dpfg(work, &
5970 nl_a, nl_b, nl_c, nl_d, &
5971 sphi_a, sphi_b, sphi_c, sphi_d, &
5972 primitives, &
5973 buffer1, buffer2)
5974#else
5975 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
5976 work, nl_a, nl_b, nl_c, nl_d, &
5977 sphi_a, &
5978 sphi_b, &
5979 sphi_c, &
5980 sphi_d, &
5981 primitives, &
5982 buffer1, buffer2)
5983#endif
5984 CASE DEFAULT
5985 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
5986 work, nl_a, nl_b, nl_c, nl_d, &
5987 sphi_a, &
5988 sphi_b, &
5989 sphi_c, &
5990 sphi_d, &
5991 primitives, &
5992 buffer1, buffer2)
5993 END SELECT
5994 CASE (4)
5995 SELECT CASE (n_d)
5996 CASE (0)
5997#if __MAX_CONTR > 4 || __MAX_CONTR == 4
5998 CALL contract_dpgs(work, &
5999 nl_a, nl_b, nl_c, nl_d, &
6000 sphi_a, sphi_b, sphi_c, sphi_d, &
6001 primitives, &
6002 buffer1, buffer2)
6003#else
6004 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
6005 work, nl_a, nl_b, nl_c, nl_d, &
6006 sphi_a, &
6007 sphi_b, &
6008 sphi_c, &
6009 sphi_d, &
6010 primitives, &
6011 buffer1, buffer2)
6012#endif
6013 CASE (1)
6014#if __MAX_CONTR > 4 || __MAX_CONTR == 4
6015 CALL contract_dpgp(work, &
6016 nl_a, nl_b, nl_c, nl_d, &
6017 sphi_a, sphi_b, sphi_c, sphi_d, &
6018 primitives, &
6019 buffer1, buffer2)
6020#else
6021 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
6022 work, nl_a, nl_b, nl_c, nl_d, &
6023 sphi_a, &
6024 sphi_b, &
6025 sphi_c, &
6026 sphi_d, &
6027 primitives, &
6028 buffer1, buffer2)
6029#endif
6030 CASE (2)
6031#if __MAX_CONTR > 4 || __MAX_CONTR == 4
6032 CALL contract_dpgd(work, &
6033 nl_a, nl_b, nl_c, nl_d, &
6034 sphi_a, sphi_b, sphi_c, sphi_d, &
6035 primitives, &
6036 buffer1, buffer2)
6037#else
6038 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
6039 work, nl_a, nl_b, nl_c, nl_d, &
6040 sphi_a, &
6041 sphi_b, &
6042 sphi_c, &
6043 sphi_d, &
6044 primitives, &
6045 buffer1, buffer2)
6046#endif
6047 CASE (3)
6048#if __MAX_CONTR > 4 || __MAX_CONTR == 4
6049 CALL contract_dpgf(work, &
6050 nl_a, nl_b, nl_c, nl_d, &
6051 sphi_a, sphi_b, sphi_c, sphi_d, &
6052 primitives, &
6053 buffer1, buffer2)
6054#else
6055 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
6056 work, nl_a, nl_b, nl_c, nl_d, &
6057 sphi_a, &
6058 sphi_b, &
6059 sphi_c, &
6060 sphi_d, &
6061 primitives, &
6062 buffer1, buffer2)
6063#endif
6064 CASE (4)
6065#if __MAX_CONTR > 4 || __MAX_CONTR == 4
6066 CALL contract_dpgg(work, &
6067 nl_a, nl_b, nl_c, nl_d, &
6068 sphi_a, sphi_b, sphi_c, sphi_d, &
6069 primitives, &
6070 buffer1, buffer2)
6071#else
6072 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
6073 work, nl_a, nl_b, nl_c, nl_d, &
6074 sphi_a, &
6075 sphi_b, &
6076 sphi_c, &
6077 sphi_d, &
6078 primitives, &
6079 buffer1, buffer2)
6080#endif
6081 CASE DEFAULT
6082 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
6083 work, nl_a, nl_b, nl_c, nl_d, &
6084 sphi_a, &
6085 sphi_b, &
6086 sphi_c, &
6087 sphi_d, &
6088 primitives, &
6089 buffer1, buffer2)
6090 END SELECT
6091 CASE DEFAULT
6092 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
6093 work, nl_a, nl_b, nl_c, nl_d, &
6094 sphi_a, &
6095 sphi_b, &
6096 sphi_c, &
6097 sphi_d, &
6098 primitives, &
6099 buffer1, buffer2)
6100 END SELECT
6101 CASE (2)
6102 SELECT CASE (n_c)
6103 CASE (0)
6104 SELECT CASE (n_d)
6105 CASE (0)
6106#if __MAX_CONTR > 2 || __MAX_CONTR == 2
6107 CALL contract_ddss(work, &
6108 nl_a, nl_b, nl_c, nl_d, &
6109 sphi_a, sphi_b, sphi_c, sphi_d, &
6110 primitives, &
6111 buffer1, buffer2)
6112#else
6113 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
6114 work, nl_a, nl_b, nl_c, nl_d, &
6115 sphi_a, &
6116 sphi_b, &
6117 sphi_c, &
6118 sphi_d, &
6119 primitives, &
6120 buffer1, buffer2)
6121#endif
6122 CASE (1)
6123#if __MAX_CONTR > 2 || __MAX_CONTR == 2
6124 CALL contract_ddsp(work, &
6125 nl_a, nl_b, nl_c, nl_d, &
6126 sphi_a, sphi_b, sphi_c, sphi_d, &
6127 primitives, &
6128 buffer1, buffer2)
6129#else
6130 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
6131 work, nl_a, nl_b, nl_c, nl_d, &
6132 sphi_a, &
6133 sphi_b, &
6134 sphi_c, &
6135 sphi_d, &
6136 primitives, &
6137 buffer1, buffer2)
6138#endif
6139 CASE (2)
6140#if __MAX_CONTR > 2 || __MAX_CONTR == 2
6141 CALL contract_ddsd(work, &
6142 nl_a, nl_b, nl_c, nl_d, &
6143 sphi_a, sphi_b, sphi_c, sphi_d, &
6144 primitives, &
6145 buffer1, buffer2)
6146#else
6147 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
6148 work, nl_a, nl_b, nl_c, nl_d, &
6149 sphi_a, &
6150 sphi_b, &
6151 sphi_c, &
6152 sphi_d, &
6153 primitives, &
6154 buffer1, buffer2)
6155#endif
6156 CASE (3)
6157#if __MAX_CONTR > 3 || __MAX_CONTR == 3
6158 CALL contract_ddsf(work, &
6159 nl_a, nl_b, nl_c, nl_d, &
6160 sphi_a, sphi_b, sphi_c, sphi_d, &
6161 primitives, &
6162 buffer1, buffer2)
6163#else
6164 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
6165 work, nl_a, nl_b, nl_c, nl_d, &
6166 sphi_a, &
6167 sphi_b, &
6168 sphi_c, &
6169 sphi_d, &
6170 primitives, &
6171 buffer1, buffer2)
6172#endif
6173 CASE (4)
6174#if __MAX_CONTR > 4 || __MAX_CONTR == 4
6175 CALL contract_ddsg(work, &
6176 nl_a, nl_b, nl_c, nl_d, &
6177 sphi_a, sphi_b, sphi_c, sphi_d, &
6178 primitives, &
6179 buffer1, buffer2)
6180#else
6181 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
6182 work, nl_a, nl_b, nl_c, nl_d, &
6183 sphi_a, &
6184 sphi_b, &
6185 sphi_c, &
6186 sphi_d, &
6187 primitives, &
6188 buffer1, buffer2)
6189#endif
6190 CASE DEFAULT
6191 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
6192 work, nl_a, nl_b, nl_c, nl_d, &
6193 sphi_a, &
6194 sphi_b, &
6195 sphi_c, &
6196 sphi_d, &
6197 primitives, &
6198 buffer1, buffer2)
6199 END SELECT
6200 CASE (1)
6201 SELECT CASE (n_d)
6202 CASE (0)
6203#if __MAX_CONTR > 2 || __MAX_CONTR == 2
6204 CALL contract_ddps(work, &
6205 nl_a, nl_b, nl_c, nl_d, &
6206 sphi_a, sphi_b, sphi_c, sphi_d, &
6207 primitives, &
6208 buffer1, buffer2)
6209#else
6210 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
6211 work, nl_a, nl_b, nl_c, nl_d, &
6212 sphi_a, &
6213 sphi_b, &
6214 sphi_c, &
6215 sphi_d, &
6216 primitives, &
6217 buffer1, buffer2)
6218#endif
6219 CASE (1)
6220#if __MAX_CONTR > 2 || __MAX_CONTR == 2
6221 CALL contract_ddpp(work, &
6222 nl_a, nl_b, nl_c, nl_d, &
6223 sphi_a, sphi_b, sphi_c, sphi_d, &
6224 primitives, &
6225 buffer1, buffer2)
6226#else
6227 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
6228 work, nl_a, nl_b, nl_c, nl_d, &
6229 sphi_a, &
6230 sphi_b, &
6231 sphi_c, &
6232 sphi_d, &
6233 primitives, &
6234 buffer1, buffer2)
6235#endif
6236 CASE (2)
6237#if __MAX_CONTR > 2 || __MAX_CONTR == 2
6238 CALL contract_ddpd(work, &
6239 nl_a, nl_b, nl_c, nl_d, &
6240 sphi_a, sphi_b, sphi_c, sphi_d, &
6241 primitives, &
6242 buffer1, buffer2)
6243#else
6244 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
6245 work, nl_a, nl_b, nl_c, nl_d, &
6246 sphi_a, &
6247 sphi_b, &
6248 sphi_c, &
6249 sphi_d, &
6250 primitives, &
6251 buffer1, buffer2)
6252#endif
6253 CASE (3)
6254#if __MAX_CONTR > 3 || __MAX_CONTR == 3
6255 CALL contract_ddpf(work, &
6256 nl_a, nl_b, nl_c, nl_d, &
6257 sphi_a, sphi_b, sphi_c, sphi_d, &
6258 primitives, &
6259 buffer1, buffer2)
6260#else
6261 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
6262 work, nl_a, nl_b, nl_c, nl_d, &
6263 sphi_a, &
6264 sphi_b, &
6265 sphi_c, &
6266 sphi_d, &
6267 primitives, &
6268 buffer1, buffer2)
6269#endif
6270 CASE (4)
6271#if __MAX_CONTR > 4 || __MAX_CONTR == 4
6272 CALL contract_ddpg(work, &
6273 nl_a, nl_b, nl_c, nl_d, &
6274 sphi_a, sphi_b, sphi_c, sphi_d, &
6275 primitives, &
6276 buffer1, buffer2)
6277#else
6278 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
6279 work, nl_a, nl_b, nl_c, nl_d, &
6280 sphi_a, &
6281 sphi_b, &
6282 sphi_c, &
6283 sphi_d, &
6284 primitives, &
6285 buffer1, buffer2)
6286#endif
6287 CASE DEFAULT
6288 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
6289 work, nl_a, nl_b, nl_c, nl_d, &
6290 sphi_a, &
6291 sphi_b, &
6292 sphi_c, &
6293 sphi_d, &
6294 primitives, &
6295 buffer1, buffer2)
6296 END SELECT
6297 CASE (2)
6298 SELECT CASE (n_d)
6299 CASE (0)
6300#if __MAX_CONTR > 2 || __MAX_CONTR == 2
6301 CALL contract_ddds(work, &
6302 nl_a, nl_b, nl_c, nl_d, &
6303 sphi_a, sphi_b, sphi_c, sphi_d, &
6304 primitives, &
6305 buffer1, buffer2)
6306#else
6307 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
6308 work, nl_a, nl_b, nl_c, nl_d, &
6309 sphi_a, &
6310 sphi_b, &
6311 sphi_c, &
6312 sphi_d, &
6313 primitives, &
6314 buffer1, buffer2)
6315#endif
6316 CASE (1)
6317#if __MAX_CONTR > 2 || __MAX_CONTR == 2
6318 CALL contract_dddp(work, &
6319 nl_a, nl_b, nl_c, nl_d, &
6320 sphi_a, sphi_b, sphi_c, sphi_d, &
6321 primitives, &
6322 buffer1, buffer2)
6323#else
6324 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
6325 work, nl_a, nl_b, nl_c, nl_d, &
6326 sphi_a, &
6327 sphi_b, &
6328 sphi_c, &
6329 sphi_d, &
6330 primitives, &
6331 buffer1, buffer2)
6332#endif
6333 CASE (2)
6334#if __MAX_CONTR > 2 || __MAX_CONTR == 2
6335 CALL contract_dddd(work, &
6336 nl_a, nl_b, nl_c, nl_d, &
6337 sphi_a, sphi_b, sphi_c, sphi_d, &
6338 primitives, &
6339 buffer1, buffer2)
6340#else
6341 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
6342 work, nl_a, nl_b, nl_c, nl_d, &
6343 sphi_a, &
6344 sphi_b, &
6345 sphi_c, &
6346 sphi_d, &
6347 primitives, &
6348 buffer1, buffer2)
6349#endif
6350 CASE (3)
6351#if __MAX_CONTR > 3 || __MAX_CONTR == 3
6352 CALL contract_dddf(work, &
6353 nl_a, nl_b, nl_c, nl_d, &
6354 sphi_a, sphi_b, sphi_c, sphi_d, &
6355 primitives, &
6356 buffer1, buffer2)
6357#else
6358 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
6359 work, nl_a, nl_b, nl_c, nl_d, &
6360 sphi_a, &
6361 sphi_b, &
6362 sphi_c, &
6363 sphi_d, &
6364 primitives, &
6365 buffer1, buffer2)
6366#endif
6367 CASE (4)
6368#if __MAX_CONTR > 4 || __MAX_CONTR == 4
6369 CALL contract_dddg(work, &
6370 nl_a, nl_b, nl_c, nl_d, &
6371 sphi_a, sphi_b, sphi_c, sphi_d, &
6372 primitives, &
6373 buffer1, buffer2)
6374#else
6375 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
6376 work, nl_a, nl_b, nl_c, nl_d, &
6377 sphi_a, &
6378 sphi_b, &
6379 sphi_c, &
6380 sphi_d, &
6381 primitives, &
6382 buffer1, buffer2)
6383#endif
6384 CASE DEFAULT
6385 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
6386 work, nl_a, nl_b, nl_c, nl_d, &
6387 sphi_a, &
6388 sphi_b, &
6389 sphi_c, &
6390 sphi_d, &
6391 primitives, &
6392 buffer1, buffer2)
6393 END SELECT
6394 CASE (3)
6395 SELECT CASE (n_d)
6396 CASE (0)
6397#if __MAX_CONTR > 3 || __MAX_CONTR == 3
6398 CALL contract_ddfs(work, &
6399 nl_a, nl_b, nl_c, nl_d, &
6400 sphi_a, sphi_b, sphi_c, sphi_d, &
6401 primitives, &
6402 buffer1, buffer2)
6403#else
6404 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
6405 work, nl_a, nl_b, nl_c, nl_d, &
6406 sphi_a, &
6407 sphi_b, &
6408 sphi_c, &
6409 sphi_d, &
6410 primitives, &
6411 buffer1, buffer2)
6412#endif
6413 CASE (1)
6414#if __MAX_CONTR > 3 || __MAX_CONTR == 3
6415 CALL contract_ddfp(work, &
6416 nl_a, nl_b, nl_c, nl_d, &
6417 sphi_a, sphi_b, sphi_c, sphi_d, &
6418 primitives, &
6419 buffer1, buffer2)
6420#else
6421 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
6422 work, nl_a, nl_b, nl_c, nl_d, &
6423 sphi_a, &
6424 sphi_b, &
6425 sphi_c, &
6426 sphi_d, &
6427 primitives, &
6428 buffer1, buffer2)
6429#endif
6430 CASE (2)
6431#if __MAX_CONTR > 3 || __MAX_CONTR == 3
6432 CALL contract_ddfd(work, &
6433 nl_a, nl_b, nl_c, nl_d, &
6434 sphi_a, sphi_b, sphi_c, sphi_d, &
6435 primitives, &
6436 buffer1, buffer2)
6437#else
6438 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
6439 work, nl_a, nl_b, nl_c, nl_d, &
6440 sphi_a, &
6441 sphi_b, &
6442 sphi_c, &
6443 sphi_d, &
6444 primitives, &
6445 buffer1, buffer2)
6446#endif
6447 CASE (3)
6448#if __MAX_CONTR > 3 || __MAX_CONTR == 3
6449 CALL contract_ddff(work, &
6450 nl_a, nl_b, nl_c, nl_d, &
6451 sphi_a, sphi_b, sphi_c, sphi_d, &
6452 primitives, &
6453 buffer1, buffer2)
6454#else
6455 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
6456 work, nl_a, nl_b, nl_c, nl_d, &
6457 sphi_a, &
6458 sphi_b, &
6459 sphi_c, &
6460 sphi_d, &
6461 primitives, &
6462 buffer1, buffer2)
6463#endif
6464 CASE (4)
6465#if __MAX_CONTR > 4 || __MAX_CONTR == 4
6466 CALL contract_ddfg(work, &
6467 nl_a, nl_b, nl_c, nl_d, &
6468 sphi_a, sphi_b, sphi_c, sphi_d, &
6469 primitives, &
6470 buffer1, buffer2)
6471#else
6472 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
6473 work, nl_a, nl_b, nl_c, nl_d, &
6474 sphi_a, &
6475 sphi_b, &
6476 sphi_c, &
6477 sphi_d, &
6478 primitives, &
6479 buffer1, buffer2)
6480#endif
6481 CASE DEFAULT
6482 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
6483 work, nl_a, nl_b, nl_c, nl_d, &
6484 sphi_a, &
6485 sphi_b, &
6486 sphi_c, &
6487 sphi_d, &
6488 primitives, &
6489 buffer1, buffer2)
6490 END SELECT
6491 CASE (4)
6492 SELECT CASE (n_d)
6493 CASE (0)
6494#if __MAX_CONTR > 4 || __MAX_CONTR == 4
6495 CALL contract_ddgs(work, &
6496 nl_a, nl_b, nl_c, nl_d, &
6497 sphi_a, sphi_b, sphi_c, sphi_d, &
6498 primitives, &
6499 buffer1, buffer2)
6500#else
6501 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
6502 work, nl_a, nl_b, nl_c, nl_d, &
6503 sphi_a, &
6504 sphi_b, &
6505 sphi_c, &
6506 sphi_d, &
6507 primitives, &
6508 buffer1, buffer2)
6509#endif
6510 CASE (1)
6511#if __MAX_CONTR > 4 || __MAX_CONTR == 4
6512 CALL contract_ddgp(work, &
6513 nl_a, nl_b, nl_c, nl_d, &
6514 sphi_a, sphi_b, sphi_c, sphi_d, &
6515 primitives, &
6516 buffer1, buffer2)
6517#else
6518 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
6519 work, nl_a, nl_b, nl_c, nl_d, &
6520 sphi_a, &
6521 sphi_b, &
6522 sphi_c, &
6523 sphi_d, &
6524 primitives, &
6525 buffer1, buffer2)
6526#endif
6527 CASE (2)
6528#if __MAX_CONTR > 4 || __MAX_CONTR == 4
6529 CALL contract_ddgd(work, &
6530 nl_a, nl_b, nl_c, nl_d, &
6531 sphi_a, sphi_b, sphi_c, sphi_d, &
6532 primitives, &
6533 buffer1, buffer2)
6534#else
6535 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
6536 work, nl_a, nl_b, nl_c, nl_d, &
6537 sphi_a, &
6538 sphi_b, &
6539 sphi_c, &
6540 sphi_d, &
6541 primitives, &
6542 buffer1, buffer2)
6543#endif
6544 CASE (3)
6545#if __MAX_CONTR > 4 || __MAX_CONTR == 4
6546 CALL contract_ddgf(work, &
6547 nl_a, nl_b, nl_c, nl_d, &
6548 sphi_a, sphi_b, sphi_c, sphi_d, &
6549 primitives, &
6550 buffer1, buffer2)
6551#else
6552 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
6553 work, nl_a, nl_b, nl_c, nl_d, &
6554 sphi_a, &
6555 sphi_b, &
6556 sphi_c, &
6557 sphi_d, &
6558 primitives, &
6559 buffer1, buffer2)
6560#endif
6561 CASE (4)
6562#if __MAX_CONTR > 4 || __MAX_CONTR == 4
6563 CALL contract_ddgg(work, &
6564 nl_a, nl_b, nl_c, nl_d, &
6565 sphi_a, sphi_b, sphi_c, sphi_d, &
6566 primitives, &
6567 buffer1, buffer2)
6568#else
6569 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
6570 work, nl_a, nl_b, nl_c, nl_d, &
6571 sphi_a, &
6572 sphi_b, &
6573 sphi_c, &
6574 sphi_d, &
6575 primitives, &
6576 buffer1, buffer2)
6577#endif
6578 CASE DEFAULT
6579 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
6580 work, nl_a, nl_b, nl_c, nl_d, &
6581 sphi_a, &
6582 sphi_b, &
6583 sphi_c, &
6584 sphi_d, &
6585 primitives, &
6586 buffer1, buffer2)
6587 END SELECT
6588 CASE DEFAULT
6589 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
6590 work, nl_a, nl_b, nl_c, nl_d, &
6591 sphi_a, &
6592 sphi_b, &
6593 sphi_c, &
6594 sphi_d, &
6595 primitives, &
6596 buffer1, buffer2)
6597 END SELECT
6598 CASE (3)
6599 SELECT CASE (n_c)
6600 CASE (0)
6601 SELECT CASE (n_d)
6602 CASE (0)
6603#if __MAX_CONTR > 3 || __MAX_CONTR == 3
6604 CALL contract_dfss(work, &
6605 nl_a, nl_b, nl_c, nl_d, &
6606 sphi_a, sphi_b, sphi_c, sphi_d, &
6607 primitives, &
6608 buffer1, buffer2)
6609#else
6610 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
6611 work, nl_a, nl_b, nl_c, nl_d, &
6612 sphi_a, &
6613 sphi_b, &
6614 sphi_c, &
6615 sphi_d, &
6616 primitives, &
6617 buffer1, buffer2)
6618#endif
6619 CASE (1)
6620#if __MAX_CONTR > 3 || __MAX_CONTR == 3
6621 CALL contract_dfsp(work, &
6622 nl_a, nl_b, nl_c, nl_d, &
6623 sphi_a, sphi_b, sphi_c, sphi_d, &
6624 primitives, &
6625 buffer1, buffer2)
6626#else
6627 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
6628 work, nl_a, nl_b, nl_c, nl_d, &
6629 sphi_a, &
6630 sphi_b, &
6631 sphi_c, &
6632 sphi_d, &
6633 primitives, &
6634 buffer1, buffer2)
6635#endif
6636 CASE (2)
6637#if __MAX_CONTR > 3 || __MAX_CONTR == 3
6638 CALL contract_dfsd(work, &
6639 nl_a, nl_b, nl_c, nl_d, &
6640 sphi_a, sphi_b, sphi_c, sphi_d, &
6641 primitives, &
6642 buffer1, buffer2)
6643#else
6644 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
6645 work, nl_a, nl_b, nl_c, nl_d, &
6646 sphi_a, &
6647 sphi_b, &
6648 sphi_c, &
6649 sphi_d, &
6650 primitives, &
6651 buffer1, buffer2)
6652#endif
6653 CASE (3)
6654#if __MAX_CONTR > 3 || __MAX_CONTR == 3
6655 CALL contract_dfsf(work, &
6656 nl_a, nl_b, nl_c, nl_d, &
6657 sphi_a, sphi_b, sphi_c, sphi_d, &
6658 primitives, &
6659 buffer1, buffer2)
6660#else
6661 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
6662 work, nl_a, nl_b, nl_c, nl_d, &
6663 sphi_a, &
6664 sphi_b, &
6665 sphi_c, &
6666 sphi_d, &
6667 primitives, &
6668 buffer1, buffer2)
6669#endif
6670 CASE (4)
6671#if __MAX_CONTR > 4 || __MAX_CONTR == 4
6672 CALL contract_dfsg(work, &
6673 nl_a, nl_b, nl_c, nl_d, &
6674 sphi_a, sphi_b, sphi_c, sphi_d, &
6675 primitives, &
6676 buffer1, buffer2)
6677#else
6678 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
6679 work, nl_a, nl_b, nl_c, nl_d, &
6680 sphi_a, &
6681 sphi_b, &
6682 sphi_c, &
6683 sphi_d, &
6684 primitives, &
6685 buffer1, buffer2)
6686#endif
6687 CASE DEFAULT
6688 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
6689 work, nl_a, nl_b, nl_c, nl_d, &
6690 sphi_a, &
6691 sphi_b, &
6692 sphi_c, &
6693 sphi_d, &
6694 primitives, &
6695 buffer1, buffer2)
6696 END SELECT
6697 CASE (1)
6698 SELECT CASE (n_d)
6699 CASE (0)
6700#if __MAX_CONTR > 3 || __MAX_CONTR == 3
6701 CALL contract_dfps(work, &
6702 nl_a, nl_b, nl_c, nl_d, &
6703 sphi_a, sphi_b, sphi_c, sphi_d, &
6704 primitives, &
6705 buffer1, buffer2)
6706#else
6707 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
6708 work, nl_a, nl_b, nl_c, nl_d, &
6709 sphi_a, &
6710 sphi_b, &
6711 sphi_c, &
6712 sphi_d, &
6713 primitives, &
6714 buffer1, buffer2)
6715#endif
6716 CASE (1)
6717#if __MAX_CONTR > 3 || __MAX_CONTR == 3
6718 CALL contract_dfpp(work, &
6719 nl_a, nl_b, nl_c, nl_d, &
6720 sphi_a, sphi_b, sphi_c, sphi_d, &
6721 primitives, &
6722 buffer1, buffer2)
6723#else
6724 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
6725 work, nl_a, nl_b, nl_c, nl_d, &
6726 sphi_a, &
6727 sphi_b, &
6728 sphi_c, &
6729 sphi_d, &
6730 primitives, &
6731 buffer1, buffer2)
6732#endif
6733 CASE (2)
6734#if __MAX_CONTR > 3 || __MAX_CONTR == 3
6735 CALL contract_dfpd(work, &
6736 nl_a, nl_b, nl_c, nl_d, &
6737 sphi_a, sphi_b, sphi_c, sphi_d, &
6738 primitives, &
6739 buffer1, buffer2)
6740#else
6741 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
6742 work, nl_a, nl_b, nl_c, nl_d, &
6743 sphi_a, &
6744 sphi_b, &
6745 sphi_c, &
6746 sphi_d, &
6747 primitives, &
6748 buffer1, buffer2)
6749#endif
6750 CASE (3)
6751#if __MAX_CONTR > 3 || __MAX_CONTR == 3
6752 CALL contract_dfpf(work, &
6753 nl_a, nl_b, nl_c, nl_d, &
6754 sphi_a, sphi_b, sphi_c, sphi_d, &
6755 primitives, &
6756 buffer1, buffer2)
6757#else
6758 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
6759 work, nl_a, nl_b, nl_c, nl_d, &
6760 sphi_a, &
6761 sphi_b, &
6762 sphi_c, &
6763 sphi_d, &
6764 primitives, &
6765 buffer1, buffer2)
6766#endif
6767 CASE (4)
6768#if __MAX_CONTR > 4 || __MAX_CONTR == 4
6769 CALL contract_dfpg(work, &
6770 nl_a, nl_b, nl_c, nl_d, &
6771 sphi_a, sphi_b, sphi_c, sphi_d, &
6772 primitives, &
6773 buffer1, buffer2)
6774#else
6775 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
6776 work, nl_a, nl_b, nl_c, nl_d, &
6777 sphi_a, &
6778 sphi_b, &
6779 sphi_c, &
6780 sphi_d, &
6781 primitives, &
6782 buffer1, buffer2)
6783#endif
6784 CASE DEFAULT
6785 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
6786 work, nl_a, nl_b, nl_c, nl_d, &
6787 sphi_a, &
6788 sphi_b, &
6789 sphi_c, &
6790 sphi_d, &
6791 primitives, &
6792 buffer1, buffer2)
6793 END SELECT
6794 CASE (2)
6795 SELECT CASE (n_d)
6796 CASE (0)
6797#if __MAX_CONTR > 3 || __MAX_CONTR == 3
6798 CALL contract_dfds(work, &
6799 nl_a, nl_b, nl_c, nl_d, &
6800 sphi_a, sphi_b, sphi_c, sphi_d, &
6801 primitives, &
6802 buffer1, buffer2)
6803#else
6804 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
6805 work, nl_a, nl_b, nl_c, nl_d, &
6806 sphi_a, &
6807 sphi_b, &
6808 sphi_c, &
6809 sphi_d, &
6810 primitives, &
6811 buffer1, buffer2)
6812#endif
6813 CASE (1)
6814#if __MAX_CONTR > 3 || __MAX_CONTR == 3
6815 CALL contract_dfdp(work, &
6816 nl_a, nl_b, nl_c, nl_d, &
6817 sphi_a, sphi_b, sphi_c, sphi_d, &
6818 primitives, &
6819 buffer1, buffer2)
6820#else
6821 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
6822 work, nl_a, nl_b, nl_c, nl_d, &
6823 sphi_a, &
6824 sphi_b, &
6825 sphi_c, &
6826 sphi_d, &
6827 primitives, &
6828 buffer1, buffer2)
6829#endif
6830 CASE (2)
6831#if __MAX_CONTR > 3 || __MAX_CONTR == 3
6832 CALL contract_dfdd(work, &
6833 nl_a, nl_b, nl_c, nl_d, &
6834 sphi_a, sphi_b, sphi_c, sphi_d, &
6835 primitives, &
6836 buffer1, buffer2)
6837#else
6838 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
6839 work, nl_a, nl_b, nl_c, nl_d, &
6840 sphi_a, &
6841 sphi_b, &
6842 sphi_c, &
6843 sphi_d, &
6844 primitives, &
6845 buffer1, buffer2)
6846#endif
6847 CASE (3)
6848#if __MAX_CONTR > 3 || __MAX_CONTR == 3
6849 CALL contract_dfdf(work, &
6850 nl_a, nl_b, nl_c, nl_d, &
6851 sphi_a, sphi_b, sphi_c, sphi_d, &
6852 primitives, &
6853 buffer1, buffer2)
6854#else
6855 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
6856 work, nl_a, nl_b, nl_c, nl_d, &
6857 sphi_a, &
6858 sphi_b, &
6859 sphi_c, &
6860 sphi_d, &
6861 primitives, &
6862 buffer1, buffer2)
6863#endif
6864 CASE (4)
6865#if __MAX_CONTR > 4 || __MAX_CONTR == 4
6866 CALL contract_dfdg(work, &
6867 nl_a, nl_b, nl_c, nl_d, &
6868 sphi_a, sphi_b, sphi_c, sphi_d, &
6869 primitives, &
6870 buffer1, buffer2)
6871#else
6872 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
6873 work, nl_a, nl_b, nl_c, nl_d, &
6874 sphi_a, &
6875 sphi_b, &
6876 sphi_c, &
6877 sphi_d, &
6878 primitives, &
6879 buffer1, buffer2)
6880#endif
6881 CASE DEFAULT
6882 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
6883 work, nl_a, nl_b, nl_c, nl_d, &
6884 sphi_a, &
6885 sphi_b, &
6886 sphi_c, &
6887 sphi_d, &
6888 primitives, &
6889 buffer1, buffer2)
6890 END SELECT
6891 CASE (3)
6892 SELECT CASE (n_d)
6893 CASE (0)
6894#if __MAX_CONTR > 3 || __MAX_CONTR == 3
6895 CALL contract_dffs(work, &
6896 nl_a, nl_b, nl_c, nl_d, &
6897 sphi_a, sphi_b, sphi_c, sphi_d, &
6898 primitives, &
6899 buffer1, buffer2)
6900#else
6901 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
6902 work, nl_a, nl_b, nl_c, nl_d, &
6903 sphi_a, &
6904 sphi_b, &
6905 sphi_c, &
6906 sphi_d, &
6907 primitives, &
6908 buffer1, buffer2)
6909#endif
6910 CASE (1)
6911#if __MAX_CONTR > 3 || __MAX_CONTR == 3
6912 CALL contract_dffp(work, &
6913 nl_a, nl_b, nl_c, nl_d, &
6914 sphi_a, sphi_b, sphi_c, sphi_d, &
6915 primitives, &
6916 buffer1, buffer2)
6917#else
6918 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
6919 work, nl_a, nl_b, nl_c, nl_d, &
6920 sphi_a, &
6921 sphi_b, &
6922 sphi_c, &
6923 sphi_d, &
6924 primitives, &
6925 buffer1, buffer2)
6926#endif
6927 CASE (2)
6928#if __MAX_CONTR > 3 || __MAX_CONTR == 3
6929 CALL contract_dffd(work, &
6930 nl_a, nl_b, nl_c, nl_d, &
6931 sphi_a, sphi_b, sphi_c, sphi_d, &
6932 primitives, &
6933 buffer1, buffer2)
6934#else
6935 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
6936 work, nl_a, nl_b, nl_c, nl_d, &
6937 sphi_a, &
6938 sphi_b, &
6939 sphi_c, &
6940 sphi_d, &
6941 primitives, &
6942 buffer1, buffer2)
6943#endif
6944 CASE (3)
6945#if __MAX_CONTR > 3 || __MAX_CONTR == 3
6946 CALL contract_dfff(work, &
6947 nl_a, nl_b, nl_c, nl_d, &
6948 sphi_a, sphi_b, sphi_c, sphi_d, &
6949 primitives, &
6950 buffer1, buffer2)
6951#else
6952 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
6953 work, nl_a, nl_b, nl_c, nl_d, &
6954 sphi_a, &
6955 sphi_b, &
6956 sphi_c, &
6957 sphi_d, &
6958 primitives, &
6959 buffer1, buffer2)
6960#endif
6961 CASE (4)
6962#if __MAX_CONTR > 4 || __MAX_CONTR == 4
6963 CALL contract_dffg(work, &
6964 nl_a, nl_b, nl_c, nl_d, &
6965 sphi_a, sphi_b, sphi_c, sphi_d, &
6966 primitives, &
6967 buffer1, buffer2)
6968#else
6969 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
6970 work, nl_a, nl_b, nl_c, nl_d, &
6971 sphi_a, &
6972 sphi_b, &
6973 sphi_c, &
6974 sphi_d, &
6975 primitives, &
6976 buffer1, buffer2)
6977#endif
6978 CASE DEFAULT
6979 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
6980 work, nl_a, nl_b, nl_c, nl_d, &
6981 sphi_a, &
6982 sphi_b, &
6983 sphi_c, &
6984 sphi_d, &
6985 primitives, &
6986 buffer1, buffer2)
6987 END SELECT
6988 CASE (4)
6989 SELECT CASE (n_d)
6990 CASE (0)
6991#if __MAX_CONTR > 4 || __MAX_CONTR == 4
6992 CALL contract_dfgs(work, &
6993 nl_a, nl_b, nl_c, nl_d, &
6994 sphi_a, sphi_b, sphi_c, sphi_d, &
6995 primitives, &
6996 buffer1, buffer2)
6997#else
6998 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
6999 work, nl_a, nl_b, nl_c, nl_d, &
7000 sphi_a, &
7001 sphi_b, &
7002 sphi_c, &
7003 sphi_d, &
7004 primitives, &
7005 buffer1, buffer2)
7006#endif
7007 CASE (1)
7008#if __MAX_CONTR > 4 || __MAX_CONTR == 4
7009 CALL contract_dfgp(work, &
7010 nl_a, nl_b, nl_c, nl_d, &
7011 sphi_a, sphi_b, sphi_c, sphi_d, &
7012 primitives, &
7013 buffer1, buffer2)
7014#else
7015 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
7016 work, nl_a, nl_b, nl_c, nl_d, &
7017 sphi_a, &
7018 sphi_b, &
7019 sphi_c, &
7020 sphi_d, &
7021 primitives, &
7022 buffer1, buffer2)
7023#endif
7024 CASE (2)
7025#if __MAX_CONTR > 4 || __MAX_CONTR == 4
7026 CALL contract_dfgd(work, &
7027 nl_a, nl_b, nl_c, nl_d, &
7028 sphi_a, sphi_b, sphi_c, sphi_d, &
7029 primitives, &
7030 buffer1, buffer2)
7031#else
7032 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
7033 work, nl_a, nl_b, nl_c, nl_d, &
7034 sphi_a, &
7035 sphi_b, &
7036 sphi_c, &
7037 sphi_d, &
7038 primitives, &
7039 buffer1, buffer2)
7040#endif
7041 CASE (3)
7042#if __MAX_CONTR > 4 || __MAX_CONTR == 4
7043 CALL contract_dfgf(work, &
7044 nl_a, nl_b, nl_c, nl_d, &
7045 sphi_a, sphi_b, sphi_c, sphi_d, &
7046 primitives, &
7047 buffer1, buffer2)
7048#else
7049 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
7050 work, nl_a, nl_b, nl_c, nl_d, &
7051 sphi_a, &
7052 sphi_b, &
7053 sphi_c, &
7054 sphi_d, &
7055 primitives, &
7056 buffer1, buffer2)
7057#endif
7058 CASE (4)
7059#if __MAX_CONTR > 4 || __MAX_CONTR == 4
7060 CALL contract_dfgg(work, &
7061 nl_a, nl_b, nl_c, nl_d, &
7062 sphi_a, sphi_b, sphi_c, sphi_d, &
7063 primitives, &
7064 buffer1, buffer2)
7065#else
7066 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
7067 work, nl_a, nl_b, nl_c, nl_d, &
7068 sphi_a, &
7069 sphi_b, &
7070 sphi_c, &
7071 sphi_d, &
7072 primitives, &
7073 buffer1, buffer2)
7074#endif
7075 CASE DEFAULT
7076 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
7077 work, nl_a, nl_b, nl_c, nl_d, &
7078 sphi_a, &
7079 sphi_b, &
7080 sphi_c, &
7081 sphi_d, &
7082 primitives, &
7083 buffer1, buffer2)
7084 END SELECT
7085 CASE DEFAULT
7086 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
7087 work, nl_a, nl_b, nl_c, nl_d, &
7088 sphi_a, &
7089 sphi_b, &
7090 sphi_c, &
7091 sphi_d, &
7092 primitives, &
7093 buffer1, buffer2)
7094 END SELECT
7095 CASE (4)
7096 SELECT CASE (n_c)
7097 CASE (0)
7098 SELECT CASE (n_d)
7099 CASE (0)
7100#if __MAX_CONTR > 4 || __MAX_CONTR == 4
7101 CALL contract_dgss(work, &
7102 nl_a, nl_b, nl_c, nl_d, &
7103 sphi_a, sphi_b, sphi_c, sphi_d, &
7104 primitives, &
7105 buffer1, buffer2)
7106#else
7107 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
7108 work, nl_a, nl_b, nl_c, nl_d, &
7109 sphi_a, &
7110 sphi_b, &
7111 sphi_c, &
7112 sphi_d, &
7113 primitives, &
7114 buffer1, buffer2)
7115#endif
7116 CASE (1)
7117#if __MAX_CONTR > 4 || __MAX_CONTR == 4
7118 CALL contract_dgsp(work, &
7119 nl_a, nl_b, nl_c, nl_d, &
7120 sphi_a, sphi_b, sphi_c, sphi_d, &
7121 primitives, &
7122 buffer1, buffer2)
7123#else
7124 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
7125 work, nl_a, nl_b, nl_c, nl_d, &
7126 sphi_a, &
7127 sphi_b, &
7128 sphi_c, &
7129 sphi_d, &
7130 primitives, &
7131 buffer1, buffer2)
7132#endif
7133 CASE (2)
7134#if __MAX_CONTR > 4 || __MAX_CONTR == 4
7135 CALL contract_dgsd(work, &
7136 nl_a, nl_b, nl_c, nl_d, &
7137 sphi_a, sphi_b, sphi_c, sphi_d, &
7138 primitives, &
7139 buffer1, buffer2)
7140#else
7141 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
7142 work, nl_a, nl_b, nl_c, nl_d, &
7143 sphi_a, &
7144 sphi_b, &
7145 sphi_c, &
7146 sphi_d, &
7147 primitives, &
7148 buffer1, buffer2)
7149#endif
7150 CASE (3)
7151#if __MAX_CONTR > 4 || __MAX_CONTR == 4
7152 CALL contract_dgsf(work, &
7153 nl_a, nl_b, nl_c, nl_d, &
7154 sphi_a, sphi_b, sphi_c, sphi_d, &
7155 primitives, &
7156 buffer1, buffer2)
7157#else
7158 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
7159 work, nl_a, nl_b, nl_c, nl_d, &
7160 sphi_a, &
7161 sphi_b, &
7162 sphi_c, &
7163 sphi_d, &
7164 primitives, &
7165 buffer1, buffer2)
7166#endif
7167 CASE (4)
7168#if __MAX_CONTR > 4 || __MAX_CONTR == 4
7169 CALL contract_dgsg(work, &
7170 nl_a, nl_b, nl_c, nl_d, &
7171 sphi_a, sphi_b, sphi_c, sphi_d, &
7172 primitives, &
7173 buffer1, buffer2)
7174#else
7175 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
7176 work, nl_a, nl_b, nl_c, nl_d, &
7177 sphi_a, &
7178 sphi_b, &
7179 sphi_c, &
7180 sphi_d, &
7181 primitives, &
7182 buffer1, buffer2)
7183#endif
7184 CASE DEFAULT
7185 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
7186 work, nl_a, nl_b, nl_c, nl_d, &
7187 sphi_a, &
7188 sphi_b, &
7189 sphi_c, &
7190 sphi_d, &
7191 primitives, &
7192 buffer1, buffer2)
7193 END SELECT
7194 CASE (1)
7195 SELECT CASE (n_d)
7196 CASE (0)
7197#if __MAX_CONTR > 4 || __MAX_CONTR == 4
7198 CALL contract_dgps(work, &
7199 nl_a, nl_b, nl_c, nl_d, &
7200 sphi_a, sphi_b, sphi_c, sphi_d, &
7201 primitives, &
7202 buffer1, buffer2)
7203#else
7204 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
7205 work, nl_a, nl_b, nl_c, nl_d, &
7206 sphi_a, &
7207 sphi_b, &
7208 sphi_c, &
7209 sphi_d, &
7210 primitives, &
7211 buffer1, buffer2)
7212#endif
7213 CASE (1)
7214#if __MAX_CONTR > 4 || __MAX_CONTR == 4
7215 CALL contract_dgpp(work, &
7216 nl_a, nl_b, nl_c, nl_d, &
7217 sphi_a, sphi_b, sphi_c, sphi_d, &
7218 primitives, &
7219 buffer1, buffer2)
7220#else
7221 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
7222 work, nl_a, nl_b, nl_c, nl_d, &
7223 sphi_a, &
7224 sphi_b, &
7225 sphi_c, &
7226 sphi_d, &
7227 primitives, &
7228 buffer1, buffer2)
7229#endif
7230 CASE (2)
7231#if __MAX_CONTR > 4 || __MAX_CONTR == 4
7232 CALL contract_dgpd(work, &
7233 nl_a, nl_b, nl_c, nl_d, &
7234 sphi_a, sphi_b, sphi_c, sphi_d, &
7235 primitives, &
7236 buffer1, buffer2)
7237#else
7238 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
7239 work, nl_a, nl_b, nl_c, nl_d, &
7240 sphi_a, &
7241 sphi_b, &
7242 sphi_c, &
7243 sphi_d, &
7244 primitives, &
7245 buffer1, buffer2)
7246#endif
7247 CASE (3)
7248#if __MAX_CONTR > 4 || __MAX_CONTR == 4
7249 CALL contract_dgpf(work, &
7250 nl_a, nl_b, nl_c, nl_d, &
7251 sphi_a, sphi_b, sphi_c, sphi_d, &
7252 primitives, &
7253 buffer1, buffer2)
7254#else
7255 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
7256 work, nl_a, nl_b, nl_c, nl_d, &
7257 sphi_a, &
7258 sphi_b, &
7259 sphi_c, &
7260 sphi_d, &
7261 primitives, &
7262 buffer1, buffer2)
7263#endif
7264 CASE (4)
7265#if __MAX_CONTR > 4 || __MAX_CONTR == 4
7266 CALL contract_dgpg(work, &
7267 nl_a, nl_b, nl_c, nl_d, &
7268 sphi_a, sphi_b, sphi_c, sphi_d, &
7269 primitives, &
7270 buffer1, buffer2)
7271#else
7272 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
7273 work, nl_a, nl_b, nl_c, nl_d, &
7274 sphi_a, &
7275 sphi_b, &
7276 sphi_c, &
7277 sphi_d, &
7278 primitives, &
7279 buffer1, buffer2)
7280#endif
7281 CASE DEFAULT
7282 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
7283 work, nl_a, nl_b, nl_c, nl_d, &
7284 sphi_a, &
7285 sphi_b, &
7286 sphi_c, &
7287 sphi_d, &
7288 primitives, &
7289 buffer1, buffer2)
7290 END SELECT
7291 CASE (2)
7292 SELECT CASE (n_d)
7293 CASE (0)
7294#if __MAX_CONTR > 4 || __MAX_CONTR == 4
7295 CALL contract_dgds(work, &
7296 nl_a, nl_b, nl_c, nl_d, &
7297 sphi_a, sphi_b, sphi_c, sphi_d, &
7298 primitives, &
7299 buffer1, buffer2)
7300#else
7301 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
7302 work, nl_a, nl_b, nl_c, nl_d, &
7303 sphi_a, &
7304 sphi_b, &
7305 sphi_c, &
7306 sphi_d, &
7307 primitives, &
7308 buffer1, buffer2)
7309#endif
7310 CASE (1)
7311#if __MAX_CONTR > 4 || __MAX_CONTR == 4
7312 CALL contract_dgdp(work, &
7313 nl_a, nl_b, nl_c, nl_d, &
7314 sphi_a, sphi_b, sphi_c, sphi_d, &
7315 primitives, &
7316 buffer1, buffer2)
7317#else
7318 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
7319 work, nl_a, nl_b, nl_c, nl_d, &
7320 sphi_a, &
7321 sphi_b, &
7322 sphi_c, &
7323 sphi_d, &
7324 primitives, &
7325 buffer1, buffer2)
7326#endif
7327 CASE (2)
7328#if __MAX_CONTR > 4 || __MAX_CONTR == 4
7329 CALL contract_dgdd(work, &
7330 nl_a, nl_b, nl_c, nl_d, &
7331 sphi_a, sphi_b, sphi_c, sphi_d, &
7332 primitives, &
7333 buffer1, buffer2)
7334#else
7335 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
7336 work, nl_a, nl_b, nl_c, nl_d, &
7337 sphi_a, &
7338 sphi_b, &
7339 sphi_c, &
7340 sphi_d, &
7341 primitives, &
7342 buffer1, buffer2)
7343#endif
7344 CASE (3)
7345#if __MAX_CONTR > 4 || __MAX_CONTR == 4
7346 CALL contract_dgdf(work, &
7347 nl_a, nl_b, nl_c, nl_d, &
7348 sphi_a, sphi_b, sphi_c, sphi_d, &
7349 primitives, &
7350 buffer1, buffer2)
7351#else
7352 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
7353 work, nl_a, nl_b, nl_c, nl_d, &
7354 sphi_a, &
7355 sphi_b, &
7356 sphi_c, &
7357 sphi_d, &
7358 primitives, &
7359 buffer1, buffer2)
7360#endif
7361 CASE (4)
7362#if __MAX_CONTR > 4 || __MAX_CONTR == 4
7363 CALL contract_dgdg(work, &
7364 nl_a, nl_b, nl_c, nl_d, &
7365 sphi_a, sphi_b, sphi_c, sphi_d, &
7366 primitives, &
7367 buffer1, buffer2)
7368#else
7369 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
7370 work, nl_a, nl_b, nl_c, nl_d, &
7371 sphi_a, &
7372 sphi_b, &
7373 sphi_c, &
7374 sphi_d, &
7375 primitives, &
7376 buffer1, buffer2)
7377#endif
7378 CASE DEFAULT
7379 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
7380 work, nl_a, nl_b, nl_c, nl_d, &
7381 sphi_a, &
7382 sphi_b, &
7383 sphi_c, &
7384 sphi_d, &
7385 primitives, &
7386 buffer1, buffer2)
7387 END SELECT
7388 CASE (3)
7389 SELECT CASE (n_d)
7390 CASE (0)
7391#if __MAX_CONTR > 4 || __MAX_CONTR == 4
7392 CALL contract_dgfs(work, &
7393 nl_a, nl_b, nl_c, nl_d, &
7394 sphi_a, sphi_b, sphi_c, sphi_d, &
7395 primitives, &
7396 buffer1, buffer2)
7397#else
7398 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
7399 work, nl_a, nl_b, nl_c, nl_d, &
7400 sphi_a, &
7401 sphi_b, &
7402 sphi_c, &
7403 sphi_d, &
7404 primitives, &
7405 buffer1, buffer2)
7406#endif
7407 CASE (1)
7408#if __MAX_CONTR > 4 || __MAX_CONTR == 4
7409 CALL contract_dgfp(work, &
7410 nl_a, nl_b, nl_c, nl_d, &
7411 sphi_a, sphi_b, sphi_c, sphi_d, &
7412 primitives, &
7413 buffer1, buffer2)
7414#else
7415 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
7416 work, nl_a, nl_b, nl_c, nl_d, &
7417 sphi_a, &
7418 sphi_b, &
7419 sphi_c, &
7420 sphi_d, &
7421 primitives, &
7422 buffer1, buffer2)
7423#endif
7424 CASE (2)
7425#if __MAX_CONTR > 4 || __MAX_CONTR == 4
7426 CALL contract_dgfd(work, &
7427 nl_a, nl_b, nl_c, nl_d, &
7428 sphi_a, sphi_b, sphi_c, sphi_d, &
7429 primitives, &
7430 buffer1, buffer2)
7431#else
7432 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
7433 work, nl_a, nl_b, nl_c, nl_d, &
7434 sphi_a, &
7435 sphi_b, &
7436 sphi_c, &
7437 sphi_d, &
7438 primitives, &
7439 buffer1, buffer2)
7440#endif
7441 CASE (3)
7442#if __MAX_CONTR > 4 || __MAX_CONTR == 4
7443 CALL contract_dgff(work, &
7444 nl_a, nl_b, nl_c, nl_d, &
7445 sphi_a, sphi_b, sphi_c, sphi_d, &
7446 primitives, &
7447 buffer1, buffer2)
7448#else
7449 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
7450 work, nl_a, nl_b, nl_c, nl_d, &
7451 sphi_a, &
7452 sphi_b, &
7453 sphi_c, &
7454 sphi_d, &
7455 primitives, &
7456 buffer1, buffer2)
7457#endif
7458 CASE (4)
7459#if __MAX_CONTR > 4 || __MAX_CONTR == 4
7460 CALL contract_dgfg(work, &
7461 nl_a, nl_b, nl_c, nl_d, &
7462 sphi_a, sphi_b, sphi_c, sphi_d, &
7463 primitives, &
7464 buffer1, buffer2)
7465#else
7466 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
7467 work, nl_a, nl_b, nl_c, nl_d, &
7468 sphi_a, &
7469 sphi_b, &
7470 sphi_c, &
7471 sphi_d, &
7472 primitives, &
7473 buffer1, buffer2)
7474#endif
7475 CASE DEFAULT
7476 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
7477 work, nl_a, nl_b, nl_c, nl_d, &
7478 sphi_a, &
7479 sphi_b, &
7480 sphi_c, &
7481 sphi_d, &
7482 primitives, &
7483 buffer1, buffer2)
7484 END SELECT
7485 CASE (4)
7486 SELECT CASE (n_d)
7487 CASE (0)
7488#if __MAX_CONTR > 4 || __MAX_CONTR == 4
7489 CALL contract_dggs(work, &
7490 nl_a, nl_b, nl_c, nl_d, &
7491 sphi_a, sphi_b, sphi_c, sphi_d, &
7492 primitives, &
7493 buffer1, buffer2)
7494#else
7495 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
7496 work, nl_a, nl_b, nl_c, nl_d, &
7497 sphi_a, &
7498 sphi_b, &
7499 sphi_c, &
7500 sphi_d, &
7501 primitives, &
7502 buffer1, buffer2)
7503#endif
7504 CASE (1)
7505#if __MAX_CONTR > 4 || __MAX_CONTR == 4
7506 CALL contract_dggp(work, &
7507 nl_a, nl_b, nl_c, nl_d, &
7508 sphi_a, sphi_b, sphi_c, sphi_d, &
7509 primitives, &
7510 buffer1, buffer2)
7511#else
7512 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
7513 work, nl_a, nl_b, nl_c, nl_d, &
7514 sphi_a, &
7515 sphi_b, &
7516 sphi_c, &
7517 sphi_d, &
7518 primitives, &
7519 buffer1, buffer2)
7520#endif
7521 CASE (2)
7522#if __MAX_CONTR > 4 || __MAX_CONTR == 4
7523 CALL contract_dggd(work, &
7524 nl_a, nl_b, nl_c, nl_d, &
7525 sphi_a, sphi_b, sphi_c, sphi_d, &
7526 primitives, &
7527 buffer1, buffer2)
7528#else
7529 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
7530 work, nl_a, nl_b, nl_c, nl_d, &
7531 sphi_a, &
7532 sphi_b, &
7533 sphi_c, &
7534 sphi_d, &
7535 primitives, &
7536 buffer1, buffer2)
7537#endif
7538 CASE (3)
7539#if __MAX_CONTR > 4 || __MAX_CONTR == 4
7540 CALL contract_dggf(work, &
7541 nl_a, nl_b, nl_c, nl_d, &
7542 sphi_a, sphi_b, sphi_c, sphi_d, &
7543 primitives, &
7544 buffer1, buffer2)
7545#else
7546 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
7547 work, nl_a, nl_b, nl_c, nl_d, &
7548 sphi_a, &
7549 sphi_b, &
7550 sphi_c, &
7551 sphi_d, &
7552 primitives, &
7553 buffer1, buffer2)
7554#endif
7555 CASE (4)
7556#if __MAX_CONTR > 4 || __MAX_CONTR == 4
7557 CALL contract_dggg(work, &
7558 nl_a, nl_b, nl_c, nl_d, &
7559 sphi_a, sphi_b, sphi_c, sphi_d, &
7560 primitives, &
7561 buffer1, buffer2)
7562#else
7563 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
7564 work, nl_a, nl_b, nl_c, nl_d, &
7565 sphi_a, &
7566 sphi_b, &
7567 sphi_c, &
7568 sphi_d, &
7569 primitives, &
7570 buffer1, buffer2)
7571#endif
7572 CASE DEFAULT
7573 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
7574 work, nl_a, nl_b, nl_c, nl_d, &
7575 sphi_a, &
7576 sphi_b, &
7577 sphi_c, &
7578 sphi_d, &
7579 primitives, &
7580 buffer1, buffer2)
7581 END SELECT
7582 CASE DEFAULT
7583 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
7584 work, nl_a, nl_b, nl_c, nl_d, &
7585 sphi_a, &
7586 sphi_b, &
7587 sphi_c, &
7588 sphi_d, &
7589 primitives, &
7590 buffer1, buffer2)
7591 END SELECT
7592 CASE DEFAULT
7593 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
7594 work, nl_a, nl_b, nl_c, nl_d, &
7595 sphi_a, &
7596 sphi_b, &
7597 sphi_c, &
7598 sphi_d, &
7599 primitives, &
7600 buffer1, buffer2)
7601 END SELECT
7602 CASE (3)
7603 SELECT CASE (n_b)
7604 CASE (0)
7605 SELECT CASE (n_c)
7606 CASE (0)
7607 SELECT CASE (n_d)
7608 CASE (0)
7609#if __MAX_CONTR > 3 || __MAX_CONTR == 3
7610 CALL contract_fsss(work, &
7611 nl_a, nl_b, nl_c, nl_d, &
7612 sphi_a, sphi_b, sphi_c, sphi_d, &
7613 primitives, &
7614 buffer1, buffer2)
7615#else
7616 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
7617 work, nl_a, nl_b, nl_c, nl_d, &
7618 sphi_a, &
7619 sphi_b, &
7620 sphi_c, &
7621 sphi_d, &
7622 primitives, &
7623 buffer1, buffer2)
7624#endif
7625 CASE (1)
7626#if __MAX_CONTR > 3 || __MAX_CONTR == 3
7627 CALL contract_fssp(work, &
7628 nl_a, nl_b, nl_c, nl_d, &
7629 sphi_a, sphi_b, sphi_c, sphi_d, &
7630 primitives, &
7631 buffer1, buffer2)
7632#else
7633 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
7634 work, nl_a, nl_b, nl_c, nl_d, &
7635 sphi_a, &
7636 sphi_b, &
7637 sphi_c, &
7638 sphi_d, &
7639 primitives, &
7640 buffer1, buffer2)
7641#endif
7642 CASE (2)
7643#if __MAX_CONTR > 3 || __MAX_CONTR == 3
7644 CALL contract_fssd(work, &
7645 nl_a, nl_b, nl_c, nl_d, &
7646 sphi_a, sphi_b, sphi_c, sphi_d, &
7647 primitives, &
7648 buffer1, buffer2)
7649#else
7650 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
7651 work, nl_a, nl_b, nl_c, nl_d, &
7652 sphi_a, &
7653 sphi_b, &
7654 sphi_c, &
7655 sphi_d, &
7656 primitives, &
7657 buffer1, buffer2)
7658#endif
7659 CASE (3)
7660#if __MAX_CONTR > 3 || __MAX_CONTR == 3
7661 CALL contract_fssf(work, &
7662 nl_a, nl_b, nl_c, nl_d, &
7663 sphi_a, sphi_b, sphi_c, sphi_d, &
7664 primitives, &
7665 buffer1, buffer2)
7666#else
7667 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
7668 work, nl_a, nl_b, nl_c, nl_d, &
7669 sphi_a, &
7670 sphi_b, &
7671 sphi_c, &
7672 sphi_d, &
7673 primitives, &
7674 buffer1, buffer2)
7675#endif
7676 CASE (4)
7677#if __MAX_CONTR > 4 || __MAX_CONTR == 4
7678 CALL contract_fssg(work, &
7679 nl_a, nl_b, nl_c, nl_d, &
7680 sphi_a, sphi_b, sphi_c, sphi_d, &
7681 primitives, &
7682 buffer1, buffer2)
7683#else
7684 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
7685 work, nl_a, nl_b, nl_c, nl_d, &
7686 sphi_a, &
7687 sphi_b, &
7688 sphi_c, &
7689 sphi_d, &
7690 primitives, &
7691 buffer1, buffer2)
7692#endif
7693 CASE DEFAULT
7694 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
7695 work, nl_a, nl_b, nl_c, nl_d, &
7696 sphi_a, &
7697 sphi_b, &
7698 sphi_c, &
7699 sphi_d, &
7700 primitives, &
7701 buffer1, buffer2)
7702 END SELECT
7703 CASE (1)
7704 SELECT CASE (n_d)
7705 CASE (0)
7706#if __MAX_CONTR > 3 || __MAX_CONTR == 3
7707 CALL contract_fsps(work, &
7708 nl_a, nl_b, nl_c, nl_d, &
7709 sphi_a, sphi_b, sphi_c, sphi_d, &
7710 primitives, &
7711 buffer1, buffer2)
7712#else
7713 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
7714 work, nl_a, nl_b, nl_c, nl_d, &
7715 sphi_a, &
7716 sphi_b, &
7717 sphi_c, &
7718 sphi_d, &
7719 primitives, &
7720 buffer1, buffer2)
7721#endif
7722 CASE (1)
7723#if __MAX_CONTR > 3 || __MAX_CONTR == 3
7724 CALL contract_fspp(work, &
7725 nl_a, nl_b, nl_c, nl_d, &
7726 sphi_a, sphi_b, sphi_c, sphi_d, &
7727 primitives, &
7728 buffer1, buffer2)
7729#else
7730 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
7731 work, nl_a, nl_b, nl_c, nl_d, &
7732 sphi_a, &
7733 sphi_b, &
7734 sphi_c, &
7735 sphi_d, &
7736 primitives, &
7737 buffer1, buffer2)
7738#endif
7739 CASE (2)
7740#if __MAX_CONTR > 3 || __MAX_CONTR == 3
7741 CALL contract_fspd(work, &
7742 nl_a, nl_b, nl_c, nl_d, &
7743 sphi_a, sphi_b, sphi_c, sphi_d, &
7744 primitives, &
7745 buffer1, buffer2)
7746#else
7747 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
7748 work, nl_a, nl_b, nl_c, nl_d, &
7749 sphi_a, &
7750 sphi_b, &
7751 sphi_c, &
7752 sphi_d, &
7753 primitives, &
7754 buffer1, buffer2)
7755#endif
7756 CASE (3)
7757#if __MAX_CONTR > 3 || __MAX_CONTR == 3
7758 CALL contract_fspf(work, &
7759 nl_a, nl_b, nl_c, nl_d, &
7760 sphi_a, sphi_b, sphi_c, sphi_d, &
7761 primitives, &
7762 buffer1, buffer2)
7763#else
7764 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
7765 work, nl_a, nl_b, nl_c, nl_d, &
7766 sphi_a, &
7767 sphi_b, &
7768 sphi_c, &
7769 sphi_d, &
7770 primitives, &
7771 buffer1, buffer2)
7772#endif
7773 CASE (4)
7774#if __MAX_CONTR > 4 || __MAX_CONTR == 4
7775 CALL contract_fspg(work, &
7776 nl_a, nl_b, nl_c, nl_d, &
7777 sphi_a, sphi_b, sphi_c, sphi_d, &
7778 primitives, &
7779 buffer1, buffer2)
7780#else
7781 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
7782 work, nl_a, nl_b, nl_c, nl_d, &
7783 sphi_a, &
7784 sphi_b, &
7785 sphi_c, &
7786 sphi_d, &
7787 primitives, &
7788 buffer1, buffer2)
7789#endif
7790 CASE DEFAULT
7791 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
7792 work, nl_a, nl_b, nl_c, nl_d, &
7793 sphi_a, &
7794 sphi_b, &
7795 sphi_c, &
7796 sphi_d, &
7797 primitives, &
7798 buffer1, buffer2)
7799 END SELECT
7800 CASE (2)
7801 SELECT CASE (n_d)
7802 CASE (0)
7803#if __MAX_CONTR > 3 || __MAX_CONTR == 3
7804 CALL contract_fsds(work, &
7805 nl_a, nl_b, nl_c, nl_d, &
7806 sphi_a, sphi_b, sphi_c, sphi_d, &
7807 primitives, &
7808 buffer1, buffer2)
7809#else
7810 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
7811 work, nl_a, nl_b, nl_c, nl_d, &
7812 sphi_a, &
7813 sphi_b, &
7814 sphi_c, &
7815 sphi_d, &
7816 primitives, &
7817 buffer1, buffer2)
7818#endif
7819 CASE (1)
7820#if __MAX_CONTR > 3 || __MAX_CONTR == 3
7821 CALL contract_fsdp(work, &
7822 nl_a, nl_b, nl_c, nl_d, &
7823 sphi_a, sphi_b, sphi_c, sphi_d, &
7824 primitives, &
7825 buffer1, buffer2)
7826#else
7827 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
7828 work, nl_a, nl_b, nl_c, nl_d, &
7829 sphi_a, &
7830 sphi_b, &
7831 sphi_c, &
7832 sphi_d, &
7833 primitives, &
7834 buffer1, buffer2)
7835#endif
7836 CASE (2)
7837#if __MAX_CONTR > 3 || __MAX_CONTR == 3
7838 CALL contract_fsdd(work, &
7839 nl_a, nl_b, nl_c, nl_d, &
7840 sphi_a, sphi_b, sphi_c, sphi_d, &
7841 primitives, &
7842 buffer1, buffer2)
7843#else
7844 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
7845 work, nl_a, nl_b, nl_c, nl_d, &
7846 sphi_a, &
7847 sphi_b, &
7848 sphi_c, &
7849 sphi_d, &
7850 primitives, &
7851 buffer1, buffer2)
7852#endif
7853 CASE (3)
7854#if __MAX_CONTR > 3 || __MAX_CONTR == 3
7855 CALL contract_fsdf(work, &
7856 nl_a, nl_b, nl_c, nl_d, &
7857 sphi_a, sphi_b, sphi_c, sphi_d, &
7858 primitives, &
7859 buffer1, buffer2)
7860#else
7861 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
7862 work, nl_a, nl_b, nl_c, nl_d, &
7863 sphi_a, &
7864 sphi_b, &
7865 sphi_c, &
7866 sphi_d, &
7867 primitives, &
7868 buffer1, buffer2)
7869#endif
7870 CASE (4)
7871#if __MAX_CONTR > 4 || __MAX_CONTR == 4
7872 CALL contract_fsdg(work, &
7873 nl_a, nl_b, nl_c, nl_d, &
7874 sphi_a, sphi_b, sphi_c, sphi_d, &
7875 primitives, &
7876 buffer1, buffer2)
7877#else
7878 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
7879 work, nl_a, nl_b, nl_c, nl_d, &
7880 sphi_a, &
7881 sphi_b, &
7882 sphi_c, &
7883 sphi_d, &
7884 primitives, &
7885 buffer1, buffer2)
7886#endif
7887 CASE DEFAULT
7888 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
7889 work, nl_a, nl_b, nl_c, nl_d, &
7890 sphi_a, &
7891 sphi_b, &
7892 sphi_c, &
7893 sphi_d, &
7894 primitives, &
7895 buffer1, buffer2)
7896 END SELECT
7897 CASE (3)
7898 SELECT CASE (n_d)
7899 CASE (0)
7900#if __MAX_CONTR > 3 || __MAX_CONTR == 3
7901 CALL contract_fsfs(work, &
7902 nl_a, nl_b, nl_c, nl_d, &
7903 sphi_a, sphi_b, sphi_c, sphi_d, &
7904 primitives, &
7905 buffer1, buffer2)
7906#else
7907 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
7908 work, nl_a, nl_b, nl_c, nl_d, &
7909 sphi_a, &
7910 sphi_b, &
7911 sphi_c, &
7912 sphi_d, &
7913 primitives, &
7914 buffer1, buffer2)
7915#endif
7916 CASE (1)
7917#if __MAX_CONTR > 3 || __MAX_CONTR == 3
7918 CALL contract_fsfp(work, &
7919 nl_a, nl_b, nl_c, nl_d, &
7920 sphi_a, sphi_b, sphi_c, sphi_d, &
7921 primitives, &
7922 buffer1, buffer2)
7923#else
7924 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
7925 work, nl_a, nl_b, nl_c, nl_d, &
7926 sphi_a, &
7927 sphi_b, &
7928 sphi_c, &
7929 sphi_d, &
7930 primitives, &
7931 buffer1, buffer2)
7932#endif
7933 CASE (2)
7934#if __MAX_CONTR > 3 || __MAX_CONTR == 3
7935 CALL contract_fsfd(work, &
7936 nl_a, nl_b, nl_c, nl_d, &
7937 sphi_a, sphi_b, sphi_c, sphi_d, &
7938 primitives, &
7939 buffer1, buffer2)
7940#else
7941 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
7942 work, nl_a, nl_b, nl_c, nl_d, &
7943 sphi_a, &
7944 sphi_b, &
7945 sphi_c, &
7946 sphi_d, &
7947 primitives, &
7948 buffer1, buffer2)
7949#endif
7950 CASE (3)
7951#if __MAX_CONTR > 3 || __MAX_CONTR == 3
7952 CALL contract_fsff(work, &
7953 nl_a, nl_b, nl_c, nl_d, &
7954 sphi_a, sphi_b, sphi_c, sphi_d, &
7955 primitives, &
7956 buffer1, buffer2)
7957#else
7958 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
7959 work, nl_a, nl_b, nl_c, nl_d, &
7960 sphi_a, &
7961 sphi_b, &
7962 sphi_c, &
7963 sphi_d, &
7964 primitives, &
7965 buffer1, buffer2)
7966#endif
7967 CASE (4)
7968#if __MAX_CONTR > 4 || __MAX_CONTR == 4
7969 CALL contract_fsfg(work, &
7970 nl_a, nl_b, nl_c, nl_d, &
7971 sphi_a, sphi_b, sphi_c, sphi_d, &
7972 primitives, &
7973 buffer1, buffer2)
7974#else
7975 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
7976 work, nl_a, nl_b, nl_c, nl_d, &
7977 sphi_a, &
7978 sphi_b, &
7979 sphi_c, &
7980 sphi_d, &
7981 primitives, &
7982 buffer1, buffer2)
7983#endif
7984 CASE DEFAULT
7985 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
7986 work, nl_a, nl_b, nl_c, nl_d, &
7987 sphi_a, &
7988 sphi_b, &
7989 sphi_c, &
7990 sphi_d, &
7991 primitives, &
7992 buffer1, buffer2)
7993 END SELECT
7994 CASE (4)
7995 SELECT CASE (n_d)
7996 CASE (0)
7997#if __MAX_CONTR > 4 || __MAX_CONTR == 4
7998 CALL contract_fsgs(work, &
7999 nl_a, nl_b, nl_c, nl_d, &
8000 sphi_a, sphi_b, sphi_c, sphi_d, &
8001 primitives, &
8002 buffer1, buffer2)
8003#else
8004 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
8005 work, nl_a, nl_b, nl_c, nl_d, &
8006 sphi_a, &
8007 sphi_b, &
8008 sphi_c, &
8009 sphi_d, &
8010 primitives, &
8011 buffer1, buffer2)
8012#endif
8013 CASE (1)
8014#if __MAX_CONTR > 4 || __MAX_CONTR == 4
8015 CALL contract_fsgp(work, &
8016 nl_a, nl_b, nl_c, nl_d, &
8017 sphi_a, sphi_b, sphi_c, sphi_d, &
8018 primitives, &
8019 buffer1, buffer2)
8020#else
8021 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
8022 work, nl_a, nl_b, nl_c, nl_d, &
8023 sphi_a, &
8024 sphi_b, &
8025 sphi_c, &
8026 sphi_d, &
8027 primitives, &
8028 buffer1, buffer2)
8029#endif
8030 CASE (2)
8031#if __MAX_CONTR > 4 || __MAX_CONTR == 4
8032 CALL contract_fsgd(work, &
8033 nl_a, nl_b, nl_c, nl_d, &
8034 sphi_a, sphi_b, sphi_c, sphi_d, &
8035 primitives, &
8036 buffer1, buffer2)
8037#else
8038 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
8039 work, nl_a, nl_b, nl_c, nl_d, &
8040 sphi_a, &
8041 sphi_b, &
8042 sphi_c, &
8043 sphi_d, &
8044 primitives, &
8045 buffer1, buffer2)
8046#endif
8047 CASE (3)
8048#if __MAX_CONTR > 4 || __MAX_CONTR == 4
8049 CALL contract_fsgf(work, &
8050 nl_a, nl_b, nl_c, nl_d, &
8051 sphi_a, sphi_b, sphi_c, sphi_d, &
8052 primitives, &
8053 buffer1, buffer2)
8054#else
8055 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
8056 work, nl_a, nl_b, nl_c, nl_d, &
8057 sphi_a, &
8058 sphi_b, &
8059 sphi_c, &
8060 sphi_d, &
8061 primitives, &
8062 buffer1, buffer2)
8063#endif
8064 CASE (4)
8065#if __MAX_CONTR > 4 || __MAX_CONTR == 4
8066 CALL contract_fsgg(work, &
8067 nl_a, nl_b, nl_c, nl_d, &
8068 sphi_a, sphi_b, sphi_c, sphi_d, &
8069 primitives, &
8070 buffer1, buffer2)
8071#else
8072 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
8073 work, nl_a, nl_b, nl_c, nl_d, &
8074 sphi_a, &
8075 sphi_b, &
8076 sphi_c, &
8077 sphi_d, &
8078 primitives, &
8079 buffer1, buffer2)
8080#endif
8081 CASE DEFAULT
8082 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
8083 work, nl_a, nl_b, nl_c, nl_d, &
8084 sphi_a, &
8085 sphi_b, &
8086 sphi_c, &
8087 sphi_d, &
8088 primitives, &
8089 buffer1, buffer2)
8090 END SELECT
8091 CASE DEFAULT
8092 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
8093 work, nl_a, nl_b, nl_c, nl_d, &
8094 sphi_a, &
8095 sphi_b, &
8096 sphi_c, &
8097 sphi_d, &
8098 primitives, &
8099 buffer1, buffer2)
8100 END SELECT
8101 CASE (1)
8102 SELECT CASE (n_c)
8103 CASE (0)
8104 SELECT CASE (n_d)
8105 CASE (0)
8106#if __MAX_CONTR > 3 || __MAX_CONTR == 3
8107 CALL contract_fpss(work, &
8108 nl_a, nl_b, nl_c, nl_d, &
8109 sphi_a, sphi_b, sphi_c, sphi_d, &
8110 primitives, &
8111 buffer1, buffer2)
8112#else
8113 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
8114 work, nl_a, nl_b, nl_c, nl_d, &
8115 sphi_a, &
8116 sphi_b, &
8117 sphi_c, &
8118 sphi_d, &
8119 primitives, &
8120 buffer1, buffer2)
8121#endif
8122 CASE (1)
8123#if __MAX_CONTR > 3 || __MAX_CONTR == 3
8124 CALL contract_fpsp(work, &
8125 nl_a, nl_b, nl_c, nl_d, &
8126 sphi_a, sphi_b, sphi_c, sphi_d, &
8127 primitives, &
8128 buffer1, buffer2)
8129#else
8130 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
8131 work, nl_a, nl_b, nl_c, nl_d, &
8132 sphi_a, &
8133 sphi_b, &
8134 sphi_c, &
8135 sphi_d, &
8136 primitives, &
8137 buffer1, buffer2)
8138#endif
8139 CASE (2)
8140#if __MAX_CONTR > 3 || __MAX_CONTR == 3
8141 CALL contract_fpsd(work, &
8142 nl_a, nl_b, nl_c, nl_d, &
8143 sphi_a, sphi_b, sphi_c, sphi_d, &
8144 primitives, &
8145 buffer1, buffer2)
8146#else
8147 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
8148 work, nl_a, nl_b, nl_c, nl_d, &
8149 sphi_a, &
8150 sphi_b, &
8151 sphi_c, &
8152 sphi_d, &
8153 primitives, &
8154 buffer1, buffer2)
8155#endif
8156 CASE (3)
8157#if __MAX_CONTR > 3 || __MAX_CONTR == 3
8158 CALL contract_fpsf(work, &
8159 nl_a, nl_b, nl_c, nl_d, &
8160 sphi_a, sphi_b, sphi_c, sphi_d, &
8161 primitives, &
8162 buffer1, buffer2)
8163#else
8164 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
8165 work, nl_a, nl_b, nl_c, nl_d, &
8166 sphi_a, &
8167 sphi_b, &
8168 sphi_c, &
8169 sphi_d, &
8170 primitives, &
8171 buffer1, buffer2)
8172#endif
8173 CASE (4)
8174#if __MAX_CONTR > 4 || __MAX_CONTR == 4
8175 CALL contract_fpsg(work, &
8176 nl_a, nl_b, nl_c, nl_d, &
8177 sphi_a, sphi_b, sphi_c, sphi_d, &
8178 primitives, &
8179 buffer1, buffer2)
8180#else
8181 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
8182 work, nl_a, nl_b, nl_c, nl_d, &
8183 sphi_a, &
8184 sphi_b, &
8185 sphi_c, &
8186 sphi_d, &
8187 primitives, &
8188 buffer1, buffer2)
8189#endif
8190 CASE DEFAULT
8191 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
8192 work, nl_a, nl_b, nl_c, nl_d, &
8193 sphi_a, &
8194 sphi_b, &
8195 sphi_c, &
8196 sphi_d, &
8197 primitives, &
8198 buffer1, buffer2)
8199 END SELECT
8200 CASE (1)
8201 SELECT CASE (n_d)
8202 CASE (0)
8203#if __MAX_CONTR > 3 || __MAX_CONTR == 3
8204 CALL contract_fpps(work, &
8205 nl_a, nl_b, nl_c, nl_d, &
8206 sphi_a, sphi_b, sphi_c, sphi_d, &
8207 primitives, &
8208 buffer1, buffer2)
8209#else
8210 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
8211 work, nl_a, nl_b, nl_c, nl_d, &
8212 sphi_a, &
8213 sphi_b, &
8214 sphi_c, &
8215 sphi_d, &
8216 primitives, &
8217 buffer1, buffer2)
8218#endif
8219 CASE (1)
8220#if __MAX_CONTR > 3 || __MAX_CONTR == 3
8221 CALL contract_fppp(work, &
8222 nl_a, nl_b, nl_c, nl_d, &
8223 sphi_a, sphi_b, sphi_c, sphi_d, &
8224 primitives, &
8225 buffer1, buffer2)
8226#else
8227 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
8228 work, nl_a, nl_b, nl_c, nl_d, &
8229 sphi_a, &
8230 sphi_b, &
8231 sphi_c, &
8232 sphi_d, &
8233 primitives, &
8234 buffer1, buffer2)
8235#endif
8236 CASE (2)
8237#if __MAX_CONTR > 3 || __MAX_CONTR == 3
8238 CALL contract_fppd(work, &
8239 nl_a, nl_b, nl_c, nl_d, &
8240 sphi_a, sphi_b, sphi_c, sphi_d, &
8241 primitives, &
8242 buffer1, buffer2)
8243#else
8244 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
8245 work, nl_a, nl_b, nl_c, nl_d, &
8246 sphi_a, &
8247 sphi_b, &
8248 sphi_c, &
8249 sphi_d, &
8250 primitives, &
8251 buffer1, buffer2)
8252#endif
8253 CASE (3)
8254#if __MAX_CONTR > 3 || __MAX_CONTR == 3
8255 CALL contract_fppf(work, &
8256 nl_a, nl_b, nl_c, nl_d, &
8257 sphi_a, sphi_b, sphi_c, sphi_d, &
8258 primitives, &
8259 buffer1, buffer2)
8260#else
8261 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
8262 work, nl_a, nl_b, nl_c, nl_d, &
8263 sphi_a, &
8264 sphi_b, &
8265 sphi_c, &
8266 sphi_d, &
8267 primitives, &
8268 buffer1, buffer2)
8269#endif
8270 CASE (4)
8271#if __MAX_CONTR > 4 || __MAX_CONTR == 4
8272 CALL contract_fppg(work, &
8273 nl_a, nl_b, nl_c, nl_d, &
8274 sphi_a, sphi_b, sphi_c, sphi_d, &
8275 primitives, &
8276 buffer1, buffer2)
8277#else
8278 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
8279 work, nl_a, nl_b, nl_c, nl_d, &
8280 sphi_a, &
8281 sphi_b, &
8282 sphi_c, &
8283 sphi_d, &
8284 primitives, &
8285 buffer1, buffer2)
8286#endif
8287 CASE DEFAULT
8288 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
8289 work, nl_a, nl_b, nl_c, nl_d, &
8290 sphi_a, &
8291 sphi_b, &
8292 sphi_c, &
8293 sphi_d, &
8294 primitives, &
8295 buffer1, buffer2)
8296 END SELECT
8297 CASE (2)
8298 SELECT CASE (n_d)
8299 CASE (0)
8300#if __MAX_CONTR > 3 || __MAX_CONTR == 3
8301 CALL contract_fpds(work, &
8302 nl_a, nl_b, nl_c, nl_d, &
8303 sphi_a, sphi_b, sphi_c, sphi_d, &
8304 primitives, &
8305 buffer1, buffer2)
8306#else
8307 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
8308 work, nl_a, nl_b, nl_c, nl_d, &
8309 sphi_a, &
8310 sphi_b, &
8311 sphi_c, &
8312 sphi_d, &
8313 primitives, &
8314 buffer1, buffer2)
8315#endif
8316 CASE (1)
8317#if __MAX_CONTR > 3 || __MAX_CONTR == 3
8318 CALL contract_fpdp(work, &
8319 nl_a, nl_b, nl_c, nl_d, &
8320 sphi_a, sphi_b, sphi_c, sphi_d, &
8321 primitives, &
8322 buffer1, buffer2)
8323#else
8324 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
8325 work, nl_a, nl_b, nl_c, nl_d, &
8326 sphi_a, &
8327 sphi_b, &
8328 sphi_c, &
8329 sphi_d, &
8330 primitives, &
8331 buffer1, buffer2)
8332#endif
8333 CASE (2)
8334#if __MAX_CONTR > 3 || __MAX_CONTR == 3
8335 CALL contract_fpdd(work, &
8336 nl_a, nl_b, nl_c, nl_d, &
8337 sphi_a, sphi_b, sphi_c, sphi_d, &
8338 primitives, &
8339 buffer1, buffer2)
8340#else
8341 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
8342 work, nl_a, nl_b, nl_c, nl_d, &
8343 sphi_a, &
8344 sphi_b, &
8345 sphi_c, &
8346 sphi_d, &
8347 primitives, &
8348 buffer1, buffer2)
8349#endif
8350 CASE (3)
8351#if __MAX_CONTR > 3 || __MAX_CONTR == 3
8352 CALL contract_fpdf(work, &
8353 nl_a, nl_b, nl_c, nl_d, &
8354 sphi_a, sphi_b, sphi_c, sphi_d, &
8355 primitives, &
8356 buffer1, buffer2)
8357#else
8358 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
8359 work, nl_a, nl_b, nl_c, nl_d, &
8360 sphi_a, &
8361 sphi_b, &
8362 sphi_c, &
8363 sphi_d, &
8364 primitives, &
8365 buffer1, buffer2)
8366#endif
8367 CASE (4)
8368#if __MAX_CONTR > 4 || __MAX_CONTR == 4
8369 CALL contract_fpdg(work, &
8370 nl_a, nl_b, nl_c, nl_d, &
8371 sphi_a, sphi_b, sphi_c, sphi_d, &
8372 primitives, &
8373 buffer1, buffer2)
8374#else
8375 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
8376 work, nl_a, nl_b, nl_c, nl_d, &
8377 sphi_a, &
8378 sphi_b, &
8379 sphi_c, &
8380 sphi_d, &
8381 primitives, &
8382 buffer1, buffer2)
8383#endif
8384 CASE DEFAULT
8385 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
8386 work, nl_a, nl_b, nl_c, nl_d, &
8387 sphi_a, &
8388 sphi_b, &
8389 sphi_c, &
8390 sphi_d, &
8391 primitives, &
8392 buffer1, buffer2)
8393 END SELECT
8394 CASE (3)
8395 SELECT CASE (n_d)
8396 CASE (0)
8397#if __MAX_CONTR > 3 || __MAX_CONTR == 3
8398 CALL contract_fpfs(work, &
8399 nl_a, nl_b, nl_c, nl_d, &
8400 sphi_a, sphi_b, sphi_c, sphi_d, &
8401 primitives, &
8402 buffer1, buffer2)
8403#else
8404 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
8405 work, nl_a, nl_b, nl_c, nl_d, &
8406 sphi_a, &
8407 sphi_b, &
8408 sphi_c, &
8409 sphi_d, &
8410 primitives, &
8411 buffer1, buffer2)
8412#endif
8413 CASE (1)
8414#if __MAX_CONTR > 3 || __MAX_CONTR == 3
8415 CALL contract_fpfp(work, &
8416 nl_a, nl_b, nl_c, nl_d, &
8417 sphi_a, sphi_b, sphi_c, sphi_d, &
8418 primitives, &
8419 buffer1, buffer2)
8420#else
8421 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
8422 work, nl_a, nl_b, nl_c, nl_d, &
8423 sphi_a, &
8424 sphi_b, &
8425 sphi_c, &
8426 sphi_d, &
8427 primitives, &
8428 buffer1, buffer2)
8429#endif
8430 CASE (2)
8431#if __MAX_CONTR > 3 || __MAX_CONTR == 3
8432 CALL contract_fpfd(work, &
8433 nl_a, nl_b, nl_c, nl_d, &
8434 sphi_a, sphi_b, sphi_c, sphi_d, &
8435 primitives, &
8436 buffer1, buffer2)
8437#else
8438 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
8439 work, nl_a, nl_b, nl_c, nl_d, &
8440 sphi_a, &
8441 sphi_b, &
8442 sphi_c, &
8443 sphi_d, &
8444 primitives, &
8445 buffer1, buffer2)
8446#endif
8447 CASE (3)
8448#if __MAX_CONTR > 3 || __MAX_CONTR == 3
8449 CALL contract_fpff(work, &
8450 nl_a, nl_b, nl_c, nl_d, &
8451 sphi_a, sphi_b, sphi_c, sphi_d, &
8452 primitives, &
8453 buffer1, buffer2)
8454#else
8455 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
8456 work, nl_a, nl_b, nl_c, nl_d, &
8457 sphi_a, &
8458 sphi_b, &
8459 sphi_c, &
8460 sphi_d, &
8461 primitives, &
8462 buffer1, buffer2)
8463#endif
8464 CASE (4)
8465#if __MAX_CONTR > 4 || __MAX_CONTR == 4
8466 CALL contract_fpfg(work, &
8467 nl_a, nl_b, nl_c, nl_d, &
8468 sphi_a, sphi_b, sphi_c, sphi_d, &
8469 primitives, &
8470 buffer1, buffer2)
8471#else
8472 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
8473 work, nl_a, nl_b, nl_c, nl_d, &
8474 sphi_a, &
8475 sphi_b, &
8476 sphi_c, &
8477 sphi_d, &
8478 primitives, &
8479 buffer1, buffer2)
8480#endif
8481 CASE DEFAULT
8482 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
8483 work, nl_a, nl_b, nl_c, nl_d, &
8484 sphi_a, &
8485 sphi_b, &
8486 sphi_c, &
8487 sphi_d, &
8488 primitives, &
8489 buffer1, buffer2)
8490 END SELECT
8491 CASE (4)
8492 SELECT CASE (n_d)
8493 CASE (0)
8494#if __MAX_CONTR > 4 || __MAX_CONTR == 4
8495 CALL contract_fpgs(work, &
8496 nl_a, nl_b, nl_c, nl_d, &
8497 sphi_a, sphi_b, sphi_c, sphi_d, &
8498 primitives, &
8499 buffer1, buffer2)
8500#else
8501 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
8502 work, nl_a, nl_b, nl_c, nl_d, &
8503 sphi_a, &
8504 sphi_b, &
8505 sphi_c, &
8506 sphi_d, &
8507 primitives, &
8508 buffer1, buffer2)
8509#endif
8510 CASE (1)
8511#if __MAX_CONTR > 4 || __MAX_CONTR == 4
8512 CALL contract_fpgp(work, &
8513 nl_a, nl_b, nl_c, nl_d, &
8514 sphi_a, sphi_b, sphi_c, sphi_d, &
8515 primitives, &
8516 buffer1, buffer2)
8517#else
8518 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
8519 work, nl_a, nl_b, nl_c, nl_d, &
8520 sphi_a, &
8521 sphi_b, &
8522 sphi_c, &
8523 sphi_d, &
8524 primitives, &
8525 buffer1, buffer2)
8526#endif
8527 CASE (2)
8528#if __MAX_CONTR > 4 || __MAX_CONTR == 4
8529 CALL contract_fpgd(work, &
8530 nl_a, nl_b, nl_c, nl_d, &
8531 sphi_a, sphi_b, sphi_c, sphi_d, &
8532 primitives, &
8533 buffer1, buffer2)
8534#else
8535 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
8536 work, nl_a, nl_b, nl_c, nl_d, &
8537 sphi_a, &
8538 sphi_b, &
8539 sphi_c, &
8540 sphi_d, &
8541 primitives, &
8542 buffer1, buffer2)
8543#endif
8544 CASE (3)
8545#if __MAX_CONTR > 4 || __MAX_CONTR == 4
8546 CALL contract_fpgf(work, &
8547 nl_a, nl_b, nl_c, nl_d, &
8548 sphi_a, sphi_b, sphi_c, sphi_d, &
8549 primitives, &
8550 buffer1, buffer2)
8551#else
8552 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
8553 work, nl_a, nl_b, nl_c, nl_d, &
8554 sphi_a, &
8555 sphi_b, &
8556 sphi_c, &
8557 sphi_d, &
8558 primitives, &
8559 buffer1, buffer2)
8560#endif
8561 CASE (4)
8562#if __MAX_CONTR > 4 || __MAX_CONTR == 4
8563 CALL contract_fpgg(work, &
8564 nl_a, nl_b, nl_c, nl_d, &
8565 sphi_a, sphi_b, sphi_c, sphi_d, &
8566 primitives, &
8567 buffer1, buffer2)
8568#else
8569 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
8570 work, nl_a, nl_b, nl_c, nl_d, &
8571 sphi_a, &
8572 sphi_b, &
8573 sphi_c, &
8574 sphi_d, &
8575 primitives, &
8576 buffer1, buffer2)
8577#endif
8578 CASE DEFAULT
8579 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
8580 work, nl_a, nl_b, nl_c, nl_d, &
8581 sphi_a, &
8582 sphi_b, &
8583 sphi_c, &
8584 sphi_d, &
8585 primitives, &
8586 buffer1, buffer2)
8587 END SELECT
8588 CASE DEFAULT
8589 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
8590 work, nl_a, nl_b, nl_c, nl_d, &
8591 sphi_a, &
8592 sphi_b, &
8593 sphi_c, &
8594 sphi_d, &
8595 primitives, &
8596 buffer1, buffer2)
8597 END SELECT
8598 CASE (2)
8599 SELECT CASE (n_c)
8600 CASE (0)
8601 SELECT CASE (n_d)
8602 CASE (0)
8603#if __MAX_CONTR > 3 || __MAX_CONTR == 3
8604 CALL contract_fdss(work, &
8605 nl_a, nl_b, nl_c, nl_d, &
8606 sphi_a, sphi_b, sphi_c, sphi_d, &
8607 primitives, &
8608 buffer1, buffer2)
8609#else
8610 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
8611 work, nl_a, nl_b, nl_c, nl_d, &
8612 sphi_a, &
8613 sphi_b, &
8614 sphi_c, &
8615 sphi_d, &
8616 primitives, &
8617 buffer1, buffer2)
8618#endif
8619 CASE (1)
8620#if __MAX_CONTR > 3 || __MAX_CONTR == 3
8621 CALL contract_fdsp(work, &
8622 nl_a, nl_b, nl_c, nl_d, &
8623 sphi_a, sphi_b, sphi_c, sphi_d, &
8624 primitives, &
8625 buffer1, buffer2)
8626#else
8627 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
8628 work, nl_a, nl_b, nl_c, nl_d, &
8629 sphi_a, &
8630 sphi_b, &
8631 sphi_c, &
8632 sphi_d, &
8633 primitives, &
8634 buffer1, buffer2)
8635#endif
8636 CASE (2)
8637#if __MAX_CONTR > 3 || __MAX_CONTR == 3
8638 CALL contract_fdsd(work, &
8639 nl_a, nl_b, nl_c, nl_d, &
8640 sphi_a, sphi_b, sphi_c, sphi_d, &
8641 primitives, &
8642 buffer1, buffer2)
8643#else
8644 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
8645 work, nl_a, nl_b, nl_c, nl_d, &
8646 sphi_a, &
8647 sphi_b, &
8648 sphi_c, &
8649 sphi_d, &
8650 primitives, &
8651 buffer1, buffer2)
8652#endif
8653 CASE (3)
8654#if __MAX_CONTR > 3 || __MAX_CONTR == 3
8655 CALL contract_fdsf(work, &
8656 nl_a, nl_b, nl_c, nl_d, &
8657 sphi_a, sphi_b, sphi_c, sphi_d, &
8658 primitives, &
8659 buffer1, buffer2)
8660#else
8661 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
8662 work, nl_a, nl_b, nl_c, nl_d, &
8663 sphi_a, &
8664 sphi_b, &
8665 sphi_c, &
8666 sphi_d, &
8667 primitives, &
8668 buffer1, buffer2)
8669#endif
8670 CASE (4)
8671#if __MAX_CONTR > 4 || __MAX_CONTR == 4
8672 CALL contract_fdsg(work, &
8673 nl_a, nl_b, nl_c, nl_d, &
8674 sphi_a, sphi_b, sphi_c, sphi_d, &
8675 primitives, &
8676 buffer1, buffer2)
8677#else
8678 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
8679 work, nl_a, nl_b, nl_c, nl_d, &
8680 sphi_a, &
8681 sphi_b, &
8682 sphi_c, &
8683 sphi_d, &
8684 primitives, &
8685 buffer1, buffer2)
8686#endif
8687 CASE DEFAULT
8688 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
8689 work, nl_a, nl_b, nl_c, nl_d, &
8690 sphi_a, &
8691 sphi_b, &
8692 sphi_c, &
8693 sphi_d, &
8694 primitives, &
8695 buffer1, buffer2)
8696 END SELECT
8697 CASE (1)
8698 SELECT CASE (n_d)
8699 CASE (0)
8700#if __MAX_CONTR > 3 || __MAX_CONTR == 3
8701 CALL contract_fdps(work, &
8702 nl_a, nl_b, nl_c, nl_d, &
8703 sphi_a, sphi_b, sphi_c, sphi_d, &
8704 primitives, &
8705 buffer1, buffer2)
8706#else
8707 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
8708 work, nl_a, nl_b, nl_c, nl_d, &
8709 sphi_a, &
8710 sphi_b, &
8711 sphi_c, &
8712 sphi_d, &
8713 primitives, &
8714 buffer1, buffer2)
8715#endif
8716 CASE (1)
8717#if __MAX_CONTR > 3 || __MAX_CONTR == 3
8718 CALL contract_fdpp(work, &
8719 nl_a, nl_b, nl_c, nl_d, &
8720 sphi_a, sphi_b, sphi_c, sphi_d, &
8721 primitives, &
8722 buffer1, buffer2)
8723#else
8724 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
8725 work, nl_a, nl_b, nl_c, nl_d, &
8726 sphi_a, &
8727 sphi_b, &
8728 sphi_c, &
8729 sphi_d, &
8730 primitives, &
8731 buffer1, buffer2)
8732#endif
8733 CASE (2)
8734#if __MAX_CONTR > 3 || __MAX_CONTR == 3
8735 CALL contract_fdpd(work, &
8736 nl_a, nl_b, nl_c, nl_d, &
8737 sphi_a, sphi_b, sphi_c, sphi_d, &
8738 primitives, &
8739 buffer1, buffer2)
8740#else
8741 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
8742 work, nl_a, nl_b, nl_c, nl_d, &
8743 sphi_a, &
8744 sphi_b, &
8745 sphi_c, &
8746 sphi_d, &
8747 primitives, &
8748 buffer1, buffer2)
8749#endif
8750 CASE (3)
8751#if __MAX_CONTR > 3 || __MAX_CONTR == 3
8752 CALL contract_fdpf(work, &
8753 nl_a, nl_b, nl_c, nl_d, &
8754 sphi_a, sphi_b, sphi_c, sphi_d, &
8755 primitives, &
8756 buffer1, buffer2)
8757#else
8758 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
8759 work, nl_a, nl_b, nl_c, nl_d, &
8760 sphi_a, &
8761 sphi_b, &
8762 sphi_c, &
8763 sphi_d, &
8764 primitives, &
8765 buffer1, buffer2)
8766#endif
8767 CASE (4)
8768#if __MAX_CONTR > 4 || __MAX_CONTR == 4
8769 CALL contract_fdpg(work, &
8770 nl_a, nl_b, nl_c, nl_d, &
8771 sphi_a, sphi_b, sphi_c, sphi_d, &
8772 primitives, &
8773 buffer1, buffer2)
8774#else
8775 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
8776 work, nl_a, nl_b, nl_c, nl_d, &
8777 sphi_a, &
8778 sphi_b, &
8779 sphi_c, &
8780 sphi_d, &
8781 primitives, &
8782 buffer1, buffer2)
8783#endif
8784 CASE DEFAULT
8785 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
8786 work, nl_a, nl_b, nl_c, nl_d, &
8787 sphi_a, &
8788 sphi_b, &
8789 sphi_c, &
8790 sphi_d, &
8791 primitives, &
8792 buffer1, buffer2)
8793 END SELECT
8794 CASE (2)
8795 SELECT CASE (n_d)
8796 CASE (0)
8797#if __MAX_CONTR > 3 || __MAX_CONTR == 3
8798 CALL contract_fdds(work, &
8799 nl_a, nl_b, nl_c, nl_d, &
8800 sphi_a, sphi_b, sphi_c, sphi_d, &
8801 primitives, &
8802 buffer1, buffer2)
8803#else
8804 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
8805 work, nl_a, nl_b, nl_c, nl_d, &
8806 sphi_a, &
8807 sphi_b, &
8808 sphi_c, &
8809 sphi_d, &
8810 primitives, &
8811 buffer1, buffer2)
8812#endif
8813 CASE (1)
8814#if __MAX_CONTR > 3 || __MAX_CONTR == 3
8815 CALL contract_fddp(work, &
8816 nl_a, nl_b, nl_c, nl_d, &
8817 sphi_a, sphi_b, sphi_c, sphi_d, &
8818 primitives, &
8819 buffer1, buffer2)
8820#else
8821 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
8822 work, nl_a, nl_b, nl_c, nl_d, &
8823 sphi_a, &
8824 sphi_b, &
8825 sphi_c, &
8826 sphi_d, &
8827 primitives, &
8828 buffer1, buffer2)
8829#endif
8830 CASE (2)
8831#if __MAX_CONTR > 3 || __MAX_CONTR == 3
8832 CALL contract_fddd(work, &
8833 nl_a, nl_b, nl_c, nl_d, &
8834 sphi_a, sphi_b, sphi_c, sphi_d, &
8835 primitives, &
8836 buffer1, buffer2)
8837#else
8838 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
8839 work, nl_a, nl_b, nl_c, nl_d, &
8840 sphi_a, &
8841 sphi_b, &
8842 sphi_c, &
8843 sphi_d, &
8844 primitives, &
8845 buffer1, buffer2)
8846#endif
8847 CASE (3)
8848#if __MAX_CONTR > 3 || __MAX_CONTR == 3
8849 CALL contract_fddf(work, &
8850 nl_a, nl_b, nl_c, nl_d, &
8851 sphi_a, sphi_b, sphi_c, sphi_d, &
8852 primitives, &
8853 buffer1, buffer2)
8854#else
8855 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
8856 work, nl_a, nl_b, nl_c, nl_d, &
8857 sphi_a, &
8858 sphi_b, &
8859 sphi_c, &
8860 sphi_d, &
8861 primitives, &
8862 buffer1, buffer2)
8863#endif
8864 CASE (4)
8865#if __MAX_CONTR > 4 || __MAX_CONTR == 4
8866 CALL contract_fddg(work, &
8867 nl_a, nl_b, nl_c, nl_d, &
8868 sphi_a, sphi_b, sphi_c, sphi_d, &
8869 primitives, &
8870 buffer1, buffer2)
8871#else
8872 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
8873 work, nl_a, nl_b, nl_c, nl_d, &
8874 sphi_a, &
8875 sphi_b, &
8876 sphi_c, &
8877 sphi_d, &
8878 primitives, &
8879 buffer1, buffer2)
8880#endif
8881 CASE DEFAULT
8882 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
8883 work, nl_a, nl_b, nl_c, nl_d, &
8884 sphi_a, &
8885 sphi_b, &
8886 sphi_c, &
8887 sphi_d, &
8888 primitives, &
8889 buffer1, buffer2)
8890 END SELECT
8891 CASE (3)
8892 SELECT CASE (n_d)
8893 CASE (0)
8894#if __MAX_CONTR > 3 || __MAX_CONTR == 3
8895 CALL contract_fdfs(work, &
8896 nl_a, nl_b, nl_c, nl_d, &
8897 sphi_a, sphi_b, sphi_c, sphi_d, &
8898 primitives, &
8899 buffer1, buffer2)
8900#else
8901 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
8902 work, nl_a, nl_b, nl_c, nl_d, &
8903 sphi_a, &
8904 sphi_b, &
8905 sphi_c, &
8906 sphi_d, &
8907 primitives, &
8908 buffer1, buffer2)
8909#endif
8910 CASE (1)
8911#if __MAX_CONTR > 3 || __MAX_CONTR == 3
8912 CALL contract_fdfp(work, &
8913 nl_a, nl_b, nl_c, nl_d, &
8914 sphi_a, sphi_b, sphi_c, sphi_d, &
8915 primitives, &
8916 buffer1, buffer2)
8917#else
8918 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
8919 work, nl_a, nl_b, nl_c, nl_d, &
8920 sphi_a, &
8921 sphi_b, &
8922 sphi_c, &
8923 sphi_d, &
8924 primitives, &
8925 buffer1, buffer2)
8926#endif
8927 CASE (2)
8928#if __MAX_CONTR > 3 || __MAX_CONTR == 3
8929 CALL contract_fdfd(work, &
8930 nl_a, nl_b, nl_c, nl_d, &
8931 sphi_a, sphi_b, sphi_c, sphi_d, &
8932 primitives, &
8933 buffer1, buffer2)
8934#else
8935 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
8936 work, nl_a, nl_b, nl_c, nl_d, &
8937 sphi_a, &
8938 sphi_b, &
8939 sphi_c, &
8940 sphi_d, &
8941 primitives, &
8942 buffer1, buffer2)
8943#endif
8944 CASE (3)
8945#if __MAX_CONTR > 3 || __MAX_CONTR == 3
8946 CALL contract_fdff(work, &
8947 nl_a, nl_b, nl_c, nl_d, &
8948 sphi_a, sphi_b, sphi_c, sphi_d, &
8949 primitives, &
8950 buffer1, buffer2)
8951#else
8952 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
8953 work, nl_a, nl_b, nl_c, nl_d, &
8954 sphi_a, &
8955 sphi_b, &
8956 sphi_c, &
8957 sphi_d, &
8958 primitives, &
8959 buffer1, buffer2)
8960#endif
8961 CASE (4)
8962#if __MAX_CONTR > 4 || __MAX_CONTR == 4
8963 CALL contract_fdfg(work, &
8964 nl_a, nl_b, nl_c, nl_d, &
8965 sphi_a, sphi_b, sphi_c, sphi_d, &
8966 primitives, &
8967 buffer1, buffer2)
8968#else
8969 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
8970 work, nl_a, nl_b, nl_c, nl_d, &
8971 sphi_a, &
8972 sphi_b, &
8973 sphi_c, &
8974 sphi_d, &
8975 primitives, &
8976 buffer1, buffer2)
8977#endif
8978 CASE DEFAULT
8979 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
8980 work, nl_a, nl_b, nl_c, nl_d, &
8981 sphi_a, &
8982 sphi_b, &
8983 sphi_c, &
8984 sphi_d, &
8985 primitives, &
8986 buffer1, buffer2)
8987 END SELECT
8988 CASE (4)
8989 SELECT CASE (n_d)
8990 CASE (0)
8991#if __MAX_CONTR > 4 || __MAX_CONTR == 4
8992 CALL contract_fdgs(work, &
8993 nl_a, nl_b, nl_c, nl_d, &
8994 sphi_a, sphi_b, sphi_c, sphi_d, &
8995 primitives, &
8996 buffer1, buffer2)
8997#else
8998 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
8999 work, nl_a, nl_b, nl_c, nl_d, &
9000 sphi_a, &
9001 sphi_b, &
9002 sphi_c, &
9003 sphi_d, &
9004 primitives, &
9005 buffer1, buffer2)
9006#endif
9007 CASE (1)
9008#if __MAX_CONTR > 4 || __MAX_CONTR == 4
9009 CALL contract_fdgp(work, &
9010 nl_a, nl_b, nl_c, nl_d, &
9011 sphi_a, sphi_b, sphi_c, sphi_d, &
9012 primitives, &
9013 buffer1, buffer2)
9014#else
9015 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
9016 work, nl_a, nl_b, nl_c, nl_d, &
9017 sphi_a, &
9018 sphi_b, &
9019 sphi_c, &
9020 sphi_d, &
9021 primitives, &
9022 buffer1, buffer2)
9023#endif
9024 CASE (2)
9025#if __MAX_CONTR > 4 || __MAX_CONTR == 4
9026 CALL contract_fdgd(work, &
9027 nl_a, nl_b, nl_c, nl_d, &
9028 sphi_a, sphi_b, sphi_c, sphi_d, &
9029 primitives, &
9030 buffer1, buffer2)
9031#else
9032 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
9033 work, nl_a, nl_b, nl_c, nl_d, &
9034 sphi_a, &
9035 sphi_b, &
9036 sphi_c, &
9037 sphi_d, &
9038 primitives, &
9039 buffer1, buffer2)
9040#endif
9041 CASE (3)
9042#if __MAX_CONTR > 4 || __MAX_CONTR == 4
9043 CALL contract_fdgf(work, &
9044 nl_a, nl_b, nl_c, nl_d, &
9045 sphi_a, sphi_b, sphi_c, sphi_d, &
9046 primitives, &
9047 buffer1, buffer2)
9048#else
9049 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
9050 work, nl_a, nl_b, nl_c, nl_d, &
9051 sphi_a, &
9052 sphi_b, &
9053 sphi_c, &
9054 sphi_d, &
9055 primitives, &
9056 buffer1, buffer2)
9057#endif
9058 CASE (4)
9059#if __MAX_CONTR > 4 || __MAX_CONTR == 4
9060 CALL contract_fdgg(work, &
9061 nl_a, nl_b, nl_c, nl_d, &
9062 sphi_a, sphi_b, sphi_c, sphi_d, &
9063 primitives, &
9064 buffer1, buffer2)
9065#else
9066 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
9067 work, nl_a, nl_b, nl_c, nl_d, &
9068 sphi_a, &
9069 sphi_b, &
9070 sphi_c, &
9071 sphi_d, &
9072 primitives, &
9073 buffer1, buffer2)
9074#endif
9075 CASE DEFAULT
9076 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
9077 work, nl_a, nl_b, nl_c, nl_d, &
9078 sphi_a, &
9079 sphi_b, &
9080 sphi_c, &
9081 sphi_d, &
9082 primitives, &
9083 buffer1, buffer2)
9084 END SELECT
9085 CASE DEFAULT
9086 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
9087 work, nl_a, nl_b, nl_c, nl_d, &
9088 sphi_a, &
9089 sphi_b, &
9090 sphi_c, &
9091 sphi_d, &
9092 primitives, &
9093 buffer1, buffer2)
9094 END SELECT
9095 CASE (3)
9096 SELECT CASE (n_c)
9097 CASE (0)
9098 SELECT CASE (n_d)
9099 CASE (0)
9100#if __MAX_CONTR > 3 || __MAX_CONTR == 3
9101 CALL contract_ffss(work, &
9102 nl_a, nl_b, nl_c, nl_d, &
9103 sphi_a, sphi_b, sphi_c, sphi_d, &
9104 primitives, &
9105 buffer1, buffer2)
9106#else
9107 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
9108 work, nl_a, nl_b, nl_c, nl_d, &
9109 sphi_a, &
9110 sphi_b, &
9111 sphi_c, &
9112 sphi_d, &
9113 primitives, &
9114 buffer1, buffer2)
9115#endif
9116 CASE (1)
9117#if __MAX_CONTR > 3 || __MAX_CONTR == 3
9118 CALL contract_ffsp(work, &
9119 nl_a, nl_b, nl_c, nl_d, &
9120 sphi_a, sphi_b, sphi_c, sphi_d, &
9121 primitives, &
9122 buffer1, buffer2)
9123#else
9124 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
9125 work, nl_a, nl_b, nl_c, nl_d, &
9126 sphi_a, &
9127 sphi_b, &
9128 sphi_c, &
9129 sphi_d, &
9130 primitives, &
9131 buffer1, buffer2)
9132#endif
9133 CASE (2)
9134#if __MAX_CONTR > 3 || __MAX_CONTR == 3
9135 CALL contract_ffsd(work, &
9136 nl_a, nl_b, nl_c, nl_d, &
9137 sphi_a, sphi_b, sphi_c, sphi_d, &
9138 primitives, &
9139 buffer1, buffer2)
9140#else
9141 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
9142 work, nl_a, nl_b, nl_c, nl_d, &
9143 sphi_a, &
9144 sphi_b, &
9145 sphi_c, &
9146 sphi_d, &
9147 primitives, &
9148 buffer1, buffer2)
9149#endif
9150 CASE (3)
9151#if __MAX_CONTR > 3 || __MAX_CONTR == 3
9152 CALL contract_ffsf(work, &
9153 nl_a, nl_b, nl_c, nl_d, &
9154 sphi_a, sphi_b, sphi_c, sphi_d, &
9155 primitives, &
9156 buffer1, buffer2)
9157#else
9158 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
9159 work, nl_a, nl_b, nl_c, nl_d, &
9160 sphi_a, &
9161 sphi_b, &
9162 sphi_c, &
9163 sphi_d, &
9164 primitives, &
9165 buffer1, buffer2)
9166#endif
9167 CASE (4)
9168#if __MAX_CONTR > 4 || __MAX_CONTR == 4
9169 CALL contract_ffsg(work, &
9170 nl_a, nl_b, nl_c, nl_d, &
9171 sphi_a, sphi_b, sphi_c, sphi_d, &
9172 primitives, &
9173 buffer1, buffer2)
9174#else
9175 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
9176 work, nl_a, nl_b, nl_c, nl_d, &
9177 sphi_a, &
9178 sphi_b, &
9179 sphi_c, &
9180 sphi_d, &
9181 primitives, &
9182 buffer1, buffer2)
9183#endif
9184 CASE DEFAULT
9185 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
9186 work, nl_a, nl_b, nl_c, nl_d, &
9187 sphi_a, &
9188 sphi_b, &
9189 sphi_c, &
9190 sphi_d, &
9191 primitives, &
9192 buffer1, buffer2)
9193 END SELECT
9194 CASE (1)
9195 SELECT CASE (n_d)
9196 CASE (0)
9197#if __MAX_CONTR > 3 || __MAX_CONTR == 3
9198 CALL contract_ffps(work, &
9199 nl_a, nl_b, nl_c, nl_d, &
9200 sphi_a, sphi_b, sphi_c, sphi_d, &
9201 primitives, &
9202 buffer1, buffer2)
9203#else
9204 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
9205 work, nl_a, nl_b, nl_c, nl_d, &
9206 sphi_a, &
9207 sphi_b, &
9208 sphi_c, &
9209 sphi_d, &
9210 primitives, &
9211 buffer1, buffer2)
9212#endif
9213 CASE (1)
9214#if __MAX_CONTR > 3 || __MAX_CONTR == 3
9215 CALL contract_ffpp(work, &
9216 nl_a, nl_b, nl_c, nl_d, &
9217 sphi_a, sphi_b, sphi_c, sphi_d, &
9218 primitives, &
9219 buffer1, buffer2)
9220#else
9221 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
9222 work, nl_a, nl_b, nl_c, nl_d, &
9223 sphi_a, &
9224 sphi_b, &
9225 sphi_c, &
9226 sphi_d, &
9227 primitives, &
9228 buffer1, buffer2)
9229#endif
9230 CASE (2)
9231#if __MAX_CONTR > 3 || __MAX_CONTR == 3
9232 CALL contract_ffpd(work, &
9233 nl_a, nl_b, nl_c, nl_d, &
9234 sphi_a, sphi_b, sphi_c, sphi_d, &
9235 primitives, &
9236 buffer1, buffer2)
9237#else
9238 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
9239 work, nl_a, nl_b, nl_c, nl_d, &
9240 sphi_a, &
9241 sphi_b, &
9242 sphi_c, &
9243 sphi_d, &
9244 primitives, &
9245 buffer1, buffer2)
9246#endif
9247 CASE (3)
9248#if __MAX_CONTR > 3 || __MAX_CONTR == 3
9249 CALL contract_ffpf(work, &
9250 nl_a, nl_b, nl_c, nl_d, &
9251 sphi_a, sphi_b, sphi_c, sphi_d, &
9252 primitives, &
9253 buffer1, buffer2)
9254#else
9255 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
9256 work, nl_a, nl_b, nl_c, nl_d, &
9257 sphi_a, &
9258 sphi_b, &
9259 sphi_c, &
9260 sphi_d, &
9261 primitives, &
9262 buffer1, buffer2)
9263#endif
9264 CASE (4)
9265#if __MAX_CONTR > 4 || __MAX_CONTR == 4
9266 CALL contract_ffpg(work, &
9267 nl_a, nl_b, nl_c, nl_d, &
9268 sphi_a, sphi_b, sphi_c, sphi_d, &
9269 primitives, &
9270 buffer1, buffer2)
9271#else
9272 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
9273 work, nl_a, nl_b, nl_c, nl_d, &
9274 sphi_a, &
9275 sphi_b, &
9276 sphi_c, &
9277 sphi_d, &
9278 primitives, &
9279 buffer1, buffer2)
9280#endif
9281 CASE DEFAULT
9282 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
9283 work, nl_a, nl_b, nl_c, nl_d, &
9284 sphi_a, &
9285 sphi_b, &
9286 sphi_c, &
9287 sphi_d, &
9288 primitives, &
9289 buffer1, buffer2)
9290 END SELECT
9291 CASE (2)
9292 SELECT CASE (n_d)
9293 CASE (0)
9294#if __MAX_CONTR > 3 || __MAX_CONTR == 3
9295 CALL contract_ffds(work, &
9296 nl_a, nl_b, nl_c, nl_d, &
9297 sphi_a, sphi_b, sphi_c, sphi_d, &
9298 primitives, &
9299 buffer1, buffer2)
9300#else
9301 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
9302 work, nl_a, nl_b, nl_c, nl_d, &
9303 sphi_a, &
9304 sphi_b, &
9305 sphi_c, &
9306 sphi_d, &
9307 primitives, &
9308 buffer1, buffer2)
9309#endif
9310 CASE (1)
9311#if __MAX_CONTR > 3 || __MAX_CONTR == 3
9312 CALL contract_ffdp(work, &
9313 nl_a, nl_b, nl_c, nl_d, &
9314 sphi_a, sphi_b, sphi_c, sphi_d, &
9315 primitives, &
9316 buffer1, buffer2)
9317#else
9318 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
9319 work, nl_a, nl_b, nl_c, nl_d, &
9320 sphi_a, &
9321 sphi_b, &
9322 sphi_c, &
9323 sphi_d, &
9324 primitives, &
9325 buffer1, buffer2)
9326#endif
9327 CASE (2)
9328#if __MAX_CONTR > 3 || __MAX_CONTR == 3
9329 CALL contract_ffdd(work, &
9330 nl_a, nl_b, nl_c, nl_d, &
9331 sphi_a, sphi_b, sphi_c, sphi_d, &
9332 primitives, &
9333 buffer1, buffer2)
9334#else
9335 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
9336 work, nl_a, nl_b, nl_c, nl_d, &
9337 sphi_a, &
9338 sphi_b, &
9339 sphi_c, &
9340 sphi_d, &
9341 primitives, &
9342 buffer1, buffer2)
9343#endif
9344 CASE (3)
9345#if __MAX_CONTR > 3 || __MAX_CONTR == 3
9346 CALL contract_ffdf(work, &
9347 nl_a, nl_b, nl_c, nl_d, &
9348 sphi_a, sphi_b, sphi_c, sphi_d, &
9349 primitives, &
9350 buffer1, buffer2)
9351#else
9352 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
9353 work, nl_a, nl_b, nl_c, nl_d, &
9354 sphi_a, &
9355 sphi_b, &
9356 sphi_c, &
9357 sphi_d, &
9358 primitives, &
9359 buffer1, buffer2)
9360#endif
9361 CASE (4)
9362#if __MAX_CONTR > 4 || __MAX_CONTR == 4
9363 CALL contract_ffdg(work, &
9364 nl_a, nl_b, nl_c, nl_d, &
9365 sphi_a, sphi_b, sphi_c, sphi_d, &
9366 primitives, &
9367 buffer1, buffer2)
9368#else
9369 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
9370 work, nl_a, nl_b, nl_c, nl_d, &
9371 sphi_a, &
9372 sphi_b, &
9373 sphi_c, &
9374 sphi_d, &
9375 primitives, &
9376 buffer1, buffer2)
9377#endif
9378 CASE DEFAULT
9379 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
9380 work, nl_a, nl_b, nl_c, nl_d, &
9381 sphi_a, &
9382 sphi_b, &
9383 sphi_c, &
9384 sphi_d, &
9385 primitives, &
9386 buffer1, buffer2)
9387 END SELECT
9388 CASE (3)
9389 SELECT CASE (n_d)
9390 CASE (0)
9391#if __MAX_CONTR > 3 || __MAX_CONTR == 3
9392 CALL contract_fffs(work, &
9393 nl_a, nl_b, nl_c, nl_d, &
9394 sphi_a, sphi_b, sphi_c, sphi_d, &
9395 primitives, &
9396 buffer1, buffer2)
9397#else
9398 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
9399 work, nl_a, nl_b, nl_c, nl_d, &
9400 sphi_a, &
9401 sphi_b, &
9402 sphi_c, &
9403 sphi_d, &
9404 primitives, &
9405 buffer1, buffer2)
9406#endif
9407 CASE (1)
9408#if __MAX_CONTR > 3 || __MAX_CONTR == 3
9409 CALL contract_fffp(work, &
9410 nl_a, nl_b, nl_c, nl_d, &
9411 sphi_a, sphi_b, sphi_c, sphi_d, &
9412 primitives, &
9413 buffer1, buffer2)
9414#else
9415 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
9416 work, nl_a, nl_b, nl_c, nl_d, &
9417 sphi_a, &
9418 sphi_b, &
9419 sphi_c, &
9420 sphi_d, &
9421 primitives, &
9422 buffer1, buffer2)
9423#endif
9424 CASE (2)
9425#if __MAX_CONTR > 3 || __MAX_CONTR == 3
9426 CALL contract_fffd(work, &
9427 nl_a, nl_b, nl_c, nl_d, &
9428 sphi_a, sphi_b, sphi_c, sphi_d, &
9429 primitives, &
9430 buffer1, buffer2)
9431#else
9432 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
9433 work, nl_a, nl_b, nl_c, nl_d, &
9434 sphi_a, &
9435 sphi_b, &
9436 sphi_c, &
9437 sphi_d, &
9438 primitives, &
9439 buffer1, buffer2)
9440#endif
9441 CASE (3)
9442#if __MAX_CONTR > 3 || __MAX_CONTR == 3
9443 CALL contract_ffff(work, &
9444 nl_a, nl_b, nl_c, nl_d, &
9445 sphi_a, sphi_b, sphi_c, sphi_d, &
9446 primitives, &
9447 buffer1, buffer2)
9448#else
9449 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
9450 work, nl_a, nl_b, nl_c, nl_d, &
9451 sphi_a, &
9452 sphi_b, &
9453 sphi_c, &
9454 sphi_d, &
9455 primitives, &
9456 buffer1, buffer2)
9457#endif
9458 CASE (4)
9459#if __MAX_CONTR > 4 || __MAX_CONTR == 4
9460 CALL contract_fffg(work, &
9461 nl_a, nl_b, nl_c, nl_d, &
9462 sphi_a, sphi_b, sphi_c, sphi_d, &
9463 primitives, &
9464 buffer1, buffer2)
9465#else
9466 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
9467 work, nl_a, nl_b, nl_c, nl_d, &
9468 sphi_a, &
9469 sphi_b, &
9470 sphi_c, &
9471 sphi_d, &
9472 primitives, &
9473 buffer1, buffer2)
9474#endif
9475 CASE DEFAULT
9476 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
9477 work, nl_a, nl_b, nl_c, nl_d, &
9478 sphi_a, &
9479 sphi_b, &
9480 sphi_c, &
9481 sphi_d, &
9482 primitives, &
9483 buffer1, buffer2)
9484 END SELECT
9485 CASE (4)
9486 SELECT CASE (n_d)
9487 CASE (0)
9488#if __MAX_CONTR > 4 || __MAX_CONTR == 4
9489 CALL contract_ffgs(work, &
9490 nl_a, nl_b, nl_c, nl_d, &
9491 sphi_a, sphi_b, sphi_c, sphi_d, &
9492 primitives, &
9493 buffer1, buffer2)
9494#else
9495 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
9496 work, nl_a, nl_b, nl_c, nl_d, &
9497 sphi_a, &
9498 sphi_b, &
9499 sphi_c, &
9500 sphi_d, &
9501 primitives, &
9502 buffer1, buffer2)
9503#endif
9504 CASE (1)
9505#if __MAX_CONTR > 4 || __MAX_CONTR == 4
9506 CALL contract_ffgp(work, &
9507 nl_a, nl_b, nl_c, nl_d, &
9508 sphi_a, sphi_b, sphi_c, sphi_d, &
9509 primitives, &
9510 buffer1, buffer2)
9511#else
9512 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
9513 work, nl_a, nl_b, nl_c, nl_d, &
9514 sphi_a, &
9515 sphi_b, &
9516 sphi_c, &
9517 sphi_d, &
9518 primitives, &
9519 buffer1, buffer2)
9520#endif
9521 CASE (2)
9522#if __MAX_CONTR > 4 || __MAX_CONTR == 4
9523 CALL contract_ffgd(work, &
9524 nl_a, nl_b, nl_c, nl_d, &
9525 sphi_a, sphi_b, sphi_c, sphi_d, &
9526 primitives, &
9527 buffer1, buffer2)
9528#else
9529 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
9530 work, nl_a, nl_b, nl_c, nl_d, &
9531 sphi_a, &
9532 sphi_b, &
9533 sphi_c, &
9534 sphi_d, &
9535 primitives, &
9536 buffer1, buffer2)
9537#endif
9538 CASE (3)
9539#if __MAX_CONTR > 4 || __MAX_CONTR == 4
9540 CALL contract_ffgf(work, &
9541 nl_a, nl_b, nl_c, nl_d, &
9542 sphi_a, sphi_b, sphi_c, sphi_d, &
9543 primitives, &
9544 buffer1, buffer2)
9545#else
9546 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
9547 work, nl_a, nl_b, nl_c, nl_d, &
9548 sphi_a, &
9549 sphi_b, &
9550 sphi_c, &
9551 sphi_d, &
9552 primitives, &
9553 buffer1, buffer2)
9554#endif
9555 CASE (4)
9556#if __MAX_CONTR > 4 || __MAX_CONTR == 4
9557 CALL contract_ffgg(work, &
9558 nl_a, nl_b, nl_c, nl_d, &
9559 sphi_a, sphi_b, sphi_c, sphi_d, &
9560 primitives, &
9561 buffer1, buffer2)
9562#else
9563 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
9564 work, nl_a, nl_b, nl_c, nl_d, &
9565 sphi_a, &
9566 sphi_b, &
9567 sphi_c, &
9568 sphi_d, &
9569 primitives, &
9570 buffer1, buffer2)
9571#endif
9572 CASE DEFAULT
9573 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
9574 work, nl_a, nl_b, nl_c, nl_d, &
9575 sphi_a, &
9576 sphi_b, &
9577 sphi_c, &
9578 sphi_d, &
9579 primitives, &
9580 buffer1, buffer2)
9581 END SELECT
9582 CASE DEFAULT
9583 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
9584 work, nl_a, nl_b, nl_c, nl_d, &
9585 sphi_a, &
9586 sphi_b, &
9587 sphi_c, &
9588 sphi_d, &
9589 primitives, &
9590 buffer1, buffer2)
9591 END SELECT
9592 CASE (4)
9593 SELECT CASE (n_c)
9594 CASE (0)
9595 SELECT CASE (n_d)
9596 CASE (0)
9597#if __MAX_CONTR > 4 || __MAX_CONTR == 4
9598 CALL contract_fgss(work, &
9599 nl_a, nl_b, nl_c, nl_d, &
9600 sphi_a, sphi_b, sphi_c, sphi_d, &
9601 primitives, &
9602 buffer1, buffer2)
9603#else
9604 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
9605 work, nl_a, nl_b, nl_c, nl_d, &
9606 sphi_a, &
9607 sphi_b, &
9608 sphi_c, &
9609 sphi_d, &
9610 primitives, &
9611 buffer1, buffer2)
9612#endif
9613 CASE (1)
9614#if __MAX_CONTR > 4 || __MAX_CONTR == 4
9615 CALL contract_fgsp(work, &
9616 nl_a, nl_b, nl_c, nl_d, &
9617 sphi_a, sphi_b, sphi_c, sphi_d, &
9618 primitives, &
9619 buffer1, buffer2)
9620#else
9621 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
9622 work, nl_a, nl_b, nl_c, nl_d, &
9623 sphi_a, &
9624 sphi_b, &
9625 sphi_c, &
9626 sphi_d, &
9627 primitives, &
9628 buffer1, buffer2)
9629#endif
9630 CASE (2)
9631#if __MAX_CONTR > 4 || __MAX_CONTR == 4
9632 CALL contract_fgsd(work, &
9633 nl_a, nl_b, nl_c, nl_d, &
9634 sphi_a, sphi_b, sphi_c, sphi_d, &
9635 primitives, &
9636 buffer1, buffer2)
9637#else
9638 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
9639 work, nl_a, nl_b, nl_c, nl_d, &
9640 sphi_a, &
9641 sphi_b, &
9642 sphi_c, &
9643 sphi_d, &
9644 primitives, &
9645 buffer1, buffer2)
9646#endif
9647 CASE (3)
9648#if __MAX_CONTR > 4 || __MAX_CONTR == 4
9649 CALL contract_fgsf(work, &
9650 nl_a, nl_b, nl_c, nl_d, &
9651 sphi_a, sphi_b, sphi_c, sphi_d, &
9652 primitives, &
9653 buffer1, buffer2)
9654#else
9655 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
9656 work, nl_a, nl_b, nl_c, nl_d, &
9657 sphi_a, &
9658 sphi_b, &
9659 sphi_c, &
9660 sphi_d, &
9661 primitives, &
9662 buffer1, buffer2)
9663#endif
9664 CASE (4)
9665#if __MAX_CONTR > 4 || __MAX_CONTR == 4
9666 CALL contract_fgsg(work, &
9667 nl_a, nl_b, nl_c, nl_d, &
9668 sphi_a, sphi_b, sphi_c, sphi_d, &
9669 primitives, &
9670 buffer1, buffer2)
9671#else
9672 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
9673 work, nl_a, nl_b, nl_c, nl_d, &
9674 sphi_a, &
9675 sphi_b, &
9676 sphi_c, &
9677 sphi_d, &
9678 primitives, &
9679 buffer1, buffer2)
9680#endif
9681 CASE DEFAULT
9682 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
9683 work, nl_a, nl_b, nl_c, nl_d, &
9684 sphi_a, &
9685 sphi_b, &
9686 sphi_c, &
9687 sphi_d, &
9688 primitives, &
9689 buffer1, buffer2)
9690 END SELECT
9691 CASE (1)
9692 SELECT CASE (n_d)
9693 CASE (0)
9694#if __MAX_CONTR > 4 || __MAX_CONTR == 4
9695 CALL contract_fgps(work, &
9696 nl_a, nl_b, nl_c, nl_d, &
9697 sphi_a, sphi_b, sphi_c, sphi_d, &
9698 primitives, &
9699 buffer1, buffer2)
9700#else
9701 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
9702 work, nl_a, nl_b, nl_c, nl_d, &
9703 sphi_a, &
9704 sphi_b, &
9705 sphi_c, &
9706 sphi_d, &
9707 primitives, &
9708 buffer1, buffer2)
9709#endif
9710 CASE (1)
9711#if __MAX_CONTR > 4 || __MAX_CONTR == 4
9712 CALL contract_fgpp(work, &
9713 nl_a, nl_b, nl_c, nl_d, &
9714 sphi_a, sphi_b, sphi_c, sphi_d, &
9715 primitives, &
9716 buffer1, buffer2)
9717#else
9718 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
9719 work, nl_a, nl_b, nl_c, nl_d, &
9720 sphi_a, &
9721 sphi_b, &
9722 sphi_c, &
9723 sphi_d, &
9724 primitives, &
9725 buffer1, buffer2)
9726#endif
9727 CASE (2)
9728#if __MAX_CONTR > 4 || __MAX_CONTR == 4
9729 CALL contract_fgpd(work, &
9730 nl_a, nl_b, nl_c, nl_d, &
9731 sphi_a, sphi_b, sphi_c, sphi_d, &
9732 primitives, &
9733 buffer1, buffer2)
9734#else
9735 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
9736 work, nl_a, nl_b, nl_c, nl_d, &
9737 sphi_a, &
9738 sphi_b, &
9739 sphi_c, &
9740 sphi_d, &
9741 primitives, &
9742 buffer1, buffer2)
9743#endif
9744 CASE (3)
9745#if __MAX_CONTR > 4 || __MAX_CONTR == 4
9746 CALL contract_fgpf(work, &
9747 nl_a, nl_b, nl_c, nl_d, &
9748 sphi_a, sphi_b, sphi_c, sphi_d, &
9749 primitives, &
9750 buffer1, buffer2)
9751#else
9752 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
9753 work, nl_a, nl_b, nl_c, nl_d, &
9754 sphi_a, &
9755 sphi_b, &
9756 sphi_c, &
9757 sphi_d, &
9758 primitives, &
9759 buffer1, buffer2)
9760#endif
9761 CASE (4)
9762#if __MAX_CONTR > 4 || __MAX_CONTR == 4
9763 CALL contract_fgpg(work, &
9764 nl_a, nl_b, nl_c, nl_d, &
9765 sphi_a, sphi_b, sphi_c, sphi_d, &
9766 primitives, &
9767 buffer1, buffer2)
9768#else
9769 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
9770 work, nl_a, nl_b, nl_c, nl_d, &
9771 sphi_a, &
9772 sphi_b, &
9773 sphi_c, &
9774 sphi_d, &
9775 primitives, &
9776 buffer1, buffer2)
9777#endif
9778 CASE DEFAULT
9779 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
9780 work, nl_a, nl_b, nl_c, nl_d, &
9781 sphi_a, &
9782 sphi_b, &
9783 sphi_c, &
9784 sphi_d, &
9785 primitives, &
9786 buffer1, buffer2)
9787 END SELECT
9788 CASE (2)
9789 SELECT CASE (n_d)
9790 CASE (0)
9791#if __MAX_CONTR > 4 || __MAX_CONTR == 4
9792 CALL contract_fgds(work, &
9793 nl_a, nl_b, nl_c, nl_d, &
9794 sphi_a, sphi_b, sphi_c, sphi_d, &
9795 primitives, &
9796 buffer1, buffer2)
9797#else
9798 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
9799 work, nl_a, nl_b, nl_c, nl_d, &
9800 sphi_a, &
9801 sphi_b, &
9802 sphi_c, &
9803 sphi_d, &
9804 primitives, &
9805 buffer1, buffer2)
9806#endif
9807 CASE (1)
9808#if __MAX_CONTR > 4 || __MAX_CONTR == 4
9809 CALL contract_fgdp(work, &
9810 nl_a, nl_b, nl_c, nl_d, &
9811 sphi_a, sphi_b, sphi_c, sphi_d, &
9812 primitives, &
9813 buffer1, buffer2)
9814#else
9815 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
9816 work, nl_a, nl_b, nl_c, nl_d, &
9817 sphi_a, &
9818 sphi_b, &
9819 sphi_c, &
9820 sphi_d, &
9821 primitives, &
9822 buffer1, buffer2)
9823#endif
9824 CASE (2)
9825#if __MAX_CONTR > 4 || __MAX_CONTR == 4
9826 CALL contract_fgdd(work, &
9827 nl_a, nl_b, nl_c, nl_d, &
9828 sphi_a, sphi_b, sphi_c, sphi_d, &
9829 primitives, &
9830 buffer1, buffer2)
9831#else
9832 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
9833 work, nl_a, nl_b, nl_c, nl_d, &
9834 sphi_a, &
9835 sphi_b, &
9836 sphi_c, &
9837 sphi_d, &
9838 primitives, &
9839 buffer1, buffer2)
9840#endif
9841 CASE (3)
9842#if __MAX_CONTR > 4 || __MAX_CONTR == 4
9843 CALL contract_fgdf(work, &
9844 nl_a, nl_b, nl_c, nl_d, &
9845 sphi_a, sphi_b, sphi_c, sphi_d, &
9846 primitives, &
9847 buffer1, buffer2)
9848#else
9849 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
9850 work, nl_a, nl_b, nl_c, nl_d, &
9851 sphi_a, &
9852 sphi_b, &
9853 sphi_c, &
9854 sphi_d, &
9855 primitives, &
9856 buffer1, buffer2)
9857#endif
9858 CASE (4)
9859#if __MAX_CONTR > 4 || __MAX_CONTR == 4
9860 CALL contract_fgdg(work, &
9861 nl_a, nl_b, nl_c, nl_d, &
9862 sphi_a, sphi_b, sphi_c, sphi_d, &
9863 primitives, &
9864 buffer1, buffer2)
9865#else
9866 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
9867 work, nl_a, nl_b, nl_c, nl_d, &
9868 sphi_a, &
9869 sphi_b, &
9870 sphi_c, &
9871 sphi_d, &
9872 primitives, &
9873 buffer1, buffer2)
9874#endif
9875 CASE DEFAULT
9876 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
9877 work, nl_a, nl_b, nl_c, nl_d, &
9878 sphi_a, &
9879 sphi_b, &
9880 sphi_c, &
9881 sphi_d, &
9882 primitives, &
9883 buffer1, buffer2)
9884 END SELECT
9885 CASE (3)
9886 SELECT CASE (n_d)
9887 CASE (0)
9888#if __MAX_CONTR > 4 || __MAX_CONTR == 4
9889 CALL contract_fgfs(work, &
9890 nl_a, nl_b, nl_c, nl_d, &
9891 sphi_a, sphi_b, sphi_c, sphi_d, &
9892 primitives, &
9893 buffer1, buffer2)
9894#else
9895 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
9896 work, nl_a, nl_b, nl_c, nl_d, &
9897 sphi_a, &
9898 sphi_b, &
9899 sphi_c, &
9900 sphi_d, &
9901 primitives, &
9902 buffer1, buffer2)
9903#endif
9904 CASE (1)
9905#if __MAX_CONTR > 4 || __MAX_CONTR == 4
9906 CALL contract_fgfp(work, &
9907 nl_a, nl_b, nl_c, nl_d, &
9908 sphi_a, sphi_b, sphi_c, sphi_d, &
9909 primitives, &
9910 buffer1, buffer2)
9911#else
9912 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
9913 work, nl_a, nl_b, nl_c, nl_d, &
9914 sphi_a, &
9915 sphi_b, &
9916 sphi_c, &
9917 sphi_d, &
9918 primitives, &
9919 buffer1, buffer2)
9920#endif
9921 CASE (2)
9922#if __MAX_CONTR > 4 || __MAX_CONTR == 4
9923 CALL contract_fgfd(work, &
9924 nl_a, nl_b, nl_c, nl_d, &
9925 sphi_a, sphi_b, sphi_c, sphi_d, &
9926 primitives, &
9927 buffer1, buffer2)
9928#else
9929 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
9930 work, nl_a, nl_b, nl_c, nl_d, &
9931 sphi_a, &
9932 sphi_b, &
9933 sphi_c, &
9934 sphi_d, &
9935 primitives, &
9936 buffer1, buffer2)
9937#endif
9938 CASE (3)
9939#if __MAX_CONTR > 4 || __MAX_CONTR == 4
9940 CALL contract_fgff(work, &
9941 nl_a, nl_b, nl_c, nl_d, &
9942 sphi_a, sphi_b, sphi_c, sphi_d, &
9943 primitives, &
9944 buffer1, buffer2)
9945#else
9946 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
9947 work, nl_a, nl_b, nl_c, nl_d, &
9948 sphi_a, &
9949 sphi_b, &
9950 sphi_c, &
9951 sphi_d, &
9952 primitives, &
9953 buffer1, buffer2)
9954#endif
9955 CASE (4)
9956#if __MAX_CONTR > 4 || __MAX_CONTR == 4
9957 CALL contract_fgfg(work, &
9958 nl_a, nl_b, nl_c, nl_d, &
9959 sphi_a, sphi_b, sphi_c, sphi_d, &
9960 primitives, &
9961 buffer1, buffer2)
9962#else
9963 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
9964 work, nl_a, nl_b, nl_c, nl_d, &
9965 sphi_a, &
9966 sphi_b, &
9967 sphi_c, &
9968 sphi_d, &
9969 primitives, &
9970 buffer1, buffer2)
9971#endif
9972 CASE DEFAULT
9973 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
9974 work, nl_a, nl_b, nl_c, nl_d, &
9975 sphi_a, &
9976 sphi_b, &
9977 sphi_c, &
9978 sphi_d, &
9979 primitives, &
9980 buffer1, buffer2)
9981 END SELECT
9982 CASE (4)
9983 SELECT CASE (n_d)
9984 CASE (0)
9985#if __MAX_CONTR > 4 || __MAX_CONTR == 4
9986 CALL contract_fggs(work, &
9987 nl_a, nl_b, nl_c, nl_d, &
9988 sphi_a, sphi_b, sphi_c, sphi_d, &
9989 primitives, &
9990 buffer1, buffer2)
9991#else
9992 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
9993 work, nl_a, nl_b, nl_c, nl_d, &
9994 sphi_a, &
9995 sphi_b, &
9996 sphi_c, &
9997 sphi_d, &
9998 primitives, &
9999 buffer1, buffer2)
10000#endif
10001 CASE (1)
10002#if __MAX_CONTR > 4 || __MAX_CONTR == 4
10003 CALL contract_fggp(work, &
10004 nl_a, nl_b, nl_c, nl_d, &
10005 sphi_a, sphi_b, sphi_c, sphi_d, &
10006 primitives, &
10007 buffer1, buffer2)
10008#else
10009 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
10010 work, nl_a, nl_b, nl_c, nl_d, &
10011 sphi_a, &
10012 sphi_b, &
10013 sphi_c, &
10014 sphi_d, &
10015 primitives, &
10016 buffer1, buffer2)
10017#endif
10018 CASE (2)
10019#if __MAX_CONTR > 4 || __MAX_CONTR == 4
10020 CALL contract_fggd(work, &
10021 nl_a, nl_b, nl_c, nl_d, &
10022 sphi_a, sphi_b, sphi_c, sphi_d, &
10023 primitives, &
10024 buffer1, buffer2)
10025#else
10026 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
10027 work, nl_a, nl_b, nl_c, nl_d, &
10028 sphi_a, &
10029 sphi_b, &
10030 sphi_c, &
10031 sphi_d, &
10032 primitives, &
10033 buffer1, buffer2)
10034#endif
10035 CASE (3)
10036#if __MAX_CONTR > 4 || __MAX_CONTR == 4
10037 CALL contract_fggf(work, &
10038 nl_a, nl_b, nl_c, nl_d, &
10039 sphi_a, sphi_b, sphi_c, sphi_d, &
10040 primitives, &
10041 buffer1, buffer2)
10042#else
10043 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
10044 work, nl_a, nl_b, nl_c, nl_d, &
10045 sphi_a, &
10046 sphi_b, &
10047 sphi_c, &
10048 sphi_d, &
10049 primitives, &
10050 buffer1, buffer2)
10051#endif
10052 CASE (4)
10053#if __MAX_CONTR > 4 || __MAX_CONTR == 4
10054 CALL contract_fggg(work, &
10055 nl_a, nl_b, nl_c, nl_d, &
10056 sphi_a, sphi_b, sphi_c, sphi_d, &
10057 primitives, &
10058 buffer1, buffer2)
10059#else
10060 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
10061 work, nl_a, nl_b, nl_c, nl_d, &
10062 sphi_a, &
10063 sphi_b, &
10064 sphi_c, &
10065 sphi_d, &
10066 primitives, &
10067 buffer1, buffer2)
10068#endif
10069 CASE DEFAULT
10070 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
10071 work, nl_a, nl_b, nl_c, nl_d, &
10072 sphi_a, &
10073 sphi_b, &
10074 sphi_c, &
10075 sphi_d, &
10076 primitives, &
10077 buffer1, buffer2)
10078 END SELECT
10079 CASE DEFAULT
10080 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
10081 work, nl_a, nl_b, nl_c, nl_d, &
10082 sphi_a, &
10083 sphi_b, &
10084 sphi_c, &
10085 sphi_d, &
10086 primitives, &
10087 buffer1, buffer2)
10088 END SELECT
10089 CASE DEFAULT
10090 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
10091 work, nl_a, nl_b, nl_c, nl_d, &
10092 sphi_a, &
10093 sphi_b, &
10094 sphi_c, &
10095 sphi_d, &
10096 primitives, &
10097 buffer1, buffer2)
10098 END SELECT
10099 CASE (4)
10100 SELECT CASE (n_b)
10101 CASE (0)
10102 SELECT CASE (n_c)
10103 CASE (0)
10104 SELECT CASE (n_d)
10105 CASE (0)
10106#if __MAX_CONTR > 4 || __MAX_CONTR == 4
10107 CALL contract_gsss(work, &
10108 nl_a, nl_b, nl_c, nl_d, &
10109 sphi_a, sphi_b, sphi_c, sphi_d, &
10110 primitives, &
10111 buffer1, buffer2)
10112#else
10113 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
10114 work, nl_a, nl_b, nl_c, nl_d, &
10115 sphi_a, &
10116 sphi_b, &
10117 sphi_c, &
10118 sphi_d, &
10119 primitives, &
10120 buffer1, buffer2)
10121#endif
10122 CASE (1)
10123#if __MAX_CONTR > 4 || __MAX_CONTR == 4
10124 CALL contract_gssp(work, &
10125 nl_a, nl_b, nl_c, nl_d, &
10126 sphi_a, sphi_b, sphi_c, sphi_d, &
10127 primitives, &
10128 buffer1, buffer2)
10129#else
10130 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
10131 work, nl_a, nl_b, nl_c, nl_d, &
10132 sphi_a, &
10133 sphi_b, &
10134 sphi_c, &
10135 sphi_d, &
10136 primitives, &
10137 buffer1, buffer2)
10138#endif
10139 CASE (2)
10140#if __MAX_CONTR > 4 || __MAX_CONTR == 4
10141 CALL contract_gssd(work, &
10142 nl_a, nl_b, nl_c, nl_d, &
10143 sphi_a, sphi_b, sphi_c, sphi_d, &
10144 primitives, &
10145 buffer1, buffer2)
10146#else
10147 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
10148 work, nl_a, nl_b, nl_c, nl_d, &
10149 sphi_a, &
10150 sphi_b, &
10151 sphi_c, &
10152 sphi_d, &
10153 primitives, &
10154 buffer1, buffer2)
10155#endif
10156 CASE (3)
10157#if __MAX_CONTR > 4 || __MAX_CONTR == 4
10158 CALL contract_gssf(work, &
10159 nl_a, nl_b, nl_c, nl_d, &
10160 sphi_a, sphi_b, sphi_c, sphi_d, &
10161 primitives, &
10162 buffer1, buffer2)
10163#else
10164 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
10165 work, nl_a, nl_b, nl_c, nl_d, &
10166 sphi_a, &
10167 sphi_b, &
10168 sphi_c, &
10169 sphi_d, &
10170 primitives, &
10171 buffer1, buffer2)
10172#endif
10173 CASE (4)
10174#if __MAX_CONTR > 4 || __MAX_CONTR == 4
10175 CALL contract_gssg(work, &
10176 nl_a, nl_b, nl_c, nl_d, &
10177 sphi_a, sphi_b, sphi_c, sphi_d, &
10178 primitives, &
10179 buffer1, buffer2)
10180#else
10181 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
10182 work, nl_a, nl_b, nl_c, nl_d, &
10183 sphi_a, &
10184 sphi_b, &
10185 sphi_c, &
10186 sphi_d, &
10187 primitives, &
10188 buffer1, buffer2)
10189#endif
10190 CASE DEFAULT
10191 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
10192 work, nl_a, nl_b, nl_c, nl_d, &
10193 sphi_a, &
10194 sphi_b, &
10195 sphi_c, &
10196 sphi_d, &
10197 primitives, &
10198 buffer1, buffer2)
10199 END SELECT
10200 CASE (1)
10201 SELECT CASE (n_d)
10202 CASE (0)
10203#if __MAX_CONTR > 4 || __MAX_CONTR == 4
10204 CALL contract_gsps(work, &
10205 nl_a, nl_b, nl_c, nl_d, &
10206 sphi_a, sphi_b, sphi_c, sphi_d, &
10207 primitives, &
10208 buffer1, buffer2)
10209#else
10210 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
10211 work, nl_a, nl_b, nl_c, nl_d, &
10212 sphi_a, &
10213 sphi_b, &
10214 sphi_c, &
10215 sphi_d, &
10216 primitives, &
10217 buffer1, buffer2)
10218#endif
10219 CASE (1)
10220#if __MAX_CONTR > 4 || __MAX_CONTR == 4
10221 CALL contract_gspp(work, &
10222 nl_a, nl_b, nl_c, nl_d, &
10223 sphi_a, sphi_b, sphi_c, sphi_d, &
10224 primitives, &
10225 buffer1, buffer2)
10226#else
10227 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
10228 work, nl_a, nl_b, nl_c, nl_d, &
10229 sphi_a, &
10230 sphi_b, &
10231 sphi_c, &
10232 sphi_d, &
10233 primitives, &
10234 buffer1, buffer2)
10235#endif
10236 CASE (2)
10237#if __MAX_CONTR > 4 || __MAX_CONTR == 4
10238 CALL contract_gspd(work, &
10239 nl_a, nl_b, nl_c, nl_d, &
10240 sphi_a, sphi_b, sphi_c, sphi_d, &
10241 primitives, &
10242 buffer1, buffer2)
10243#else
10244 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
10245 work, nl_a, nl_b, nl_c, nl_d, &
10246 sphi_a, &
10247 sphi_b, &
10248 sphi_c, &
10249 sphi_d, &
10250 primitives, &
10251 buffer1, buffer2)
10252#endif
10253 CASE (3)
10254#if __MAX_CONTR > 4 || __MAX_CONTR == 4
10255 CALL contract_gspf(work, &
10256 nl_a, nl_b, nl_c, nl_d, &
10257 sphi_a, sphi_b, sphi_c, sphi_d, &
10258 primitives, &
10259 buffer1, buffer2)
10260#else
10261 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
10262 work, nl_a, nl_b, nl_c, nl_d, &
10263 sphi_a, &
10264 sphi_b, &
10265 sphi_c, &
10266 sphi_d, &
10267 primitives, &
10268 buffer1, buffer2)
10269#endif
10270 CASE (4)
10271#if __MAX_CONTR > 4 || __MAX_CONTR == 4
10272 CALL contract_gspg(work, &
10273 nl_a, nl_b, nl_c, nl_d, &
10274 sphi_a, sphi_b, sphi_c, sphi_d, &
10275 primitives, &
10276 buffer1, buffer2)
10277#else
10278 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
10279 work, nl_a, nl_b, nl_c, nl_d, &
10280 sphi_a, &
10281 sphi_b, &
10282 sphi_c, &
10283 sphi_d, &
10284 primitives, &
10285 buffer1, buffer2)
10286#endif
10287 CASE DEFAULT
10288 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
10289 work, nl_a, nl_b, nl_c, nl_d, &
10290 sphi_a, &
10291 sphi_b, &
10292 sphi_c, &
10293 sphi_d, &
10294 primitives, &
10295 buffer1, buffer2)
10296 END SELECT
10297 CASE (2)
10298 SELECT CASE (n_d)
10299 CASE (0)
10300#if __MAX_CONTR > 4 || __MAX_CONTR == 4
10301 CALL contract_gsds(work, &
10302 nl_a, nl_b, nl_c, nl_d, &
10303 sphi_a, sphi_b, sphi_c, sphi_d, &
10304 primitives, &
10305 buffer1, buffer2)
10306#else
10307 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
10308 work, nl_a, nl_b, nl_c, nl_d, &
10309 sphi_a, &
10310 sphi_b, &
10311 sphi_c, &
10312 sphi_d, &
10313 primitives, &
10314 buffer1, buffer2)
10315#endif
10316 CASE (1)
10317#if __MAX_CONTR > 4 || __MAX_CONTR == 4
10318 CALL contract_gsdp(work, &
10319 nl_a, nl_b, nl_c, nl_d, &
10320 sphi_a, sphi_b, sphi_c, sphi_d, &
10321 primitives, &
10322 buffer1, buffer2)
10323#else
10324 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
10325 work, nl_a, nl_b, nl_c, nl_d, &
10326 sphi_a, &
10327 sphi_b, &
10328 sphi_c, &
10329 sphi_d, &
10330 primitives, &
10331 buffer1, buffer2)
10332#endif
10333 CASE (2)
10334#if __MAX_CONTR > 4 || __MAX_CONTR == 4
10335 CALL contract_gsdd(work, &
10336 nl_a, nl_b, nl_c, nl_d, &
10337 sphi_a, sphi_b, sphi_c, sphi_d, &
10338 primitives, &
10339 buffer1, buffer2)
10340#else
10341 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
10342 work, nl_a, nl_b, nl_c, nl_d, &
10343 sphi_a, &
10344 sphi_b, &
10345 sphi_c, &
10346 sphi_d, &
10347 primitives, &
10348 buffer1, buffer2)
10349#endif
10350 CASE (3)
10351#if __MAX_CONTR > 4 || __MAX_CONTR == 4
10352 CALL contract_gsdf(work, &
10353 nl_a, nl_b, nl_c, nl_d, &
10354 sphi_a, sphi_b, sphi_c, sphi_d, &
10355 primitives, &
10356 buffer1, buffer2)
10357#else
10358 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
10359 work, nl_a, nl_b, nl_c, nl_d, &
10360 sphi_a, &
10361 sphi_b, &
10362 sphi_c, &
10363 sphi_d, &
10364 primitives, &
10365 buffer1, buffer2)
10366#endif
10367 CASE (4)
10368#if __MAX_CONTR > 4 || __MAX_CONTR == 4
10369 CALL contract_gsdg(work, &
10370 nl_a, nl_b, nl_c, nl_d, &
10371 sphi_a, sphi_b, sphi_c, sphi_d, &
10372 primitives, &
10373 buffer1, buffer2)
10374#else
10375 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
10376 work, nl_a, nl_b, nl_c, nl_d, &
10377 sphi_a, &
10378 sphi_b, &
10379 sphi_c, &
10380 sphi_d, &
10381 primitives, &
10382 buffer1, buffer2)
10383#endif
10384 CASE DEFAULT
10385 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
10386 work, nl_a, nl_b, nl_c, nl_d, &
10387 sphi_a, &
10388 sphi_b, &
10389 sphi_c, &
10390 sphi_d, &
10391 primitives, &
10392 buffer1, buffer2)
10393 END SELECT
10394 CASE (3)
10395 SELECT CASE (n_d)
10396 CASE (0)
10397#if __MAX_CONTR > 4 || __MAX_CONTR == 4
10398 CALL contract_gsfs(work, &
10399 nl_a, nl_b, nl_c, nl_d, &
10400 sphi_a, sphi_b, sphi_c, sphi_d, &
10401 primitives, &
10402 buffer1, buffer2)
10403#else
10404 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
10405 work, nl_a, nl_b, nl_c, nl_d, &
10406 sphi_a, &
10407 sphi_b, &
10408 sphi_c, &
10409 sphi_d, &
10410 primitives, &
10411 buffer1, buffer2)
10412#endif
10413 CASE (1)
10414#if __MAX_CONTR > 4 || __MAX_CONTR == 4
10415 CALL contract_gsfp(work, &
10416 nl_a, nl_b, nl_c, nl_d, &
10417 sphi_a, sphi_b, sphi_c, sphi_d, &
10418 primitives, &
10419 buffer1, buffer2)
10420#else
10421 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
10422 work, nl_a, nl_b, nl_c, nl_d, &
10423 sphi_a, &
10424 sphi_b, &
10425 sphi_c, &
10426 sphi_d, &
10427 primitives, &
10428 buffer1, buffer2)
10429#endif
10430 CASE (2)
10431#if __MAX_CONTR > 4 || __MAX_CONTR == 4
10432 CALL contract_gsfd(work, &
10433 nl_a, nl_b, nl_c, nl_d, &
10434 sphi_a, sphi_b, sphi_c, sphi_d, &
10435 primitives, &
10436 buffer1, buffer2)
10437#else
10438 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
10439 work, nl_a, nl_b, nl_c, nl_d, &
10440 sphi_a, &
10441 sphi_b, &
10442 sphi_c, &
10443 sphi_d, &
10444 primitives, &
10445 buffer1, buffer2)
10446#endif
10447 CASE (3)
10448#if __MAX_CONTR > 4 || __MAX_CONTR == 4
10449 CALL contract_gsff(work, &
10450 nl_a, nl_b, nl_c, nl_d, &
10451 sphi_a, sphi_b, sphi_c, sphi_d, &
10452 primitives, &
10453 buffer1, buffer2)
10454#else
10455 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
10456 work, nl_a, nl_b, nl_c, nl_d, &
10457 sphi_a, &
10458 sphi_b, &
10459 sphi_c, &
10460 sphi_d, &
10461 primitives, &
10462 buffer1, buffer2)
10463#endif
10464 CASE (4)
10465#if __MAX_CONTR > 4 || __MAX_CONTR == 4
10466 CALL contract_gsfg(work, &
10467 nl_a, nl_b, nl_c, nl_d, &
10468 sphi_a, sphi_b, sphi_c, sphi_d, &
10469 primitives, &
10470 buffer1, buffer2)
10471#else
10472 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
10473 work, nl_a, nl_b, nl_c, nl_d, &
10474 sphi_a, &
10475 sphi_b, &
10476 sphi_c, &
10477 sphi_d, &
10478 primitives, &
10479 buffer1, buffer2)
10480#endif
10481 CASE DEFAULT
10482 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
10483 work, nl_a, nl_b, nl_c, nl_d, &
10484 sphi_a, &
10485 sphi_b, &
10486 sphi_c, &
10487 sphi_d, &
10488 primitives, &
10489 buffer1, buffer2)
10490 END SELECT
10491 CASE (4)
10492 SELECT CASE (n_d)
10493 CASE (0)
10494#if __MAX_CONTR > 4 || __MAX_CONTR == 4
10495 CALL contract_gsgs(work, &
10496 nl_a, nl_b, nl_c, nl_d, &
10497 sphi_a, sphi_b, sphi_c, sphi_d, &
10498 primitives, &
10499 buffer1, buffer2)
10500#else
10501 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
10502 work, nl_a, nl_b, nl_c, nl_d, &
10503 sphi_a, &
10504 sphi_b, &
10505 sphi_c, &
10506 sphi_d, &
10507 primitives, &
10508 buffer1, buffer2)
10509#endif
10510 CASE (1)
10511#if __MAX_CONTR > 4 || __MAX_CONTR == 4
10512 CALL contract_gsgp(work, &
10513 nl_a, nl_b, nl_c, nl_d, &
10514 sphi_a, sphi_b, sphi_c, sphi_d, &
10515 primitives, &
10516 buffer1, buffer2)
10517#else
10518 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
10519 work, nl_a, nl_b, nl_c, nl_d, &
10520 sphi_a, &
10521 sphi_b, &
10522 sphi_c, &
10523 sphi_d, &
10524 primitives, &
10525 buffer1, buffer2)
10526#endif
10527 CASE (2)
10528#if __MAX_CONTR > 4 || __MAX_CONTR == 4
10529 CALL contract_gsgd(work, &
10530 nl_a, nl_b, nl_c, nl_d, &
10531 sphi_a, sphi_b, sphi_c, sphi_d, &
10532 primitives, &
10533 buffer1, buffer2)
10534#else
10535 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
10536 work, nl_a, nl_b, nl_c, nl_d, &
10537 sphi_a, &
10538 sphi_b, &
10539 sphi_c, &
10540 sphi_d, &
10541 primitives, &
10542 buffer1, buffer2)
10543#endif
10544 CASE (3)
10545#if __MAX_CONTR > 4 || __MAX_CONTR == 4
10546 CALL contract_gsgf(work, &
10547 nl_a, nl_b, nl_c, nl_d, &
10548 sphi_a, sphi_b, sphi_c, sphi_d, &
10549 primitives, &
10550 buffer1, buffer2)
10551#else
10552 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
10553 work, nl_a, nl_b, nl_c, nl_d, &
10554 sphi_a, &
10555 sphi_b, &
10556 sphi_c, &
10557 sphi_d, &
10558 primitives, &
10559 buffer1, buffer2)
10560#endif
10561 CASE (4)
10562#if __MAX_CONTR > 4 || __MAX_CONTR == 4
10563 CALL contract_gsgg(work, &
10564 nl_a, nl_b, nl_c, nl_d, &
10565 sphi_a, sphi_b, sphi_c, sphi_d, &
10566 primitives, &
10567 buffer1, buffer2)
10568#else
10569 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
10570 work, nl_a, nl_b, nl_c, nl_d, &
10571 sphi_a, &
10572 sphi_b, &
10573 sphi_c, &
10574 sphi_d, &
10575 primitives, &
10576 buffer1, buffer2)
10577#endif
10578 CASE DEFAULT
10579 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
10580 work, nl_a, nl_b, nl_c, nl_d, &
10581 sphi_a, &
10582 sphi_b, &
10583 sphi_c, &
10584 sphi_d, &
10585 primitives, &
10586 buffer1, buffer2)
10587 END SELECT
10588 CASE DEFAULT
10589 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
10590 work, nl_a, nl_b, nl_c, nl_d, &
10591 sphi_a, &
10592 sphi_b, &
10593 sphi_c, &
10594 sphi_d, &
10595 primitives, &
10596 buffer1, buffer2)
10597 END SELECT
10598 CASE (1)
10599 SELECT CASE (n_c)
10600 CASE (0)
10601 SELECT CASE (n_d)
10602 CASE (0)
10603#if __MAX_CONTR > 4 || __MAX_CONTR == 4
10604 CALL contract_gpss(work, &
10605 nl_a, nl_b, nl_c, nl_d, &
10606 sphi_a, sphi_b, sphi_c, sphi_d, &
10607 primitives, &
10608 buffer1, buffer2)
10609#else
10610 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
10611 work, nl_a, nl_b, nl_c, nl_d, &
10612 sphi_a, &
10613 sphi_b, &
10614 sphi_c, &
10615 sphi_d, &
10616 primitives, &
10617 buffer1, buffer2)
10618#endif
10619 CASE (1)
10620#if __MAX_CONTR > 4 || __MAX_CONTR == 4
10621 CALL contract_gpsp(work, &
10622 nl_a, nl_b, nl_c, nl_d, &
10623 sphi_a, sphi_b, sphi_c, sphi_d, &
10624 primitives, &
10625 buffer1, buffer2)
10626#else
10627 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
10628 work, nl_a, nl_b, nl_c, nl_d, &
10629 sphi_a, &
10630 sphi_b, &
10631 sphi_c, &
10632 sphi_d, &
10633 primitives, &
10634 buffer1, buffer2)
10635#endif
10636 CASE (2)
10637#if __MAX_CONTR > 4 || __MAX_CONTR == 4
10638 CALL contract_gpsd(work, &
10639 nl_a, nl_b, nl_c, nl_d, &
10640 sphi_a, sphi_b, sphi_c, sphi_d, &
10641 primitives, &
10642 buffer1, buffer2)
10643#else
10644 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
10645 work, nl_a, nl_b, nl_c, nl_d, &
10646 sphi_a, &
10647 sphi_b, &
10648 sphi_c, &
10649 sphi_d, &
10650 primitives, &
10651 buffer1, buffer2)
10652#endif
10653 CASE (3)
10654#if __MAX_CONTR > 4 || __MAX_CONTR == 4
10655 CALL contract_gpsf(work, &
10656 nl_a, nl_b, nl_c, nl_d, &
10657 sphi_a, sphi_b, sphi_c, sphi_d, &
10658 primitives, &
10659 buffer1, buffer2)
10660#else
10661 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
10662 work, nl_a, nl_b, nl_c, nl_d, &
10663 sphi_a, &
10664 sphi_b, &
10665 sphi_c, &
10666 sphi_d, &
10667 primitives, &
10668 buffer1, buffer2)
10669#endif
10670 CASE (4)
10671#if __MAX_CONTR > 4 || __MAX_CONTR == 4
10672 CALL contract_gpsg(work, &
10673 nl_a, nl_b, nl_c, nl_d, &
10674 sphi_a, sphi_b, sphi_c, sphi_d, &
10675 primitives, &
10676 buffer1, buffer2)
10677#else
10678 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
10679 work, nl_a, nl_b, nl_c, nl_d, &
10680 sphi_a, &
10681 sphi_b, &
10682 sphi_c, &
10683 sphi_d, &
10684 primitives, &
10685 buffer1, buffer2)
10686#endif
10687 CASE DEFAULT
10688 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
10689 work, nl_a, nl_b, nl_c, nl_d, &
10690 sphi_a, &
10691 sphi_b, &
10692 sphi_c, &
10693 sphi_d, &
10694 primitives, &
10695 buffer1, buffer2)
10696 END SELECT
10697 CASE (1)
10698 SELECT CASE (n_d)
10699 CASE (0)
10700#if __MAX_CONTR > 4 || __MAX_CONTR == 4
10701 CALL contract_gpps(work, &
10702 nl_a, nl_b, nl_c, nl_d, &
10703 sphi_a, sphi_b, sphi_c, sphi_d, &
10704 primitives, &
10705 buffer1, buffer2)
10706#else
10707 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
10708 work, nl_a, nl_b, nl_c, nl_d, &
10709 sphi_a, &
10710 sphi_b, &
10711 sphi_c, &
10712 sphi_d, &
10713 primitives, &
10714 buffer1, buffer2)
10715#endif
10716 CASE (1)
10717#if __MAX_CONTR > 4 || __MAX_CONTR == 4
10718 CALL contract_gppp(work, &
10719 nl_a, nl_b, nl_c, nl_d, &
10720 sphi_a, sphi_b, sphi_c, sphi_d, &
10721 primitives, &
10722 buffer1, buffer2)
10723#else
10724 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
10725 work, nl_a, nl_b, nl_c, nl_d, &
10726 sphi_a, &
10727 sphi_b, &
10728 sphi_c, &
10729 sphi_d, &
10730 primitives, &
10731 buffer1, buffer2)
10732#endif
10733 CASE (2)
10734#if __MAX_CONTR > 4 || __MAX_CONTR == 4
10735 CALL contract_gppd(work, &
10736 nl_a, nl_b, nl_c, nl_d, &
10737 sphi_a, sphi_b, sphi_c, sphi_d, &
10738 primitives, &
10739 buffer1, buffer2)
10740#else
10741 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
10742 work, nl_a, nl_b, nl_c, nl_d, &
10743 sphi_a, &
10744 sphi_b, &
10745 sphi_c, &
10746 sphi_d, &
10747 primitives, &
10748 buffer1, buffer2)
10749#endif
10750 CASE (3)
10751#if __MAX_CONTR > 4 || __MAX_CONTR == 4
10752 CALL contract_gppf(work, &
10753 nl_a, nl_b, nl_c, nl_d, &
10754 sphi_a, sphi_b, sphi_c, sphi_d, &
10755 primitives, &
10756 buffer1, buffer2)
10757#else
10758 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
10759 work, nl_a, nl_b, nl_c, nl_d, &
10760 sphi_a, &
10761 sphi_b, &
10762 sphi_c, &
10763 sphi_d, &
10764 primitives, &
10765 buffer1, buffer2)
10766#endif
10767 CASE (4)
10768#if __MAX_CONTR > 4 || __MAX_CONTR == 4
10769 CALL contract_gppg(work, &
10770 nl_a, nl_b, nl_c, nl_d, &
10771 sphi_a, sphi_b, sphi_c, sphi_d, &
10772 primitives, &
10773 buffer1, buffer2)
10774#else
10775 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
10776 work, nl_a, nl_b, nl_c, nl_d, &
10777 sphi_a, &
10778 sphi_b, &
10779 sphi_c, &
10780 sphi_d, &
10781 primitives, &
10782 buffer1, buffer2)
10783#endif
10784 CASE DEFAULT
10785 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
10786 work, nl_a, nl_b, nl_c, nl_d, &
10787 sphi_a, &
10788 sphi_b, &
10789 sphi_c, &
10790 sphi_d, &
10791 primitives, &
10792 buffer1, buffer2)
10793 END SELECT
10794 CASE (2)
10795 SELECT CASE (n_d)
10796 CASE (0)
10797#if __MAX_CONTR > 4 || __MAX_CONTR == 4
10798 CALL contract_gpds(work, &
10799 nl_a, nl_b, nl_c, nl_d, &
10800 sphi_a, sphi_b, sphi_c, sphi_d, &
10801 primitives, &
10802 buffer1, buffer2)
10803#else
10804 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
10805 work, nl_a, nl_b, nl_c, nl_d, &
10806 sphi_a, &
10807 sphi_b, &
10808 sphi_c, &
10809 sphi_d, &
10810 primitives, &
10811 buffer1, buffer2)
10812#endif
10813 CASE (1)
10814#if __MAX_CONTR > 4 || __MAX_CONTR == 4
10815 CALL contract_gpdp(work, &
10816 nl_a, nl_b, nl_c, nl_d, &
10817 sphi_a, sphi_b, sphi_c, sphi_d, &
10818 primitives, &
10819 buffer1, buffer2)
10820#else
10821 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
10822 work, nl_a, nl_b, nl_c, nl_d, &
10823 sphi_a, &
10824 sphi_b, &
10825 sphi_c, &
10826 sphi_d, &
10827 primitives, &
10828 buffer1, buffer2)
10829#endif
10830 CASE (2)
10831#if __MAX_CONTR > 4 || __MAX_CONTR == 4
10832 CALL contract_gpdd(work, &
10833 nl_a, nl_b, nl_c, nl_d, &
10834 sphi_a, sphi_b, sphi_c, sphi_d, &
10835 primitives, &
10836 buffer1, buffer2)
10837#else
10838 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
10839 work, nl_a, nl_b, nl_c, nl_d, &
10840 sphi_a, &
10841 sphi_b, &
10842 sphi_c, &
10843 sphi_d, &
10844 primitives, &
10845 buffer1, buffer2)
10846#endif
10847 CASE (3)
10848#if __MAX_CONTR > 4 || __MAX_CONTR == 4
10849 CALL contract_gpdf(work, &
10850 nl_a, nl_b, nl_c, nl_d, &
10851 sphi_a, sphi_b, sphi_c, sphi_d, &
10852 primitives, &
10853 buffer1, buffer2)
10854#else
10855 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
10856 work, nl_a, nl_b, nl_c, nl_d, &
10857 sphi_a, &
10858 sphi_b, &
10859 sphi_c, &
10860 sphi_d, &
10861 primitives, &
10862 buffer1, buffer2)
10863#endif
10864 CASE (4)
10865#if __MAX_CONTR > 4 || __MAX_CONTR == 4
10866 CALL contract_gpdg(work, &
10867 nl_a, nl_b, nl_c, nl_d, &
10868 sphi_a, sphi_b, sphi_c, sphi_d, &
10869 primitives, &
10870 buffer1, buffer2)
10871#else
10872 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
10873 work, nl_a, nl_b, nl_c, nl_d, &
10874 sphi_a, &
10875 sphi_b, &
10876 sphi_c, &
10877 sphi_d, &
10878 primitives, &
10879 buffer1, buffer2)
10880#endif
10881 CASE DEFAULT
10882 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
10883 work, nl_a, nl_b, nl_c, nl_d, &
10884 sphi_a, &
10885 sphi_b, &
10886 sphi_c, &
10887 sphi_d, &
10888 primitives, &
10889 buffer1, buffer2)
10890 END SELECT
10891 CASE (3)
10892 SELECT CASE (n_d)
10893 CASE (0)
10894#if __MAX_CONTR > 4 || __MAX_CONTR == 4
10895 CALL contract_gpfs(work, &
10896 nl_a, nl_b, nl_c, nl_d, &
10897 sphi_a, sphi_b, sphi_c, sphi_d, &
10898 primitives, &
10899 buffer1, buffer2)
10900#else
10901 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
10902 work, nl_a, nl_b, nl_c, nl_d, &
10903 sphi_a, &
10904 sphi_b, &
10905 sphi_c, &
10906 sphi_d, &
10907 primitives, &
10908 buffer1, buffer2)
10909#endif
10910 CASE (1)
10911#if __MAX_CONTR > 4 || __MAX_CONTR == 4
10912 CALL contract_gpfp(work, &
10913 nl_a, nl_b, nl_c, nl_d, &
10914 sphi_a, sphi_b, sphi_c, sphi_d, &
10915 primitives, &
10916 buffer1, buffer2)
10917#else
10918 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
10919 work, nl_a, nl_b, nl_c, nl_d, &
10920 sphi_a, &
10921 sphi_b, &
10922 sphi_c, &
10923 sphi_d, &
10924 primitives, &
10925 buffer1, buffer2)
10926#endif
10927 CASE (2)
10928#if __MAX_CONTR > 4 || __MAX_CONTR == 4
10929 CALL contract_gpfd(work, &
10930 nl_a, nl_b, nl_c, nl_d, &
10931 sphi_a, sphi_b, sphi_c, sphi_d, &
10932 primitives, &
10933 buffer1, buffer2)
10934#else
10935 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
10936 work, nl_a, nl_b, nl_c, nl_d, &
10937 sphi_a, &
10938 sphi_b, &
10939 sphi_c, &
10940 sphi_d, &
10941 primitives, &
10942 buffer1, buffer2)
10943#endif
10944 CASE (3)
10945#if __MAX_CONTR > 4 || __MAX_CONTR == 4
10946 CALL contract_gpff(work, &
10947 nl_a, nl_b, nl_c, nl_d, &
10948 sphi_a, sphi_b, sphi_c, sphi_d, &
10949 primitives, &
10950 buffer1, buffer2)
10951#else
10952 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
10953 work, nl_a, nl_b, nl_c, nl_d, &
10954 sphi_a, &
10955 sphi_b, &
10956 sphi_c, &
10957 sphi_d, &
10958 primitives, &
10959 buffer1, buffer2)
10960#endif
10961 CASE (4)
10962#if __MAX_CONTR > 4 || __MAX_CONTR == 4
10963 CALL contract_gpfg(work, &
10964 nl_a, nl_b, nl_c, nl_d, &
10965 sphi_a, sphi_b, sphi_c, sphi_d, &
10966 primitives, &
10967 buffer1, buffer2)
10968#else
10969 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
10970 work, nl_a, nl_b, nl_c, nl_d, &
10971 sphi_a, &
10972 sphi_b, &
10973 sphi_c, &
10974 sphi_d, &
10975 primitives, &
10976 buffer1, buffer2)
10977#endif
10978 CASE DEFAULT
10979 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
10980 work, nl_a, nl_b, nl_c, nl_d, &
10981 sphi_a, &
10982 sphi_b, &
10983 sphi_c, &
10984 sphi_d, &
10985 primitives, &
10986 buffer1, buffer2)
10987 END SELECT
10988 CASE (4)
10989 SELECT CASE (n_d)
10990 CASE (0)
10991#if __MAX_CONTR > 4 || __MAX_CONTR == 4
10992 CALL contract_gpgs(work, &
10993 nl_a, nl_b, nl_c, nl_d, &
10994 sphi_a, sphi_b, sphi_c, sphi_d, &
10995 primitives, &
10996 buffer1, buffer2)
10997#else
10998 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
10999 work, nl_a, nl_b, nl_c, nl_d, &
11000 sphi_a, &
11001 sphi_b, &
11002 sphi_c, &
11003 sphi_d, &
11004 primitives, &
11005 buffer1, buffer2)
11006#endif
11007 CASE (1)
11008#if __MAX_CONTR > 4 || __MAX_CONTR == 4
11009 CALL contract_gpgp(work, &
11010 nl_a, nl_b, nl_c, nl_d, &
11011 sphi_a, sphi_b, sphi_c, sphi_d, &
11012 primitives, &
11013 buffer1, buffer2)
11014#else
11015 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
11016 work, nl_a, nl_b, nl_c, nl_d, &
11017 sphi_a, &
11018 sphi_b, &
11019 sphi_c, &
11020 sphi_d, &
11021 primitives, &
11022 buffer1, buffer2)
11023#endif
11024 CASE (2)
11025#if __MAX_CONTR > 4 || __MAX_CONTR == 4
11026 CALL contract_gpgd(work, &
11027 nl_a, nl_b, nl_c, nl_d, &
11028 sphi_a, sphi_b, sphi_c, sphi_d, &
11029 primitives, &
11030 buffer1, buffer2)
11031#else
11032 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
11033 work, nl_a, nl_b, nl_c, nl_d, &
11034 sphi_a, &
11035 sphi_b, &
11036 sphi_c, &
11037 sphi_d, &
11038 primitives, &
11039 buffer1, buffer2)
11040#endif
11041 CASE (3)
11042#if __MAX_CONTR > 4 || __MAX_CONTR == 4
11043 CALL contract_gpgf(work, &
11044 nl_a, nl_b, nl_c, nl_d, &
11045 sphi_a, sphi_b, sphi_c, sphi_d, &
11046 primitives, &
11047 buffer1, buffer2)
11048#else
11049 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
11050 work, nl_a, nl_b, nl_c, nl_d, &
11051 sphi_a, &
11052 sphi_b, &
11053 sphi_c, &
11054 sphi_d, &
11055 primitives, &
11056 buffer1, buffer2)
11057#endif
11058 CASE (4)
11059#if __MAX_CONTR > 4 || __MAX_CONTR == 4
11060 CALL contract_gpgg(work, &
11061 nl_a, nl_b, nl_c, nl_d, &
11062 sphi_a, sphi_b, sphi_c, sphi_d, &
11063 primitives, &
11064 buffer1, buffer2)
11065#else
11066 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
11067 work, nl_a, nl_b, nl_c, nl_d, &
11068 sphi_a, &
11069 sphi_b, &
11070 sphi_c, &
11071 sphi_d, &
11072 primitives, &
11073 buffer1, buffer2)
11074#endif
11075 CASE DEFAULT
11076 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
11077 work, nl_a, nl_b, nl_c, nl_d, &
11078 sphi_a, &
11079 sphi_b, &
11080 sphi_c, &
11081 sphi_d, &
11082 primitives, &
11083 buffer1, buffer2)
11084 END SELECT
11085 CASE DEFAULT
11086 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
11087 work, nl_a, nl_b, nl_c, nl_d, &
11088 sphi_a, &
11089 sphi_b, &
11090 sphi_c, &
11091 sphi_d, &
11092 primitives, &
11093 buffer1, buffer2)
11094 END SELECT
11095 CASE (2)
11096 SELECT CASE (n_c)
11097 CASE (0)
11098 SELECT CASE (n_d)
11099 CASE (0)
11100#if __MAX_CONTR > 4 || __MAX_CONTR == 4
11101 CALL contract_gdss(work, &
11102 nl_a, nl_b, nl_c, nl_d, &
11103 sphi_a, sphi_b, sphi_c, sphi_d, &
11104 primitives, &
11105 buffer1, buffer2)
11106#else
11107 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
11108 work, nl_a, nl_b, nl_c, nl_d, &
11109 sphi_a, &
11110 sphi_b, &
11111 sphi_c, &
11112 sphi_d, &
11113 primitives, &
11114 buffer1, buffer2)
11115#endif
11116 CASE (1)
11117#if __MAX_CONTR > 4 || __MAX_CONTR == 4
11118 CALL contract_gdsp(work, &
11119 nl_a, nl_b, nl_c, nl_d, &
11120 sphi_a, sphi_b, sphi_c, sphi_d, &
11121 primitives, &
11122 buffer1, buffer2)
11123#else
11124 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
11125 work, nl_a, nl_b, nl_c, nl_d, &
11126 sphi_a, &
11127 sphi_b, &
11128 sphi_c, &
11129 sphi_d, &
11130 primitives, &
11131 buffer1, buffer2)
11132#endif
11133 CASE (2)
11134#if __MAX_CONTR > 4 || __MAX_CONTR == 4
11135 CALL contract_gdsd(work, &
11136 nl_a, nl_b, nl_c, nl_d, &
11137 sphi_a, sphi_b, sphi_c, sphi_d, &
11138 primitives, &
11139 buffer1, buffer2)
11140#else
11141 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
11142 work, nl_a, nl_b, nl_c, nl_d, &
11143 sphi_a, &
11144 sphi_b, &
11145 sphi_c, &
11146 sphi_d, &
11147 primitives, &
11148 buffer1, buffer2)
11149#endif
11150 CASE (3)
11151#if __MAX_CONTR > 4 || __MAX_CONTR == 4
11152 CALL contract_gdsf(work, &
11153 nl_a, nl_b, nl_c, nl_d, &
11154 sphi_a, sphi_b, sphi_c, sphi_d, &
11155 primitives, &
11156 buffer1, buffer2)
11157#else
11158 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
11159 work, nl_a, nl_b, nl_c, nl_d, &
11160 sphi_a, &
11161 sphi_b, &
11162 sphi_c, &
11163 sphi_d, &
11164 primitives, &
11165 buffer1, buffer2)
11166#endif
11167 CASE (4)
11168#if __MAX_CONTR > 4 || __MAX_CONTR == 4
11169 CALL contract_gdsg(work, &
11170 nl_a, nl_b, nl_c, nl_d, &
11171 sphi_a, sphi_b, sphi_c, sphi_d, &
11172 primitives, &
11173 buffer1, buffer2)
11174#else
11175 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
11176 work, nl_a, nl_b, nl_c, nl_d, &
11177 sphi_a, &
11178 sphi_b, &
11179 sphi_c, &
11180 sphi_d, &
11181 primitives, &
11182 buffer1, buffer2)
11183#endif
11184 CASE DEFAULT
11185 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
11186 work, nl_a, nl_b, nl_c, nl_d, &
11187 sphi_a, &
11188 sphi_b, &
11189 sphi_c, &
11190 sphi_d, &
11191 primitives, &
11192 buffer1, buffer2)
11193 END SELECT
11194 CASE (1)
11195 SELECT CASE (n_d)
11196 CASE (0)
11197#if __MAX_CONTR > 4 || __MAX_CONTR == 4
11198 CALL contract_gdps(work, &
11199 nl_a, nl_b, nl_c, nl_d, &
11200 sphi_a, sphi_b, sphi_c, sphi_d, &
11201 primitives, &
11202 buffer1, buffer2)
11203#else
11204 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
11205 work, nl_a, nl_b, nl_c, nl_d, &
11206 sphi_a, &
11207 sphi_b, &
11208 sphi_c, &
11209 sphi_d, &
11210 primitives, &
11211 buffer1, buffer2)
11212#endif
11213 CASE (1)
11214#if __MAX_CONTR > 4 || __MAX_CONTR == 4
11215 CALL contract_gdpp(work, &
11216 nl_a, nl_b, nl_c, nl_d, &
11217 sphi_a, sphi_b, sphi_c, sphi_d, &
11218 primitives, &
11219 buffer1, buffer2)
11220#else
11221 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
11222 work, nl_a, nl_b, nl_c, nl_d, &
11223 sphi_a, &
11224 sphi_b, &
11225 sphi_c, &
11226 sphi_d, &
11227 primitives, &
11228 buffer1, buffer2)
11229#endif
11230 CASE (2)
11231#if __MAX_CONTR > 4 || __MAX_CONTR == 4
11232 CALL contract_gdpd(work, &
11233 nl_a, nl_b, nl_c, nl_d, &
11234 sphi_a, sphi_b, sphi_c, sphi_d, &
11235 primitives, &
11236 buffer1, buffer2)
11237#else
11238 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
11239 work, nl_a, nl_b, nl_c, nl_d, &
11240 sphi_a, &
11241 sphi_b, &
11242 sphi_c, &
11243 sphi_d, &
11244 primitives, &
11245 buffer1, buffer2)
11246#endif
11247 CASE (3)
11248#if __MAX_CONTR > 4 || __MAX_CONTR == 4
11249 CALL contract_gdpf(work, &
11250 nl_a, nl_b, nl_c, nl_d, &
11251 sphi_a, sphi_b, sphi_c, sphi_d, &
11252 primitives, &
11253 buffer1, buffer2)
11254#else
11255 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
11256 work, nl_a, nl_b, nl_c, nl_d, &
11257 sphi_a, &
11258 sphi_b, &
11259 sphi_c, &
11260 sphi_d, &
11261 primitives, &
11262 buffer1, buffer2)
11263#endif
11264 CASE (4)
11265#if __MAX_CONTR > 4 || __MAX_CONTR == 4
11266 CALL contract_gdpg(work, &
11267 nl_a, nl_b, nl_c, nl_d, &
11268 sphi_a, sphi_b, sphi_c, sphi_d, &
11269 primitives, &
11270 buffer1, buffer2)
11271#else
11272 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
11273 work, nl_a, nl_b, nl_c, nl_d, &
11274 sphi_a, &
11275 sphi_b, &
11276 sphi_c, &
11277 sphi_d, &
11278 primitives, &
11279 buffer1, buffer2)
11280#endif
11281 CASE DEFAULT
11282 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
11283 work, nl_a, nl_b, nl_c, nl_d, &
11284 sphi_a, &
11285 sphi_b, &
11286 sphi_c, &
11287 sphi_d, &
11288 primitives, &
11289 buffer1, buffer2)
11290 END SELECT
11291 CASE (2)
11292 SELECT CASE (n_d)
11293 CASE (0)
11294#if __MAX_CONTR > 4 || __MAX_CONTR == 4
11295 CALL contract_gdds(work, &
11296 nl_a, nl_b, nl_c, nl_d, &
11297 sphi_a, sphi_b, sphi_c, sphi_d, &
11298 primitives, &
11299 buffer1, buffer2)
11300#else
11301 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
11302 work, nl_a, nl_b, nl_c, nl_d, &
11303 sphi_a, &
11304 sphi_b, &
11305 sphi_c, &
11306 sphi_d, &
11307 primitives, &
11308 buffer1, buffer2)
11309#endif
11310 CASE (1)
11311#if __MAX_CONTR > 4 || __MAX_CONTR == 4
11312 CALL contract_gddp(work, &
11313 nl_a, nl_b, nl_c, nl_d, &
11314 sphi_a, sphi_b, sphi_c, sphi_d, &
11315 primitives, &
11316 buffer1, buffer2)
11317#else
11318 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
11319 work, nl_a, nl_b, nl_c, nl_d, &
11320 sphi_a, &
11321 sphi_b, &
11322 sphi_c, &
11323 sphi_d, &
11324 primitives, &
11325 buffer1, buffer2)
11326#endif
11327 CASE (2)
11328#if __MAX_CONTR > 4 || __MAX_CONTR == 4
11329 CALL contract_gddd(work, &
11330 nl_a, nl_b, nl_c, nl_d, &
11331 sphi_a, sphi_b, sphi_c, sphi_d, &
11332 primitives, &
11333 buffer1, buffer2)
11334#else
11335 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
11336 work, nl_a, nl_b, nl_c, nl_d, &
11337 sphi_a, &
11338 sphi_b, &
11339 sphi_c, &
11340 sphi_d, &
11341 primitives, &
11342 buffer1, buffer2)
11343#endif
11344 CASE (3)
11345#if __MAX_CONTR > 4 || __MAX_CONTR == 4
11346 CALL contract_gddf(work, &
11347 nl_a, nl_b, nl_c, nl_d, &
11348 sphi_a, sphi_b, sphi_c, sphi_d, &
11349 primitives, &
11350 buffer1, buffer2)
11351#else
11352 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
11353 work, nl_a, nl_b, nl_c, nl_d, &
11354 sphi_a, &
11355 sphi_b, &
11356 sphi_c, &
11357 sphi_d, &
11358 primitives, &
11359 buffer1, buffer2)
11360#endif
11361 CASE (4)
11362#if __MAX_CONTR > 4 || __MAX_CONTR == 4
11363 CALL contract_gddg(work, &
11364 nl_a, nl_b, nl_c, nl_d, &
11365 sphi_a, sphi_b, sphi_c, sphi_d, &
11366 primitives, &
11367 buffer1, buffer2)
11368#else
11369 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
11370 work, nl_a, nl_b, nl_c, nl_d, &
11371 sphi_a, &
11372 sphi_b, &
11373 sphi_c, &
11374 sphi_d, &
11375 primitives, &
11376 buffer1, buffer2)
11377#endif
11378 CASE DEFAULT
11379 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
11380 work, nl_a, nl_b, nl_c, nl_d, &
11381 sphi_a, &
11382 sphi_b, &
11383 sphi_c, &
11384 sphi_d, &
11385 primitives, &
11386 buffer1, buffer2)
11387 END SELECT
11388 CASE (3)
11389 SELECT CASE (n_d)
11390 CASE (0)
11391#if __MAX_CONTR > 4 || __MAX_CONTR == 4
11392 CALL contract_gdfs(work, &
11393 nl_a, nl_b, nl_c, nl_d, &
11394 sphi_a, sphi_b, sphi_c, sphi_d, &
11395 primitives, &
11396 buffer1, buffer2)
11397#else
11398 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
11399 work, nl_a, nl_b, nl_c, nl_d, &
11400 sphi_a, &
11401 sphi_b, &
11402 sphi_c, &
11403 sphi_d, &
11404 primitives, &
11405 buffer1, buffer2)
11406#endif
11407 CASE (1)
11408#if __MAX_CONTR > 4 || __MAX_CONTR == 4
11409 CALL contract_gdfp(work, &
11410 nl_a, nl_b, nl_c, nl_d, &
11411 sphi_a, sphi_b, sphi_c, sphi_d, &
11412 primitives, &
11413 buffer1, buffer2)
11414#else
11415 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
11416 work, nl_a, nl_b, nl_c, nl_d, &
11417 sphi_a, &
11418 sphi_b, &
11419 sphi_c, &
11420 sphi_d, &
11421 primitives, &
11422 buffer1, buffer2)
11423#endif
11424 CASE (2)
11425#if __MAX_CONTR > 4 || __MAX_CONTR == 4
11426 CALL contract_gdfd(work, &
11427 nl_a, nl_b, nl_c, nl_d, &
11428 sphi_a, sphi_b, sphi_c, sphi_d, &
11429 primitives, &
11430 buffer1, buffer2)
11431#else
11432 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
11433 work, nl_a, nl_b, nl_c, nl_d, &
11434 sphi_a, &
11435 sphi_b, &
11436 sphi_c, &
11437 sphi_d, &
11438 primitives, &
11439 buffer1, buffer2)
11440#endif
11441 CASE (3)
11442#if __MAX_CONTR > 4 || __MAX_CONTR == 4
11443 CALL contract_gdff(work, &
11444 nl_a, nl_b, nl_c, nl_d, &
11445 sphi_a, sphi_b, sphi_c, sphi_d, &
11446 primitives, &
11447 buffer1, buffer2)
11448#else
11449 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
11450 work, nl_a, nl_b, nl_c, nl_d, &
11451 sphi_a, &
11452 sphi_b, &
11453 sphi_c, &
11454 sphi_d, &
11455 primitives, &
11456 buffer1, buffer2)
11457#endif
11458 CASE (4)
11459#if __MAX_CONTR > 4 || __MAX_CONTR == 4
11460 CALL contract_gdfg(work, &
11461 nl_a, nl_b, nl_c, nl_d, &
11462 sphi_a, sphi_b, sphi_c, sphi_d, &
11463 primitives, &
11464 buffer1, buffer2)
11465#else
11466 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
11467 work, nl_a, nl_b, nl_c, nl_d, &
11468 sphi_a, &
11469 sphi_b, &
11470 sphi_c, &
11471 sphi_d, &
11472 primitives, &
11473 buffer1, buffer2)
11474#endif
11475 CASE DEFAULT
11476 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
11477 work, nl_a, nl_b, nl_c, nl_d, &
11478 sphi_a, &
11479 sphi_b, &
11480 sphi_c, &
11481 sphi_d, &
11482 primitives, &
11483 buffer1, buffer2)
11484 END SELECT
11485 CASE (4)
11486 SELECT CASE (n_d)
11487 CASE (0)
11488#if __MAX_CONTR > 4 || __MAX_CONTR == 4
11489 CALL contract_gdgs(work, &
11490 nl_a, nl_b, nl_c, nl_d, &
11491 sphi_a, sphi_b, sphi_c, sphi_d, &
11492 primitives, &
11493 buffer1, buffer2)
11494#else
11495 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
11496 work, nl_a, nl_b, nl_c, nl_d, &
11497 sphi_a, &
11498 sphi_b, &
11499 sphi_c, &
11500 sphi_d, &
11501 primitives, &
11502 buffer1, buffer2)
11503#endif
11504 CASE (1)
11505#if __MAX_CONTR > 4 || __MAX_CONTR == 4
11506 CALL contract_gdgp(work, &
11507 nl_a, nl_b, nl_c, nl_d, &
11508 sphi_a, sphi_b, sphi_c, sphi_d, &
11509 primitives, &
11510 buffer1, buffer2)
11511#else
11512 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
11513 work, nl_a, nl_b, nl_c, nl_d, &
11514 sphi_a, &
11515 sphi_b, &
11516 sphi_c, &
11517 sphi_d, &
11518 primitives, &
11519 buffer1, buffer2)
11520#endif
11521 CASE (2)
11522#if __MAX_CONTR > 4 || __MAX_CONTR == 4
11523 CALL contract_gdgd(work, &
11524 nl_a, nl_b, nl_c, nl_d, &
11525 sphi_a, sphi_b, sphi_c, sphi_d, &
11526 primitives, &
11527 buffer1, buffer2)
11528#else
11529 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
11530 work, nl_a, nl_b, nl_c, nl_d, &
11531 sphi_a, &
11532 sphi_b, &
11533 sphi_c, &
11534 sphi_d, &
11535 primitives, &
11536 buffer1, buffer2)
11537#endif
11538 CASE (3)
11539#if __MAX_CONTR > 4 || __MAX_CONTR == 4
11540 CALL contract_gdgf(work, &
11541 nl_a, nl_b, nl_c, nl_d, &
11542 sphi_a, sphi_b, sphi_c, sphi_d, &
11543 primitives, &
11544 buffer1, buffer2)
11545#else
11546 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
11547 work, nl_a, nl_b, nl_c, nl_d, &
11548 sphi_a, &
11549 sphi_b, &
11550 sphi_c, &
11551 sphi_d, &
11552 primitives, &
11553 buffer1, buffer2)
11554#endif
11555 CASE (4)
11556#if __MAX_CONTR > 4 || __MAX_CONTR == 4
11557 CALL contract_gdgg(work, &
11558 nl_a, nl_b, nl_c, nl_d, &
11559 sphi_a, sphi_b, sphi_c, sphi_d, &
11560 primitives, &
11561 buffer1, buffer2)
11562#else
11563 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
11564 work, nl_a, nl_b, nl_c, nl_d, &
11565 sphi_a, &
11566 sphi_b, &
11567 sphi_c, &
11568 sphi_d, &
11569 primitives, &
11570 buffer1, buffer2)
11571#endif
11572 CASE DEFAULT
11573 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
11574 work, nl_a, nl_b, nl_c, nl_d, &
11575 sphi_a, &
11576 sphi_b, &
11577 sphi_c, &
11578 sphi_d, &
11579 primitives, &
11580 buffer1, buffer2)
11581 END SELECT
11582 CASE DEFAULT
11583 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
11584 work, nl_a, nl_b, nl_c, nl_d, &
11585 sphi_a, &
11586 sphi_b, &
11587 sphi_c, &
11588 sphi_d, &
11589 primitives, &
11590 buffer1, buffer2)
11591 END SELECT
11592 CASE (3)
11593 SELECT CASE (n_c)
11594 CASE (0)
11595 SELECT CASE (n_d)
11596 CASE (0)
11597#if __MAX_CONTR > 4 || __MAX_CONTR == 4
11598 CALL contract_gfss(work, &
11599 nl_a, nl_b, nl_c, nl_d, &
11600 sphi_a, sphi_b, sphi_c, sphi_d, &
11601 primitives, &
11602 buffer1, buffer2)
11603#else
11604 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
11605 work, nl_a, nl_b, nl_c, nl_d, &
11606 sphi_a, &
11607 sphi_b, &
11608 sphi_c, &
11609 sphi_d, &
11610 primitives, &
11611 buffer1, buffer2)
11612#endif
11613 CASE (1)
11614#if __MAX_CONTR > 4 || __MAX_CONTR == 4
11615 CALL contract_gfsp(work, &
11616 nl_a, nl_b, nl_c, nl_d, &
11617 sphi_a, sphi_b, sphi_c, sphi_d, &
11618 primitives, &
11619 buffer1, buffer2)
11620#else
11621 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
11622 work, nl_a, nl_b, nl_c, nl_d, &
11623 sphi_a, &
11624 sphi_b, &
11625 sphi_c, &
11626 sphi_d, &
11627 primitives, &
11628 buffer1, buffer2)
11629#endif
11630 CASE (2)
11631#if __MAX_CONTR > 4 || __MAX_CONTR == 4
11632 CALL contract_gfsd(work, &
11633 nl_a, nl_b, nl_c, nl_d, &
11634 sphi_a, sphi_b, sphi_c, sphi_d, &
11635 primitives, &
11636 buffer1, buffer2)
11637#else
11638 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
11639 work, nl_a, nl_b, nl_c, nl_d, &
11640 sphi_a, &
11641 sphi_b, &
11642 sphi_c, &
11643 sphi_d, &
11644 primitives, &
11645 buffer1, buffer2)
11646#endif
11647 CASE (3)
11648#if __MAX_CONTR > 4 || __MAX_CONTR == 4
11649 CALL contract_gfsf(work, &
11650 nl_a, nl_b, nl_c, nl_d, &
11651 sphi_a, sphi_b, sphi_c, sphi_d, &
11652 primitives, &
11653 buffer1, buffer2)
11654#else
11655 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
11656 work, nl_a, nl_b, nl_c, nl_d, &
11657 sphi_a, &
11658 sphi_b, &
11659 sphi_c, &
11660 sphi_d, &
11661 primitives, &
11662 buffer1, buffer2)
11663#endif
11664 CASE (4)
11665#if __MAX_CONTR > 4 || __MAX_CONTR == 4
11666 CALL contract_gfsg(work, &
11667 nl_a, nl_b, nl_c, nl_d, &
11668 sphi_a, sphi_b, sphi_c, sphi_d, &
11669 primitives, &
11670 buffer1, buffer2)
11671#else
11672 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
11673 work, nl_a, nl_b, nl_c, nl_d, &
11674 sphi_a, &
11675 sphi_b, &
11676 sphi_c, &
11677 sphi_d, &
11678 primitives, &
11679 buffer1, buffer2)
11680#endif
11681 CASE DEFAULT
11682 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
11683 work, nl_a, nl_b, nl_c, nl_d, &
11684 sphi_a, &
11685 sphi_b, &
11686 sphi_c, &
11687 sphi_d, &
11688 primitives, &
11689 buffer1, buffer2)
11690 END SELECT
11691 CASE (1)
11692 SELECT CASE (n_d)
11693 CASE (0)
11694#if __MAX_CONTR > 4 || __MAX_CONTR == 4
11695 CALL contract_gfps(work, &
11696 nl_a, nl_b, nl_c, nl_d, &
11697 sphi_a, sphi_b, sphi_c, sphi_d, &
11698 primitives, &
11699 buffer1, buffer2)
11700#else
11701 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
11702 work, nl_a, nl_b, nl_c, nl_d, &
11703 sphi_a, &
11704 sphi_b, &
11705 sphi_c, &
11706 sphi_d, &
11707 primitives, &
11708 buffer1, buffer2)
11709#endif
11710 CASE (1)
11711#if __MAX_CONTR > 4 || __MAX_CONTR == 4
11712 CALL contract_gfpp(work, &
11713 nl_a, nl_b, nl_c, nl_d, &
11714 sphi_a, sphi_b, sphi_c, sphi_d, &
11715 primitives, &
11716 buffer1, buffer2)
11717#else
11718 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
11719 work, nl_a, nl_b, nl_c, nl_d, &
11720 sphi_a, &
11721 sphi_b, &
11722 sphi_c, &
11723 sphi_d, &
11724 primitives, &
11725 buffer1, buffer2)
11726#endif
11727 CASE (2)
11728#if __MAX_CONTR > 4 || __MAX_CONTR == 4
11729 CALL contract_gfpd(work, &
11730 nl_a, nl_b, nl_c, nl_d, &
11731 sphi_a, sphi_b, sphi_c, sphi_d, &
11732 primitives, &
11733 buffer1, buffer2)
11734#else
11735 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
11736 work, nl_a, nl_b, nl_c, nl_d, &
11737 sphi_a, &
11738 sphi_b, &
11739 sphi_c, &
11740 sphi_d, &
11741 primitives, &
11742 buffer1, buffer2)
11743#endif
11744 CASE (3)
11745#if __MAX_CONTR > 4 || __MAX_CONTR == 4
11746 CALL contract_gfpf(work, &
11747 nl_a, nl_b, nl_c, nl_d, &
11748 sphi_a, sphi_b, sphi_c, sphi_d, &
11749 primitives, &
11750 buffer1, buffer2)
11751#else
11752 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
11753 work, nl_a, nl_b, nl_c, nl_d, &
11754 sphi_a, &
11755 sphi_b, &
11756 sphi_c, &
11757 sphi_d, &
11758 primitives, &
11759 buffer1, buffer2)
11760#endif
11761 CASE (4)
11762#if __MAX_CONTR > 4 || __MAX_CONTR == 4
11763 CALL contract_gfpg(work, &
11764 nl_a, nl_b, nl_c, nl_d, &
11765 sphi_a, sphi_b, sphi_c, sphi_d, &
11766 primitives, &
11767 buffer1, buffer2)
11768#else
11769 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
11770 work, nl_a, nl_b, nl_c, nl_d, &
11771 sphi_a, &
11772 sphi_b, &
11773 sphi_c, &
11774 sphi_d, &
11775 primitives, &
11776 buffer1, buffer2)
11777#endif
11778 CASE DEFAULT
11779 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
11780 work, nl_a, nl_b, nl_c, nl_d, &
11781 sphi_a, &
11782 sphi_b, &
11783 sphi_c, &
11784 sphi_d, &
11785 primitives, &
11786 buffer1, buffer2)
11787 END SELECT
11788 CASE (2)
11789 SELECT CASE (n_d)
11790 CASE (0)
11791#if __MAX_CONTR > 4 || __MAX_CONTR == 4
11792 CALL contract_gfds(work, &
11793 nl_a, nl_b, nl_c, nl_d, &
11794 sphi_a, sphi_b, sphi_c, sphi_d, &
11795 primitives, &
11796 buffer1, buffer2)
11797#else
11798 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
11799 work, nl_a, nl_b, nl_c, nl_d, &
11800 sphi_a, &
11801 sphi_b, &
11802 sphi_c, &
11803 sphi_d, &
11804 primitives, &
11805 buffer1, buffer2)
11806#endif
11807 CASE (1)
11808#if __MAX_CONTR > 4 || __MAX_CONTR == 4
11809 CALL contract_gfdp(work, &
11810 nl_a, nl_b, nl_c, nl_d, &
11811 sphi_a, sphi_b, sphi_c, sphi_d, &
11812 primitives, &
11813 buffer1, buffer2)
11814#else
11815 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
11816 work, nl_a, nl_b, nl_c, nl_d, &
11817 sphi_a, &
11818 sphi_b, &
11819 sphi_c, &
11820 sphi_d, &
11821 primitives, &
11822 buffer1, buffer2)
11823#endif
11824 CASE (2)
11825#if __MAX_CONTR > 4 || __MAX_CONTR == 4
11826 CALL contract_gfdd(work, &
11827 nl_a, nl_b, nl_c, nl_d, &
11828 sphi_a, sphi_b, sphi_c, sphi_d, &
11829 primitives, &
11830 buffer1, buffer2)
11831#else
11832 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
11833 work, nl_a, nl_b, nl_c, nl_d, &
11834 sphi_a, &
11835 sphi_b, &
11836 sphi_c, &
11837 sphi_d, &
11838 primitives, &
11839 buffer1, buffer2)
11840#endif
11841 CASE (3)
11842#if __MAX_CONTR > 4 || __MAX_CONTR == 4
11843 CALL contract_gfdf(work, &
11844 nl_a, nl_b, nl_c, nl_d, &
11845 sphi_a, sphi_b, sphi_c, sphi_d, &
11846 primitives, &
11847 buffer1, buffer2)
11848#else
11849 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
11850 work, nl_a, nl_b, nl_c, nl_d, &
11851 sphi_a, &
11852 sphi_b, &
11853 sphi_c, &
11854 sphi_d, &
11855 primitives, &
11856 buffer1, buffer2)
11857#endif
11858 CASE (4)
11859#if __MAX_CONTR > 4 || __MAX_CONTR == 4
11860 CALL contract_gfdg(work, &
11861 nl_a, nl_b, nl_c, nl_d, &
11862 sphi_a, sphi_b, sphi_c, sphi_d, &
11863 primitives, &
11864 buffer1, buffer2)
11865#else
11866 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
11867 work, nl_a, nl_b, nl_c, nl_d, &
11868 sphi_a, &
11869 sphi_b, &
11870 sphi_c, &
11871 sphi_d, &
11872 primitives, &
11873 buffer1, buffer2)
11874#endif
11875 CASE DEFAULT
11876 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
11877 work, nl_a, nl_b, nl_c, nl_d, &
11878 sphi_a, &
11879 sphi_b, &
11880 sphi_c, &
11881 sphi_d, &
11882 primitives, &
11883 buffer1, buffer2)
11884 END SELECT
11885 CASE (3)
11886 SELECT CASE (n_d)
11887 CASE (0)
11888#if __MAX_CONTR > 4 || __MAX_CONTR == 4
11889 CALL contract_gffs(work, &
11890 nl_a, nl_b, nl_c, nl_d, &
11891 sphi_a, sphi_b, sphi_c, sphi_d, &
11892 primitives, &
11893 buffer1, buffer2)
11894#else
11895 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
11896 work, nl_a, nl_b, nl_c, nl_d, &
11897 sphi_a, &
11898 sphi_b, &
11899 sphi_c, &
11900 sphi_d, &
11901 primitives, &
11902 buffer1, buffer2)
11903#endif
11904 CASE (1)
11905#if __MAX_CONTR > 4 || __MAX_CONTR == 4
11906 CALL contract_gffp(work, &
11907 nl_a, nl_b, nl_c, nl_d, &
11908 sphi_a, sphi_b, sphi_c, sphi_d, &
11909 primitives, &
11910 buffer1, buffer2)
11911#else
11912 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
11913 work, nl_a, nl_b, nl_c, nl_d, &
11914 sphi_a, &
11915 sphi_b, &
11916 sphi_c, &
11917 sphi_d, &
11918 primitives, &
11919 buffer1, buffer2)
11920#endif
11921 CASE (2)
11922#if __MAX_CONTR > 4 || __MAX_CONTR == 4
11923 CALL contract_gffd(work, &
11924 nl_a, nl_b, nl_c, nl_d, &
11925 sphi_a, sphi_b, sphi_c, sphi_d, &
11926 primitives, &
11927 buffer1, buffer2)
11928#else
11929 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
11930 work, nl_a, nl_b, nl_c, nl_d, &
11931 sphi_a, &
11932 sphi_b, &
11933 sphi_c, &
11934 sphi_d, &
11935 primitives, &
11936 buffer1, buffer2)
11937#endif
11938 CASE (3)
11939#if __MAX_CONTR > 4 || __MAX_CONTR == 4
11940 CALL contract_gfff(work, &
11941 nl_a, nl_b, nl_c, nl_d, &
11942 sphi_a, sphi_b, sphi_c, sphi_d, &
11943 primitives, &
11944 buffer1, buffer2)
11945#else
11946 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
11947 work, nl_a, nl_b, nl_c, nl_d, &
11948 sphi_a, &
11949 sphi_b, &
11950 sphi_c, &
11951 sphi_d, &
11952 primitives, &
11953 buffer1, buffer2)
11954#endif
11955 CASE (4)
11956#if __MAX_CONTR > 4 || __MAX_CONTR == 4
11957 CALL contract_gffg(work, &
11958 nl_a, nl_b, nl_c, nl_d, &
11959 sphi_a, sphi_b, sphi_c, sphi_d, &
11960 primitives, &
11961 buffer1, buffer2)
11962#else
11963 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
11964 work, nl_a, nl_b, nl_c, nl_d, &
11965 sphi_a, &
11966 sphi_b, &
11967 sphi_c, &
11968 sphi_d, &
11969 primitives, &
11970 buffer1, buffer2)
11971#endif
11972 CASE DEFAULT
11973 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
11974 work, nl_a, nl_b, nl_c, nl_d, &
11975 sphi_a, &
11976 sphi_b, &
11977 sphi_c, &
11978 sphi_d, &
11979 primitives, &
11980 buffer1, buffer2)
11981 END SELECT
11982 CASE (4)
11983 SELECT CASE (n_d)
11984 CASE (0)
11985#if __MAX_CONTR > 4 || __MAX_CONTR == 4
11986 CALL contract_gfgs(work, &
11987 nl_a, nl_b, nl_c, nl_d, &
11988 sphi_a, sphi_b, sphi_c, sphi_d, &
11989 primitives, &
11990 buffer1, buffer2)
11991#else
11992 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
11993 work, nl_a, nl_b, nl_c, nl_d, &
11994 sphi_a, &
11995 sphi_b, &
11996 sphi_c, &
11997 sphi_d, &
11998 primitives, &
11999 buffer1, buffer2)
12000#endif
12001 CASE (1)
12002#if __MAX_CONTR > 4 || __MAX_CONTR == 4
12003 CALL contract_gfgp(work, &
12004 nl_a, nl_b, nl_c, nl_d, &
12005 sphi_a, sphi_b, sphi_c, sphi_d, &
12006 primitives, &
12007 buffer1, buffer2)
12008#else
12009 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
12010 work, nl_a, nl_b, nl_c, nl_d, &
12011 sphi_a, &
12012 sphi_b, &
12013 sphi_c, &
12014 sphi_d, &
12015 primitives, &
12016 buffer1, buffer2)
12017#endif
12018 CASE (2)
12019#if __MAX_CONTR > 4 || __MAX_CONTR == 4
12020 CALL contract_gfgd(work, &
12021 nl_a, nl_b, nl_c, nl_d, &
12022 sphi_a, sphi_b, sphi_c, sphi_d, &
12023 primitives, &
12024 buffer1, buffer2)
12025#else
12026 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
12027 work, nl_a, nl_b, nl_c, nl_d, &
12028 sphi_a, &
12029 sphi_b, &
12030 sphi_c, &
12031 sphi_d, &
12032 primitives, &
12033 buffer1, buffer2)
12034#endif
12035 CASE (3)
12036#if __MAX_CONTR > 4 || __MAX_CONTR == 4
12037 CALL contract_gfgf(work, &
12038 nl_a, nl_b, nl_c, nl_d, &
12039 sphi_a, sphi_b, sphi_c, sphi_d, &
12040 primitives, &
12041 buffer1, buffer2)
12042#else
12043 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
12044 work, nl_a, nl_b, nl_c, nl_d, &
12045 sphi_a, &
12046 sphi_b, &
12047 sphi_c, &
12048 sphi_d, &
12049 primitives, &
12050 buffer1, buffer2)
12051#endif
12052 CASE (4)
12053#if __MAX_CONTR > 4 || __MAX_CONTR == 4
12054 CALL contract_gfgg(work, &
12055 nl_a, nl_b, nl_c, nl_d, &
12056 sphi_a, sphi_b, sphi_c, sphi_d, &
12057 primitives, &
12058 buffer1, buffer2)
12059#else
12060 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
12061 work, nl_a, nl_b, nl_c, nl_d, &
12062 sphi_a, &
12063 sphi_b, &
12064 sphi_c, &
12065 sphi_d, &
12066 primitives, &
12067 buffer1, buffer2)
12068#endif
12069 CASE DEFAULT
12070 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
12071 work, nl_a, nl_b, nl_c, nl_d, &
12072 sphi_a, &
12073 sphi_b, &
12074 sphi_c, &
12075 sphi_d, &
12076 primitives, &
12077 buffer1, buffer2)
12078 END SELECT
12079 CASE DEFAULT
12080 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
12081 work, nl_a, nl_b, nl_c, nl_d, &
12082 sphi_a, &
12083 sphi_b, &
12084 sphi_c, &
12085 sphi_d, &
12086 primitives, &
12087 buffer1, buffer2)
12088 END SELECT
12089 CASE (4)
12090 SELECT CASE (n_c)
12091 CASE (0)
12092 SELECT CASE (n_d)
12093 CASE (0)
12094#if __MAX_CONTR > 4 || __MAX_CONTR == 4
12095 CALL contract_ggss(work, &
12096 nl_a, nl_b, nl_c, nl_d, &
12097 sphi_a, sphi_b, sphi_c, sphi_d, &
12098 primitives, &
12099 buffer1, buffer2)
12100#else
12101 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
12102 work, nl_a, nl_b, nl_c, nl_d, &
12103 sphi_a, &
12104 sphi_b, &
12105 sphi_c, &
12106 sphi_d, &
12107 primitives, &
12108 buffer1, buffer2)
12109#endif
12110 CASE (1)
12111#if __MAX_CONTR > 4 || __MAX_CONTR == 4
12112 CALL contract_ggsp(work, &
12113 nl_a, nl_b, nl_c, nl_d, &
12114 sphi_a, sphi_b, sphi_c, sphi_d, &
12115 primitives, &
12116 buffer1, buffer2)
12117#else
12118 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
12119 work, nl_a, nl_b, nl_c, nl_d, &
12120 sphi_a, &
12121 sphi_b, &
12122 sphi_c, &
12123 sphi_d, &
12124 primitives, &
12125 buffer1, buffer2)
12126#endif
12127 CASE (2)
12128#if __MAX_CONTR > 4 || __MAX_CONTR == 4
12129 CALL contract_ggsd(work, &
12130 nl_a, nl_b, nl_c, nl_d, &
12131 sphi_a, sphi_b, sphi_c, sphi_d, &
12132 primitives, &
12133 buffer1, buffer2)
12134#else
12135 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
12136 work, nl_a, nl_b, nl_c, nl_d, &
12137 sphi_a, &
12138 sphi_b, &
12139 sphi_c, &
12140 sphi_d, &
12141 primitives, &
12142 buffer1, buffer2)
12143#endif
12144 CASE (3)
12145#if __MAX_CONTR > 4 || __MAX_CONTR == 4
12146 CALL contract_ggsf(work, &
12147 nl_a, nl_b, nl_c, nl_d, &
12148 sphi_a, sphi_b, sphi_c, sphi_d, &
12149 primitives, &
12150 buffer1, buffer2)
12151#else
12152 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
12153 work, nl_a, nl_b, nl_c, nl_d, &
12154 sphi_a, &
12155 sphi_b, &
12156 sphi_c, &
12157 sphi_d, &
12158 primitives, &
12159 buffer1, buffer2)
12160#endif
12161 CASE (4)
12162#if __MAX_CONTR > 4 || __MAX_CONTR == 4
12163 CALL contract_ggsg(work, &
12164 nl_a, nl_b, nl_c, nl_d, &
12165 sphi_a, sphi_b, sphi_c, sphi_d, &
12166 primitives, &
12167 buffer1, buffer2)
12168#else
12169 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
12170 work, nl_a, nl_b, nl_c, nl_d, &
12171 sphi_a, &
12172 sphi_b, &
12173 sphi_c, &
12174 sphi_d, &
12175 primitives, &
12176 buffer1, buffer2)
12177#endif
12178 CASE DEFAULT
12179 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
12180 work, nl_a, nl_b, nl_c, nl_d, &
12181 sphi_a, &
12182 sphi_b, &
12183 sphi_c, &
12184 sphi_d, &
12185 primitives, &
12186 buffer1, buffer2)
12187 END SELECT
12188 CASE (1)
12189 SELECT CASE (n_d)
12190 CASE (0)
12191#if __MAX_CONTR > 4 || __MAX_CONTR == 4
12192 CALL contract_ggps(work, &
12193 nl_a, nl_b, nl_c, nl_d, &
12194 sphi_a, sphi_b, sphi_c, sphi_d, &
12195 primitives, &
12196 buffer1, buffer2)
12197#else
12198 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
12199 work, nl_a, nl_b, nl_c, nl_d, &
12200 sphi_a, &
12201 sphi_b, &
12202 sphi_c, &
12203 sphi_d, &
12204 primitives, &
12205 buffer1, buffer2)
12206#endif
12207 CASE (1)
12208#if __MAX_CONTR > 4 || __MAX_CONTR == 4
12209 CALL contract_ggpp(work, &
12210 nl_a, nl_b, nl_c, nl_d, &
12211 sphi_a, sphi_b, sphi_c, sphi_d, &
12212 primitives, &
12213 buffer1, buffer2)
12214#else
12215 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
12216 work, nl_a, nl_b, nl_c, nl_d, &
12217 sphi_a, &
12218 sphi_b, &
12219 sphi_c, &
12220 sphi_d, &
12221 primitives, &
12222 buffer1, buffer2)
12223#endif
12224 CASE (2)
12225#if __MAX_CONTR > 4 || __MAX_CONTR == 4
12226 CALL contract_ggpd(work, &
12227 nl_a, nl_b, nl_c, nl_d, &
12228 sphi_a, sphi_b, sphi_c, sphi_d, &
12229 primitives, &
12230 buffer1, buffer2)
12231#else
12232 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
12233 work, nl_a, nl_b, nl_c, nl_d, &
12234 sphi_a, &
12235 sphi_b, &
12236 sphi_c, &
12237 sphi_d, &
12238 primitives, &
12239 buffer1, buffer2)
12240#endif
12241 CASE (3)
12242#if __MAX_CONTR > 4 || __MAX_CONTR == 4
12243 CALL contract_ggpf(work, &
12244 nl_a, nl_b, nl_c, nl_d, &
12245 sphi_a, sphi_b, sphi_c, sphi_d, &
12246 primitives, &
12247 buffer1, buffer2)
12248#else
12249 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
12250 work, nl_a, nl_b, nl_c, nl_d, &
12251 sphi_a, &
12252 sphi_b, &
12253 sphi_c, &
12254 sphi_d, &
12255 primitives, &
12256 buffer1, buffer2)
12257#endif
12258 CASE (4)
12259#if __MAX_CONTR > 4 || __MAX_CONTR == 4
12260 CALL contract_ggpg(work, &
12261 nl_a, nl_b, nl_c, nl_d, &
12262 sphi_a, sphi_b, sphi_c, sphi_d, &
12263 primitives, &
12264 buffer1, buffer2)
12265#else
12266 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
12267 work, nl_a, nl_b, nl_c, nl_d, &
12268 sphi_a, &
12269 sphi_b, &
12270 sphi_c, &
12271 sphi_d, &
12272 primitives, &
12273 buffer1, buffer2)
12274#endif
12275 CASE DEFAULT
12276 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
12277 work, nl_a, nl_b, nl_c, nl_d, &
12278 sphi_a, &
12279 sphi_b, &
12280 sphi_c, &
12281 sphi_d, &
12282 primitives, &
12283 buffer1, buffer2)
12284 END SELECT
12285 CASE (2)
12286 SELECT CASE (n_d)
12287 CASE (0)
12288#if __MAX_CONTR > 4 || __MAX_CONTR == 4
12289 CALL contract_ggds(work, &
12290 nl_a, nl_b, nl_c, nl_d, &
12291 sphi_a, sphi_b, sphi_c, sphi_d, &
12292 primitives, &
12293 buffer1, buffer2)
12294#else
12295 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
12296 work, nl_a, nl_b, nl_c, nl_d, &
12297 sphi_a, &
12298 sphi_b, &
12299 sphi_c, &
12300 sphi_d, &
12301 primitives, &
12302 buffer1, buffer2)
12303#endif
12304 CASE (1)
12305#if __MAX_CONTR > 4 || __MAX_CONTR == 4
12306 CALL contract_ggdp(work, &
12307 nl_a, nl_b, nl_c, nl_d, &
12308 sphi_a, sphi_b, sphi_c, sphi_d, &
12309 primitives, &
12310 buffer1, buffer2)
12311#else
12312 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
12313 work, nl_a, nl_b, nl_c, nl_d, &
12314 sphi_a, &
12315 sphi_b, &
12316 sphi_c, &
12317 sphi_d, &
12318 primitives, &
12319 buffer1, buffer2)
12320#endif
12321 CASE (2)
12322#if __MAX_CONTR > 4 || __MAX_CONTR == 4
12323 CALL contract_ggdd(work, &
12324 nl_a, nl_b, nl_c, nl_d, &
12325 sphi_a, sphi_b, sphi_c, sphi_d, &
12326 primitives, &
12327 buffer1, buffer2)
12328#else
12329 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
12330 work, nl_a, nl_b, nl_c, nl_d, &
12331 sphi_a, &
12332 sphi_b, &
12333 sphi_c, &
12334 sphi_d, &
12335 primitives, &
12336 buffer1, buffer2)
12337#endif
12338 CASE (3)
12339#if __MAX_CONTR > 4 || __MAX_CONTR == 4
12340 CALL contract_ggdf(work, &
12341 nl_a, nl_b, nl_c, nl_d, &
12342 sphi_a, sphi_b, sphi_c, sphi_d, &
12343 primitives, &
12344 buffer1, buffer2)
12345#else
12346 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
12347 work, nl_a, nl_b, nl_c, nl_d, &
12348 sphi_a, &
12349 sphi_b, &
12350 sphi_c, &
12351 sphi_d, &
12352 primitives, &
12353 buffer1, buffer2)
12354#endif
12355 CASE (4)
12356#if __MAX_CONTR > 4 || __MAX_CONTR == 4
12357 CALL contract_ggdg(work, &
12358 nl_a, nl_b, nl_c, nl_d, &
12359 sphi_a, sphi_b, sphi_c, sphi_d, &
12360 primitives, &
12361 buffer1, buffer2)
12362#else
12363 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
12364 work, nl_a, nl_b, nl_c, nl_d, &
12365 sphi_a, &
12366 sphi_b, &
12367 sphi_c, &
12368 sphi_d, &
12369 primitives, &
12370 buffer1, buffer2)
12371#endif
12372 CASE DEFAULT
12373 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
12374 work, nl_a, nl_b, nl_c, nl_d, &
12375 sphi_a, &
12376 sphi_b, &
12377 sphi_c, &
12378 sphi_d, &
12379 primitives, &
12380 buffer1, buffer2)
12381 END SELECT
12382 CASE (3)
12383 SELECT CASE (n_d)
12384 CASE (0)
12385#if __MAX_CONTR > 4 || __MAX_CONTR == 4
12386 CALL contract_ggfs(work, &
12387 nl_a, nl_b, nl_c, nl_d, &
12388 sphi_a, sphi_b, sphi_c, sphi_d, &
12389 primitives, &
12390 buffer1, buffer2)
12391#else
12392 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
12393 work, nl_a, nl_b, nl_c, nl_d, &
12394 sphi_a, &
12395 sphi_b, &
12396 sphi_c, &
12397 sphi_d, &
12398 primitives, &
12399 buffer1, buffer2)
12400#endif
12401 CASE (1)
12402#if __MAX_CONTR > 4 || __MAX_CONTR == 4
12403 CALL contract_ggfp(work, &
12404 nl_a, nl_b, nl_c, nl_d, &
12405 sphi_a, sphi_b, sphi_c, sphi_d, &
12406 primitives, &
12407 buffer1, buffer2)
12408#else
12409 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
12410 work, nl_a, nl_b, nl_c, nl_d, &
12411 sphi_a, &
12412 sphi_b, &
12413 sphi_c, &
12414 sphi_d, &
12415 primitives, &
12416 buffer1, buffer2)
12417#endif
12418 CASE (2)
12419#if __MAX_CONTR > 4 || __MAX_CONTR == 4
12420 CALL contract_ggfd(work, &
12421 nl_a, nl_b, nl_c, nl_d, &
12422 sphi_a, sphi_b, sphi_c, sphi_d, &
12423 primitives, &
12424 buffer1, buffer2)
12425#else
12426 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
12427 work, nl_a, nl_b, nl_c, nl_d, &
12428 sphi_a, &
12429 sphi_b, &
12430 sphi_c, &
12431 sphi_d, &
12432 primitives, &
12433 buffer1, buffer2)
12434#endif
12435 CASE (3)
12436#if __MAX_CONTR > 4 || __MAX_CONTR == 4
12437 CALL contract_ggff(work, &
12438 nl_a, nl_b, nl_c, nl_d, &
12439 sphi_a, sphi_b, sphi_c, sphi_d, &
12440 primitives, &
12441 buffer1, buffer2)
12442#else
12443 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
12444 work, nl_a, nl_b, nl_c, nl_d, &
12445 sphi_a, &
12446 sphi_b, &
12447 sphi_c, &
12448 sphi_d, &
12449 primitives, &
12450 buffer1, buffer2)
12451#endif
12452 CASE (4)
12453#if __MAX_CONTR > 4 || __MAX_CONTR == 4
12454 CALL contract_ggfg(work, &
12455 nl_a, nl_b, nl_c, nl_d, &
12456 sphi_a, sphi_b, sphi_c, sphi_d, &
12457 primitives, &
12458 buffer1, buffer2)
12459#else
12460 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
12461 work, nl_a, nl_b, nl_c, nl_d, &
12462 sphi_a, &
12463 sphi_b, &
12464 sphi_c, &
12465 sphi_d, &
12466 primitives, &
12467 buffer1, buffer2)
12468#endif
12469 CASE DEFAULT
12470 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
12471 work, nl_a, nl_b, nl_c, nl_d, &
12472 sphi_a, &
12473 sphi_b, &
12474 sphi_c, &
12475 sphi_d, &
12476 primitives, &
12477 buffer1, buffer2)
12478 END SELECT
12479 CASE (4)
12480 SELECT CASE (n_d)
12481 CASE (0)
12482#if __MAX_CONTR > 4 || __MAX_CONTR == 4
12483 CALL contract_gggs(work, &
12484 nl_a, nl_b, nl_c, nl_d, &
12485 sphi_a, sphi_b, sphi_c, sphi_d, &
12486 primitives, &
12487 buffer1, buffer2)
12488#else
12489 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
12490 work, nl_a, nl_b, nl_c, nl_d, &
12491 sphi_a, &
12492 sphi_b, &
12493 sphi_c, &
12494 sphi_d, &
12495 primitives, &
12496 buffer1, buffer2)
12497#endif
12498 CASE (1)
12499#if __MAX_CONTR > 4 || __MAX_CONTR == 4
12500 CALL contract_gggp(work, &
12501 nl_a, nl_b, nl_c, nl_d, &
12502 sphi_a, sphi_b, sphi_c, sphi_d, &
12503 primitives, &
12504 buffer1, buffer2)
12505#else
12506 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
12507 work, nl_a, nl_b, nl_c, nl_d, &
12508 sphi_a, &
12509 sphi_b, &
12510 sphi_c, &
12511 sphi_d, &
12512 primitives, &
12513 buffer1, buffer2)
12514#endif
12515 CASE (2)
12516#if __MAX_CONTR > 4 || __MAX_CONTR == 4
12517 CALL contract_gggd(work, &
12518 nl_a, nl_b, nl_c, nl_d, &
12519 sphi_a, sphi_b, sphi_c, sphi_d, &
12520 primitives, &
12521 buffer1, buffer2)
12522#else
12523 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
12524 work, nl_a, nl_b, nl_c, nl_d, &
12525 sphi_a, &
12526 sphi_b, &
12527 sphi_c, &
12528 sphi_d, &
12529 primitives, &
12530 buffer1, buffer2)
12531#endif
12532 CASE (3)
12533#if __MAX_CONTR > 4 || __MAX_CONTR == 4
12534 CALL contract_gggf(work, &
12535 nl_a, nl_b, nl_c, nl_d, &
12536 sphi_a, sphi_b, sphi_c, sphi_d, &
12537 primitives, &
12538 buffer1, buffer2)
12539#else
12540 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
12541 work, nl_a, nl_b, nl_c, nl_d, &
12542 sphi_a, &
12543 sphi_b, &
12544 sphi_c, &
12545 sphi_d, &
12546 primitives, &
12547 buffer1, buffer2)
12548#endif
12549 CASE (4)
12550#if __MAX_CONTR > 4 || __MAX_CONTR == 4
12551 CALL contract_gggg(work, &
12552 nl_a, nl_b, nl_c, nl_d, &
12553 sphi_a, sphi_b, sphi_c, sphi_d, &
12554 primitives, &
12555 buffer1, buffer2)
12556#else
12557 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
12558 work, nl_a, nl_b, nl_c, nl_d, &
12559 sphi_a, &
12560 sphi_b, &
12561 sphi_c, &
12562 sphi_d, &
12563 primitives, &
12564 buffer1, buffer2)
12565#endif
12566 CASE DEFAULT
12567 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
12568 work, nl_a, nl_b, nl_c, nl_d, &
12569 sphi_a, &
12570 sphi_b, &
12571 sphi_c, &
12572 sphi_d, &
12573 primitives, &
12574 buffer1, buffer2)
12575 END SELECT
12576 CASE DEFAULT
12577 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
12578 work, nl_a, nl_b, nl_c, nl_d, &
12579 sphi_a, &
12580 sphi_b, &
12581 sphi_c, &
12582 sphi_d, &
12583 primitives, &
12584 buffer1, buffer2)
12585 END SELECT
12586 CASE DEFAULT
12587 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
12588 work, nl_a, nl_b, nl_c, nl_d, &
12589 sphi_a, &
12590 sphi_b, &
12591 sphi_c, &
12592 sphi_d, &
12593 primitives, &
12594 buffer1, buffer2)
12595 END SELECT
12596 CASE DEFAULT
12597 CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
12598 work, nl_a, nl_b, nl_c, nl_d, &
12599 sphi_a, &
12600 sphi_b, &
12601 sphi_c, &
12602 sphi_d, &
12603 primitives, &
12604 buffer1, buffer2)
12605 END SELECT
12606#endif
12607 END SUBROUTINE contract
12608#if defined (__LIBINT)
12609
12610#if __MAX_CONTR > 0 || __MAX_CONTR == 0
12611! **************************************************************************************************
12612!> \brief ...
12613!> \param work ...
12614!> \param nl_a ...
12615!> \param nl_b ...
12616!> \param nl_c ...
12617!> \param nl_d ...
12618!> \param sphi_a ...
12619!> \param sphi_b ...
12620!> \param sphi_c ...
12621!> \param sphi_d ...
12622!> \param primitives ...
12623!> \param buffer1 ...
12624!> \param buffer2 ...
12625! **************************************************************************************************
12626 SUBROUTINE contract_ssss(work, &
12627 nl_a, nl_b, nl_c, nl_d, &
12628 sphi_a, sphi_b, sphi_c, sphi_d, &
12629 primitives, &
12630 buffer1, buffer2)
12631
12632 REAL(dp), DIMENSION(1*1*1*1), INTENT(IN) :: work
12633 INTEGER :: nl_a, nl_b, nl_c, nl_d
12634 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
12635 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
12636 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
12637 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
12638 REAL(dp), &
12639 DIMENSION(1*nl_a, 1*nl_b, 1*nl_c, 1*nl_d) :: primitives
12640 REAL(dp), DIMENSION(1*1*1*1) :: buffer1, buffer2
12641
12642 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
12643 kmax, s_offset_a1, s_offset_b1, &
12644 s_offset_c1, s_offset_d1
12645
12646 s_offset_a1 = 0
12647 DO ia = 1, nl_a
12648 s_offset_b1 = 0
12649 DO ib = 1, nl_b
12650 s_offset_c1 = 0
12651 DO ic = 1, nl_c
12652 s_offset_d1 = 0
12653 DO id = 1, nl_d
12654
12655 buffer1 = 0.0_dp
12656 imax = 1*1*1
12657 kmax = 1
12658 DO i = 1, imax
12659 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
12660 END DO
12661
12662 buffer2 = 0.0_dp
12663 imax = 1*1*1
12664 kmax = 1
12665 DO i = 1, imax
12666 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
12667 END DO
12668
12669 buffer1 = 0.0_dp
12670 imax = 1*1*1
12671 kmax = 1
12672 DO i = 1, imax
12673 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
12674 END DO
12675
12676 imax = 1*1*1
12677 kmax = 1
12678 i = 0
12679 DO i1 = 1, 1
12680 DO i2 = 1, 1
12681 DO i3 = 1, 1
12682 i = i + 1
12683 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
12684 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
12685 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
12686 END DO
12687 END DO
12688 END DO
12689 s_offset_d1 = s_offset_d1 + 1
12690 END DO
12691 s_offset_c1 = s_offset_c1 + 1
12692 END DO
12693 s_offset_b1 = s_offset_b1 + 1
12694 END DO
12695 s_offset_a1 = s_offset_a1 + 1
12696 END DO
12697 END SUBROUTINE contract_ssss
12698#endif
12699#if __MAX_CONTR > 1 || __MAX_CONTR == 1
12700! **************************************************************************************************
12701!> \brief ...
12702!> \param work ...
12703!> \param nl_a ...
12704!> \param nl_b ...
12705!> \param nl_c ...
12706!> \param nl_d ...
12707!> \param sphi_a ...
12708!> \param sphi_b ...
12709!> \param sphi_c ...
12710!> \param sphi_d ...
12711!> \param primitives ...
12712!> \param buffer1 ...
12713!> \param buffer2 ...
12714! **************************************************************************************************
12715 SUBROUTINE contract_sssp(work, &
12716 nl_a, nl_b, nl_c, nl_d, &
12717 sphi_a, sphi_b, sphi_c, sphi_d, &
12718 primitives, &
12719 buffer1, buffer2)
12720 REAL(dp), DIMENSION(1*1*1*3), INTENT(IN) :: work
12721 INTEGER :: nl_a, nl_b, nl_c, nl_d
12722 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
12723 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
12724 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
12725 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
12726 REAL(dp), &
12727 DIMENSION(1*nl_a, 1*nl_b, 1*nl_c, 3*nl_d) :: primitives
12728 REAL(dp), DIMENSION(1*1*1*3) :: buffer1, buffer2
12729
12730 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
12731 kmax, s_offset_a1, s_offset_b1, &
12732 s_offset_c1, s_offset_d1
12733
12734 s_offset_a1 = 0
12735 DO ia = 1, nl_a
12736 s_offset_b1 = 0
12737 DO ib = 1, nl_b
12738 s_offset_c1 = 0
12739 DO ic = 1, nl_c
12740 s_offset_d1 = 0
12741 DO id = 1, nl_d
12742
12743 buffer1 = 0.0_dp
12744 imax = 1*1*3
12745 kmax = 1
12746 DO i = 1, imax
12747 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
12748 END DO
12749
12750 buffer2 = 0.0_dp
12751 imax = 1*1*3
12752 kmax = 1
12753 DO i = 1, imax
12754 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
12755 END DO
12756
12757 buffer1 = 0.0_dp
12758 imax = 1*1*3
12759 kmax = 1
12760 DO i = 1, imax
12761 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
12762 END DO
12763
12764 imax = 1*1*1
12765 kmax = 3
12766 i = 0
12767 DO i1 = 1, 1
12768 DO i2 = 1, 1
12769 DO i3 = 1, 1
12770 i = i + 1
12771 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
12772 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
12773 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
12774 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
12775 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
12776 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
12777 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
12778 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
12779 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
12780 END DO
12781 END DO
12782 END DO
12783 s_offset_d1 = s_offset_d1 + 3
12784 END DO
12785 s_offset_c1 = s_offset_c1 + 1
12786 END DO
12787 s_offset_b1 = s_offset_b1 + 1
12788 END DO
12789 s_offset_a1 = s_offset_a1 + 1
12790 END DO
12791 END SUBROUTINE contract_sssp
12792#endif
12793#if __MAX_CONTR > 2 || __MAX_CONTR == 2
12794! **************************************************************************************************
12795!> \brief ...
12796!> \param work ...
12797!> \param nl_a ...
12798!> \param nl_b ...
12799!> \param nl_c ...
12800!> \param nl_d ...
12801!> \param sphi_a ...
12802!> \param sphi_b ...
12803!> \param sphi_c ...
12804!> \param sphi_d ...
12805!> \param primitives ...
12806!> \param buffer1 ...
12807!> \param buffer2 ...
12808! **************************************************************************************************
12809 SUBROUTINE contract_sssd(work, &
12810 nl_a, nl_b, nl_c, nl_d, &
12811 sphi_a, sphi_b, sphi_c, sphi_d, &
12812 primitives, &
12813 buffer1, buffer2)
12814 REAL(dp), DIMENSION(1*1*1*6), INTENT(IN) :: work
12815 INTEGER :: nl_a, nl_b, nl_c, nl_d
12816 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
12817 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
12818 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
12819 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
12820 REAL(dp), &
12821 DIMENSION(1*nl_a, 1*nl_b, 1*nl_c, 5*nl_d) :: primitives
12822 REAL(dp), DIMENSION(1*1*1*6) :: buffer1, buffer2
12823
12824 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
12825 kmax, s_offset_a1, s_offset_b1, &
12826 s_offset_c1, s_offset_d1
12827
12828 s_offset_a1 = 0
12829 DO ia = 1, nl_a
12830 s_offset_b1 = 0
12831 DO ib = 1, nl_b
12832 s_offset_c1 = 0
12833 DO ic = 1, nl_c
12834 s_offset_d1 = 0
12835 DO id = 1, nl_d
12836 buffer1 = 0.0_dp
12837 imax = 1*1*6
12838 kmax = 1
12839 DO i = 1, imax
12840 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
12841 END DO
12842 buffer2 = 0.0_dp
12843 imax = 1*1*6
12844 kmax = 1
12845 DO i = 1, imax
12846 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
12847 END DO
12848 buffer1 = 0.0_dp
12849 imax = 1*1*6
12850 kmax = 1
12851 DO i = 1, imax
12852 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
12853 END DO
12854
12855 imax = 1*1*1
12856 kmax = 6
12857 i = 0
12858 DO i1 = 1, 1
12859 DO i2 = 1, 1
12860 DO i3 = 1, 1
12861 i = i + 1
12862 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
12863 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
12864 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
12865 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
12866 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
12867 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
12868 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
12869 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
12870 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
12871 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
12872 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
12873 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
12874 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
12875 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
12876 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
12877 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
12878 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
12879 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
12880 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
12881 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
12882 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
12883 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
12884 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
12885 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
12886 END DO
12887 END DO
12888 END DO
12889 s_offset_d1 = s_offset_d1 + 5
12890 END DO
12891 s_offset_c1 = s_offset_c1 + 1
12892 END DO
12893 s_offset_b1 = s_offset_b1 + 1
12894 END DO
12895 s_offset_a1 = s_offset_a1 + 1
12896 END DO
12897 END SUBROUTINE contract_sssd
12898#endif
12899#if __MAX_CONTR > 3 || __MAX_CONTR == 3
12900! **************************************************************************************************
12901!> \brief ...
12902!> \param work ...
12903!> \param nl_a ...
12904!> \param nl_b ...
12905!> \param nl_c ...
12906!> \param nl_d ...
12907!> \param sphi_a ...
12908!> \param sphi_b ...
12909!> \param sphi_c ...
12910!> \param sphi_d ...
12911!> \param primitives ...
12912!> \param buffer1 ...
12913!> \param buffer2 ...
12914! **************************************************************************************************
12915 SUBROUTINE contract_sssf(work, &
12916 nl_a, nl_b, nl_c, nl_d, &
12917 sphi_a, sphi_b, sphi_c, sphi_d, &
12918 primitives, &
12919 buffer1, buffer2)
12920 REAL(dp), DIMENSION(1*1*1*10), INTENT(IN) :: work
12921 INTEGER :: nl_a, nl_b, nl_c, nl_d
12922 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
12923 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
12924 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
12925 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
12926 REAL(dp), &
12927 DIMENSION(1*nl_a, 1*nl_b, 1*nl_c, 7*nl_d) :: primitives
12928 REAL(dp), DIMENSION(1*1*1*10) :: buffer1, buffer2
12929
12930 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
12931 kmax, s_offset_a1, s_offset_b1, &
12932 s_offset_c1, s_offset_d1
12933
12934 s_offset_a1 = 0
12935 DO ia = 1, nl_a
12936 s_offset_b1 = 0
12937 DO ib = 1, nl_b
12938 s_offset_c1 = 0
12939 DO ic = 1, nl_c
12940 s_offset_d1 = 0
12941 DO id = 1, nl_d
12942 buffer1 = 0.0_dp
12943 imax = 1*1*10
12944 kmax = 1
12945 DO i = 1, imax
12946 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
12947 END DO
12948 buffer2 = 0.0_dp
12949 imax = 1*1*10
12950 kmax = 1
12951 DO i = 1, imax
12952 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
12953 END DO
12954 buffer1 = 0.0_dp
12955 imax = 1*1*10
12956 kmax = 1
12957 DO i = 1, imax
12958 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
12959 END DO
12960 imax = 1*1*1
12961 kmax = 10
12962 i = 0
12963 DO i1 = 1, 1
12964 DO i2 = 1, 1
12965 DO i3 = 1, 1
12966 i = i + 1
12967 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
12968 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
12969 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
12970 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
12971 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
12972 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
12973 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
12974 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
12975 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
12976 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
12977 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
12978 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
12979 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
12980 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
12981 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
12982 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
12983 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
12984 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
12985 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
12986 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
12987 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
12988 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
12989 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
12990 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
12991 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
12992 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
12993 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
12994 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
12995 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
12996 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
12997 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
12998 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
12999 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
13000 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
13001 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
13002 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
13003 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
13004 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
13005 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
13006 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
13007 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
13008 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
13009 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
13010 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
13011 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
13012 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
13013 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
13014 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
13015 END DO
13016 END DO
13017 END DO
13018 s_offset_d1 = s_offset_d1 + 7
13019 END DO
13020 s_offset_c1 = s_offset_c1 + 1
13021 END DO
13022 s_offset_b1 = s_offset_b1 + 1
13023 END DO
13024 s_offset_a1 = s_offset_a1 + 1
13025 END DO
13026 END SUBROUTINE contract_sssf
13027#endif
13028#if __MAX_CONTR > 4 || __MAX_CONTR == 4
13029! **************************************************************************************************
13030!> \brief ...
13031!> \param work ...
13032!> \param nl_a ...
13033!> \param nl_b ...
13034!> \param nl_c ...
13035!> \param nl_d ...
13036!> \param sphi_a ...
13037!> \param sphi_b ...
13038!> \param sphi_c ...
13039!> \param sphi_d ...
13040!> \param primitives ...
13041!> \param buffer1 ...
13042!> \param buffer2 ...
13043! **************************************************************************************************
13044 SUBROUTINE contract_sssg(work, &
13045 nl_a, nl_b, nl_c, nl_d, &
13046 sphi_a, sphi_b, sphi_c, sphi_d, &
13047 primitives, &
13048 buffer1, buffer2)
13049 REAL(dp), DIMENSION(1*1*1*15), INTENT(IN) :: work
13050 INTEGER :: nl_a, nl_b, nl_c, nl_d
13051 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
13052 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
13053 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
13054 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
13055 REAL(dp), &
13056 DIMENSION(1*nl_a, 1*nl_b, 1*nl_c, 9*nl_d) :: primitives
13057 REAL(dp), DIMENSION(1*1*1*15) :: buffer1, buffer2
13058
13059 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
13060 kmax, s_offset_a1, s_offset_b1, &
13061 s_offset_c1, s_offset_d1
13062
13063 s_offset_a1 = 0
13064 DO ia = 1, nl_a
13065 s_offset_b1 = 0
13066 DO ib = 1, nl_b
13067 s_offset_c1 = 0
13068 DO ic = 1, nl_c
13069 s_offset_d1 = 0
13070 DO id = 1, nl_d
13071 buffer1 = 0.0_dp
13072 imax = 1*1*15
13073 kmax = 1
13074 DO i = 1, imax
13075 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
13076 END DO
13077 buffer2 = 0.0_dp
13078 imax = 1*1*15
13079 kmax = 1
13080 DO i = 1, imax
13081 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
13082 END DO
13083 buffer1 = 0.0_dp
13084 imax = 1*1*15
13085 kmax = 1
13086 DO i = 1, imax
13087 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
13088 END DO
13089 imax = 1*1*1
13090 kmax = 15
13091 i = 0
13092 DO i1 = 1, 1
13093 DO i2 = 1, 1
13094 DO i3 = 1, 1
13095 i = i + 1
13096 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
13097 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
13098 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
13099 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
13100 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
13101 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
13102 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
13103 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
13104 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
13105 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
13106 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
13107 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
13108 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
13109 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
13110 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
13111 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
13112 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
13113 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
13114 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
13115 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
13116 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
13117 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
13118 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
13119 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
13120 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
13121 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
13122 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
13123 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
13124 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
13125 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
13126 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
13127 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
13128 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
13129 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
13130 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
13131 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
13132 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
13133 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
13134 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
13135 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
13136 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
13137 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
13138 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
13139 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
13140 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
13141 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
13142 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
13143 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
13144 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
13145 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
13146 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
13147 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
13148 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
13149 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
13150 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
13151 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
13152 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
13153 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
13154 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
13155 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
13156 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
13157 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
13158 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
13159 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
13160 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
13161 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
13162 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
13163 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
13164 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
13165 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
13166 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
13167 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
13168 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
13169 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
13170 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
13171 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
13172 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
13173 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
13174 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
13175 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
13176 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
13177 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
13178 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
13179 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
13180 END DO
13181 END DO
13182 END DO
13183 s_offset_d1 = s_offset_d1 + 9
13184 END DO
13185 s_offset_c1 = s_offset_c1 + 1
13186 END DO
13187 s_offset_b1 = s_offset_b1 + 1
13188 END DO
13189 s_offset_a1 = s_offset_a1 + 1
13190 END DO
13191 END SUBROUTINE contract_sssg
13192#endif
13193#if __MAX_CONTR > 1 || __MAX_CONTR == 1
13194! **************************************************************************************************
13195!> \brief ...
13196!> \param work ...
13197!> \param nl_a ...
13198!> \param nl_b ...
13199!> \param nl_c ...
13200!> \param nl_d ...
13201!> \param sphi_a ...
13202!> \param sphi_b ...
13203!> \param sphi_c ...
13204!> \param sphi_d ...
13205!> \param primitives ...
13206!> \param buffer1 ...
13207!> \param buffer2 ...
13208! **************************************************************************************************
13209 SUBROUTINE contract_ssps(work, &
13210 nl_a, nl_b, nl_c, nl_d, &
13211 sphi_a, sphi_b, sphi_c, sphi_d, &
13212 primitives, &
13213 buffer1, buffer2)
13214 REAL(dp), DIMENSION(1*1*3*1), INTENT(IN) :: work
13215 INTEGER :: nl_a, nl_b, nl_c, nl_d
13216 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
13217 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
13218 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
13219 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
13220 REAL(dp), &
13221 DIMENSION(1*nl_a, 1*nl_b, 3*nl_c, 1*nl_d) :: primitives
13222 REAL(dp), DIMENSION(1*1*3*1) :: buffer1, buffer2
13223
13224 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
13225 kmax, s_offset_a1, s_offset_b1, &
13226 s_offset_c1, s_offset_d1
13227
13228 s_offset_a1 = 0
13229 DO ia = 1, nl_a
13230 s_offset_b1 = 0
13231 DO ib = 1, nl_b
13232 s_offset_c1 = 0
13233 DO ic = 1, nl_c
13234 s_offset_d1 = 0
13235 DO id = 1, nl_d
13236 buffer1 = 0.0_dp
13237 imax = 1*3*1
13238 kmax = 1
13239 DO i = 1, imax
13240 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
13241 END DO
13242 buffer2 = 0.0_dp
13243 imax = 1*3*1
13244 kmax = 1
13245 DO i = 1, imax
13246 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
13247 END DO
13248 buffer1 = 0.0_dp
13249 imax = 1*1*1
13250 kmax = 3
13251 DO i = 1, imax
13252 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
13253 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
13254 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
13255 END DO
13256 imax = 1*1*3
13257 kmax = 1
13258 i = 0
13259 DO i1 = 1, 3
13260 DO i2 = 1, 1
13261 DO i3 = 1, 1
13262 i = i + 1
13263 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
13264 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
13265 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
13266 END DO
13267 END DO
13268 END DO
13269 s_offset_d1 = s_offset_d1 + 1
13270 END DO
13271 s_offset_c1 = s_offset_c1 + 3
13272 END DO
13273 s_offset_b1 = s_offset_b1 + 1
13274 END DO
13275 s_offset_a1 = s_offset_a1 + 1
13276 END DO
13277 END SUBROUTINE contract_ssps
13278#endif
13279#if __MAX_CONTR > 1 || __MAX_CONTR == 1
13280! **************************************************************************************************
13281!> \brief ...
13282!> \param work ...
13283!> \param nl_a ...
13284!> \param nl_b ...
13285!> \param nl_c ...
13286!> \param nl_d ...
13287!> \param sphi_a ...
13288!> \param sphi_b ...
13289!> \param sphi_c ...
13290!> \param sphi_d ...
13291!> \param primitives ...
13292!> \param buffer1 ...
13293!> \param buffer2 ...
13294! **************************************************************************************************
13295 SUBROUTINE contract_sspp(work, &
13296 nl_a, nl_b, nl_c, nl_d, &
13297 sphi_a, sphi_b, sphi_c, sphi_d, &
13298 primitives, &
13299 buffer1, buffer2)
13300 REAL(dp), DIMENSION(1*1*3*3), INTENT(IN) :: work
13301 INTEGER :: nl_a, nl_b, nl_c, nl_d
13302 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
13303 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
13304 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
13305 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
13306 REAL(dp), &
13307 DIMENSION(1*nl_a, 1*nl_b, 3*nl_c, 3*nl_d) :: primitives
13308 REAL(dp), DIMENSION(1*1*3*3) :: buffer1, buffer2
13309
13310 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
13311 kmax, s_offset_a1, s_offset_b1, &
13312 s_offset_c1, s_offset_d1
13313
13314 s_offset_a1 = 0
13315 DO ia = 1, nl_a
13316 s_offset_b1 = 0
13317 DO ib = 1, nl_b
13318 s_offset_c1 = 0
13319 DO ic = 1, nl_c
13320 s_offset_d1 = 0
13321 DO id = 1, nl_d
13322 buffer1 = 0.0_dp
13323 imax = 1*3*3
13324 kmax = 1
13325 DO i = 1, imax
13326 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
13327 END DO
13328 buffer2 = 0.0_dp
13329 imax = 1*3*3
13330 kmax = 1
13331 DO i = 1, imax
13332 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
13333 END DO
13334 buffer1 = 0.0_dp
13335 imax = 1*1*3
13336 kmax = 3
13337 DO i = 1, imax
13338 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
13339 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
13340 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
13341 END DO
13342 imax = 1*1*3
13343 kmax = 3
13344 i = 0
13345 DO i1 = 1, 3
13346 DO i2 = 1, 1
13347 DO i3 = 1, 1
13348 i = i + 1
13349 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
13350 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
13351 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
13352 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
13353 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
13354 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
13355 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
13356 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
13357 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
13358 END DO
13359 END DO
13360 END DO
13361 s_offset_d1 = s_offset_d1 + 3
13362 END DO
13363 s_offset_c1 = s_offset_c1 + 3
13364 END DO
13365 s_offset_b1 = s_offset_b1 + 1
13366 END DO
13367 s_offset_a1 = s_offset_a1 + 1
13368 END DO
13369 END SUBROUTINE contract_sspp
13370#endif
13371#if __MAX_CONTR > 2 || __MAX_CONTR == 2
13372! **************************************************************************************************
13373!> \brief ...
13374!> \param work ...
13375!> \param nl_a ...
13376!> \param nl_b ...
13377!> \param nl_c ...
13378!> \param nl_d ...
13379!> \param sphi_a ...
13380!> \param sphi_b ...
13381!> \param sphi_c ...
13382!> \param sphi_d ...
13383!> \param primitives ...
13384!> \param buffer1 ...
13385!> \param buffer2 ...
13386! **************************************************************************************************
13387 SUBROUTINE contract_sspd(work, &
13388 nl_a, nl_b, nl_c, nl_d, &
13389 sphi_a, sphi_b, sphi_c, sphi_d, &
13390 primitives, &
13391 buffer1, buffer2)
13392 REAL(dp), DIMENSION(1*1*3*6), INTENT(IN) :: work
13393 INTEGER :: nl_a, nl_b, nl_c, nl_d
13394 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
13395 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
13396 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
13397 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
13398 REAL(dp), &
13399 DIMENSION(1*nl_a, 1*nl_b, 3*nl_c, 5*nl_d) :: primitives
13400 REAL(dp), DIMENSION(1*1*3*6) :: buffer1, buffer2
13401
13402 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
13403 kmax, s_offset_a1, s_offset_b1, &
13404 s_offset_c1, s_offset_d1
13405
13406 s_offset_a1 = 0
13407 DO ia = 1, nl_a
13408 s_offset_b1 = 0
13409 DO ib = 1, nl_b
13410 s_offset_c1 = 0
13411 DO ic = 1, nl_c
13412 s_offset_d1 = 0
13413 DO id = 1, nl_d
13414 buffer1 = 0.0_dp
13415 imax = 1*3*6
13416 kmax = 1
13417 DO i = 1, imax
13418 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
13419 END DO
13420 buffer2 = 0.0_dp
13421 imax = 1*3*6
13422 kmax = 1
13423 DO i = 1, imax
13424 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
13425 END DO
13426 buffer1 = 0.0_dp
13427 imax = 1*1*6
13428 kmax = 3
13429 DO i = 1, imax
13430 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
13431 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
13432 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
13433 END DO
13434 imax = 1*1*3
13435 kmax = 6
13436 i = 0
13437 DO i1 = 1, 3
13438 DO i2 = 1, 1
13439 DO i3 = 1, 1
13440 i = i + 1
13441 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
13442 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
13443 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
13444 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
13445 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
13446 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
13447 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
13448 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
13449 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
13450 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
13451 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
13452 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
13453 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
13454 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
13455 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
13456 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
13457 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
13458 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
13459 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
13460 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
13461 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
13462 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
13463 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
13464 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
13465 END DO
13466 END DO
13467 END DO
13468 s_offset_d1 = s_offset_d1 + 5
13469 END DO
13470 s_offset_c1 = s_offset_c1 + 3
13471 END DO
13472 s_offset_b1 = s_offset_b1 + 1
13473 END DO
13474 s_offset_a1 = s_offset_a1 + 1
13475 END DO
13476 END SUBROUTINE contract_sspd
13477#endif
13478#if __MAX_CONTR > 3 || __MAX_CONTR == 3
13479! **************************************************************************************************
13480!> \brief ...
13481!> \param work ...
13482!> \param nl_a ...
13483!> \param nl_b ...
13484!> \param nl_c ...
13485!> \param nl_d ...
13486!> \param sphi_a ...
13487!> \param sphi_b ...
13488!> \param sphi_c ...
13489!> \param sphi_d ...
13490!> \param primitives ...
13491!> \param buffer1 ...
13492!> \param buffer2 ...
13493! **************************************************************************************************
13494 SUBROUTINE contract_sspf(work, &
13495 nl_a, nl_b, nl_c, nl_d, &
13496 sphi_a, sphi_b, sphi_c, sphi_d, &
13497 primitives, &
13498 buffer1, buffer2)
13499 REAL(dp), DIMENSION(1*1*3*10), INTENT(IN) :: work
13500 INTEGER :: nl_a, nl_b, nl_c, nl_d
13501 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
13502 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
13503 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
13504 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
13505 REAL(dp), &
13506 DIMENSION(1*nl_a, 1*nl_b, 3*nl_c, 7*nl_d) :: primitives
13507 REAL(dp), DIMENSION(1*1*3*10) :: buffer1, buffer2
13508
13509 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
13510 kmax, s_offset_a1, s_offset_b1, &
13511 s_offset_c1, s_offset_d1
13512
13513 s_offset_a1 = 0
13514 DO ia = 1, nl_a
13515 s_offset_b1 = 0
13516 DO ib = 1, nl_b
13517 s_offset_c1 = 0
13518 DO ic = 1, nl_c
13519 s_offset_d1 = 0
13520 DO id = 1, nl_d
13521 buffer1 = 0.0_dp
13522 imax = 1*3*10
13523 kmax = 1
13524 DO i = 1, imax
13525 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
13526 END DO
13527 buffer2 = 0.0_dp
13528 imax = 1*3*10
13529 kmax = 1
13530 DO i = 1, imax
13531 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
13532 END DO
13533 buffer1 = 0.0_dp
13534 imax = 1*1*10
13535 kmax = 3
13536 DO i = 1, imax
13537 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
13538 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
13539 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
13540 END DO
13541 imax = 1*1*3
13542 kmax = 10
13543 i = 0
13544 DO i1 = 1, 3
13545 DO i2 = 1, 1
13546 DO i3 = 1, 1
13547 i = i + 1
13548 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
13549 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
13550 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
13551 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
13552 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
13553 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
13554 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
13555 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
13556 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
13557 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
13558 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
13559 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
13560 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
13561 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
13562 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
13563 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
13564 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
13565 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
13566 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
13567 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
13568 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
13569 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
13570 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
13571 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
13572 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
13573 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
13574 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
13575 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
13576 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
13577 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
13578 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
13579 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
13580 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
13581 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
13582 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
13583 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
13584 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
13585 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
13586 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
13587 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
13588 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
13589 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
13590 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
13591 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
13592 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
13593 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
13594 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
13595 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
13596 END DO
13597 END DO
13598 END DO
13599 s_offset_d1 = s_offset_d1 + 7
13600 END DO
13601 s_offset_c1 = s_offset_c1 + 3
13602 END DO
13603 s_offset_b1 = s_offset_b1 + 1
13604 END DO
13605 s_offset_a1 = s_offset_a1 + 1
13606 END DO
13607 END SUBROUTINE contract_sspf
13608#endif
13609#if __MAX_CONTR > 4 || __MAX_CONTR == 4
13610! **************************************************************************************************
13611!> \brief ...
13612!> \param work ...
13613!> \param nl_a ...
13614!> \param nl_b ...
13615!> \param nl_c ...
13616!> \param nl_d ...
13617!> \param sphi_a ...
13618!> \param sphi_b ...
13619!> \param sphi_c ...
13620!> \param sphi_d ...
13621!> \param primitives ...
13622!> \param buffer1 ...
13623!> \param buffer2 ...
13624! **************************************************************************************************
13625 SUBROUTINE contract_sspg(work, &
13626 nl_a, nl_b, nl_c, nl_d, &
13627 sphi_a, sphi_b, sphi_c, sphi_d, &
13628 primitives, &
13629 buffer1, buffer2)
13630 REAL(dp), DIMENSION(1*1*3*15), INTENT(IN) :: work
13631 INTEGER :: nl_a, nl_b, nl_c, nl_d
13632 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
13633 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
13634 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
13635 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
13636 REAL(dp), &
13637 DIMENSION(1*nl_a, 1*nl_b, 3*nl_c, 9*nl_d) :: primitives
13638 REAL(dp), DIMENSION(1*1*3*15) :: buffer1, buffer2
13639
13640 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
13641 kmax, s_offset_a1, s_offset_b1, &
13642 s_offset_c1, s_offset_d1
13643
13644 s_offset_a1 = 0
13645 DO ia = 1, nl_a
13646 s_offset_b1 = 0
13647 DO ib = 1, nl_b
13648 s_offset_c1 = 0
13649 DO ic = 1, nl_c
13650 s_offset_d1 = 0
13651 DO id = 1, nl_d
13652 buffer1 = 0.0_dp
13653 imax = 1*3*15
13654 kmax = 1
13655 DO i = 1, imax
13656 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
13657 END DO
13658 buffer2 = 0.0_dp
13659 imax = 1*3*15
13660 kmax = 1
13661 DO i = 1, imax
13662 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
13663 END DO
13664 buffer1 = 0.0_dp
13665 imax = 1*1*15
13666 kmax = 3
13667 DO i = 1, imax
13668 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
13669 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
13670 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
13671 END DO
13672 imax = 1*1*3
13673 kmax = 15
13674 i = 0
13675 DO i1 = 1, 3
13676 DO i2 = 1, 1
13677 DO i3 = 1, 1
13678 i = i + 1
13679 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
13680 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
13681 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
13682 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
13683 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
13684 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
13685 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
13686 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
13687 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
13688 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
13689 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
13690 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
13691 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
13692 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
13693 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
13694 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
13695 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
13696 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
13697 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
13698 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
13699 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
13700 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
13701 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
13702 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
13703 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
13704 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
13705 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
13706 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
13707 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
13708 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
13709 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
13710 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
13711 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
13712 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
13713 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
13714 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
13715 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
13716 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
13717 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
13718 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
13719 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
13720 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
13721 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
13722 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
13723 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
13724 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
13725 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
13726 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
13727 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
13728 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
13729 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
13730 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
13731 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
13732 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
13733 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
13734 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
13735 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
13736 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
13737 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
13738 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
13739 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
13740 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
13741 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
13742 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
13743 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
13744 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
13745 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
13746 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
13747 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
13748 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
13749 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
13750 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
13751 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
13752 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
13753 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
13754 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
13755 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
13756 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
13757 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
13758 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
13759 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
13760 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
13761 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
13762 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
13763 END DO
13764 END DO
13765 END DO
13766 s_offset_d1 = s_offset_d1 + 9
13767 END DO
13768 s_offset_c1 = s_offset_c1 + 3
13769 END DO
13770 s_offset_b1 = s_offset_b1 + 1
13771 END DO
13772 s_offset_a1 = s_offset_a1 + 1
13773 END DO
13774 END SUBROUTINE contract_sspg
13775#endif
13776#if __MAX_CONTR > 2 || __MAX_CONTR == 2
13777! **************************************************************************************************
13778!> \brief ...
13779!> \param work ...
13780!> \param nl_a ...
13781!> \param nl_b ...
13782!> \param nl_c ...
13783!> \param nl_d ...
13784!> \param sphi_a ...
13785!> \param sphi_b ...
13786!> \param sphi_c ...
13787!> \param sphi_d ...
13788!> \param primitives ...
13789!> \param buffer1 ...
13790!> \param buffer2 ...
13791! **************************************************************************************************
13792 SUBROUTINE contract_ssds(work, &
13793 nl_a, nl_b, nl_c, nl_d, &
13794 sphi_a, sphi_b, sphi_c, sphi_d, &
13795 primitives, &
13796 buffer1, buffer2)
13797 REAL(dp), DIMENSION(1*1*6*1), INTENT(IN) :: work
13798 INTEGER :: nl_a, nl_b, nl_c, nl_d
13799 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
13800 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
13801 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
13802 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
13803 REAL(dp), &
13804 DIMENSION(1*nl_a, 1*nl_b, 5*nl_c, 1*nl_d) :: primitives
13805 REAL(dp), DIMENSION(1*1*6*1) :: buffer1, buffer2
13806
13807 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
13808 kmax, s_offset_a1, s_offset_b1, &
13809 s_offset_c1, s_offset_d1
13810
13811 s_offset_a1 = 0
13812 DO ia = 1, nl_a
13813 s_offset_b1 = 0
13814 DO ib = 1, nl_b
13815 s_offset_c1 = 0
13816 DO ic = 1, nl_c
13817 s_offset_d1 = 0
13818 DO id = 1, nl_d
13819 buffer1 = 0.0_dp
13820 imax = 1*6*1
13821 kmax = 1
13822 DO i = 1, imax
13823 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
13824 END DO
13825 buffer2 = 0.0_dp
13826 imax = 1*6*1
13827 kmax = 1
13828 DO i = 1, imax
13829 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
13830 END DO
13831 buffer1 = 0.0_dp
13832 imax = 1*1*1
13833 kmax = 6
13834 DO i = 1, imax
13835 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
13836 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
13837 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
13838 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
13839 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
13840 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
13841 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
13842 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
13843 END DO
13844 imax = 1*1*5
13845 kmax = 1
13846 i = 0
13847 DO i1 = 1, 5
13848 DO i2 = 1, 1
13849 DO i3 = 1, 1
13850 i = i + 1
13851 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
13852 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
13853 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
13854 END DO
13855 END DO
13856 END DO
13857 s_offset_d1 = s_offset_d1 + 1
13858 END DO
13859 s_offset_c1 = s_offset_c1 + 5
13860 END DO
13861 s_offset_b1 = s_offset_b1 + 1
13862 END DO
13863 s_offset_a1 = s_offset_a1 + 1
13864 END DO
13865 END SUBROUTINE contract_ssds
13866#endif
13867#if __MAX_CONTR > 2 || __MAX_CONTR == 2
13868! **************************************************************************************************
13869!> \brief ...
13870!> \param work ...
13871!> \param nl_a ...
13872!> \param nl_b ...
13873!> \param nl_c ...
13874!> \param nl_d ...
13875!> \param sphi_a ...
13876!> \param sphi_b ...
13877!> \param sphi_c ...
13878!> \param sphi_d ...
13879!> \param primitives ...
13880!> \param buffer1 ...
13881!> \param buffer2 ...
13882! **************************************************************************************************
13883 SUBROUTINE contract_ssdp(work, &
13884 nl_a, nl_b, nl_c, nl_d, &
13885 sphi_a, sphi_b, sphi_c, sphi_d, &
13886 primitives, &
13887 buffer1, buffer2)
13888 REAL(dp), DIMENSION(1*1*6*3), INTENT(IN) :: work
13889 INTEGER :: nl_a, nl_b, nl_c, nl_d
13890 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
13891 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
13892 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
13893 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
13894 REAL(dp), &
13895 DIMENSION(1*nl_a, 1*nl_b, 5*nl_c, 3*nl_d) :: primitives
13896 REAL(dp), DIMENSION(1*1*6*3) :: buffer1, buffer2
13897
13898 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
13899 kmax, s_offset_a1, s_offset_b1, &
13900 s_offset_c1, s_offset_d1
13901
13902 s_offset_a1 = 0
13903 DO ia = 1, nl_a
13904 s_offset_b1 = 0
13905 DO ib = 1, nl_b
13906 s_offset_c1 = 0
13907 DO ic = 1, nl_c
13908 s_offset_d1 = 0
13909 DO id = 1, nl_d
13910 buffer1 = 0.0_dp
13911 imax = 1*6*3
13912 kmax = 1
13913 DO i = 1, imax
13914 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
13915 END DO
13916 buffer2 = 0.0_dp
13917 imax = 1*6*3
13918 kmax = 1
13919 DO i = 1, imax
13920 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
13921 END DO
13922 buffer1 = 0.0_dp
13923 imax = 1*1*3
13924 kmax = 6
13925 DO i = 1, imax
13926 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
13927 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
13928 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
13929 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
13930 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
13931 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
13932 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
13933 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
13934 END DO
13935 imax = 1*1*5
13936 kmax = 3
13937 i = 0
13938 DO i1 = 1, 5
13939 DO i2 = 1, 1
13940 DO i3 = 1, 1
13941 i = i + 1
13942 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
13943 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
13944 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
13945 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
13946 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
13947 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
13948 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
13949 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
13950 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
13951 END DO
13952 END DO
13953 END DO
13954 s_offset_d1 = s_offset_d1 + 3
13955 END DO
13956 s_offset_c1 = s_offset_c1 + 5
13957 END DO
13958 s_offset_b1 = s_offset_b1 + 1
13959 END DO
13960 s_offset_a1 = s_offset_a1 + 1
13961 END DO
13962 END SUBROUTINE contract_ssdp
13963#endif
13964#if __MAX_CONTR > 2 || __MAX_CONTR == 2
13965! **************************************************************************************************
13966!> \brief ...
13967!> \param work ...
13968!> \param nl_a ...
13969!> \param nl_b ...
13970!> \param nl_c ...
13971!> \param nl_d ...
13972!> \param sphi_a ...
13973!> \param sphi_b ...
13974!> \param sphi_c ...
13975!> \param sphi_d ...
13976!> \param primitives ...
13977!> \param buffer1 ...
13978!> \param buffer2 ...
13979! **************************************************************************************************
13980 SUBROUTINE contract_ssdd(work, &
13981 nl_a, nl_b, nl_c, nl_d, &
13982 sphi_a, sphi_b, sphi_c, sphi_d, &
13983 primitives, &
13984 buffer1, buffer2)
13985 REAL(dp), DIMENSION(1*1*6*6), INTENT(IN) :: work
13986 INTEGER :: nl_a, nl_b, nl_c, nl_d
13987 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
13988 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
13989 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
13990 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
13991 REAL(dp), &
13992 DIMENSION(1*nl_a, 1*nl_b, 5*nl_c, 5*nl_d) :: primitives
13993 REAL(dp), DIMENSION(1*1*6*6) :: buffer1, buffer2
13994
13995 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
13996 kmax, s_offset_a1, s_offset_b1, &
13997 s_offset_c1, s_offset_d1
13998
13999 s_offset_a1 = 0
14000 DO ia = 1, nl_a
14001 s_offset_b1 = 0
14002 DO ib = 1, nl_b
14003 s_offset_c1 = 0
14004 DO ic = 1, nl_c
14005 s_offset_d1 = 0
14006 DO id = 1, nl_d
14007 buffer1 = 0.0_dp
14008 imax = 1*6*6
14009 kmax = 1
14010 DO i = 1, imax
14011 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
14012 END DO
14013 buffer2 = 0.0_dp
14014 imax = 1*6*6
14015 kmax = 1
14016 DO i = 1, imax
14017 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
14018 END DO
14019 buffer1 = 0.0_dp
14020 imax = 1*1*6
14021 kmax = 6
14022 DO i = 1, imax
14023 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
14024 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
14025 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
14026 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
14027 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
14028 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
14029 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
14030 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
14031 END DO
14032 imax = 1*1*5
14033 kmax = 6
14034 i = 0
14035 DO i1 = 1, 5
14036 DO i2 = 1, 1
14037 DO i3 = 1, 1
14038 i = i + 1
14039 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
14040 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
14041 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
14042 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
14043 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
14044 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
14045 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
14046 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
14047 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
14048 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
14049 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
14050 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
14051 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
14052 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
14053 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
14054 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
14055 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
14056 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
14057 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
14058 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
14059 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
14060 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
14061 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
14062 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
14063 END DO
14064 END DO
14065 END DO
14066 s_offset_d1 = s_offset_d1 + 5
14067 END DO
14068 s_offset_c1 = s_offset_c1 + 5
14069 END DO
14070 s_offset_b1 = s_offset_b1 + 1
14071 END DO
14072 s_offset_a1 = s_offset_a1 + 1
14073 END DO
14074 END SUBROUTINE contract_ssdd
14075#endif
14076#if __MAX_CONTR > 3 || __MAX_CONTR == 3
14077! **************************************************************************************************
14078!> \brief ...
14079!> \param work ...
14080!> \param nl_a ...
14081!> \param nl_b ...
14082!> \param nl_c ...
14083!> \param nl_d ...
14084!> \param sphi_a ...
14085!> \param sphi_b ...
14086!> \param sphi_c ...
14087!> \param sphi_d ...
14088!> \param primitives ...
14089!> \param buffer1 ...
14090!> \param buffer2 ...
14091! **************************************************************************************************
14092 SUBROUTINE contract_ssdf(work, &
14093 nl_a, nl_b, nl_c, nl_d, &
14094 sphi_a, sphi_b, sphi_c, sphi_d, &
14095 primitives, &
14096 buffer1, buffer2)
14097 REAL(dp), DIMENSION(1*1*6*10), INTENT(IN) :: work
14098 INTEGER :: nl_a, nl_b, nl_c, nl_d
14099 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
14100 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
14101 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
14102 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
14103 REAL(dp), &
14104 DIMENSION(1*nl_a, 1*nl_b, 5*nl_c, 7*nl_d) :: primitives
14105 REAL(dp), DIMENSION(1*1*6*10) :: buffer1, buffer2
14106
14107 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
14108 kmax, s_offset_a1, s_offset_b1, &
14109 s_offset_c1, s_offset_d1
14110
14111 s_offset_a1 = 0
14112 DO ia = 1, nl_a
14113 s_offset_b1 = 0
14114 DO ib = 1, nl_b
14115 s_offset_c1 = 0
14116 DO ic = 1, nl_c
14117 s_offset_d1 = 0
14118 DO id = 1, nl_d
14119 buffer1 = 0.0_dp
14120 imax = 1*6*10
14121 kmax = 1
14122 DO i = 1, imax
14123 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
14124 END DO
14125 buffer2 = 0.0_dp
14126 imax = 1*6*10
14127 kmax = 1
14128 DO i = 1, imax
14129 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
14130 END DO
14131 buffer1 = 0.0_dp
14132 imax = 1*1*10
14133 kmax = 6
14134 DO i = 1, imax
14135 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
14136 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
14137 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
14138 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
14139 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
14140 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
14141 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
14142 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
14143 END DO
14144 imax = 1*1*5
14145 kmax = 10
14146 i = 0
14147 DO i1 = 1, 5
14148 DO i2 = 1, 1
14149 DO i3 = 1, 1
14150 i = i + 1
14151 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
14152 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
14153 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
14154 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
14155 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
14156 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
14157 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
14158 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
14159 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
14160 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
14161 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
14162 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
14163 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
14164 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
14165 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
14166 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
14167 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
14168 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
14169 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
14170 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
14171 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
14172 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
14173 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
14174 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
14175 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
14176 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
14177 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
14178 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
14179 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
14180 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
14181 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
14182 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
14183 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
14184 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
14185 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
14186 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
14187 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
14188 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
14189 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
14190 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
14191 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
14192 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
14193 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
14194 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
14195 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
14196 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
14197 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
14198 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
14199 END DO
14200 END DO
14201 END DO
14202 s_offset_d1 = s_offset_d1 + 7
14203 END DO
14204 s_offset_c1 = s_offset_c1 + 5
14205 END DO
14206 s_offset_b1 = s_offset_b1 + 1
14207 END DO
14208 s_offset_a1 = s_offset_a1 + 1
14209 END DO
14210 END SUBROUTINE contract_ssdf
14211#endif
14212#if __MAX_CONTR > 4 || __MAX_CONTR == 4
14213! **************************************************************************************************
14214!> \brief ...
14215!> \param work ...
14216!> \param nl_a ...
14217!> \param nl_b ...
14218!> \param nl_c ...
14219!> \param nl_d ...
14220!> \param sphi_a ...
14221!> \param sphi_b ...
14222!> \param sphi_c ...
14223!> \param sphi_d ...
14224!> \param primitives ...
14225!> \param buffer1 ...
14226!> \param buffer2 ...
14227! **************************************************************************************************
14228 SUBROUTINE contract_ssdg(work, &
14229 nl_a, nl_b, nl_c, nl_d, &
14230 sphi_a, sphi_b, sphi_c, sphi_d, &
14231 primitives, &
14232 buffer1, buffer2)
14233 REAL(dp), DIMENSION(1*1*6*15), INTENT(IN) :: work
14234 INTEGER :: nl_a, nl_b, nl_c, nl_d
14235 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
14236 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
14237 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
14238 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
14239 REAL(dp), &
14240 DIMENSION(1*nl_a, 1*nl_b, 5*nl_c, 9*nl_d) :: primitives
14241 REAL(dp), DIMENSION(1*1*6*15) :: buffer1, buffer2
14242
14243 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
14244 kmax, s_offset_a1, s_offset_b1, &
14245 s_offset_c1, s_offset_d1
14246
14247 s_offset_a1 = 0
14248 DO ia = 1, nl_a
14249 s_offset_b1 = 0
14250 DO ib = 1, nl_b
14251 s_offset_c1 = 0
14252 DO ic = 1, nl_c
14253 s_offset_d1 = 0
14254 DO id = 1, nl_d
14255 buffer1 = 0.0_dp
14256 imax = 1*6*15
14257 kmax = 1
14258 DO i = 1, imax
14259 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
14260 END DO
14261 buffer2 = 0.0_dp
14262 imax = 1*6*15
14263 kmax = 1
14264 DO i = 1, imax
14265 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
14266 END DO
14267 buffer1 = 0.0_dp
14268 imax = 1*1*15
14269 kmax = 6
14270 DO i = 1, imax
14271 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
14272 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
14273 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
14274 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
14275 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
14276 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
14277 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
14278 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
14279 END DO
14280 imax = 1*1*5
14281 kmax = 15
14282 i = 0
14283 DO i1 = 1, 5
14284 DO i2 = 1, 1
14285 DO i3 = 1, 1
14286 i = i + 1
14287 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
14288 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
14289 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
14290 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
14291 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
14292 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
14293 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
14294 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
14295 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
14296 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
14297 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
14298 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
14299 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
14300 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
14301 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
14302 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
14303 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
14304 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
14305 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
14306 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
14307 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
14308 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
14309 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
14310 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
14311 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
14312 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
14313 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
14314 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
14315 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
14316 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
14317 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
14318 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
14319 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
14320 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
14321 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
14322 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
14323 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
14324 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
14325 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
14326 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
14327 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
14328 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
14329 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
14330 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
14331 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
14332 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
14333 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
14334 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
14335 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
14336 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
14337 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
14338 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
14339 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
14340 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
14341 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
14342 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
14343 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
14344 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
14345 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
14346 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
14347 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
14348 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
14349 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
14350 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
14351 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
14352 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
14353 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
14354 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
14355 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
14356 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
14357 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
14358 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
14359 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
14360 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
14361 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
14362 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
14363 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
14364 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
14365 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
14366 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
14367 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
14368 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
14369 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
14370 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
14371 END DO
14372 END DO
14373 END DO
14374 s_offset_d1 = s_offset_d1 + 9
14375 END DO
14376 s_offset_c1 = s_offset_c1 + 5
14377 END DO
14378 s_offset_b1 = s_offset_b1 + 1
14379 END DO
14380 s_offset_a1 = s_offset_a1 + 1
14381 END DO
14382 END SUBROUTINE contract_ssdg
14383#endif
14384#if __MAX_CONTR > 3 || __MAX_CONTR == 3
14385! **************************************************************************************************
14386!> \brief ...
14387!> \param work ...
14388!> \param nl_a ...
14389!> \param nl_b ...
14390!> \param nl_c ...
14391!> \param nl_d ...
14392!> \param sphi_a ...
14393!> \param sphi_b ...
14394!> \param sphi_c ...
14395!> \param sphi_d ...
14396!> \param primitives ...
14397!> \param buffer1 ...
14398!> \param buffer2 ...
14399! **************************************************************************************************
14400 SUBROUTINE contract_ssfs(work, &
14401 nl_a, nl_b, nl_c, nl_d, &
14402 sphi_a, sphi_b, sphi_c, sphi_d, &
14403 primitives, &
14404 buffer1, buffer2)
14405 REAL(dp), DIMENSION(1*1*10*1), INTENT(IN) :: work
14406 INTEGER :: nl_a, nl_b, nl_c, nl_d
14407 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
14408 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
14409 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
14410 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
14411 REAL(dp), &
14412 DIMENSION(1*nl_a, 1*nl_b, 7*nl_c, 1*nl_d) :: primitives
14413 REAL(dp), DIMENSION(1*1*10*1) :: buffer1, buffer2
14414
14415 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
14416 kmax, s_offset_a1, s_offset_b1, &
14417 s_offset_c1, s_offset_d1
14418
14419 s_offset_a1 = 0
14420 DO ia = 1, nl_a
14421 s_offset_b1 = 0
14422 DO ib = 1, nl_b
14423 s_offset_c1 = 0
14424 DO ic = 1, nl_c
14425 s_offset_d1 = 0
14426 DO id = 1, nl_d
14427 buffer1 = 0.0_dp
14428 imax = 1*10*1
14429 kmax = 1
14430 DO i = 1, imax
14431 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
14432 END DO
14433 buffer2 = 0.0_dp
14434 imax = 1*10*1
14435 kmax = 1
14436 DO i = 1, imax
14437 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
14438 END DO
14439 buffer1 = 0.0_dp
14440 imax = 1*1*1
14441 kmax = 10
14442 DO i = 1, imax
14443 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
14444 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
14445 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
14446 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
14447 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
14448 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
14449 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
14450 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
14451 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
14452 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
14453 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
14454 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
14455 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
14456 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
14457 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
14458 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
14459 END DO
14460 imax = 1*1*7
14461 kmax = 1
14462 i = 0
14463 DO i1 = 1, 7
14464 DO i2 = 1, 1
14465 DO i3 = 1, 1
14466 i = i + 1
14467 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
14468 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
14469 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
14470 END DO
14471 END DO
14472 END DO
14473 s_offset_d1 = s_offset_d1 + 1
14474 END DO
14475 s_offset_c1 = s_offset_c1 + 7
14476 END DO
14477 s_offset_b1 = s_offset_b1 + 1
14478 END DO
14479 s_offset_a1 = s_offset_a1 + 1
14480 END DO
14481 END SUBROUTINE contract_ssfs
14482#endif
14483#if __MAX_CONTR > 3 || __MAX_CONTR == 3
14484! **************************************************************************************************
14485!> \brief ...
14486!> \param work ...
14487!> \param nl_a ...
14488!> \param nl_b ...
14489!> \param nl_c ...
14490!> \param nl_d ...
14491!> \param sphi_a ...
14492!> \param sphi_b ...
14493!> \param sphi_c ...
14494!> \param sphi_d ...
14495!> \param primitives ...
14496!> \param buffer1 ...
14497!> \param buffer2 ...
14498! **************************************************************************************************
14499 SUBROUTINE contract_ssfp(work, &
14500 nl_a, nl_b, nl_c, nl_d, &
14501 sphi_a, sphi_b, sphi_c, sphi_d, &
14502 primitives, &
14503 buffer1, buffer2)
14504 REAL(dp), DIMENSION(1*1*10*3), INTENT(IN) :: work
14505 INTEGER :: nl_a, nl_b, nl_c, nl_d
14506 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
14507 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
14508 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
14509 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
14510 REAL(dp), &
14511 DIMENSION(1*nl_a, 1*nl_b, 7*nl_c, 3*nl_d) :: primitives
14512 REAL(dp), DIMENSION(1*1*10*3) :: buffer1, buffer2
14513
14514 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
14515 kmax, s_offset_a1, s_offset_b1, &
14516 s_offset_c1, s_offset_d1
14517
14518 s_offset_a1 = 0
14519 DO ia = 1, nl_a
14520 s_offset_b1 = 0
14521 DO ib = 1, nl_b
14522 s_offset_c1 = 0
14523 DO ic = 1, nl_c
14524 s_offset_d1 = 0
14525 DO id = 1, nl_d
14526 buffer1 = 0.0_dp
14527 imax = 1*10*3
14528 kmax = 1
14529 DO i = 1, imax
14530 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
14531 END DO
14532 buffer2 = 0.0_dp
14533 imax = 1*10*3
14534 kmax = 1
14535 DO i = 1, imax
14536 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
14537 END DO
14538 buffer1 = 0.0_dp
14539 imax = 1*1*3
14540 kmax = 10
14541 DO i = 1, imax
14542 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
14543 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
14544 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
14545 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
14546 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
14547 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
14548 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
14549 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
14550 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
14551 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
14552 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
14553 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
14554 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
14555 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
14556 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
14557 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
14558 END DO
14559 imax = 1*1*7
14560 kmax = 3
14561 i = 0
14562 DO i1 = 1, 7
14563 DO i2 = 1, 1
14564 DO i3 = 1, 1
14565 i = i + 1
14566 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
14567 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
14568 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
14569 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
14570 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
14571 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
14572 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
14573 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
14574 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
14575 END DO
14576 END DO
14577 END DO
14578 s_offset_d1 = s_offset_d1 + 3
14579 END DO
14580 s_offset_c1 = s_offset_c1 + 7
14581 END DO
14582 s_offset_b1 = s_offset_b1 + 1
14583 END DO
14584 s_offset_a1 = s_offset_a1 + 1
14585 END DO
14586 END SUBROUTINE contract_ssfp
14587#endif
14588#if __MAX_CONTR > 3 || __MAX_CONTR == 3
14589! **************************************************************************************************
14590!> \brief ...
14591!> \param work ...
14592!> \param nl_a ...
14593!> \param nl_b ...
14594!> \param nl_c ...
14595!> \param nl_d ...
14596!> \param sphi_a ...
14597!> \param sphi_b ...
14598!> \param sphi_c ...
14599!> \param sphi_d ...
14600!> \param primitives ...
14601!> \param buffer1 ...
14602!> \param buffer2 ...
14603! **************************************************************************************************
14604 SUBROUTINE contract_ssfd(work, &
14605 nl_a, nl_b, nl_c, nl_d, &
14606 sphi_a, sphi_b, sphi_c, sphi_d, &
14607 primitives, &
14608 buffer1, buffer2)
14609 REAL(dp), DIMENSION(1*1*10*6), INTENT(IN) :: work
14610 INTEGER :: nl_a, nl_b, nl_c, nl_d
14611 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
14612 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
14613 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
14614 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
14615 REAL(dp), &
14616 DIMENSION(1*nl_a, 1*nl_b, 7*nl_c, 5*nl_d) :: primitives
14617 REAL(dp), DIMENSION(1*1*10*6) :: buffer1, buffer2
14618
14619 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
14620 kmax, s_offset_a1, s_offset_b1, &
14621 s_offset_c1, s_offset_d1
14622
14623 s_offset_a1 = 0
14624 DO ia = 1, nl_a
14625 s_offset_b1 = 0
14626 DO ib = 1, nl_b
14627 s_offset_c1 = 0
14628 DO ic = 1, nl_c
14629 s_offset_d1 = 0
14630 DO id = 1, nl_d
14631 buffer1 = 0.0_dp
14632 imax = 1*10*6
14633 kmax = 1
14634 DO i = 1, imax
14635 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
14636 END DO
14637 buffer2 = 0.0_dp
14638 imax = 1*10*6
14639 kmax = 1
14640 DO i = 1, imax
14641 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
14642 END DO
14643 buffer1 = 0.0_dp
14644 imax = 1*1*6
14645 kmax = 10
14646 DO i = 1, imax
14647 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
14648 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
14649 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
14650 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
14651 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
14652 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
14653 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
14654 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
14655 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
14656 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
14657 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
14658 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
14659 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
14660 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
14661 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
14662 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
14663 END DO
14664 imax = 1*1*7
14665 kmax = 6
14666 i = 0
14667 DO i1 = 1, 7
14668 DO i2 = 1, 1
14669 DO i3 = 1, 1
14670 i = i + 1
14671 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
14672 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
14673 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
14674 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
14675 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
14676 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
14677 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
14678 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
14679 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
14680 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
14681 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
14682 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
14683 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
14684 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
14685 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
14686 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
14687 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
14688 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
14689 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
14690 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
14691 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
14692 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
14693 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
14694 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
14695 END DO
14696 END DO
14697 END DO
14698 s_offset_d1 = s_offset_d1 + 5
14699 END DO
14700 s_offset_c1 = s_offset_c1 + 7
14701 END DO
14702 s_offset_b1 = s_offset_b1 + 1
14703 END DO
14704 s_offset_a1 = s_offset_a1 + 1
14705 END DO
14706 END SUBROUTINE contract_ssfd
14707#endif
14708#if __MAX_CONTR > 3 || __MAX_CONTR == 3
14709! **************************************************************************************************
14710!> \brief ...
14711!> \param work ...
14712!> \param nl_a ...
14713!> \param nl_b ...
14714!> \param nl_c ...
14715!> \param nl_d ...
14716!> \param sphi_a ...
14717!> \param sphi_b ...
14718!> \param sphi_c ...
14719!> \param sphi_d ...
14720!> \param primitives ...
14721!> \param buffer1 ...
14722!> \param buffer2 ...
14723! **************************************************************************************************
14724 SUBROUTINE contract_ssff(work, &
14725 nl_a, nl_b, nl_c, nl_d, &
14726 sphi_a, sphi_b, sphi_c, sphi_d, &
14727 primitives, &
14728 buffer1, buffer2)
14729 REAL(dp), DIMENSION(1*1*10*10), INTENT(IN) :: work
14730 INTEGER :: nl_a, nl_b, nl_c, nl_d
14731 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
14732 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
14733 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
14734 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
14735 REAL(dp), &
14736 DIMENSION(1*nl_a, 1*nl_b, 7*nl_c, 7*nl_d) :: primitives
14737 REAL(dp), DIMENSION(1*1*10*10) :: buffer1, buffer2
14738
14739 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
14740 kmax, s_offset_a1, s_offset_b1, &
14741 s_offset_c1, s_offset_d1
14742
14743 s_offset_a1 = 0
14744 DO ia = 1, nl_a
14745 s_offset_b1 = 0
14746 DO ib = 1, nl_b
14747 s_offset_c1 = 0
14748 DO ic = 1, nl_c
14749 s_offset_d1 = 0
14750 DO id = 1, nl_d
14751 buffer1 = 0.0_dp
14752 imax = 1*10*10
14753 kmax = 1
14754 DO i = 1, imax
14755 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
14756 END DO
14757 buffer2 = 0.0_dp
14758 imax = 1*10*10
14759 kmax = 1
14760 DO i = 1, imax
14761 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
14762 END DO
14763 buffer1 = 0.0_dp
14764 imax = 1*1*10
14765 kmax = 10
14766 DO i = 1, imax
14767 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
14768 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
14769 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
14770 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
14771 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
14772 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
14773 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
14774 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
14775 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
14776 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
14777 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
14778 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
14779 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
14780 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
14781 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
14782 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
14783 END DO
14784 imax = 1*1*7
14785 kmax = 10
14786 i = 0
14787 DO i1 = 1, 7
14788 DO i2 = 1, 1
14789 DO i3 = 1, 1
14790 i = i + 1
14791 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
14792 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
14793 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
14794 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
14795 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
14796 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
14797 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
14798 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
14799 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
14800 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
14801 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
14802 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
14803 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
14804 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
14805 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
14806 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
14807 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
14808 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
14809 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
14810 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
14811 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
14812 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
14813 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
14814 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
14815 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
14816 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
14817 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
14818 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
14819 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
14820 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
14821 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
14822 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
14823 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
14824 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
14825 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
14826 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
14827 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
14828 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
14829 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
14830 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
14831 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
14832 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
14833 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
14834 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
14835 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
14836 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
14837 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
14838 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
14839 END DO
14840 END DO
14841 END DO
14842 s_offset_d1 = s_offset_d1 + 7
14843 END DO
14844 s_offset_c1 = s_offset_c1 + 7
14845 END DO
14846 s_offset_b1 = s_offset_b1 + 1
14847 END DO
14848 s_offset_a1 = s_offset_a1 + 1
14849 END DO
14850 END SUBROUTINE contract_ssff
14851#endif
14852#if __MAX_CONTR > 4 || __MAX_CONTR == 4
14853! **************************************************************************************************
14854!> \brief ...
14855!> \param work ...
14856!> \param nl_a ...
14857!> \param nl_b ...
14858!> \param nl_c ...
14859!> \param nl_d ...
14860!> \param sphi_a ...
14861!> \param sphi_b ...
14862!> \param sphi_c ...
14863!> \param sphi_d ...
14864!> \param primitives ...
14865!> \param buffer1 ...
14866!> \param buffer2 ...
14867! **************************************************************************************************
14868 SUBROUTINE contract_ssfg(work, &
14869 nl_a, nl_b, nl_c, nl_d, &
14870 sphi_a, sphi_b, sphi_c, sphi_d, &
14871 primitives, &
14872 buffer1, buffer2)
14873 REAL(dp), DIMENSION(1*1*10*15), INTENT(IN) :: work
14874 INTEGER :: nl_a, nl_b, nl_c, nl_d
14875 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
14876 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
14877 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
14878 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
14879 REAL(dp), &
14880 DIMENSION(1*nl_a, 1*nl_b, 7*nl_c, 9*nl_d) :: primitives
14881 REAL(dp), DIMENSION(1*1*10*15) :: buffer1, buffer2
14882
14883 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
14884 kmax, s_offset_a1, s_offset_b1, &
14885 s_offset_c1, s_offset_d1
14886
14887 s_offset_a1 = 0
14888 DO ia = 1, nl_a
14889 s_offset_b1 = 0
14890 DO ib = 1, nl_b
14891 s_offset_c1 = 0
14892 DO ic = 1, nl_c
14893 s_offset_d1 = 0
14894 DO id = 1, nl_d
14895 buffer1 = 0.0_dp
14896 imax = 1*10*15
14897 kmax = 1
14898 DO i = 1, imax
14899 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
14900 END DO
14901 buffer2 = 0.0_dp
14902 imax = 1*10*15
14903 kmax = 1
14904 DO i = 1, imax
14905 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
14906 END DO
14907 buffer1 = 0.0_dp
14908 imax = 1*1*15
14909 kmax = 10
14910 DO i = 1, imax
14911 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
14912 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
14913 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
14914 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
14915 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
14916 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
14917 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
14918 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
14919 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
14920 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
14921 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
14922 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
14923 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
14924 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
14925 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
14926 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
14927 END DO
14928 imax = 1*1*7
14929 kmax = 15
14930 i = 0
14931 DO i1 = 1, 7
14932 DO i2 = 1, 1
14933 DO i3 = 1, 1
14934 i = i + 1
14935 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
14936 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
14937 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
14938 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
14939 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
14940 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
14941 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
14942 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
14943 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
14944 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
14945 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
14946 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
14947 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
14948 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
14949 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
14950 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
14951 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
14952 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
14953 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
14954 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
14955 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
14956 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
14957 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
14958 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
14959 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
14960 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
14961 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
14962 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
14963 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
14964 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
14965 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
14966 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
14967 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
14968 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
14969 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
14970 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
14971 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
14972 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
14973 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
14974 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
14975 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
14976 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
14977 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
14978 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
14979 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
14980 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
14981 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
14982 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
14983 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
14984 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
14985 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
14986 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
14987 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
14988 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
14989 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
14990 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
14991 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
14992 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
14993 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
14994 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
14995 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
14996 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
14997 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
14998 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
14999 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
15000 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
15001 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
15002 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
15003 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
15004 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
15005 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
15006 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
15007 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
15008 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
15009 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
15010 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
15011 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
15012 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
15013 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
15014 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
15015 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
15016 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
15017 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
15018 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
15019 END DO
15020 END DO
15021 END DO
15022 s_offset_d1 = s_offset_d1 + 9
15023 END DO
15024 s_offset_c1 = s_offset_c1 + 7
15025 END DO
15026 s_offset_b1 = s_offset_b1 + 1
15027 END DO
15028 s_offset_a1 = s_offset_a1 + 1
15029 END DO
15030 END SUBROUTINE contract_ssfg
15031#endif
15032#if __MAX_CONTR > 4 || __MAX_CONTR == 4
15033! **************************************************************************************************
15034!> \brief ...
15035!> \param work ...
15036!> \param nl_a ...
15037!> \param nl_b ...
15038!> \param nl_c ...
15039!> \param nl_d ...
15040!> \param sphi_a ...
15041!> \param sphi_b ...
15042!> \param sphi_c ...
15043!> \param sphi_d ...
15044!> \param primitives ...
15045!> \param buffer1 ...
15046!> \param buffer2 ...
15047! **************************************************************************************************
15048 SUBROUTINE contract_ssgs(work, &
15049 nl_a, nl_b, nl_c, nl_d, &
15050 sphi_a, sphi_b, sphi_c, sphi_d, &
15051 primitives, &
15052 buffer1, buffer2)
15053 REAL(dp), DIMENSION(1*1*15*1), INTENT(IN) :: work
15054 INTEGER :: nl_a, nl_b, nl_c, nl_d
15055 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
15056 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
15057 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
15058 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
15059 REAL(dp), &
15060 DIMENSION(1*nl_a, 1*nl_b, 9*nl_c, 1*nl_d) :: primitives
15061 REAL(dp), DIMENSION(1*1*15*1) :: buffer1, buffer2
15062
15063 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
15064 kmax, s_offset_a1, s_offset_b1, &
15065 s_offset_c1, s_offset_d1
15066
15067 s_offset_a1 = 0
15068 DO ia = 1, nl_a
15069 s_offset_b1 = 0
15070 DO ib = 1, nl_b
15071 s_offset_c1 = 0
15072 DO ic = 1, nl_c
15073 s_offset_d1 = 0
15074 DO id = 1, nl_d
15075 buffer1 = 0.0_dp
15076 imax = 1*15*1
15077 kmax = 1
15078 DO i = 1, imax
15079 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
15080 END DO
15081 buffer2 = 0.0_dp
15082 imax = 1*15*1
15083 kmax = 1
15084 DO i = 1, imax
15085 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
15086 END DO
15087 buffer1 = 0.0_dp
15088 imax = 1*1*1
15089 kmax = 15
15090 DO i = 1, imax
15091 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
15092 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
15093 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
15094 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
15095 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
15096 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
15097 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
15098 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
15099 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
15100 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
15101 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
15102 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
15103 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
15104 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
15105 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
15106 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
15107 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
15108 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
15109 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
15110 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
15111 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
15112 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
15113 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
15114 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
15115 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
15116 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
15117 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
15118 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
15119 END DO
15120 imax = 1*1*9
15121 kmax = 1
15122 i = 0
15123 DO i1 = 1, 9
15124 DO i2 = 1, 1
15125 DO i3 = 1, 1
15126 i = i + 1
15127 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
15128 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
15129 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
15130 END DO
15131 END DO
15132 END DO
15133 s_offset_d1 = s_offset_d1 + 1
15134 END DO
15135 s_offset_c1 = s_offset_c1 + 9
15136 END DO
15137 s_offset_b1 = s_offset_b1 + 1
15138 END DO
15139 s_offset_a1 = s_offset_a1 + 1
15140 END DO
15141 END SUBROUTINE contract_ssgs
15142#endif
15143#if __MAX_CONTR > 4 || __MAX_CONTR == 4
15144! **************************************************************************************************
15145!> \brief ...
15146!> \param work ...
15147!> \param nl_a ...
15148!> \param nl_b ...
15149!> \param nl_c ...
15150!> \param nl_d ...
15151!> \param sphi_a ...
15152!> \param sphi_b ...
15153!> \param sphi_c ...
15154!> \param sphi_d ...
15155!> \param primitives ...
15156!> \param buffer1 ...
15157!> \param buffer2 ...
15158! **************************************************************************************************
15159 SUBROUTINE contract_ssgp(work, &
15160 nl_a, nl_b, nl_c, nl_d, &
15161 sphi_a, sphi_b, sphi_c, sphi_d, &
15162 primitives, &
15163 buffer1, buffer2)
15164 REAL(dp), DIMENSION(1*1*15*3), INTENT(IN) :: work
15165 INTEGER :: nl_a, nl_b, nl_c, nl_d
15166 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
15167 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
15168 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
15169 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
15170 REAL(dp), &
15171 DIMENSION(1*nl_a, 1*nl_b, 9*nl_c, 3*nl_d) :: primitives
15172 REAL(dp), DIMENSION(1*1*15*3) :: buffer1, buffer2
15173
15174 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
15175 kmax, s_offset_a1, s_offset_b1, &
15176 s_offset_c1, s_offset_d1
15177
15178 s_offset_a1 = 0
15179 DO ia = 1, nl_a
15180 s_offset_b1 = 0
15181 DO ib = 1, nl_b
15182 s_offset_c1 = 0
15183 DO ic = 1, nl_c
15184 s_offset_d1 = 0
15185 DO id = 1, nl_d
15186 buffer1 = 0.0_dp
15187 imax = 1*15*3
15188 kmax = 1
15189 DO i = 1, imax
15190 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
15191 END DO
15192 buffer2 = 0.0_dp
15193 imax = 1*15*3
15194 kmax = 1
15195 DO i = 1, imax
15196 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
15197 END DO
15198 buffer1 = 0.0_dp
15199 imax = 1*1*3
15200 kmax = 15
15201 DO i = 1, imax
15202 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
15203 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
15204 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
15205 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
15206 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
15207 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
15208 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
15209 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
15210 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
15211 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
15212 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
15213 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
15214 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
15215 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
15216 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
15217 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
15218 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
15219 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
15220 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
15221 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
15222 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
15223 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
15224 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
15225 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
15226 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
15227 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
15228 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
15229 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
15230 END DO
15231 imax = 1*1*9
15232 kmax = 3
15233 i = 0
15234 DO i1 = 1, 9
15235 DO i2 = 1, 1
15236 DO i3 = 1, 1
15237 i = i + 1
15238 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
15239 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
15240 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
15241 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
15242 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
15243 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
15244 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
15245 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
15246 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
15247 END DO
15248 END DO
15249 END DO
15250 s_offset_d1 = s_offset_d1 + 3
15251 END DO
15252 s_offset_c1 = s_offset_c1 + 9
15253 END DO
15254 s_offset_b1 = s_offset_b1 + 1
15255 END DO
15256 s_offset_a1 = s_offset_a1 + 1
15257 END DO
15258 END SUBROUTINE contract_ssgp
15259#endif
15260#if __MAX_CONTR > 4 || __MAX_CONTR == 4
15261! **************************************************************************************************
15262!> \brief ...
15263!> \param work ...
15264!> \param nl_a ...
15265!> \param nl_b ...
15266!> \param nl_c ...
15267!> \param nl_d ...
15268!> \param sphi_a ...
15269!> \param sphi_b ...
15270!> \param sphi_c ...
15271!> \param sphi_d ...
15272!> \param primitives ...
15273!> \param buffer1 ...
15274!> \param buffer2 ...
15275! **************************************************************************************************
15276 SUBROUTINE contract_ssgd(work, &
15277 nl_a, nl_b, nl_c, nl_d, &
15278 sphi_a, sphi_b, sphi_c, sphi_d, &
15279 primitives, &
15280 buffer1, buffer2)
15281 REAL(dp), DIMENSION(1*1*15*6), INTENT(IN) :: work
15282 INTEGER :: nl_a, nl_b, nl_c, nl_d
15283 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
15284 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
15285 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
15286 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
15287 REAL(dp), &
15288 DIMENSION(1*nl_a, 1*nl_b, 9*nl_c, 5*nl_d) :: primitives
15289 REAL(dp), DIMENSION(1*1*15*6) :: buffer1, buffer2
15290
15291 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
15292 kmax, s_offset_a1, s_offset_b1, &
15293 s_offset_c1, s_offset_d1
15294
15295 s_offset_a1 = 0
15296 DO ia = 1, nl_a
15297 s_offset_b1 = 0
15298 DO ib = 1, nl_b
15299 s_offset_c1 = 0
15300 DO ic = 1, nl_c
15301 s_offset_d1 = 0
15302 DO id = 1, nl_d
15303 buffer1 = 0.0_dp
15304 imax = 1*15*6
15305 kmax = 1
15306 DO i = 1, imax
15307 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
15308 END DO
15309 buffer2 = 0.0_dp
15310 imax = 1*15*6
15311 kmax = 1
15312 DO i = 1, imax
15313 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
15314 END DO
15315 buffer1 = 0.0_dp
15316 imax = 1*1*6
15317 kmax = 15
15318 DO i = 1, imax
15319 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
15320 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
15321 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
15322 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
15323 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
15324 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
15325 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
15326 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
15327 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
15328 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
15329 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
15330 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
15331 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
15332 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
15333 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
15334 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
15335 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
15336 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
15337 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
15338 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
15339 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
15340 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
15341 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
15342 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
15343 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
15344 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
15345 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
15346 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
15347 END DO
15348 imax = 1*1*9
15349 kmax = 6
15350 i = 0
15351 DO i1 = 1, 9
15352 DO i2 = 1, 1
15353 DO i3 = 1, 1
15354 i = i + 1
15355 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
15356 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
15357 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
15358 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
15359 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
15360 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
15361 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
15362 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
15363 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
15364 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
15365 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
15366 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
15367 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
15368 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
15369 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
15370 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
15371 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
15372 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
15373 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
15374 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
15375 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
15376 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
15377 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
15378 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
15379 END DO
15380 END DO
15381 END DO
15382 s_offset_d1 = s_offset_d1 + 5
15383 END DO
15384 s_offset_c1 = s_offset_c1 + 9
15385 END DO
15386 s_offset_b1 = s_offset_b1 + 1
15387 END DO
15388 s_offset_a1 = s_offset_a1 + 1
15389 END DO
15390 END SUBROUTINE contract_ssgd
15391#endif
15392#if __MAX_CONTR > 4 || __MAX_CONTR == 4
15393! **************************************************************************************************
15394!> \brief ...
15395!> \param work ...
15396!> \param nl_a ...
15397!> \param nl_b ...
15398!> \param nl_c ...
15399!> \param nl_d ...
15400!> \param sphi_a ...
15401!> \param sphi_b ...
15402!> \param sphi_c ...
15403!> \param sphi_d ...
15404!> \param primitives ...
15405!> \param buffer1 ...
15406!> \param buffer2 ...
15407! **************************************************************************************************
15408 SUBROUTINE contract_ssgf(work, &
15409 nl_a, nl_b, nl_c, nl_d, &
15410 sphi_a, sphi_b, sphi_c, sphi_d, &
15411 primitives, &
15412 buffer1, buffer2)
15413 REAL(dp), DIMENSION(1*1*15*10), INTENT(IN) :: work
15414 INTEGER :: nl_a, nl_b, nl_c, nl_d
15415 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
15416 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
15417 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
15418 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
15419 REAL(dp), &
15420 DIMENSION(1*nl_a, 1*nl_b, 9*nl_c, 7*nl_d) :: primitives
15421 REAL(dp), DIMENSION(1*1*15*10) :: buffer1, buffer2
15422
15423 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
15424 kmax, s_offset_a1, s_offset_b1, &
15425 s_offset_c1, s_offset_d1
15426
15427 s_offset_a1 = 0
15428 DO ia = 1, nl_a
15429 s_offset_b1 = 0
15430 DO ib = 1, nl_b
15431 s_offset_c1 = 0
15432 DO ic = 1, nl_c
15433 s_offset_d1 = 0
15434 DO id = 1, nl_d
15435 buffer1 = 0.0_dp
15436 imax = 1*15*10
15437 kmax = 1
15438 DO i = 1, imax
15439 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
15440 END DO
15441 buffer2 = 0.0_dp
15442 imax = 1*15*10
15443 kmax = 1
15444 DO i = 1, imax
15445 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
15446 END DO
15447 buffer1 = 0.0_dp
15448 imax = 1*1*10
15449 kmax = 15
15450 DO i = 1, imax
15451 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
15452 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
15453 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
15454 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
15455 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
15456 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
15457 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
15458 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
15459 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
15460 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
15461 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
15462 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
15463 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
15464 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
15465 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
15466 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
15467 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
15468 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
15469 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
15470 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
15471 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
15472 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
15473 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
15474 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
15475 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
15476 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
15477 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
15478 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
15479 END DO
15480 imax = 1*1*9
15481 kmax = 10
15482 i = 0
15483 DO i1 = 1, 9
15484 DO i2 = 1, 1
15485 DO i3 = 1, 1
15486 i = i + 1
15487 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
15488 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
15489 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
15490 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
15491 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
15492 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
15493 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
15494 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
15495 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
15496 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
15497 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
15498 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
15499 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
15500 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
15501 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
15502 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
15503 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
15504 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
15505 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
15506 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
15507 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
15508 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
15509 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
15510 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
15511 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
15512 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
15513 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
15514 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
15515 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
15516 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
15517 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
15518 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
15519 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
15520 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
15521 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
15522 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
15523 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
15524 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
15525 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
15526 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
15527 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
15528 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
15529 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
15530 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
15531 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
15532 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
15533 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
15534 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
15535 END DO
15536 END DO
15537 END DO
15538 s_offset_d1 = s_offset_d1 + 7
15539 END DO
15540 s_offset_c1 = s_offset_c1 + 9
15541 END DO
15542 s_offset_b1 = s_offset_b1 + 1
15543 END DO
15544 s_offset_a1 = s_offset_a1 + 1
15545 END DO
15546 END SUBROUTINE contract_ssgf
15547#endif
15548#if __MAX_CONTR > 4 || __MAX_CONTR == 4
15549! **************************************************************************************************
15550!> \brief ...
15551!> \param work ...
15552!> \param nl_a ...
15553!> \param nl_b ...
15554!> \param nl_c ...
15555!> \param nl_d ...
15556!> \param sphi_a ...
15557!> \param sphi_b ...
15558!> \param sphi_c ...
15559!> \param sphi_d ...
15560!> \param primitives ...
15561!> \param buffer1 ...
15562!> \param buffer2 ...
15563! **************************************************************************************************
15564 SUBROUTINE contract_ssgg(work, &
15565 nl_a, nl_b, nl_c, nl_d, &
15566 sphi_a, sphi_b, sphi_c, sphi_d, &
15567 primitives, &
15568 buffer1, buffer2)
15569 REAL(dp), DIMENSION(1*1*15*15), INTENT(IN) :: work
15570 INTEGER :: nl_a, nl_b, nl_c, nl_d
15571 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
15572 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
15573 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
15574 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
15575 REAL(dp), &
15576 DIMENSION(1*nl_a, 1*nl_b, 9*nl_c, 9*nl_d) :: primitives
15577 REAL(dp), DIMENSION(1*1*15*15) :: buffer1, buffer2
15578
15579 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
15580 kmax, s_offset_a1, s_offset_b1, &
15581 s_offset_c1, s_offset_d1
15582
15583 s_offset_a1 = 0
15584 DO ia = 1, nl_a
15585 s_offset_b1 = 0
15586 DO ib = 1, nl_b
15587 s_offset_c1 = 0
15588 DO ic = 1, nl_c
15589 s_offset_d1 = 0
15590 DO id = 1, nl_d
15591 buffer1 = 0.0_dp
15592 imax = 1*15*15
15593 kmax = 1
15594 DO i = 1, imax
15595 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
15596 END DO
15597 buffer2 = 0.0_dp
15598 imax = 1*15*15
15599 kmax = 1
15600 DO i = 1, imax
15601 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
15602 END DO
15603 buffer1 = 0.0_dp
15604 imax = 1*1*15
15605 kmax = 15
15606 DO i = 1, imax
15607 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
15608 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
15609 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
15610 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
15611 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
15612 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
15613 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
15614 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
15615 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
15616 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
15617 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
15618 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
15619 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
15620 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
15621 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
15622 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
15623 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
15624 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
15625 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
15626 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
15627 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
15628 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
15629 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
15630 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
15631 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
15632 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
15633 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
15634 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
15635 END DO
15636 imax = 1*1*9
15637 kmax = 15
15638 i = 0
15639 DO i1 = 1, 9
15640 DO i2 = 1, 1
15641 DO i3 = 1, 1
15642 i = i + 1
15643 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
15644 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
15645 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
15646 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
15647 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
15648 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
15649 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
15650 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
15651 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
15652 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
15653 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
15654 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
15655 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
15656 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
15657 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
15658 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
15659 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
15660 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
15661 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
15662 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
15663 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
15664 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
15665 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
15666 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
15667 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
15668 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
15669 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
15670 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
15671 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
15672 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
15673 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
15674 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
15675 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
15676 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
15677 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
15678 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
15679 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
15680 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
15681 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
15682 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
15683 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
15684 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
15685 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
15686 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
15687 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
15688 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
15689 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
15690 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
15691 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
15692 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
15693 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
15694 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
15695 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
15696 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
15697 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
15698 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
15699 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
15700 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
15701 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
15702 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
15703 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
15704 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
15705 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
15706 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
15707 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
15708 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
15709 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
15710 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
15711 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
15712 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
15713 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
15714 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
15715 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
15716 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
15717 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
15718 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
15719 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
15720 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
15721 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
15722 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
15723 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
15724 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
15725 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
15726 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
15727 END DO
15728 END DO
15729 END DO
15730 s_offset_d1 = s_offset_d1 + 9
15731 END DO
15732 s_offset_c1 = s_offset_c1 + 9
15733 END DO
15734 s_offset_b1 = s_offset_b1 + 1
15735 END DO
15736 s_offset_a1 = s_offset_a1 + 1
15737 END DO
15738 END SUBROUTINE contract_ssgg
15739#endif
15740#if __MAX_CONTR > 1 || __MAX_CONTR == 1
15741! **************************************************************************************************
15742!> \brief ...
15743!> \param work ...
15744!> \param nl_a ...
15745!> \param nl_b ...
15746!> \param nl_c ...
15747!> \param nl_d ...
15748!> \param sphi_a ...
15749!> \param sphi_b ...
15750!> \param sphi_c ...
15751!> \param sphi_d ...
15752!> \param primitives ...
15753!> \param buffer1 ...
15754!> \param buffer2 ...
15755! **************************************************************************************************
15756 SUBROUTINE contract_spss(work, &
15757 nl_a, nl_b, nl_c, nl_d, &
15758 sphi_a, sphi_b, sphi_c, sphi_d, &
15759 primitives, &
15760 buffer1, buffer2)
15761 REAL(dp), DIMENSION(1*3*1*1), INTENT(IN) :: work
15762 INTEGER :: nl_a, nl_b, nl_c, nl_d
15763 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
15764 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
15765 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
15766 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
15767 REAL(dp), &
15768 DIMENSION(1*nl_a, 3*nl_b, 1*nl_c, 1*nl_d) :: primitives
15769 REAL(dp), DIMENSION(1*3*1*1) :: buffer1, buffer2
15770
15771 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
15772 kmax, s_offset_a1, s_offset_b1, &
15773 s_offset_c1, s_offset_d1
15774
15775 s_offset_a1 = 0
15776 DO ia = 1, nl_a
15777 s_offset_b1 = 0
15778 DO ib = 1, nl_b
15779 s_offset_c1 = 0
15780 DO ic = 1, nl_c
15781 s_offset_d1 = 0
15782 DO id = 1, nl_d
15783 buffer1 = 0.0_dp
15784 imax = 3*1*1
15785 kmax = 1
15786 DO i = 1, imax
15787 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
15788 END DO
15789 buffer2 = 0.0_dp
15790 imax = 1*1*1
15791 kmax = 3
15792 DO i = 1, imax
15793 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
15794 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
15795 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
15796 END DO
15797 buffer1 = 0.0_dp
15798 imax = 1*3*1
15799 kmax = 1
15800 DO i = 1, imax
15801 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
15802 END DO
15803 imax = 1*3*1
15804 kmax = 1
15805 i = 0
15806 DO i1 = 1, 1
15807 DO i2 = 1, 3
15808 DO i3 = 1, 1
15809 i = i + 1
15810 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
15811 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
15812 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
15813 END DO
15814 END DO
15815 END DO
15816 s_offset_d1 = s_offset_d1 + 1
15817 END DO
15818 s_offset_c1 = s_offset_c1 + 1
15819 END DO
15820 s_offset_b1 = s_offset_b1 + 3
15821 END DO
15822 s_offset_a1 = s_offset_a1 + 1
15823 END DO
15824 END SUBROUTINE contract_spss
15825#endif
15826#if __MAX_CONTR > 1 || __MAX_CONTR == 1
15827! **************************************************************************************************
15828!> \brief ...
15829!> \param work ...
15830!> \param nl_a ...
15831!> \param nl_b ...
15832!> \param nl_c ...
15833!> \param nl_d ...
15834!> \param sphi_a ...
15835!> \param sphi_b ...
15836!> \param sphi_c ...
15837!> \param sphi_d ...
15838!> \param primitives ...
15839!> \param buffer1 ...
15840!> \param buffer2 ...
15841! **************************************************************************************************
15842 SUBROUTINE contract_spsp(work, &
15843 nl_a, nl_b, nl_c, nl_d, &
15844 sphi_a, sphi_b, sphi_c, sphi_d, &
15845 primitives, &
15846 buffer1, buffer2)
15847 REAL(dp), DIMENSION(1*3*1*3), INTENT(IN) :: work
15848 INTEGER :: nl_a, nl_b, nl_c, nl_d
15849 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
15850 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
15851 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
15852 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
15853 REAL(dp), &
15854 DIMENSION(1*nl_a, 3*nl_b, 1*nl_c, 3*nl_d) :: primitives
15855 REAL(dp), DIMENSION(1*3*1*3) :: buffer1, buffer2
15856
15857 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
15858 kmax, s_offset_a1, s_offset_b1, &
15859 s_offset_c1, s_offset_d1
15860
15861 s_offset_a1 = 0
15862 DO ia = 1, nl_a
15863 s_offset_b1 = 0
15864 DO ib = 1, nl_b
15865 s_offset_c1 = 0
15866 DO ic = 1, nl_c
15867 s_offset_d1 = 0
15868 DO id = 1, nl_d
15869 buffer1 = 0.0_dp
15870 imax = 3*1*3
15871 kmax = 1
15872 DO i = 1, imax
15873 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
15874 END DO
15875 buffer2 = 0.0_dp
15876 imax = 1*1*3
15877 kmax = 3
15878 DO i = 1, imax
15879 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
15880 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
15881 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
15882 END DO
15883 buffer1 = 0.0_dp
15884 imax = 1*3*3
15885 kmax = 1
15886 DO i = 1, imax
15887 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
15888 END DO
15889 imax = 1*3*1
15890 kmax = 3
15891 i = 0
15892 DO i1 = 1, 1
15893 DO i2 = 1, 3
15894 DO i3 = 1, 1
15895 i = i + 1
15896 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
15897 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
15898 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
15899 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
15900 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
15901 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
15902 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
15903 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
15904 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
15905 END DO
15906 END DO
15907 END DO
15908 s_offset_d1 = s_offset_d1 + 3
15909 END DO
15910 s_offset_c1 = s_offset_c1 + 1
15911 END DO
15912 s_offset_b1 = s_offset_b1 + 3
15913 END DO
15914 s_offset_a1 = s_offset_a1 + 1
15915 END DO
15916 END SUBROUTINE contract_spsp
15917#endif
15918#if __MAX_CONTR > 2 || __MAX_CONTR == 2
15919! **************************************************************************************************
15920!> \brief ...
15921!> \param work ...
15922!> \param nl_a ...
15923!> \param nl_b ...
15924!> \param nl_c ...
15925!> \param nl_d ...
15926!> \param sphi_a ...
15927!> \param sphi_b ...
15928!> \param sphi_c ...
15929!> \param sphi_d ...
15930!> \param primitives ...
15931!> \param buffer1 ...
15932!> \param buffer2 ...
15933! **************************************************************************************************
15934 SUBROUTINE contract_spsd(work, &
15935 nl_a, nl_b, nl_c, nl_d, &
15936 sphi_a, sphi_b, sphi_c, sphi_d, &
15937 primitives, &
15938 buffer1, buffer2)
15939 REAL(dp), DIMENSION(1*3*1*6), INTENT(IN) :: work
15940 INTEGER :: nl_a, nl_b, nl_c, nl_d
15941 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
15942 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
15943 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
15944 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
15945 REAL(dp), &
15946 DIMENSION(1*nl_a, 3*nl_b, 1*nl_c, 5*nl_d) :: primitives
15947 REAL(dp), DIMENSION(1*3*1*6) :: buffer1, buffer2
15948
15949 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
15950 kmax, s_offset_a1, s_offset_b1, &
15951 s_offset_c1, s_offset_d1
15952
15953 s_offset_a1 = 0
15954 DO ia = 1, nl_a
15955 s_offset_b1 = 0
15956 DO ib = 1, nl_b
15957 s_offset_c1 = 0
15958 DO ic = 1, nl_c
15959 s_offset_d1 = 0
15960 DO id = 1, nl_d
15961 buffer1 = 0.0_dp
15962 imax = 3*1*6
15963 kmax = 1
15964 DO i = 1, imax
15965 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
15966 END DO
15967 buffer2 = 0.0_dp
15968 imax = 1*1*6
15969 kmax = 3
15970 DO i = 1, imax
15971 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
15972 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
15973 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
15974 END DO
15975 buffer1 = 0.0_dp
15976 imax = 1*3*6
15977 kmax = 1
15978 DO i = 1, imax
15979 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
15980 END DO
15981 imax = 1*3*1
15982 kmax = 6
15983 i = 0
15984 DO i1 = 1, 1
15985 DO i2 = 1, 3
15986 DO i3 = 1, 1
15987 i = i + 1
15988 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
15989 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
15990 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
15991 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
15992 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
15993 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
15994 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
15995 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
15996 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
15997 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
15998 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
15999 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
16000 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
16001 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
16002 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
16003 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
16004 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
16005 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
16006 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
16007 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
16008 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
16009 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
16010 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
16011 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
16012 END DO
16013 END DO
16014 END DO
16015 s_offset_d1 = s_offset_d1 + 5
16016 END DO
16017 s_offset_c1 = s_offset_c1 + 1
16018 END DO
16019 s_offset_b1 = s_offset_b1 + 3
16020 END DO
16021 s_offset_a1 = s_offset_a1 + 1
16022 END DO
16023 END SUBROUTINE contract_spsd
16024#endif
16025#if __MAX_CONTR > 3 || __MAX_CONTR == 3
16026! **************************************************************************************************
16027!> \brief ...
16028!> \param work ...
16029!> \param nl_a ...
16030!> \param nl_b ...
16031!> \param nl_c ...
16032!> \param nl_d ...
16033!> \param sphi_a ...
16034!> \param sphi_b ...
16035!> \param sphi_c ...
16036!> \param sphi_d ...
16037!> \param primitives ...
16038!> \param buffer1 ...
16039!> \param buffer2 ...
16040! **************************************************************************************************
16041 SUBROUTINE contract_spsf(work, &
16042 nl_a, nl_b, nl_c, nl_d, &
16043 sphi_a, sphi_b, sphi_c, sphi_d, &
16044 primitives, &
16045 buffer1, buffer2)
16046 REAL(dp), DIMENSION(1*3*1*10), INTENT(IN) :: work
16047 INTEGER :: nl_a, nl_b, nl_c, nl_d
16048 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
16049 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
16050 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
16051 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
16052 REAL(dp), &
16053 DIMENSION(1*nl_a, 3*nl_b, 1*nl_c, 7*nl_d) :: primitives
16054 REAL(dp), DIMENSION(1*3*1*10) :: buffer1, buffer2
16055
16056 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
16057 kmax, s_offset_a1, s_offset_b1, &
16058 s_offset_c1, s_offset_d1
16059
16060 s_offset_a1 = 0
16061 DO ia = 1, nl_a
16062 s_offset_b1 = 0
16063 DO ib = 1, nl_b
16064 s_offset_c1 = 0
16065 DO ic = 1, nl_c
16066 s_offset_d1 = 0
16067 DO id = 1, nl_d
16068 buffer1 = 0.0_dp
16069 imax = 3*1*10
16070 kmax = 1
16071 DO i = 1, imax
16072 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
16073 END DO
16074 buffer2 = 0.0_dp
16075 imax = 1*1*10
16076 kmax = 3
16077 DO i = 1, imax
16078 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
16079 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
16080 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
16081 END DO
16082 buffer1 = 0.0_dp
16083 imax = 1*3*10
16084 kmax = 1
16085 DO i = 1, imax
16086 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
16087 END DO
16088 imax = 1*3*1
16089 kmax = 10
16090 i = 0
16091 DO i1 = 1, 1
16092 DO i2 = 1, 3
16093 DO i3 = 1, 1
16094 i = i + 1
16095 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
16096 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
16097 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
16098 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
16099 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
16100 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
16101 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
16102 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
16103 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
16104 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
16105 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
16106 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
16107 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
16108 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
16109 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
16110 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
16111 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
16112 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
16113 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
16114 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
16115 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
16116 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
16117 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
16118 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
16119 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
16120 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
16121 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
16122 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
16123 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
16124 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
16125 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
16126 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
16127 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
16128 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
16129 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
16130 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
16131 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
16132 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
16133 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
16134 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
16135 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
16136 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
16137 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
16138 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
16139 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
16140 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
16141 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
16142 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
16143 END DO
16144 END DO
16145 END DO
16146 s_offset_d1 = s_offset_d1 + 7
16147 END DO
16148 s_offset_c1 = s_offset_c1 + 1
16149 END DO
16150 s_offset_b1 = s_offset_b1 + 3
16151 END DO
16152 s_offset_a1 = s_offset_a1 + 1
16153 END DO
16154 END SUBROUTINE contract_spsf
16155#endif
16156#if __MAX_CONTR > 4 || __MAX_CONTR == 4
16157! **************************************************************************************************
16158!> \brief ...
16159!> \param work ...
16160!> \param nl_a ...
16161!> \param nl_b ...
16162!> \param nl_c ...
16163!> \param nl_d ...
16164!> \param sphi_a ...
16165!> \param sphi_b ...
16166!> \param sphi_c ...
16167!> \param sphi_d ...
16168!> \param primitives ...
16169!> \param buffer1 ...
16170!> \param buffer2 ...
16171! **************************************************************************************************
16172 SUBROUTINE contract_spsg(work, &
16173 nl_a, nl_b, nl_c, nl_d, &
16174 sphi_a, sphi_b, sphi_c, sphi_d, &
16175 primitives, &
16176 buffer1, buffer2)
16177 REAL(dp), DIMENSION(1*3*1*15), INTENT(IN) :: work
16178 INTEGER :: nl_a, nl_b, nl_c, nl_d
16179 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
16180 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
16181 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
16182 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
16183 REAL(dp), &
16184 DIMENSION(1*nl_a, 3*nl_b, 1*nl_c, 9*nl_d) :: primitives
16185 REAL(dp), DIMENSION(1*3*1*15) :: buffer1, buffer2
16186
16187 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
16188 kmax, s_offset_a1, s_offset_b1, &
16189 s_offset_c1, s_offset_d1
16190
16191 s_offset_a1 = 0
16192 DO ia = 1, nl_a
16193 s_offset_b1 = 0
16194 DO ib = 1, nl_b
16195 s_offset_c1 = 0
16196 DO ic = 1, nl_c
16197 s_offset_d1 = 0
16198 DO id = 1, nl_d
16199 buffer1 = 0.0_dp
16200 imax = 3*1*15
16201 kmax = 1
16202 DO i = 1, imax
16203 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
16204 END DO
16205 buffer2 = 0.0_dp
16206 imax = 1*1*15
16207 kmax = 3
16208 DO i = 1, imax
16209 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
16210 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
16211 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
16212 END DO
16213 buffer1 = 0.0_dp
16214 imax = 1*3*15
16215 kmax = 1
16216 DO i = 1, imax
16217 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
16218 END DO
16219 imax = 1*3*1
16220 kmax = 15
16221 i = 0
16222 DO i1 = 1, 1
16223 DO i2 = 1, 3
16224 DO i3 = 1, 1
16225 i = i + 1
16226 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
16227 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
16228 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
16229 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
16230 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
16231 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
16232 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
16233 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
16234 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
16235 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
16236 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
16237 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
16238 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
16239 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
16240 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
16241 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
16242 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
16243 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
16244 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
16245 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
16246 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
16247 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
16248 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
16249 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
16250 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
16251 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
16252 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
16253 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
16254 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
16255 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
16256 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
16257 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
16258 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
16259 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
16260 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
16261 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
16262 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
16263 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
16264 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
16265 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
16266 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
16267 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
16268 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
16269 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
16270 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
16271 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
16272 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
16273 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
16274 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
16275 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
16276 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
16277 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
16278 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
16279 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
16280 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
16281 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
16282 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
16283 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
16284 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
16285 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
16286 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
16287 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
16288 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
16289 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
16290 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
16291 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
16292 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
16293 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
16294 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
16295 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
16296 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
16297 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
16298 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
16299 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
16300 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
16301 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
16302 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
16303 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
16304 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
16305 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
16306 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
16307 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
16308 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
16309 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
16310 END DO
16311 END DO
16312 END DO
16313 s_offset_d1 = s_offset_d1 + 9
16314 END DO
16315 s_offset_c1 = s_offset_c1 + 1
16316 END DO
16317 s_offset_b1 = s_offset_b1 + 3
16318 END DO
16319 s_offset_a1 = s_offset_a1 + 1
16320 END DO
16321 END SUBROUTINE contract_spsg
16322#endif
16323#if __MAX_CONTR > 1 || __MAX_CONTR == 1
16324! **************************************************************************************************
16325!> \brief ...
16326!> \param work ...
16327!> \param nl_a ...
16328!> \param nl_b ...
16329!> \param nl_c ...
16330!> \param nl_d ...
16331!> \param sphi_a ...
16332!> \param sphi_b ...
16333!> \param sphi_c ...
16334!> \param sphi_d ...
16335!> \param primitives ...
16336!> \param buffer1 ...
16337!> \param buffer2 ...
16338! **************************************************************************************************
16339 SUBROUTINE contract_spps(work, &
16340 nl_a, nl_b, nl_c, nl_d, &
16341 sphi_a, sphi_b, sphi_c, sphi_d, &
16342 primitives, &
16343 buffer1, buffer2)
16344 REAL(dp), DIMENSION(1*3*3*1), INTENT(IN) :: work
16345 INTEGER :: nl_a, nl_b, nl_c, nl_d
16346 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
16347 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
16348 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
16349 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
16350 REAL(dp), &
16351 DIMENSION(1*nl_a, 3*nl_b, 3*nl_c, 1*nl_d) :: primitives
16352 REAL(dp), DIMENSION(1*3*3*1) :: buffer1, buffer2
16353
16354 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
16355 kmax, s_offset_a1, s_offset_b1, &
16356 s_offset_c1, s_offset_d1
16357
16358 s_offset_a1 = 0
16359 DO ia = 1, nl_a
16360 s_offset_b1 = 0
16361 DO ib = 1, nl_b
16362 s_offset_c1 = 0
16363 DO ic = 1, nl_c
16364 s_offset_d1 = 0
16365 DO id = 1, nl_d
16366 buffer1 = 0.0_dp
16367 imax = 3*3*1
16368 kmax = 1
16369 DO i = 1, imax
16370 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
16371 END DO
16372 buffer2 = 0.0_dp
16373 imax = 1*3*1
16374 kmax = 3
16375 DO i = 1, imax
16376 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
16377 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
16378 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
16379 END DO
16380 buffer1 = 0.0_dp
16381 imax = 1*3*1
16382 kmax = 3
16383 DO i = 1, imax
16384 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
16385 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
16386 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
16387 END DO
16388 imax = 1*3*3
16389 kmax = 1
16390 i = 0
16391 DO i1 = 1, 3
16392 DO i2 = 1, 3
16393 DO i3 = 1, 1
16394 i = i + 1
16395 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
16396 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
16397 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
16398 END DO
16399 END DO
16400 END DO
16401 s_offset_d1 = s_offset_d1 + 1
16402 END DO
16403 s_offset_c1 = s_offset_c1 + 3
16404 END DO
16405 s_offset_b1 = s_offset_b1 + 3
16406 END DO
16407 s_offset_a1 = s_offset_a1 + 1
16408 END DO
16409 END SUBROUTINE contract_spps
16410#endif
16411#if __MAX_CONTR > 1 || __MAX_CONTR == 1
16412! **************************************************************************************************
16413!> \brief ...
16414!> \param work ...
16415!> \param nl_a ...
16416!> \param nl_b ...
16417!> \param nl_c ...
16418!> \param nl_d ...
16419!> \param sphi_a ...
16420!> \param sphi_b ...
16421!> \param sphi_c ...
16422!> \param sphi_d ...
16423!> \param primitives ...
16424!> \param buffer1 ...
16425!> \param buffer2 ...
16426! **************************************************************************************************
16427 SUBROUTINE contract_sppp(work, &
16428 nl_a, nl_b, nl_c, nl_d, &
16429 sphi_a, sphi_b, sphi_c, sphi_d, &
16430 primitives, &
16431 buffer1, buffer2)
16432 REAL(dp), DIMENSION(1*3*3*3), INTENT(IN) :: work
16433 INTEGER :: nl_a, nl_b, nl_c, nl_d
16434 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
16435 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
16436 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
16437 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
16438 REAL(dp), &
16439 DIMENSION(1*nl_a, 3*nl_b, 3*nl_c, 3*nl_d) :: primitives
16440 REAL(dp), DIMENSION(1*3*3*3) :: buffer1, buffer2
16441
16442 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
16443 kmax, s_offset_a1, s_offset_b1, &
16444 s_offset_c1, s_offset_d1
16445
16446 s_offset_a1 = 0
16447 DO ia = 1, nl_a
16448 s_offset_b1 = 0
16449 DO ib = 1, nl_b
16450 s_offset_c1 = 0
16451 DO ic = 1, nl_c
16452 s_offset_d1 = 0
16453 DO id = 1, nl_d
16454 buffer1 = 0.0_dp
16455 imax = 3*3*3
16456 kmax = 1
16457 DO i = 1, imax
16458 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
16459 END DO
16460 buffer2 = 0.0_dp
16461 imax = 1*3*3
16462 kmax = 3
16463 DO i = 1, imax
16464 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
16465 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
16466 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
16467 END DO
16468 buffer1 = 0.0_dp
16469 imax = 1*3*3
16470 kmax = 3
16471 DO i = 1, imax
16472 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
16473 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
16474 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
16475 END DO
16476 imax = 1*3*3
16477 kmax = 3
16478 i = 0
16479 DO i1 = 1, 3
16480 DO i2 = 1, 3
16481 DO i3 = 1, 1
16482 i = i + 1
16483 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
16484 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
16485 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
16486 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
16487 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
16488 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
16489 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
16490 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
16491 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
16492 END DO
16493 END DO
16494 END DO
16495 s_offset_d1 = s_offset_d1 + 3
16496 END DO
16497 s_offset_c1 = s_offset_c1 + 3
16498 END DO
16499 s_offset_b1 = s_offset_b1 + 3
16500 END DO
16501 s_offset_a1 = s_offset_a1 + 1
16502 END DO
16503 END SUBROUTINE contract_sppp
16504#endif
16505#if __MAX_CONTR > 2 || __MAX_CONTR == 2
16506! **************************************************************************************************
16507!> \brief ...
16508!> \param work ...
16509!> \param nl_a ...
16510!> \param nl_b ...
16511!> \param nl_c ...
16512!> \param nl_d ...
16513!> \param sphi_a ...
16514!> \param sphi_b ...
16515!> \param sphi_c ...
16516!> \param sphi_d ...
16517!> \param primitives ...
16518!> \param buffer1 ...
16519!> \param buffer2 ...
16520! **************************************************************************************************
16521 SUBROUTINE contract_sppd(work, &
16522 nl_a, nl_b, nl_c, nl_d, &
16523 sphi_a, sphi_b, sphi_c, sphi_d, &
16524 primitives, &
16525 buffer1, buffer2)
16526 REAL(dp), DIMENSION(1*3*3*6), INTENT(IN) :: work
16527 INTEGER :: nl_a, nl_b, nl_c, nl_d
16528 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
16529 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
16530 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
16531 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
16532 REAL(dp), &
16533 DIMENSION(1*nl_a, 3*nl_b, 3*nl_c, 5*nl_d) :: primitives
16534 REAL(dp), DIMENSION(1*3*3*6) :: buffer1, buffer2
16535
16536 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
16537 kmax, s_offset_a1, s_offset_b1, &
16538 s_offset_c1, s_offset_d1
16539
16540 s_offset_a1 = 0
16541 DO ia = 1, nl_a
16542 s_offset_b1 = 0
16543 DO ib = 1, nl_b
16544 s_offset_c1 = 0
16545 DO ic = 1, nl_c
16546 s_offset_d1 = 0
16547 DO id = 1, nl_d
16548 buffer1 = 0.0_dp
16549 imax = 3*3*6
16550 kmax = 1
16551 DO i = 1, imax
16552 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
16553 END DO
16554 buffer2 = 0.0_dp
16555 imax = 1*3*6
16556 kmax = 3
16557 DO i = 1, imax
16558 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
16559 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
16560 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
16561 END DO
16562 buffer1 = 0.0_dp
16563 imax = 1*3*6
16564 kmax = 3
16565 DO i = 1, imax
16566 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
16567 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
16568 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
16569 END DO
16570 imax = 1*3*3
16571 kmax = 6
16572 i = 0
16573 DO i1 = 1, 3
16574 DO i2 = 1, 3
16575 DO i3 = 1, 1
16576 i = i + 1
16577 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
16578 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
16579 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
16580 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
16581 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
16582 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
16583 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
16584 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
16585 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
16586 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
16587 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
16588 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
16589 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
16590 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
16591 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
16592 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
16593 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
16594 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
16595 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
16596 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
16597 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
16598 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
16599 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
16600 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
16601 END DO
16602 END DO
16603 END DO
16604 s_offset_d1 = s_offset_d1 + 5
16605 END DO
16606 s_offset_c1 = s_offset_c1 + 3
16607 END DO
16608 s_offset_b1 = s_offset_b1 + 3
16609 END DO
16610 s_offset_a1 = s_offset_a1 + 1
16611 END DO
16612 END SUBROUTINE contract_sppd
16613#endif
16614#if __MAX_CONTR > 3 || __MAX_CONTR == 3
16615! **************************************************************************************************
16616!> \brief ...
16617!> \param work ...
16618!> \param nl_a ...
16619!> \param nl_b ...
16620!> \param nl_c ...
16621!> \param nl_d ...
16622!> \param sphi_a ...
16623!> \param sphi_b ...
16624!> \param sphi_c ...
16625!> \param sphi_d ...
16626!> \param primitives ...
16627!> \param buffer1 ...
16628!> \param buffer2 ...
16629! **************************************************************************************************
16630 SUBROUTINE contract_sppf(work, &
16631 nl_a, nl_b, nl_c, nl_d, &
16632 sphi_a, sphi_b, sphi_c, sphi_d, &
16633 primitives, &
16634 buffer1, buffer2)
16635 REAL(dp), DIMENSION(1*3*3*10), INTENT(IN) :: work
16636 INTEGER :: nl_a, nl_b, nl_c, nl_d
16637 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
16638 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
16639 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
16640 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
16641 REAL(dp), &
16642 DIMENSION(1*nl_a, 3*nl_b, 3*nl_c, 7*nl_d) :: primitives
16643 REAL(dp), DIMENSION(1*3*3*10) :: buffer1, buffer2
16644
16645 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
16646 kmax, s_offset_a1, s_offset_b1, &
16647 s_offset_c1, s_offset_d1
16648
16649 s_offset_a1 = 0
16650 DO ia = 1, nl_a
16651 s_offset_b1 = 0
16652 DO ib = 1, nl_b
16653 s_offset_c1 = 0
16654 DO ic = 1, nl_c
16655 s_offset_d1 = 0
16656 DO id = 1, nl_d
16657 buffer1 = 0.0_dp
16658 imax = 3*3*10
16659 kmax = 1
16660 DO i = 1, imax
16661 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
16662 END DO
16663 buffer2 = 0.0_dp
16664 imax = 1*3*10
16665 kmax = 3
16666 DO i = 1, imax
16667 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
16668 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
16669 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
16670 END DO
16671 buffer1 = 0.0_dp
16672 imax = 1*3*10
16673 kmax = 3
16674 DO i = 1, imax
16675 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
16676 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
16677 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
16678 END DO
16679 imax = 1*3*3
16680 kmax = 10
16681 i = 0
16682 DO i1 = 1, 3
16683 DO i2 = 1, 3
16684 DO i3 = 1, 1
16685 i = i + 1
16686 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
16687 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
16688 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
16689 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
16690 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
16691 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
16692 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
16693 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
16694 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
16695 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
16696 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
16697 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
16698 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
16699 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
16700 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
16701 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
16702 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
16703 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
16704 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
16705 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
16706 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
16707 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
16708 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
16709 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
16710 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
16711 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
16712 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
16713 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
16714 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
16715 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
16716 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
16717 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
16718 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
16719 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
16720 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
16721 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
16722 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
16723 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
16724 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
16725 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
16726 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
16727 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
16728 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
16729 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
16730 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
16731 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
16732 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
16733 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
16734 END DO
16735 END DO
16736 END DO
16737 s_offset_d1 = s_offset_d1 + 7
16738 END DO
16739 s_offset_c1 = s_offset_c1 + 3
16740 END DO
16741 s_offset_b1 = s_offset_b1 + 3
16742 END DO
16743 s_offset_a1 = s_offset_a1 + 1
16744 END DO
16745 END SUBROUTINE contract_sppf
16746#endif
16747#if __MAX_CONTR > 4 || __MAX_CONTR == 4
16748! **************************************************************************************************
16749!> \brief ...
16750!> \param work ...
16751!> \param nl_a ...
16752!> \param nl_b ...
16753!> \param nl_c ...
16754!> \param nl_d ...
16755!> \param sphi_a ...
16756!> \param sphi_b ...
16757!> \param sphi_c ...
16758!> \param sphi_d ...
16759!> \param primitives ...
16760!> \param buffer1 ...
16761!> \param buffer2 ...
16762! **************************************************************************************************
16763 SUBROUTINE contract_sppg(work, &
16764 nl_a, nl_b, nl_c, nl_d, &
16765 sphi_a, sphi_b, sphi_c, sphi_d, &
16766 primitives, &
16767 buffer1, buffer2)
16768 REAL(dp), DIMENSION(1*3*3*15), INTENT(IN) :: work
16769 INTEGER :: nl_a, nl_b, nl_c, nl_d
16770 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
16771 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
16772 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
16773 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
16774 REAL(dp), &
16775 DIMENSION(1*nl_a, 3*nl_b, 3*nl_c, 9*nl_d) :: primitives
16776 REAL(dp), DIMENSION(1*3*3*15) :: buffer1, buffer2
16777
16778 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
16779 kmax, s_offset_a1, s_offset_b1, &
16780 s_offset_c1, s_offset_d1
16781
16782 s_offset_a1 = 0
16783 DO ia = 1, nl_a
16784 s_offset_b1 = 0
16785 DO ib = 1, nl_b
16786 s_offset_c1 = 0
16787 DO ic = 1, nl_c
16788 s_offset_d1 = 0
16789 DO id = 1, nl_d
16790 buffer1 = 0.0_dp
16791 imax = 3*3*15
16792 kmax = 1
16793 DO i = 1, imax
16794 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
16795 END DO
16796 buffer2 = 0.0_dp
16797 imax = 1*3*15
16798 kmax = 3
16799 DO i = 1, imax
16800 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
16801 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
16802 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
16803 END DO
16804 buffer1 = 0.0_dp
16805 imax = 1*3*15
16806 kmax = 3
16807 DO i = 1, imax
16808 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
16809 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
16810 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
16811 END DO
16812 imax = 1*3*3
16813 kmax = 15
16814 i = 0
16815 DO i1 = 1, 3
16816 DO i2 = 1, 3
16817 DO i3 = 1, 1
16818 i = i + 1
16819 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
16820 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
16821 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
16822 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
16823 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
16824 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
16825 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
16826 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
16827 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
16828 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
16829 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
16830 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
16831 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
16832 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
16833 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
16834 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
16835 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
16836 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
16837 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
16838 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
16839 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
16840 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
16841 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
16842 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
16843 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
16844 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
16845 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
16846 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
16847 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
16848 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
16849 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
16850 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
16851 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
16852 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
16853 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
16854 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
16855 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
16856 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
16857 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
16858 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
16859 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
16860 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
16861 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
16862 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
16863 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
16864 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
16865 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
16866 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
16867 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
16868 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
16869 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
16870 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
16871 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
16872 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
16873 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
16874 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
16875 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
16876 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
16877 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
16878 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
16879 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
16880 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
16881 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
16882 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
16883 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
16884 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
16885 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
16886 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
16887 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
16888 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
16889 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
16890 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
16891 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
16892 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
16893 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
16894 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
16895 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
16896 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
16897 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
16898 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
16899 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
16900 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
16901 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
16902 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
16903 END DO
16904 END DO
16905 END DO
16906 s_offset_d1 = s_offset_d1 + 9
16907 END DO
16908 s_offset_c1 = s_offset_c1 + 3
16909 END DO
16910 s_offset_b1 = s_offset_b1 + 3
16911 END DO
16912 s_offset_a1 = s_offset_a1 + 1
16913 END DO
16914 END SUBROUTINE contract_sppg
16915#endif
16916#if __MAX_CONTR > 2 || __MAX_CONTR == 2
16917! **************************************************************************************************
16918!> \brief ...
16919!> \param work ...
16920!> \param nl_a ...
16921!> \param nl_b ...
16922!> \param nl_c ...
16923!> \param nl_d ...
16924!> \param sphi_a ...
16925!> \param sphi_b ...
16926!> \param sphi_c ...
16927!> \param sphi_d ...
16928!> \param primitives ...
16929!> \param buffer1 ...
16930!> \param buffer2 ...
16931! **************************************************************************************************
16932 SUBROUTINE contract_spds(work, &
16933 nl_a, nl_b, nl_c, nl_d, &
16934 sphi_a, sphi_b, sphi_c, sphi_d, &
16935 primitives, &
16936 buffer1, buffer2)
16937 REAL(dp), DIMENSION(1*3*6*1), INTENT(IN) :: work
16938 INTEGER :: nl_a, nl_b, nl_c, nl_d
16939 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
16940 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
16941 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
16942 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
16943 REAL(dp), &
16944 DIMENSION(1*nl_a, 3*nl_b, 5*nl_c, 1*nl_d) :: primitives
16945 REAL(dp), DIMENSION(1*3*6*1) :: buffer1, buffer2
16946
16947 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
16948 kmax, s_offset_a1, s_offset_b1, &
16949 s_offset_c1, s_offset_d1
16950
16951 s_offset_a1 = 0
16952 DO ia = 1, nl_a
16953 s_offset_b1 = 0
16954 DO ib = 1, nl_b
16955 s_offset_c1 = 0
16956 DO ic = 1, nl_c
16957 s_offset_d1 = 0
16958 DO id = 1, nl_d
16959 buffer1 = 0.0_dp
16960 imax = 3*6*1
16961 kmax = 1
16962 DO i = 1, imax
16963 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
16964 END DO
16965 buffer2 = 0.0_dp
16966 imax = 1*6*1
16967 kmax = 3
16968 DO i = 1, imax
16969 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
16970 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
16971 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
16972 END DO
16973 buffer1 = 0.0_dp
16974 imax = 1*3*1
16975 kmax = 6
16976 DO i = 1, imax
16977 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
16978 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
16979 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
16980 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
16981 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
16982 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
16983 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
16984 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
16985 END DO
16986 imax = 1*3*5
16987 kmax = 1
16988 i = 0
16989 DO i1 = 1, 5
16990 DO i2 = 1, 3
16991 DO i3 = 1, 1
16992 i = i + 1
16993 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
16994 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
16995 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
16996 END DO
16997 END DO
16998 END DO
16999 s_offset_d1 = s_offset_d1 + 1
17000 END DO
17001 s_offset_c1 = s_offset_c1 + 5
17002 END DO
17003 s_offset_b1 = s_offset_b1 + 3
17004 END DO
17005 s_offset_a1 = s_offset_a1 + 1
17006 END DO
17007 END SUBROUTINE contract_spds
17008#endif
17009#if __MAX_CONTR > 2 || __MAX_CONTR == 2
17010! **************************************************************************************************
17011!> \brief ...
17012!> \param work ...
17013!> \param nl_a ...
17014!> \param nl_b ...
17015!> \param nl_c ...
17016!> \param nl_d ...
17017!> \param sphi_a ...
17018!> \param sphi_b ...
17019!> \param sphi_c ...
17020!> \param sphi_d ...
17021!> \param primitives ...
17022!> \param buffer1 ...
17023!> \param buffer2 ...
17024! **************************************************************************************************
17025 SUBROUTINE contract_spdp(work, &
17026 nl_a, nl_b, nl_c, nl_d, &
17027 sphi_a, sphi_b, sphi_c, sphi_d, &
17028 primitives, &
17029 buffer1, buffer2)
17030 REAL(dp), DIMENSION(1*3*6*3), INTENT(IN) :: work
17031 INTEGER :: nl_a, nl_b, nl_c, nl_d
17032 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
17033 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
17034 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
17035 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
17036 REAL(dp), &
17037 DIMENSION(1*nl_a, 3*nl_b, 5*nl_c, 3*nl_d) :: primitives
17038 REAL(dp), DIMENSION(1*3*6*3) :: buffer1, buffer2
17039
17040 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
17041 kmax, s_offset_a1, s_offset_b1, &
17042 s_offset_c1, s_offset_d1
17043
17044 s_offset_a1 = 0
17045 DO ia = 1, nl_a
17046 s_offset_b1 = 0
17047 DO ib = 1, nl_b
17048 s_offset_c1 = 0
17049 DO ic = 1, nl_c
17050 s_offset_d1 = 0
17051 DO id = 1, nl_d
17052 buffer1 = 0.0_dp
17053 imax = 3*6*3
17054 kmax = 1
17055 DO i = 1, imax
17056 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
17057 END DO
17058 buffer2 = 0.0_dp
17059 imax = 1*6*3
17060 kmax = 3
17061 DO i = 1, imax
17062 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
17063 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
17064 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
17065 END DO
17066 buffer1 = 0.0_dp
17067 imax = 1*3*3
17068 kmax = 6
17069 DO i = 1, imax
17070 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
17071 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
17072 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
17073 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
17074 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
17075 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
17076 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
17077 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
17078 END DO
17079 imax = 1*3*5
17080 kmax = 3
17081 i = 0
17082 DO i1 = 1, 5
17083 DO i2 = 1, 3
17084 DO i3 = 1, 1
17085 i = i + 1
17086 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
17087 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
17088 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
17089 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
17090 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
17091 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
17092 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
17093 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
17094 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
17095 END DO
17096 END DO
17097 END DO
17098 s_offset_d1 = s_offset_d1 + 3
17099 END DO
17100 s_offset_c1 = s_offset_c1 + 5
17101 END DO
17102 s_offset_b1 = s_offset_b1 + 3
17103 END DO
17104 s_offset_a1 = s_offset_a1 + 1
17105 END DO
17106 END SUBROUTINE contract_spdp
17107#endif
17108#if __MAX_CONTR > 2 || __MAX_CONTR == 2
17109! **************************************************************************************************
17110!> \brief ...
17111!> \param work ...
17112!> \param nl_a ...
17113!> \param nl_b ...
17114!> \param nl_c ...
17115!> \param nl_d ...
17116!> \param sphi_a ...
17117!> \param sphi_b ...
17118!> \param sphi_c ...
17119!> \param sphi_d ...
17120!> \param primitives ...
17121!> \param buffer1 ...
17122!> \param buffer2 ...
17123! **************************************************************************************************
17124 SUBROUTINE contract_spdd(work, &
17125 nl_a, nl_b, nl_c, nl_d, &
17126 sphi_a, sphi_b, sphi_c, sphi_d, &
17127 primitives, &
17128 buffer1, buffer2)
17129 REAL(dp), DIMENSION(1*3*6*6), INTENT(IN) :: work
17130 INTEGER :: nl_a, nl_b, nl_c, nl_d
17131 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
17132 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
17133 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
17134 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
17135 REAL(dp), &
17136 DIMENSION(1*nl_a, 3*nl_b, 5*nl_c, 5*nl_d) :: primitives
17137 REAL(dp), DIMENSION(1*3*6*6) :: buffer1, buffer2
17138
17139 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
17140 kmax, s_offset_a1, s_offset_b1, &
17141 s_offset_c1, s_offset_d1
17142
17143 s_offset_a1 = 0
17144 DO ia = 1, nl_a
17145 s_offset_b1 = 0
17146 DO ib = 1, nl_b
17147 s_offset_c1 = 0
17148 DO ic = 1, nl_c
17149 s_offset_d1 = 0
17150 DO id = 1, nl_d
17151 buffer1 = 0.0_dp
17152 imax = 3*6*6
17153 kmax = 1
17154 DO i = 1, imax
17155 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
17156 END DO
17157 buffer2 = 0.0_dp
17158 imax = 1*6*6
17159 kmax = 3
17160 DO i = 1, imax
17161 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
17162 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
17163 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
17164 END DO
17165 buffer1 = 0.0_dp
17166 imax = 1*3*6
17167 kmax = 6
17168 DO i = 1, imax
17169 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
17170 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
17171 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
17172 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
17173 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
17174 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
17175 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
17176 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
17177 END DO
17178 imax = 1*3*5
17179 kmax = 6
17180 i = 0
17181 DO i1 = 1, 5
17182 DO i2 = 1, 3
17183 DO i3 = 1, 1
17184 i = i + 1
17185 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
17186 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
17187 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
17188 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
17189 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
17190 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
17191 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
17192 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
17193 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
17194 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
17195 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
17196 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
17197 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
17198 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
17199 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
17200 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
17201 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
17202 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
17203 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
17204 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
17205 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
17206 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
17207 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
17208 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
17209 END DO
17210 END DO
17211 END DO
17212 s_offset_d1 = s_offset_d1 + 5
17213 END DO
17214 s_offset_c1 = s_offset_c1 + 5
17215 END DO
17216 s_offset_b1 = s_offset_b1 + 3
17217 END DO
17218 s_offset_a1 = s_offset_a1 + 1
17219 END DO
17220 END SUBROUTINE contract_spdd
17221#endif
17222#if __MAX_CONTR > 3 || __MAX_CONTR == 3
17223! **************************************************************************************************
17224!> \brief ...
17225!> \param work ...
17226!> \param nl_a ...
17227!> \param nl_b ...
17228!> \param nl_c ...
17229!> \param nl_d ...
17230!> \param sphi_a ...
17231!> \param sphi_b ...
17232!> \param sphi_c ...
17233!> \param sphi_d ...
17234!> \param primitives ...
17235!> \param buffer1 ...
17236!> \param buffer2 ...
17237! **************************************************************************************************
17238 SUBROUTINE contract_spdf(work, &
17239 nl_a, nl_b, nl_c, nl_d, &
17240 sphi_a, sphi_b, sphi_c, sphi_d, &
17241 primitives, &
17242 buffer1, buffer2)
17243 REAL(dp), DIMENSION(1*3*6*10), INTENT(IN) :: work
17244 INTEGER :: nl_a, nl_b, nl_c, nl_d
17245 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
17246 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
17247 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
17248 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
17249 REAL(dp), &
17250 DIMENSION(1*nl_a, 3*nl_b, 5*nl_c, 7*nl_d) :: primitives
17251 REAL(dp), DIMENSION(1*3*6*10) :: buffer1, buffer2
17252
17253 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
17254 kmax, s_offset_a1, s_offset_b1, &
17255 s_offset_c1, s_offset_d1
17256
17257 s_offset_a1 = 0
17258 DO ia = 1, nl_a
17259 s_offset_b1 = 0
17260 DO ib = 1, nl_b
17261 s_offset_c1 = 0
17262 DO ic = 1, nl_c
17263 s_offset_d1 = 0
17264 DO id = 1, nl_d
17265 buffer1 = 0.0_dp
17266 imax = 3*6*10
17267 kmax = 1
17268 DO i = 1, imax
17269 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
17270 END DO
17271 buffer2 = 0.0_dp
17272 imax = 1*6*10
17273 kmax = 3
17274 DO i = 1, imax
17275 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
17276 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
17277 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
17278 END DO
17279 buffer1 = 0.0_dp
17280 imax = 1*3*10
17281 kmax = 6
17282 DO i = 1, imax
17283 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
17284 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
17285 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
17286 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
17287 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
17288 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
17289 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
17290 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
17291 END DO
17292 imax = 1*3*5
17293 kmax = 10
17294 i = 0
17295 DO i1 = 1, 5
17296 DO i2 = 1, 3
17297 DO i3 = 1, 1
17298 i = i + 1
17299 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
17300 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
17301 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
17302 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
17303 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
17304 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
17305 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
17306 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
17307 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
17308 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
17309 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
17310 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
17311 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
17312 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
17313 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
17314 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
17315 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
17316 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
17317 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
17318 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
17319 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
17320 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
17321 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
17322 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
17323 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
17324 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
17325 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
17326 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
17327 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
17328 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
17329 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
17330 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
17331 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
17332 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
17333 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
17334 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
17335 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
17336 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
17337 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
17338 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
17339 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
17340 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
17341 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
17342 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
17343 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
17344 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
17345 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
17346 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
17347 END DO
17348 END DO
17349 END DO
17350 s_offset_d1 = s_offset_d1 + 7
17351 END DO
17352 s_offset_c1 = s_offset_c1 + 5
17353 END DO
17354 s_offset_b1 = s_offset_b1 + 3
17355 END DO
17356 s_offset_a1 = s_offset_a1 + 1
17357 END DO
17358 END SUBROUTINE contract_spdf
17359#endif
17360#if __MAX_CONTR > 4 || __MAX_CONTR == 4
17361! **************************************************************************************************
17362!> \brief ...
17363!> \param work ...
17364!> \param nl_a ...
17365!> \param nl_b ...
17366!> \param nl_c ...
17367!> \param nl_d ...
17368!> \param sphi_a ...
17369!> \param sphi_b ...
17370!> \param sphi_c ...
17371!> \param sphi_d ...
17372!> \param primitives ...
17373!> \param buffer1 ...
17374!> \param buffer2 ...
17375! **************************************************************************************************
17376 SUBROUTINE contract_spdg(work, &
17377 nl_a, nl_b, nl_c, nl_d, &
17378 sphi_a, sphi_b, sphi_c, sphi_d, &
17379 primitives, &
17380 buffer1, buffer2)
17381 REAL(dp), DIMENSION(1*3*6*15), INTENT(IN) :: work
17382 INTEGER :: nl_a, nl_b, nl_c, nl_d
17383 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
17384 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
17385 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
17386 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
17387 REAL(dp), &
17388 DIMENSION(1*nl_a, 3*nl_b, 5*nl_c, 9*nl_d) :: primitives
17389 REAL(dp), DIMENSION(1*3*6*15) :: buffer1, buffer2
17390
17391 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
17392 kmax, s_offset_a1, s_offset_b1, &
17393 s_offset_c1, s_offset_d1
17394
17395 s_offset_a1 = 0
17396 DO ia = 1, nl_a
17397 s_offset_b1 = 0
17398 DO ib = 1, nl_b
17399 s_offset_c1 = 0
17400 DO ic = 1, nl_c
17401 s_offset_d1 = 0
17402 DO id = 1, nl_d
17403 buffer1 = 0.0_dp
17404 imax = 3*6*15
17405 kmax = 1
17406 DO i = 1, imax
17407 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
17408 END DO
17409 buffer2 = 0.0_dp
17410 imax = 1*6*15
17411 kmax = 3
17412 DO i = 1, imax
17413 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
17414 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
17415 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
17416 END DO
17417 buffer1 = 0.0_dp
17418 imax = 1*3*15
17419 kmax = 6
17420 DO i = 1, imax
17421 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
17422 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
17423 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
17424 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
17425 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
17426 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
17427 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
17428 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
17429 END DO
17430 imax = 1*3*5
17431 kmax = 15
17432 i = 0
17433 DO i1 = 1, 5
17434 DO i2 = 1, 3
17435 DO i3 = 1, 1
17436 i = i + 1
17437 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
17438 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
17439 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
17440 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
17441 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
17442 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
17443 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
17444 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
17445 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
17446 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
17447 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
17448 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
17449 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
17450 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
17451 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
17452 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
17453 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
17454 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
17455 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
17456 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
17457 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
17458 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
17459 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
17460 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
17461 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
17462 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
17463 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
17464 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
17465 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
17466 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
17467 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
17468 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
17469 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
17470 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
17471 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
17472 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
17473 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
17474 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
17475 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
17476 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
17477 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
17478 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
17479 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
17480 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
17481 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
17482 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
17483 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
17484 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
17485 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
17486 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
17487 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
17488 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
17489 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
17490 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
17491 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
17492 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
17493 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
17494 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
17495 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
17496 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
17497 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
17498 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
17499 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
17500 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
17501 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
17502 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
17503 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
17504 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
17505 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
17506 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
17507 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
17508 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
17509 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
17510 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
17511 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
17512 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
17513 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
17514 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
17515 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
17516 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
17517 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
17518 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
17519 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
17520 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
17521 END DO
17522 END DO
17523 END DO
17524 s_offset_d1 = s_offset_d1 + 9
17525 END DO
17526 s_offset_c1 = s_offset_c1 + 5
17527 END DO
17528 s_offset_b1 = s_offset_b1 + 3
17529 END DO
17530 s_offset_a1 = s_offset_a1 + 1
17531 END DO
17532 END SUBROUTINE contract_spdg
17533#endif
17534#if __MAX_CONTR > 3 || __MAX_CONTR == 3
17535! **************************************************************************************************
17536!> \brief ...
17537!> \param work ...
17538!> \param nl_a ...
17539!> \param nl_b ...
17540!> \param nl_c ...
17541!> \param nl_d ...
17542!> \param sphi_a ...
17543!> \param sphi_b ...
17544!> \param sphi_c ...
17545!> \param sphi_d ...
17546!> \param primitives ...
17547!> \param buffer1 ...
17548!> \param buffer2 ...
17549! **************************************************************************************************
17550 SUBROUTINE contract_spfs(work, &
17551 nl_a, nl_b, nl_c, nl_d, &
17552 sphi_a, sphi_b, sphi_c, sphi_d, &
17553 primitives, &
17554 buffer1, buffer2)
17555 REAL(dp), DIMENSION(1*3*10*1), INTENT(IN) :: work
17556 INTEGER :: nl_a, nl_b, nl_c, nl_d
17557 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
17558 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
17559 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
17560 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
17561 REAL(dp), &
17562 DIMENSION(1*nl_a, 3*nl_b, 7*nl_c, 1*nl_d) :: primitives
17563 REAL(dp), DIMENSION(1*3*10*1) :: buffer1, buffer2
17564
17565 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
17566 kmax, s_offset_a1, s_offset_b1, &
17567 s_offset_c1, s_offset_d1
17568
17569 s_offset_a1 = 0
17570 DO ia = 1, nl_a
17571 s_offset_b1 = 0
17572 DO ib = 1, nl_b
17573 s_offset_c1 = 0
17574 DO ic = 1, nl_c
17575 s_offset_d1 = 0
17576 DO id = 1, nl_d
17577 buffer1 = 0.0_dp
17578 imax = 3*10*1
17579 kmax = 1
17580 DO i = 1, imax
17581 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
17582 END DO
17583 buffer2 = 0.0_dp
17584 imax = 1*10*1
17585 kmax = 3
17586 DO i = 1, imax
17587 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
17588 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
17589 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
17590 END DO
17591 buffer1 = 0.0_dp
17592 imax = 1*3*1
17593 kmax = 10
17594 DO i = 1, imax
17595 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
17596 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
17597 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
17598 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
17599 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
17600 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
17601 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
17602 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
17603 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
17604 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
17605 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
17606 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
17607 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
17608 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
17609 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
17610 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
17611 END DO
17612 imax = 1*3*7
17613 kmax = 1
17614 i = 0
17615 DO i1 = 1, 7
17616 DO i2 = 1, 3
17617 DO i3 = 1, 1
17618 i = i + 1
17619 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
17620 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
17621 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
17622 END DO
17623 END DO
17624 END DO
17625 s_offset_d1 = s_offset_d1 + 1
17626 END DO
17627 s_offset_c1 = s_offset_c1 + 7
17628 END DO
17629 s_offset_b1 = s_offset_b1 + 3
17630 END DO
17631 s_offset_a1 = s_offset_a1 + 1
17632 END DO
17633 END SUBROUTINE contract_spfs
17634#endif
17635#if __MAX_CONTR > 3 || __MAX_CONTR == 3
17636! **************************************************************************************************
17637!> \brief ...
17638!> \param work ...
17639!> \param nl_a ...
17640!> \param nl_b ...
17641!> \param nl_c ...
17642!> \param nl_d ...
17643!> \param sphi_a ...
17644!> \param sphi_b ...
17645!> \param sphi_c ...
17646!> \param sphi_d ...
17647!> \param primitives ...
17648!> \param buffer1 ...
17649!> \param buffer2 ...
17650! **************************************************************************************************
17651 SUBROUTINE contract_spfp(work, &
17652 nl_a, nl_b, nl_c, nl_d, &
17653 sphi_a, sphi_b, sphi_c, sphi_d, &
17654 primitives, &
17655 buffer1, buffer2)
17656 REAL(dp), DIMENSION(1*3*10*3), INTENT(IN) :: work
17657 INTEGER :: nl_a, nl_b, nl_c, nl_d
17658 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
17659 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
17660 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
17661 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
17662 REAL(dp), &
17663 DIMENSION(1*nl_a, 3*nl_b, 7*nl_c, 3*nl_d) :: primitives
17664 REAL(dp), DIMENSION(1*3*10*3) :: buffer1, buffer2
17665
17666 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
17667 kmax, s_offset_a1, s_offset_b1, &
17668 s_offset_c1, s_offset_d1
17669
17670 s_offset_a1 = 0
17671 DO ia = 1, nl_a
17672 s_offset_b1 = 0
17673 DO ib = 1, nl_b
17674 s_offset_c1 = 0
17675 DO ic = 1, nl_c
17676 s_offset_d1 = 0
17677 DO id = 1, nl_d
17678 buffer1 = 0.0_dp
17679 imax = 3*10*3
17680 kmax = 1
17681 DO i = 1, imax
17682 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
17683 END DO
17684 buffer2 = 0.0_dp
17685 imax = 1*10*3
17686 kmax = 3
17687 DO i = 1, imax
17688 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
17689 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
17690 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
17691 END DO
17692 buffer1 = 0.0_dp
17693 imax = 1*3*3
17694 kmax = 10
17695 DO i = 1, imax
17696 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
17697 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
17698 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
17699 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
17700 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
17701 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
17702 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
17703 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
17704 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
17705 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
17706 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
17707 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
17708 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
17709 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
17710 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
17711 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
17712 END DO
17713 imax = 1*3*7
17714 kmax = 3
17715 i = 0
17716 DO i1 = 1, 7
17717 DO i2 = 1, 3
17718 DO i3 = 1, 1
17719 i = i + 1
17720 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
17721 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
17722 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
17723 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
17724 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
17725 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
17726 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
17727 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
17728 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
17729 END DO
17730 END DO
17731 END DO
17732 s_offset_d1 = s_offset_d1 + 3
17733 END DO
17734 s_offset_c1 = s_offset_c1 + 7
17735 END DO
17736 s_offset_b1 = s_offset_b1 + 3
17737 END DO
17738 s_offset_a1 = s_offset_a1 + 1
17739 END DO
17740 END SUBROUTINE contract_spfp
17741#endif
17742#if __MAX_CONTR > 3 || __MAX_CONTR == 3
17743! **************************************************************************************************
17744!> \brief ...
17745!> \param work ...
17746!> \param nl_a ...
17747!> \param nl_b ...
17748!> \param nl_c ...
17749!> \param nl_d ...
17750!> \param sphi_a ...
17751!> \param sphi_b ...
17752!> \param sphi_c ...
17753!> \param sphi_d ...
17754!> \param primitives ...
17755!> \param buffer1 ...
17756!> \param buffer2 ...
17757! **************************************************************************************************
17758 SUBROUTINE contract_spfd(work, &
17759 nl_a, nl_b, nl_c, nl_d, &
17760 sphi_a, sphi_b, sphi_c, sphi_d, &
17761 primitives, &
17762 buffer1, buffer2)
17763 REAL(dp), DIMENSION(1*3*10*6), INTENT(IN) :: work
17764 INTEGER :: nl_a, nl_b, nl_c, nl_d
17765 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
17766 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
17767 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
17768 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
17769 REAL(dp), &
17770 DIMENSION(1*nl_a, 3*nl_b, 7*nl_c, 5*nl_d) :: primitives
17771 REAL(dp), DIMENSION(1*3*10*6) :: buffer1, buffer2
17772
17773 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
17774 kmax, s_offset_a1, s_offset_b1, &
17775 s_offset_c1, s_offset_d1
17776
17777 s_offset_a1 = 0
17778 DO ia = 1, nl_a
17779 s_offset_b1 = 0
17780 DO ib = 1, nl_b
17781 s_offset_c1 = 0
17782 DO ic = 1, nl_c
17783 s_offset_d1 = 0
17784 DO id = 1, nl_d
17785 buffer1 = 0.0_dp
17786 imax = 3*10*6
17787 kmax = 1
17788 DO i = 1, imax
17789 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
17790 END DO
17791 buffer2 = 0.0_dp
17792 imax = 1*10*6
17793 kmax = 3
17794 DO i = 1, imax
17795 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
17796 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
17797 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
17798 END DO
17799 buffer1 = 0.0_dp
17800 imax = 1*3*6
17801 kmax = 10
17802 DO i = 1, imax
17803 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
17804 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
17805 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
17806 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
17807 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
17808 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
17809 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
17810 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
17811 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
17812 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
17813 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
17814 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
17815 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
17816 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
17817 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
17818 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
17819 END DO
17820 imax = 1*3*7
17821 kmax = 6
17822 i = 0
17823 DO i1 = 1, 7
17824 DO i2 = 1, 3
17825 DO i3 = 1, 1
17826 i = i + 1
17827 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
17828 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
17829 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
17830 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
17831 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
17832 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
17833 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
17834 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
17835 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
17836 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
17837 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
17838 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
17839 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
17840 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
17841 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
17842 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
17843 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
17844 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
17845 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
17846 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
17847 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
17848 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
17849 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
17850 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
17851 END DO
17852 END DO
17853 END DO
17854 s_offset_d1 = s_offset_d1 + 5
17855 END DO
17856 s_offset_c1 = s_offset_c1 + 7
17857 END DO
17858 s_offset_b1 = s_offset_b1 + 3
17859 END DO
17860 s_offset_a1 = s_offset_a1 + 1
17861 END DO
17862 END SUBROUTINE contract_spfd
17863#endif
17864#if __MAX_CONTR > 3 || __MAX_CONTR == 3
17865! **************************************************************************************************
17866!> \brief ...
17867!> \param work ...
17868!> \param nl_a ...
17869!> \param nl_b ...
17870!> \param nl_c ...
17871!> \param nl_d ...
17872!> \param sphi_a ...
17873!> \param sphi_b ...
17874!> \param sphi_c ...
17875!> \param sphi_d ...
17876!> \param primitives ...
17877!> \param buffer1 ...
17878!> \param buffer2 ...
17879! **************************************************************************************************
17880 SUBROUTINE contract_spff(work, &
17881 nl_a, nl_b, nl_c, nl_d, &
17882 sphi_a, sphi_b, sphi_c, sphi_d, &
17883 primitives, &
17884 buffer1, buffer2)
17885 REAL(dp), DIMENSION(1*3*10*10), INTENT(IN) :: work
17886 INTEGER :: nl_a, nl_b, nl_c, nl_d
17887 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
17888 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
17889 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
17890 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
17891 REAL(dp), &
17892 DIMENSION(1*nl_a, 3*nl_b, 7*nl_c, 7*nl_d) :: primitives
17893 REAL(dp), DIMENSION(1*3*10*10) :: buffer1, buffer2
17894
17895 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
17896 kmax, s_offset_a1, s_offset_b1, &
17897 s_offset_c1, s_offset_d1
17898
17899 s_offset_a1 = 0
17900 DO ia = 1, nl_a
17901 s_offset_b1 = 0
17902 DO ib = 1, nl_b
17903 s_offset_c1 = 0
17904 DO ic = 1, nl_c
17905 s_offset_d1 = 0
17906 DO id = 1, nl_d
17907 buffer1 = 0.0_dp
17908 imax = 3*10*10
17909 kmax = 1
17910 DO i = 1, imax
17911 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
17912 END DO
17913 buffer2 = 0.0_dp
17914 imax = 1*10*10
17915 kmax = 3
17916 DO i = 1, imax
17917 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
17918 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
17919 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
17920 END DO
17921 buffer1 = 0.0_dp
17922 imax = 1*3*10
17923 kmax = 10
17924 DO i = 1, imax
17925 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
17926 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
17927 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
17928 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
17929 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
17930 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
17931 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
17932 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
17933 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
17934 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
17935 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
17936 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
17937 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
17938 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
17939 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
17940 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
17941 END DO
17942 imax = 1*3*7
17943 kmax = 10
17944 i = 0
17945 DO i1 = 1, 7
17946 DO i2 = 1, 3
17947 DO i3 = 1, 1
17948 i = i + 1
17949 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
17950 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
17951 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
17952 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
17953 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
17954 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
17955 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
17956 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
17957 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
17958 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
17959 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
17960 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
17961 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
17962 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
17963 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
17964 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
17965 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
17966 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
17967 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
17968 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
17969 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
17970 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
17971 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
17972 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
17973 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
17974 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
17975 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
17976 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
17977 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
17978 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
17979 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
17980 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
17981 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
17982 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
17983 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
17984 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
17985 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
17986 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
17987 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
17988 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
17989 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
17990 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
17991 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
17992 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
17993 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
17994 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
17995 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
17996 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
17997 END DO
17998 END DO
17999 END DO
18000 s_offset_d1 = s_offset_d1 + 7
18001 END DO
18002 s_offset_c1 = s_offset_c1 + 7
18003 END DO
18004 s_offset_b1 = s_offset_b1 + 3
18005 END DO
18006 s_offset_a1 = s_offset_a1 + 1
18007 END DO
18008 END SUBROUTINE contract_spff
18009#endif
18010#if __MAX_CONTR > 4 || __MAX_CONTR == 4
18011! **************************************************************************************************
18012!> \brief ...
18013!> \param work ...
18014!> \param nl_a ...
18015!> \param nl_b ...
18016!> \param nl_c ...
18017!> \param nl_d ...
18018!> \param sphi_a ...
18019!> \param sphi_b ...
18020!> \param sphi_c ...
18021!> \param sphi_d ...
18022!> \param primitives ...
18023!> \param buffer1 ...
18024!> \param buffer2 ...
18025! **************************************************************************************************
18026 SUBROUTINE contract_spfg(work, &
18027 nl_a, nl_b, nl_c, nl_d, &
18028 sphi_a, sphi_b, sphi_c, sphi_d, &
18029 primitives, &
18030 buffer1, buffer2)
18031 REAL(dp), DIMENSION(1*3*10*15), INTENT(IN) :: work
18032 INTEGER :: nl_a, nl_b, nl_c, nl_d
18033 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
18034 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
18035 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
18036 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
18037 REAL(dp), &
18038 DIMENSION(1*nl_a, 3*nl_b, 7*nl_c, 9*nl_d) :: primitives
18039 REAL(dp), DIMENSION(1*3*10*15) :: buffer1, buffer2
18040
18041 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
18042 kmax, s_offset_a1, s_offset_b1, &
18043 s_offset_c1, s_offset_d1
18044
18045 s_offset_a1 = 0
18046 DO ia = 1, nl_a
18047 s_offset_b1 = 0
18048 DO ib = 1, nl_b
18049 s_offset_c1 = 0
18050 DO ic = 1, nl_c
18051 s_offset_d1 = 0
18052 DO id = 1, nl_d
18053 buffer1 = 0.0_dp
18054 imax = 3*10*15
18055 kmax = 1
18056 DO i = 1, imax
18057 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
18058 END DO
18059 buffer2 = 0.0_dp
18060 imax = 1*10*15
18061 kmax = 3
18062 DO i = 1, imax
18063 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
18064 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
18065 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
18066 END DO
18067 buffer1 = 0.0_dp
18068 imax = 1*3*15
18069 kmax = 10
18070 DO i = 1, imax
18071 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
18072 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
18073 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
18074 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
18075 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
18076 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
18077 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
18078 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
18079 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
18080 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
18081 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
18082 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
18083 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
18084 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
18085 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
18086 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
18087 END DO
18088 imax = 1*3*7
18089 kmax = 15
18090 i = 0
18091 DO i1 = 1, 7
18092 DO i2 = 1, 3
18093 DO i3 = 1, 1
18094 i = i + 1
18095 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
18096 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
18097 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
18098 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
18099 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
18100 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
18101 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
18102 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
18103 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
18104 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
18105 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
18106 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
18107 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
18108 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
18109 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
18110 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
18111 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
18112 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
18113 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
18114 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
18115 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
18116 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
18117 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
18118 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
18119 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
18120 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
18121 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
18122 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
18123 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
18124 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
18125 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
18126 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
18127 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
18128 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
18129 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
18130 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
18131 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
18132 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
18133 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
18134 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
18135 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
18136 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
18137 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
18138 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
18139 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
18140 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
18141 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
18142 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
18143 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
18144 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
18145 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
18146 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
18147 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
18148 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
18149 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
18150 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
18151 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
18152 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
18153 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
18154 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
18155 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
18156 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
18157 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
18158 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
18159 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
18160 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
18161 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
18162 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
18163 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
18164 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
18165 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
18166 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
18167 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
18168 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
18169 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
18170 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
18171 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
18172 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
18173 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
18174 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
18175 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
18176 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
18177 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
18178 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
18179 END DO
18180 END DO
18181 END DO
18182 s_offset_d1 = s_offset_d1 + 9
18183 END DO
18184 s_offset_c1 = s_offset_c1 + 7
18185 END DO
18186 s_offset_b1 = s_offset_b1 + 3
18187 END DO
18188 s_offset_a1 = s_offset_a1 + 1
18189 END DO
18190 END SUBROUTINE contract_spfg
18191#endif
18192#if __MAX_CONTR > 4 || __MAX_CONTR == 4
18193! **************************************************************************************************
18194!> \brief ...
18195!> \param work ...
18196!> \param nl_a ...
18197!> \param nl_b ...
18198!> \param nl_c ...
18199!> \param nl_d ...
18200!> \param sphi_a ...
18201!> \param sphi_b ...
18202!> \param sphi_c ...
18203!> \param sphi_d ...
18204!> \param primitives ...
18205!> \param buffer1 ...
18206!> \param buffer2 ...
18207! **************************************************************************************************
18208 SUBROUTINE contract_spgs(work, &
18209 nl_a, nl_b, nl_c, nl_d, &
18210 sphi_a, sphi_b, sphi_c, sphi_d, &
18211 primitives, &
18212 buffer1, buffer2)
18213 REAL(dp), DIMENSION(1*3*15*1), INTENT(IN) :: work
18214 INTEGER :: nl_a, nl_b, nl_c, nl_d
18215 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
18216 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
18217 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
18218 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
18219 REAL(dp), &
18220 DIMENSION(1*nl_a, 3*nl_b, 9*nl_c, 1*nl_d) :: primitives
18221 REAL(dp), DIMENSION(1*3*15*1) :: buffer1, buffer2
18222
18223 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
18224 kmax, s_offset_a1, s_offset_b1, &
18225 s_offset_c1, s_offset_d1
18226
18227 s_offset_a1 = 0
18228 DO ia = 1, nl_a
18229 s_offset_b1 = 0
18230 DO ib = 1, nl_b
18231 s_offset_c1 = 0
18232 DO ic = 1, nl_c
18233 s_offset_d1 = 0
18234 DO id = 1, nl_d
18235 buffer1 = 0.0_dp
18236 imax = 3*15*1
18237 kmax = 1
18238 DO i = 1, imax
18239 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
18240 END DO
18241 buffer2 = 0.0_dp
18242 imax = 1*15*1
18243 kmax = 3
18244 DO i = 1, imax
18245 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
18246 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
18247 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
18248 END DO
18249 buffer1 = 0.0_dp
18250 imax = 1*3*1
18251 kmax = 15
18252 DO i = 1, imax
18253 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
18254 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
18255 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
18256 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
18257 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
18258 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
18259 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
18260 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
18261 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
18262 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
18263 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
18264 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
18265 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
18266 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
18267 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
18268 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
18269 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
18270 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
18271 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
18272 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
18273 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
18274 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
18275 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
18276 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
18277 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
18278 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
18279 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
18280 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
18281 END DO
18282 imax = 1*3*9
18283 kmax = 1
18284 i = 0
18285 DO i1 = 1, 9
18286 DO i2 = 1, 3
18287 DO i3 = 1, 1
18288 i = i + 1
18289 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
18290 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
18291 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
18292 END DO
18293 END DO
18294 END DO
18295 s_offset_d1 = s_offset_d1 + 1
18296 END DO
18297 s_offset_c1 = s_offset_c1 + 9
18298 END DO
18299 s_offset_b1 = s_offset_b1 + 3
18300 END DO
18301 s_offset_a1 = s_offset_a1 + 1
18302 END DO
18303 END SUBROUTINE contract_spgs
18304#endif
18305#if __MAX_CONTR > 4 || __MAX_CONTR == 4
18306! **************************************************************************************************
18307!> \brief ...
18308!> \param work ...
18309!> \param nl_a ...
18310!> \param nl_b ...
18311!> \param nl_c ...
18312!> \param nl_d ...
18313!> \param sphi_a ...
18314!> \param sphi_b ...
18315!> \param sphi_c ...
18316!> \param sphi_d ...
18317!> \param primitives ...
18318!> \param buffer1 ...
18319!> \param buffer2 ...
18320! **************************************************************************************************
18321 SUBROUTINE contract_spgp(work, &
18322 nl_a, nl_b, nl_c, nl_d, &
18323 sphi_a, sphi_b, sphi_c, sphi_d, &
18324 primitives, &
18325 buffer1, buffer2)
18326 REAL(dp), DIMENSION(1*3*15*3), INTENT(IN) :: work
18327 INTEGER :: nl_a, nl_b, nl_c, nl_d
18328 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
18329 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
18330 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
18331 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
18332 REAL(dp), &
18333 DIMENSION(1*nl_a, 3*nl_b, 9*nl_c, 3*nl_d) :: primitives
18334 REAL(dp), DIMENSION(1*3*15*3) :: buffer1, buffer2
18335
18336 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
18337 kmax, s_offset_a1, s_offset_b1, &
18338 s_offset_c1, s_offset_d1
18339
18340 s_offset_a1 = 0
18341 DO ia = 1, nl_a
18342 s_offset_b1 = 0
18343 DO ib = 1, nl_b
18344 s_offset_c1 = 0
18345 DO ic = 1, nl_c
18346 s_offset_d1 = 0
18347 DO id = 1, nl_d
18348 buffer1 = 0.0_dp
18349 imax = 3*15*3
18350 kmax = 1
18351 DO i = 1, imax
18352 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
18353 END DO
18354 buffer2 = 0.0_dp
18355 imax = 1*15*3
18356 kmax = 3
18357 DO i = 1, imax
18358 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
18359 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
18360 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
18361 END DO
18362 buffer1 = 0.0_dp
18363 imax = 1*3*3
18364 kmax = 15
18365 DO i = 1, imax
18366 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
18367 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
18368 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
18369 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
18370 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
18371 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
18372 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
18373 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
18374 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
18375 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
18376 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
18377 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
18378 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
18379 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
18380 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
18381 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
18382 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
18383 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
18384 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
18385 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
18386 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
18387 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
18388 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
18389 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
18390 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
18391 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
18392 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
18393 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
18394 END DO
18395 imax = 1*3*9
18396 kmax = 3
18397 i = 0
18398 DO i1 = 1, 9
18399 DO i2 = 1, 3
18400 DO i3 = 1, 1
18401 i = i + 1
18402 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
18403 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
18404 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
18405 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
18406 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
18407 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
18408 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
18409 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
18410 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
18411 END DO
18412 END DO
18413 END DO
18414 s_offset_d1 = s_offset_d1 + 3
18415 END DO
18416 s_offset_c1 = s_offset_c1 + 9
18417 END DO
18418 s_offset_b1 = s_offset_b1 + 3
18419 END DO
18420 s_offset_a1 = s_offset_a1 + 1
18421 END DO
18422 END SUBROUTINE contract_spgp
18423#endif
18424#if __MAX_CONTR > 4 || __MAX_CONTR == 4
18425! **************************************************************************************************
18426!> \brief ...
18427!> \param work ...
18428!> \param nl_a ...
18429!> \param nl_b ...
18430!> \param nl_c ...
18431!> \param nl_d ...
18432!> \param sphi_a ...
18433!> \param sphi_b ...
18434!> \param sphi_c ...
18435!> \param sphi_d ...
18436!> \param primitives ...
18437!> \param buffer1 ...
18438!> \param buffer2 ...
18439! **************************************************************************************************
18440 SUBROUTINE contract_spgd(work, &
18441 nl_a, nl_b, nl_c, nl_d, &
18442 sphi_a, sphi_b, sphi_c, sphi_d, &
18443 primitives, &
18444 buffer1, buffer2)
18445 REAL(dp), DIMENSION(1*3*15*6), INTENT(IN) :: work
18446 INTEGER :: nl_a, nl_b, nl_c, nl_d
18447 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
18448 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
18449 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
18450 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
18451 REAL(dp), &
18452 DIMENSION(1*nl_a, 3*nl_b, 9*nl_c, 5*nl_d) :: primitives
18453 REAL(dp), DIMENSION(1*3*15*6) :: buffer1, buffer2
18454
18455 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
18456 kmax, s_offset_a1, s_offset_b1, &
18457 s_offset_c1, s_offset_d1
18458
18459 s_offset_a1 = 0
18460 DO ia = 1, nl_a
18461 s_offset_b1 = 0
18462 DO ib = 1, nl_b
18463 s_offset_c1 = 0
18464 DO ic = 1, nl_c
18465 s_offset_d1 = 0
18466 DO id = 1, nl_d
18467 buffer1 = 0.0_dp
18468 imax = 3*15*6
18469 kmax = 1
18470 DO i = 1, imax
18471 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
18472 END DO
18473 buffer2 = 0.0_dp
18474 imax = 1*15*6
18475 kmax = 3
18476 DO i = 1, imax
18477 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
18478 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
18479 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
18480 END DO
18481 buffer1 = 0.0_dp
18482 imax = 1*3*6
18483 kmax = 15
18484 DO i = 1, imax
18485 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
18486 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
18487 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
18488 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
18489 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
18490 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
18491 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
18492 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
18493 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
18494 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
18495 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
18496 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
18497 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
18498 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
18499 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
18500 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
18501 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
18502 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
18503 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
18504 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
18505 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
18506 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
18507 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
18508 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
18509 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
18510 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
18511 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
18512 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
18513 END DO
18514 imax = 1*3*9
18515 kmax = 6
18516 i = 0
18517 DO i1 = 1, 9
18518 DO i2 = 1, 3
18519 DO i3 = 1, 1
18520 i = i + 1
18521 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
18522 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
18523 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
18524 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
18525 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
18526 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
18527 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
18528 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
18529 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
18530 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
18531 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
18532 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
18533 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
18534 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
18535 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
18536 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
18537 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
18538 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
18539 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
18540 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
18541 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
18542 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
18543 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
18544 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
18545 END DO
18546 END DO
18547 END DO
18548 s_offset_d1 = s_offset_d1 + 5
18549 END DO
18550 s_offset_c1 = s_offset_c1 + 9
18551 END DO
18552 s_offset_b1 = s_offset_b1 + 3
18553 END DO
18554 s_offset_a1 = s_offset_a1 + 1
18555 END DO
18556 END SUBROUTINE contract_spgd
18557#endif
18558#if __MAX_CONTR > 4 || __MAX_CONTR == 4
18559! **************************************************************************************************
18560!> \brief ...
18561!> \param work ...
18562!> \param nl_a ...
18563!> \param nl_b ...
18564!> \param nl_c ...
18565!> \param nl_d ...
18566!> \param sphi_a ...
18567!> \param sphi_b ...
18568!> \param sphi_c ...
18569!> \param sphi_d ...
18570!> \param primitives ...
18571!> \param buffer1 ...
18572!> \param buffer2 ...
18573! **************************************************************************************************
18574 SUBROUTINE contract_spgf(work, &
18575 nl_a, nl_b, nl_c, nl_d, &
18576 sphi_a, sphi_b, sphi_c, sphi_d, &
18577 primitives, &
18578 buffer1, buffer2)
18579 REAL(dp), DIMENSION(1*3*15*10), INTENT(IN) :: work
18580 INTEGER :: nl_a, nl_b, nl_c, nl_d
18581 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
18582 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
18583 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
18584 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
18585 REAL(dp), &
18586 DIMENSION(1*nl_a, 3*nl_b, 9*nl_c, 7*nl_d) :: primitives
18587 REAL(dp), DIMENSION(1*3*15*10) :: buffer1, buffer2
18588
18589 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
18590 kmax, s_offset_a1, s_offset_b1, &
18591 s_offset_c1, s_offset_d1
18592
18593 s_offset_a1 = 0
18594 DO ia = 1, nl_a
18595 s_offset_b1 = 0
18596 DO ib = 1, nl_b
18597 s_offset_c1 = 0
18598 DO ic = 1, nl_c
18599 s_offset_d1 = 0
18600 DO id = 1, nl_d
18601 buffer1 = 0.0_dp
18602 imax = 3*15*10
18603 kmax = 1
18604 DO i = 1, imax
18605 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
18606 END DO
18607 buffer2 = 0.0_dp
18608 imax = 1*15*10
18609 kmax = 3
18610 DO i = 1, imax
18611 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
18612 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
18613 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
18614 END DO
18615 buffer1 = 0.0_dp
18616 imax = 1*3*10
18617 kmax = 15
18618 DO i = 1, imax
18619 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
18620 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
18621 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
18622 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
18623 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
18624 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
18625 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
18626 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
18627 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
18628 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
18629 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
18630 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
18631 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
18632 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
18633 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
18634 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
18635 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
18636 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
18637 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
18638 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
18639 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
18640 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
18641 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
18642 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
18643 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
18644 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
18645 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
18646 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
18647 END DO
18648 imax = 1*3*9
18649 kmax = 10
18650 i = 0
18651 DO i1 = 1, 9
18652 DO i2 = 1, 3
18653 DO i3 = 1, 1
18654 i = i + 1
18655 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
18656 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
18657 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
18658 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
18659 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
18660 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
18661 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
18662 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
18663 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
18664 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
18665 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
18666 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
18667 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
18668 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
18669 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
18670 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
18671 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
18672 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
18673 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
18674 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
18675 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
18676 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
18677 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
18678 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
18679 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
18680 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
18681 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
18682 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
18683 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
18684 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
18685 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
18686 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
18687 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
18688 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
18689 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
18690 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
18691 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
18692 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
18693 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
18694 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
18695 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
18696 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
18697 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
18698 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
18699 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
18700 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
18701 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
18702 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
18703 END DO
18704 END DO
18705 END DO
18706 s_offset_d1 = s_offset_d1 + 7
18707 END DO
18708 s_offset_c1 = s_offset_c1 + 9
18709 END DO
18710 s_offset_b1 = s_offset_b1 + 3
18711 END DO
18712 s_offset_a1 = s_offset_a1 + 1
18713 END DO
18714 END SUBROUTINE contract_spgf
18715#endif
18716#if __MAX_CONTR > 4 || __MAX_CONTR == 4
18717! **************************************************************************************************
18718!> \brief ...
18719!> \param work ...
18720!> \param nl_a ...
18721!> \param nl_b ...
18722!> \param nl_c ...
18723!> \param nl_d ...
18724!> \param sphi_a ...
18725!> \param sphi_b ...
18726!> \param sphi_c ...
18727!> \param sphi_d ...
18728!> \param primitives ...
18729!> \param buffer1 ...
18730!> \param buffer2 ...
18731! **************************************************************************************************
18732 SUBROUTINE contract_spgg(work, &
18733 nl_a, nl_b, nl_c, nl_d, &
18734 sphi_a, sphi_b, sphi_c, sphi_d, &
18735 primitives, &
18736 buffer1, buffer2)
18737 REAL(dp), DIMENSION(1*3*15*15), INTENT(IN) :: work
18738 INTEGER :: nl_a, nl_b, nl_c, nl_d
18739 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
18740 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
18741 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
18742 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
18743 REAL(dp), &
18744 DIMENSION(1*nl_a, 3*nl_b, 9*nl_c, 9*nl_d) :: primitives
18745 REAL(dp), DIMENSION(1*3*15*15) :: buffer1, buffer2
18746
18747 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
18748 kmax, s_offset_a1, s_offset_b1, &
18749 s_offset_c1, s_offset_d1
18750
18751 s_offset_a1 = 0
18752 DO ia = 1, nl_a
18753 s_offset_b1 = 0
18754 DO ib = 1, nl_b
18755 s_offset_c1 = 0
18756 DO ic = 1, nl_c
18757 s_offset_d1 = 0
18758 DO id = 1, nl_d
18759 buffer1 = 0.0_dp
18760 imax = 3*15*15
18761 kmax = 1
18762 DO i = 1, imax
18763 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
18764 END DO
18765 buffer2 = 0.0_dp
18766 imax = 1*15*15
18767 kmax = 3
18768 DO i = 1, imax
18769 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
18770 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
18771 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
18772 END DO
18773 buffer1 = 0.0_dp
18774 imax = 1*3*15
18775 kmax = 15
18776 DO i = 1, imax
18777 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
18778 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
18779 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
18780 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
18781 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
18782 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
18783 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
18784 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
18785 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
18786 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
18787 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
18788 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
18789 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
18790 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
18791 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
18792 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
18793 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
18794 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
18795 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
18796 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
18797 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
18798 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
18799 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
18800 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
18801 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
18802 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
18803 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
18804 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
18805 END DO
18806 imax = 1*3*9
18807 kmax = 15
18808 i = 0
18809 DO i1 = 1, 9
18810 DO i2 = 1, 3
18811 DO i3 = 1, 1
18812 i = i + 1
18813 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
18814 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
18815 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
18816 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
18817 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
18818 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
18819 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
18820 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
18821 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
18822 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
18823 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
18824 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
18825 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
18826 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
18827 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
18828 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
18829 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
18830 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
18831 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
18832 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
18833 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
18834 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
18835 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
18836 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
18837 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
18838 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
18839 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
18840 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
18841 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
18842 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
18843 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
18844 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
18845 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
18846 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
18847 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
18848 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
18849 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
18850 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
18851 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
18852 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
18853 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
18854 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
18855 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
18856 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
18857 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
18858 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
18859 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
18860 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
18861 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
18862 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
18863 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
18864 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
18865 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
18866 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
18867 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
18868 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
18869 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
18870 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
18871 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
18872 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
18873 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
18874 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
18875 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
18876 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
18877 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
18878 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
18879 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
18880 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
18881 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
18882 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
18883 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
18884 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
18885 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
18886 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
18887 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
18888 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
18889 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
18890 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
18891 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
18892 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
18893 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
18894 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
18895 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
18896 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
18897 END DO
18898 END DO
18899 END DO
18900 s_offset_d1 = s_offset_d1 + 9
18901 END DO
18902 s_offset_c1 = s_offset_c1 + 9
18903 END DO
18904 s_offset_b1 = s_offset_b1 + 3
18905 END DO
18906 s_offset_a1 = s_offset_a1 + 1
18907 END DO
18908 END SUBROUTINE contract_spgg
18909#endif
18910#if __MAX_CONTR > 2 || __MAX_CONTR == 2
18911! **************************************************************************************************
18912!> \brief ...
18913!> \param work ...
18914!> \param nl_a ...
18915!> \param nl_b ...
18916!> \param nl_c ...
18917!> \param nl_d ...
18918!> \param sphi_a ...
18919!> \param sphi_b ...
18920!> \param sphi_c ...
18921!> \param sphi_d ...
18922!> \param primitives ...
18923!> \param buffer1 ...
18924!> \param buffer2 ...
18925! **************************************************************************************************
18926 SUBROUTINE contract_sdss(work, &
18927 nl_a, nl_b, nl_c, nl_d, &
18928 sphi_a, sphi_b, sphi_c, sphi_d, &
18929 primitives, &
18930 buffer1, buffer2)
18931 REAL(dp), DIMENSION(1*6*1*1), INTENT(IN) :: work
18932 INTEGER :: nl_a, nl_b, nl_c, nl_d
18933 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
18934 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
18935 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
18936 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
18937 REAL(dp), &
18938 DIMENSION(1*nl_a, 5*nl_b, 1*nl_c, 1*nl_d) :: primitives
18939 REAL(dp), DIMENSION(1*6*1*1) :: buffer1, buffer2
18940
18941 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
18942 kmax, s_offset_a1, s_offset_b1, &
18943 s_offset_c1, s_offset_d1
18944
18945 s_offset_a1 = 0
18946 DO ia = 1, nl_a
18947 s_offset_b1 = 0
18948 DO ib = 1, nl_b
18949 s_offset_c1 = 0
18950 DO ic = 1, nl_c
18951 s_offset_d1 = 0
18952 DO id = 1, nl_d
18953 buffer1 = 0.0_dp
18954 imax = 6*1*1
18955 kmax = 1
18956 DO i = 1, imax
18957 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
18958 END DO
18959 buffer2 = 0.0_dp
18960 imax = 1*1*1
18961 kmax = 6
18962 DO i = 1, imax
18963 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
18964 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
18965 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
18966 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
18967 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
18968 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
18969 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
18970 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
18971 END DO
18972 buffer1 = 0.0_dp
18973 imax = 1*5*1
18974 kmax = 1
18975 DO i = 1, imax
18976 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
18977 END DO
18978 imax = 1*5*1
18979 kmax = 1
18980 i = 0
18981 DO i1 = 1, 1
18982 DO i2 = 1, 5
18983 DO i3 = 1, 1
18984 i = i + 1
18985 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
18986 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
18987 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
18988 END DO
18989 END DO
18990 END DO
18991 s_offset_d1 = s_offset_d1 + 1
18992 END DO
18993 s_offset_c1 = s_offset_c1 + 1
18994 END DO
18995 s_offset_b1 = s_offset_b1 + 5
18996 END DO
18997 s_offset_a1 = s_offset_a1 + 1
18998 END DO
18999 END SUBROUTINE contract_sdss
19000#endif
19001#if __MAX_CONTR > 2 || __MAX_CONTR == 2
19002! **************************************************************************************************
19003!> \brief ...
19004!> \param work ...
19005!> \param nl_a ...
19006!> \param nl_b ...
19007!> \param nl_c ...
19008!> \param nl_d ...
19009!> \param sphi_a ...
19010!> \param sphi_b ...
19011!> \param sphi_c ...
19012!> \param sphi_d ...
19013!> \param primitives ...
19014!> \param buffer1 ...
19015!> \param buffer2 ...
19016! **************************************************************************************************
19017 SUBROUTINE contract_sdsp(work, &
19018 nl_a, nl_b, nl_c, nl_d, &
19019 sphi_a, sphi_b, sphi_c, sphi_d, &
19020 primitives, &
19021 buffer1, buffer2)
19022 REAL(dp), DIMENSION(1*6*1*3), INTENT(IN) :: work
19023 INTEGER :: nl_a, nl_b, nl_c, nl_d
19024 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
19025 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
19026 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
19027 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
19028 REAL(dp), &
19029 DIMENSION(1*nl_a, 5*nl_b, 1*nl_c, 3*nl_d) :: primitives
19030 REAL(dp), DIMENSION(1*6*1*3) :: buffer1, buffer2
19031
19032 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
19033 kmax, s_offset_a1, s_offset_b1, &
19034 s_offset_c1, s_offset_d1
19035
19036 s_offset_a1 = 0
19037 DO ia = 1, nl_a
19038 s_offset_b1 = 0
19039 DO ib = 1, nl_b
19040 s_offset_c1 = 0
19041 DO ic = 1, nl_c
19042 s_offset_d1 = 0
19043 DO id = 1, nl_d
19044 buffer1 = 0.0_dp
19045 imax = 6*1*3
19046 kmax = 1
19047 DO i = 1, imax
19048 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
19049 END DO
19050 buffer2 = 0.0_dp
19051 imax = 1*1*3
19052 kmax = 6
19053 DO i = 1, imax
19054 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
19055 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
19056 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
19057 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
19058 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
19059 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
19060 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
19061 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
19062 END DO
19063 buffer1 = 0.0_dp
19064 imax = 1*5*3
19065 kmax = 1
19066 DO i = 1, imax
19067 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
19068 END DO
19069 imax = 1*5*1
19070 kmax = 3
19071 i = 0
19072 DO i1 = 1, 1
19073 DO i2 = 1, 5
19074 DO i3 = 1, 1
19075 i = i + 1
19076 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
19077 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
19078 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
19079 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
19080 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
19081 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
19082 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
19083 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
19084 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
19085 END DO
19086 END DO
19087 END DO
19088 s_offset_d1 = s_offset_d1 + 3
19089 END DO
19090 s_offset_c1 = s_offset_c1 + 1
19091 END DO
19092 s_offset_b1 = s_offset_b1 + 5
19093 END DO
19094 s_offset_a1 = s_offset_a1 + 1
19095 END DO
19096 END SUBROUTINE contract_sdsp
19097#endif
19098#if __MAX_CONTR > 2 || __MAX_CONTR == 2
19099! **************************************************************************************************
19100!> \brief ...
19101!> \param work ...
19102!> \param nl_a ...
19103!> \param nl_b ...
19104!> \param nl_c ...
19105!> \param nl_d ...
19106!> \param sphi_a ...
19107!> \param sphi_b ...
19108!> \param sphi_c ...
19109!> \param sphi_d ...
19110!> \param primitives ...
19111!> \param buffer1 ...
19112!> \param buffer2 ...
19113! **************************************************************************************************
19114 SUBROUTINE contract_sdsd(work, &
19115 nl_a, nl_b, nl_c, nl_d, &
19116 sphi_a, sphi_b, sphi_c, sphi_d, &
19117 primitives, &
19118 buffer1, buffer2)
19119 REAL(dp), DIMENSION(1*6*1*6), INTENT(IN) :: work
19120 INTEGER :: nl_a, nl_b, nl_c, nl_d
19121 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
19122 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
19123 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
19124 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
19125 REAL(dp), &
19126 DIMENSION(1*nl_a, 5*nl_b, 1*nl_c, 5*nl_d) :: primitives
19127 REAL(dp), DIMENSION(1*6*1*6) :: buffer1, buffer2
19128
19129 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
19130 kmax, s_offset_a1, s_offset_b1, &
19131 s_offset_c1, s_offset_d1
19132
19133 s_offset_a1 = 0
19134 DO ia = 1, nl_a
19135 s_offset_b1 = 0
19136 DO ib = 1, nl_b
19137 s_offset_c1 = 0
19138 DO ic = 1, nl_c
19139 s_offset_d1 = 0
19140 DO id = 1, nl_d
19141 buffer1 = 0.0_dp
19142 imax = 6*1*6
19143 kmax = 1
19144 DO i = 1, imax
19145 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
19146 END DO
19147 buffer2 = 0.0_dp
19148 imax = 1*1*6
19149 kmax = 6
19150 DO i = 1, imax
19151 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
19152 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
19153 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
19154 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
19155 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
19156 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
19157 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
19158 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
19159 END DO
19160 buffer1 = 0.0_dp
19161 imax = 1*5*6
19162 kmax = 1
19163 DO i = 1, imax
19164 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
19165 END DO
19166 imax = 1*5*1
19167 kmax = 6
19168 i = 0
19169 DO i1 = 1, 1
19170 DO i2 = 1, 5
19171 DO i3 = 1, 1
19172 i = i + 1
19173 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
19174 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
19175 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
19176 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
19177 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
19178 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
19179 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
19180 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
19181 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
19182 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
19183 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
19184 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
19185 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
19186 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
19187 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
19188 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
19189 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
19190 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
19191 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
19192 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
19193 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
19194 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
19195 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
19196 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
19197 END DO
19198 END DO
19199 END DO
19200 s_offset_d1 = s_offset_d1 + 5
19201 END DO
19202 s_offset_c1 = s_offset_c1 + 1
19203 END DO
19204 s_offset_b1 = s_offset_b1 + 5
19205 END DO
19206 s_offset_a1 = s_offset_a1 + 1
19207 END DO
19208 END SUBROUTINE contract_sdsd
19209#endif
19210#if __MAX_CONTR > 3 || __MAX_CONTR == 3
19211! **************************************************************************************************
19212!> \brief ...
19213!> \param work ...
19214!> \param nl_a ...
19215!> \param nl_b ...
19216!> \param nl_c ...
19217!> \param nl_d ...
19218!> \param sphi_a ...
19219!> \param sphi_b ...
19220!> \param sphi_c ...
19221!> \param sphi_d ...
19222!> \param primitives ...
19223!> \param buffer1 ...
19224!> \param buffer2 ...
19225! **************************************************************************************************
19226 SUBROUTINE contract_sdsf(work, &
19227 nl_a, nl_b, nl_c, nl_d, &
19228 sphi_a, sphi_b, sphi_c, sphi_d, &
19229 primitives, &
19230 buffer1, buffer2)
19231 REAL(dp), DIMENSION(1*6*1*10), INTENT(IN) :: work
19232 INTEGER :: nl_a, nl_b, nl_c, nl_d
19233 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
19234 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
19235 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
19236 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
19237 REAL(dp), &
19238 DIMENSION(1*nl_a, 5*nl_b, 1*nl_c, 7*nl_d) :: primitives
19239 REAL(dp), DIMENSION(1*6*1*10) :: buffer1, buffer2
19240
19241 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
19242 kmax, s_offset_a1, s_offset_b1, &
19243 s_offset_c1, s_offset_d1
19244
19245 s_offset_a1 = 0
19246 DO ia = 1, nl_a
19247 s_offset_b1 = 0
19248 DO ib = 1, nl_b
19249 s_offset_c1 = 0
19250 DO ic = 1, nl_c
19251 s_offset_d1 = 0
19252 DO id = 1, nl_d
19253 buffer1 = 0.0_dp
19254 imax = 6*1*10
19255 kmax = 1
19256 DO i = 1, imax
19257 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
19258 END DO
19259 buffer2 = 0.0_dp
19260 imax = 1*1*10
19261 kmax = 6
19262 DO i = 1, imax
19263 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
19264 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
19265 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
19266 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
19267 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
19268 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
19269 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
19270 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
19271 END DO
19272 buffer1 = 0.0_dp
19273 imax = 1*5*10
19274 kmax = 1
19275 DO i = 1, imax
19276 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
19277 END DO
19278 imax = 1*5*1
19279 kmax = 10
19280 i = 0
19281 DO i1 = 1, 1
19282 DO i2 = 1, 5
19283 DO i3 = 1, 1
19284 i = i + 1
19285 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
19286 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
19287 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
19288 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
19289 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
19290 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
19291 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
19292 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
19293 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
19294 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
19295 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
19296 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
19297 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
19298 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
19299 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
19300 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
19301 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
19302 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
19303 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
19304 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
19305 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
19306 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
19307 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
19308 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
19309 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
19310 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
19311 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
19312 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
19313 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
19314 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
19315 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
19316 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
19317 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
19318 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
19319 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
19320 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
19321 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
19322 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
19323 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
19324 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
19325 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
19326 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
19327 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
19328 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
19329 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
19330 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
19331 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
19332 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
19333 END DO
19334 END DO
19335 END DO
19336 s_offset_d1 = s_offset_d1 + 7
19337 END DO
19338 s_offset_c1 = s_offset_c1 + 1
19339 END DO
19340 s_offset_b1 = s_offset_b1 + 5
19341 END DO
19342 s_offset_a1 = s_offset_a1 + 1
19343 END DO
19344 END SUBROUTINE contract_sdsf
19345#endif
19346#if __MAX_CONTR > 4 || __MAX_CONTR == 4
19347! **************************************************************************************************
19348!> \brief ...
19349!> \param work ...
19350!> \param nl_a ...
19351!> \param nl_b ...
19352!> \param nl_c ...
19353!> \param nl_d ...
19354!> \param sphi_a ...
19355!> \param sphi_b ...
19356!> \param sphi_c ...
19357!> \param sphi_d ...
19358!> \param primitives ...
19359!> \param buffer1 ...
19360!> \param buffer2 ...
19361! **************************************************************************************************
19362 SUBROUTINE contract_sdsg(work, &
19363 nl_a, nl_b, nl_c, nl_d, &
19364 sphi_a, sphi_b, sphi_c, sphi_d, &
19365 primitives, &
19366 buffer1, buffer2)
19367 REAL(dp), DIMENSION(1*6*1*15), INTENT(IN) :: work
19368 INTEGER :: nl_a, nl_b, nl_c, nl_d
19369 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
19370 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
19371 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
19372 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
19373 REAL(dp), &
19374 DIMENSION(1*nl_a, 5*nl_b, 1*nl_c, 9*nl_d) :: primitives
19375 REAL(dp), DIMENSION(1*6*1*15) :: buffer1, buffer2
19376
19377 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
19378 kmax, s_offset_a1, s_offset_b1, &
19379 s_offset_c1, s_offset_d1
19380
19381 s_offset_a1 = 0
19382 DO ia = 1, nl_a
19383 s_offset_b1 = 0
19384 DO ib = 1, nl_b
19385 s_offset_c1 = 0
19386 DO ic = 1, nl_c
19387 s_offset_d1 = 0
19388 DO id = 1, nl_d
19389 buffer1 = 0.0_dp
19390 imax = 6*1*15
19391 kmax = 1
19392 DO i = 1, imax
19393 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
19394 END DO
19395 buffer2 = 0.0_dp
19396 imax = 1*1*15
19397 kmax = 6
19398 DO i = 1, imax
19399 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
19400 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
19401 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
19402 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
19403 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
19404 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
19405 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
19406 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
19407 END DO
19408 buffer1 = 0.0_dp
19409 imax = 1*5*15
19410 kmax = 1
19411 DO i = 1, imax
19412 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
19413 END DO
19414 imax = 1*5*1
19415 kmax = 15
19416 i = 0
19417 DO i1 = 1, 1
19418 DO i2 = 1, 5
19419 DO i3 = 1, 1
19420 i = i + 1
19421 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
19422 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
19423 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
19424 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
19425 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
19426 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
19427 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
19428 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
19429 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
19430 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
19431 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
19432 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
19433 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
19434 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
19435 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
19436 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
19437 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
19438 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
19439 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
19440 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
19441 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
19442 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
19443 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
19444 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
19445 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
19446 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
19447 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
19448 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
19449 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
19450 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
19451 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
19452 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
19453 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
19454 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
19455 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
19456 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
19457 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
19458 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
19459 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
19460 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
19461 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
19462 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
19463 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
19464 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
19465 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
19466 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
19467 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
19468 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
19469 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
19470 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
19471 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
19472 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
19473 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
19474 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
19475 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
19476 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
19477 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
19478 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
19479 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
19480 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
19481 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
19482 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
19483 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
19484 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
19485 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
19486 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
19487 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
19488 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
19489 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
19490 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
19491 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
19492 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
19493 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
19494 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
19495 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
19496 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
19497 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
19498 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
19499 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
19500 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
19501 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
19502 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
19503 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
19504 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
19505 END DO
19506 END DO
19507 END DO
19508 s_offset_d1 = s_offset_d1 + 9
19509 END DO
19510 s_offset_c1 = s_offset_c1 + 1
19511 END DO
19512 s_offset_b1 = s_offset_b1 + 5
19513 END DO
19514 s_offset_a1 = s_offset_a1 + 1
19515 END DO
19516 END SUBROUTINE contract_sdsg
19517#endif
19518#if __MAX_CONTR > 2 || __MAX_CONTR == 2
19519! **************************************************************************************************
19520!> \brief ...
19521!> \param work ...
19522!> \param nl_a ...
19523!> \param nl_b ...
19524!> \param nl_c ...
19525!> \param nl_d ...
19526!> \param sphi_a ...
19527!> \param sphi_b ...
19528!> \param sphi_c ...
19529!> \param sphi_d ...
19530!> \param primitives ...
19531!> \param buffer1 ...
19532!> \param buffer2 ...
19533! **************************************************************************************************
19534 SUBROUTINE contract_sdps(work, &
19535 nl_a, nl_b, nl_c, nl_d, &
19536 sphi_a, sphi_b, sphi_c, sphi_d, &
19537 primitives, &
19538 buffer1, buffer2)
19539 REAL(dp), DIMENSION(1*6*3*1), INTENT(IN) :: work
19540 INTEGER :: nl_a, nl_b, nl_c, nl_d
19541 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
19542 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
19543 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
19544 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
19545 REAL(dp), &
19546 DIMENSION(1*nl_a, 5*nl_b, 3*nl_c, 1*nl_d) :: primitives
19547 REAL(dp), DIMENSION(1*6*3*1) :: buffer1, buffer2
19548
19549 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
19550 kmax, s_offset_a1, s_offset_b1, &
19551 s_offset_c1, s_offset_d1
19552
19553 s_offset_a1 = 0
19554 DO ia = 1, nl_a
19555 s_offset_b1 = 0
19556 DO ib = 1, nl_b
19557 s_offset_c1 = 0
19558 DO ic = 1, nl_c
19559 s_offset_d1 = 0
19560 DO id = 1, nl_d
19561 buffer1 = 0.0_dp
19562 imax = 6*3*1
19563 kmax = 1
19564 DO i = 1, imax
19565 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
19566 END DO
19567 buffer2 = 0.0_dp
19568 imax = 1*3*1
19569 kmax = 6
19570 DO i = 1, imax
19571 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
19572 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
19573 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
19574 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
19575 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
19576 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
19577 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
19578 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
19579 END DO
19580 buffer1 = 0.0_dp
19581 imax = 1*5*1
19582 kmax = 3
19583 DO i = 1, imax
19584 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
19585 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
19586 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
19587 END DO
19588 imax = 1*5*3
19589 kmax = 1
19590 i = 0
19591 DO i1 = 1, 3
19592 DO i2 = 1, 5
19593 DO i3 = 1, 1
19594 i = i + 1
19595 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
19596 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
19597 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
19598 END DO
19599 END DO
19600 END DO
19601 s_offset_d1 = s_offset_d1 + 1
19602 END DO
19603 s_offset_c1 = s_offset_c1 + 3
19604 END DO
19605 s_offset_b1 = s_offset_b1 + 5
19606 END DO
19607 s_offset_a1 = s_offset_a1 + 1
19608 END DO
19609 END SUBROUTINE contract_sdps
19610#endif
19611#if __MAX_CONTR > 2 || __MAX_CONTR == 2
19612! **************************************************************************************************
19613!> \brief ...
19614!> \param work ...
19615!> \param nl_a ...
19616!> \param nl_b ...
19617!> \param nl_c ...
19618!> \param nl_d ...
19619!> \param sphi_a ...
19620!> \param sphi_b ...
19621!> \param sphi_c ...
19622!> \param sphi_d ...
19623!> \param primitives ...
19624!> \param buffer1 ...
19625!> \param buffer2 ...
19626! **************************************************************************************************
19627 SUBROUTINE contract_sdpp(work, &
19628 nl_a, nl_b, nl_c, nl_d, &
19629 sphi_a, sphi_b, sphi_c, sphi_d, &
19630 primitives, &
19631 buffer1, buffer2)
19632 REAL(dp), DIMENSION(1*6*3*3), INTENT(IN) :: work
19633 INTEGER :: nl_a, nl_b, nl_c, nl_d
19634 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
19635 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
19636 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
19637 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
19638 REAL(dp), &
19639 DIMENSION(1*nl_a, 5*nl_b, 3*nl_c, 3*nl_d) :: primitives
19640 REAL(dp), DIMENSION(1*6*3*3) :: buffer1, buffer2
19641
19642 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
19643 kmax, s_offset_a1, s_offset_b1, &
19644 s_offset_c1, s_offset_d1
19645
19646 s_offset_a1 = 0
19647 DO ia = 1, nl_a
19648 s_offset_b1 = 0
19649 DO ib = 1, nl_b
19650 s_offset_c1 = 0
19651 DO ic = 1, nl_c
19652 s_offset_d1 = 0
19653 DO id = 1, nl_d
19654 buffer1 = 0.0_dp
19655 imax = 6*3*3
19656 kmax = 1
19657 DO i = 1, imax
19658 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
19659 END DO
19660 buffer2 = 0.0_dp
19661 imax = 1*3*3
19662 kmax = 6
19663 DO i = 1, imax
19664 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
19665 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
19666 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
19667 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
19668 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
19669 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
19670 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
19671 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
19672 END DO
19673 buffer1 = 0.0_dp
19674 imax = 1*5*3
19675 kmax = 3
19676 DO i = 1, imax
19677 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
19678 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
19679 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
19680 END DO
19681 imax = 1*5*3
19682 kmax = 3
19683 i = 0
19684 DO i1 = 1, 3
19685 DO i2 = 1, 5
19686 DO i3 = 1, 1
19687 i = i + 1
19688 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
19689 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
19690 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
19691 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
19692 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
19693 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
19694 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
19695 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
19696 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
19697 END DO
19698 END DO
19699 END DO
19700 s_offset_d1 = s_offset_d1 + 3
19701 END DO
19702 s_offset_c1 = s_offset_c1 + 3
19703 END DO
19704 s_offset_b1 = s_offset_b1 + 5
19705 END DO
19706 s_offset_a1 = s_offset_a1 + 1
19707 END DO
19708 END SUBROUTINE contract_sdpp
19709#endif
19710#if __MAX_CONTR > 2 || __MAX_CONTR == 2
19711! **************************************************************************************************
19712!> \brief ...
19713!> \param work ...
19714!> \param nl_a ...
19715!> \param nl_b ...
19716!> \param nl_c ...
19717!> \param nl_d ...
19718!> \param sphi_a ...
19719!> \param sphi_b ...
19720!> \param sphi_c ...
19721!> \param sphi_d ...
19722!> \param primitives ...
19723!> \param buffer1 ...
19724!> \param buffer2 ...
19725! **************************************************************************************************
19726 SUBROUTINE contract_sdpd(work, &
19727 nl_a, nl_b, nl_c, nl_d, &
19728 sphi_a, sphi_b, sphi_c, sphi_d, &
19729 primitives, &
19730 buffer1, buffer2)
19731 REAL(dp), DIMENSION(1*6*3*6), INTENT(IN) :: work
19732 INTEGER :: nl_a, nl_b, nl_c, nl_d
19733 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
19734 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
19735 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
19736 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
19737 REAL(dp), &
19738 DIMENSION(1*nl_a, 5*nl_b, 3*nl_c, 5*nl_d) :: primitives
19739 REAL(dp), DIMENSION(1*6*3*6) :: buffer1, buffer2
19740
19741 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
19742 kmax, s_offset_a1, s_offset_b1, &
19743 s_offset_c1, s_offset_d1
19744
19745 s_offset_a1 = 0
19746 DO ia = 1, nl_a
19747 s_offset_b1 = 0
19748 DO ib = 1, nl_b
19749 s_offset_c1 = 0
19750 DO ic = 1, nl_c
19751 s_offset_d1 = 0
19752 DO id = 1, nl_d
19753 buffer1 = 0.0_dp
19754 imax = 6*3*6
19755 kmax = 1
19756 DO i = 1, imax
19757 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
19758 END DO
19759 buffer2 = 0.0_dp
19760 imax = 1*3*6
19761 kmax = 6
19762 DO i = 1, imax
19763 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
19764 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
19765 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
19766 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
19767 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
19768 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
19769 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
19770 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
19771 END DO
19772 buffer1 = 0.0_dp
19773 imax = 1*5*6
19774 kmax = 3
19775 DO i = 1, imax
19776 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
19777 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
19778 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
19779 END DO
19780 imax = 1*5*3
19781 kmax = 6
19782 i = 0
19783 DO i1 = 1, 3
19784 DO i2 = 1, 5
19785 DO i3 = 1, 1
19786 i = i + 1
19787 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
19788 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
19789 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
19790 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
19791 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
19792 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
19793 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
19794 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
19795 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
19796 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
19797 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
19798 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
19799 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
19800 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
19801 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
19802 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
19803 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
19804 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
19805 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
19806 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
19807 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
19808 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
19809 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
19810 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
19811 END DO
19812 END DO
19813 END DO
19814 s_offset_d1 = s_offset_d1 + 5
19815 END DO
19816 s_offset_c1 = s_offset_c1 + 3
19817 END DO
19818 s_offset_b1 = s_offset_b1 + 5
19819 END DO
19820 s_offset_a1 = s_offset_a1 + 1
19821 END DO
19822 END SUBROUTINE contract_sdpd
19823#endif
19824#if __MAX_CONTR > 3 || __MAX_CONTR == 3
19825! **************************************************************************************************
19826!> \brief ...
19827!> \param work ...
19828!> \param nl_a ...
19829!> \param nl_b ...
19830!> \param nl_c ...
19831!> \param nl_d ...
19832!> \param sphi_a ...
19833!> \param sphi_b ...
19834!> \param sphi_c ...
19835!> \param sphi_d ...
19836!> \param primitives ...
19837!> \param buffer1 ...
19838!> \param buffer2 ...
19839! **************************************************************************************************
19840 SUBROUTINE contract_sdpf(work, &
19841 nl_a, nl_b, nl_c, nl_d, &
19842 sphi_a, sphi_b, sphi_c, sphi_d, &
19843 primitives, &
19844 buffer1, buffer2)
19845 REAL(dp), DIMENSION(1*6*3*10), INTENT(IN) :: work
19846 INTEGER :: nl_a, nl_b, nl_c, nl_d
19847 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
19848 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
19849 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
19850 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
19851 REAL(dp), &
19852 DIMENSION(1*nl_a, 5*nl_b, 3*nl_c, 7*nl_d) :: primitives
19853 REAL(dp), DIMENSION(1*6*3*10) :: buffer1, buffer2
19854
19855 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
19856 kmax, s_offset_a1, s_offset_b1, &
19857 s_offset_c1, s_offset_d1
19858
19859 s_offset_a1 = 0
19860 DO ia = 1, nl_a
19861 s_offset_b1 = 0
19862 DO ib = 1, nl_b
19863 s_offset_c1 = 0
19864 DO ic = 1, nl_c
19865 s_offset_d1 = 0
19866 DO id = 1, nl_d
19867 buffer1 = 0.0_dp
19868 imax = 6*3*10
19869 kmax = 1
19870 DO i = 1, imax
19871 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
19872 END DO
19873 buffer2 = 0.0_dp
19874 imax = 1*3*10
19875 kmax = 6
19876 DO i = 1, imax
19877 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
19878 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
19879 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
19880 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
19881 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
19882 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
19883 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
19884 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
19885 END DO
19886 buffer1 = 0.0_dp
19887 imax = 1*5*10
19888 kmax = 3
19889 DO i = 1, imax
19890 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
19891 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
19892 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
19893 END DO
19894 imax = 1*5*3
19895 kmax = 10
19896 i = 0
19897 DO i1 = 1, 3
19898 DO i2 = 1, 5
19899 DO i3 = 1, 1
19900 i = i + 1
19901 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
19902 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
19903 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
19904 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
19905 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
19906 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
19907 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
19908 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
19909 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
19910 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
19911 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
19912 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
19913 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
19914 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
19915 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
19916 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
19917 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
19918 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
19919 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
19920 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
19921 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
19922 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
19923 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
19924 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
19925 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
19926 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
19927 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
19928 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
19929 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
19930 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
19931 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
19932 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
19933 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
19934 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
19935 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
19936 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
19937 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
19938 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
19939 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
19940 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
19941 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
19942 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
19943 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
19944 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
19945 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
19946 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
19947 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
19948 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
19949 END DO
19950 END DO
19951 END DO
19952 s_offset_d1 = s_offset_d1 + 7
19953 END DO
19954 s_offset_c1 = s_offset_c1 + 3
19955 END DO
19956 s_offset_b1 = s_offset_b1 + 5
19957 END DO
19958 s_offset_a1 = s_offset_a1 + 1
19959 END DO
19960 END SUBROUTINE contract_sdpf
19961#endif
19962#if __MAX_CONTR > 4 || __MAX_CONTR == 4
19963! **************************************************************************************************
19964!> \brief ...
19965!> \param work ...
19966!> \param nl_a ...
19967!> \param nl_b ...
19968!> \param nl_c ...
19969!> \param nl_d ...
19970!> \param sphi_a ...
19971!> \param sphi_b ...
19972!> \param sphi_c ...
19973!> \param sphi_d ...
19974!> \param primitives ...
19975!> \param buffer1 ...
19976!> \param buffer2 ...
19977! **************************************************************************************************
19978 SUBROUTINE contract_sdpg(work, &
19979 nl_a, nl_b, nl_c, nl_d, &
19980 sphi_a, sphi_b, sphi_c, sphi_d, &
19981 primitives, &
19982 buffer1, buffer2)
19983 REAL(dp), DIMENSION(1*6*3*15), INTENT(IN) :: work
19984 INTEGER :: nl_a, nl_b, nl_c, nl_d
19985 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
19986 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
19987 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
19988 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
19989 REAL(dp), &
19990 DIMENSION(1*nl_a, 5*nl_b, 3*nl_c, 9*nl_d) :: primitives
19991 REAL(dp), DIMENSION(1*6*3*15) :: buffer1, buffer2
19992
19993 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
19994 kmax, s_offset_a1, s_offset_b1, &
19995 s_offset_c1, s_offset_d1
19996
19997 s_offset_a1 = 0
19998 DO ia = 1, nl_a
19999 s_offset_b1 = 0
20000 DO ib = 1, nl_b
20001 s_offset_c1 = 0
20002 DO ic = 1, nl_c
20003 s_offset_d1 = 0
20004 DO id = 1, nl_d
20005 buffer1 = 0.0_dp
20006 imax = 6*3*15
20007 kmax = 1
20008 DO i = 1, imax
20009 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
20010 END DO
20011 buffer2 = 0.0_dp
20012 imax = 1*3*15
20013 kmax = 6
20014 DO i = 1, imax
20015 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
20016 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
20017 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
20018 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
20019 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
20020 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
20021 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
20022 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
20023 END DO
20024 buffer1 = 0.0_dp
20025 imax = 1*5*15
20026 kmax = 3
20027 DO i = 1, imax
20028 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
20029 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
20030 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
20031 END DO
20032 imax = 1*5*3
20033 kmax = 15
20034 i = 0
20035 DO i1 = 1, 3
20036 DO i2 = 1, 5
20037 DO i3 = 1, 1
20038 i = i + 1
20039 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
20040 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
20041 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
20042 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
20043 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
20044 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
20045 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
20046 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
20047 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
20048 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
20049 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
20050 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
20051 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
20052 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
20053 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
20054 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
20055 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
20056 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
20057 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
20058 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
20059 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
20060 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
20061 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
20062 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
20063 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
20064 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
20065 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
20066 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
20067 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
20068 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
20069 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
20070 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
20071 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
20072 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
20073 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
20074 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
20075 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
20076 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
20077 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
20078 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
20079 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
20080 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
20081 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
20082 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
20083 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
20084 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
20085 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
20086 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
20087 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
20088 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
20089 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
20090 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
20091 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
20092 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
20093 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
20094 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
20095 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
20096 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
20097 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
20098 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
20099 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
20100 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
20101 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
20102 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
20103 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
20104 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
20105 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
20106 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
20107 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
20108 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
20109 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
20110 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
20111 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
20112 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
20113 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
20114 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
20115 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
20116 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
20117 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
20118 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
20119 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
20120 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
20121 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
20122 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
20123 END DO
20124 END DO
20125 END DO
20126 s_offset_d1 = s_offset_d1 + 9
20127 END DO
20128 s_offset_c1 = s_offset_c1 + 3
20129 END DO
20130 s_offset_b1 = s_offset_b1 + 5
20131 END DO
20132 s_offset_a1 = s_offset_a1 + 1
20133 END DO
20134 END SUBROUTINE contract_sdpg
20135#endif
20136#if __MAX_CONTR > 2 || __MAX_CONTR == 2
20137! **************************************************************************************************
20138!> \brief ...
20139!> \param work ...
20140!> \param nl_a ...
20141!> \param nl_b ...
20142!> \param nl_c ...
20143!> \param nl_d ...
20144!> \param sphi_a ...
20145!> \param sphi_b ...
20146!> \param sphi_c ...
20147!> \param sphi_d ...
20148!> \param primitives ...
20149!> \param buffer1 ...
20150!> \param buffer2 ...
20151! **************************************************************************************************
20152 SUBROUTINE contract_sdds(work, &
20153 nl_a, nl_b, nl_c, nl_d, &
20154 sphi_a, sphi_b, sphi_c, sphi_d, &
20155 primitives, &
20156 buffer1, buffer2)
20157 REAL(dp), DIMENSION(1*6*6*1), INTENT(IN) :: work
20158 INTEGER :: nl_a, nl_b, nl_c, nl_d
20159 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
20160 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
20161 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
20162 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
20163 REAL(dp), &
20164 DIMENSION(1*nl_a, 5*nl_b, 5*nl_c, 1*nl_d) :: primitives
20165 REAL(dp), DIMENSION(1*6*6*1) :: buffer1, buffer2
20166
20167 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
20168 kmax, s_offset_a1, s_offset_b1, &
20169 s_offset_c1, s_offset_d1
20170
20171 s_offset_a1 = 0
20172 DO ia = 1, nl_a
20173 s_offset_b1 = 0
20174 DO ib = 1, nl_b
20175 s_offset_c1 = 0
20176 DO ic = 1, nl_c
20177 s_offset_d1 = 0
20178 DO id = 1, nl_d
20179 buffer1 = 0.0_dp
20180 imax = 6*6*1
20181 kmax = 1
20182 DO i = 1, imax
20183 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
20184 END DO
20185 buffer2 = 0.0_dp
20186 imax = 1*6*1
20187 kmax = 6
20188 DO i = 1, imax
20189 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
20190 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
20191 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
20192 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
20193 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
20194 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
20195 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
20196 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
20197 END DO
20198 buffer1 = 0.0_dp
20199 imax = 1*5*1
20200 kmax = 6
20201 DO i = 1, imax
20202 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
20203 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
20204 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
20205 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
20206 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
20207 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
20208 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
20209 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
20210 END DO
20211 imax = 1*5*5
20212 kmax = 1
20213 i = 0
20214 DO i1 = 1, 5
20215 DO i2 = 1, 5
20216 DO i3 = 1, 1
20217 i = i + 1
20218 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
20219 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
20220 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
20221 END DO
20222 END DO
20223 END DO
20224 s_offset_d1 = s_offset_d1 + 1
20225 END DO
20226 s_offset_c1 = s_offset_c1 + 5
20227 END DO
20228 s_offset_b1 = s_offset_b1 + 5
20229 END DO
20230 s_offset_a1 = s_offset_a1 + 1
20231 END DO
20232 END SUBROUTINE contract_sdds
20233#endif
20234#if __MAX_CONTR > 2 || __MAX_CONTR == 2
20235! **************************************************************************************************
20236!> \brief ...
20237!> \param work ...
20238!> \param nl_a ...
20239!> \param nl_b ...
20240!> \param nl_c ...
20241!> \param nl_d ...
20242!> \param sphi_a ...
20243!> \param sphi_b ...
20244!> \param sphi_c ...
20245!> \param sphi_d ...
20246!> \param primitives ...
20247!> \param buffer1 ...
20248!> \param buffer2 ...
20249! **************************************************************************************************
20250 SUBROUTINE contract_sddp(work, &
20251 nl_a, nl_b, nl_c, nl_d, &
20252 sphi_a, sphi_b, sphi_c, sphi_d, &
20253 primitives, &
20254 buffer1, buffer2)
20255 REAL(dp), DIMENSION(1*6*6*3), INTENT(IN) :: work
20256 INTEGER :: nl_a, nl_b, nl_c, nl_d
20257 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
20258 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
20259 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
20260 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
20261 REAL(dp), &
20262 DIMENSION(1*nl_a, 5*nl_b, 5*nl_c, 3*nl_d) :: primitives
20263 REAL(dp), DIMENSION(1*6*6*3) :: buffer1, buffer2
20264
20265 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
20266 kmax, s_offset_a1, s_offset_b1, &
20267 s_offset_c1, s_offset_d1
20268
20269 s_offset_a1 = 0
20270 DO ia = 1, nl_a
20271 s_offset_b1 = 0
20272 DO ib = 1, nl_b
20273 s_offset_c1 = 0
20274 DO ic = 1, nl_c
20275 s_offset_d1 = 0
20276 DO id = 1, nl_d
20277 buffer1 = 0.0_dp
20278 imax = 6*6*3
20279 kmax = 1
20280 DO i = 1, imax
20281 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
20282 END DO
20283 buffer2 = 0.0_dp
20284 imax = 1*6*3
20285 kmax = 6
20286 DO i = 1, imax
20287 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
20288 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
20289 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
20290 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
20291 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
20292 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
20293 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
20294 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
20295 END DO
20296 buffer1 = 0.0_dp
20297 imax = 1*5*3
20298 kmax = 6
20299 DO i = 1, imax
20300 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
20301 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
20302 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
20303 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
20304 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
20305 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
20306 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
20307 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
20308 END DO
20309 imax = 1*5*5
20310 kmax = 3
20311 i = 0
20312 DO i1 = 1, 5
20313 DO i2 = 1, 5
20314 DO i3 = 1, 1
20315 i = i + 1
20316 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
20317 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
20318 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
20319 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
20320 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
20321 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
20322 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
20323 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
20324 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
20325 END DO
20326 END DO
20327 END DO
20328 s_offset_d1 = s_offset_d1 + 3
20329 END DO
20330 s_offset_c1 = s_offset_c1 + 5
20331 END DO
20332 s_offset_b1 = s_offset_b1 + 5
20333 END DO
20334 s_offset_a1 = s_offset_a1 + 1
20335 END DO
20336 END SUBROUTINE contract_sddp
20337#endif
20338#if __MAX_CONTR > 2 || __MAX_CONTR == 2
20339! **************************************************************************************************
20340!> \brief ...
20341!> \param work ...
20342!> \param nl_a ...
20343!> \param nl_b ...
20344!> \param nl_c ...
20345!> \param nl_d ...
20346!> \param sphi_a ...
20347!> \param sphi_b ...
20348!> \param sphi_c ...
20349!> \param sphi_d ...
20350!> \param primitives ...
20351!> \param buffer1 ...
20352!> \param buffer2 ...
20353! **************************************************************************************************
20354 SUBROUTINE contract_sddd(work, &
20355 nl_a, nl_b, nl_c, nl_d, &
20356 sphi_a, sphi_b, sphi_c, sphi_d, &
20357 primitives, &
20358 buffer1, buffer2)
20359 REAL(dp), DIMENSION(1*6*6*6), INTENT(IN) :: work
20360 INTEGER :: nl_a, nl_b, nl_c, nl_d
20361 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
20362 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
20363 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
20364 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
20365 REAL(dp), &
20366 DIMENSION(1*nl_a, 5*nl_b, 5*nl_c, 5*nl_d) :: primitives
20367 REAL(dp), DIMENSION(1*6*6*6) :: buffer1, buffer2
20368
20369 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
20370 kmax, s_offset_a1, s_offset_b1, &
20371 s_offset_c1, s_offset_d1
20372
20373 s_offset_a1 = 0
20374 DO ia = 1, nl_a
20375 s_offset_b1 = 0
20376 DO ib = 1, nl_b
20377 s_offset_c1 = 0
20378 DO ic = 1, nl_c
20379 s_offset_d1 = 0
20380 DO id = 1, nl_d
20381 buffer1 = 0.0_dp
20382 imax = 6*6*6
20383 kmax = 1
20384 DO i = 1, imax
20385 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
20386 END DO
20387 buffer2 = 0.0_dp
20388 imax = 1*6*6
20389 kmax = 6
20390 DO i = 1, imax
20391 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
20392 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
20393 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
20394 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
20395 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
20396 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
20397 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
20398 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
20399 END DO
20400 buffer1 = 0.0_dp
20401 imax = 1*5*6
20402 kmax = 6
20403 DO i = 1, imax
20404 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
20405 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
20406 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
20407 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
20408 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
20409 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
20410 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
20411 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
20412 END DO
20413 imax = 1*5*5
20414 kmax = 6
20415 i = 0
20416 DO i1 = 1, 5
20417 DO i2 = 1, 5
20418 DO i3 = 1, 1
20419 i = i + 1
20420 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
20421 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
20422 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
20423 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
20424 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
20425 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
20426 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
20427 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
20428 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
20429 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
20430 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
20431 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
20432 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
20433 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
20434 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
20435 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
20436 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
20437 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
20438 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
20439 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
20440 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
20441 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
20442 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
20443 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
20444 END DO
20445 END DO
20446 END DO
20447 s_offset_d1 = s_offset_d1 + 5
20448 END DO
20449 s_offset_c1 = s_offset_c1 + 5
20450 END DO
20451 s_offset_b1 = s_offset_b1 + 5
20452 END DO
20453 s_offset_a1 = s_offset_a1 + 1
20454 END DO
20455 END SUBROUTINE contract_sddd
20456#endif
20457#if __MAX_CONTR > 3 || __MAX_CONTR == 3
20458! **************************************************************************************************
20459!> \brief ...
20460!> \param work ...
20461!> \param nl_a ...
20462!> \param nl_b ...
20463!> \param nl_c ...
20464!> \param nl_d ...
20465!> \param sphi_a ...
20466!> \param sphi_b ...
20467!> \param sphi_c ...
20468!> \param sphi_d ...
20469!> \param primitives ...
20470!> \param buffer1 ...
20471!> \param buffer2 ...
20472! **************************************************************************************************
20473 SUBROUTINE contract_sddf(work, &
20474 nl_a, nl_b, nl_c, nl_d, &
20475 sphi_a, sphi_b, sphi_c, sphi_d, &
20476 primitives, &
20477 buffer1, buffer2)
20478 REAL(dp), DIMENSION(1*6*6*10), INTENT(IN) :: work
20479 INTEGER :: nl_a, nl_b, nl_c, nl_d
20480 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
20481 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
20482 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
20483 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
20484 REAL(dp), &
20485 DIMENSION(1*nl_a, 5*nl_b, 5*nl_c, 7*nl_d) :: primitives
20486 REAL(dp), DIMENSION(1*6*6*10) :: buffer1, buffer2
20487
20488 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
20489 kmax, s_offset_a1, s_offset_b1, &
20490 s_offset_c1, s_offset_d1
20491
20492 s_offset_a1 = 0
20493 DO ia = 1, nl_a
20494 s_offset_b1 = 0
20495 DO ib = 1, nl_b
20496 s_offset_c1 = 0
20497 DO ic = 1, nl_c
20498 s_offset_d1 = 0
20499 DO id = 1, nl_d
20500 buffer1 = 0.0_dp
20501 imax = 6*6*10
20502 kmax = 1
20503 DO i = 1, imax
20504 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
20505 END DO
20506 buffer2 = 0.0_dp
20507 imax = 1*6*10
20508 kmax = 6
20509 DO i = 1, imax
20510 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
20511 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
20512 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
20513 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
20514 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
20515 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
20516 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
20517 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
20518 END DO
20519 buffer1 = 0.0_dp
20520 imax = 1*5*10
20521 kmax = 6
20522 DO i = 1, imax
20523 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
20524 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
20525 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
20526 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
20527 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
20528 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
20529 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
20530 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
20531 END DO
20532 imax = 1*5*5
20533 kmax = 10
20534 i = 0
20535 DO i1 = 1, 5
20536 DO i2 = 1, 5
20537 DO i3 = 1, 1
20538 i = i + 1
20539 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
20540 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
20541 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
20542 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
20543 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
20544 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
20545 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
20546 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
20547 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
20548 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
20549 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
20550 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
20551 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
20552 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
20553 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
20554 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
20555 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
20556 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
20557 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
20558 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
20559 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
20560 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
20561 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
20562 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
20563 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
20564 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
20565 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
20566 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
20567 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
20568 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
20569 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
20570 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
20571 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
20572 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
20573 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
20574 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
20575 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
20576 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
20577 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
20578 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
20579 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
20580 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
20581 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
20582 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
20583 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
20584 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
20585 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
20586 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
20587 END DO
20588 END DO
20589 END DO
20590 s_offset_d1 = s_offset_d1 + 7
20591 END DO
20592 s_offset_c1 = s_offset_c1 + 5
20593 END DO
20594 s_offset_b1 = s_offset_b1 + 5
20595 END DO
20596 s_offset_a1 = s_offset_a1 + 1
20597 END DO
20598 END SUBROUTINE contract_sddf
20599#endif
20600#if __MAX_CONTR > 4 || __MAX_CONTR == 4
20601! **************************************************************************************************
20602!> \brief ...
20603!> \param work ...
20604!> \param nl_a ...
20605!> \param nl_b ...
20606!> \param nl_c ...
20607!> \param nl_d ...
20608!> \param sphi_a ...
20609!> \param sphi_b ...
20610!> \param sphi_c ...
20611!> \param sphi_d ...
20612!> \param primitives ...
20613!> \param buffer1 ...
20614!> \param buffer2 ...
20615! **************************************************************************************************
20616 SUBROUTINE contract_sddg(work, &
20617 nl_a, nl_b, nl_c, nl_d, &
20618 sphi_a, sphi_b, sphi_c, sphi_d, &
20619 primitives, &
20620 buffer1, buffer2)
20621 REAL(dp), DIMENSION(1*6*6*15), INTENT(IN) :: work
20622 INTEGER :: nl_a, nl_b, nl_c, nl_d
20623 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
20624 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
20625 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
20626 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
20627 REAL(dp), &
20628 DIMENSION(1*nl_a, 5*nl_b, 5*nl_c, 9*nl_d) :: primitives
20629 REAL(dp), DIMENSION(1*6*6*15) :: buffer1, buffer2
20630
20631 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
20632 kmax, s_offset_a1, s_offset_b1, &
20633 s_offset_c1, s_offset_d1
20634
20635 s_offset_a1 = 0
20636 DO ia = 1, nl_a
20637 s_offset_b1 = 0
20638 DO ib = 1, nl_b
20639 s_offset_c1 = 0
20640 DO ic = 1, nl_c
20641 s_offset_d1 = 0
20642 DO id = 1, nl_d
20643 buffer1 = 0.0_dp
20644 imax = 6*6*15
20645 kmax = 1
20646 DO i = 1, imax
20647 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
20648 END DO
20649 buffer2 = 0.0_dp
20650 imax = 1*6*15
20651 kmax = 6
20652 DO i = 1, imax
20653 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
20654 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
20655 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
20656 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
20657 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
20658 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
20659 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
20660 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
20661 END DO
20662 buffer1 = 0.0_dp
20663 imax = 1*5*15
20664 kmax = 6
20665 DO i = 1, imax
20666 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
20667 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
20668 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
20669 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
20670 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
20671 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
20672 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
20673 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
20674 END DO
20675 imax = 1*5*5
20676 kmax = 15
20677 i = 0
20678 DO i1 = 1, 5
20679 DO i2 = 1, 5
20680 DO i3 = 1, 1
20681 i = i + 1
20682 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
20683 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
20684 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
20685 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
20686 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
20687 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
20688 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
20689 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
20690 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
20691 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
20692 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
20693 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
20694 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
20695 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
20696 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
20697 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
20698 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
20699 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
20700 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
20701 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
20702 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
20703 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
20704 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
20705 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
20706 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
20707 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
20708 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
20709 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
20710 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
20711 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
20712 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
20713 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
20714 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
20715 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
20716 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
20717 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
20718 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
20719 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
20720 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
20721 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
20722 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
20723 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
20724 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
20725 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
20726 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
20727 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
20728 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
20729 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
20730 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
20731 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
20732 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
20733 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
20734 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
20735 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
20736 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
20737 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
20738 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
20739 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
20740 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
20741 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
20742 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
20743 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
20744 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
20745 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
20746 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
20747 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
20748 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
20749 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
20750 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
20751 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
20752 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
20753 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
20754 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
20755 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
20756 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
20757 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
20758 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
20759 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
20760 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
20761 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
20762 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
20763 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
20764 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
20765 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
20766 END DO
20767 END DO
20768 END DO
20769 s_offset_d1 = s_offset_d1 + 9
20770 END DO
20771 s_offset_c1 = s_offset_c1 + 5
20772 END DO
20773 s_offset_b1 = s_offset_b1 + 5
20774 END DO
20775 s_offset_a1 = s_offset_a1 + 1
20776 END DO
20777 END SUBROUTINE contract_sddg
20778#endif
20779#if __MAX_CONTR > 3 || __MAX_CONTR == 3
20780! **************************************************************************************************
20781!> \brief ...
20782!> \param work ...
20783!> \param nl_a ...
20784!> \param nl_b ...
20785!> \param nl_c ...
20786!> \param nl_d ...
20787!> \param sphi_a ...
20788!> \param sphi_b ...
20789!> \param sphi_c ...
20790!> \param sphi_d ...
20791!> \param primitives ...
20792!> \param buffer1 ...
20793!> \param buffer2 ...
20794! **************************************************************************************************
20795 SUBROUTINE contract_sdfs(work, &
20796 nl_a, nl_b, nl_c, nl_d, &
20797 sphi_a, sphi_b, sphi_c, sphi_d, &
20798 primitives, &
20799 buffer1, buffer2)
20800 REAL(dp), DIMENSION(1*6*10*1), INTENT(IN) :: work
20801 INTEGER :: nl_a, nl_b, nl_c, nl_d
20802 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
20803 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
20804 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
20805 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
20806 REAL(dp), &
20807 DIMENSION(1*nl_a, 5*nl_b, 7*nl_c, 1*nl_d) :: primitives
20808 REAL(dp), DIMENSION(1*6*10*1) :: buffer1, buffer2
20809
20810 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
20811 kmax, s_offset_a1, s_offset_b1, &
20812 s_offset_c1, s_offset_d1
20813
20814 s_offset_a1 = 0
20815 DO ia = 1, nl_a
20816 s_offset_b1 = 0
20817 DO ib = 1, nl_b
20818 s_offset_c1 = 0
20819 DO ic = 1, nl_c
20820 s_offset_d1 = 0
20821 DO id = 1, nl_d
20822 buffer1 = 0.0_dp
20823 imax = 6*10*1
20824 kmax = 1
20825 DO i = 1, imax
20826 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
20827 END DO
20828 buffer2 = 0.0_dp
20829 imax = 1*10*1
20830 kmax = 6
20831 DO i = 1, imax
20832 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
20833 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
20834 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
20835 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
20836 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
20837 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
20838 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
20839 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
20840 END DO
20841 buffer1 = 0.0_dp
20842 imax = 1*5*1
20843 kmax = 10
20844 DO i = 1, imax
20845 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
20846 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
20847 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
20848 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
20849 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
20850 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
20851 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
20852 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
20853 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
20854 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
20855 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
20856 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
20857 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
20858 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
20859 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
20860 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
20861 END DO
20862 imax = 1*5*7
20863 kmax = 1
20864 i = 0
20865 DO i1 = 1, 7
20866 DO i2 = 1, 5
20867 DO i3 = 1, 1
20868 i = i + 1
20869 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
20870 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
20871 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
20872 END DO
20873 END DO
20874 END DO
20875 s_offset_d1 = s_offset_d1 + 1
20876 END DO
20877 s_offset_c1 = s_offset_c1 + 7
20878 END DO
20879 s_offset_b1 = s_offset_b1 + 5
20880 END DO
20881 s_offset_a1 = s_offset_a1 + 1
20882 END DO
20883 END SUBROUTINE contract_sdfs
20884#endif
20885#if __MAX_CONTR > 3 || __MAX_CONTR == 3
20886! **************************************************************************************************
20887!> \brief ...
20888!> \param work ...
20889!> \param nl_a ...
20890!> \param nl_b ...
20891!> \param nl_c ...
20892!> \param nl_d ...
20893!> \param sphi_a ...
20894!> \param sphi_b ...
20895!> \param sphi_c ...
20896!> \param sphi_d ...
20897!> \param primitives ...
20898!> \param buffer1 ...
20899!> \param buffer2 ...
20900! **************************************************************************************************
20901 SUBROUTINE contract_sdfp(work, &
20902 nl_a, nl_b, nl_c, nl_d, &
20903 sphi_a, sphi_b, sphi_c, sphi_d, &
20904 primitives, &
20905 buffer1, buffer2)
20906 REAL(dp), DIMENSION(1*6*10*3), INTENT(IN) :: work
20907 INTEGER :: nl_a, nl_b, nl_c, nl_d
20908 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
20909 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
20910 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
20911 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
20912 REAL(dp), &
20913 DIMENSION(1*nl_a, 5*nl_b, 7*nl_c, 3*nl_d) :: primitives
20914 REAL(dp), DIMENSION(1*6*10*3) :: buffer1, buffer2
20915
20916 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
20917 kmax, s_offset_a1, s_offset_b1, &
20918 s_offset_c1, s_offset_d1
20919
20920 s_offset_a1 = 0
20921 DO ia = 1, nl_a
20922 s_offset_b1 = 0
20923 DO ib = 1, nl_b
20924 s_offset_c1 = 0
20925 DO ic = 1, nl_c
20926 s_offset_d1 = 0
20927 DO id = 1, nl_d
20928 buffer1 = 0.0_dp
20929 imax = 6*10*3
20930 kmax = 1
20931 DO i = 1, imax
20932 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
20933 END DO
20934 buffer2 = 0.0_dp
20935 imax = 1*10*3
20936 kmax = 6
20937 DO i = 1, imax
20938 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
20939 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
20940 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
20941 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
20942 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
20943 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
20944 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
20945 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
20946 END DO
20947 buffer1 = 0.0_dp
20948 imax = 1*5*3
20949 kmax = 10
20950 DO i = 1, imax
20951 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
20952 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
20953 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
20954 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
20955 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
20956 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
20957 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
20958 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
20959 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
20960 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
20961 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
20962 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
20963 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
20964 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
20965 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
20966 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
20967 END DO
20968 imax = 1*5*7
20969 kmax = 3
20970 i = 0
20971 DO i1 = 1, 7
20972 DO i2 = 1, 5
20973 DO i3 = 1, 1
20974 i = i + 1
20975 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
20976 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
20977 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
20978 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
20979 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
20980 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
20981 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
20982 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
20983 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
20984 END DO
20985 END DO
20986 END DO
20987 s_offset_d1 = s_offset_d1 + 3
20988 END DO
20989 s_offset_c1 = s_offset_c1 + 7
20990 END DO
20991 s_offset_b1 = s_offset_b1 + 5
20992 END DO
20993 s_offset_a1 = s_offset_a1 + 1
20994 END DO
20995 END SUBROUTINE contract_sdfp
20996#endif
20997#if __MAX_CONTR > 3 || __MAX_CONTR == 3
20998! **************************************************************************************************
20999!> \brief ...
21000!> \param work ...
21001!> \param nl_a ...
21002!> \param nl_b ...
21003!> \param nl_c ...
21004!> \param nl_d ...
21005!> \param sphi_a ...
21006!> \param sphi_b ...
21007!> \param sphi_c ...
21008!> \param sphi_d ...
21009!> \param primitives ...
21010!> \param buffer1 ...
21011!> \param buffer2 ...
21012! **************************************************************************************************
21013 SUBROUTINE contract_sdfd(work, &
21014 nl_a, nl_b, nl_c, nl_d, &
21015 sphi_a, sphi_b, sphi_c, sphi_d, &
21016 primitives, &
21017 buffer1, buffer2)
21018 REAL(dp), DIMENSION(1*6*10*6), INTENT(IN) :: work
21019 INTEGER :: nl_a, nl_b, nl_c, nl_d
21020 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
21021 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
21022 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
21023 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
21024 REAL(dp), &
21025 DIMENSION(1*nl_a, 5*nl_b, 7*nl_c, 5*nl_d) :: primitives
21026 REAL(dp), DIMENSION(1*6*10*6) :: buffer1, buffer2
21027
21028 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
21029 kmax, s_offset_a1, s_offset_b1, &
21030 s_offset_c1, s_offset_d1
21031
21032 s_offset_a1 = 0
21033 DO ia = 1, nl_a
21034 s_offset_b1 = 0
21035 DO ib = 1, nl_b
21036 s_offset_c1 = 0
21037 DO ic = 1, nl_c
21038 s_offset_d1 = 0
21039 DO id = 1, nl_d
21040 buffer1 = 0.0_dp
21041 imax = 6*10*6
21042 kmax = 1
21043 DO i = 1, imax
21044 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
21045 END DO
21046 buffer2 = 0.0_dp
21047 imax = 1*10*6
21048 kmax = 6
21049 DO i = 1, imax
21050 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
21051 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
21052 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
21053 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
21054 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
21055 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
21056 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
21057 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
21058 END DO
21059 buffer1 = 0.0_dp
21060 imax = 1*5*6
21061 kmax = 10
21062 DO i = 1, imax
21063 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
21064 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
21065 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
21066 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
21067 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
21068 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
21069 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
21070 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
21071 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
21072 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
21073 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
21074 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
21075 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
21076 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
21077 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
21078 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
21079 END DO
21080 imax = 1*5*7
21081 kmax = 6
21082 i = 0
21083 DO i1 = 1, 7
21084 DO i2 = 1, 5
21085 DO i3 = 1, 1
21086 i = i + 1
21087 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
21088 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
21089 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
21090 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
21091 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
21092 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
21093 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
21094 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
21095 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
21096 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
21097 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
21098 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
21099 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
21100 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
21101 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
21102 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
21103 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
21104 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
21105 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
21106 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
21107 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
21108 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
21109 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
21110 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
21111 END DO
21112 END DO
21113 END DO
21114 s_offset_d1 = s_offset_d1 + 5
21115 END DO
21116 s_offset_c1 = s_offset_c1 + 7
21117 END DO
21118 s_offset_b1 = s_offset_b1 + 5
21119 END DO
21120 s_offset_a1 = s_offset_a1 + 1
21121 END DO
21122 END SUBROUTINE contract_sdfd
21123#endif
21124#if __MAX_CONTR > 3 || __MAX_CONTR == 3
21125! **************************************************************************************************
21126!> \brief ...
21127!> \param work ...
21128!> \param nl_a ...
21129!> \param nl_b ...
21130!> \param nl_c ...
21131!> \param nl_d ...
21132!> \param sphi_a ...
21133!> \param sphi_b ...
21134!> \param sphi_c ...
21135!> \param sphi_d ...
21136!> \param primitives ...
21137!> \param buffer1 ...
21138!> \param buffer2 ...
21139! **************************************************************************************************
21140 SUBROUTINE contract_sdff(work, &
21141 nl_a, nl_b, nl_c, nl_d, &
21142 sphi_a, sphi_b, sphi_c, sphi_d, &
21143 primitives, &
21144 buffer1, buffer2)
21145 REAL(dp), DIMENSION(1*6*10*10), INTENT(IN) :: work
21146 INTEGER :: nl_a, nl_b, nl_c, nl_d
21147 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
21148 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
21149 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
21150 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
21151 REAL(dp), &
21152 DIMENSION(1*nl_a, 5*nl_b, 7*nl_c, 7*nl_d) :: primitives
21153 REAL(dp), DIMENSION(1*6*10*10) :: buffer1, buffer2
21154
21155 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
21156 kmax, s_offset_a1, s_offset_b1, &
21157 s_offset_c1, s_offset_d1
21158
21159 s_offset_a1 = 0
21160 DO ia = 1, nl_a
21161 s_offset_b1 = 0
21162 DO ib = 1, nl_b
21163 s_offset_c1 = 0
21164 DO ic = 1, nl_c
21165 s_offset_d1 = 0
21166 DO id = 1, nl_d
21167 buffer1 = 0.0_dp
21168 imax = 6*10*10
21169 kmax = 1
21170 DO i = 1, imax
21171 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
21172 END DO
21173 buffer2 = 0.0_dp
21174 imax = 1*10*10
21175 kmax = 6
21176 DO i = 1, imax
21177 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
21178 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
21179 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
21180 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
21181 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
21182 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
21183 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
21184 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
21185 END DO
21186 buffer1 = 0.0_dp
21187 imax = 1*5*10
21188 kmax = 10
21189 DO i = 1, imax
21190 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
21191 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
21192 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
21193 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
21194 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
21195 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
21196 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
21197 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
21198 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
21199 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
21200 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
21201 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
21202 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
21203 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
21204 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
21205 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
21206 END DO
21207 imax = 1*5*7
21208 kmax = 10
21209 i = 0
21210 DO i1 = 1, 7
21211 DO i2 = 1, 5
21212 DO i3 = 1, 1
21213 i = i + 1
21214 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
21215 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
21216 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
21217 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
21218 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
21219 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
21220 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
21221 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
21222 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
21223 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
21224 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
21225 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
21226 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
21227 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
21228 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
21229 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
21230 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
21231 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
21232 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
21233 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
21234 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
21235 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
21236 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
21237 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
21238 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
21239 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
21240 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
21241 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
21242 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
21243 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
21244 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
21245 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
21246 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
21247 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
21248 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
21249 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
21250 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
21251 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
21252 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
21253 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
21254 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
21255 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
21256 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
21257 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
21258 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
21259 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
21260 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
21261 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
21262 END DO
21263 END DO
21264 END DO
21265 s_offset_d1 = s_offset_d1 + 7
21266 END DO
21267 s_offset_c1 = s_offset_c1 + 7
21268 END DO
21269 s_offset_b1 = s_offset_b1 + 5
21270 END DO
21271 s_offset_a1 = s_offset_a1 + 1
21272 END DO
21273 END SUBROUTINE contract_sdff
21274#endif
21275#if __MAX_CONTR > 4 || __MAX_CONTR == 4
21276! **************************************************************************************************
21277!> \brief ...
21278!> \param work ...
21279!> \param nl_a ...
21280!> \param nl_b ...
21281!> \param nl_c ...
21282!> \param nl_d ...
21283!> \param sphi_a ...
21284!> \param sphi_b ...
21285!> \param sphi_c ...
21286!> \param sphi_d ...
21287!> \param primitives ...
21288!> \param buffer1 ...
21289!> \param buffer2 ...
21290! **************************************************************************************************
21291 SUBROUTINE contract_sdfg(work, &
21292 nl_a, nl_b, nl_c, nl_d, &
21293 sphi_a, sphi_b, sphi_c, sphi_d, &
21294 primitives, &
21295 buffer1, buffer2)
21296 REAL(dp), DIMENSION(1*6*10*15), INTENT(IN) :: work
21297 INTEGER :: nl_a, nl_b, nl_c, nl_d
21298 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
21299 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
21300 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
21301 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
21302 REAL(dp), &
21303 DIMENSION(1*nl_a, 5*nl_b, 7*nl_c, 9*nl_d) :: primitives
21304 REAL(dp), DIMENSION(1*6*10*15) :: buffer1, buffer2
21305
21306 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
21307 kmax, s_offset_a1, s_offset_b1, &
21308 s_offset_c1, s_offset_d1
21309
21310 s_offset_a1 = 0
21311 DO ia = 1, nl_a
21312 s_offset_b1 = 0
21313 DO ib = 1, nl_b
21314 s_offset_c1 = 0
21315 DO ic = 1, nl_c
21316 s_offset_d1 = 0
21317 DO id = 1, nl_d
21318 buffer1 = 0.0_dp
21319 imax = 6*10*15
21320 kmax = 1
21321 DO i = 1, imax
21322 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
21323 END DO
21324 buffer2 = 0.0_dp
21325 imax = 1*10*15
21326 kmax = 6
21327 DO i = 1, imax
21328 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
21329 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
21330 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
21331 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
21332 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
21333 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
21334 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
21335 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
21336 END DO
21337 buffer1 = 0.0_dp
21338 imax = 1*5*15
21339 kmax = 10
21340 DO i = 1, imax
21341 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
21342 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
21343 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
21344 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
21345 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
21346 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
21347 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
21348 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
21349 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
21350 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
21351 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
21352 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
21353 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
21354 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
21355 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
21356 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
21357 END DO
21358 imax = 1*5*7
21359 kmax = 15
21360 i = 0
21361 DO i1 = 1, 7
21362 DO i2 = 1, 5
21363 DO i3 = 1, 1
21364 i = i + 1
21365 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
21366 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
21367 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
21368 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
21369 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
21370 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
21371 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
21372 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
21373 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
21374 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
21375 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
21376 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
21377 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
21378 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
21379 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
21380 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
21381 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
21382 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
21383 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
21384 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
21385 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
21386 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
21387 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
21388 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
21389 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
21390 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
21391 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
21392 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
21393 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
21394 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
21395 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
21396 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
21397 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
21398 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
21399 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
21400 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
21401 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
21402 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
21403 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
21404 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
21405 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
21406 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
21407 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
21408 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
21409 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
21410 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
21411 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
21412 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
21413 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
21414 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
21415 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
21416 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
21417 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
21418 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
21419 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
21420 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
21421 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
21422 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
21423 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
21424 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
21425 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
21426 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
21427 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
21428 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
21429 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
21430 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
21431 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
21432 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
21433 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
21434 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
21435 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
21436 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
21437 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
21438 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
21439 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
21440 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
21441 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
21442 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
21443 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
21444 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
21445 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
21446 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
21447 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
21448 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
21449 END DO
21450 END DO
21451 END DO
21452 s_offset_d1 = s_offset_d1 + 9
21453 END DO
21454 s_offset_c1 = s_offset_c1 + 7
21455 END DO
21456 s_offset_b1 = s_offset_b1 + 5
21457 END DO
21458 s_offset_a1 = s_offset_a1 + 1
21459 END DO
21460 END SUBROUTINE contract_sdfg
21461#endif
21462#if __MAX_CONTR > 4 || __MAX_CONTR == 4
21463! **************************************************************************************************
21464!> \brief ...
21465!> \param work ...
21466!> \param nl_a ...
21467!> \param nl_b ...
21468!> \param nl_c ...
21469!> \param nl_d ...
21470!> \param sphi_a ...
21471!> \param sphi_b ...
21472!> \param sphi_c ...
21473!> \param sphi_d ...
21474!> \param primitives ...
21475!> \param buffer1 ...
21476!> \param buffer2 ...
21477! **************************************************************************************************
21478 SUBROUTINE contract_sdgs(work, &
21479 nl_a, nl_b, nl_c, nl_d, &
21480 sphi_a, sphi_b, sphi_c, sphi_d, &
21481 primitives, &
21482 buffer1, buffer2)
21483 REAL(dp), DIMENSION(1*6*15*1), INTENT(IN) :: work
21484 INTEGER :: nl_a, nl_b, nl_c, nl_d
21485 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
21486 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
21487 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
21488 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
21489 REAL(dp), &
21490 DIMENSION(1*nl_a, 5*nl_b, 9*nl_c, 1*nl_d) :: primitives
21491 REAL(dp), DIMENSION(1*6*15*1) :: buffer1, buffer2
21492
21493 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
21494 kmax, s_offset_a1, s_offset_b1, &
21495 s_offset_c1, s_offset_d1
21496
21497 s_offset_a1 = 0
21498 DO ia = 1, nl_a
21499 s_offset_b1 = 0
21500 DO ib = 1, nl_b
21501 s_offset_c1 = 0
21502 DO ic = 1, nl_c
21503 s_offset_d1 = 0
21504 DO id = 1, nl_d
21505 buffer1 = 0.0_dp
21506 imax = 6*15*1
21507 kmax = 1
21508 DO i = 1, imax
21509 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
21510 END DO
21511 buffer2 = 0.0_dp
21512 imax = 1*15*1
21513 kmax = 6
21514 DO i = 1, imax
21515 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
21516 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
21517 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
21518 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
21519 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
21520 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
21521 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
21522 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
21523 END DO
21524 buffer1 = 0.0_dp
21525 imax = 1*5*1
21526 kmax = 15
21527 DO i = 1, imax
21528 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
21529 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
21530 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
21531 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
21532 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
21533 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
21534 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
21535 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
21536 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
21537 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
21538 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
21539 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
21540 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
21541 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
21542 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
21543 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
21544 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
21545 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
21546 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
21547 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
21548 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
21549 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
21550 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
21551 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
21552 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
21553 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
21554 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
21555 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
21556 END DO
21557 imax = 1*5*9
21558 kmax = 1
21559 i = 0
21560 DO i1 = 1, 9
21561 DO i2 = 1, 5
21562 DO i3 = 1, 1
21563 i = i + 1
21564 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
21565 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
21566 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
21567 END DO
21568 END DO
21569 END DO
21570 s_offset_d1 = s_offset_d1 + 1
21571 END DO
21572 s_offset_c1 = s_offset_c1 + 9
21573 END DO
21574 s_offset_b1 = s_offset_b1 + 5
21575 END DO
21576 s_offset_a1 = s_offset_a1 + 1
21577 END DO
21578 END SUBROUTINE contract_sdgs
21579#endif
21580#if __MAX_CONTR > 4 || __MAX_CONTR == 4
21581! **************************************************************************************************
21582!> \brief ...
21583!> \param work ...
21584!> \param nl_a ...
21585!> \param nl_b ...
21586!> \param nl_c ...
21587!> \param nl_d ...
21588!> \param sphi_a ...
21589!> \param sphi_b ...
21590!> \param sphi_c ...
21591!> \param sphi_d ...
21592!> \param primitives ...
21593!> \param buffer1 ...
21594!> \param buffer2 ...
21595! **************************************************************************************************
21596 SUBROUTINE contract_sdgp(work, &
21597 nl_a, nl_b, nl_c, nl_d, &
21598 sphi_a, sphi_b, sphi_c, sphi_d, &
21599 primitives, &
21600 buffer1, buffer2)
21601 REAL(dp), DIMENSION(1*6*15*3), INTENT(IN) :: work
21602 INTEGER :: nl_a, nl_b, nl_c, nl_d
21603 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
21604 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
21605 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
21606 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
21607 REAL(dp), &
21608 DIMENSION(1*nl_a, 5*nl_b, 9*nl_c, 3*nl_d) :: primitives
21609 REAL(dp), DIMENSION(1*6*15*3) :: buffer1, buffer2
21610
21611 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
21612 kmax, s_offset_a1, s_offset_b1, &
21613 s_offset_c1, s_offset_d1
21614
21615 s_offset_a1 = 0
21616 DO ia = 1, nl_a
21617 s_offset_b1 = 0
21618 DO ib = 1, nl_b
21619 s_offset_c1 = 0
21620 DO ic = 1, nl_c
21621 s_offset_d1 = 0
21622 DO id = 1, nl_d
21623 buffer1 = 0.0_dp
21624 imax = 6*15*3
21625 kmax = 1
21626 DO i = 1, imax
21627 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
21628 END DO
21629 buffer2 = 0.0_dp
21630 imax = 1*15*3
21631 kmax = 6
21632 DO i = 1, imax
21633 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
21634 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
21635 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
21636 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
21637 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
21638 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
21639 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
21640 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
21641 END DO
21642 buffer1 = 0.0_dp
21643 imax = 1*5*3
21644 kmax = 15
21645 DO i = 1, imax
21646 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
21647 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
21648 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
21649 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
21650 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
21651 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
21652 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
21653 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
21654 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
21655 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
21656 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
21657 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
21658 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
21659 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
21660 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
21661 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
21662 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
21663 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
21664 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
21665 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
21666 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
21667 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
21668 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
21669 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
21670 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
21671 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
21672 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
21673 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
21674 END DO
21675 imax = 1*5*9
21676 kmax = 3
21677 i = 0
21678 DO i1 = 1, 9
21679 DO i2 = 1, 5
21680 DO i3 = 1, 1
21681 i = i + 1
21682 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
21683 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
21684 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
21685 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
21686 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
21687 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
21688 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
21689 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
21690 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
21691 END DO
21692 END DO
21693 END DO
21694 s_offset_d1 = s_offset_d1 + 3
21695 END DO
21696 s_offset_c1 = s_offset_c1 + 9
21697 END DO
21698 s_offset_b1 = s_offset_b1 + 5
21699 END DO
21700 s_offset_a1 = s_offset_a1 + 1
21701 END DO
21702 END SUBROUTINE contract_sdgp
21703#endif
21704#if __MAX_CONTR > 4 || __MAX_CONTR == 4
21705! **************************************************************************************************
21706!> \brief ...
21707!> \param work ...
21708!> \param nl_a ...
21709!> \param nl_b ...
21710!> \param nl_c ...
21711!> \param nl_d ...
21712!> \param sphi_a ...
21713!> \param sphi_b ...
21714!> \param sphi_c ...
21715!> \param sphi_d ...
21716!> \param primitives ...
21717!> \param buffer1 ...
21718!> \param buffer2 ...
21719! **************************************************************************************************
21720 SUBROUTINE contract_sdgd(work, &
21721 nl_a, nl_b, nl_c, nl_d, &
21722 sphi_a, sphi_b, sphi_c, sphi_d, &
21723 primitives, &
21724 buffer1, buffer2)
21725 REAL(dp), DIMENSION(1*6*15*6), INTENT(IN) :: work
21726 INTEGER :: nl_a, nl_b, nl_c, nl_d
21727 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
21728 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
21729 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
21730 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
21731 REAL(dp), &
21732 DIMENSION(1*nl_a, 5*nl_b, 9*nl_c, 5*nl_d) :: primitives
21733 REAL(dp), DIMENSION(1*6*15*6) :: buffer1, buffer2
21734
21735 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
21736 kmax, s_offset_a1, s_offset_b1, &
21737 s_offset_c1, s_offset_d1
21738
21739 s_offset_a1 = 0
21740 DO ia = 1, nl_a
21741 s_offset_b1 = 0
21742 DO ib = 1, nl_b
21743 s_offset_c1 = 0
21744 DO ic = 1, nl_c
21745 s_offset_d1 = 0
21746 DO id = 1, nl_d
21747 buffer1 = 0.0_dp
21748 imax = 6*15*6
21749 kmax = 1
21750 DO i = 1, imax
21751 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
21752 END DO
21753 buffer2 = 0.0_dp
21754 imax = 1*15*6
21755 kmax = 6
21756 DO i = 1, imax
21757 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
21758 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
21759 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
21760 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
21761 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
21762 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
21763 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
21764 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
21765 END DO
21766 buffer1 = 0.0_dp
21767 imax = 1*5*6
21768 kmax = 15
21769 DO i = 1, imax
21770 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
21771 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
21772 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
21773 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
21774 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
21775 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
21776 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
21777 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
21778 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
21779 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
21780 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
21781 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
21782 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
21783 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
21784 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
21785 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
21786 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
21787 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
21788 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
21789 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
21790 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
21791 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
21792 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
21793 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
21794 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
21795 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
21796 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
21797 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
21798 END DO
21799 imax = 1*5*9
21800 kmax = 6
21801 i = 0
21802 DO i1 = 1, 9
21803 DO i2 = 1, 5
21804 DO i3 = 1, 1
21805 i = i + 1
21806 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
21807 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
21808 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
21809 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
21810 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
21811 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
21812 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
21813 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
21814 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
21815 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
21816 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
21817 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
21818 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
21819 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
21820 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
21821 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
21822 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
21823 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
21824 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
21825 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
21826 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
21827 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
21828 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
21829 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
21830 END DO
21831 END DO
21832 END DO
21833 s_offset_d1 = s_offset_d1 + 5
21834 END DO
21835 s_offset_c1 = s_offset_c1 + 9
21836 END DO
21837 s_offset_b1 = s_offset_b1 + 5
21838 END DO
21839 s_offset_a1 = s_offset_a1 + 1
21840 END DO
21841 END SUBROUTINE contract_sdgd
21842#endif
21843#if __MAX_CONTR > 4 || __MAX_CONTR == 4
21844! **************************************************************************************************
21845!> \brief ...
21846!> \param work ...
21847!> \param nl_a ...
21848!> \param nl_b ...
21849!> \param nl_c ...
21850!> \param nl_d ...
21851!> \param sphi_a ...
21852!> \param sphi_b ...
21853!> \param sphi_c ...
21854!> \param sphi_d ...
21855!> \param primitives ...
21856!> \param buffer1 ...
21857!> \param buffer2 ...
21858! **************************************************************************************************
21859 SUBROUTINE contract_sdgf(work, &
21860 nl_a, nl_b, nl_c, nl_d, &
21861 sphi_a, sphi_b, sphi_c, sphi_d, &
21862 primitives, &
21863 buffer1, buffer2)
21864 REAL(dp), DIMENSION(1*6*15*10), INTENT(IN) :: work
21865 INTEGER :: nl_a, nl_b, nl_c, nl_d
21866 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
21867 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
21868 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
21869 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
21870 REAL(dp), &
21871 DIMENSION(1*nl_a, 5*nl_b, 9*nl_c, 7*nl_d) :: primitives
21872 REAL(dp), DIMENSION(1*6*15*10) :: buffer1, buffer2
21873
21874 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
21875 kmax, s_offset_a1, s_offset_b1, &
21876 s_offset_c1, s_offset_d1
21877
21878 s_offset_a1 = 0
21879 DO ia = 1, nl_a
21880 s_offset_b1 = 0
21881 DO ib = 1, nl_b
21882 s_offset_c1 = 0
21883 DO ic = 1, nl_c
21884 s_offset_d1 = 0
21885 DO id = 1, nl_d
21886 buffer1 = 0.0_dp
21887 imax = 6*15*10
21888 kmax = 1
21889 DO i = 1, imax
21890 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
21891 END DO
21892 buffer2 = 0.0_dp
21893 imax = 1*15*10
21894 kmax = 6
21895 DO i = 1, imax
21896 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
21897 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
21898 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
21899 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
21900 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
21901 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
21902 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
21903 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
21904 END DO
21905 buffer1 = 0.0_dp
21906 imax = 1*5*10
21907 kmax = 15
21908 DO i = 1, imax
21909 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
21910 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
21911 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
21912 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
21913 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
21914 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
21915 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
21916 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
21917 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
21918 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
21919 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
21920 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
21921 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
21922 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
21923 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
21924 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
21925 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
21926 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
21927 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
21928 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
21929 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
21930 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
21931 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
21932 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
21933 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
21934 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
21935 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
21936 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
21937 END DO
21938 imax = 1*5*9
21939 kmax = 10
21940 i = 0
21941 DO i1 = 1, 9
21942 DO i2 = 1, 5
21943 DO i3 = 1, 1
21944 i = i + 1
21945 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
21946 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
21947 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
21948 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
21949 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
21950 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
21951 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
21952 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
21953 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
21954 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
21955 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
21956 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
21957 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
21958 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
21959 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
21960 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
21961 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
21962 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
21963 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
21964 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
21965 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
21966 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
21967 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
21968 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
21969 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
21970 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
21971 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
21972 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
21973 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
21974 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
21975 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
21976 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
21977 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
21978 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
21979 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
21980 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
21981 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
21982 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
21983 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
21984 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
21985 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
21986 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
21987 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
21988 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
21989 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
21990 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
21991 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
21992 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
21993 END DO
21994 END DO
21995 END DO
21996 s_offset_d1 = s_offset_d1 + 7
21997 END DO
21998 s_offset_c1 = s_offset_c1 + 9
21999 END DO
22000 s_offset_b1 = s_offset_b1 + 5
22001 END DO
22002 s_offset_a1 = s_offset_a1 + 1
22003 END DO
22004 END SUBROUTINE contract_sdgf
22005#endif
22006#if __MAX_CONTR > 4 || __MAX_CONTR == 4
22007! **************************************************************************************************
22008!> \brief ...
22009!> \param work ...
22010!> \param nl_a ...
22011!> \param nl_b ...
22012!> \param nl_c ...
22013!> \param nl_d ...
22014!> \param sphi_a ...
22015!> \param sphi_b ...
22016!> \param sphi_c ...
22017!> \param sphi_d ...
22018!> \param primitives ...
22019!> \param buffer1 ...
22020!> \param buffer2 ...
22021! **************************************************************************************************
22022 SUBROUTINE contract_sdgg(work, &
22023 nl_a, nl_b, nl_c, nl_d, &
22024 sphi_a, sphi_b, sphi_c, sphi_d, &
22025 primitives, &
22026 buffer1, buffer2)
22027 REAL(dp), DIMENSION(1*6*15*15), INTENT(IN) :: work
22028 INTEGER :: nl_a, nl_b, nl_c, nl_d
22029 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
22030 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
22031 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
22032 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
22033 REAL(dp), &
22034 DIMENSION(1*nl_a, 5*nl_b, 9*nl_c, 9*nl_d) :: primitives
22035 REAL(dp), DIMENSION(1*6*15*15) :: buffer1, buffer2
22036
22037 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
22038 kmax, s_offset_a1, s_offset_b1, &
22039 s_offset_c1, s_offset_d1
22040
22041 s_offset_a1 = 0
22042 DO ia = 1, nl_a
22043 s_offset_b1 = 0
22044 DO ib = 1, nl_b
22045 s_offset_c1 = 0
22046 DO ic = 1, nl_c
22047 s_offset_d1 = 0
22048 DO id = 1, nl_d
22049 buffer1 = 0.0_dp
22050 imax = 6*15*15
22051 kmax = 1
22052 DO i = 1, imax
22053 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
22054 END DO
22055 buffer2 = 0.0_dp
22056 imax = 1*15*15
22057 kmax = 6
22058 DO i = 1, imax
22059 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
22060 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
22061 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
22062 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
22063 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
22064 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
22065 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
22066 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
22067 END DO
22068 buffer1 = 0.0_dp
22069 imax = 1*5*15
22070 kmax = 15
22071 DO i = 1, imax
22072 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
22073 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
22074 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
22075 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
22076 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
22077 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
22078 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
22079 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
22080 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
22081 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
22082 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
22083 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
22084 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
22085 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
22086 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
22087 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
22088 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
22089 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
22090 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
22091 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
22092 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
22093 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
22094 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
22095 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
22096 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
22097 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
22098 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
22099 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
22100 END DO
22101 imax = 1*5*9
22102 kmax = 15
22103 i = 0
22104 DO i1 = 1, 9
22105 DO i2 = 1, 5
22106 DO i3 = 1, 1
22107 i = i + 1
22108 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
22109 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
22110 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
22111 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
22112 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
22113 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
22114 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
22115 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
22116 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
22117 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
22118 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
22119 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
22120 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
22121 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
22122 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
22123 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
22124 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
22125 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
22126 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
22127 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
22128 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
22129 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
22130 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
22131 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
22132 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
22133 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
22134 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
22135 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
22136 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
22137 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
22138 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
22139 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
22140 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
22141 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
22142 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
22143 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
22144 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
22145 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
22146 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
22147 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
22148 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
22149 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
22150 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
22151 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
22152 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
22153 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
22154 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
22155 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
22156 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
22157 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
22158 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
22159 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
22160 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
22161 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
22162 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
22163 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
22164 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
22165 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
22166 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
22167 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
22168 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
22169 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
22170 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
22171 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
22172 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
22173 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
22174 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
22175 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
22176 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
22177 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
22178 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
22179 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
22180 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
22181 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
22182 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
22183 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
22184 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
22185 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
22186 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
22187 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
22188 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
22189 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
22190 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
22191 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
22192 END DO
22193 END DO
22194 END DO
22195 s_offset_d1 = s_offset_d1 + 9
22196 END DO
22197 s_offset_c1 = s_offset_c1 + 9
22198 END DO
22199 s_offset_b1 = s_offset_b1 + 5
22200 END DO
22201 s_offset_a1 = s_offset_a1 + 1
22202 END DO
22203 END SUBROUTINE contract_sdgg
22204#endif
22205#if __MAX_CONTR > 3 || __MAX_CONTR == 3
22206! **************************************************************************************************
22207!> \brief ...
22208!> \param work ...
22209!> \param nl_a ...
22210!> \param nl_b ...
22211!> \param nl_c ...
22212!> \param nl_d ...
22213!> \param sphi_a ...
22214!> \param sphi_b ...
22215!> \param sphi_c ...
22216!> \param sphi_d ...
22217!> \param primitives ...
22218!> \param buffer1 ...
22219!> \param buffer2 ...
22220! **************************************************************************************************
22221 SUBROUTINE contract_sfss(work, &
22222 nl_a, nl_b, nl_c, nl_d, &
22223 sphi_a, sphi_b, sphi_c, sphi_d, &
22224 primitives, &
22225 buffer1, buffer2)
22226 REAL(dp), DIMENSION(1*10*1*1), INTENT(IN) :: work
22227 INTEGER :: nl_a, nl_b, nl_c, nl_d
22228 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
22229 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
22230 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
22231 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
22232 REAL(dp), &
22233 DIMENSION(1*nl_a, 7*nl_b, 1*nl_c, 1*nl_d) :: primitives
22234 REAL(dp), DIMENSION(1*10*1*1) :: buffer1, buffer2
22235
22236 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
22237 kmax, s_offset_a1, s_offset_b1, &
22238 s_offset_c1, s_offset_d1
22239
22240 s_offset_a1 = 0
22241 DO ia = 1, nl_a
22242 s_offset_b1 = 0
22243 DO ib = 1, nl_b
22244 s_offset_c1 = 0
22245 DO ic = 1, nl_c
22246 s_offset_d1 = 0
22247 DO id = 1, nl_d
22248 buffer1 = 0.0_dp
22249 imax = 10*1*1
22250 kmax = 1
22251 DO i = 1, imax
22252 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
22253 END DO
22254 buffer2 = 0.0_dp
22255 imax = 1*1*1
22256 kmax = 10
22257 DO i = 1, imax
22258 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
22259 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
22260 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
22261 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
22262 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
22263 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
22264 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
22265 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
22266 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
22267 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
22268 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
22269 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
22270 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
22271 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
22272 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
22273 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
22274 END DO
22275 buffer1 = 0.0_dp
22276 imax = 1*7*1
22277 kmax = 1
22278 DO i = 1, imax
22279 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
22280 END DO
22281 imax = 1*7*1
22282 kmax = 1
22283 i = 0
22284 DO i1 = 1, 1
22285 DO i2 = 1, 7
22286 DO i3 = 1, 1
22287 i = i + 1
22288 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
22289 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
22290 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
22291 END DO
22292 END DO
22293 END DO
22294 s_offset_d1 = s_offset_d1 + 1
22295 END DO
22296 s_offset_c1 = s_offset_c1 + 1
22297 END DO
22298 s_offset_b1 = s_offset_b1 + 7
22299 END DO
22300 s_offset_a1 = s_offset_a1 + 1
22301 END DO
22302 END SUBROUTINE contract_sfss
22303#endif
22304#if __MAX_CONTR > 3 || __MAX_CONTR == 3
22305! **************************************************************************************************
22306!> \brief ...
22307!> \param work ...
22308!> \param nl_a ...
22309!> \param nl_b ...
22310!> \param nl_c ...
22311!> \param nl_d ...
22312!> \param sphi_a ...
22313!> \param sphi_b ...
22314!> \param sphi_c ...
22315!> \param sphi_d ...
22316!> \param primitives ...
22317!> \param buffer1 ...
22318!> \param buffer2 ...
22319! **************************************************************************************************
22320 SUBROUTINE contract_sfsp(work, &
22321 nl_a, nl_b, nl_c, nl_d, &
22322 sphi_a, sphi_b, sphi_c, sphi_d, &
22323 primitives, &
22324 buffer1, buffer2)
22325 REAL(dp), DIMENSION(1*10*1*3), INTENT(IN) :: work
22326 INTEGER :: nl_a, nl_b, nl_c, nl_d
22327 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
22328 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
22329 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
22330 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
22331 REAL(dp), &
22332 DIMENSION(1*nl_a, 7*nl_b, 1*nl_c, 3*nl_d) :: primitives
22333 REAL(dp), DIMENSION(1*10*1*3) :: buffer1, buffer2
22334
22335 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
22336 kmax, s_offset_a1, s_offset_b1, &
22337 s_offset_c1, s_offset_d1
22338
22339 s_offset_a1 = 0
22340 DO ia = 1, nl_a
22341 s_offset_b1 = 0
22342 DO ib = 1, nl_b
22343 s_offset_c1 = 0
22344 DO ic = 1, nl_c
22345 s_offset_d1 = 0
22346 DO id = 1, nl_d
22347 buffer1 = 0.0_dp
22348 imax = 10*1*3
22349 kmax = 1
22350 DO i = 1, imax
22351 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
22352 END DO
22353 buffer2 = 0.0_dp
22354 imax = 1*1*3
22355 kmax = 10
22356 DO i = 1, imax
22357 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
22358 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
22359 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
22360 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
22361 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
22362 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
22363 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
22364 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
22365 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
22366 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
22367 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
22368 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
22369 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
22370 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
22371 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
22372 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
22373 END DO
22374 buffer1 = 0.0_dp
22375 imax = 1*7*3
22376 kmax = 1
22377 DO i = 1, imax
22378 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
22379 END DO
22380 imax = 1*7*1
22381 kmax = 3
22382 i = 0
22383 DO i1 = 1, 1
22384 DO i2 = 1, 7
22385 DO i3 = 1, 1
22386 i = i + 1
22387 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
22388 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
22389 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
22390 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
22391 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
22392 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
22393 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
22394 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
22395 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
22396 END DO
22397 END DO
22398 END DO
22399 s_offset_d1 = s_offset_d1 + 3
22400 END DO
22401 s_offset_c1 = s_offset_c1 + 1
22402 END DO
22403 s_offset_b1 = s_offset_b1 + 7
22404 END DO
22405 s_offset_a1 = s_offset_a1 + 1
22406 END DO
22407 END SUBROUTINE contract_sfsp
22408#endif
22409#if __MAX_CONTR > 3 || __MAX_CONTR == 3
22410! **************************************************************************************************
22411!> \brief ...
22412!> \param work ...
22413!> \param nl_a ...
22414!> \param nl_b ...
22415!> \param nl_c ...
22416!> \param nl_d ...
22417!> \param sphi_a ...
22418!> \param sphi_b ...
22419!> \param sphi_c ...
22420!> \param sphi_d ...
22421!> \param primitives ...
22422!> \param buffer1 ...
22423!> \param buffer2 ...
22424! **************************************************************************************************
22425 SUBROUTINE contract_sfsd(work, &
22426 nl_a, nl_b, nl_c, nl_d, &
22427 sphi_a, sphi_b, sphi_c, sphi_d, &
22428 primitives, &
22429 buffer1, buffer2)
22430 REAL(dp), DIMENSION(1*10*1*6), INTENT(IN) :: work
22431 INTEGER :: nl_a, nl_b, nl_c, nl_d
22432 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
22433 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
22434 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
22435 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
22436 REAL(dp), &
22437 DIMENSION(1*nl_a, 7*nl_b, 1*nl_c, 5*nl_d) :: primitives
22438 REAL(dp), DIMENSION(1*10*1*6) :: buffer1, buffer2
22439
22440 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
22441 kmax, s_offset_a1, s_offset_b1, &
22442 s_offset_c1, s_offset_d1
22443
22444 s_offset_a1 = 0
22445 DO ia = 1, nl_a
22446 s_offset_b1 = 0
22447 DO ib = 1, nl_b
22448 s_offset_c1 = 0
22449 DO ic = 1, nl_c
22450 s_offset_d1 = 0
22451 DO id = 1, nl_d
22452 buffer1 = 0.0_dp
22453 imax = 10*1*6
22454 kmax = 1
22455 DO i = 1, imax
22456 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
22457 END DO
22458 buffer2 = 0.0_dp
22459 imax = 1*1*6
22460 kmax = 10
22461 DO i = 1, imax
22462 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
22463 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
22464 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
22465 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
22466 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
22467 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
22468 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
22469 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
22470 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
22471 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
22472 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
22473 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
22474 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
22475 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
22476 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
22477 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
22478 END DO
22479 buffer1 = 0.0_dp
22480 imax = 1*7*6
22481 kmax = 1
22482 DO i = 1, imax
22483 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
22484 END DO
22485 imax = 1*7*1
22486 kmax = 6
22487 i = 0
22488 DO i1 = 1, 1
22489 DO i2 = 1, 7
22490 DO i3 = 1, 1
22491 i = i + 1
22492 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
22493 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
22494 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
22495 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
22496 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
22497 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
22498 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
22499 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
22500 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
22501 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
22502 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
22503 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
22504 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
22505 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
22506 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
22507 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
22508 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
22509 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
22510 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
22511 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
22512 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
22513 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
22514 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
22515 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
22516 END DO
22517 END DO
22518 END DO
22519 s_offset_d1 = s_offset_d1 + 5
22520 END DO
22521 s_offset_c1 = s_offset_c1 + 1
22522 END DO
22523 s_offset_b1 = s_offset_b1 + 7
22524 END DO
22525 s_offset_a1 = s_offset_a1 + 1
22526 END DO
22527 END SUBROUTINE contract_sfsd
22528#endif
22529#if __MAX_CONTR > 3 || __MAX_CONTR == 3
22530! **************************************************************************************************
22531!> \brief ...
22532!> \param work ...
22533!> \param nl_a ...
22534!> \param nl_b ...
22535!> \param nl_c ...
22536!> \param nl_d ...
22537!> \param sphi_a ...
22538!> \param sphi_b ...
22539!> \param sphi_c ...
22540!> \param sphi_d ...
22541!> \param primitives ...
22542!> \param buffer1 ...
22543!> \param buffer2 ...
22544! **************************************************************************************************
22545 SUBROUTINE contract_sfsf(work, &
22546 nl_a, nl_b, nl_c, nl_d, &
22547 sphi_a, sphi_b, sphi_c, sphi_d, &
22548 primitives, &
22549 buffer1, buffer2)
22550 REAL(dp), DIMENSION(1*10*1*10), INTENT(IN) :: work
22551 INTEGER :: nl_a, nl_b, nl_c, nl_d
22552 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
22553 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
22554 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
22555 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
22556 REAL(dp), &
22557 DIMENSION(1*nl_a, 7*nl_b, 1*nl_c, 7*nl_d) :: primitives
22558 REAL(dp), DIMENSION(1*10*1*10) :: buffer1, buffer2
22559
22560 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
22561 kmax, s_offset_a1, s_offset_b1, &
22562 s_offset_c1, s_offset_d1
22563
22564 s_offset_a1 = 0
22565 DO ia = 1, nl_a
22566 s_offset_b1 = 0
22567 DO ib = 1, nl_b
22568 s_offset_c1 = 0
22569 DO ic = 1, nl_c
22570 s_offset_d1 = 0
22571 DO id = 1, nl_d
22572 buffer1 = 0.0_dp
22573 imax = 10*1*10
22574 kmax = 1
22575 DO i = 1, imax
22576 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
22577 END DO
22578 buffer2 = 0.0_dp
22579 imax = 1*1*10
22580 kmax = 10
22581 DO i = 1, imax
22582 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
22583 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
22584 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
22585 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
22586 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
22587 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
22588 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
22589 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
22590 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
22591 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
22592 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
22593 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
22594 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
22595 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
22596 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
22597 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
22598 END DO
22599 buffer1 = 0.0_dp
22600 imax = 1*7*10
22601 kmax = 1
22602 DO i = 1, imax
22603 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
22604 END DO
22605 imax = 1*7*1
22606 kmax = 10
22607 i = 0
22608 DO i1 = 1, 1
22609 DO i2 = 1, 7
22610 DO i3 = 1, 1
22611 i = i + 1
22612 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
22613 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
22614 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
22615 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
22616 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
22617 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
22618 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
22619 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
22620 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
22621 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
22622 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
22623 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
22624 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
22625 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
22626 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
22627 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
22628 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
22629 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
22630 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
22631 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
22632 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
22633 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
22634 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
22635 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
22636 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
22637 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
22638 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
22639 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
22640 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
22641 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
22642 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
22643 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
22644 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
22645 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
22646 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
22647 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
22648 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
22649 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
22650 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
22651 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
22652 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
22653 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
22654 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
22655 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
22656 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
22657 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
22658 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
22659 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
22660 END DO
22661 END DO
22662 END DO
22663 s_offset_d1 = s_offset_d1 + 7
22664 END DO
22665 s_offset_c1 = s_offset_c1 + 1
22666 END DO
22667 s_offset_b1 = s_offset_b1 + 7
22668 END DO
22669 s_offset_a1 = s_offset_a1 + 1
22670 END DO
22671 END SUBROUTINE contract_sfsf
22672#endif
22673#if __MAX_CONTR > 4 || __MAX_CONTR == 4
22674! **************************************************************************************************
22675!> \brief ...
22676!> \param work ...
22677!> \param nl_a ...
22678!> \param nl_b ...
22679!> \param nl_c ...
22680!> \param nl_d ...
22681!> \param sphi_a ...
22682!> \param sphi_b ...
22683!> \param sphi_c ...
22684!> \param sphi_d ...
22685!> \param primitives ...
22686!> \param buffer1 ...
22687!> \param buffer2 ...
22688! **************************************************************************************************
22689 SUBROUTINE contract_sfsg(work, &
22690 nl_a, nl_b, nl_c, nl_d, &
22691 sphi_a, sphi_b, sphi_c, sphi_d, &
22692 primitives, &
22693 buffer1, buffer2)
22694 REAL(dp), DIMENSION(1*10*1*15), INTENT(IN) :: work
22695 INTEGER :: nl_a, nl_b, nl_c, nl_d
22696 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
22697 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
22698 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
22699 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
22700 REAL(dp), &
22701 DIMENSION(1*nl_a, 7*nl_b, 1*nl_c, 9*nl_d) :: primitives
22702 REAL(dp), DIMENSION(1*10*1*15) :: buffer1, buffer2
22703
22704 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
22705 kmax, s_offset_a1, s_offset_b1, &
22706 s_offset_c1, s_offset_d1
22707
22708 s_offset_a1 = 0
22709 DO ia = 1, nl_a
22710 s_offset_b1 = 0
22711 DO ib = 1, nl_b
22712 s_offset_c1 = 0
22713 DO ic = 1, nl_c
22714 s_offset_d1 = 0
22715 DO id = 1, nl_d
22716 buffer1 = 0.0_dp
22717 imax = 10*1*15
22718 kmax = 1
22719 DO i = 1, imax
22720 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
22721 END DO
22722 buffer2 = 0.0_dp
22723 imax = 1*1*15
22724 kmax = 10
22725 DO i = 1, imax
22726 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
22727 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
22728 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
22729 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
22730 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
22731 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
22732 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
22733 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
22734 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
22735 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
22736 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
22737 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
22738 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
22739 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
22740 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
22741 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
22742 END DO
22743 buffer1 = 0.0_dp
22744 imax = 1*7*15
22745 kmax = 1
22746 DO i = 1, imax
22747 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
22748 END DO
22749 imax = 1*7*1
22750 kmax = 15
22751 i = 0
22752 DO i1 = 1, 1
22753 DO i2 = 1, 7
22754 DO i3 = 1, 1
22755 i = i + 1
22756 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
22757 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
22758 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
22759 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
22760 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
22761 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
22762 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
22763 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
22764 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
22765 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
22766 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
22767 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
22768 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
22769 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
22770 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
22771 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
22772 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
22773 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
22774 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
22775 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
22776 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
22777 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
22778 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
22779 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
22780 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
22781 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
22782 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
22783 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
22784 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
22785 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
22786 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
22787 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
22788 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
22789 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
22790 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
22791 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
22792 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
22793 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
22794 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
22795 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
22796 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
22797 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
22798 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
22799 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
22800 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
22801 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
22802 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
22803 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
22804 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
22805 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
22806 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
22807 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
22808 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
22809 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
22810 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
22811 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
22812 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
22813 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
22814 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
22815 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
22816 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
22817 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
22818 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
22819 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
22820 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
22821 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
22822 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
22823 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
22824 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
22825 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
22826 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
22827 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
22828 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
22829 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
22830 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
22831 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
22832 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
22833 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
22834 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
22835 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
22836 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
22837 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
22838 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
22839 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
22840 END DO
22841 END DO
22842 END DO
22843 s_offset_d1 = s_offset_d1 + 9
22844 END DO
22845 s_offset_c1 = s_offset_c1 + 1
22846 END DO
22847 s_offset_b1 = s_offset_b1 + 7
22848 END DO
22849 s_offset_a1 = s_offset_a1 + 1
22850 END DO
22851 END SUBROUTINE contract_sfsg
22852#endif
22853#if __MAX_CONTR > 3 || __MAX_CONTR == 3
22854! **************************************************************************************************
22855!> \brief ...
22856!> \param work ...
22857!> \param nl_a ...
22858!> \param nl_b ...
22859!> \param nl_c ...
22860!> \param nl_d ...
22861!> \param sphi_a ...
22862!> \param sphi_b ...
22863!> \param sphi_c ...
22864!> \param sphi_d ...
22865!> \param primitives ...
22866!> \param buffer1 ...
22867!> \param buffer2 ...
22868! **************************************************************************************************
22869 SUBROUTINE contract_sfps(work, &
22870 nl_a, nl_b, nl_c, nl_d, &
22871 sphi_a, sphi_b, sphi_c, sphi_d, &
22872 primitives, &
22873 buffer1, buffer2)
22874 REAL(dp), DIMENSION(1*10*3*1), INTENT(IN) :: work
22875 INTEGER :: nl_a, nl_b, nl_c, nl_d
22876 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
22877 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
22878 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
22879 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
22880 REAL(dp), &
22881 DIMENSION(1*nl_a, 7*nl_b, 3*nl_c, 1*nl_d) :: primitives
22882 REAL(dp), DIMENSION(1*10*3*1) :: buffer1, buffer2
22883
22884 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
22885 kmax, s_offset_a1, s_offset_b1, &
22886 s_offset_c1, s_offset_d1
22887
22888 s_offset_a1 = 0
22889 DO ia = 1, nl_a
22890 s_offset_b1 = 0
22891 DO ib = 1, nl_b
22892 s_offset_c1 = 0
22893 DO ic = 1, nl_c
22894 s_offset_d1 = 0
22895 DO id = 1, nl_d
22896 buffer1 = 0.0_dp
22897 imax = 10*3*1
22898 kmax = 1
22899 DO i = 1, imax
22900 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
22901 END DO
22902 buffer2 = 0.0_dp
22903 imax = 1*3*1
22904 kmax = 10
22905 DO i = 1, imax
22906 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
22907 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
22908 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
22909 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
22910 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
22911 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
22912 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
22913 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
22914 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
22915 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
22916 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
22917 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
22918 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
22919 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
22920 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
22921 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
22922 END DO
22923 buffer1 = 0.0_dp
22924 imax = 1*7*1
22925 kmax = 3
22926 DO i = 1, imax
22927 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
22928 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
22929 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
22930 END DO
22931 imax = 1*7*3
22932 kmax = 1
22933 i = 0
22934 DO i1 = 1, 3
22935 DO i2 = 1, 7
22936 DO i3 = 1, 1
22937 i = i + 1
22938 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
22939 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
22940 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
22941 END DO
22942 END DO
22943 END DO
22944 s_offset_d1 = s_offset_d1 + 1
22945 END DO
22946 s_offset_c1 = s_offset_c1 + 3
22947 END DO
22948 s_offset_b1 = s_offset_b1 + 7
22949 END DO
22950 s_offset_a1 = s_offset_a1 + 1
22951 END DO
22952 END SUBROUTINE contract_sfps
22953#endif
22954#if __MAX_CONTR > 3 || __MAX_CONTR == 3
22955! **************************************************************************************************
22956!> \brief ...
22957!> \param work ...
22958!> \param nl_a ...
22959!> \param nl_b ...
22960!> \param nl_c ...
22961!> \param nl_d ...
22962!> \param sphi_a ...
22963!> \param sphi_b ...
22964!> \param sphi_c ...
22965!> \param sphi_d ...
22966!> \param primitives ...
22967!> \param buffer1 ...
22968!> \param buffer2 ...
22969! **************************************************************************************************
22970 SUBROUTINE contract_sfpp(work, &
22971 nl_a, nl_b, nl_c, nl_d, &
22972 sphi_a, sphi_b, sphi_c, sphi_d, &
22973 primitives, &
22974 buffer1, buffer2)
22975 REAL(dp), DIMENSION(1*10*3*3), INTENT(IN) :: work
22976 INTEGER :: nl_a, nl_b, nl_c, nl_d
22977 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
22978 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
22979 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
22980 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
22981 REAL(dp), &
22982 DIMENSION(1*nl_a, 7*nl_b, 3*nl_c, 3*nl_d) :: primitives
22983 REAL(dp), DIMENSION(1*10*3*3) :: buffer1, buffer2
22984
22985 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
22986 kmax, s_offset_a1, s_offset_b1, &
22987 s_offset_c1, s_offset_d1
22988
22989 s_offset_a1 = 0
22990 DO ia = 1, nl_a
22991 s_offset_b1 = 0
22992 DO ib = 1, nl_b
22993 s_offset_c1 = 0
22994 DO ic = 1, nl_c
22995 s_offset_d1 = 0
22996 DO id = 1, nl_d
22997 buffer1 = 0.0_dp
22998 imax = 10*3*3
22999 kmax = 1
23000 DO i = 1, imax
23001 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
23002 END DO
23003 buffer2 = 0.0_dp
23004 imax = 1*3*3
23005 kmax = 10
23006 DO i = 1, imax
23007 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
23008 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
23009 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
23010 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
23011 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
23012 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
23013 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
23014 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
23015 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
23016 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
23017 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
23018 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
23019 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
23020 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
23021 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
23022 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
23023 END DO
23024 buffer1 = 0.0_dp
23025 imax = 1*7*3
23026 kmax = 3
23027 DO i = 1, imax
23028 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
23029 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
23030 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
23031 END DO
23032 imax = 1*7*3
23033 kmax = 3
23034 i = 0
23035 DO i1 = 1, 3
23036 DO i2 = 1, 7
23037 DO i3 = 1, 1
23038 i = i + 1
23039 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
23040 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
23041 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
23042 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
23043 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
23044 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
23045 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
23046 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
23047 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
23048 END DO
23049 END DO
23050 END DO
23051 s_offset_d1 = s_offset_d1 + 3
23052 END DO
23053 s_offset_c1 = s_offset_c1 + 3
23054 END DO
23055 s_offset_b1 = s_offset_b1 + 7
23056 END DO
23057 s_offset_a1 = s_offset_a1 + 1
23058 END DO
23059 END SUBROUTINE contract_sfpp
23060#endif
23061#if __MAX_CONTR > 3 || __MAX_CONTR == 3
23062! **************************************************************************************************
23063!> \brief ...
23064!> \param work ...
23065!> \param nl_a ...
23066!> \param nl_b ...
23067!> \param nl_c ...
23068!> \param nl_d ...
23069!> \param sphi_a ...
23070!> \param sphi_b ...
23071!> \param sphi_c ...
23072!> \param sphi_d ...
23073!> \param primitives ...
23074!> \param buffer1 ...
23075!> \param buffer2 ...
23076! **************************************************************************************************
23077 SUBROUTINE contract_sfpd(work, &
23078 nl_a, nl_b, nl_c, nl_d, &
23079 sphi_a, sphi_b, sphi_c, sphi_d, &
23080 primitives, &
23081 buffer1, buffer2)
23082 REAL(dp), DIMENSION(1*10*3*6), INTENT(IN) :: work
23083 INTEGER :: nl_a, nl_b, nl_c, nl_d
23084 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
23085 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
23086 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
23087 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
23088 REAL(dp), &
23089 DIMENSION(1*nl_a, 7*nl_b, 3*nl_c, 5*nl_d) :: primitives
23090 REAL(dp), DIMENSION(1*10*3*6) :: buffer1, buffer2
23091
23092 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
23093 kmax, s_offset_a1, s_offset_b1, &
23094 s_offset_c1, s_offset_d1
23095
23096 s_offset_a1 = 0
23097 DO ia = 1, nl_a
23098 s_offset_b1 = 0
23099 DO ib = 1, nl_b
23100 s_offset_c1 = 0
23101 DO ic = 1, nl_c
23102 s_offset_d1 = 0
23103 DO id = 1, nl_d
23104 buffer1 = 0.0_dp
23105 imax = 10*3*6
23106 kmax = 1
23107 DO i = 1, imax
23108 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
23109 END DO
23110 buffer2 = 0.0_dp
23111 imax = 1*3*6
23112 kmax = 10
23113 DO i = 1, imax
23114 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
23115 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
23116 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
23117 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
23118 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
23119 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
23120 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
23121 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
23122 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
23123 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
23124 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
23125 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
23126 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
23127 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
23128 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
23129 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
23130 END DO
23131 buffer1 = 0.0_dp
23132 imax = 1*7*6
23133 kmax = 3
23134 DO i = 1, imax
23135 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
23136 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
23137 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
23138 END DO
23139 imax = 1*7*3
23140 kmax = 6
23141 i = 0
23142 DO i1 = 1, 3
23143 DO i2 = 1, 7
23144 DO i3 = 1, 1
23145 i = i + 1
23146 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
23147 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
23148 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
23149 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
23150 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
23151 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
23152 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
23153 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
23154 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
23155 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
23156 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
23157 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
23158 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
23159 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
23160 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
23161 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
23162 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
23163 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
23164 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
23165 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
23166 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
23167 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
23168 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
23169 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
23170 END DO
23171 END DO
23172 END DO
23173 s_offset_d1 = s_offset_d1 + 5
23174 END DO
23175 s_offset_c1 = s_offset_c1 + 3
23176 END DO
23177 s_offset_b1 = s_offset_b1 + 7
23178 END DO
23179 s_offset_a1 = s_offset_a1 + 1
23180 END DO
23181 END SUBROUTINE contract_sfpd
23182#endif
23183#if __MAX_CONTR > 3 || __MAX_CONTR == 3
23184! **************************************************************************************************
23185!> \brief ...
23186!> \param work ...
23187!> \param nl_a ...
23188!> \param nl_b ...
23189!> \param nl_c ...
23190!> \param nl_d ...
23191!> \param sphi_a ...
23192!> \param sphi_b ...
23193!> \param sphi_c ...
23194!> \param sphi_d ...
23195!> \param primitives ...
23196!> \param buffer1 ...
23197!> \param buffer2 ...
23198! **************************************************************************************************
23199 SUBROUTINE contract_sfpf(work, &
23200 nl_a, nl_b, nl_c, nl_d, &
23201 sphi_a, sphi_b, sphi_c, sphi_d, &
23202 primitives, &
23203 buffer1, buffer2)
23204 REAL(dp), DIMENSION(1*10*3*10), INTENT(IN) :: work
23205 INTEGER :: nl_a, nl_b, nl_c, nl_d
23206 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
23207 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
23208 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
23209 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
23210 REAL(dp), &
23211 DIMENSION(1*nl_a, 7*nl_b, 3*nl_c, 7*nl_d) :: primitives
23212 REAL(dp), DIMENSION(1*10*3*10) :: buffer1, buffer2
23213
23214 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
23215 kmax, s_offset_a1, s_offset_b1, &
23216 s_offset_c1, s_offset_d1
23217
23218 s_offset_a1 = 0
23219 DO ia = 1, nl_a
23220 s_offset_b1 = 0
23221 DO ib = 1, nl_b
23222 s_offset_c1 = 0
23223 DO ic = 1, nl_c
23224 s_offset_d1 = 0
23225 DO id = 1, nl_d
23226 buffer1 = 0.0_dp
23227 imax = 10*3*10
23228 kmax = 1
23229 DO i = 1, imax
23230 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
23231 END DO
23232 buffer2 = 0.0_dp
23233 imax = 1*3*10
23234 kmax = 10
23235 DO i = 1, imax
23236 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
23237 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
23238 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
23239 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
23240 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
23241 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
23242 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
23243 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
23244 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
23245 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
23246 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
23247 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
23248 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
23249 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
23250 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
23251 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
23252 END DO
23253 buffer1 = 0.0_dp
23254 imax = 1*7*10
23255 kmax = 3
23256 DO i = 1, imax
23257 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
23258 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
23259 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
23260 END DO
23261 imax = 1*7*3
23262 kmax = 10
23263 i = 0
23264 DO i1 = 1, 3
23265 DO i2 = 1, 7
23266 DO i3 = 1, 1
23267 i = i + 1
23268 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
23269 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
23270 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
23271 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
23272 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
23273 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
23274 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
23275 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
23276 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
23277 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
23278 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
23279 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
23280 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
23281 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
23282 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
23283 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
23284 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
23285 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
23286 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
23287 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
23288 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
23289 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
23290 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
23291 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
23292 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
23293 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
23294 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
23295 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
23296 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
23297 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
23298 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
23299 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
23300 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
23301 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
23302 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
23303 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
23304 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
23305 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
23306 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
23307 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
23308 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
23309 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
23310 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
23311 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
23312 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
23313 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
23314 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
23315 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
23316 END DO
23317 END DO
23318 END DO
23319 s_offset_d1 = s_offset_d1 + 7
23320 END DO
23321 s_offset_c1 = s_offset_c1 + 3
23322 END DO
23323 s_offset_b1 = s_offset_b1 + 7
23324 END DO
23325 s_offset_a1 = s_offset_a1 + 1
23326 END DO
23327 END SUBROUTINE contract_sfpf
23328#endif
23329#if __MAX_CONTR > 4 || __MAX_CONTR == 4
23330! **************************************************************************************************
23331!> \brief ...
23332!> \param work ...
23333!> \param nl_a ...
23334!> \param nl_b ...
23335!> \param nl_c ...
23336!> \param nl_d ...
23337!> \param sphi_a ...
23338!> \param sphi_b ...
23339!> \param sphi_c ...
23340!> \param sphi_d ...
23341!> \param primitives ...
23342!> \param buffer1 ...
23343!> \param buffer2 ...
23344! **************************************************************************************************
23345 SUBROUTINE contract_sfpg(work, &
23346 nl_a, nl_b, nl_c, nl_d, &
23347 sphi_a, sphi_b, sphi_c, sphi_d, &
23348 primitives, &
23349 buffer1, buffer2)
23350 REAL(dp), DIMENSION(1*10*3*15), INTENT(IN) :: work
23351 INTEGER :: nl_a, nl_b, nl_c, nl_d
23352 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
23353 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
23354 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
23355 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
23356 REAL(dp), &
23357 DIMENSION(1*nl_a, 7*nl_b, 3*nl_c, 9*nl_d) :: primitives
23358 REAL(dp), DIMENSION(1*10*3*15) :: buffer1, buffer2
23359
23360 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
23361 kmax, s_offset_a1, s_offset_b1, &
23362 s_offset_c1, s_offset_d1
23363
23364 s_offset_a1 = 0
23365 DO ia = 1, nl_a
23366 s_offset_b1 = 0
23367 DO ib = 1, nl_b
23368 s_offset_c1 = 0
23369 DO ic = 1, nl_c
23370 s_offset_d1 = 0
23371 DO id = 1, nl_d
23372 buffer1 = 0.0_dp
23373 imax = 10*3*15
23374 kmax = 1
23375 DO i = 1, imax
23376 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
23377 END DO
23378 buffer2 = 0.0_dp
23379 imax = 1*3*15
23380 kmax = 10
23381 DO i = 1, imax
23382 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
23383 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
23384 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
23385 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
23386 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
23387 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
23388 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
23389 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
23390 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
23391 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
23392 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
23393 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
23394 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
23395 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
23396 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
23397 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
23398 END DO
23399 buffer1 = 0.0_dp
23400 imax = 1*7*15
23401 kmax = 3
23402 DO i = 1, imax
23403 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
23404 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
23405 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
23406 END DO
23407 imax = 1*7*3
23408 kmax = 15
23409 i = 0
23410 DO i1 = 1, 3
23411 DO i2 = 1, 7
23412 DO i3 = 1, 1
23413 i = i + 1
23414 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
23415 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
23416 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
23417 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
23418 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
23419 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
23420 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
23421 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
23422 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
23423 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
23424 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
23425 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
23426 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
23427 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
23428 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
23429 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
23430 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
23431 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
23432 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
23433 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
23434 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
23435 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
23436 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
23437 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
23438 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
23439 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
23440 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
23441 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
23442 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
23443 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
23444 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
23445 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
23446 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
23447 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
23448 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
23449 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
23450 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
23451 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
23452 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
23453 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
23454 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
23455 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
23456 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
23457 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
23458 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
23459 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
23460 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
23461 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
23462 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
23463 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
23464 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
23465 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
23466 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
23467 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
23468 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
23469 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
23470 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
23471 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
23472 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
23473 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
23474 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
23475 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
23476 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
23477 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
23478 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
23479 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
23480 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
23481 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
23482 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
23483 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
23484 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
23485 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
23486 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
23487 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
23488 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
23489 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
23490 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
23491 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
23492 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
23493 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
23494 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
23495 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
23496 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
23497 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
23498 END DO
23499 END DO
23500 END DO
23501 s_offset_d1 = s_offset_d1 + 9
23502 END DO
23503 s_offset_c1 = s_offset_c1 + 3
23504 END DO
23505 s_offset_b1 = s_offset_b1 + 7
23506 END DO
23507 s_offset_a1 = s_offset_a1 + 1
23508 END DO
23509 END SUBROUTINE contract_sfpg
23510#endif
23511#if __MAX_CONTR > 3 || __MAX_CONTR == 3
23512! **************************************************************************************************
23513!> \brief ...
23514!> \param work ...
23515!> \param nl_a ...
23516!> \param nl_b ...
23517!> \param nl_c ...
23518!> \param nl_d ...
23519!> \param sphi_a ...
23520!> \param sphi_b ...
23521!> \param sphi_c ...
23522!> \param sphi_d ...
23523!> \param primitives ...
23524!> \param buffer1 ...
23525!> \param buffer2 ...
23526! **************************************************************************************************
23527 SUBROUTINE contract_sfds(work, &
23528 nl_a, nl_b, nl_c, nl_d, &
23529 sphi_a, sphi_b, sphi_c, sphi_d, &
23530 primitives, &
23531 buffer1, buffer2)
23532 REAL(dp), DIMENSION(1*10*6*1), INTENT(IN) :: work
23533 INTEGER :: nl_a, nl_b, nl_c, nl_d
23534 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
23535 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
23536 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
23537 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
23538 REAL(dp), &
23539 DIMENSION(1*nl_a, 7*nl_b, 5*nl_c, 1*nl_d) :: primitives
23540 REAL(dp), DIMENSION(1*10*6*1) :: buffer1, buffer2
23541
23542 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
23543 kmax, s_offset_a1, s_offset_b1, &
23544 s_offset_c1, s_offset_d1
23545
23546 s_offset_a1 = 0
23547 DO ia = 1, nl_a
23548 s_offset_b1 = 0
23549 DO ib = 1, nl_b
23550 s_offset_c1 = 0
23551 DO ic = 1, nl_c
23552 s_offset_d1 = 0
23553 DO id = 1, nl_d
23554 buffer1 = 0.0_dp
23555 imax = 10*6*1
23556 kmax = 1
23557 DO i = 1, imax
23558 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
23559 END DO
23560 buffer2 = 0.0_dp
23561 imax = 1*6*1
23562 kmax = 10
23563 DO i = 1, imax
23564 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
23565 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
23566 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
23567 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
23568 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
23569 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
23570 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
23571 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
23572 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
23573 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
23574 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
23575 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
23576 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
23577 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
23578 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
23579 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
23580 END DO
23581 buffer1 = 0.0_dp
23582 imax = 1*7*1
23583 kmax = 6
23584 DO i = 1, imax
23585 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
23586 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
23587 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
23588 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
23589 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
23590 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
23591 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
23592 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
23593 END DO
23594 imax = 1*7*5
23595 kmax = 1
23596 i = 0
23597 DO i1 = 1, 5
23598 DO i2 = 1, 7
23599 DO i3 = 1, 1
23600 i = i + 1
23601 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
23602 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
23603 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
23604 END DO
23605 END DO
23606 END DO
23607 s_offset_d1 = s_offset_d1 + 1
23608 END DO
23609 s_offset_c1 = s_offset_c1 + 5
23610 END DO
23611 s_offset_b1 = s_offset_b1 + 7
23612 END DO
23613 s_offset_a1 = s_offset_a1 + 1
23614 END DO
23615 END SUBROUTINE contract_sfds
23616#endif
23617#if __MAX_CONTR > 3 || __MAX_CONTR == 3
23618! **************************************************************************************************
23619!> \brief ...
23620!> \param work ...
23621!> \param nl_a ...
23622!> \param nl_b ...
23623!> \param nl_c ...
23624!> \param nl_d ...
23625!> \param sphi_a ...
23626!> \param sphi_b ...
23627!> \param sphi_c ...
23628!> \param sphi_d ...
23629!> \param primitives ...
23630!> \param buffer1 ...
23631!> \param buffer2 ...
23632! **************************************************************************************************
23633 SUBROUTINE contract_sfdp(work, &
23634 nl_a, nl_b, nl_c, nl_d, &
23635 sphi_a, sphi_b, sphi_c, sphi_d, &
23636 primitives, &
23637 buffer1, buffer2)
23638 REAL(dp), DIMENSION(1*10*6*3), INTENT(IN) :: work
23639 INTEGER :: nl_a, nl_b, nl_c, nl_d
23640 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
23641 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
23642 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
23643 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
23644 REAL(dp), &
23645 DIMENSION(1*nl_a, 7*nl_b, 5*nl_c, 3*nl_d) :: primitives
23646 REAL(dp), DIMENSION(1*10*6*3) :: buffer1, buffer2
23647
23648 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
23649 kmax, s_offset_a1, s_offset_b1, &
23650 s_offset_c1, s_offset_d1
23651
23652 s_offset_a1 = 0
23653 DO ia = 1, nl_a
23654 s_offset_b1 = 0
23655 DO ib = 1, nl_b
23656 s_offset_c1 = 0
23657 DO ic = 1, nl_c
23658 s_offset_d1 = 0
23659 DO id = 1, nl_d
23660 buffer1 = 0.0_dp
23661 imax = 10*6*3
23662 kmax = 1
23663 DO i = 1, imax
23664 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
23665 END DO
23666 buffer2 = 0.0_dp
23667 imax = 1*6*3
23668 kmax = 10
23669 DO i = 1, imax
23670 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
23671 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
23672 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
23673 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
23674 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
23675 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
23676 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
23677 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
23678 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
23679 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
23680 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
23681 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
23682 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
23683 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
23684 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
23685 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
23686 END DO
23687 buffer1 = 0.0_dp
23688 imax = 1*7*3
23689 kmax = 6
23690 DO i = 1, imax
23691 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
23692 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
23693 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
23694 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
23695 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
23696 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
23697 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
23698 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
23699 END DO
23700 imax = 1*7*5
23701 kmax = 3
23702 i = 0
23703 DO i1 = 1, 5
23704 DO i2 = 1, 7
23705 DO i3 = 1, 1
23706 i = i + 1
23707 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
23708 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
23709 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
23710 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
23711 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
23712 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
23713 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
23714 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
23715 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
23716 END DO
23717 END DO
23718 END DO
23719 s_offset_d1 = s_offset_d1 + 3
23720 END DO
23721 s_offset_c1 = s_offset_c1 + 5
23722 END DO
23723 s_offset_b1 = s_offset_b1 + 7
23724 END DO
23725 s_offset_a1 = s_offset_a1 + 1
23726 END DO
23727 END SUBROUTINE contract_sfdp
23728#endif
23729#if __MAX_CONTR > 3 || __MAX_CONTR == 3
23730! **************************************************************************************************
23731!> \brief ...
23732!> \param work ...
23733!> \param nl_a ...
23734!> \param nl_b ...
23735!> \param nl_c ...
23736!> \param nl_d ...
23737!> \param sphi_a ...
23738!> \param sphi_b ...
23739!> \param sphi_c ...
23740!> \param sphi_d ...
23741!> \param primitives ...
23742!> \param buffer1 ...
23743!> \param buffer2 ...
23744! **************************************************************************************************
23745 SUBROUTINE contract_sfdd(work, &
23746 nl_a, nl_b, nl_c, nl_d, &
23747 sphi_a, sphi_b, sphi_c, sphi_d, &
23748 primitives, &
23749 buffer1, buffer2)
23750 REAL(dp), DIMENSION(1*10*6*6), INTENT(IN) :: work
23751 INTEGER :: nl_a, nl_b, nl_c, nl_d
23752 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
23753 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
23754 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
23755 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
23756 REAL(dp), &
23757 DIMENSION(1*nl_a, 7*nl_b, 5*nl_c, 5*nl_d) :: primitives
23758 REAL(dp), DIMENSION(1*10*6*6) :: buffer1, buffer2
23759
23760 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
23761 kmax, s_offset_a1, s_offset_b1, &
23762 s_offset_c1, s_offset_d1
23763
23764 s_offset_a1 = 0
23765 DO ia = 1, nl_a
23766 s_offset_b1 = 0
23767 DO ib = 1, nl_b
23768 s_offset_c1 = 0
23769 DO ic = 1, nl_c
23770 s_offset_d1 = 0
23771 DO id = 1, nl_d
23772 buffer1 = 0.0_dp
23773 imax = 10*6*6
23774 kmax = 1
23775 DO i = 1, imax
23776 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
23777 END DO
23778 buffer2 = 0.0_dp
23779 imax = 1*6*6
23780 kmax = 10
23781 DO i = 1, imax
23782 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
23783 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
23784 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
23785 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
23786 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
23787 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
23788 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
23789 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
23790 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
23791 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
23792 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
23793 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
23794 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
23795 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
23796 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
23797 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
23798 END DO
23799 buffer1 = 0.0_dp
23800 imax = 1*7*6
23801 kmax = 6
23802 DO i = 1, imax
23803 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
23804 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
23805 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
23806 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
23807 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
23808 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
23809 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
23810 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
23811 END DO
23812 imax = 1*7*5
23813 kmax = 6
23814 i = 0
23815 DO i1 = 1, 5
23816 DO i2 = 1, 7
23817 DO i3 = 1, 1
23818 i = i + 1
23819 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
23820 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
23821 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
23822 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
23823 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
23824 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
23825 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
23826 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
23827 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
23828 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
23829 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
23830 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
23831 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
23832 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
23833 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
23834 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
23835 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
23836 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
23837 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
23838 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
23839 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
23840 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
23841 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
23842 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
23843 END DO
23844 END DO
23845 END DO
23846 s_offset_d1 = s_offset_d1 + 5
23847 END DO
23848 s_offset_c1 = s_offset_c1 + 5
23849 END DO
23850 s_offset_b1 = s_offset_b1 + 7
23851 END DO
23852 s_offset_a1 = s_offset_a1 + 1
23853 END DO
23854 END SUBROUTINE contract_sfdd
23855#endif
23856#if __MAX_CONTR > 3 || __MAX_CONTR == 3
23857! **************************************************************************************************
23858!> \brief ...
23859!> \param work ...
23860!> \param nl_a ...
23861!> \param nl_b ...
23862!> \param nl_c ...
23863!> \param nl_d ...
23864!> \param sphi_a ...
23865!> \param sphi_b ...
23866!> \param sphi_c ...
23867!> \param sphi_d ...
23868!> \param primitives ...
23869!> \param buffer1 ...
23870!> \param buffer2 ...
23871! **************************************************************************************************
23872 SUBROUTINE contract_sfdf(work, &
23873 nl_a, nl_b, nl_c, nl_d, &
23874 sphi_a, sphi_b, sphi_c, sphi_d, &
23875 primitives, &
23876 buffer1, buffer2)
23877 REAL(dp), DIMENSION(1*10*6*10), INTENT(IN) :: work
23878 INTEGER :: nl_a, nl_b, nl_c, nl_d
23879 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
23880 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
23881 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
23882 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
23883 REAL(dp), &
23884 DIMENSION(1*nl_a, 7*nl_b, 5*nl_c, 7*nl_d) :: primitives
23885 REAL(dp), DIMENSION(1*10*6*10) :: buffer1, buffer2
23886
23887 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
23888 kmax, s_offset_a1, s_offset_b1, &
23889 s_offset_c1, s_offset_d1
23890
23891 s_offset_a1 = 0
23892 DO ia = 1, nl_a
23893 s_offset_b1 = 0
23894 DO ib = 1, nl_b
23895 s_offset_c1 = 0
23896 DO ic = 1, nl_c
23897 s_offset_d1 = 0
23898 DO id = 1, nl_d
23899 buffer1 = 0.0_dp
23900 imax = 10*6*10
23901 kmax = 1
23902 DO i = 1, imax
23903 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
23904 END DO
23905 buffer2 = 0.0_dp
23906 imax = 1*6*10
23907 kmax = 10
23908 DO i = 1, imax
23909 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
23910 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
23911 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
23912 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
23913 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
23914 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
23915 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
23916 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
23917 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
23918 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
23919 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
23920 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
23921 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
23922 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
23923 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
23924 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
23925 END DO
23926 buffer1 = 0.0_dp
23927 imax = 1*7*10
23928 kmax = 6
23929 DO i = 1, imax
23930 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
23931 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
23932 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
23933 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
23934 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
23935 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
23936 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
23937 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
23938 END DO
23939 imax = 1*7*5
23940 kmax = 10
23941 i = 0
23942 DO i1 = 1, 5
23943 DO i2 = 1, 7
23944 DO i3 = 1, 1
23945 i = i + 1
23946 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
23947 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
23948 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
23949 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
23950 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
23951 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
23952 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
23953 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
23954 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
23955 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
23956 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
23957 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
23958 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
23959 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
23960 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
23961 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
23962 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
23963 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
23964 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
23965 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
23966 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
23967 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
23968 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
23969 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
23970 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
23971 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
23972 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
23973 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
23974 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
23975 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
23976 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
23977 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
23978 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
23979 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
23980 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
23981 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
23982 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
23983 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
23984 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
23985 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
23986 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
23987 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
23988 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
23989 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
23990 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
23991 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
23992 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
23993 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
23994 END DO
23995 END DO
23996 END DO
23997 s_offset_d1 = s_offset_d1 + 7
23998 END DO
23999 s_offset_c1 = s_offset_c1 + 5
24000 END DO
24001 s_offset_b1 = s_offset_b1 + 7
24002 END DO
24003 s_offset_a1 = s_offset_a1 + 1
24004 END DO
24005 END SUBROUTINE contract_sfdf
24006#endif
24007#if __MAX_CONTR > 4 || __MAX_CONTR == 4
24008! **************************************************************************************************
24009!> \brief ...
24010!> \param work ...
24011!> \param nl_a ...
24012!> \param nl_b ...
24013!> \param nl_c ...
24014!> \param nl_d ...
24015!> \param sphi_a ...
24016!> \param sphi_b ...
24017!> \param sphi_c ...
24018!> \param sphi_d ...
24019!> \param primitives ...
24020!> \param buffer1 ...
24021!> \param buffer2 ...
24022! **************************************************************************************************
24023 SUBROUTINE contract_sfdg(work, &
24024 nl_a, nl_b, nl_c, nl_d, &
24025 sphi_a, sphi_b, sphi_c, sphi_d, &
24026 primitives, &
24027 buffer1, buffer2)
24028 REAL(dp), DIMENSION(1*10*6*15), INTENT(IN) :: work
24029 INTEGER :: nl_a, nl_b, nl_c, nl_d
24030 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
24031 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
24032 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
24033 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
24034 REAL(dp), &
24035 DIMENSION(1*nl_a, 7*nl_b, 5*nl_c, 9*nl_d) :: primitives
24036 REAL(dp), DIMENSION(1*10*6*15) :: buffer1, buffer2
24037
24038 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
24039 kmax, s_offset_a1, s_offset_b1, &
24040 s_offset_c1, s_offset_d1
24041
24042 s_offset_a1 = 0
24043 DO ia = 1, nl_a
24044 s_offset_b1 = 0
24045 DO ib = 1, nl_b
24046 s_offset_c1 = 0
24047 DO ic = 1, nl_c
24048 s_offset_d1 = 0
24049 DO id = 1, nl_d
24050 buffer1 = 0.0_dp
24051 imax = 10*6*15
24052 kmax = 1
24053 DO i = 1, imax
24054 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
24055 END DO
24056 buffer2 = 0.0_dp
24057 imax = 1*6*15
24058 kmax = 10
24059 DO i = 1, imax
24060 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
24061 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
24062 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
24063 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
24064 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
24065 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
24066 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
24067 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
24068 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
24069 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
24070 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
24071 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
24072 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
24073 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
24074 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
24075 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
24076 END DO
24077 buffer1 = 0.0_dp
24078 imax = 1*7*15
24079 kmax = 6
24080 DO i = 1, imax
24081 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
24082 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
24083 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
24084 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
24085 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
24086 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
24087 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
24088 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
24089 END DO
24090 imax = 1*7*5
24091 kmax = 15
24092 i = 0
24093 DO i1 = 1, 5
24094 DO i2 = 1, 7
24095 DO i3 = 1, 1
24096 i = i + 1
24097 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
24098 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
24099 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
24100 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
24101 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
24102 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
24103 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
24104 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
24105 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
24106 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
24107 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
24108 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
24109 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
24110 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
24111 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
24112 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
24113 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
24114 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
24115 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
24116 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
24117 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
24118 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
24119 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
24120 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
24121 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
24122 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
24123 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
24124 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
24125 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
24126 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
24127 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
24128 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
24129 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
24130 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
24131 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
24132 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
24133 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
24134 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
24135 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
24136 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
24137 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
24138 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
24139 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
24140 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
24141 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
24142 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
24143 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
24144 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
24145 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
24146 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
24147 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
24148 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
24149 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
24150 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
24151 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
24152 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
24153 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
24154 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
24155 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
24156 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
24157 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
24158 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
24159 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
24160 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
24161 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
24162 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
24163 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
24164 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
24165 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
24166 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
24167 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
24168 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
24169 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
24170 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
24171 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
24172 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
24173 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
24174 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
24175 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
24176 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
24177 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
24178 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
24179 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
24180 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
24181 END DO
24182 END DO
24183 END DO
24184 s_offset_d1 = s_offset_d1 + 9
24185 END DO
24186 s_offset_c1 = s_offset_c1 + 5
24187 END DO
24188 s_offset_b1 = s_offset_b1 + 7
24189 END DO
24190 s_offset_a1 = s_offset_a1 + 1
24191 END DO
24192 END SUBROUTINE contract_sfdg
24193#endif
24194#if __MAX_CONTR > 3 || __MAX_CONTR == 3
24195! **************************************************************************************************
24196!> \brief ...
24197!> \param work ...
24198!> \param nl_a ...
24199!> \param nl_b ...
24200!> \param nl_c ...
24201!> \param nl_d ...
24202!> \param sphi_a ...
24203!> \param sphi_b ...
24204!> \param sphi_c ...
24205!> \param sphi_d ...
24206!> \param primitives ...
24207!> \param buffer1 ...
24208!> \param buffer2 ...
24209! **************************************************************************************************
24210 SUBROUTINE contract_sffs(work, &
24211 nl_a, nl_b, nl_c, nl_d, &
24212 sphi_a, sphi_b, sphi_c, sphi_d, &
24213 primitives, &
24214 buffer1, buffer2)
24215 REAL(dp), DIMENSION(1*10*10*1), INTENT(IN) :: work
24216 INTEGER :: nl_a, nl_b, nl_c, nl_d
24217 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
24218 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
24219 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
24220 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
24221 REAL(dp), &
24222 DIMENSION(1*nl_a, 7*nl_b, 7*nl_c, 1*nl_d) :: primitives
24223 REAL(dp), DIMENSION(1*10*10*1) :: buffer1, buffer2
24224
24225 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
24226 kmax, s_offset_a1, s_offset_b1, &
24227 s_offset_c1, s_offset_d1
24228
24229 s_offset_a1 = 0
24230 DO ia = 1, nl_a
24231 s_offset_b1 = 0
24232 DO ib = 1, nl_b
24233 s_offset_c1 = 0
24234 DO ic = 1, nl_c
24235 s_offset_d1 = 0
24236 DO id = 1, nl_d
24237 buffer1 = 0.0_dp
24238 imax = 10*10*1
24239 kmax = 1
24240 DO i = 1, imax
24241 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
24242 END DO
24243 buffer2 = 0.0_dp
24244 imax = 1*10*1
24245 kmax = 10
24246 DO i = 1, imax
24247 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
24248 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
24249 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
24250 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
24251 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
24252 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
24253 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
24254 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
24255 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
24256 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
24257 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
24258 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
24259 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
24260 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
24261 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
24262 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
24263 END DO
24264 buffer1 = 0.0_dp
24265 imax = 1*7*1
24266 kmax = 10
24267 DO i = 1, imax
24268 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
24269 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
24270 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
24271 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
24272 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
24273 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
24274 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
24275 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
24276 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
24277 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
24278 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
24279 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
24280 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
24281 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
24282 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
24283 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
24284 END DO
24285 imax = 1*7*7
24286 kmax = 1
24287 i = 0
24288 DO i1 = 1, 7
24289 DO i2 = 1, 7
24290 DO i3 = 1, 1
24291 i = i + 1
24292 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
24293 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
24294 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
24295 END DO
24296 END DO
24297 END DO
24298 s_offset_d1 = s_offset_d1 + 1
24299 END DO
24300 s_offset_c1 = s_offset_c1 + 7
24301 END DO
24302 s_offset_b1 = s_offset_b1 + 7
24303 END DO
24304 s_offset_a1 = s_offset_a1 + 1
24305 END DO
24306 END SUBROUTINE contract_sffs
24307#endif
24308#if __MAX_CONTR > 3 || __MAX_CONTR == 3
24309! **************************************************************************************************
24310!> \brief ...
24311!> \param work ...
24312!> \param nl_a ...
24313!> \param nl_b ...
24314!> \param nl_c ...
24315!> \param nl_d ...
24316!> \param sphi_a ...
24317!> \param sphi_b ...
24318!> \param sphi_c ...
24319!> \param sphi_d ...
24320!> \param primitives ...
24321!> \param buffer1 ...
24322!> \param buffer2 ...
24323! **************************************************************************************************
24324 SUBROUTINE contract_sffp(work, &
24325 nl_a, nl_b, nl_c, nl_d, &
24326 sphi_a, sphi_b, sphi_c, sphi_d, &
24327 primitives, &
24328 buffer1, buffer2)
24329 REAL(dp), DIMENSION(1*10*10*3), INTENT(IN) :: work
24330 INTEGER :: nl_a, nl_b, nl_c, nl_d
24331 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
24332 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
24333 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
24334 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
24335 REAL(dp), &
24336 DIMENSION(1*nl_a, 7*nl_b, 7*nl_c, 3*nl_d) :: primitives
24337 REAL(dp), DIMENSION(1*10*10*3) :: buffer1, buffer2
24338
24339 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
24340 kmax, s_offset_a1, s_offset_b1, &
24341 s_offset_c1, s_offset_d1
24342
24343 s_offset_a1 = 0
24344 DO ia = 1, nl_a
24345 s_offset_b1 = 0
24346 DO ib = 1, nl_b
24347 s_offset_c1 = 0
24348 DO ic = 1, nl_c
24349 s_offset_d1 = 0
24350 DO id = 1, nl_d
24351 buffer1 = 0.0_dp
24352 imax = 10*10*3
24353 kmax = 1
24354 DO i = 1, imax
24355 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
24356 END DO
24357 buffer2 = 0.0_dp
24358 imax = 1*10*3
24359 kmax = 10
24360 DO i = 1, imax
24361 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
24362 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
24363 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
24364 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
24365 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
24366 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
24367 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
24368 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
24369 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
24370 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
24371 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
24372 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
24373 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
24374 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
24375 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
24376 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
24377 END DO
24378 buffer1 = 0.0_dp
24379 imax = 1*7*3
24380 kmax = 10
24381 DO i = 1, imax
24382 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
24383 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
24384 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
24385 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
24386 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
24387 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
24388 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
24389 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
24390 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
24391 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
24392 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
24393 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
24394 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
24395 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
24396 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
24397 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
24398 END DO
24399 imax = 1*7*7
24400 kmax = 3
24401 i = 0
24402 DO i1 = 1, 7
24403 DO i2 = 1, 7
24404 DO i3 = 1, 1
24405 i = i + 1
24406 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
24407 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
24408 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
24409 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
24410 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
24411 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
24412 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
24413 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
24414 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
24415 END DO
24416 END DO
24417 END DO
24418 s_offset_d1 = s_offset_d1 + 3
24419 END DO
24420 s_offset_c1 = s_offset_c1 + 7
24421 END DO
24422 s_offset_b1 = s_offset_b1 + 7
24423 END DO
24424 s_offset_a1 = s_offset_a1 + 1
24425 END DO
24426 END SUBROUTINE contract_sffp
24427#endif
24428#if __MAX_CONTR > 3 || __MAX_CONTR == 3
24429! **************************************************************************************************
24430!> \brief ...
24431!> \param work ...
24432!> \param nl_a ...
24433!> \param nl_b ...
24434!> \param nl_c ...
24435!> \param nl_d ...
24436!> \param sphi_a ...
24437!> \param sphi_b ...
24438!> \param sphi_c ...
24439!> \param sphi_d ...
24440!> \param primitives ...
24441!> \param buffer1 ...
24442!> \param buffer2 ...
24443! **************************************************************************************************
24444 SUBROUTINE contract_sffd(work, &
24445 nl_a, nl_b, nl_c, nl_d, &
24446 sphi_a, sphi_b, sphi_c, sphi_d, &
24447 primitives, &
24448 buffer1, buffer2)
24449 REAL(dp), DIMENSION(1*10*10*6), INTENT(IN) :: work
24450 INTEGER :: nl_a, nl_b, nl_c, nl_d
24451 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
24452 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
24453 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
24454 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
24455 REAL(dp), &
24456 DIMENSION(1*nl_a, 7*nl_b, 7*nl_c, 5*nl_d) :: primitives
24457 REAL(dp), DIMENSION(1*10*10*6) :: buffer1, buffer2
24458
24459 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
24460 kmax, s_offset_a1, s_offset_b1, &
24461 s_offset_c1, s_offset_d1
24462
24463 s_offset_a1 = 0
24464 DO ia = 1, nl_a
24465 s_offset_b1 = 0
24466 DO ib = 1, nl_b
24467 s_offset_c1 = 0
24468 DO ic = 1, nl_c
24469 s_offset_d1 = 0
24470 DO id = 1, nl_d
24471 buffer1 = 0.0_dp
24472 imax = 10*10*6
24473 kmax = 1
24474 DO i = 1, imax
24475 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
24476 END DO
24477 buffer2 = 0.0_dp
24478 imax = 1*10*6
24479 kmax = 10
24480 DO i = 1, imax
24481 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
24482 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
24483 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
24484 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
24485 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
24486 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
24487 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
24488 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
24489 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
24490 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
24491 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
24492 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
24493 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
24494 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
24495 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
24496 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
24497 END DO
24498 buffer1 = 0.0_dp
24499 imax = 1*7*6
24500 kmax = 10
24501 DO i = 1, imax
24502 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
24503 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
24504 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
24505 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
24506 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
24507 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
24508 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
24509 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
24510 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
24511 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
24512 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
24513 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
24514 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
24515 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
24516 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
24517 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
24518 END DO
24519 imax = 1*7*7
24520 kmax = 6
24521 i = 0
24522 DO i1 = 1, 7
24523 DO i2 = 1, 7
24524 DO i3 = 1, 1
24525 i = i + 1
24526 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
24527 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
24528 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
24529 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
24530 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
24531 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
24532 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
24533 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
24534 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
24535 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
24536 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
24537 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
24538 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
24539 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
24540 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
24541 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
24542 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
24543 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
24544 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
24545 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
24546 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
24547 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
24548 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
24549 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
24550 END DO
24551 END DO
24552 END DO
24553 s_offset_d1 = s_offset_d1 + 5
24554 END DO
24555 s_offset_c1 = s_offset_c1 + 7
24556 END DO
24557 s_offset_b1 = s_offset_b1 + 7
24558 END DO
24559 s_offset_a1 = s_offset_a1 + 1
24560 END DO
24561 END SUBROUTINE contract_sffd
24562#endif
24563#if __MAX_CONTR > 3 || __MAX_CONTR == 3
24564! **************************************************************************************************
24565!> \brief ...
24566!> \param work ...
24567!> \param nl_a ...
24568!> \param nl_b ...
24569!> \param nl_c ...
24570!> \param nl_d ...
24571!> \param sphi_a ...
24572!> \param sphi_b ...
24573!> \param sphi_c ...
24574!> \param sphi_d ...
24575!> \param primitives ...
24576!> \param buffer1 ...
24577!> \param buffer2 ...
24578! **************************************************************************************************
24579 SUBROUTINE contract_sfff(work, &
24580 nl_a, nl_b, nl_c, nl_d, &
24581 sphi_a, sphi_b, sphi_c, sphi_d, &
24582 primitives, &
24583 buffer1, buffer2)
24584 REAL(dp), DIMENSION(1*10*10*10), INTENT(IN) :: work
24585 INTEGER :: nl_a, nl_b, nl_c, nl_d
24586 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
24587 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
24588 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
24589 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
24590 REAL(dp), &
24591 DIMENSION(1*nl_a, 7*nl_b, 7*nl_c, 7*nl_d) :: primitives
24592 REAL(dp), DIMENSION(1*10*10*10) :: buffer1, buffer2
24593
24594 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
24595 kmax, s_offset_a1, s_offset_b1, &
24596 s_offset_c1, s_offset_d1
24597
24598 s_offset_a1 = 0
24599 DO ia = 1, nl_a
24600 s_offset_b1 = 0
24601 DO ib = 1, nl_b
24602 s_offset_c1 = 0
24603 DO ic = 1, nl_c
24604 s_offset_d1 = 0
24605 DO id = 1, nl_d
24606 buffer1 = 0.0_dp
24607 imax = 10*10*10
24608 kmax = 1
24609 DO i = 1, imax
24610 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
24611 END DO
24612 buffer2 = 0.0_dp
24613 imax = 1*10*10
24614 kmax = 10
24615 DO i = 1, imax
24616 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
24617 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
24618 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
24619 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
24620 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
24621 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
24622 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
24623 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
24624 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
24625 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
24626 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
24627 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
24628 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
24629 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
24630 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
24631 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
24632 END DO
24633 buffer1 = 0.0_dp
24634 imax = 1*7*10
24635 kmax = 10
24636 DO i = 1, imax
24637 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
24638 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
24639 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
24640 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
24641 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
24642 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
24643 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
24644 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
24645 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
24646 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
24647 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
24648 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
24649 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
24650 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
24651 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
24652 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
24653 END DO
24654 imax = 1*7*7
24655 kmax = 10
24656 i = 0
24657 DO i1 = 1, 7
24658 DO i2 = 1, 7
24659 DO i3 = 1, 1
24660 i = i + 1
24661 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
24662 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
24663 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
24664 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
24665 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
24666 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
24667 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
24668 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
24669 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
24670 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
24671 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
24672 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
24673 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
24674 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
24675 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
24676 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
24677 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
24678 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
24679 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
24680 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
24681 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
24682 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
24683 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
24684 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
24685 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
24686 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
24687 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
24688 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
24689 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
24690 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
24691 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
24692 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
24693 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
24694 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
24695 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
24696 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
24697 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
24698 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
24699 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
24700 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
24701 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
24702 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
24703 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
24704 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
24705 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
24706 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
24707 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
24708 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
24709 END DO
24710 END DO
24711 END DO
24712 s_offset_d1 = s_offset_d1 + 7
24713 END DO
24714 s_offset_c1 = s_offset_c1 + 7
24715 END DO
24716 s_offset_b1 = s_offset_b1 + 7
24717 END DO
24718 s_offset_a1 = s_offset_a1 + 1
24719 END DO
24720 END SUBROUTINE contract_sfff
24721#endif
24722#if __MAX_CONTR > 4 || __MAX_CONTR == 4
24723! **************************************************************************************************
24724!> \brief ...
24725!> \param work ...
24726!> \param nl_a ...
24727!> \param nl_b ...
24728!> \param nl_c ...
24729!> \param nl_d ...
24730!> \param sphi_a ...
24731!> \param sphi_b ...
24732!> \param sphi_c ...
24733!> \param sphi_d ...
24734!> \param primitives ...
24735!> \param buffer1 ...
24736!> \param buffer2 ...
24737! **************************************************************************************************
24738 SUBROUTINE contract_sffg(work, &
24739 nl_a, nl_b, nl_c, nl_d, &
24740 sphi_a, sphi_b, sphi_c, sphi_d, &
24741 primitives, &
24742 buffer1, buffer2)
24743 REAL(dp), DIMENSION(1*10*10*15), INTENT(IN) :: work
24744 INTEGER :: nl_a, nl_b, nl_c, nl_d
24745 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
24746 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
24747 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
24748 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
24749 REAL(dp), &
24750 DIMENSION(1*nl_a, 7*nl_b, 7*nl_c, 9*nl_d) :: primitives
24751 REAL(dp), DIMENSION(1*10*10*15) :: buffer1, buffer2
24752
24753 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
24754 kmax, s_offset_a1, s_offset_b1, &
24755 s_offset_c1, s_offset_d1
24756
24757 s_offset_a1 = 0
24758 DO ia = 1, nl_a
24759 s_offset_b1 = 0
24760 DO ib = 1, nl_b
24761 s_offset_c1 = 0
24762 DO ic = 1, nl_c
24763 s_offset_d1 = 0
24764 DO id = 1, nl_d
24765 buffer1 = 0.0_dp
24766 imax = 10*10*15
24767 kmax = 1
24768 DO i = 1, imax
24769 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
24770 END DO
24771 buffer2 = 0.0_dp
24772 imax = 1*10*15
24773 kmax = 10
24774 DO i = 1, imax
24775 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
24776 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
24777 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
24778 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
24779 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
24780 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
24781 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
24782 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
24783 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
24784 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
24785 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
24786 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
24787 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
24788 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
24789 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
24790 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
24791 END DO
24792 buffer1 = 0.0_dp
24793 imax = 1*7*15
24794 kmax = 10
24795 DO i = 1, imax
24796 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
24797 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
24798 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
24799 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
24800 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
24801 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
24802 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
24803 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
24804 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
24805 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
24806 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
24807 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
24808 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
24809 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
24810 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
24811 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
24812 END DO
24813 imax = 1*7*7
24814 kmax = 15
24815 i = 0
24816 DO i1 = 1, 7
24817 DO i2 = 1, 7
24818 DO i3 = 1, 1
24819 i = i + 1
24820 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
24821 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
24822 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
24823 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
24824 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
24825 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
24826 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
24827 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
24828 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
24829 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
24830 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
24831 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
24832 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
24833 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
24834 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
24835 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
24836 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
24837 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
24838 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
24839 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
24840 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
24841 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
24842 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
24843 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
24844 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
24845 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
24846 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
24847 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
24848 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
24849 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
24850 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
24851 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
24852 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
24853 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
24854 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
24855 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
24856 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
24857 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
24858 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
24859 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
24860 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
24861 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
24862 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
24863 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
24864 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
24865 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
24866 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
24867 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
24868 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
24869 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
24870 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
24871 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
24872 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
24873 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
24874 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
24875 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
24876 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
24877 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
24878 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
24879 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
24880 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
24881 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
24882 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
24883 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
24884 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
24885 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
24886 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
24887 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
24888 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
24889 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
24890 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
24891 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
24892 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
24893 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
24894 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
24895 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
24896 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
24897 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
24898 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
24899 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
24900 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
24901 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
24902 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
24903 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
24904 END DO
24905 END DO
24906 END DO
24907 s_offset_d1 = s_offset_d1 + 9
24908 END DO
24909 s_offset_c1 = s_offset_c1 + 7
24910 END DO
24911 s_offset_b1 = s_offset_b1 + 7
24912 END DO
24913 s_offset_a1 = s_offset_a1 + 1
24914 END DO
24915 END SUBROUTINE contract_sffg
24916#endif
24917#if __MAX_CONTR > 4 || __MAX_CONTR == 4
24918! **************************************************************************************************
24919!> \brief ...
24920!> \param work ...
24921!> \param nl_a ...
24922!> \param nl_b ...
24923!> \param nl_c ...
24924!> \param nl_d ...
24925!> \param sphi_a ...
24926!> \param sphi_b ...
24927!> \param sphi_c ...
24928!> \param sphi_d ...
24929!> \param primitives ...
24930!> \param buffer1 ...
24931!> \param buffer2 ...
24932! **************************************************************************************************
24933 SUBROUTINE contract_sfgs(work, &
24934 nl_a, nl_b, nl_c, nl_d, &
24935 sphi_a, sphi_b, sphi_c, sphi_d, &
24936 primitives, &
24937 buffer1, buffer2)
24938 REAL(dp), DIMENSION(1*10*15*1), INTENT(IN) :: work
24939 INTEGER :: nl_a, nl_b, nl_c, nl_d
24940 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
24941 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
24942 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
24943 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
24944 REAL(dp), &
24945 DIMENSION(1*nl_a, 7*nl_b, 9*nl_c, 1*nl_d) :: primitives
24946 REAL(dp), DIMENSION(1*10*15*1) :: buffer1, buffer2
24947
24948 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
24949 kmax, s_offset_a1, s_offset_b1, &
24950 s_offset_c1, s_offset_d1
24951
24952 s_offset_a1 = 0
24953 DO ia = 1, nl_a
24954 s_offset_b1 = 0
24955 DO ib = 1, nl_b
24956 s_offset_c1 = 0
24957 DO ic = 1, nl_c
24958 s_offset_d1 = 0
24959 DO id = 1, nl_d
24960 buffer1 = 0.0_dp
24961 imax = 10*15*1
24962 kmax = 1
24963 DO i = 1, imax
24964 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
24965 END DO
24966 buffer2 = 0.0_dp
24967 imax = 1*15*1
24968 kmax = 10
24969 DO i = 1, imax
24970 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
24971 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
24972 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
24973 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
24974 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
24975 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
24976 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
24977 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
24978 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
24979 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
24980 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
24981 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
24982 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
24983 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
24984 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
24985 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
24986 END DO
24987 buffer1 = 0.0_dp
24988 imax = 1*7*1
24989 kmax = 15
24990 DO i = 1, imax
24991 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
24992 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
24993 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
24994 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
24995 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
24996 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
24997 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
24998 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
24999 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
25000 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
25001 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
25002 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
25003 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
25004 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
25005 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
25006 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
25007 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
25008 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
25009 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
25010 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
25011 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
25012 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
25013 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
25014 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
25015 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
25016 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
25017 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
25018 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
25019 END DO
25020 imax = 1*7*9
25021 kmax = 1
25022 i = 0
25023 DO i1 = 1, 9
25024 DO i2 = 1, 7
25025 DO i3 = 1, 1
25026 i = i + 1
25027 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
25028 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
25029 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
25030 END DO
25031 END DO
25032 END DO
25033 s_offset_d1 = s_offset_d1 + 1
25034 END DO
25035 s_offset_c1 = s_offset_c1 + 9
25036 END DO
25037 s_offset_b1 = s_offset_b1 + 7
25038 END DO
25039 s_offset_a1 = s_offset_a1 + 1
25040 END DO
25041 END SUBROUTINE contract_sfgs
25042#endif
25043#if __MAX_CONTR > 4 || __MAX_CONTR == 4
25044! **************************************************************************************************
25045!> \brief ...
25046!> \param work ...
25047!> \param nl_a ...
25048!> \param nl_b ...
25049!> \param nl_c ...
25050!> \param nl_d ...
25051!> \param sphi_a ...
25052!> \param sphi_b ...
25053!> \param sphi_c ...
25054!> \param sphi_d ...
25055!> \param primitives ...
25056!> \param buffer1 ...
25057!> \param buffer2 ...
25058! **************************************************************************************************
25059 SUBROUTINE contract_sfgp(work, &
25060 nl_a, nl_b, nl_c, nl_d, &
25061 sphi_a, sphi_b, sphi_c, sphi_d, &
25062 primitives, &
25063 buffer1, buffer2)
25064 REAL(dp), DIMENSION(1*10*15*3), INTENT(IN) :: work
25065 INTEGER :: nl_a, nl_b, nl_c, nl_d
25066 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
25067 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
25068 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
25069 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
25070 REAL(dp), &
25071 DIMENSION(1*nl_a, 7*nl_b, 9*nl_c, 3*nl_d) :: primitives
25072 REAL(dp), DIMENSION(1*10*15*3) :: buffer1, buffer2
25073
25074 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
25075 kmax, s_offset_a1, s_offset_b1, &
25076 s_offset_c1, s_offset_d1
25077
25078 s_offset_a1 = 0
25079 DO ia = 1, nl_a
25080 s_offset_b1 = 0
25081 DO ib = 1, nl_b
25082 s_offset_c1 = 0
25083 DO ic = 1, nl_c
25084 s_offset_d1 = 0
25085 DO id = 1, nl_d
25086 buffer1 = 0.0_dp
25087 imax = 10*15*3
25088 kmax = 1
25089 DO i = 1, imax
25090 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
25091 END DO
25092 buffer2 = 0.0_dp
25093 imax = 1*15*3
25094 kmax = 10
25095 DO i = 1, imax
25096 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
25097 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
25098 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
25099 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
25100 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
25101 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
25102 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
25103 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
25104 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
25105 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
25106 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
25107 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
25108 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
25109 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
25110 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
25111 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
25112 END DO
25113 buffer1 = 0.0_dp
25114 imax = 1*7*3
25115 kmax = 15
25116 DO i = 1, imax
25117 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
25118 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
25119 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
25120 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
25121 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
25122 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
25123 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
25124 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
25125 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
25126 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
25127 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
25128 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
25129 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
25130 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
25131 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
25132 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
25133 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
25134 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
25135 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
25136 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
25137 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
25138 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
25139 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
25140 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
25141 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
25142 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
25143 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
25144 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
25145 END DO
25146 imax = 1*7*9
25147 kmax = 3
25148 i = 0
25149 DO i1 = 1, 9
25150 DO i2 = 1, 7
25151 DO i3 = 1, 1
25152 i = i + 1
25153 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
25154 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
25155 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
25156 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
25157 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
25158 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
25159 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
25160 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
25161 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
25162 END DO
25163 END DO
25164 END DO
25165 s_offset_d1 = s_offset_d1 + 3
25166 END DO
25167 s_offset_c1 = s_offset_c1 + 9
25168 END DO
25169 s_offset_b1 = s_offset_b1 + 7
25170 END DO
25171 s_offset_a1 = s_offset_a1 + 1
25172 END DO
25173 END SUBROUTINE contract_sfgp
25174#endif
25175#if __MAX_CONTR > 4 || __MAX_CONTR == 4
25176! **************************************************************************************************
25177!> \brief ...
25178!> \param work ...
25179!> \param nl_a ...
25180!> \param nl_b ...
25181!> \param nl_c ...
25182!> \param nl_d ...
25183!> \param sphi_a ...
25184!> \param sphi_b ...
25185!> \param sphi_c ...
25186!> \param sphi_d ...
25187!> \param primitives ...
25188!> \param buffer1 ...
25189!> \param buffer2 ...
25190! **************************************************************************************************
25191 SUBROUTINE contract_sfgd(work, &
25192 nl_a, nl_b, nl_c, nl_d, &
25193 sphi_a, sphi_b, sphi_c, sphi_d, &
25194 primitives, &
25195 buffer1, buffer2)
25196 REAL(dp), DIMENSION(1*10*15*6), INTENT(IN) :: work
25197 INTEGER :: nl_a, nl_b, nl_c, nl_d
25198 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
25199 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
25200 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
25201 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
25202 REAL(dp), &
25203 DIMENSION(1*nl_a, 7*nl_b, 9*nl_c, 5*nl_d) :: primitives
25204 REAL(dp), DIMENSION(1*10*15*6) :: buffer1, buffer2
25205
25206 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
25207 kmax, s_offset_a1, s_offset_b1, &
25208 s_offset_c1, s_offset_d1
25209
25210 s_offset_a1 = 0
25211 DO ia = 1, nl_a
25212 s_offset_b1 = 0
25213 DO ib = 1, nl_b
25214 s_offset_c1 = 0
25215 DO ic = 1, nl_c
25216 s_offset_d1 = 0
25217 DO id = 1, nl_d
25218 buffer1 = 0.0_dp
25219 imax = 10*15*6
25220 kmax = 1
25221 DO i = 1, imax
25222 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
25223 END DO
25224 buffer2 = 0.0_dp
25225 imax = 1*15*6
25226 kmax = 10
25227 DO i = 1, imax
25228 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
25229 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
25230 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
25231 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
25232 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
25233 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
25234 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
25235 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
25236 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
25237 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
25238 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
25239 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
25240 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
25241 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
25242 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
25243 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
25244 END DO
25245 buffer1 = 0.0_dp
25246 imax = 1*7*6
25247 kmax = 15
25248 DO i = 1, imax
25249 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
25250 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
25251 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
25252 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
25253 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
25254 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
25255 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
25256 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
25257 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
25258 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
25259 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
25260 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
25261 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
25262 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
25263 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
25264 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
25265 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
25266 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
25267 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
25268 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
25269 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
25270 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
25271 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
25272 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
25273 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
25274 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
25275 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
25276 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
25277 END DO
25278 imax = 1*7*9
25279 kmax = 6
25280 i = 0
25281 DO i1 = 1, 9
25282 DO i2 = 1, 7
25283 DO i3 = 1, 1
25284 i = i + 1
25285 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
25286 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
25287 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
25288 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
25289 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
25290 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
25291 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
25292 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
25293 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
25294 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
25295 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
25296 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
25297 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
25298 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
25299 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
25300 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
25301 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
25302 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
25303 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
25304 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
25305 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
25306 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
25307 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
25308 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
25309 END DO
25310 END DO
25311 END DO
25312 s_offset_d1 = s_offset_d1 + 5
25313 END DO
25314 s_offset_c1 = s_offset_c1 + 9
25315 END DO
25316 s_offset_b1 = s_offset_b1 + 7
25317 END DO
25318 s_offset_a1 = s_offset_a1 + 1
25319 END DO
25320 END SUBROUTINE contract_sfgd
25321#endif
25322#if __MAX_CONTR > 4 || __MAX_CONTR == 4
25323! **************************************************************************************************
25324!> \brief ...
25325!> \param work ...
25326!> \param nl_a ...
25327!> \param nl_b ...
25328!> \param nl_c ...
25329!> \param nl_d ...
25330!> \param sphi_a ...
25331!> \param sphi_b ...
25332!> \param sphi_c ...
25333!> \param sphi_d ...
25334!> \param primitives ...
25335!> \param buffer1 ...
25336!> \param buffer2 ...
25337! **************************************************************************************************
25338 SUBROUTINE contract_sfgf(work, &
25339 nl_a, nl_b, nl_c, nl_d, &
25340 sphi_a, sphi_b, sphi_c, sphi_d, &
25341 primitives, &
25342 buffer1, buffer2)
25343 REAL(dp), DIMENSION(1*10*15*10), INTENT(IN) :: work
25344 INTEGER :: nl_a, nl_b, nl_c, nl_d
25345 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
25346 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
25347 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
25348 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
25349 REAL(dp), &
25350 DIMENSION(1*nl_a, 7*nl_b, 9*nl_c, 7*nl_d) :: primitives
25351 REAL(dp), DIMENSION(1*10*15*10) :: buffer1, buffer2
25352
25353 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
25354 kmax, s_offset_a1, s_offset_b1, &
25355 s_offset_c1, s_offset_d1
25356
25357 s_offset_a1 = 0
25358 DO ia = 1, nl_a
25359 s_offset_b1 = 0
25360 DO ib = 1, nl_b
25361 s_offset_c1 = 0
25362 DO ic = 1, nl_c
25363 s_offset_d1 = 0
25364 DO id = 1, nl_d
25365 buffer1 = 0.0_dp
25366 imax = 10*15*10
25367 kmax = 1
25368 DO i = 1, imax
25369 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
25370 END DO
25371 buffer2 = 0.0_dp
25372 imax = 1*15*10
25373 kmax = 10
25374 DO i = 1, imax
25375 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
25376 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
25377 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
25378 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
25379 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
25380 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
25381 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
25382 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
25383 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
25384 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
25385 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
25386 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
25387 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
25388 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
25389 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
25390 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
25391 END DO
25392 buffer1 = 0.0_dp
25393 imax = 1*7*10
25394 kmax = 15
25395 DO i = 1, imax
25396 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
25397 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
25398 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
25399 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
25400 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
25401 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
25402 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
25403 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
25404 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
25405 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
25406 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
25407 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
25408 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
25409 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
25410 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
25411 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
25412 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
25413 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
25414 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
25415 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
25416 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
25417 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
25418 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
25419 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
25420 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
25421 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
25422 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
25423 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
25424 END DO
25425 imax = 1*7*9
25426 kmax = 10
25427 i = 0
25428 DO i1 = 1, 9
25429 DO i2 = 1, 7
25430 DO i3 = 1, 1
25431 i = i + 1
25432 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
25433 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
25434 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
25435 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
25436 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
25437 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
25438 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
25439 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
25440 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
25441 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
25442 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
25443 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
25444 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
25445 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
25446 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
25447 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
25448 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
25449 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
25450 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
25451 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
25452 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
25453 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
25454 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
25455 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
25456 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
25457 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
25458 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
25459 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
25460 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
25461 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
25462 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
25463 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
25464 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
25465 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
25466 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
25467 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
25468 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
25469 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
25470 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
25471 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
25472 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
25473 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
25474 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
25475 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
25476 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
25477 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
25478 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
25479 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
25480 END DO
25481 END DO
25482 END DO
25483 s_offset_d1 = s_offset_d1 + 7
25484 END DO
25485 s_offset_c1 = s_offset_c1 + 9
25486 END DO
25487 s_offset_b1 = s_offset_b1 + 7
25488 END DO
25489 s_offset_a1 = s_offset_a1 + 1
25490 END DO
25491 END SUBROUTINE contract_sfgf
25492#endif
25493#if __MAX_CONTR > 4 || __MAX_CONTR == 4
25494! **************************************************************************************************
25495!> \brief ...
25496!> \param work ...
25497!> \param nl_a ...
25498!> \param nl_b ...
25499!> \param nl_c ...
25500!> \param nl_d ...
25501!> \param sphi_a ...
25502!> \param sphi_b ...
25503!> \param sphi_c ...
25504!> \param sphi_d ...
25505!> \param primitives ...
25506!> \param buffer1 ...
25507!> \param buffer2 ...
25508! **************************************************************************************************
25509 SUBROUTINE contract_sfgg(work, &
25510 nl_a, nl_b, nl_c, nl_d, &
25511 sphi_a, sphi_b, sphi_c, sphi_d, &
25512 primitives, &
25513 buffer1, buffer2)
25514 REAL(dp), DIMENSION(1*10*15*15), INTENT(IN) :: work
25515 INTEGER :: nl_a, nl_b, nl_c, nl_d
25516 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
25517 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
25518 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
25519 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
25520 REAL(dp), &
25521 DIMENSION(1*nl_a, 7*nl_b, 9*nl_c, 9*nl_d) :: primitives
25522 REAL(dp), DIMENSION(1*10*15*15) :: buffer1, buffer2
25523
25524 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
25525 kmax, s_offset_a1, s_offset_b1, &
25526 s_offset_c1, s_offset_d1
25527
25528 s_offset_a1 = 0
25529 DO ia = 1, nl_a
25530 s_offset_b1 = 0
25531 DO ib = 1, nl_b
25532 s_offset_c1 = 0
25533 DO ic = 1, nl_c
25534 s_offset_d1 = 0
25535 DO id = 1, nl_d
25536 buffer1 = 0.0_dp
25537 imax = 10*15*15
25538 kmax = 1
25539 DO i = 1, imax
25540 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
25541 END DO
25542 buffer2 = 0.0_dp
25543 imax = 1*15*15
25544 kmax = 10
25545 DO i = 1, imax
25546 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
25547 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
25548 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
25549 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
25550 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
25551 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
25552 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
25553 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
25554 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
25555 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
25556 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
25557 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
25558 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
25559 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
25560 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
25561 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
25562 END DO
25563 buffer1 = 0.0_dp
25564 imax = 1*7*15
25565 kmax = 15
25566 DO i = 1, imax
25567 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
25568 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
25569 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
25570 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
25571 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
25572 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
25573 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
25574 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
25575 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
25576 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
25577 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
25578 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
25579 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
25580 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
25581 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
25582 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
25583 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
25584 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
25585 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
25586 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
25587 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
25588 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
25589 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
25590 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
25591 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
25592 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
25593 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
25594 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
25595 END DO
25596 imax = 1*7*9
25597 kmax = 15
25598 i = 0
25599 DO i1 = 1, 9
25600 DO i2 = 1, 7
25601 DO i3 = 1, 1
25602 i = i + 1
25603 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
25604 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
25605 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
25606 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
25607 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
25608 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
25609 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
25610 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
25611 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
25612 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
25613 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
25614 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
25615 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
25616 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
25617 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
25618 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
25619 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
25620 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
25621 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
25622 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
25623 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
25624 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
25625 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
25626 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
25627 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
25628 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
25629 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
25630 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
25631 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
25632 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
25633 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
25634 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
25635 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
25636 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
25637 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
25638 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
25639 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
25640 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
25641 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
25642 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
25643 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
25644 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
25645 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
25646 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
25647 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
25648 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
25649 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
25650 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
25651 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
25652 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
25653 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
25654 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
25655 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
25656 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
25657 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
25658 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
25659 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
25660 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
25661 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
25662 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
25663 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
25664 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
25665 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
25666 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
25667 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
25668 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
25669 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
25670 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
25671 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
25672 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
25673 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
25674 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
25675 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
25676 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
25677 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
25678 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
25679 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
25680 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
25681 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
25682 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
25683 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
25684 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
25685 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
25686 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
25687 END DO
25688 END DO
25689 END DO
25690 s_offset_d1 = s_offset_d1 + 9
25691 END DO
25692 s_offset_c1 = s_offset_c1 + 9
25693 END DO
25694 s_offset_b1 = s_offset_b1 + 7
25695 END DO
25696 s_offset_a1 = s_offset_a1 + 1
25697 END DO
25698 END SUBROUTINE contract_sfgg
25699#endif
25700#if __MAX_CONTR > 4 || __MAX_CONTR == 4
25701! **************************************************************************************************
25702!> \brief ...
25703!> \param work ...
25704!> \param nl_a ...
25705!> \param nl_b ...
25706!> \param nl_c ...
25707!> \param nl_d ...
25708!> \param sphi_a ...
25709!> \param sphi_b ...
25710!> \param sphi_c ...
25711!> \param sphi_d ...
25712!> \param primitives ...
25713!> \param buffer1 ...
25714!> \param buffer2 ...
25715! **************************************************************************************************
25716 SUBROUTINE contract_sgss(work, &
25717 nl_a, nl_b, nl_c, nl_d, &
25718 sphi_a, sphi_b, sphi_c, sphi_d, &
25719 primitives, &
25720 buffer1, buffer2)
25721 REAL(dp), DIMENSION(1*15*1*1), INTENT(IN) :: work
25722 INTEGER :: nl_a, nl_b, nl_c, nl_d
25723 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
25724 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
25725 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
25726 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
25727 REAL(dp), &
25728 DIMENSION(1*nl_a, 9*nl_b, 1*nl_c, 1*nl_d) :: primitives
25729 REAL(dp), DIMENSION(1*15*1*1) :: buffer1, buffer2
25730
25731 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
25732 kmax, s_offset_a1, s_offset_b1, &
25733 s_offset_c1, s_offset_d1
25734
25735 s_offset_a1 = 0
25736 DO ia = 1, nl_a
25737 s_offset_b1 = 0
25738 DO ib = 1, nl_b
25739 s_offset_c1 = 0
25740 DO ic = 1, nl_c
25741 s_offset_d1 = 0
25742 DO id = 1, nl_d
25743 buffer1 = 0.0_dp
25744 imax = 15*1*1
25745 kmax = 1
25746 DO i = 1, imax
25747 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
25748 END DO
25749 buffer2 = 0.0_dp
25750 imax = 1*1*1
25751 kmax = 15
25752 DO i = 1, imax
25753 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
25754 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
25755 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
25756 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
25757 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
25758 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
25759 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
25760 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
25761 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
25762 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
25763 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
25764 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
25765 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
25766 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
25767 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
25768 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
25769 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
25770 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
25771 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
25772 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
25773 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
25774 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
25775 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
25776 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
25777 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
25778 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
25779 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
25780 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
25781 END DO
25782 buffer1 = 0.0_dp
25783 imax = 1*9*1
25784 kmax = 1
25785 DO i = 1, imax
25786 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
25787 END DO
25788 imax = 1*9*1
25789 kmax = 1
25790 i = 0
25791 DO i1 = 1, 1
25792 DO i2 = 1, 9
25793 DO i3 = 1, 1
25794 i = i + 1
25795 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
25796 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
25797 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
25798 END DO
25799 END DO
25800 END DO
25801 s_offset_d1 = s_offset_d1 + 1
25802 END DO
25803 s_offset_c1 = s_offset_c1 + 1
25804 END DO
25805 s_offset_b1 = s_offset_b1 + 9
25806 END DO
25807 s_offset_a1 = s_offset_a1 + 1
25808 END DO
25809 END SUBROUTINE contract_sgss
25810#endif
25811#if __MAX_CONTR > 4 || __MAX_CONTR == 4
25812! **************************************************************************************************
25813!> \brief ...
25814!> \param work ...
25815!> \param nl_a ...
25816!> \param nl_b ...
25817!> \param nl_c ...
25818!> \param nl_d ...
25819!> \param sphi_a ...
25820!> \param sphi_b ...
25821!> \param sphi_c ...
25822!> \param sphi_d ...
25823!> \param primitives ...
25824!> \param buffer1 ...
25825!> \param buffer2 ...
25826! **************************************************************************************************
25827 SUBROUTINE contract_sgsp(work, &
25828 nl_a, nl_b, nl_c, nl_d, &
25829 sphi_a, sphi_b, sphi_c, sphi_d, &
25830 primitives, &
25831 buffer1, buffer2)
25832 REAL(dp), DIMENSION(1*15*1*3), INTENT(IN) :: work
25833 INTEGER :: nl_a, nl_b, nl_c, nl_d
25834 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
25835 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
25836 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
25837 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
25838 REAL(dp), &
25839 DIMENSION(1*nl_a, 9*nl_b, 1*nl_c, 3*nl_d) :: primitives
25840 REAL(dp), DIMENSION(1*15*1*3) :: buffer1, buffer2
25841
25842 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
25843 kmax, s_offset_a1, s_offset_b1, &
25844 s_offset_c1, s_offset_d1
25845
25846 s_offset_a1 = 0
25847 DO ia = 1, nl_a
25848 s_offset_b1 = 0
25849 DO ib = 1, nl_b
25850 s_offset_c1 = 0
25851 DO ic = 1, nl_c
25852 s_offset_d1 = 0
25853 DO id = 1, nl_d
25854 buffer1 = 0.0_dp
25855 imax = 15*1*3
25856 kmax = 1
25857 DO i = 1, imax
25858 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
25859 END DO
25860 buffer2 = 0.0_dp
25861 imax = 1*1*3
25862 kmax = 15
25863 DO i = 1, imax
25864 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
25865 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
25866 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
25867 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
25868 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
25869 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
25870 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
25871 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
25872 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
25873 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
25874 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
25875 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
25876 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
25877 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
25878 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
25879 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
25880 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
25881 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
25882 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
25883 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
25884 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
25885 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
25886 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
25887 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
25888 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
25889 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
25890 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
25891 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
25892 END DO
25893 buffer1 = 0.0_dp
25894 imax = 1*9*3
25895 kmax = 1
25896 DO i = 1, imax
25897 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
25898 END DO
25899 imax = 1*9*1
25900 kmax = 3
25901 i = 0
25902 DO i1 = 1, 1
25903 DO i2 = 1, 9
25904 DO i3 = 1, 1
25905 i = i + 1
25906 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
25907 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
25908 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
25909 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
25910 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
25911 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
25912 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
25913 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
25914 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
25915 END DO
25916 END DO
25917 END DO
25918 s_offset_d1 = s_offset_d1 + 3
25919 END DO
25920 s_offset_c1 = s_offset_c1 + 1
25921 END DO
25922 s_offset_b1 = s_offset_b1 + 9
25923 END DO
25924 s_offset_a1 = s_offset_a1 + 1
25925 END DO
25926 END SUBROUTINE contract_sgsp
25927#endif
25928#if __MAX_CONTR > 4 || __MAX_CONTR == 4
25929! **************************************************************************************************
25930!> \brief ...
25931!> \param work ...
25932!> \param nl_a ...
25933!> \param nl_b ...
25934!> \param nl_c ...
25935!> \param nl_d ...
25936!> \param sphi_a ...
25937!> \param sphi_b ...
25938!> \param sphi_c ...
25939!> \param sphi_d ...
25940!> \param primitives ...
25941!> \param buffer1 ...
25942!> \param buffer2 ...
25943! **************************************************************************************************
25944 SUBROUTINE contract_sgsd(work, &
25945 nl_a, nl_b, nl_c, nl_d, &
25946 sphi_a, sphi_b, sphi_c, sphi_d, &
25947 primitives, &
25948 buffer1, buffer2)
25949 REAL(dp), DIMENSION(1*15*1*6), INTENT(IN) :: work
25950 INTEGER :: nl_a, nl_b, nl_c, nl_d
25951 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
25952 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
25953 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
25954 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
25955 REAL(dp), &
25956 DIMENSION(1*nl_a, 9*nl_b, 1*nl_c, 5*nl_d) :: primitives
25957 REAL(dp), DIMENSION(1*15*1*6) :: buffer1, buffer2
25958
25959 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
25960 kmax, s_offset_a1, s_offset_b1, &
25961 s_offset_c1, s_offset_d1
25962
25963 s_offset_a1 = 0
25964 DO ia = 1, nl_a
25965 s_offset_b1 = 0
25966 DO ib = 1, nl_b
25967 s_offset_c1 = 0
25968 DO ic = 1, nl_c
25969 s_offset_d1 = 0
25970 DO id = 1, nl_d
25971 buffer1 = 0.0_dp
25972 imax = 15*1*6
25973 kmax = 1
25974 DO i = 1, imax
25975 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
25976 END DO
25977 buffer2 = 0.0_dp
25978 imax = 1*1*6
25979 kmax = 15
25980 DO i = 1, imax
25981 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
25982 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
25983 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
25984 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
25985 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
25986 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
25987 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
25988 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
25989 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
25990 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
25991 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
25992 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
25993 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
25994 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
25995 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
25996 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
25997 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
25998 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
25999 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
26000 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
26001 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
26002 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
26003 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
26004 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
26005 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
26006 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
26007 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
26008 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
26009 END DO
26010 buffer1 = 0.0_dp
26011 imax = 1*9*6
26012 kmax = 1
26013 DO i = 1, imax
26014 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
26015 END DO
26016 imax = 1*9*1
26017 kmax = 6
26018 i = 0
26019 DO i1 = 1, 1
26020 DO i2 = 1, 9
26021 DO i3 = 1, 1
26022 i = i + 1
26023 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
26024 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
26025 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
26026 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
26027 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
26028 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
26029 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
26030 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
26031 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
26032 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
26033 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
26034 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
26035 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
26036 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
26037 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
26038 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
26039 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
26040 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
26041 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
26042 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
26043 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
26044 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
26045 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
26046 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
26047 END DO
26048 END DO
26049 END DO
26050 s_offset_d1 = s_offset_d1 + 5
26051 END DO
26052 s_offset_c1 = s_offset_c1 + 1
26053 END DO
26054 s_offset_b1 = s_offset_b1 + 9
26055 END DO
26056 s_offset_a1 = s_offset_a1 + 1
26057 END DO
26058 END SUBROUTINE contract_sgsd
26059#endif
26060#if __MAX_CONTR > 4 || __MAX_CONTR == 4
26061! **************************************************************************************************
26062!> \brief ...
26063!> \param work ...
26064!> \param nl_a ...
26065!> \param nl_b ...
26066!> \param nl_c ...
26067!> \param nl_d ...
26068!> \param sphi_a ...
26069!> \param sphi_b ...
26070!> \param sphi_c ...
26071!> \param sphi_d ...
26072!> \param primitives ...
26073!> \param buffer1 ...
26074!> \param buffer2 ...
26075! **************************************************************************************************
26076 SUBROUTINE contract_sgsf(work, &
26077 nl_a, nl_b, nl_c, nl_d, &
26078 sphi_a, sphi_b, sphi_c, sphi_d, &
26079 primitives, &
26080 buffer1, buffer2)
26081 REAL(dp), DIMENSION(1*15*1*10), INTENT(IN) :: work
26082 INTEGER :: nl_a, nl_b, nl_c, nl_d
26083 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
26084 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
26085 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
26086 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
26087 REAL(dp), &
26088 DIMENSION(1*nl_a, 9*nl_b, 1*nl_c, 7*nl_d) :: primitives
26089 REAL(dp), DIMENSION(1*15*1*10) :: buffer1, buffer2
26090
26091 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
26092 kmax, s_offset_a1, s_offset_b1, &
26093 s_offset_c1, s_offset_d1
26094
26095 s_offset_a1 = 0
26096 DO ia = 1, nl_a
26097 s_offset_b1 = 0
26098 DO ib = 1, nl_b
26099 s_offset_c1 = 0
26100 DO ic = 1, nl_c
26101 s_offset_d1 = 0
26102 DO id = 1, nl_d
26103 buffer1 = 0.0_dp
26104 imax = 15*1*10
26105 kmax = 1
26106 DO i = 1, imax
26107 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
26108 END DO
26109 buffer2 = 0.0_dp
26110 imax = 1*1*10
26111 kmax = 15
26112 DO i = 1, imax
26113 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
26114 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
26115 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
26116 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
26117 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
26118 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
26119 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
26120 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
26121 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
26122 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
26123 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
26124 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
26125 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
26126 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
26127 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
26128 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
26129 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
26130 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
26131 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
26132 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
26133 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
26134 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
26135 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
26136 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
26137 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
26138 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
26139 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
26140 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
26141 END DO
26142 buffer1 = 0.0_dp
26143 imax = 1*9*10
26144 kmax = 1
26145 DO i = 1, imax
26146 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
26147 END DO
26148 imax = 1*9*1
26149 kmax = 10
26150 i = 0
26151 DO i1 = 1, 1
26152 DO i2 = 1, 9
26153 DO i3 = 1, 1
26154 i = i + 1
26155 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
26156 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
26157 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
26158 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
26159 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
26160 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
26161 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
26162 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
26163 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
26164 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
26165 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
26166 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
26167 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
26168 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
26169 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
26170 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
26171 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
26172 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
26173 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
26174 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
26175 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
26176 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
26177 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
26178 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
26179 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
26180 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
26181 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
26182 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
26183 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
26184 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
26185 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
26186 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
26187 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
26188 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
26189 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
26190 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
26191 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
26192 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
26193 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
26194 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
26195 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
26196 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
26197 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
26198 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
26199 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
26200 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
26201 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
26202 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
26203 END DO
26204 END DO
26205 END DO
26206 s_offset_d1 = s_offset_d1 + 7
26207 END DO
26208 s_offset_c1 = s_offset_c1 + 1
26209 END DO
26210 s_offset_b1 = s_offset_b1 + 9
26211 END DO
26212 s_offset_a1 = s_offset_a1 + 1
26213 END DO
26214 END SUBROUTINE contract_sgsf
26215#endif
26216#if __MAX_CONTR > 4 || __MAX_CONTR == 4
26217! **************************************************************************************************
26218!> \brief ...
26219!> \param work ...
26220!> \param nl_a ...
26221!> \param nl_b ...
26222!> \param nl_c ...
26223!> \param nl_d ...
26224!> \param sphi_a ...
26225!> \param sphi_b ...
26226!> \param sphi_c ...
26227!> \param sphi_d ...
26228!> \param primitives ...
26229!> \param buffer1 ...
26230!> \param buffer2 ...
26231! **************************************************************************************************
26232 SUBROUTINE contract_sgsg(work, &
26233 nl_a, nl_b, nl_c, nl_d, &
26234 sphi_a, sphi_b, sphi_c, sphi_d, &
26235 primitives, &
26236 buffer1, buffer2)
26237 REAL(dp), DIMENSION(1*15*1*15), INTENT(IN) :: work
26238 INTEGER :: nl_a, nl_b, nl_c, nl_d
26239 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
26240 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
26241 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
26242 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
26243 REAL(dp), &
26244 DIMENSION(1*nl_a, 9*nl_b, 1*nl_c, 9*nl_d) :: primitives
26245 REAL(dp), DIMENSION(1*15*1*15) :: buffer1, buffer2
26246
26247 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
26248 kmax, s_offset_a1, s_offset_b1, &
26249 s_offset_c1, s_offset_d1
26250
26251 s_offset_a1 = 0
26252 DO ia = 1, nl_a
26253 s_offset_b1 = 0
26254 DO ib = 1, nl_b
26255 s_offset_c1 = 0
26256 DO ic = 1, nl_c
26257 s_offset_d1 = 0
26258 DO id = 1, nl_d
26259 buffer1 = 0.0_dp
26260 imax = 15*1*15
26261 kmax = 1
26262 DO i = 1, imax
26263 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
26264 END DO
26265 buffer2 = 0.0_dp
26266 imax = 1*1*15
26267 kmax = 15
26268 DO i = 1, imax
26269 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
26270 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
26271 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
26272 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
26273 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
26274 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
26275 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
26276 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
26277 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
26278 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
26279 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
26280 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
26281 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
26282 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
26283 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
26284 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
26285 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
26286 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
26287 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
26288 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
26289 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
26290 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
26291 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
26292 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
26293 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
26294 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
26295 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
26296 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
26297 END DO
26298 buffer1 = 0.0_dp
26299 imax = 1*9*15
26300 kmax = 1
26301 DO i = 1, imax
26302 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
26303 END DO
26304 imax = 1*9*1
26305 kmax = 15
26306 i = 0
26307 DO i1 = 1, 1
26308 DO i2 = 1, 9
26309 DO i3 = 1, 1
26310 i = i + 1
26311 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
26312 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
26313 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
26314 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
26315 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
26316 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
26317 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
26318 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
26319 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
26320 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
26321 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
26322 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
26323 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
26324 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
26325 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
26326 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
26327 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
26328 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
26329 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
26330 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
26331 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
26332 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
26333 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
26334 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
26335 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
26336 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
26337 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
26338 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
26339 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
26340 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
26341 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
26342 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
26343 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
26344 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
26345 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
26346 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
26347 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
26348 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
26349 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
26350 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
26351 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
26352 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
26353 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
26354 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
26355 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
26356 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
26357 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
26358 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
26359 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
26360 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
26361 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
26362 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
26363 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
26364 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
26365 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
26366 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
26367 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
26368 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
26369 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
26370 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
26371 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
26372 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
26373 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
26374 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
26375 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
26376 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
26377 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
26378 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
26379 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
26380 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
26381 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
26382 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
26383 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
26384 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
26385 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
26386 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
26387 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
26388 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
26389 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
26390 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
26391 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
26392 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
26393 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
26394 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
26395 END DO
26396 END DO
26397 END DO
26398 s_offset_d1 = s_offset_d1 + 9
26399 END DO
26400 s_offset_c1 = s_offset_c1 + 1
26401 END DO
26402 s_offset_b1 = s_offset_b1 + 9
26403 END DO
26404 s_offset_a1 = s_offset_a1 + 1
26405 END DO
26406 END SUBROUTINE contract_sgsg
26407#endif
26408#if __MAX_CONTR > 4 || __MAX_CONTR == 4
26409! **************************************************************************************************
26410!> \brief ...
26411!> \param work ...
26412!> \param nl_a ...
26413!> \param nl_b ...
26414!> \param nl_c ...
26415!> \param nl_d ...
26416!> \param sphi_a ...
26417!> \param sphi_b ...
26418!> \param sphi_c ...
26419!> \param sphi_d ...
26420!> \param primitives ...
26421!> \param buffer1 ...
26422!> \param buffer2 ...
26423! **************************************************************************************************
26424 SUBROUTINE contract_sgps(work, &
26425 nl_a, nl_b, nl_c, nl_d, &
26426 sphi_a, sphi_b, sphi_c, sphi_d, &
26427 primitives, &
26428 buffer1, buffer2)
26429 REAL(dp), DIMENSION(1*15*3*1), INTENT(IN) :: work
26430 INTEGER :: nl_a, nl_b, nl_c, nl_d
26431 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
26432 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
26433 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
26434 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
26435 REAL(dp), &
26436 DIMENSION(1*nl_a, 9*nl_b, 3*nl_c, 1*nl_d) :: primitives
26437 REAL(dp), DIMENSION(1*15*3*1) :: buffer1, buffer2
26438
26439 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
26440 kmax, s_offset_a1, s_offset_b1, &
26441 s_offset_c1, s_offset_d1
26442
26443 s_offset_a1 = 0
26444 DO ia = 1, nl_a
26445 s_offset_b1 = 0
26446 DO ib = 1, nl_b
26447 s_offset_c1 = 0
26448 DO ic = 1, nl_c
26449 s_offset_d1 = 0
26450 DO id = 1, nl_d
26451 buffer1 = 0.0_dp
26452 imax = 15*3*1
26453 kmax = 1
26454 DO i = 1, imax
26455 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
26456 END DO
26457 buffer2 = 0.0_dp
26458 imax = 1*3*1
26459 kmax = 15
26460 DO i = 1, imax
26461 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
26462 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
26463 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
26464 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
26465 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
26466 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
26467 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
26468 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
26469 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
26470 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
26471 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
26472 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
26473 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
26474 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
26475 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
26476 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
26477 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
26478 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
26479 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
26480 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
26481 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
26482 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
26483 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
26484 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
26485 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
26486 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
26487 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
26488 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
26489 END DO
26490 buffer1 = 0.0_dp
26491 imax = 1*9*1
26492 kmax = 3
26493 DO i = 1, imax
26494 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
26495 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
26496 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
26497 END DO
26498 imax = 1*9*3
26499 kmax = 1
26500 i = 0
26501 DO i1 = 1, 3
26502 DO i2 = 1, 9
26503 DO i3 = 1, 1
26504 i = i + 1
26505 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
26506 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
26507 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
26508 END DO
26509 END DO
26510 END DO
26511 s_offset_d1 = s_offset_d1 + 1
26512 END DO
26513 s_offset_c1 = s_offset_c1 + 3
26514 END DO
26515 s_offset_b1 = s_offset_b1 + 9
26516 END DO
26517 s_offset_a1 = s_offset_a1 + 1
26518 END DO
26519 END SUBROUTINE contract_sgps
26520#endif
26521#if __MAX_CONTR > 4 || __MAX_CONTR == 4
26522! **************************************************************************************************
26523!> \brief ...
26524!> \param work ...
26525!> \param nl_a ...
26526!> \param nl_b ...
26527!> \param nl_c ...
26528!> \param nl_d ...
26529!> \param sphi_a ...
26530!> \param sphi_b ...
26531!> \param sphi_c ...
26532!> \param sphi_d ...
26533!> \param primitives ...
26534!> \param buffer1 ...
26535!> \param buffer2 ...
26536! **************************************************************************************************
26537 SUBROUTINE contract_sgpp(work, &
26538 nl_a, nl_b, nl_c, nl_d, &
26539 sphi_a, sphi_b, sphi_c, sphi_d, &
26540 primitives, &
26541 buffer1, buffer2)
26542 REAL(dp), DIMENSION(1*15*3*3), INTENT(IN) :: work
26543 INTEGER :: nl_a, nl_b, nl_c, nl_d
26544 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
26545 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
26546 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
26547 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
26548 REAL(dp), &
26549 DIMENSION(1*nl_a, 9*nl_b, 3*nl_c, 3*nl_d) :: primitives
26550 REAL(dp), DIMENSION(1*15*3*3) :: buffer1, buffer2
26551
26552 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
26553 kmax, s_offset_a1, s_offset_b1, &
26554 s_offset_c1, s_offset_d1
26555
26556 s_offset_a1 = 0
26557 DO ia = 1, nl_a
26558 s_offset_b1 = 0
26559 DO ib = 1, nl_b
26560 s_offset_c1 = 0
26561 DO ic = 1, nl_c
26562 s_offset_d1 = 0
26563 DO id = 1, nl_d
26564 buffer1 = 0.0_dp
26565 imax = 15*3*3
26566 kmax = 1
26567 DO i = 1, imax
26568 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
26569 END DO
26570 buffer2 = 0.0_dp
26571 imax = 1*3*3
26572 kmax = 15
26573 DO i = 1, imax
26574 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
26575 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
26576 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
26577 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
26578 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
26579 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
26580 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
26581 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
26582 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
26583 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
26584 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
26585 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
26586 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
26587 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
26588 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
26589 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
26590 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
26591 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
26592 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
26593 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
26594 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
26595 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
26596 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
26597 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
26598 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
26599 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
26600 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
26601 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
26602 END DO
26603 buffer1 = 0.0_dp
26604 imax = 1*9*3
26605 kmax = 3
26606 DO i = 1, imax
26607 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
26608 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
26609 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
26610 END DO
26611 imax = 1*9*3
26612 kmax = 3
26613 i = 0
26614 DO i1 = 1, 3
26615 DO i2 = 1, 9
26616 DO i3 = 1, 1
26617 i = i + 1
26618 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
26619 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
26620 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
26621 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
26622 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
26623 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
26624 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
26625 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
26626 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
26627 END DO
26628 END DO
26629 END DO
26630 s_offset_d1 = s_offset_d1 + 3
26631 END DO
26632 s_offset_c1 = s_offset_c1 + 3
26633 END DO
26634 s_offset_b1 = s_offset_b1 + 9
26635 END DO
26636 s_offset_a1 = s_offset_a1 + 1
26637 END DO
26638 END SUBROUTINE contract_sgpp
26639#endif
26640#if __MAX_CONTR > 4 || __MAX_CONTR == 4
26641! **************************************************************************************************
26642!> \brief ...
26643!> \param work ...
26644!> \param nl_a ...
26645!> \param nl_b ...
26646!> \param nl_c ...
26647!> \param nl_d ...
26648!> \param sphi_a ...
26649!> \param sphi_b ...
26650!> \param sphi_c ...
26651!> \param sphi_d ...
26652!> \param primitives ...
26653!> \param buffer1 ...
26654!> \param buffer2 ...
26655! **************************************************************************************************
26656 SUBROUTINE contract_sgpd(work, &
26657 nl_a, nl_b, nl_c, nl_d, &
26658 sphi_a, sphi_b, sphi_c, sphi_d, &
26659 primitives, &
26660 buffer1, buffer2)
26661 REAL(dp), DIMENSION(1*15*3*6), INTENT(IN) :: work
26662 INTEGER :: nl_a, nl_b, nl_c, nl_d
26663 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
26664 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
26665 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
26666 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
26667 REAL(dp), &
26668 DIMENSION(1*nl_a, 9*nl_b, 3*nl_c, 5*nl_d) :: primitives
26669 REAL(dp), DIMENSION(1*15*3*6) :: buffer1, buffer2
26670
26671 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
26672 kmax, s_offset_a1, s_offset_b1, &
26673 s_offset_c1, s_offset_d1
26674
26675 s_offset_a1 = 0
26676 DO ia = 1, nl_a
26677 s_offset_b1 = 0
26678 DO ib = 1, nl_b
26679 s_offset_c1 = 0
26680 DO ic = 1, nl_c
26681 s_offset_d1 = 0
26682 DO id = 1, nl_d
26683 buffer1 = 0.0_dp
26684 imax = 15*3*6
26685 kmax = 1
26686 DO i = 1, imax
26687 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
26688 END DO
26689 buffer2 = 0.0_dp
26690 imax = 1*3*6
26691 kmax = 15
26692 DO i = 1, imax
26693 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
26694 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
26695 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
26696 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
26697 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
26698 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
26699 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
26700 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
26701 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
26702 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
26703 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
26704 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
26705 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
26706 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
26707 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
26708 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
26709 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
26710 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
26711 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
26712 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
26713 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
26714 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
26715 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
26716 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
26717 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
26718 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
26719 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
26720 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
26721 END DO
26722 buffer1 = 0.0_dp
26723 imax = 1*9*6
26724 kmax = 3
26725 DO i = 1, imax
26726 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
26727 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
26728 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
26729 END DO
26730 imax = 1*9*3
26731 kmax = 6
26732 i = 0
26733 DO i1 = 1, 3
26734 DO i2 = 1, 9
26735 DO i3 = 1, 1
26736 i = i + 1
26737 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
26738 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
26739 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
26740 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
26741 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
26742 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
26743 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
26744 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
26745 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
26746 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
26747 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
26748 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
26749 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
26750 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
26751 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
26752 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
26753 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
26754 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
26755 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
26756 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
26757 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
26758 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
26759 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
26760 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
26761 END DO
26762 END DO
26763 END DO
26764 s_offset_d1 = s_offset_d1 + 5
26765 END DO
26766 s_offset_c1 = s_offset_c1 + 3
26767 END DO
26768 s_offset_b1 = s_offset_b1 + 9
26769 END DO
26770 s_offset_a1 = s_offset_a1 + 1
26771 END DO
26772 END SUBROUTINE contract_sgpd
26773#endif
26774#if __MAX_CONTR > 4 || __MAX_CONTR == 4
26775! **************************************************************************************************
26776!> \brief ...
26777!> \param work ...
26778!> \param nl_a ...
26779!> \param nl_b ...
26780!> \param nl_c ...
26781!> \param nl_d ...
26782!> \param sphi_a ...
26783!> \param sphi_b ...
26784!> \param sphi_c ...
26785!> \param sphi_d ...
26786!> \param primitives ...
26787!> \param buffer1 ...
26788!> \param buffer2 ...
26789! **************************************************************************************************
26790 SUBROUTINE contract_sgpf(work, &
26791 nl_a, nl_b, nl_c, nl_d, &
26792 sphi_a, sphi_b, sphi_c, sphi_d, &
26793 primitives, &
26794 buffer1, buffer2)
26795 REAL(dp), DIMENSION(1*15*3*10), INTENT(IN) :: work
26796 INTEGER :: nl_a, nl_b, nl_c, nl_d
26797 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
26798 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
26799 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
26800 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
26801 REAL(dp), &
26802 DIMENSION(1*nl_a, 9*nl_b, 3*nl_c, 7*nl_d) :: primitives
26803 REAL(dp), DIMENSION(1*15*3*10) :: buffer1, buffer2
26804
26805 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
26806 kmax, s_offset_a1, s_offset_b1, &
26807 s_offset_c1, s_offset_d1
26808
26809 s_offset_a1 = 0
26810 DO ia = 1, nl_a
26811 s_offset_b1 = 0
26812 DO ib = 1, nl_b
26813 s_offset_c1 = 0
26814 DO ic = 1, nl_c
26815 s_offset_d1 = 0
26816 DO id = 1, nl_d
26817 buffer1 = 0.0_dp
26818 imax = 15*3*10
26819 kmax = 1
26820 DO i = 1, imax
26821 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
26822 END DO
26823 buffer2 = 0.0_dp
26824 imax = 1*3*10
26825 kmax = 15
26826 DO i = 1, imax
26827 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
26828 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
26829 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
26830 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
26831 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
26832 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
26833 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
26834 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
26835 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
26836 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
26837 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
26838 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
26839 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
26840 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
26841 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
26842 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
26843 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
26844 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
26845 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
26846 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
26847 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
26848 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
26849 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
26850 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
26851 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
26852 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
26853 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
26854 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
26855 END DO
26856 buffer1 = 0.0_dp
26857 imax = 1*9*10
26858 kmax = 3
26859 DO i = 1, imax
26860 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
26861 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
26862 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
26863 END DO
26864 imax = 1*9*3
26865 kmax = 10
26866 i = 0
26867 DO i1 = 1, 3
26868 DO i2 = 1, 9
26869 DO i3 = 1, 1
26870 i = i + 1
26871 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
26872 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
26873 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
26874 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
26875 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
26876 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
26877 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
26878 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
26879 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
26880 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
26881 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
26882 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
26883 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
26884 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
26885 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
26886 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
26887 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
26888 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
26889 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
26890 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
26891 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
26892 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
26893 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
26894 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
26895 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
26896 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
26897 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
26898 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
26899 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
26900 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
26901 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
26902 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
26903 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
26904 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
26905 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
26906 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
26907 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
26908 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
26909 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
26910 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
26911 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
26912 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
26913 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
26914 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
26915 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
26916 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
26917 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
26918 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
26919 END DO
26920 END DO
26921 END DO
26922 s_offset_d1 = s_offset_d1 + 7
26923 END DO
26924 s_offset_c1 = s_offset_c1 + 3
26925 END DO
26926 s_offset_b1 = s_offset_b1 + 9
26927 END DO
26928 s_offset_a1 = s_offset_a1 + 1
26929 END DO
26930 END SUBROUTINE contract_sgpf
26931#endif
26932#if __MAX_CONTR > 4 || __MAX_CONTR == 4
26933! **************************************************************************************************
26934!> \brief ...
26935!> \param work ...
26936!> \param nl_a ...
26937!> \param nl_b ...
26938!> \param nl_c ...
26939!> \param nl_d ...
26940!> \param sphi_a ...
26941!> \param sphi_b ...
26942!> \param sphi_c ...
26943!> \param sphi_d ...
26944!> \param primitives ...
26945!> \param buffer1 ...
26946!> \param buffer2 ...
26947! **************************************************************************************************
26948 SUBROUTINE contract_sgpg(work, &
26949 nl_a, nl_b, nl_c, nl_d, &
26950 sphi_a, sphi_b, sphi_c, sphi_d, &
26951 primitives, &
26952 buffer1, buffer2)
26953 REAL(dp), DIMENSION(1*15*3*15), INTENT(IN) :: work
26954 INTEGER :: nl_a, nl_b, nl_c, nl_d
26955 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
26956 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
26957 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
26958 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
26959 REAL(dp), &
26960 DIMENSION(1*nl_a, 9*nl_b, 3*nl_c, 9*nl_d) :: primitives
26961 REAL(dp), DIMENSION(1*15*3*15) :: buffer1, buffer2
26962
26963 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
26964 kmax, s_offset_a1, s_offset_b1, &
26965 s_offset_c1, s_offset_d1
26966
26967 s_offset_a1 = 0
26968 DO ia = 1, nl_a
26969 s_offset_b1 = 0
26970 DO ib = 1, nl_b
26971 s_offset_c1 = 0
26972 DO ic = 1, nl_c
26973 s_offset_d1 = 0
26974 DO id = 1, nl_d
26975 buffer1 = 0.0_dp
26976 imax = 15*3*15
26977 kmax = 1
26978 DO i = 1, imax
26979 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
26980 END DO
26981 buffer2 = 0.0_dp
26982 imax = 1*3*15
26983 kmax = 15
26984 DO i = 1, imax
26985 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
26986 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
26987 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
26988 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
26989 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
26990 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
26991 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
26992 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
26993 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
26994 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
26995 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
26996 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
26997 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
26998 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
26999 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
27000 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
27001 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
27002 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
27003 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
27004 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
27005 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
27006 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
27007 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
27008 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
27009 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
27010 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
27011 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
27012 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
27013 END DO
27014 buffer1 = 0.0_dp
27015 imax = 1*9*15
27016 kmax = 3
27017 DO i = 1, imax
27018 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
27019 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
27020 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
27021 END DO
27022 imax = 1*9*3
27023 kmax = 15
27024 i = 0
27025 DO i1 = 1, 3
27026 DO i2 = 1, 9
27027 DO i3 = 1, 1
27028 i = i + 1
27029 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
27030 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
27031 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
27032 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
27033 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
27034 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
27035 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
27036 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
27037 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
27038 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
27039 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
27040 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
27041 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
27042 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
27043 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
27044 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
27045 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
27046 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
27047 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
27048 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
27049 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
27050 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
27051 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
27052 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
27053 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
27054 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
27055 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
27056 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
27057 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
27058 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
27059 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
27060 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
27061 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
27062 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
27063 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
27064 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
27065 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
27066 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
27067 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
27068 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
27069 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
27070 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
27071 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
27072 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
27073 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
27074 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
27075 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
27076 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
27077 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
27078 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
27079 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
27080 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
27081 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
27082 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
27083 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
27084 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
27085 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
27086 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
27087 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
27088 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
27089 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
27090 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
27091 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
27092 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
27093 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
27094 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
27095 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
27096 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
27097 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
27098 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
27099 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
27100 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
27101 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
27102 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
27103 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
27104 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
27105 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
27106 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
27107 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
27108 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
27109 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
27110 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
27111 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
27112 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
27113 END DO
27114 END DO
27115 END DO
27116 s_offset_d1 = s_offset_d1 + 9
27117 END DO
27118 s_offset_c1 = s_offset_c1 + 3
27119 END DO
27120 s_offset_b1 = s_offset_b1 + 9
27121 END DO
27122 s_offset_a1 = s_offset_a1 + 1
27123 END DO
27124 END SUBROUTINE contract_sgpg
27125#endif
27126#if __MAX_CONTR > 4 || __MAX_CONTR == 4
27127! **************************************************************************************************
27128!> \brief ...
27129!> \param work ...
27130!> \param nl_a ...
27131!> \param nl_b ...
27132!> \param nl_c ...
27133!> \param nl_d ...
27134!> \param sphi_a ...
27135!> \param sphi_b ...
27136!> \param sphi_c ...
27137!> \param sphi_d ...
27138!> \param primitives ...
27139!> \param buffer1 ...
27140!> \param buffer2 ...
27141! **************************************************************************************************
27142 SUBROUTINE contract_sgds(work, &
27143 nl_a, nl_b, nl_c, nl_d, &
27144 sphi_a, sphi_b, sphi_c, sphi_d, &
27145 primitives, &
27146 buffer1, buffer2)
27147 REAL(dp), DIMENSION(1*15*6*1), INTENT(IN) :: work
27148 INTEGER :: nl_a, nl_b, nl_c, nl_d
27149 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
27150 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
27151 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
27152 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
27153 REAL(dp), &
27154 DIMENSION(1*nl_a, 9*nl_b, 5*nl_c, 1*nl_d) :: primitives
27155 REAL(dp), DIMENSION(1*15*6*1) :: buffer1, buffer2
27156
27157 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
27158 kmax, s_offset_a1, s_offset_b1, &
27159 s_offset_c1, s_offset_d1
27160
27161 s_offset_a1 = 0
27162 DO ia = 1, nl_a
27163 s_offset_b1 = 0
27164 DO ib = 1, nl_b
27165 s_offset_c1 = 0
27166 DO ic = 1, nl_c
27167 s_offset_d1 = 0
27168 DO id = 1, nl_d
27169 buffer1 = 0.0_dp
27170 imax = 15*6*1
27171 kmax = 1
27172 DO i = 1, imax
27173 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
27174 END DO
27175 buffer2 = 0.0_dp
27176 imax = 1*6*1
27177 kmax = 15
27178 DO i = 1, imax
27179 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
27180 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
27181 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
27182 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
27183 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
27184 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
27185 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
27186 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
27187 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
27188 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
27189 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
27190 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
27191 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
27192 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
27193 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
27194 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
27195 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
27196 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
27197 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
27198 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
27199 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
27200 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
27201 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
27202 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
27203 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
27204 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
27205 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
27206 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
27207 END DO
27208 buffer1 = 0.0_dp
27209 imax = 1*9*1
27210 kmax = 6
27211 DO i = 1, imax
27212 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
27213 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
27214 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
27215 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
27216 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
27217 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
27218 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
27219 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
27220 END DO
27221 imax = 1*9*5
27222 kmax = 1
27223 i = 0
27224 DO i1 = 1, 5
27225 DO i2 = 1, 9
27226 DO i3 = 1, 1
27227 i = i + 1
27228 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
27229 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
27230 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
27231 END DO
27232 END DO
27233 END DO
27234 s_offset_d1 = s_offset_d1 + 1
27235 END DO
27236 s_offset_c1 = s_offset_c1 + 5
27237 END DO
27238 s_offset_b1 = s_offset_b1 + 9
27239 END DO
27240 s_offset_a1 = s_offset_a1 + 1
27241 END DO
27242 END SUBROUTINE contract_sgds
27243#endif
27244#if __MAX_CONTR > 4 || __MAX_CONTR == 4
27245! **************************************************************************************************
27246!> \brief ...
27247!> \param work ...
27248!> \param nl_a ...
27249!> \param nl_b ...
27250!> \param nl_c ...
27251!> \param nl_d ...
27252!> \param sphi_a ...
27253!> \param sphi_b ...
27254!> \param sphi_c ...
27255!> \param sphi_d ...
27256!> \param primitives ...
27257!> \param buffer1 ...
27258!> \param buffer2 ...
27259! **************************************************************************************************
27260 SUBROUTINE contract_sgdp(work, &
27261 nl_a, nl_b, nl_c, nl_d, &
27262 sphi_a, sphi_b, sphi_c, sphi_d, &
27263 primitives, &
27264 buffer1, buffer2)
27265 REAL(dp), DIMENSION(1*15*6*3), INTENT(IN) :: work
27266 INTEGER :: nl_a, nl_b, nl_c, nl_d
27267 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
27268 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
27269 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
27270 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
27271 REAL(dp), &
27272 DIMENSION(1*nl_a, 9*nl_b, 5*nl_c, 3*nl_d) :: primitives
27273 REAL(dp), DIMENSION(1*15*6*3) :: buffer1, buffer2
27274
27275 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
27276 kmax, s_offset_a1, s_offset_b1, &
27277 s_offset_c1, s_offset_d1
27278
27279 s_offset_a1 = 0
27280 DO ia = 1, nl_a
27281 s_offset_b1 = 0
27282 DO ib = 1, nl_b
27283 s_offset_c1 = 0
27284 DO ic = 1, nl_c
27285 s_offset_d1 = 0
27286 DO id = 1, nl_d
27287 buffer1 = 0.0_dp
27288 imax = 15*6*3
27289 kmax = 1
27290 DO i = 1, imax
27291 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
27292 END DO
27293 buffer2 = 0.0_dp
27294 imax = 1*6*3
27295 kmax = 15
27296 DO i = 1, imax
27297 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
27298 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
27299 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
27300 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
27301 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
27302 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
27303 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
27304 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
27305 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
27306 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
27307 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
27308 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
27309 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
27310 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
27311 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
27312 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
27313 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
27314 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
27315 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
27316 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
27317 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
27318 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
27319 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
27320 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
27321 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
27322 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
27323 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
27324 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
27325 END DO
27326 buffer1 = 0.0_dp
27327 imax = 1*9*3
27328 kmax = 6
27329 DO i = 1, imax
27330 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
27331 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
27332 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
27333 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
27334 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
27335 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
27336 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
27337 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
27338 END DO
27339 imax = 1*9*5
27340 kmax = 3
27341 i = 0
27342 DO i1 = 1, 5
27343 DO i2 = 1, 9
27344 DO i3 = 1, 1
27345 i = i + 1
27346 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
27347 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
27348 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
27349 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
27350 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
27351 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
27352 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
27353 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
27354 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
27355 END DO
27356 END DO
27357 END DO
27358 s_offset_d1 = s_offset_d1 + 3
27359 END DO
27360 s_offset_c1 = s_offset_c1 + 5
27361 END DO
27362 s_offset_b1 = s_offset_b1 + 9
27363 END DO
27364 s_offset_a1 = s_offset_a1 + 1
27365 END DO
27366 END SUBROUTINE contract_sgdp
27367#endif
27368#if __MAX_CONTR > 4 || __MAX_CONTR == 4
27369! **************************************************************************************************
27370!> \brief ...
27371!> \param work ...
27372!> \param nl_a ...
27373!> \param nl_b ...
27374!> \param nl_c ...
27375!> \param nl_d ...
27376!> \param sphi_a ...
27377!> \param sphi_b ...
27378!> \param sphi_c ...
27379!> \param sphi_d ...
27380!> \param primitives ...
27381!> \param buffer1 ...
27382!> \param buffer2 ...
27383! **************************************************************************************************
27384 SUBROUTINE contract_sgdd(work, &
27385 nl_a, nl_b, nl_c, nl_d, &
27386 sphi_a, sphi_b, sphi_c, sphi_d, &
27387 primitives, &
27388 buffer1, buffer2)
27389 REAL(dp), DIMENSION(1*15*6*6), INTENT(IN) :: work
27390 INTEGER :: nl_a, nl_b, nl_c, nl_d
27391 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
27392 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
27393 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
27394 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
27395 REAL(dp), &
27396 DIMENSION(1*nl_a, 9*nl_b, 5*nl_c, 5*nl_d) :: primitives
27397 REAL(dp), DIMENSION(1*15*6*6) :: buffer1, buffer2
27398
27399 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
27400 kmax, s_offset_a1, s_offset_b1, &
27401 s_offset_c1, s_offset_d1
27402
27403 s_offset_a1 = 0
27404 DO ia = 1, nl_a
27405 s_offset_b1 = 0
27406 DO ib = 1, nl_b
27407 s_offset_c1 = 0
27408 DO ic = 1, nl_c
27409 s_offset_d1 = 0
27410 DO id = 1, nl_d
27411 buffer1 = 0.0_dp
27412 imax = 15*6*6
27413 kmax = 1
27414 DO i = 1, imax
27415 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
27416 END DO
27417 buffer2 = 0.0_dp
27418 imax = 1*6*6
27419 kmax = 15
27420 DO i = 1, imax
27421 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
27422 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
27423 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
27424 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
27425 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
27426 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
27427 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
27428 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
27429 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
27430 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
27431 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
27432 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
27433 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
27434 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
27435 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
27436 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
27437 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
27438 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
27439 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
27440 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
27441 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
27442 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
27443 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
27444 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
27445 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
27446 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
27447 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
27448 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
27449 END DO
27450 buffer1 = 0.0_dp
27451 imax = 1*9*6
27452 kmax = 6
27453 DO i = 1, imax
27454 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
27455 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
27456 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
27457 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
27458 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
27459 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
27460 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
27461 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
27462 END DO
27463 imax = 1*9*5
27464 kmax = 6
27465 i = 0
27466 DO i1 = 1, 5
27467 DO i2 = 1, 9
27468 DO i3 = 1, 1
27469 i = i + 1
27470 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
27471 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
27472 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
27473 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
27474 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
27475 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
27476 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
27477 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
27478 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
27479 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
27480 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
27481 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
27482 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
27483 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
27484 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
27485 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
27486 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
27487 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
27488 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
27489 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
27490 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
27491 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
27492 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
27493 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
27494 END DO
27495 END DO
27496 END DO
27497 s_offset_d1 = s_offset_d1 + 5
27498 END DO
27499 s_offset_c1 = s_offset_c1 + 5
27500 END DO
27501 s_offset_b1 = s_offset_b1 + 9
27502 END DO
27503 s_offset_a1 = s_offset_a1 + 1
27504 END DO
27505 END SUBROUTINE contract_sgdd
27506#endif
27507#if __MAX_CONTR > 4 || __MAX_CONTR == 4
27508! **************************************************************************************************
27509!> \brief ...
27510!> \param work ...
27511!> \param nl_a ...
27512!> \param nl_b ...
27513!> \param nl_c ...
27514!> \param nl_d ...
27515!> \param sphi_a ...
27516!> \param sphi_b ...
27517!> \param sphi_c ...
27518!> \param sphi_d ...
27519!> \param primitives ...
27520!> \param buffer1 ...
27521!> \param buffer2 ...
27522! **************************************************************************************************
27523 SUBROUTINE contract_sgdf(work, &
27524 nl_a, nl_b, nl_c, nl_d, &
27525 sphi_a, sphi_b, sphi_c, sphi_d, &
27526 primitives, &
27527 buffer1, buffer2)
27528 REAL(dp), DIMENSION(1*15*6*10), INTENT(IN) :: work
27529 INTEGER :: nl_a, nl_b, nl_c, nl_d
27530 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
27531 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
27532 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
27533 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
27534 REAL(dp), &
27535 DIMENSION(1*nl_a, 9*nl_b, 5*nl_c, 7*nl_d) :: primitives
27536 REAL(dp), DIMENSION(1*15*6*10) :: buffer1, buffer2
27537
27538 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
27539 kmax, s_offset_a1, s_offset_b1, &
27540 s_offset_c1, s_offset_d1
27541
27542 s_offset_a1 = 0
27543 DO ia = 1, nl_a
27544 s_offset_b1 = 0
27545 DO ib = 1, nl_b
27546 s_offset_c1 = 0
27547 DO ic = 1, nl_c
27548 s_offset_d1 = 0
27549 DO id = 1, nl_d
27550 buffer1 = 0.0_dp
27551 imax = 15*6*10
27552 kmax = 1
27553 DO i = 1, imax
27554 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
27555 END DO
27556 buffer2 = 0.0_dp
27557 imax = 1*6*10
27558 kmax = 15
27559 DO i = 1, imax
27560 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
27561 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
27562 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
27563 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
27564 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
27565 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
27566 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
27567 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
27568 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
27569 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
27570 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
27571 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
27572 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
27573 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
27574 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
27575 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
27576 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
27577 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
27578 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
27579 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
27580 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
27581 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
27582 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
27583 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
27584 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
27585 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
27586 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
27587 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
27588 END DO
27589 buffer1 = 0.0_dp
27590 imax = 1*9*10
27591 kmax = 6
27592 DO i = 1, imax
27593 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
27594 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
27595 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
27596 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
27597 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
27598 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
27599 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
27600 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
27601 END DO
27602 imax = 1*9*5
27603 kmax = 10
27604 i = 0
27605 DO i1 = 1, 5
27606 DO i2 = 1, 9
27607 DO i3 = 1, 1
27608 i = i + 1
27609 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
27610 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
27611 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
27612 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
27613 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
27614 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
27615 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
27616 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
27617 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
27618 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
27619 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
27620 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
27621 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
27622 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
27623 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
27624 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
27625 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
27626 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
27627 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
27628 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
27629 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
27630 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
27631 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
27632 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
27633 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
27634 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
27635 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
27636 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
27637 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
27638 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
27639 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
27640 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
27641 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
27642 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
27643 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
27644 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
27645 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
27646 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
27647 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
27648 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
27649 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
27650 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
27651 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
27652 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
27653 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
27654 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
27655 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
27656 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
27657 END DO
27658 END DO
27659 END DO
27660 s_offset_d1 = s_offset_d1 + 7
27661 END DO
27662 s_offset_c1 = s_offset_c1 + 5
27663 END DO
27664 s_offset_b1 = s_offset_b1 + 9
27665 END DO
27666 s_offset_a1 = s_offset_a1 + 1
27667 END DO
27668 END SUBROUTINE contract_sgdf
27669#endif
27670#if __MAX_CONTR > 4 || __MAX_CONTR == 4
27671! **************************************************************************************************
27672!> \brief ...
27673!> \param work ...
27674!> \param nl_a ...
27675!> \param nl_b ...
27676!> \param nl_c ...
27677!> \param nl_d ...
27678!> \param sphi_a ...
27679!> \param sphi_b ...
27680!> \param sphi_c ...
27681!> \param sphi_d ...
27682!> \param primitives ...
27683!> \param buffer1 ...
27684!> \param buffer2 ...
27685! **************************************************************************************************
27686 SUBROUTINE contract_sgdg(work, &
27687 nl_a, nl_b, nl_c, nl_d, &
27688 sphi_a, sphi_b, sphi_c, sphi_d, &
27689 primitives, &
27690 buffer1, buffer2)
27691 REAL(dp), DIMENSION(1*15*6*15), INTENT(IN) :: work
27692 INTEGER :: nl_a, nl_b, nl_c, nl_d
27693 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
27694 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
27695 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
27696 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
27697 REAL(dp), &
27698 DIMENSION(1*nl_a, 9*nl_b, 5*nl_c, 9*nl_d) :: primitives
27699 REAL(dp), DIMENSION(1*15*6*15) :: buffer1, buffer2
27700
27701 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
27702 kmax, s_offset_a1, s_offset_b1, &
27703 s_offset_c1, s_offset_d1
27704
27705 s_offset_a1 = 0
27706 DO ia = 1, nl_a
27707 s_offset_b1 = 0
27708 DO ib = 1, nl_b
27709 s_offset_c1 = 0
27710 DO ic = 1, nl_c
27711 s_offset_d1 = 0
27712 DO id = 1, nl_d
27713 buffer1 = 0.0_dp
27714 imax = 15*6*15
27715 kmax = 1
27716 DO i = 1, imax
27717 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
27718 END DO
27719 buffer2 = 0.0_dp
27720 imax = 1*6*15
27721 kmax = 15
27722 DO i = 1, imax
27723 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
27724 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
27725 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
27726 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
27727 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
27728 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
27729 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
27730 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
27731 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
27732 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
27733 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
27734 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
27735 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
27736 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
27737 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
27738 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
27739 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
27740 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
27741 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
27742 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
27743 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
27744 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
27745 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
27746 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
27747 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
27748 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
27749 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
27750 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
27751 END DO
27752 buffer1 = 0.0_dp
27753 imax = 1*9*15
27754 kmax = 6
27755 DO i = 1, imax
27756 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
27757 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
27758 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
27759 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
27760 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
27761 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
27762 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
27763 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
27764 END DO
27765 imax = 1*9*5
27766 kmax = 15
27767 i = 0
27768 DO i1 = 1, 5
27769 DO i2 = 1, 9
27770 DO i3 = 1, 1
27771 i = i + 1
27772 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
27773 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
27774 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
27775 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
27776 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
27777 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
27778 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
27779 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
27780 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
27781 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
27782 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
27783 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
27784 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
27785 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
27786 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
27787 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
27788 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
27789 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
27790 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
27791 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
27792 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
27793 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
27794 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
27795 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
27796 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
27797 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
27798 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
27799 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
27800 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
27801 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
27802 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
27803 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
27804 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
27805 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
27806 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
27807 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
27808 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
27809 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
27810 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
27811 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
27812 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
27813 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
27814 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
27815 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
27816 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
27817 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
27818 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
27819 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
27820 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
27821 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
27822 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
27823 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
27824 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
27825 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
27826 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
27827 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
27828 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
27829 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
27830 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
27831 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
27832 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
27833 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
27834 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
27835 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
27836 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
27837 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
27838 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
27839 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
27840 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
27841 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
27842 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
27843 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
27844 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
27845 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
27846 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
27847 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
27848 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
27849 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
27850 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
27851 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
27852 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
27853 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
27854 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
27855 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
27856 END DO
27857 END DO
27858 END DO
27859 s_offset_d1 = s_offset_d1 + 9
27860 END DO
27861 s_offset_c1 = s_offset_c1 + 5
27862 END DO
27863 s_offset_b1 = s_offset_b1 + 9
27864 END DO
27865 s_offset_a1 = s_offset_a1 + 1
27866 END DO
27867 END SUBROUTINE contract_sgdg
27868#endif
27869#if __MAX_CONTR > 4 || __MAX_CONTR == 4
27870! **************************************************************************************************
27871!> \brief ...
27872!> \param work ...
27873!> \param nl_a ...
27874!> \param nl_b ...
27875!> \param nl_c ...
27876!> \param nl_d ...
27877!> \param sphi_a ...
27878!> \param sphi_b ...
27879!> \param sphi_c ...
27880!> \param sphi_d ...
27881!> \param primitives ...
27882!> \param buffer1 ...
27883!> \param buffer2 ...
27884! **************************************************************************************************
27885 SUBROUTINE contract_sgfs(work, &
27886 nl_a, nl_b, nl_c, nl_d, &
27887 sphi_a, sphi_b, sphi_c, sphi_d, &
27888 primitives, &
27889 buffer1, buffer2)
27890 REAL(dp), DIMENSION(1*15*10*1), INTENT(IN) :: work
27891 INTEGER :: nl_a, nl_b, nl_c, nl_d
27892 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
27893 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
27894 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
27895 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
27896 REAL(dp), &
27897 DIMENSION(1*nl_a, 9*nl_b, 7*nl_c, 1*nl_d) :: primitives
27898 REAL(dp), DIMENSION(1*15*10*1) :: buffer1, buffer2
27899
27900 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
27901 kmax, s_offset_a1, s_offset_b1, &
27902 s_offset_c1, s_offset_d1
27903
27904 s_offset_a1 = 0
27905 DO ia = 1, nl_a
27906 s_offset_b1 = 0
27907 DO ib = 1, nl_b
27908 s_offset_c1 = 0
27909 DO ic = 1, nl_c
27910 s_offset_d1 = 0
27911 DO id = 1, nl_d
27912 buffer1 = 0.0_dp
27913 imax = 15*10*1
27914 kmax = 1
27915 DO i = 1, imax
27916 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
27917 END DO
27918 buffer2 = 0.0_dp
27919 imax = 1*10*1
27920 kmax = 15
27921 DO i = 1, imax
27922 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
27923 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
27924 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
27925 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
27926 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
27927 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
27928 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
27929 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
27930 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
27931 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
27932 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
27933 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
27934 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
27935 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
27936 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
27937 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
27938 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
27939 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
27940 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
27941 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
27942 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
27943 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
27944 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
27945 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
27946 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
27947 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
27948 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
27949 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
27950 END DO
27951 buffer1 = 0.0_dp
27952 imax = 1*9*1
27953 kmax = 10
27954 DO i = 1, imax
27955 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
27956 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
27957 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
27958 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
27959 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
27960 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
27961 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
27962 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
27963 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
27964 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
27965 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
27966 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
27967 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
27968 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
27969 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
27970 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
27971 END DO
27972 imax = 1*9*7
27973 kmax = 1
27974 i = 0
27975 DO i1 = 1, 7
27976 DO i2 = 1, 9
27977 DO i3 = 1, 1
27978 i = i + 1
27979 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
27980 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
27981 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
27982 END DO
27983 END DO
27984 END DO
27985 s_offset_d1 = s_offset_d1 + 1
27986 END DO
27987 s_offset_c1 = s_offset_c1 + 7
27988 END DO
27989 s_offset_b1 = s_offset_b1 + 9
27990 END DO
27991 s_offset_a1 = s_offset_a1 + 1
27992 END DO
27993 END SUBROUTINE contract_sgfs
27994#endif
27995#if __MAX_CONTR > 4 || __MAX_CONTR == 4
27996! **************************************************************************************************
27997!> \brief ...
27998!> \param work ...
27999!> \param nl_a ...
28000!> \param nl_b ...
28001!> \param nl_c ...
28002!> \param nl_d ...
28003!> \param sphi_a ...
28004!> \param sphi_b ...
28005!> \param sphi_c ...
28006!> \param sphi_d ...
28007!> \param primitives ...
28008!> \param buffer1 ...
28009!> \param buffer2 ...
28010! **************************************************************************************************
28011 SUBROUTINE contract_sgfp(work, &
28012 nl_a, nl_b, nl_c, nl_d, &
28013 sphi_a, sphi_b, sphi_c, sphi_d, &
28014 primitives, &
28015 buffer1, buffer2)
28016 REAL(dp), DIMENSION(1*15*10*3), INTENT(IN) :: work
28017 INTEGER :: nl_a, nl_b, nl_c, nl_d
28018 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
28019 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
28020 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
28021 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
28022 REAL(dp), &
28023 DIMENSION(1*nl_a, 9*nl_b, 7*nl_c, 3*nl_d) :: primitives
28024 REAL(dp), DIMENSION(1*15*10*3) :: buffer1, buffer2
28025
28026 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
28027 kmax, s_offset_a1, s_offset_b1, &
28028 s_offset_c1, s_offset_d1
28029
28030 s_offset_a1 = 0
28031 DO ia = 1, nl_a
28032 s_offset_b1 = 0
28033 DO ib = 1, nl_b
28034 s_offset_c1 = 0
28035 DO ic = 1, nl_c
28036 s_offset_d1 = 0
28037 DO id = 1, nl_d
28038 buffer1 = 0.0_dp
28039 imax = 15*10*3
28040 kmax = 1
28041 DO i = 1, imax
28042 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
28043 END DO
28044 buffer2 = 0.0_dp
28045 imax = 1*10*3
28046 kmax = 15
28047 DO i = 1, imax
28048 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
28049 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
28050 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
28051 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
28052 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
28053 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
28054 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
28055 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
28056 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
28057 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
28058 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
28059 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
28060 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
28061 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
28062 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
28063 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
28064 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
28065 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
28066 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
28067 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
28068 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
28069 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
28070 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
28071 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
28072 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
28073 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
28074 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
28075 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
28076 END DO
28077 buffer1 = 0.0_dp
28078 imax = 1*9*3
28079 kmax = 10
28080 DO i = 1, imax
28081 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
28082 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
28083 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
28084 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
28085 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
28086 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
28087 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
28088 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
28089 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
28090 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
28091 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
28092 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
28093 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
28094 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
28095 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
28096 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
28097 END DO
28098 imax = 1*9*7
28099 kmax = 3
28100 i = 0
28101 DO i1 = 1, 7
28102 DO i2 = 1, 9
28103 DO i3 = 1, 1
28104 i = i + 1
28105 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
28106 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
28107 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
28108 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
28109 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
28110 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
28111 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
28112 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
28113 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
28114 END DO
28115 END DO
28116 END DO
28117 s_offset_d1 = s_offset_d1 + 3
28118 END DO
28119 s_offset_c1 = s_offset_c1 + 7
28120 END DO
28121 s_offset_b1 = s_offset_b1 + 9
28122 END DO
28123 s_offset_a1 = s_offset_a1 + 1
28124 END DO
28125 END SUBROUTINE contract_sgfp
28126#endif
28127#if __MAX_CONTR > 4 || __MAX_CONTR == 4
28128! **************************************************************************************************
28129!> \brief ...
28130!> \param work ...
28131!> \param nl_a ...
28132!> \param nl_b ...
28133!> \param nl_c ...
28134!> \param nl_d ...
28135!> \param sphi_a ...
28136!> \param sphi_b ...
28137!> \param sphi_c ...
28138!> \param sphi_d ...
28139!> \param primitives ...
28140!> \param buffer1 ...
28141!> \param buffer2 ...
28142! **************************************************************************************************
28143 SUBROUTINE contract_sgfd(work, &
28144 nl_a, nl_b, nl_c, nl_d, &
28145 sphi_a, sphi_b, sphi_c, sphi_d, &
28146 primitives, &
28147 buffer1, buffer2)
28148 REAL(dp), DIMENSION(1*15*10*6), INTENT(IN) :: work
28149 INTEGER :: nl_a, nl_b, nl_c, nl_d
28150 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
28151 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
28152 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
28153 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
28154 REAL(dp), &
28155 DIMENSION(1*nl_a, 9*nl_b, 7*nl_c, 5*nl_d) :: primitives
28156 REAL(dp), DIMENSION(1*15*10*6) :: buffer1, buffer2
28157
28158 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
28159 kmax, s_offset_a1, s_offset_b1, &
28160 s_offset_c1, s_offset_d1
28161
28162 s_offset_a1 = 0
28163 DO ia = 1, nl_a
28164 s_offset_b1 = 0
28165 DO ib = 1, nl_b
28166 s_offset_c1 = 0
28167 DO ic = 1, nl_c
28168 s_offset_d1 = 0
28169 DO id = 1, nl_d
28170 buffer1 = 0.0_dp
28171 imax = 15*10*6
28172 kmax = 1
28173 DO i = 1, imax
28174 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
28175 END DO
28176 buffer2 = 0.0_dp
28177 imax = 1*10*6
28178 kmax = 15
28179 DO i = 1, imax
28180 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
28181 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
28182 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
28183 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
28184 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
28185 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
28186 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
28187 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
28188 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
28189 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
28190 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
28191 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
28192 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
28193 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
28194 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
28195 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
28196 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
28197 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
28198 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
28199 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
28200 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
28201 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
28202 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
28203 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
28204 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
28205 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
28206 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
28207 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
28208 END DO
28209 buffer1 = 0.0_dp
28210 imax = 1*9*6
28211 kmax = 10
28212 DO i = 1, imax
28213 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
28214 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
28215 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
28216 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
28217 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
28218 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
28219 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
28220 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
28221 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
28222 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
28223 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
28224 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
28225 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
28226 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
28227 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
28228 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
28229 END DO
28230 imax = 1*9*7
28231 kmax = 6
28232 i = 0
28233 DO i1 = 1, 7
28234 DO i2 = 1, 9
28235 DO i3 = 1, 1
28236 i = i + 1
28237 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
28238 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
28239 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
28240 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
28241 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
28242 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
28243 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
28244 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
28245 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
28246 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
28247 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
28248 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
28249 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
28250 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
28251 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
28252 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
28253 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
28254 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
28255 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
28256 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
28257 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
28258 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
28259 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
28260 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
28261 END DO
28262 END DO
28263 END DO
28264 s_offset_d1 = s_offset_d1 + 5
28265 END DO
28266 s_offset_c1 = s_offset_c1 + 7
28267 END DO
28268 s_offset_b1 = s_offset_b1 + 9
28269 END DO
28270 s_offset_a1 = s_offset_a1 + 1
28271 END DO
28272 END SUBROUTINE contract_sgfd
28273#endif
28274#if __MAX_CONTR > 4 || __MAX_CONTR == 4
28275! **************************************************************************************************
28276!> \brief ...
28277!> \param work ...
28278!> \param nl_a ...
28279!> \param nl_b ...
28280!> \param nl_c ...
28281!> \param nl_d ...
28282!> \param sphi_a ...
28283!> \param sphi_b ...
28284!> \param sphi_c ...
28285!> \param sphi_d ...
28286!> \param primitives ...
28287!> \param buffer1 ...
28288!> \param buffer2 ...
28289! **************************************************************************************************
28290 SUBROUTINE contract_sgff(work, &
28291 nl_a, nl_b, nl_c, nl_d, &
28292 sphi_a, sphi_b, sphi_c, sphi_d, &
28293 primitives, &
28294 buffer1, buffer2)
28295 REAL(dp), DIMENSION(1*15*10*10), INTENT(IN) :: work
28296 INTEGER :: nl_a, nl_b, nl_c, nl_d
28297 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
28298 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
28299 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
28300 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
28301 REAL(dp), &
28302 DIMENSION(1*nl_a, 9*nl_b, 7*nl_c, 7*nl_d) :: primitives
28303 REAL(dp), DIMENSION(1*15*10*10) :: buffer1, buffer2
28304
28305 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
28306 kmax, s_offset_a1, s_offset_b1, &
28307 s_offset_c1, s_offset_d1
28308
28309 s_offset_a1 = 0
28310 DO ia = 1, nl_a
28311 s_offset_b1 = 0
28312 DO ib = 1, nl_b
28313 s_offset_c1 = 0
28314 DO ic = 1, nl_c
28315 s_offset_d1 = 0
28316 DO id = 1, nl_d
28317 buffer1 = 0.0_dp
28318 imax = 15*10*10
28319 kmax = 1
28320 DO i = 1, imax
28321 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
28322 END DO
28323 buffer2 = 0.0_dp
28324 imax = 1*10*10
28325 kmax = 15
28326 DO i = 1, imax
28327 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
28328 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
28329 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
28330 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
28331 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
28332 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
28333 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
28334 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
28335 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
28336 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
28337 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
28338 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
28339 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
28340 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
28341 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
28342 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
28343 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
28344 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
28345 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
28346 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
28347 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
28348 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
28349 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
28350 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
28351 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
28352 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
28353 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
28354 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
28355 END DO
28356 buffer1 = 0.0_dp
28357 imax = 1*9*10
28358 kmax = 10
28359 DO i = 1, imax
28360 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
28361 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
28362 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
28363 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
28364 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
28365 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
28366 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
28367 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
28368 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
28369 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
28370 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
28371 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
28372 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
28373 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
28374 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
28375 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
28376 END DO
28377 imax = 1*9*7
28378 kmax = 10
28379 i = 0
28380 DO i1 = 1, 7
28381 DO i2 = 1, 9
28382 DO i3 = 1, 1
28383 i = i + 1
28384 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
28385 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
28386 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
28387 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
28388 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
28389 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
28390 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
28391 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
28392 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
28393 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
28394 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
28395 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
28396 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
28397 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
28398 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
28399 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
28400 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
28401 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
28402 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
28403 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
28404 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
28405 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
28406 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
28407 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
28408 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
28409 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
28410 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
28411 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
28412 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
28413 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
28414 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
28415 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
28416 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
28417 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
28418 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
28419 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
28420 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
28421 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
28422 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
28423 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
28424 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
28425 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
28426 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
28427 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
28428 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
28429 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
28430 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
28431 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
28432 END DO
28433 END DO
28434 END DO
28435 s_offset_d1 = s_offset_d1 + 7
28436 END DO
28437 s_offset_c1 = s_offset_c1 + 7
28438 END DO
28439 s_offset_b1 = s_offset_b1 + 9
28440 END DO
28441 s_offset_a1 = s_offset_a1 + 1
28442 END DO
28443 END SUBROUTINE contract_sgff
28444#endif
28445#if __MAX_CONTR > 4 || __MAX_CONTR == 4
28446! **************************************************************************************************
28447!> \brief ...
28448!> \param work ...
28449!> \param nl_a ...
28450!> \param nl_b ...
28451!> \param nl_c ...
28452!> \param nl_d ...
28453!> \param sphi_a ...
28454!> \param sphi_b ...
28455!> \param sphi_c ...
28456!> \param sphi_d ...
28457!> \param primitives ...
28458!> \param buffer1 ...
28459!> \param buffer2 ...
28460! **************************************************************************************************
28461 SUBROUTINE contract_sgfg(work, &
28462 nl_a, nl_b, nl_c, nl_d, &
28463 sphi_a, sphi_b, sphi_c, sphi_d, &
28464 primitives, &
28465 buffer1, buffer2)
28466 REAL(dp), DIMENSION(1*15*10*15), INTENT(IN) :: work
28467 INTEGER :: nl_a, nl_b, nl_c, nl_d
28468 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
28469 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
28470 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
28471 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
28472 REAL(dp), &
28473 DIMENSION(1*nl_a, 9*nl_b, 7*nl_c, 9*nl_d) :: primitives
28474 REAL(dp), DIMENSION(1*15*10*15) :: buffer1, buffer2
28475
28476 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
28477 kmax, s_offset_a1, s_offset_b1, &
28478 s_offset_c1, s_offset_d1
28479
28480 s_offset_a1 = 0
28481 DO ia = 1, nl_a
28482 s_offset_b1 = 0
28483 DO ib = 1, nl_b
28484 s_offset_c1 = 0
28485 DO ic = 1, nl_c
28486 s_offset_d1 = 0
28487 DO id = 1, nl_d
28488 buffer1 = 0.0_dp
28489 imax = 15*10*15
28490 kmax = 1
28491 DO i = 1, imax
28492 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
28493 END DO
28494 buffer2 = 0.0_dp
28495 imax = 1*10*15
28496 kmax = 15
28497 DO i = 1, imax
28498 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
28499 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
28500 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
28501 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
28502 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
28503 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
28504 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
28505 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
28506 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
28507 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
28508 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
28509 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
28510 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
28511 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
28512 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
28513 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
28514 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
28515 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
28516 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
28517 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
28518 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
28519 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
28520 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
28521 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
28522 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
28523 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
28524 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
28525 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
28526 END DO
28527 buffer1 = 0.0_dp
28528 imax = 1*9*15
28529 kmax = 10
28530 DO i = 1, imax
28531 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
28532 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
28533 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
28534 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
28535 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
28536 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
28537 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
28538 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
28539 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
28540 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
28541 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
28542 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
28543 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
28544 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
28545 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
28546 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
28547 END DO
28548 imax = 1*9*7
28549 kmax = 15
28550 i = 0
28551 DO i1 = 1, 7
28552 DO i2 = 1, 9
28553 DO i3 = 1, 1
28554 i = i + 1
28555 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
28556 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
28557 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
28558 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
28559 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
28560 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
28561 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
28562 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
28563 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
28564 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
28565 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
28566 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
28567 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
28568 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
28569 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
28570 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
28571 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
28572 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
28573 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
28574 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
28575 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
28576 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
28577 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
28578 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
28579 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
28580 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
28581 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
28582 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
28583 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
28584 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
28585 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
28586 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
28587 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
28588 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
28589 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
28590 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
28591 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
28592 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
28593 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
28594 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
28595 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
28596 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
28597 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
28598 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
28599 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
28600 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
28601 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
28602 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
28603 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
28604 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
28605 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
28606 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
28607 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
28608 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
28609 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
28610 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
28611 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
28612 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
28613 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
28614 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
28615 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
28616 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
28617 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
28618 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
28619 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
28620 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
28621 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
28622 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
28623 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
28624 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
28625 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
28626 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
28627 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
28628 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
28629 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
28630 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
28631 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
28632 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
28633 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
28634 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
28635 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
28636 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
28637 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
28638 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
28639 END DO
28640 END DO
28641 END DO
28642 s_offset_d1 = s_offset_d1 + 9
28643 END DO
28644 s_offset_c1 = s_offset_c1 + 7
28645 END DO
28646 s_offset_b1 = s_offset_b1 + 9
28647 END DO
28648 s_offset_a1 = s_offset_a1 + 1
28649 END DO
28650 END SUBROUTINE contract_sgfg
28651#endif
28652#if __MAX_CONTR > 4 || __MAX_CONTR == 4
28653! **************************************************************************************************
28654!> \brief ...
28655!> \param work ...
28656!> \param nl_a ...
28657!> \param nl_b ...
28658!> \param nl_c ...
28659!> \param nl_d ...
28660!> \param sphi_a ...
28661!> \param sphi_b ...
28662!> \param sphi_c ...
28663!> \param sphi_d ...
28664!> \param primitives ...
28665!> \param buffer1 ...
28666!> \param buffer2 ...
28667! **************************************************************************************************
28668 SUBROUTINE contract_sggs(work, &
28669 nl_a, nl_b, nl_c, nl_d, &
28670 sphi_a, sphi_b, sphi_c, sphi_d, &
28671 primitives, &
28672 buffer1, buffer2)
28673 REAL(dp), DIMENSION(1*15*15*1), INTENT(IN) :: work
28674 INTEGER :: nl_a, nl_b, nl_c, nl_d
28675 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
28676 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
28677 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
28678 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
28679 REAL(dp), &
28680 DIMENSION(1*nl_a, 9*nl_b, 9*nl_c, 1*nl_d) :: primitives
28681 REAL(dp), DIMENSION(1*15*15*1) :: buffer1, buffer2
28682
28683 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
28684 kmax, s_offset_a1, s_offset_b1, &
28685 s_offset_c1, s_offset_d1
28686
28687 s_offset_a1 = 0
28688 DO ia = 1, nl_a
28689 s_offset_b1 = 0
28690 DO ib = 1, nl_b
28691 s_offset_c1 = 0
28692 DO ic = 1, nl_c
28693 s_offset_d1 = 0
28694 DO id = 1, nl_d
28695 buffer1 = 0.0_dp
28696 imax = 15*15*1
28697 kmax = 1
28698 DO i = 1, imax
28699 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
28700 END DO
28701 buffer2 = 0.0_dp
28702 imax = 1*15*1
28703 kmax = 15
28704 DO i = 1, imax
28705 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
28706 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
28707 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
28708 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
28709 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
28710 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
28711 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
28712 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
28713 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
28714 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
28715 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
28716 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
28717 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
28718 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
28719 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
28720 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
28721 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
28722 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
28723 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
28724 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
28725 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
28726 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
28727 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
28728 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
28729 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
28730 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
28731 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
28732 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
28733 END DO
28734 buffer1 = 0.0_dp
28735 imax = 1*9*1
28736 kmax = 15
28737 DO i = 1, imax
28738 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
28739 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
28740 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
28741 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
28742 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
28743 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
28744 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
28745 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
28746 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
28747 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
28748 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
28749 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
28750 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
28751 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
28752 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
28753 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
28754 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
28755 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
28756 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
28757 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
28758 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
28759 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
28760 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
28761 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
28762 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
28763 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
28764 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
28765 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
28766 END DO
28767 imax = 1*9*9
28768 kmax = 1
28769 i = 0
28770 DO i1 = 1, 9
28771 DO i2 = 1, 9
28772 DO i3 = 1, 1
28773 i = i + 1
28774 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
28775 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
28776 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
28777 END DO
28778 END DO
28779 END DO
28780 s_offset_d1 = s_offset_d1 + 1
28781 END DO
28782 s_offset_c1 = s_offset_c1 + 9
28783 END DO
28784 s_offset_b1 = s_offset_b1 + 9
28785 END DO
28786 s_offset_a1 = s_offset_a1 + 1
28787 END DO
28788 END SUBROUTINE contract_sggs
28789#endif
28790#if __MAX_CONTR > 4 || __MAX_CONTR == 4
28791! **************************************************************************************************
28792!> \brief ...
28793!> \param work ...
28794!> \param nl_a ...
28795!> \param nl_b ...
28796!> \param nl_c ...
28797!> \param nl_d ...
28798!> \param sphi_a ...
28799!> \param sphi_b ...
28800!> \param sphi_c ...
28801!> \param sphi_d ...
28802!> \param primitives ...
28803!> \param buffer1 ...
28804!> \param buffer2 ...
28805! **************************************************************************************************
28806 SUBROUTINE contract_sggp(work, &
28807 nl_a, nl_b, nl_c, nl_d, &
28808 sphi_a, sphi_b, sphi_c, sphi_d, &
28809 primitives, &
28810 buffer1, buffer2)
28811 REAL(dp), DIMENSION(1*15*15*3), INTENT(IN) :: work
28812 INTEGER :: nl_a, nl_b, nl_c, nl_d
28813 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
28814 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
28815 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
28816 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
28817 REAL(dp), &
28818 DIMENSION(1*nl_a, 9*nl_b, 9*nl_c, 3*nl_d) :: primitives
28819 REAL(dp), DIMENSION(1*15*15*3) :: buffer1, buffer2
28820
28821 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
28822 kmax, s_offset_a1, s_offset_b1, &
28823 s_offset_c1, s_offset_d1
28824
28825 s_offset_a1 = 0
28826 DO ia = 1, nl_a
28827 s_offset_b1 = 0
28828 DO ib = 1, nl_b
28829 s_offset_c1 = 0
28830 DO ic = 1, nl_c
28831 s_offset_d1 = 0
28832 DO id = 1, nl_d
28833 buffer1 = 0.0_dp
28834 imax = 15*15*3
28835 kmax = 1
28836 DO i = 1, imax
28837 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
28838 END DO
28839 buffer2 = 0.0_dp
28840 imax = 1*15*3
28841 kmax = 15
28842 DO i = 1, imax
28843 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
28844 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
28845 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
28846 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
28847 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
28848 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
28849 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
28850 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
28851 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
28852 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
28853 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
28854 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
28855 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
28856 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
28857 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
28858 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
28859 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
28860 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
28861 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
28862 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
28863 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
28864 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
28865 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
28866 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
28867 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
28868 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
28869 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
28870 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
28871 END DO
28872 buffer1 = 0.0_dp
28873 imax = 1*9*3
28874 kmax = 15
28875 DO i = 1, imax
28876 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
28877 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
28878 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
28879 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
28880 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
28881 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
28882 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
28883 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
28884 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
28885 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
28886 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
28887 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
28888 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
28889 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
28890 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
28891 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
28892 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
28893 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
28894 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
28895 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
28896 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
28897 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
28898 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
28899 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
28900 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
28901 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
28902 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
28903 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
28904 END DO
28905 imax = 1*9*9
28906 kmax = 3
28907 i = 0
28908 DO i1 = 1, 9
28909 DO i2 = 1, 9
28910 DO i3 = 1, 1
28911 i = i + 1
28912 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
28913 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
28914 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
28915 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
28916 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
28917 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
28918 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
28919 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
28920 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
28921 END DO
28922 END DO
28923 END DO
28924 s_offset_d1 = s_offset_d1 + 3
28925 END DO
28926 s_offset_c1 = s_offset_c1 + 9
28927 END DO
28928 s_offset_b1 = s_offset_b1 + 9
28929 END DO
28930 s_offset_a1 = s_offset_a1 + 1
28931 END DO
28932 END SUBROUTINE contract_sggp
28933#endif
28934#if __MAX_CONTR > 4 || __MAX_CONTR == 4
28935! **************************************************************************************************
28936!> \brief ...
28937!> \param work ...
28938!> \param nl_a ...
28939!> \param nl_b ...
28940!> \param nl_c ...
28941!> \param nl_d ...
28942!> \param sphi_a ...
28943!> \param sphi_b ...
28944!> \param sphi_c ...
28945!> \param sphi_d ...
28946!> \param primitives ...
28947!> \param buffer1 ...
28948!> \param buffer2 ...
28949! **************************************************************************************************
28950 SUBROUTINE contract_sggd(work, &
28951 nl_a, nl_b, nl_c, nl_d, &
28952 sphi_a, sphi_b, sphi_c, sphi_d, &
28953 primitives, &
28954 buffer1, buffer2)
28955 REAL(dp), DIMENSION(1*15*15*6), INTENT(IN) :: work
28956 INTEGER :: nl_a, nl_b, nl_c, nl_d
28957 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
28958 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
28959 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
28960 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
28961 REAL(dp), &
28962 DIMENSION(1*nl_a, 9*nl_b, 9*nl_c, 5*nl_d) :: primitives
28963 REAL(dp), DIMENSION(1*15*15*6) :: buffer1, buffer2
28964
28965 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
28966 kmax, s_offset_a1, s_offset_b1, &
28967 s_offset_c1, s_offset_d1
28968
28969 s_offset_a1 = 0
28970 DO ia = 1, nl_a
28971 s_offset_b1 = 0
28972 DO ib = 1, nl_b
28973 s_offset_c1 = 0
28974 DO ic = 1, nl_c
28975 s_offset_d1 = 0
28976 DO id = 1, nl_d
28977 buffer1 = 0.0_dp
28978 imax = 15*15*6
28979 kmax = 1
28980 DO i = 1, imax
28981 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
28982 END DO
28983 buffer2 = 0.0_dp
28984 imax = 1*15*6
28985 kmax = 15
28986 DO i = 1, imax
28987 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
28988 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
28989 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
28990 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
28991 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
28992 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
28993 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
28994 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
28995 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
28996 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
28997 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
28998 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
28999 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
29000 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
29001 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
29002 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
29003 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
29004 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
29005 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
29006 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
29007 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
29008 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
29009 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
29010 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
29011 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
29012 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
29013 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
29014 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
29015 END DO
29016 buffer1 = 0.0_dp
29017 imax = 1*9*6
29018 kmax = 15
29019 DO i = 1, imax
29020 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
29021 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
29022 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
29023 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
29024 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
29025 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
29026 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
29027 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
29028 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
29029 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
29030 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
29031 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
29032 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
29033 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
29034 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
29035 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
29036 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
29037 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
29038 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
29039 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
29040 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
29041 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
29042 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
29043 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
29044 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
29045 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
29046 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
29047 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
29048 END DO
29049 imax = 1*9*9
29050 kmax = 6
29051 i = 0
29052 DO i1 = 1, 9
29053 DO i2 = 1, 9
29054 DO i3 = 1, 1
29055 i = i + 1
29056 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
29057 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
29058 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
29059 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
29060 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
29061 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
29062 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
29063 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
29064 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
29065 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
29066 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
29067 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
29068 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
29069 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
29070 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
29071 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
29072 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
29073 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
29074 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
29075 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
29076 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
29077 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
29078 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
29079 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
29080 END DO
29081 END DO
29082 END DO
29083 s_offset_d1 = s_offset_d1 + 5
29084 END DO
29085 s_offset_c1 = s_offset_c1 + 9
29086 END DO
29087 s_offset_b1 = s_offset_b1 + 9
29088 END DO
29089 s_offset_a1 = s_offset_a1 + 1
29090 END DO
29091 END SUBROUTINE contract_sggd
29092#endif
29093#if __MAX_CONTR > 4 || __MAX_CONTR == 4
29094! **************************************************************************************************
29095!> \brief ...
29096!> \param work ...
29097!> \param nl_a ...
29098!> \param nl_b ...
29099!> \param nl_c ...
29100!> \param nl_d ...
29101!> \param sphi_a ...
29102!> \param sphi_b ...
29103!> \param sphi_c ...
29104!> \param sphi_d ...
29105!> \param primitives ...
29106!> \param buffer1 ...
29107!> \param buffer2 ...
29108! **************************************************************************************************
29109 SUBROUTINE contract_sggf(work, &
29110 nl_a, nl_b, nl_c, nl_d, &
29111 sphi_a, sphi_b, sphi_c, sphi_d, &
29112 primitives, &
29113 buffer1, buffer2)
29114 REAL(dp), DIMENSION(1*15*15*10), INTENT(IN) :: work
29115 INTEGER :: nl_a, nl_b, nl_c, nl_d
29116 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
29117 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
29118 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
29119 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
29120 REAL(dp), &
29121 DIMENSION(1*nl_a, 9*nl_b, 9*nl_c, 7*nl_d) :: primitives
29122 REAL(dp), DIMENSION(1*15*15*10) :: buffer1, buffer2
29123
29124 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
29125 kmax, s_offset_a1, s_offset_b1, &
29126 s_offset_c1, s_offset_d1
29127
29128 s_offset_a1 = 0
29129 DO ia = 1, nl_a
29130 s_offset_b1 = 0
29131 DO ib = 1, nl_b
29132 s_offset_c1 = 0
29133 DO ic = 1, nl_c
29134 s_offset_d1 = 0
29135 DO id = 1, nl_d
29136 buffer1 = 0.0_dp
29137 imax = 15*15*10
29138 kmax = 1
29139 DO i = 1, imax
29140 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
29141 END DO
29142 buffer2 = 0.0_dp
29143 imax = 1*15*10
29144 kmax = 15
29145 DO i = 1, imax
29146 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
29147 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
29148 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
29149 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
29150 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
29151 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
29152 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
29153 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
29154 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
29155 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
29156 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
29157 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
29158 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
29159 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
29160 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
29161 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
29162 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
29163 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
29164 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
29165 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
29166 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
29167 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
29168 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
29169 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
29170 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
29171 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
29172 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
29173 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
29174 END DO
29175 buffer1 = 0.0_dp
29176 imax = 1*9*10
29177 kmax = 15
29178 DO i = 1, imax
29179 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
29180 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
29181 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
29182 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
29183 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
29184 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
29185 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
29186 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
29187 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
29188 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
29189 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
29190 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
29191 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
29192 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
29193 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
29194 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
29195 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
29196 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
29197 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
29198 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
29199 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
29200 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
29201 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
29202 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
29203 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
29204 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
29205 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
29206 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
29207 END DO
29208 imax = 1*9*9
29209 kmax = 10
29210 i = 0
29211 DO i1 = 1, 9
29212 DO i2 = 1, 9
29213 DO i3 = 1, 1
29214 i = i + 1
29215 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
29216 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
29217 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
29218 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
29219 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
29220 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
29221 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
29222 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
29223 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
29224 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
29225 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
29226 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
29227 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
29228 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
29229 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
29230 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
29231 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
29232 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
29233 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
29234 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
29235 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
29236 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
29237 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
29238 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
29239 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
29240 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
29241 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
29242 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
29243 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
29244 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
29245 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
29246 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
29247 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
29248 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
29249 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
29250 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
29251 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
29252 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
29253 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
29254 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
29255 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
29256 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
29257 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
29258 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
29259 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
29260 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
29261 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
29262 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
29263 END DO
29264 END DO
29265 END DO
29266 s_offset_d1 = s_offset_d1 + 7
29267 END DO
29268 s_offset_c1 = s_offset_c1 + 9
29269 END DO
29270 s_offset_b1 = s_offset_b1 + 9
29271 END DO
29272 s_offset_a1 = s_offset_a1 + 1
29273 END DO
29274 END SUBROUTINE contract_sggf
29275#endif
29276#if __MAX_CONTR > 4 || __MAX_CONTR == 4
29277! **************************************************************************************************
29278!> \brief ...
29279!> \param work ...
29280!> \param nl_a ...
29281!> \param nl_b ...
29282!> \param nl_c ...
29283!> \param nl_d ...
29284!> \param sphi_a ...
29285!> \param sphi_b ...
29286!> \param sphi_c ...
29287!> \param sphi_d ...
29288!> \param primitives ...
29289!> \param buffer1 ...
29290!> \param buffer2 ...
29291! **************************************************************************************************
29292 SUBROUTINE contract_sggg(work, &
29293 nl_a, nl_b, nl_c, nl_d, &
29294 sphi_a, sphi_b, sphi_c, sphi_d, &
29295 primitives, &
29296 buffer1, buffer2)
29297 REAL(dp), DIMENSION(1*15*15*15), INTENT(IN) :: work
29298 INTEGER :: nl_a, nl_b, nl_c, nl_d
29299 REAL(dp), DIMENSION(1, 1*nl_a), INTENT(IN) :: sphi_a
29300 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
29301 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
29302 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
29303 REAL(dp), &
29304 DIMENSION(1*nl_a, 9*nl_b, 9*nl_c, 9*nl_d) :: primitives
29305 REAL(dp), DIMENSION(1*15*15*15) :: buffer1, buffer2
29306
29307 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
29308 kmax, s_offset_a1, s_offset_b1, &
29309 s_offset_c1, s_offset_d1
29310
29311 s_offset_a1 = 0
29312 DO ia = 1, nl_a
29313 s_offset_b1 = 0
29314 DO ib = 1, nl_b
29315 s_offset_c1 = 0
29316 DO ic = 1, nl_c
29317 s_offset_d1 = 0
29318 DO id = 1, nl_d
29319 buffer1 = 0.0_dp
29320 imax = 15*15*15
29321 kmax = 1
29322 DO i = 1, imax
29323 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
29324 END DO
29325 buffer2 = 0.0_dp
29326 imax = 1*15*15
29327 kmax = 15
29328 DO i = 1, imax
29329 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
29330 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
29331 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
29332 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
29333 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
29334 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
29335 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
29336 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
29337 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
29338 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
29339 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
29340 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
29341 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
29342 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
29343 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
29344 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
29345 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
29346 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
29347 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
29348 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
29349 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
29350 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
29351 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
29352 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
29353 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
29354 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
29355 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
29356 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
29357 END DO
29358 buffer1 = 0.0_dp
29359 imax = 1*9*15
29360 kmax = 15
29361 DO i = 1, imax
29362 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
29363 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
29364 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
29365 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
29366 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
29367 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
29368 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
29369 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
29370 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
29371 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
29372 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
29373 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
29374 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
29375 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
29376 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
29377 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
29378 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
29379 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
29380 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
29381 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
29382 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
29383 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
29384 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
29385 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
29386 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
29387 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
29388 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
29389 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
29390 END DO
29391 imax = 1*9*9
29392 kmax = 15
29393 i = 0
29394 DO i1 = 1, 9
29395 DO i2 = 1, 9
29396 DO i3 = 1, 1
29397 i = i + 1
29398 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
29399 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
29400 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
29401 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
29402 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
29403 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
29404 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
29405 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
29406 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
29407 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
29408 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
29409 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
29410 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
29411 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
29412 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
29413 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
29414 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
29415 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
29416 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
29417 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
29418 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
29419 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
29420 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
29421 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
29422 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
29423 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
29424 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
29425 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
29426 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
29427 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
29428 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
29429 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
29430 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
29431 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
29432 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
29433 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
29434 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
29435 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
29436 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
29437 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
29438 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
29439 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
29440 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
29441 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
29442 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
29443 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
29444 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
29445 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
29446 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
29447 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
29448 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
29449 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
29450 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
29451 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
29452 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
29453 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
29454 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
29455 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
29456 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
29457 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
29458 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
29459 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
29460 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
29461 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
29462 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
29463 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
29464 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
29465 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
29466 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
29467 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
29468 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
29469 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
29470 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
29471 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
29472 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
29473 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
29474 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
29475 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
29476 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
29477 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
29478 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
29479 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
29480 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
29481 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
29482 END DO
29483 END DO
29484 END DO
29485 s_offset_d1 = s_offset_d1 + 9
29486 END DO
29487 s_offset_c1 = s_offset_c1 + 9
29488 END DO
29489 s_offset_b1 = s_offset_b1 + 9
29490 END DO
29491 s_offset_a1 = s_offset_a1 + 1
29492 END DO
29493 END SUBROUTINE contract_sggg
29494#endif
29495#if __MAX_CONTR > 1 || __MAX_CONTR == 1
29496! **************************************************************************************************
29497!> \brief ...
29498!> \param work ...
29499!> \param nl_a ...
29500!> \param nl_b ...
29501!> \param nl_c ...
29502!> \param nl_d ...
29503!> \param sphi_a ...
29504!> \param sphi_b ...
29505!> \param sphi_c ...
29506!> \param sphi_d ...
29507!> \param primitives ...
29508!> \param buffer1 ...
29509!> \param buffer2 ...
29510! **************************************************************************************************
29511 SUBROUTINE contract_psss(work, &
29512 nl_a, nl_b, nl_c, nl_d, &
29513 sphi_a, sphi_b, sphi_c, sphi_d, &
29514 primitives, &
29515 buffer1, buffer2)
29516 REAL(dp), DIMENSION(3*1*1*1), INTENT(IN) :: work
29517 INTEGER :: nl_a, nl_b, nl_c, nl_d
29518 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
29519 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
29520 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
29521 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
29522 REAL(dp), &
29523 DIMENSION(3*nl_a, 1*nl_b, 1*nl_c, 1*nl_d) :: primitives
29524 REAL(dp), DIMENSION(3*1*1*1) :: buffer1, buffer2
29525
29526 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
29527 kmax, s_offset_a1, s_offset_b1, &
29528 s_offset_c1, s_offset_d1
29529
29530 s_offset_a1 = 0
29531 DO ia = 1, nl_a
29532 s_offset_b1 = 0
29533 DO ib = 1, nl_b
29534 s_offset_c1 = 0
29535 DO ic = 1, nl_c
29536 s_offset_d1 = 0
29537 DO id = 1, nl_d
29538 buffer1 = 0.0_dp
29539 imax = 1*1*1
29540 kmax = 3
29541 DO i = 1, imax
29542 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
29543 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
29544 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
29545 END DO
29546 buffer2 = 0.0_dp
29547 imax = 3*1*1
29548 kmax = 1
29549 DO i = 1, imax
29550 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
29551 END DO
29552 buffer1 = 0.0_dp
29553 imax = 3*1*1
29554 kmax = 1
29555 DO i = 1, imax
29556 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
29557 END DO
29558 imax = 3*1*1
29559 kmax = 1
29560 i = 0
29561 DO i1 = 1, 1
29562 DO i2 = 1, 1
29563 DO i3 = 1, 3
29564 i = i + 1
29565 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
29566 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
29567 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
29568 END DO
29569 END DO
29570 END DO
29571 s_offset_d1 = s_offset_d1 + 1
29572 END DO
29573 s_offset_c1 = s_offset_c1 + 1
29574 END DO
29575 s_offset_b1 = s_offset_b1 + 1
29576 END DO
29577 s_offset_a1 = s_offset_a1 + 3
29578 END DO
29579 END SUBROUTINE contract_psss
29580#endif
29581#if __MAX_CONTR > 1 || __MAX_CONTR == 1
29582! **************************************************************************************************
29583!> \brief ...
29584!> \param work ...
29585!> \param nl_a ...
29586!> \param nl_b ...
29587!> \param nl_c ...
29588!> \param nl_d ...
29589!> \param sphi_a ...
29590!> \param sphi_b ...
29591!> \param sphi_c ...
29592!> \param sphi_d ...
29593!> \param primitives ...
29594!> \param buffer1 ...
29595!> \param buffer2 ...
29596! **************************************************************************************************
29597 SUBROUTINE contract_pssp(work, &
29598 nl_a, nl_b, nl_c, nl_d, &
29599 sphi_a, sphi_b, sphi_c, sphi_d, &
29600 primitives, &
29601 buffer1, buffer2)
29602 REAL(dp), DIMENSION(3*1*1*3), INTENT(IN) :: work
29603 INTEGER :: nl_a, nl_b, nl_c, nl_d
29604 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
29605 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
29606 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
29607 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
29608 REAL(dp), &
29609 DIMENSION(3*nl_a, 1*nl_b, 1*nl_c, 3*nl_d) :: primitives
29610 REAL(dp), DIMENSION(3*1*1*3) :: buffer1, buffer2
29611
29612 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
29613 kmax, s_offset_a1, s_offset_b1, &
29614 s_offset_c1, s_offset_d1
29615
29616 s_offset_a1 = 0
29617 DO ia = 1, nl_a
29618 s_offset_b1 = 0
29619 DO ib = 1, nl_b
29620 s_offset_c1 = 0
29621 DO ic = 1, nl_c
29622 s_offset_d1 = 0
29623 DO id = 1, nl_d
29624 buffer1 = 0.0_dp
29625 imax = 1*1*3
29626 kmax = 3
29627 DO i = 1, imax
29628 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
29629 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
29630 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
29631 END DO
29632 buffer2 = 0.0_dp
29633 imax = 3*1*3
29634 kmax = 1
29635 DO i = 1, imax
29636 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
29637 END DO
29638 buffer1 = 0.0_dp
29639 imax = 3*1*3
29640 kmax = 1
29641 DO i = 1, imax
29642 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
29643 END DO
29644 imax = 3*1*1
29645 kmax = 3
29646 i = 0
29647 DO i1 = 1, 1
29648 DO i2 = 1, 1
29649 DO i3 = 1, 3
29650 i = i + 1
29651 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
29652 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
29653 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
29654 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
29655 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
29656 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
29657 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
29658 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
29659 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
29660 END DO
29661 END DO
29662 END DO
29663 s_offset_d1 = s_offset_d1 + 3
29664 END DO
29665 s_offset_c1 = s_offset_c1 + 1
29666 END DO
29667 s_offset_b1 = s_offset_b1 + 1
29668 END DO
29669 s_offset_a1 = s_offset_a1 + 3
29670 END DO
29671 END SUBROUTINE contract_pssp
29672#endif
29673#if __MAX_CONTR > 2 || __MAX_CONTR == 2
29674! **************************************************************************************************
29675!> \brief ...
29676!> \param work ...
29677!> \param nl_a ...
29678!> \param nl_b ...
29679!> \param nl_c ...
29680!> \param nl_d ...
29681!> \param sphi_a ...
29682!> \param sphi_b ...
29683!> \param sphi_c ...
29684!> \param sphi_d ...
29685!> \param primitives ...
29686!> \param buffer1 ...
29687!> \param buffer2 ...
29688! **************************************************************************************************
29689 SUBROUTINE contract_pssd(work, &
29690 nl_a, nl_b, nl_c, nl_d, &
29691 sphi_a, sphi_b, sphi_c, sphi_d, &
29692 primitives, &
29693 buffer1, buffer2)
29694 REAL(dp), DIMENSION(3*1*1*6), INTENT(IN) :: work
29695 INTEGER :: nl_a, nl_b, nl_c, nl_d
29696 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
29697 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
29698 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
29699 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
29700 REAL(dp), &
29701 DIMENSION(3*nl_a, 1*nl_b, 1*nl_c, 5*nl_d) :: primitives
29702 REAL(dp), DIMENSION(3*1*1*6) :: buffer1, buffer2
29703
29704 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
29705 kmax, s_offset_a1, s_offset_b1, &
29706 s_offset_c1, s_offset_d1
29707
29708 s_offset_a1 = 0
29709 DO ia = 1, nl_a
29710 s_offset_b1 = 0
29711 DO ib = 1, nl_b
29712 s_offset_c1 = 0
29713 DO ic = 1, nl_c
29714 s_offset_d1 = 0
29715 DO id = 1, nl_d
29716 buffer1 = 0.0_dp
29717 imax = 1*1*6
29718 kmax = 3
29719 DO i = 1, imax
29720 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
29721 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
29722 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
29723 END DO
29724 buffer2 = 0.0_dp
29725 imax = 3*1*6
29726 kmax = 1
29727 DO i = 1, imax
29728 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
29729 END DO
29730 buffer1 = 0.0_dp
29731 imax = 3*1*6
29732 kmax = 1
29733 DO i = 1, imax
29734 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
29735 END DO
29736 imax = 3*1*1
29737 kmax = 6
29738 i = 0
29739 DO i1 = 1, 1
29740 DO i2 = 1, 1
29741 DO i3 = 1, 3
29742 i = i + 1
29743 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
29744 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
29745 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
29746 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
29747 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
29748 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
29749 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
29750 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
29751 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
29752 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
29753 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
29754 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
29755 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
29756 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
29757 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
29758 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
29759 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
29760 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
29761 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
29762 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
29763 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
29764 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
29765 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
29766 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
29767 END DO
29768 END DO
29769 END DO
29770 s_offset_d1 = s_offset_d1 + 5
29771 END DO
29772 s_offset_c1 = s_offset_c1 + 1
29773 END DO
29774 s_offset_b1 = s_offset_b1 + 1
29775 END DO
29776 s_offset_a1 = s_offset_a1 + 3
29777 END DO
29778 END SUBROUTINE contract_pssd
29779#endif
29780#if __MAX_CONTR > 3 || __MAX_CONTR == 3
29781! **************************************************************************************************
29782!> \brief ...
29783!> \param work ...
29784!> \param nl_a ...
29785!> \param nl_b ...
29786!> \param nl_c ...
29787!> \param nl_d ...
29788!> \param sphi_a ...
29789!> \param sphi_b ...
29790!> \param sphi_c ...
29791!> \param sphi_d ...
29792!> \param primitives ...
29793!> \param buffer1 ...
29794!> \param buffer2 ...
29795! **************************************************************************************************
29796 SUBROUTINE contract_pssf(work, &
29797 nl_a, nl_b, nl_c, nl_d, &
29798 sphi_a, sphi_b, sphi_c, sphi_d, &
29799 primitives, &
29800 buffer1, buffer2)
29801 REAL(dp), DIMENSION(3*1*1*10), INTENT(IN) :: work
29802 INTEGER :: nl_a, nl_b, nl_c, nl_d
29803 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
29804 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
29805 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
29806 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
29807 REAL(dp), &
29808 DIMENSION(3*nl_a, 1*nl_b, 1*nl_c, 7*nl_d) :: primitives
29809 REAL(dp), DIMENSION(3*1*1*10) :: buffer1, buffer2
29810
29811 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
29812 kmax, s_offset_a1, s_offset_b1, &
29813 s_offset_c1, s_offset_d1
29814
29815 s_offset_a1 = 0
29816 DO ia = 1, nl_a
29817 s_offset_b1 = 0
29818 DO ib = 1, nl_b
29819 s_offset_c1 = 0
29820 DO ic = 1, nl_c
29821 s_offset_d1 = 0
29822 DO id = 1, nl_d
29823 buffer1 = 0.0_dp
29824 imax = 1*1*10
29825 kmax = 3
29826 DO i = 1, imax
29827 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
29828 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
29829 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
29830 END DO
29831 buffer2 = 0.0_dp
29832 imax = 3*1*10
29833 kmax = 1
29834 DO i = 1, imax
29835 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
29836 END DO
29837 buffer1 = 0.0_dp
29838 imax = 3*1*10
29839 kmax = 1
29840 DO i = 1, imax
29841 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
29842 END DO
29843 imax = 3*1*1
29844 kmax = 10
29845 i = 0
29846 DO i1 = 1, 1
29847 DO i2 = 1, 1
29848 DO i3 = 1, 3
29849 i = i + 1
29850 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
29851 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
29852 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
29853 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
29854 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
29855 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
29856 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
29857 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
29858 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
29859 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
29860 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
29861 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
29862 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
29863 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
29864 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
29865 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
29866 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
29867 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
29868 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
29869 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
29870 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
29871 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
29872 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
29873 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
29874 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
29875 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
29876 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
29877 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
29878 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
29879 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
29880 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
29881 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
29882 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
29883 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
29884 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
29885 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
29886 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
29887 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
29888 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
29889 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
29890 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
29891 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
29892 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
29893 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
29894 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
29895 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
29896 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
29897 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
29898 END DO
29899 END DO
29900 END DO
29901 s_offset_d1 = s_offset_d1 + 7
29902 END DO
29903 s_offset_c1 = s_offset_c1 + 1
29904 END DO
29905 s_offset_b1 = s_offset_b1 + 1
29906 END DO
29907 s_offset_a1 = s_offset_a1 + 3
29908 END DO
29909 END SUBROUTINE contract_pssf
29910#endif
29911#if __MAX_CONTR > 4 || __MAX_CONTR == 4
29912! **************************************************************************************************
29913!> \brief ...
29914!> \param work ...
29915!> \param nl_a ...
29916!> \param nl_b ...
29917!> \param nl_c ...
29918!> \param nl_d ...
29919!> \param sphi_a ...
29920!> \param sphi_b ...
29921!> \param sphi_c ...
29922!> \param sphi_d ...
29923!> \param primitives ...
29924!> \param buffer1 ...
29925!> \param buffer2 ...
29926! **************************************************************************************************
29927 SUBROUTINE contract_pssg(work, &
29928 nl_a, nl_b, nl_c, nl_d, &
29929 sphi_a, sphi_b, sphi_c, sphi_d, &
29930 primitives, &
29931 buffer1, buffer2)
29932 REAL(dp), DIMENSION(3*1*1*15), INTENT(IN) :: work
29933 INTEGER :: nl_a, nl_b, nl_c, nl_d
29934 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
29935 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
29936 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
29937 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
29938 REAL(dp), &
29939 DIMENSION(3*nl_a, 1*nl_b, 1*nl_c, 9*nl_d) :: primitives
29940 REAL(dp), DIMENSION(3*1*1*15) :: buffer1, buffer2
29941
29942 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
29943 kmax, s_offset_a1, s_offset_b1, &
29944 s_offset_c1, s_offset_d1
29945
29946 s_offset_a1 = 0
29947 DO ia = 1, nl_a
29948 s_offset_b1 = 0
29949 DO ib = 1, nl_b
29950 s_offset_c1 = 0
29951 DO ic = 1, nl_c
29952 s_offset_d1 = 0
29953 DO id = 1, nl_d
29954 buffer1 = 0.0_dp
29955 imax = 1*1*15
29956 kmax = 3
29957 DO i = 1, imax
29958 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
29959 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
29960 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
29961 END DO
29962 buffer2 = 0.0_dp
29963 imax = 3*1*15
29964 kmax = 1
29965 DO i = 1, imax
29966 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
29967 END DO
29968 buffer1 = 0.0_dp
29969 imax = 3*1*15
29970 kmax = 1
29971 DO i = 1, imax
29972 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
29973 END DO
29974 imax = 3*1*1
29975 kmax = 15
29976 i = 0
29977 DO i1 = 1, 1
29978 DO i2 = 1, 1
29979 DO i3 = 1, 3
29980 i = i + 1
29981 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
29982 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
29983 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
29984 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
29985 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
29986 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
29987 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
29988 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
29989 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
29990 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
29991 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
29992 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
29993 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
29994 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
29995 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
29996 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
29997 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
29998 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
29999 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
30000 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
30001 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
30002 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
30003 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
30004 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
30005 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
30006 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
30007 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
30008 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
30009 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
30010 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
30011 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
30012 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
30013 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
30014 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
30015 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
30016 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
30017 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
30018 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
30019 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
30020 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
30021 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
30022 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
30023 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
30024 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
30025 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
30026 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
30027 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
30028 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
30029 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
30030 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
30031 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
30032 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
30033 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
30034 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
30035 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
30036 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
30037 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
30038 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
30039 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
30040 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
30041 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
30042 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
30043 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
30044 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
30045 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
30046 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
30047 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
30048 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
30049 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
30050 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
30051 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
30052 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
30053 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
30054 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
30055 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
30056 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
30057 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
30058 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
30059 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
30060 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
30061 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
30062 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
30063 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
30064 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
30065 END DO
30066 END DO
30067 END DO
30068 s_offset_d1 = s_offset_d1 + 9
30069 END DO
30070 s_offset_c1 = s_offset_c1 + 1
30071 END DO
30072 s_offset_b1 = s_offset_b1 + 1
30073 END DO
30074 s_offset_a1 = s_offset_a1 + 3
30075 END DO
30076 END SUBROUTINE contract_pssg
30077#endif
30078#if __MAX_CONTR > 1 || __MAX_CONTR == 1
30079! **************************************************************************************************
30080!> \brief ...
30081!> \param work ...
30082!> \param nl_a ...
30083!> \param nl_b ...
30084!> \param nl_c ...
30085!> \param nl_d ...
30086!> \param sphi_a ...
30087!> \param sphi_b ...
30088!> \param sphi_c ...
30089!> \param sphi_d ...
30090!> \param primitives ...
30091!> \param buffer1 ...
30092!> \param buffer2 ...
30093! **************************************************************************************************
30094 SUBROUTINE contract_psps(work, &
30095 nl_a, nl_b, nl_c, nl_d, &
30096 sphi_a, sphi_b, sphi_c, sphi_d, &
30097 primitives, &
30098 buffer1, buffer2)
30099 REAL(dp), DIMENSION(3*1*3*1), INTENT(IN) :: work
30100 INTEGER :: nl_a, nl_b, nl_c, nl_d
30101 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
30102 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
30103 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
30104 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
30105 REAL(dp), &
30106 DIMENSION(3*nl_a, 1*nl_b, 3*nl_c, 1*nl_d) :: primitives
30107 REAL(dp), DIMENSION(3*1*3*1) :: buffer1, buffer2
30108
30109 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
30110 kmax, s_offset_a1, s_offset_b1, &
30111 s_offset_c1, s_offset_d1
30112
30113 s_offset_a1 = 0
30114 DO ia = 1, nl_a
30115 s_offset_b1 = 0
30116 DO ib = 1, nl_b
30117 s_offset_c1 = 0
30118 DO ic = 1, nl_c
30119 s_offset_d1 = 0
30120 DO id = 1, nl_d
30121 buffer1 = 0.0_dp
30122 imax = 1*3*1
30123 kmax = 3
30124 DO i = 1, imax
30125 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
30126 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
30127 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
30128 END DO
30129 buffer2 = 0.0_dp
30130 imax = 3*3*1
30131 kmax = 1
30132 DO i = 1, imax
30133 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
30134 END DO
30135 buffer1 = 0.0_dp
30136 imax = 3*1*1
30137 kmax = 3
30138 DO i = 1, imax
30139 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
30140 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
30141 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
30142 END DO
30143 imax = 3*1*3
30144 kmax = 1
30145 i = 0
30146 DO i1 = 1, 3
30147 DO i2 = 1, 1
30148 DO i3 = 1, 3
30149 i = i + 1
30150 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
30151 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
30152 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
30153 END DO
30154 END DO
30155 END DO
30156 s_offset_d1 = s_offset_d1 + 1
30157 END DO
30158 s_offset_c1 = s_offset_c1 + 3
30159 END DO
30160 s_offset_b1 = s_offset_b1 + 1
30161 END DO
30162 s_offset_a1 = s_offset_a1 + 3
30163 END DO
30164 END SUBROUTINE contract_psps
30165#endif
30166#if __MAX_CONTR > 1 || __MAX_CONTR == 1
30167! **************************************************************************************************
30168!> \brief ...
30169!> \param work ...
30170!> \param nl_a ...
30171!> \param nl_b ...
30172!> \param nl_c ...
30173!> \param nl_d ...
30174!> \param sphi_a ...
30175!> \param sphi_b ...
30176!> \param sphi_c ...
30177!> \param sphi_d ...
30178!> \param primitives ...
30179!> \param buffer1 ...
30180!> \param buffer2 ...
30181! **************************************************************************************************
30182 SUBROUTINE contract_pspp(work, &
30183 nl_a, nl_b, nl_c, nl_d, &
30184 sphi_a, sphi_b, sphi_c, sphi_d, &
30185 primitives, &
30186 buffer1, buffer2)
30187 REAL(dp), DIMENSION(3*1*3*3), INTENT(IN) :: work
30188 INTEGER :: nl_a, nl_b, nl_c, nl_d
30189 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
30190 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
30191 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
30192 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
30193 REAL(dp), &
30194 DIMENSION(3*nl_a, 1*nl_b, 3*nl_c, 3*nl_d) :: primitives
30195 REAL(dp), DIMENSION(3*1*3*3) :: buffer1, buffer2
30196
30197 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
30198 kmax, s_offset_a1, s_offset_b1, &
30199 s_offset_c1, s_offset_d1
30200
30201 s_offset_a1 = 0
30202 DO ia = 1, nl_a
30203 s_offset_b1 = 0
30204 DO ib = 1, nl_b
30205 s_offset_c1 = 0
30206 DO ic = 1, nl_c
30207 s_offset_d1 = 0
30208 DO id = 1, nl_d
30209 buffer1 = 0.0_dp
30210 imax = 1*3*3
30211 kmax = 3
30212 DO i = 1, imax
30213 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
30214 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
30215 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
30216 END DO
30217 buffer2 = 0.0_dp
30218 imax = 3*3*3
30219 kmax = 1
30220 DO i = 1, imax
30221 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
30222 END DO
30223 buffer1 = 0.0_dp
30224 imax = 3*1*3
30225 kmax = 3
30226 DO i = 1, imax
30227 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
30228 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
30229 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
30230 END DO
30231 imax = 3*1*3
30232 kmax = 3
30233 i = 0
30234 DO i1 = 1, 3
30235 DO i2 = 1, 1
30236 DO i3 = 1, 3
30237 i = i + 1
30238 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
30239 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
30240 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
30241 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
30242 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
30243 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
30244 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
30245 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
30246 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
30247 END DO
30248 END DO
30249 END DO
30250 s_offset_d1 = s_offset_d1 + 3
30251 END DO
30252 s_offset_c1 = s_offset_c1 + 3
30253 END DO
30254 s_offset_b1 = s_offset_b1 + 1
30255 END DO
30256 s_offset_a1 = s_offset_a1 + 3
30257 END DO
30258 END SUBROUTINE contract_pspp
30259#endif
30260#if __MAX_CONTR > 2 || __MAX_CONTR == 2
30261! **************************************************************************************************
30262!> \brief ...
30263!> \param work ...
30264!> \param nl_a ...
30265!> \param nl_b ...
30266!> \param nl_c ...
30267!> \param nl_d ...
30268!> \param sphi_a ...
30269!> \param sphi_b ...
30270!> \param sphi_c ...
30271!> \param sphi_d ...
30272!> \param primitives ...
30273!> \param buffer1 ...
30274!> \param buffer2 ...
30275! **************************************************************************************************
30276 SUBROUTINE contract_pspd(work, &
30277 nl_a, nl_b, nl_c, nl_d, &
30278 sphi_a, sphi_b, sphi_c, sphi_d, &
30279 primitives, &
30280 buffer1, buffer2)
30281 REAL(dp), DIMENSION(3*1*3*6), INTENT(IN) :: work
30282 INTEGER :: nl_a, nl_b, nl_c, nl_d
30283 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
30284 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
30285 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
30286 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
30287 REAL(dp), &
30288 DIMENSION(3*nl_a, 1*nl_b, 3*nl_c, 5*nl_d) :: primitives
30289 REAL(dp), DIMENSION(3*1*3*6) :: buffer1, buffer2
30290
30291 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
30292 kmax, s_offset_a1, s_offset_b1, &
30293 s_offset_c1, s_offset_d1
30294
30295 s_offset_a1 = 0
30296 DO ia = 1, nl_a
30297 s_offset_b1 = 0
30298 DO ib = 1, nl_b
30299 s_offset_c1 = 0
30300 DO ic = 1, nl_c
30301 s_offset_d1 = 0
30302 DO id = 1, nl_d
30303 buffer1 = 0.0_dp
30304 imax = 1*3*6
30305 kmax = 3
30306 DO i = 1, imax
30307 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
30308 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
30309 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
30310 END DO
30311 buffer2 = 0.0_dp
30312 imax = 3*3*6
30313 kmax = 1
30314 DO i = 1, imax
30315 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
30316 END DO
30317 buffer1 = 0.0_dp
30318 imax = 3*1*6
30319 kmax = 3
30320 DO i = 1, imax
30321 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
30322 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
30323 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
30324 END DO
30325 imax = 3*1*3
30326 kmax = 6
30327 i = 0
30328 DO i1 = 1, 3
30329 DO i2 = 1, 1
30330 DO i3 = 1, 3
30331 i = i + 1
30332 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
30333 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
30334 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
30335 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
30336 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
30337 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
30338 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
30339 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
30340 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
30341 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
30342 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
30343 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
30344 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
30345 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
30346 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
30347 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
30348 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
30349 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
30350 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
30351 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
30352 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
30353 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
30354 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
30355 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
30356 END DO
30357 END DO
30358 END DO
30359 s_offset_d1 = s_offset_d1 + 5
30360 END DO
30361 s_offset_c1 = s_offset_c1 + 3
30362 END DO
30363 s_offset_b1 = s_offset_b1 + 1
30364 END DO
30365 s_offset_a1 = s_offset_a1 + 3
30366 END DO
30367 END SUBROUTINE contract_pspd
30368#endif
30369#if __MAX_CONTR > 3 || __MAX_CONTR == 3
30370! **************************************************************************************************
30371!> \brief ...
30372!> \param work ...
30373!> \param nl_a ...
30374!> \param nl_b ...
30375!> \param nl_c ...
30376!> \param nl_d ...
30377!> \param sphi_a ...
30378!> \param sphi_b ...
30379!> \param sphi_c ...
30380!> \param sphi_d ...
30381!> \param primitives ...
30382!> \param buffer1 ...
30383!> \param buffer2 ...
30384! **************************************************************************************************
30385 SUBROUTINE contract_pspf(work, &
30386 nl_a, nl_b, nl_c, nl_d, &
30387 sphi_a, sphi_b, sphi_c, sphi_d, &
30388 primitives, &
30389 buffer1, buffer2)
30390 REAL(dp), DIMENSION(3*1*3*10), INTENT(IN) :: work
30391 INTEGER :: nl_a, nl_b, nl_c, nl_d
30392 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
30393 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
30394 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
30395 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
30396 REAL(dp), &
30397 DIMENSION(3*nl_a, 1*nl_b, 3*nl_c, 7*nl_d) :: primitives
30398 REAL(dp), DIMENSION(3*1*3*10) :: buffer1, buffer2
30399
30400 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
30401 kmax, s_offset_a1, s_offset_b1, &
30402 s_offset_c1, s_offset_d1
30403
30404 s_offset_a1 = 0
30405 DO ia = 1, nl_a
30406 s_offset_b1 = 0
30407 DO ib = 1, nl_b
30408 s_offset_c1 = 0
30409 DO ic = 1, nl_c
30410 s_offset_d1 = 0
30411 DO id = 1, nl_d
30412 buffer1 = 0.0_dp
30413 imax = 1*3*10
30414 kmax = 3
30415 DO i = 1, imax
30416 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
30417 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
30418 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
30419 END DO
30420 buffer2 = 0.0_dp
30421 imax = 3*3*10
30422 kmax = 1
30423 DO i = 1, imax
30424 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
30425 END DO
30426 buffer1 = 0.0_dp
30427 imax = 3*1*10
30428 kmax = 3
30429 DO i = 1, imax
30430 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
30431 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
30432 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
30433 END DO
30434 imax = 3*1*3
30435 kmax = 10
30436 i = 0
30437 DO i1 = 1, 3
30438 DO i2 = 1, 1
30439 DO i3 = 1, 3
30440 i = i + 1
30441 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
30442 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
30443 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
30444 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
30445 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
30446 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
30447 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
30448 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
30449 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
30450 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
30451 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
30452 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
30453 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
30454 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
30455 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
30456 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
30457 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
30458 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
30459 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
30460 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
30461 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
30462 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
30463 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
30464 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
30465 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
30466 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
30467 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
30468 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
30469 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
30470 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
30471 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
30472 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
30473 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
30474 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
30475 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
30476 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
30477 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
30478 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
30479 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
30480 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
30481 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
30482 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
30483 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
30484 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
30485 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
30486 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
30487 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
30488 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
30489 END DO
30490 END DO
30491 END DO
30492 s_offset_d1 = s_offset_d1 + 7
30493 END DO
30494 s_offset_c1 = s_offset_c1 + 3
30495 END DO
30496 s_offset_b1 = s_offset_b1 + 1
30497 END DO
30498 s_offset_a1 = s_offset_a1 + 3
30499 END DO
30500 END SUBROUTINE contract_pspf
30501#endif
30502#if __MAX_CONTR > 4 || __MAX_CONTR == 4
30503! **************************************************************************************************
30504!> \brief ...
30505!> \param work ...
30506!> \param nl_a ...
30507!> \param nl_b ...
30508!> \param nl_c ...
30509!> \param nl_d ...
30510!> \param sphi_a ...
30511!> \param sphi_b ...
30512!> \param sphi_c ...
30513!> \param sphi_d ...
30514!> \param primitives ...
30515!> \param buffer1 ...
30516!> \param buffer2 ...
30517! **************************************************************************************************
30518 SUBROUTINE contract_pspg(work, &
30519 nl_a, nl_b, nl_c, nl_d, &
30520 sphi_a, sphi_b, sphi_c, sphi_d, &
30521 primitives, &
30522 buffer1, buffer2)
30523 REAL(dp), DIMENSION(3*1*3*15), INTENT(IN) :: work
30524 INTEGER :: nl_a, nl_b, nl_c, nl_d
30525 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
30526 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
30527 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
30528 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
30529 REAL(dp), &
30530 DIMENSION(3*nl_a, 1*nl_b, 3*nl_c, 9*nl_d) :: primitives
30531 REAL(dp), DIMENSION(3*1*3*15) :: buffer1, buffer2
30532
30533 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
30534 kmax, s_offset_a1, s_offset_b1, &
30535 s_offset_c1, s_offset_d1
30536
30537 s_offset_a1 = 0
30538 DO ia = 1, nl_a
30539 s_offset_b1 = 0
30540 DO ib = 1, nl_b
30541 s_offset_c1 = 0
30542 DO ic = 1, nl_c
30543 s_offset_d1 = 0
30544 DO id = 1, nl_d
30545 buffer1 = 0.0_dp
30546 imax = 1*3*15
30547 kmax = 3
30548 DO i = 1, imax
30549 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
30550 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
30551 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
30552 END DO
30553 buffer2 = 0.0_dp
30554 imax = 3*3*15
30555 kmax = 1
30556 DO i = 1, imax
30557 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
30558 END DO
30559 buffer1 = 0.0_dp
30560 imax = 3*1*15
30561 kmax = 3
30562 DO i = 1, imax
30563 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
30564 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
30565 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
30566 END DO
30567 imax = 3*1*3
30568 kmax = 15
30569 i = 0
30570 DO i1 = 1, 3
30571 DO i2 = 1, 1
30572 DO i3 = 1, 3
30573 i = i + 1
30574 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
30575 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
30576 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
30577 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
30578 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
30579 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
30580 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
30581 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
30582 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
30583 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
30584 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
30585 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
30586 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
30587 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
30588 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
30589 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
30590 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
30591 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
30592 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
30593 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
30594 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
30595 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
30596 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
30597 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
30598 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
30599 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
30600 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
30601 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
30602 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
30603 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
30604 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
30605 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
30606 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
30607 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
30608 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
30609 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
30610 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
30611 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
30612 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
30613 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
30614 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
30615 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
30616 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
30617 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
30618 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
30619 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
30620 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
30621 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
30622 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
30623 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
30624 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
30625 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
30626 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
30627 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
30628 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
30629 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
30630 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
30631 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
30632 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
30633 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
30634 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
30635 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
30636 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
30637 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
30638 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
30639 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
30640 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
30641 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
30642 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
30643 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
30644 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
30645 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
30646 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
30647 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
30648 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
30649 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
30650 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
30651 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
30652 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
30653 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
30654 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
30655 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
30656 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
30657 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
30658 END DO
30659 END DO
30660 END DO
30661 s_offset_d1 = s_offset_d1 + 9
30662 END DO
30663 s_offset_c1 = s_offset_c1 + 3
30664 END DO
30665 s_offset_b1 = s_offset_b1 + 1
30666 END DO
30667 s_offset_a1 = s_offset_a1 + 3
30668 END DO
30669 END SUBROUTINE contract_pspg
30670#endif
30671#if __MAX_CONTR > 2 || __MAX_CONTR == 2
30672! **************************************************************************************************
30673!> \brief ...
30674!> \param work ...
30675!> \param nl_a ...
30676!> \param nl_b ...
30677!> \param nl_c ...
30678!> \param nl_d ...
30679!> \param sphi_a ...
30680!> \param sphi_b ...
30681!> \param sphi_c ...
30682!> \param sphi_d ...
30683!> \param primitives ...
30684!> \param buffer1 ...
30685!> \param buffer2 ...
30686! **************************************************************************************************
30687 SUBROUTINE contract_psds(work, &
30688 nl_a, nl_b, nl_c, nl_d, &
30689 sphi_a, sphi_b, sphi_c, sphi_d, &
30690 primitives, &
30691 buffer1, buffer2)
30692 REAL(dp), DIMENSION(3*1*6*1), INTENT(IN) :: work
30693 INTEGER :: nl_a, nl_b, nl_c, nl_d
30694 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
30695 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
30696 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
30697 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
30698 REAL(dp), &
30699 DIMENSION(3*nl_a, 1*nl_b, 5*nl_c, 1*nl_d) :: primitives
30700 REAL(dp), DIMENSION(3*1*6*1) :: buffer1, buffer2
30701
30702 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
30703 kmax, s_offset_a1, s_offset_b1, &
30704 s_offset_c1, s_offset_d1
30705
30706 s_offset_a1 = 0
30707 DO ia = 1, nl_a
30708 s_offset_b1 = 0
30709 DO ib = 1, nl_b
30710 s_offset_c1 = 0
30711 DO ic = 1, nl_c
30712 s_offset_d1 = 0
30713 DO id = 1, nl_d
30714 buffer1 = 0.0_dp
30715 imax = 1*6*1
30716 kmax = 3
30717 DO i = 1, imax
30718 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
30719 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
30720 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
30721 END DO
30722 buffer2 = 0.0_dp
30723 imax = 3*6*1
30724 kmax = 1
30725 DO i = 1, imax
30726 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
30727 END DO
30728 buffer1 = 0.0_dp
30729 imax = 3*1*1
30730 kmax = 6
30731 DO i = 1, imax
30732 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
30733 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
30734 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
30735 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
30736 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
30737 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
30738 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
30739 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
30740 END DO
30741 imax = 3*1*5
30742 kmax = 1
30743 i = 0
30744 DO i1 = 1, 5
30745 DO i2 = 1, 1
30746 DO i3 = 1, 3
30747 i = i + 1
30748 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
30749 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
30750 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
30751 END DO
30752 END DO
30753 END DO
30754 s_offset_d1 = s_offset_d1 + 1
30755 END DO
30756 s_offset_c1 = s_offset_c1 + 5
30757 END DO
30758 s_offset_b1 = s_offset_b1 + 1
30759 END DO
30760 s_offset_a1 = s_offset_a1 + 3
30761 END DO
30762 END SUBROUTINE contract_psds
30763#endif
30764#if __MAX_CONTR > 2 || __MAX_CONTR == 2
30765! **************************************************************************************************
30766!> \brief ...
30767!> \param work ...
30768!> \param nl_a ...
30769!> \param nl_b ...
30770!> \param nl_c ...
30771!> \param nl_d ...
30772!> \param sphi_a ...
30773!> \param sphi_b ...
30774!> \param sphi_c ...
30775!> \param sphi_d ...
30776!> \param primitives ...
30777!> \param buffer1 ...
30778!> \param buffer2 ...
30779! **************************************************************************************************
30780 SUBROUTINE contract_psdp(work, &
30781 nl_a, nl_b, nl_c, nl_d, &
30782 sphi_a, sphi_b, sphi_c, sphi_d, &
30783 primitives, &
30784 buffer1, buffer2)
30785 REAL(dp), DIMENSION(3*1*6*3), INTENT(IN) :: work
30786 INTEGER :: nl_a, nl_b, nl_c, nl_d
30787 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
30788 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
30789 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
30790 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
30791 REAL(dp), &
30792 DIMENSION(3*nl_a, 1*nl_b, 5*nl_c, 3*nl_d) :: primitives
30793 REAL(dp), DIMENSION(3*1*6*3) :: buffer1, buffer2
30794
30795 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
30796 kmax, s_offset_a1, s_offset_b1, &
30797 s_offset_c1, s_offset_d1
30798
30799 s_offset_a1 = 0
30800 DO ia = 1, nl_a
30801 s_offset_b1 = 0
30802 DO ib = 1, nl_b
30803 s_offset_c1 = 0
30804 DO ic = 1, nl_c
30805 s_offset_d1 = 0
30806 DO id = 1, nl_d
30807 buffer1 = 0.0_dp
30808 imax = 1*6*3
30809 kmax = 3
30810 DO i = 1, imax
30811 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
30812 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
30813 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
30814 END DO
30815 buffer2 = 0.0_dp
30816 imax = 3*6*3
30817 kmax = 1
30818 DO i = 1, imax
30819 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
30820 END DO
30821 buffer1 = 0.0_dp
30822 imax = 3*1*3
30823 kmax = 6
30824 DO i = 1, imax
30825 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
30826 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
30827 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
30828 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
30829 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
30830 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
30831 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
30832 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
30833 END DO
30834 imax = 3*1*5
30835 kmax = 3
30836 i = 0
30837 DO i1 = 1, 5
30838 DO i2 = 1, 1
30839 DO i3 = 1, 3
30840 i = i + 1
30841 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
30842 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
30843 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
30844 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
30845 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
30846 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
30847 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
30848 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
30849 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
30850 END DO
30851 END DO
30852 END DO
30853 s_offset_d1 = s_offset_d1 + 3
30854 END DO
30855 s_offset_c1 = s_offset_c1 + 5
30856 END DO
30857 s_offset_b1 = s_offset_b1 + 1
30858 END DO
30859 s_offset_a1 = s_offset_a1 + 3
30860 END DO
30861 END SUBROUTINE contract_psdp
30862#endif
30863#if __MAX_CONTR > 2 || __MAX_CONTR == 2
30864! **************************************************************************************************
30865!> \brief ...
30866!> \param work ...
30867!> \param nl_a ...
30868!> \param nl_b ...
30869!> \param nl_c ...
30870!> \param nl_d ...
30871!> \param sphi_a ...
30872!> \param sphi_b ...
30873!> \param sphi_c ...
30874!> \param sphi_d ...
30875!> \param primitives ...
30876!> \param buffer1 ...
30877!> \param buffer2 ...
30878! **************************************************************************************************
30879 SUBROUTINE contract_psdd(work, &
30880 nl_a, nl_b, nl_c, nl_d, &
30881 sphi_a, sphi_b, sphi_c, sphi_d, &
30882 primitives, &
30883 buffer1, buffer2)
30884 REAL(dp), DIMENSION(3*1*6*6), INTENT(IN) :: work
30885 INTEGER :: nl_a, nl_b, nl_c, nl_d
30886 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
30887 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
30888 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
30889 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
30890 REAL(dp), &
30891 DIMENSION(3*nl_a, 1*nl_b, 5*nl_c, 5*nl_d) :: primitives
30892 REAL(dp), DIMENSION(3*1*6*6) :: buffer1, buffer2
30893
30894 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
30895 kmax, s_offset_a1, s_offset_b1, &
30896 s_offset_c1, s_offset_d1
30897
30898 s_offset_a1 = 0
30899 DO ia = 1, nl_a
30900 s_offset_b1 = 0
30901 DO ib = 1, nl_b
30902 s_offset_c1 = 0
30903 DO ic = 1, nl_c
30904 s_offset_d1 = 0
30905 DO id = 1, nl_d
30906 buffer1 = 0.0_dp
30907 imax = 1*6*6
30908 kmax = 3
30909 DO i = 1, imax
30910 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
30911 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
30912 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
30913 END DO
30914 buffer2 = 0.0_dp
30915 imax = 3*6*6
30916 kmax = 1
30917 DO i = 1, imax
30918 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
30919 END DO
30920 buffer1 = 0.0_dp
30921 imax = 3*1*6
30922 kmax = 6
30923 DO i = 1, imax
30924 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
30925 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
30926 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
30927 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
30928 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
30929 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
30930 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
30931 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
30932 END DO
30933 imax = 3*1*5
30934 kmax = 6
30935 i = 0
30936 DO i1 = 1, 5
30937 DO i2 = 1, 1
30938 DO i3 = 1, 3
30939 i = i + 1
30940 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
30941 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
30942 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
30943 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
30944 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
30945 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
30946 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
30947 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
30948 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
30949 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
30950 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
30951 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
30952 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
30953 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
30954 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
30955 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
30956 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
30957 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
30958 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
30959 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
30960 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
30961 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
30962 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
30963 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
30964 END DO
30965 END DO
30966 END DO
30967 s_offset_d1 = s_offset_d1 + 5
30968 END DO
30969 s_offset_c1 = s_offset_c1 + 5
30970 END DO
30971 s_offset_b1 = s_offset_b1 + 1
30972 END DO
30973 s_offset_a1 = s_offset_a1 + 3
30974 END DO
30975 END SUBROUTINE contract_psdd
30976#endif
30977#if __MAX_CONTR > 3 || __MAX_CONTR == 3
30978! **************************************************************************************************
30979!> \brief ...
30980!> \param work ...
30981!> \param nl_a ...
30982!> \param nl_b ...
30983!> \param nl_c ...
30984!> \param nl_d ...
30985!> \param sphi_a ...
30986!> \param sphi_b ...
30987!> \param sphi_c ...
30988!> \param sphi_d ...
30989!> \param primitives ...
30990!> \param buffer1 ...
30991!> \param buffer2 ...
30992! **************************************************************************************************
30993 SUBROUTINE contract_psdf(work, &
30994 nl_a, nl_b, nl_c, nl_d, &
30995 sphi_a, sphi_b, sphi_c, sphi_d, &
30996 primitives, &
30997 buffer1, buffer2)
30998 REAL(dp), DIMENSION(3*1*6*10), INTENT(IN) :: work
30999 INTEGER :: nl_a, nl_b, nl_c, nl_d
31000 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
31001 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
31002 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
31003 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
31004 REAL(dp), &
31005 DIMENSION(3*nl_a, 1*nl_b, 5*nl_c, 7*nl_d) :: primitives
31006 REAL(dp), DIMENSION(3*1*6*10) :: buffer1, buffer2
31007
31008 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
31009 kmax, s_offset_a1, s_offset_b1, &
31010 s_offset_c1, s_offset_d1
31011
31012 s_offset_a1 = 0
31013 DO ia = 1, nl_a
31014 s_offset_b1 = 0
31015 DO ib = 1, nl_b
31016 s_offset_c1 = 0
31017 DO ic = 1, nl_c
31018 s_offset_d1 = 0
31019 DO id = 1, nl_d
31020 buffer1 = 0.0_dp
31021 imax = 1*6*10
31022 kmax = 3
31023 DO i = 1, imax
31024 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
31025 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
31026 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
31027 END DO
31028 buffer2 = 0.0_dp
31029 imax = 3*6*10
31030 kmax = 1
31031 DO i = 1, imax
31032 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
31033 END DO
31034 buffer1 = 0.0_dp
31035 imax = 3*1*10
31036 kmax = 6
31037 DO i = 1, imax
31038 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
31039 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
31040 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
31041 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
31042 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
31043 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
31044 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
31045 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
31046 END DO
31047 imax = 3*1*5
31048 kmax = 10
31049 i = 0
31050 DO i1 = 1, 5
31051 DO i2 = 1, 1
31052 DO i3 = 1, 3
31053 i = i + 1
31054 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
31055 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
31056 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
31057 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
31058 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
31059 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
31060 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
31061 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
31062 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
31063 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
31064 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
31065 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
31066 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
31067 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
31068 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
31069 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
31070 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
31071 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
31072 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
31073 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
31074 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
31075 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
31076 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
31077 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
31078 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
31079 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
31080 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
31081 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
31082 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
31083 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
31084 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
31085 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
31086 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
31087 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
31088 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
31089 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
31090 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
31091 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
31092 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
31093 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
31094 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
31095 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
31096 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
31097 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
31098 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
31099 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
31100 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
31101 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
31102 END DO
31103 END DO
31104 END DO
31105 s_offset_d1 = s_offset_d1 + 7
31106 END DO
31107 s_offset_c1 = s_offset_c1 + 5
31108 END DO
31109 s_offset_b1 = s_offset_b1 + 1
31110 END DO
31111 s_offset_a1 = s_offset_a1 + 3
31112 END DO
31113 END SUBROUTINE contract_psdf
31114#endif
31115#if __MAX_CONTR > 4 || __MAX_CONTR == 4
31116! **************************************************************************************************
31117!> \brief ...
31118!> \param work ...
31119!> \param nl_a ...
31120!> \param nl_b ...
31121!> \param nl_c ...
31122!> \param nl_d ...
31123!> \param sphi_a ...
31124!> \param sphi_b ...
31125!> \param sphi_c ...
31126!> \param sphi_d ...
31127!> \param primitives ...
31128!> \param buffer1 ...
31129!> \param buffer2 ...
31130! **************************************************************************************************
31131 SUBROUTINE contract_psdg(work, &
31132 nl_a, nl_b, nl_c, nl_d, &
31133 sphi_a, sphi_b, sphi_c, sphi_d, &
31134 primitives, &
31135 buffer1, buffer2)
31136 REAL(dp), DIMENSION(3*1*6*15), INTENT(IN) :: work
31137 INTEGER :: nl_a, nl_b, nl_c, nl_d
31138 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
31139 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
31140 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
31141 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
31142 REAL(dp), &
31143 DIMENSION(3*nl_a, 1*nl_b, 5*nl_c, 9*nl_d) :: primitives
31144 REAL(dp), DIMENSION(3*1*6*15) :: buffer1, buffer2
31145
31146 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
31147 kmax, s_offset_a1, s_offset_b1, &
31148 s_offset_c1, s_offset_d1
31149
31150 s_offset_a1 = 0
31151 DO ia = 1, nl_a
31152 s_offset_b1 = 0
31153 DO ib = 1, nl_b
31154 s_offset_c1 = 0
31155 DO ic = 1, nl_c
31156 s_offset_d1 = 0
31157 DO id = 1, nl_d
31158 buffer1 = 0.0_dp
31159 imax = 1*6*15
31160 kmax = 3
31161 DO i = 1, imax
31162 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
31163 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
31164 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
31165 END DO
31166 buffer2 = 0.0_dp
31167 imax = 3*6*15
31168 kmax = 1
31169 DO i = 1, imax
31170 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
31171 END DO
31172 buffer1 = 0.0_dp
31173 imax = 3*1*15
31174 kmax = 6
31175 DO i = 1, imax
31176 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
31177 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
31178 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
31179 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
31180 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
31181 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
31182 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
31183 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
31184 END DO
31185 imax = 3*1*5
31186 kmax = 15
31187 i = 0
31188 DO i1 = 1, 5
31189 DO i2 = 1, 1
31190 DO i3 = 1, 3
31191 i = i + 1
31192 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
31193 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
31194 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
31195 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
31196 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
31197 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
31198 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
31199 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
31200 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
31201 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
31202 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
31203 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
31204 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
31205 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
31206 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
31207 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
31208 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
31209 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
31210 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
31211 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
31212 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
31213 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
31214 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
31215 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
31216 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
31217 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
31218 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
31219 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
31220 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
31221 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
31222 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
31223 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
31224 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
31225 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
31226 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
31227 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
31228 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
31229 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
31230 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
31231 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
31232 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
31233 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
31234 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
31235 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
31236 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
31237 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
31238 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
31239 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
31240 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
31241 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
31242 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
31243 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
31244 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
31245 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
31246 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
31247 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
31248 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
31249 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
31250 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
31251 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
31252 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
31253 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
31254 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
31255 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
31256 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
31257 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
31258 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
31259 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
31260 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
31261 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
31262 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
31263 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
31264 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
31265 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
31266 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
31267 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
31268 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
31269 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
31270 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
31271 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
31272 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
31273 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
31274 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
31275 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
31276 END DO
31277 END DO
31278 END DO
31279 s_offset_d1 = s_offset_d1 + 9
31280 END DO
31281 s_offset_c1 = s_offset_c1 + 5
31282 END DO
31283 s_offset_b1 = s_offset_b1 + 1
31284 END DO
31285 s_offset_a1 = s_offset_a1 + 3
31286 END DO
31287 END SUBROUTINE contract_psdg
31288#endif
31289#if __MAX_CONTR > 3 || __MAX_CONTR == 3
31290! **************************************************************************************************
31291!> \brief ...
31292!> \param work ...
31293!> \param nl_a ...
31294!> \param nl_b ...
31295!> \param nl_c ...
31296!> \param nl_d ...
31297!> \param sphi_a ...
31298!> \param sphi_b ...
31299!> \param sphi_c ...
31300!> \param sphi_d ...
31301!> \param primitives ...
31302!> \param buffer1 ...
31303!> \param buffer2 ...
31304! **************************************************************************************************
31305 SUBROUTINE contract_psfs(work, &
31306 nl_a, nl_b, nl_c, nl_d, &
31307 sphi_a, sphi_b, sphi_c, sphi_d, &
31308 primitives, &
31309 buffer1, buffer2)
31310 REAL(dp), DIMENSION(3*1*10*1), INTENT(IN) :: work
31311 INTEGER :: nl_a, nl_b, nl_c, nl_d
31312 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
31313 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
31314 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
31315 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
31316 REAL(dp), &
31317 DIMENSION(3*nl_a, 1*nl_b, 7*nl_c, 1*nl_d) :: primitives
31318 REAL(dp), DIMENSION(3*1*10*1) :: buffer1, buffer2
31319
31320 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
31321 kmax, s_offset_a1, s_offset_b1, &
31322 s_offset_c1, s_offset_d1
31323
31324 s_offset_a1 = 0
31325 DO ia = 1, nl_a
31326 s_offset_b1 = 0
31327 DO ib = 1, nl_b
31328 s_offset_c1 = 0
31329 DO ic = 1, nl_c
31330 s_offset_d1 = 0
31331 DO id = 1, nl_d
31332 buffer1 = 0.0_dp
31333 imax = 1*10*1
31334 kmax = 3
31335 DO i = 1, imax
31336 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
31337 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
31338 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
31339 END DO
31340 buffer2 = 0.0_dp
31341 imax = 3*10*1
31342 kmax = 1
31343 DO i = 1, imax
31344 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
31345 END DO
31346 buffer1 = 0.0_dp
31347 imax = 3*1*1
31348 kmax = 10
31349 DO i = 1, imax
31350 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
31351 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
31352 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
31353 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
31354 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
31355 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
31356 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
31357 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
31358 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
31359 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
31360 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
31361 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
31362 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
31363 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
31364 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
31365 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
31366 END DO
31367 imax = 3*1*7
31368 kmax = 1
31369 i = 0
31370 DO i1 = 1, 7
31371 DO i2 = 1, 1
31372 DO i3 = 1, 3
31373 i = i + 1
31374 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
31375 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
31376 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
31377 END DO
31378 END DO
31379 END DO
31380 s_offset_d1 = s_offset_d1 + 1
31381 END DO
31382 s_offset_c1 = s_offset_c1 + 7
31383 END DO
31384 s_offset_b1 = s_offset_b1 + 1
31385 END DO
31386 s_offset_a1 = s_offset_a1 + 3
31387 END DO
31388 END SUBROUTINE contract_psfs
31389#endif
31390#if __MAX_CONTR > 3 || __MAX_CONTR == 3
31391! **************************************************************************************************
31392!> \brief ...
31393!> \param work ...
31394!> \param nl_a ...
31395!> \param nl_b ...
31396!> \param nl_c ...
31397!> \param nl_d ...
31398!> \param sphi_a ...
31399!> \param sphi_b ...
31400!> \param sphi_c ...
31401!> \param sphi_d ...
31402!> \param primitives ...
31403!> \param buffer1 ...
31404!> \param buffer2 ...
31405! **************************************************************************************************
31406 SUBROUTINE contract_psfp(work, &
31407 nl_a, nl_b, nl_c, nl_d, &
31408 sphi_a, sphi_b, sphi_c, sphi_d, &
31409 primitives, &
31410 buffer1, buffer2)
31411 REAL(dp), DIMENSION(3*1*10*3), INTENT(IN) :: work
31412 INTEGER :: nl_a, nl_b, nl_c, nl_d
31413 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
31414 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
31415 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
31416 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
31417 REAL(dp), &
31418 DIMENSION(3*nl_a, 1*nl_b, 7*nl_c, 3*nl_d) :: primitives
31419 REAL(dp), DIMENSION(3*1*10*3) :: buffer1, buffer2
31420
31421 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
31422 kmax, s_offset_a1, s_offset_b1, &
31423 s_offset_c1, s_offset_d1
31424
31425 s_offset_a1 = 0
31426 DO ia = 1, nl_a
31427 s_offset_b1 = 0
31428 DO ib = 1, nl_b
31429 s_offset_c1 = 0
31430 DO ic = 1, nl_c
31431 s_offset_d1 = 0
31432 DO id = 1, nl_d
31433 buffer1 = 0.0_dp
31434 imax = 1*10*3
31435 kmax = 3
31436 DO i = 1, imax
31437 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
31438 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
31439 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
31440 END DO
31441 buffer2 = 0.0_dp
31442 imax = 3*10*3
31443 kmax = 1
31444 DO i = 1, imax
31445 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
31446 END DO
31447 buffer1 = 0.0_dp
31448 imax = 3*1*3
31449 kmax = 10
31450 DO i = 1, imax
31451 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
31452 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
31453 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
31454 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
31455 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
31456 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
31457 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
31458 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
31459 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
31460 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
31461 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
31462 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
31463 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
31464 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
31465 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
31466 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
31467 END DO
31468 imax = 3*1*7
31469 kmax = 3
31470 i = 0
31471 DO i1 = 1, 7
31472 DO i2 = 1, 1
31473 DO i3 = 1, 3
31474 i = i + 1
31475 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
31476 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
31477 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
31478 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
31479 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
31480 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
31481 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
31482 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
31483 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
31484 END DO
31485 END DO
31486 END DO
31487 s_offset_d1 = s_offset_d1 + 3
31488 END DO
31489 s_offset_c1 = s_offset_c1 + 7
31490 END DO
31491 s_offset_b1 = s_offset_b1 + 1
31492 END DO
31493 s_offset_a1 = s_offset_a1 + 3
31494 END DO
31495 END SUBROUTINE contract_psfp
31496#endif
31497#if __MAX_CONTR > 3 || __MAX_CONTR == 3
31498! **************************************************************************************************
31499!> \brief ...
31500!> \param work ...
31501!> \param nl_a ...
31502!> \param nl_b ...
31503!> \param nl_c ...
31504!> \param nl_d ...
31505!> \param sphi_a ...
31506!> \param sphi_b ...
31507!> \param sphi_c ...
31508!> \param sphi_d ...
31509!> \param primitives ...
31510!> \param buffer1 ...
31511!> \param buffer2 ...
31512! **************************************************************************************************
31513 SUBROUTINE contract_psfd(work, &
31514 nl_a, nl_b, nl_c, nl_d, &
31515 sphi_a, sphi_b, sphi_c, sphi_d, &
31516 primitives, &
31517 buffer1, buffer2)
31518 REAL(dp), DIMENSION(3*1*10*6), INTENT(IN) :: work
31519 INTEGER :: nl_a, nl_b, nl_c, nl_d
31520 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
31521 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
31522 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
31523 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
31524 REAL(dp), &
31525 DIMENSION(3*nl_a, 1*nl_b, 7*nl_c, 5*nl_d) :: primitives
31526 REAL(dp), DIMENSION(3*1*10*6) :: buffer1, buffer2
31527
31528 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
31529 kmax, s_offset_a1, s_offset_b1, &
31530 s_offset_c1, s_offset_d1
31531
31532 s_offset_a1 = 0
31533 DO ia = 1, nl_a
31534 s_offset_b1 = 0
31535 DO ib = 1, nl_b
31536 s_offset_c1 = 0
31537 DO ic = 1, nl_c
31538 s_offset_d1 = 0
31539 DO id = 1, nl_d
31540 buffer1 = 0.0_dp
31541 imax = 1*10*6
31542 kmax = 3
31543 DO i = 1, imax
31544 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
31545 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
31546 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
31547 END DO
31548 buffer2 = 0.0_dp
31549 imax = 3*10*6
31550 kmax = 1
31551 DO i = 1, imax
31552 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
31553 END DO
31554 buffer1 = 0.0_dp
31555 imax = 3*1*6
31556 kmax = 10
31557 DO i = 1, imax
31558 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
31559 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
31560 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
31561 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
31562 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
31563 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
31564 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
31565 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
31566 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
31567 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
31568 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
31569 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
31570 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
31571 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
31572 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
31573 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
31574 END DO
31575 imax = 3*1*7
31576 kmax = 6
31577 i = 0
31578 DO i1 = 1, 7
31579 DO i2 = 1, 1
31580 DO i3 = 1, 3
31581 i = i + 1
31582 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
31583 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
31584 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
31585 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
31586 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
31587 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
31588 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
31589 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
31590 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
31591 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
31592 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
31593 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
31594 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
31595 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
31596 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
31597 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
31598 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
31599 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
31600 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
31601 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
31602 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
31603 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
31604 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
31605 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
31606 END DO
31607 END DO
31608 END DO
31609 s_offset_d1 = s_offset_d1 + 5
31610 END DO
31611 s_offset_c1 = s_offset_c1 + 7
31612 END DO
31613 s_offset_b1 = s_offset_b1 + 1
31614 END DO
31615 s_offset_a1 = s_offset_a1 + 3
31616 END DO
31617 END SUBROUTINE contract_psfd
31618#endif
31619#if __MAX_CONTR > 3 || __MAX_CONTR == 3
31620! **************************************************************************************************
31621!> \brief ...
31622!> \param work ...
31623!> \param nl_a ...
31624!> \param nl_b ...
31625!> \param nl_c ...
31626!> \param nl_d ...
31627!> \param sphi_a ...
31628!> \param sphi_b ...
31629!> \param sphi_c ...
31630!> \param sphi_d ...
31631!> \param primitives ...
31632!> \param buffer1 ...
31633!> \param buffer2 ...
31634! **************************************************************************************************
31635 SUBROUTINE contract_psff(work, &
31636 nl_a, nl_b, nl_c, nl_d, &
31637 sphi_a, sphi_b, sphi_c, sphi_d, &
31638 primitives, &
31639 buffer1, buffer2)
31640 REAL(dp), DIMENSION(3*1*10*10), INTENT(IN) :: work
31641 INTEGER :: nl_a, nl_b, nl_c, nl_d
31642 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
31643 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
31644 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
31645 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
31646 REAL(dp), &
31647 DIMENSION(3*nl_a, 1*nl_b, 7*nl_c, 7*nl_d) :: primitives
31648 REAL(dp), DIMENSION(3*1*10*10) :: buffer1, buffer2
31649
31650 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
31651 kmax, s_offset_a1, s_offset_b1, &
31652 s_offset_c1, s_offset_d1
31653
31654 s_offset_a1 = 0
31655 DO ia = 1, nl_a
31656 s_offset_b1 = 0
31657 DO ib = 1, nl_b
31658 s_offset_c1 = 0
31659 DO ic = 1, nl_c
31660 s_offset_d1 = 0
31661 DO id = 1, nl_d
31662 buffer1 = 0.0_dp
31663 imax = 1*10*10
31664 kmax = 3
31665 DO i = 1, imax
31666 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
31667 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
31668 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
31669 END DO
31670 buffer2 = 0.0_dp
31671 imax = 3*10*10
31672 kmax = 1
31673 DO i = 1, imax
31674 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
31675 END DO
31676 buffer1 = 0.0_dp
31677 imax = 3*1*10
31678 kmax = 10
31679 DO i = 1, imax
31680 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
31681 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
31682 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
31683 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
31684 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
31685 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
31686 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
31687 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
31688 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
31689 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
31690 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
31691 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
31692 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
31693 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
31694 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
31695 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
31696 END DO
31697 imax = 3*1*7
31698 kmax = 10
31699 i = 0
31700 DO i1 = 1, 7
31701 DO i2 = 1, 1
31702 DO i3 = 1, 3
31703 i = i + 1
31704 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
31705 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
31706 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
31707 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
31708 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
31709 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
31710 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
31711 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
31712 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
31713 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
31714 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
31715 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
31716 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
31717 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
31718 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
31719 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
31720 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
31721 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
31722 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
31723 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
31724 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
31725 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
31726 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
31727 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
31728 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
31729 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
31730 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
31731 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
31732 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
31733 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
31734 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
31735 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
31736 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
31737 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
31738 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
31739 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
31740 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
31741 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
31742 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
31743 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
31744 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
31745 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
31746 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
31747 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
31748 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
31749 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
31750 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
31751 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
31752 END DO
31753 END DO
31754 END DO
31755 s_offset_d1 = s_offset_d1 + 7
31756 END DO
31757 s_offset_c1 = s_offset_c1 + 7
31758 END DO
31759 s_offset_b1 = s_offset_b1 + 1
31760 END DO
31761 s_offset_a1 = s_offset_a1 + 3
31762 END DO
31763 END SUBROUTINE contract_psff
31764#endif
31765#if __MAX_CONTR > 4 || __MAX_CONTR == 4
31766! **************************************************************************************************
31767!> \brief ...
31768!> \param work ...
31769!> \param nl_a ...
31770!> \param nl_b ...
31771!> \param nl_c ...
31772!> \param nl_d ...
31773!> \param sphi_a ...
31774!> \param sphi_b ...
31775!> \param sphi_c ...
31776!> \param sphi_d ...
31777!> \param primitives ...
31778!> \param buffer1 ...
31779!> \param buffer2 ...
31780! **************************************************************************************************
31781 SUBROUTINE contract_psfg(work, &
31782 nl_a, nl_b, nl_c, nl_d, &
31783 sphi_a, sphi_b, sphi_c, sphi_d, &
31784 primitives, &
31785 buffer1, buffer2)
31786 REAL(dp), DIMENSION(3*1*10*15), INTENT(IN) :: work
31787 INTEGER :: nl_a, nl_b, nl_c, nl_d
31788 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
31789 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
31790 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
31791 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
31792 REAL(dp), &
31793 DIMENSION(3*nl_a, 1*nl_b, 7*nl_c, 9*nl_d) :: primitives
31794 REAL(dp), DIMENSION(3*1*10*15) :: buffer1, buffer2
31795
31796 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
31797 kmax, s_offset_a1, s_offset_b1, &
31798 s_offset_c1, s_offset_d1
31799
31800 s_offset_a1 = 0
31801 DO ia = 1, nl_a
31802 s_offset_b1 = 0
31803 DO ib = 1, nl_b
31804 s_offset_c1 = 0
31805 DO ic = 1, nl_c
31806 s_offset_d1 = 0
31807 DO id = 1, nl_d
31808 buffer1 = 0.0_dp
31809 imax = 1*10*15
31810 kmax = 3
31811 DO i = 1, imax
31812 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
31813 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
31814 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
31815 END DO
31816 buffer2 = 0.0_dp
31817 imax = 3*10*15
31818 kmax = 1
31819 DO i = 1, imax
31820 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
31821 END DO
31822 buffer1 = 0.0_dp
31823 imax = 3*1*15
31824 kmax = 10
31825 DO i = 1, imax
31826 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
31827 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
31828 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
31829 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
31830 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
31831 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
31832 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
31833 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
31834 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
31835 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
31836 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
31837 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
31838 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
31839 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
31840 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
31841 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
31842 END DO
31843 imax = 3*1*7
31844 kmax = 15
31845 i = 0
31846 DO i1 = 1, 7
31847 DO i2 = 1, 1
31848 DO i3 = 1, 3
31849 i = i + 1
31850 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
31851 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
31852 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
31853 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
31854 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
31855 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
31856 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
31857 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
31858 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
31859 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
31860 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
31861 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
31862 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
31863 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
31864 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
31865 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
31866 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
31867 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
31868 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
31869 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
31870 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
31871 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
31872 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
31873 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
31874 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
31875 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
31876 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
31877 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
31878 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
31879 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
31880 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
31881 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
31882 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
31883 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
31884 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
31885 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
31886 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
31887 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
31888 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
31889 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
31890 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
31891 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
31892 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
31893 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
31894 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
31895 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
31896 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
31897 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
31898 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
31899 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
31900 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
31901 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
31902 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
31903 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
31904 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
31905 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
31906 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
31907 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
31908 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
31909 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
31910 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
31911 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
31912 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
31913 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
31914 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
31915 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
31916 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
31917 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
31918 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
31919 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
31920 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
31921 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
31922 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
31923 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
31924 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
31925 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
31926 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
31927 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
31928 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
31929 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
31930 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
31931 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
31932 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
31933 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
31934 END DO
31935 END DO
31936 END DO
31937 s_offset_d1 = s_offset_d1 + 9
31938 END DO
31939 s_offset_c1 = s_offset_c1 + 7
31940 END DO
31941 s_offset_b1 = s_offset_b1 + 1
31942 END DO
31943 s_offset_a1 = s_offset_a1 + 3
31944 END DO
31945 END SUBROUTINE contract_psfg
31946#endif
31947#if __MAX_CONTR > 4 || __MAX_CONTR == 4
31948! **************************************************************************************************
31949!> \brief ...
31950!> \param work ...
31951!> \param nl_a ...
31952!> \param nl_b ...
31953!> \param nl_c ...
31954!> \param nl_d ...
31955!> \param sphi_a ...
31956!> \param sphi_b ...
31957!> \param sphi_c ...
31958!> \param sphi_d ...
31959!> \param primitives ...
31960!> \param buffer1 ...
31961!> \param buffer2 ...
31962! **************************************************************************************************
31963 SUBROUTINE contract_psgs(work, &
31964 nl_a, nl_b, nl_c, nl_d, &
31965 sphi_a, sphi_b, sphi_c, sphi_d, &
31966 primitives, &
31967 buffer1, buffer2)
31968 REAL(dp), DIMENSION(3*1*15*1), INTENT(IN) :: work
31969 INTEGER :: nl_a, nl_b, nl_c, nl_d
31970 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
31971 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
31972 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
31973 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
31974 REAL(dp), &
31975 DIMENSION(3*nl_a, 1*nl_b, 9*nl_c, 1*nl_d) :: primitives
31976 REAL(dp), DIMENSION(3*1*15*1) :: buffer1, buffer2
31977
31978 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
31979 kmax, s_offset_a1, s_offset_b1, &
31980 s_offset_c1, s_offset_d1
31981
31982 s_offset_a1 = 0
31983 DO ia = 1, nl_a
31984 s_offset_b1 = 0
31985 DO ib = 1, nl_b
31986 s_offset_c1 = 0
31987 DO ic = 1, nl_c
31988 s_offset_d1 = 0
31989 DO id = 1, nl_d
31990 buffer1 = 0.0_dp
31991 imax = 1*15*1
31992 kmax = 3
31993 DO i = 1, imax
31994 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
31995 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
31996 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
31997 END DO
31998 buffer2 = 0.0_dp
31999 imax = 3*15*1
32000 kmax = 1
32001 DO i = 1, imax
32002 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
32003 END DO
32004 buffer1 = 0.0_dp
32005 imax = 3*1*1
32006 kmax = 15
32007 DO i = 1, imax
32008 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
32009 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
32010 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
32011 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
32012 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
32013 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
32014 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
32015 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
32016 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
32017 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
32018 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
32019 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
32020 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
32021 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
32022 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
32023 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
32024 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
32025 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
32026 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
32027 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
32028 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
32029 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
32030 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
32031 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
32032 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
32033 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
32034 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
32035 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
32036 END DO
32037 imax = 3*1*9
32038 kmax = 1
32039 i = 0
32040 DO i1 = 1, 9
32041 DO i2 = 1, 1
32042 DO i3 = 1, 3
32043 i = i + 1
32044 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
32045 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
32046 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
32047 END DO
32048 END DO
32049 END DO
32050 s_offset_d1 = s_offset_d1 + 1
32051 END DO
32052 s_offset_c1 = s_offset_c1 + 9
32053 END DO
32054 s_offset_b1 = s_offset_b1 + 1
32055 END DO
32056 s_offset_a1 = s_offset_a1 + 3
32057 END DO
32058 END SUBROUTINE contract_psgs
32059#endif
32060#if __MAX_CONTR > 4 || __MAX_CONTR == 4
32061! **************************************************************************************************
32062!> \brief ...
32063!> \param work ...
32064!> \param nl_a ...
32065!> \param nl_b ...
32066!> \param nl_c ...
32067!> \param nl_d ...
32068!> \param sphi_a ...
32069!> \param sphi_b ...
32070!> \param sphi_c ...
32071!> \param sphi_d ...
32072!> \param primitives ...
32073!> \param buffer1 ...
32074!> \param buffer2 ...
32075! **************************************************************************************************
32076 SUBROUTINE contract_psgp(work, &
32077 nl_a, nl_b, nl_c, nl_d, &
32078 sphi_a, sphi_b, sphi_c, sphi_d, &
32079 primitives, &
32080 buffer1, buffer2)
32081 REAL(dp), DIMENSION(3*1*15*3), INTENT(IN) :: work
32082 INTEGER :: nl_a, nl_b, nl_c, nl_d
32083 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
32084 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
32085 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
32086 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
32087 REAL(dp), &
32088 DIMENSION(3*nl_a, 1*nl_b, 9*nl_c, 3*nl_d) :: primitives
32089 REAL(dp), DIMENSION(3*1*15*3) :: buffer1, buffer2
32090
32091 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
32092 kmax, s_offset_a1, s_offset_b1, &
32093 s_offset_c1, s_offset_d1
32094
32095 s_offset_a1 = 0
32096 DO ia = 1, nl_a
32097 s_offset_b1 = 0
32098 DO ib = 1, nl_b
32099 s_offset_c1 = 0
32100 DO ic = 1, nl_c
32101 s_offset_d1 = 0
32102 DO id = 1, nl_d
32103 buffer1 = 0.0_dp
32104 imax = 1*15*3
32105 kmax = 3
32106 DO i = 1, imax
32107 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
32108 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
32109 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
32110 END DO
32111 buffer2 = 0.0_dp
32112 imax = 3*15*3
32113 kmax = 1
32114 DO i = 1, imax
32115 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
32116 END DO
32117 buffer1 = 0.0_dp
32118 imax = 3*1*3
32119 kmax = 15
32120 DO i = 1, imax
32121 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
32122 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
32123 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
32124 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
32125 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
32126 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
32127 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
32128 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
32129 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
32130 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
32131 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
32132 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
32133 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
32134 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
32135 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
32136 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
32137 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
32138 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
32139 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
32140 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
32141 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
32142 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
32143 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
32144 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
32145 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
32146 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
32147 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
32148 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
32149 END DO
32150 imax = 3*1*9
32151 kmax = 3
32152 i = 0
32153 DO i1 = 1, 9
32154 DO i2 = 1, 1
32155 DO i3 = 1, 3
32156 i = i + 1
32157 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
32158 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
32159 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
32160 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
32161 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
32162 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
32163 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
32164 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
32165 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
32166 END DO
32167 END DO
32168 END DO
32169 s_offset_d1 = s_offset_d1 + 3
32170 END DO
32171 s_offset_c1 = s_offset_c1 + 9
32172 END DO
32173 s_offset_b1 = s_offset_b1 + 1
32174 END DO
32175 s_offset_a1 = s_offset_a1 + 3
32176 END DO
32177 END SUBROUTINE contract_psgp
32178#endif
32179#if __MAX_CONTR > 4 || __MAX_CONTR == 4
32180! **************************************************************************************************
32181!> \brief ...
32182!> \param work ...
32183!> \param nl_a ...
32184!> \param nl_b ...
32185!> \param nl_c ...
32186!> \param nl_d ...
32187!> \param sphi_a ...
32188!> \param sphi_b ...
32189!> \param sphi_c ...
32190!> \param sphi_d ...
32191!> \param primitives ...
32192!> \param buffer1 ...
32193!> \param buffer2 ...
32194! **************************************************************************************************
32195 SUBROUTINE contract_psgd(work, &
32196 nl_a, nl_b, nl_c, nl_d, &
32197 sphi_a, sphi_b, sphi_c, sphi_d, &
32198 primitives, &
32199 buffer1, buffer2)
32200 REAL(dp), DIMENSION(3*1*15*6), INTENT(IN) :: work
32201 INTEGER :: nl_a, nl_b, nl_c, nl_d
32202 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
32203 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
32204 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
32205 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
32206 REAL(dp), &
32207 DIMENSION(3*nl_a, 1*nl_b, 9*nl_c, 5*nl_d) :: primitives
32208 REAL(dp), DIMENSION(3*1*15*6) :: buffer1, buffer2
32209
32210 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
32211 kmax, s_offset_a1, s_offset_b1, &
32212 s_offset_c1, s_offset_d1
32213
32214 s_offset_a1 = 0
32215 DO ia = 1, nl_a
32216 s_offset_b1 = 0
32217 DO ib = 1, nl_b
32218 s_offset_c1 = 0
32219 DO ic = 1, nl_c
32220 s_offset_d1 = 0
32221 DO id = 1, nl_d
32222 buffer1 = 0.0_dp
32223 imax = 1*15*6
32224 kmax = 3
32225 DO i = 1, imax
32226 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
32227 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
32228 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
32229 END DO
32230 buffer2 = 0.0_dp
32231 imax = 3*15*6
32232 kmax = 1
32233 DO i = 1, imax
32234 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
32235 END DO
32236 buffer1 = 0.0_dp
32237 imax = 3*1*6
32238 kmax = 15
32239 DO i = 1, imax
32240 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
32241 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
32242 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
32243 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
32244 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
32245 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
32246 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
32247 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
32248 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
32249 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
32250 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
32251 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
32252 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
32253 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
32254 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
32255 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
32256 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
32257 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
32258 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
32259 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
32260 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
32261 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
32262 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
32263 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
32264 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
32265 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
32266 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
32267 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
32268 END DO
32269 imax = 3*1*9
32270 kmax = 6
32271 i = 0
32272 DO i1 = 1, 9
32273 DO i2 = 1, 1
32274 DO i3 = 1, 3
32275 i = i + 1
32276 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
32277 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
32278 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
32279 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
32280 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
32281 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
32282 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
32283 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
32284 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
32285 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
32286 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
32287 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
32288 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
32289 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
32290 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
32291 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
32292 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
32293 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
32294 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
32295 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
32296 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
32297 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
32298 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
32299 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
32300 END DO
32301 END DO
32302 END DO
32303 s_offset_d1 = s_offset_d1 + 5
32304 END DO
32305 s_offset_c1 = s_offset_c1 + 9
32306 END DO
32307 s_offset_b1 = s_offset_b1 + 1
32308 END DO
32309 s_offset_a1 = s_offset_a1 + 3
32310 END DO
32311 END SUBROUTINE contract_psgd
32312#endif
32313#if __MAX_CONTR > 4 || __MAX_CONTR == 4
32314! **************************************************************************************************
32315!> \brief ...
32316!> \param work ...
32317!> \param nl_a ...
32318!> \param nl_b ...
32319!> \param nl_c ...
32320!> \param nl_d ...
32321!> \param sphi_a ...
32322!> \param sphi_b ...
32323!> \param sphi_c ...
32324!> \param sphi_d ...
32325!> \param primitives ...
32326!> \param buffer1 ...
32327!> \param buffer2 ...
32328! **************************************************************************************************
32329 SUBROUTINE contract_psgf(work, &
32330 nl_a, nl_b, nl_c, nl_d, &
32331 sphi_a, sphi_b, sphi_c, sphi_d, &
32332 primitives, &
32333 buffer1, buffer2)
32334 REAL(dp), DIMENSION(3*1*15*10), INTENT(IN) :: work
32335 INTEGER :: nl_a, nl_b, nl_c, nl_d
32336 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
32337 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
32338 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
32339 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
32340 REAL(dp), &
32341 DIMENSION(3*nl_a, 1*nl_b, 9*nl_c, 7*nl_d) :: primitives
32342 REAL(dp), DIMENSION(3*1*15*10) :: buffer1, buffer2
32343
32344 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
32345 kmax, s_offset_a1, s_offset_b1, &
32346 s_offset_c1, s_offset_d1
32347
32348 s_offset_a1 = 0
32349 DO ia = 1, nl_a
32350 s_offset_b1 = 0
32351 DO ib = 1, nl_b
32352 s_offset_c1 = 0
32353 DO ic = 1, nl_c
32354 s_offset_d1 = 0
32355 DO id = 1, nl_d
32356 buffer1 = 0.0_dp
32357 imax = 1*15*10
32358 kmax = 3
32359 DO i = 1, imax
32360 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
32361 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
32362 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
32363 END DO
32364 buffer2 = 0.0_dp
32365 imax = 3*15*10
32366 kmax = 1
32367 DO i = 1, imax
32368 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
32369 END DO
32370 buffer1 = 0.0_dp
32371 imax = 3*1*10
32372 kmax = 15
32373 DO i = 1, imax
32374 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
32375 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
32376 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
32377 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
32378 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
32379 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
32380 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
32381 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
32382 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
32383 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
32384 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
32385 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
32386 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
32387 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
32388 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
32389 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
32390 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
32391 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
32392 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
32393 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
32394 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
32395 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
32396 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
32397 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
32398 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
32399 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
32400 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
32401 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
32402 END DO
32403 imax = 3*1*9
32404 kmax = 10
32405 i = 0
32406 DO i1 = 1, 9
32407 DO i2 = 1, 1
32408 DO i3 = 1, 3
32409 i = i + 1
32410 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
32411 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
32412 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
32413 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
32414 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
32415 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
32416 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
32417 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
32418 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
32419 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
32420 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
32421 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
32422 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
32423 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
32424 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
32425 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
32426 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
32427 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
32428 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
32429 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
32430 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
32431 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
32432 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
32433 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
32434 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
32435 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
32436 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
32437 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
32438 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
32439 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
32440 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
32441 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
32442 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
32443 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
32444 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
32445 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
32446 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
32447 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
32448 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
32449 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
32450 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
32451 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
32452 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
32453 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
32454 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
32455 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
32456 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
32457 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
32458 END DO
32459 END DO
32460 END DO
32461 s_offset_d1 = s_offset_d1 + 7
32462 END DO
32463 s_offset_c1 = s_offset_c1 + 9
32464 END DO
32465 s_offset_b1 = s_offset_b1 + 1
32466 END DO
32467 s_offset_a1 = s_offset_a1 + 3
32468 END DO
32469 END SUBROUTINE contract_psgf
32470#endif
32471#if __MAX_CONTR > 4 || __MAX_CONTR == 4
32472! **************************************************************************************************
32473!> \brief ...
32474!> \param work ...
32475!> \param nl_a ...
32476!> \param nl_b ...
32477!> \param nl_c ...
32478!> \param nl_d ...
32479!> \param sphi_a ...
32480!> \param sphi_b ...
32481!> \param sphi_c ...
32482!> \param sphi_d ...
32483!> \param primitives ...
32484!> \param buffer1 ...
32485!> \param buffer2 ...
32486! **************************************************************************************************
32487 SUBROUTINE contract_psgg(work, &
32488 nl_a, nl_b, nl_c, nl_d, &
32489 sphi_a, sphi_b, sphi_c, sphi_d, &
32490 primitives, &
32491 buffer1, buffer2)
32492 REAL(dp), DIMENSION(3*1*15*15), INTENT(IN) :: work
32493 INTEGER :: nl_a, nl_b, nl_c, nl_d
32494 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
32495 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
32496 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
32497 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
32498 REAL(dp), &
32499 DIMENSION(3*nl_a, 1*nl_b, 9*nl_c, 9*nl_d) :: primitives
32500 REAL(dp), DIMENSION(3*1*15*15) :: buffer1, buffer2
32501
32502 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
32503 kmax, s_offset_a1, s_offset_b1, &
32504 s_offset_c1, s_offset_d1
32505
32506 s_offset_a1 = 0
32507 DO ia = 1, nl_a
32508 s_offset_b1 = 0
32509 DO ib = 1, nl_b
32510 s_offset_c1 = 0
32511 DO ic = 1, nl_c
32512 s_offset_d1 = 0
32513 DO id = 1, nl_d
32514 buffer1 = 0.0_dp
32515 imax = 1*15*15
32516 kmax = 3
32517 DO i = 1, imax
32518 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
32519 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
32520 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
32521 END DO
32522 buffer2 = 0.0_dp
32523 imax = 3*15*15
32524 kmax = 1
32525 DO i = 1, imax
32526 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
32527 END DO
32528 buffer1 = 0.0_dp
32529 imax = 3*1*15
32530 kmax = 15
32531 DO i = 1, imax
32532 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
32533 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
32534 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
32535 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
32536 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
32537 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
32538 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
32539 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
32540 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
32541 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
32542 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
32543 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
32544 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
32545 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
32546 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
32547 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
32548 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
32549 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
32550 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
32551 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
32552 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
32553 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
32554 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
32555 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
32556 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
32557 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
32558 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
32559 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
32560 END DO
32561 imax = 3*1*9
32562 kmax = 15
32563 i = 0
32564 DO i1 = 1, 9
32565 DO i2 = 1, 1
32566 DO i3 = 1, 3
32567 i = i + 1
32568 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
32569 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
32570 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
32571 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
32572 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
32573 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
32574 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
32575 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
32576 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
32577 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
32578 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
32579 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
32580 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
32581 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
32582 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
32583 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
32584 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
32585 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
32586 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
32587 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
32588 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
32589 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
32590 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
32591 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
32592 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
32593 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
32594 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
32595 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
32596 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
32597 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
32598 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
32599 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
32600 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
32601 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
32602 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
32603 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
32604 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
32605 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
32606 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
32607 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
32608 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
32609 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
32610 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
32611 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
32612 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
32613 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
32614 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
32615 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
32616 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
32617 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
32618 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
32619 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
32620 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
32621 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
32622 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
32623 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
32624 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
32625 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
32626 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
32627 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
32628 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
32629 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
32630 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
32631 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
32632 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
32633 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
32634 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
32635 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
32636 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
32637 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
32638 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
32639 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
32640 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
32641 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
32642 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
32643 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
32644 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
32645 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
32646 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
32647 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
32648 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
32649 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
32650 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
32651 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
32652 END DO
32653 END DO
32654 END DO
32655 s_offset_d1 = s_offset_d1 + 9
32656 END DO
32657 s_offset_c1 = s_offset_c1 + 9
32658 END DO
32659 s_offset_b1 = s_offset_b1 + 1
32660 END DO
32661 s_offset_a1 = s_offset_a1 + 3
32662 END DO
32663 END SUBROUTINE contract_psgg
32664#endif
32665#if __MAX_CONTR > 1 || __MAX_CONTR == 1
32666! **************************************************************************************************
32667!> \brief ...
32668!> \param work ...
32669!> \param nl_a ...
32670!> \param nl_b ...
32671!> \param nl_c ...
32672!> \param nl_d ...
32673!> \param sphi_a ...
32674!> \param sphi_b ...
32675!> \param sphi_c ...
32676!> \param sphi_d ...
32677!> \param primitives ...
32678!> \param buffer1 ...
32679!> \param buffer2 ...
32680! **************************************************************************************************
32681 SUBROUTINE contract_ppss(work, &
32682 nl_a, nl_b, nl_c, nl_d, &
32683 sphi_a, sphi_b, sphi_c, sphi_d, &
32684 primitives, &
32685 buffer1, buffer2)
32686 REAL(dp), DIMENSION(3*3*1*1), INTENT(IN) :: work
32687 INTEGER :: nl_a, nl_b, nl_c, nl_d
32688 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
32689 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
32690 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
32691 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
32692 REAL(dp), &
32693 DIMENSION(3*nl_a, 3*nl_b, 1*nl_c, 1*nl_d) :: primitives
32694 REAL(dp), DIMENSION(3*3*1*1) :: buffer1, buffer2
32695
32696 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
32697 kmax, s_offset_a1, s_offset_b1, &
32698 s_offset_c1, s_offset_d1
32699
32700 s_offset_a1 = 0
32701 DO ia = 1, nl_a
32702 s_offset_b1 = 0
32703 DO ib = 1, nl_b
32704 s_offset_c1 = 0
32705 DO ic = 1, nl_c
32706 s_offset_d1 = 0
32707 DO id = 1, nl_d
32708 buffer1 = 0.0_dp
32709 imax = 3*1*1
32710 kmax = 3
32711 DO i = 1, imax
32712 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
32713 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
32714 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
32715 END DO
32716 buffer2 = 0.0_dp
32717 imax = 3*1*1
32718 kmax = 3
32719 DO i = 1, imax
32720 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
32721 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
32722 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
32723 END DO
32724 buffer1 = 0.0_dp
32725 imax = 3*3*1
32726 kmax = 1
32727 DO i = 1, imax
32728 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
32729 END DO
32730 imax = 3*3*1
32731 kmax = 1
32732 i = 0
32733 DO i1 = 1, 1
32734 DO i2 = 1, 3
32735 DO i3 = 1, 3
32736 i = i + 1
32737 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
32738 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
32739 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
32740 END DO
32741 END DO
32742 END DO
32743 s_offset_d1 = s_offset_d1 + 1
32744 END DO
32745 s_offset_c1 = s_offset_c1 + 1
32746 END DO
32747 s_offset_b1 = s_offset_b1 + 3
32748 END DO
32749 s_offset_a1 = s_offset_a1 + 3
32750 END DO
32751 END SUBROUTINE contract_ppss
32752#endif
32753#if __MAX_CONTR > 1 || __MAX_CONTR == 1
32754! **************************************************************************************************
32755!> \brief ...
32756!> \param work ...
32757!> \param nl_a ...
32758!> \param nl_b ...
32759!> \param nl_c ...
32760!> \param nl_d ...
32761!> \param sphi_a ...
32762!> \param sphi_b ...
32763!> \param sphi_c ...
32764!> \param sphi_d ...
32765!> \param primitives ...
32766!> \param buffer1 ...
32767!> \param buffer2 ...
32768! **************************************************************************************************
32769 SUBROUTINE contract_ppsp(work, &
32770 nl_a, nl_b, nl_c, nl_d, &
32771 sphi_a, sphi_b, sphi_c, sphi_d, &
32772 primitives, &
32773 buffer1, buffer2)
32774 REAL(dp), DIMENSION(3*3*1*3), INTENT(IN) :: work
32775 INTEGER :: nl_a, nl_b, nl_c, nl_d
32776 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
32777 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
32778 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
32779 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
32780 REAL(dp), &
32781 DIMENSION(3*nl_a, 3*nl_b, 1*nl_c, 3*nl_d) :: primitives
32782 REAL(dp), DIMENSION(3*3*1*3) :: buffer1, buffer2
32783
32784 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
32785 kmax, s_offset_a1, s_offset_b1, &
32786 s_offset_c1, s_offset_d1
32787
32788 s_offset_a1 = 0
32789 DO ia = 1, nl_a
32790 s_offset_b1 = 0
32791 DO ib = 1, nl_b
32792 s_offset_c1 = 0
32793 DO ic = 1, nl_c
32794 s_offset_d1 = 0
32795 DO id = 1, nl_d
32796 buffer1 = 0.0_dp
32797 imax = 3*1*3
32798 kmax = 3
32799 DO i = 1, imax
32800 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
32801 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
32802 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
32803 END DO
32804 buffer2 = 0.0_dp
32805 imax = 3*1*3
32806 kmax = 3
32807 DO i = 1, imax
32808 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
32809 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
32810 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
32811 END DO
32812 buffer1 = 0.0_dp
32813 imax = 3*3*3
32814 kmax = 1
32815 DO i = 1, imax
32816 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
32817 END DO
32818 imax = 3*3*1
32819 kmax = 3
32820 i = 0
32821 DO i1 = 1, 1
32822 DO i2 = 1, 3
32823 DO i3 = 1, 3
32824 i = i + 1
32825 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
32826 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
32827 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
32828 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
32829 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
32830 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
32831 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
32832 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
32833 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
32834 END DO
32835 END DO
32836 END DO
32837 s_offset_d1 = s_offset_d1 + 3
32838 END DO
32839 s_offset_c1 = s_offset_c1 + 1
32840 END DO
32841 s_offset_b1 = s_offset_b1 + 3
32842 END DO
32843 s_offset_a1 = s_offset_a1 + 3
32844 END DO
32845 END SUBROUTINE contract_ppsp
32846#endif
32847#if __MAX_CONTR > 2 || __MAX_CONTR == 2
32848! **************************************************************************************************
32849!> \brief ...
32850!> \param work ...
32851!> \param nl_a ...
32852!> \param nl_b ...
32853!> \param nl_c ...
32854!> \param nl_d ...
32855!> \param sphi_a ...
32856!> \param sphi_b ...
32857!> \param sphi_c ...
32858!> \param sphi_d ...
32859!> \param primitives ...
32860!> \param buffer1 ...
32861!> \param buffer2 ...
32862! **************************************************************************************************
32863 SUBROUTINE contract_ppsd(work, &
32864 nl_a, nl_b, nl_c, nl_d, &
32865 sphi_a, sphi_b, sphi_c, sphi_d, &
32866 primitives, &
32867 buffer1, buffer2)
32868 REAL(dp), DIMENSION(3*3*1*6), INTENT(IN) :: work
32869 INTEGER :: nl_a, nl_b, nl_c, nl_d
32870 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
32871 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
32872 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
32873 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
32874 REAL(dp), &
32875 DIMENSION(3*nl_a, 3*nl_b, 1*nl_c, 5*nl_d) :: primitives
32876 REAL(dp), DIMENSION(3*3*1*6) :: buffer1, buffer2
32877
32878 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
32879 kmax, s_offset_a1, s_offset_b1, &
32880 s_offset_c1, s_offset_d1
32881
32882 s_offset_a1 = 0
32883 DO ia = 1, nl_a
32884 s_offset_b1 = 0
32885 DO ib = 1, nl_b
32886 s_offset_c1 = 0
32887 DO ic = 1, nl_c
32888 s_offset_d1 = 0
32889 DO id = 1, nl_d
32890 buffer1 = 0.0_dp
32891 imax = 3*1*6
32892 kmax = 3
32893 DO i = 1, imax
32894 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
32895 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
32896 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
32897 END DO
32898 buffer2 = 0.0_dp
32899 imax = 3*1*6
32900 kmax = 3
32901 DO i = 1, imax
32902 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
32903 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
32904 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
32905 END DO
32906 buffer1 = 0.0_dp
32907 imax = 3*3*6
32908 kmax = 1
32909 DO i = 1, imax
32910 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
32911 END DO
32912 imax = 3*3*1
32913 kmax = 6
32914 i = 0
32915 DO i1 = 1, 1
32916 DO i2 = 1, 3
32917 DO i3 = 1, 3
32918 i = i + 1
32919 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
32920 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
32921 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
32922 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
32923 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
32924 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
32925 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
32926 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
32927 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
32928 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
32929 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
32930 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
32931 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
32932 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
32933 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
32934 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
32935 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
32936 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
32937 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
32938 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
32939 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
32940 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
32941 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
32942 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
32943 END DO
32944 END DO
32945 END DO
32946 s_offset_d1 = s_offset_d1 + 5
32947 END DO
32948 s_offset_c1 = s_offset_c1 + 1
32949 END DO
32950 s_offset_b1 = s_offset_b1 + 3
32951 END DO
32952 s_offset_a1 = s_offset_a1 + 3
32953 END DO
32954 END SUBROUTINE contract_ppsd
32955#endif
32956#if __MAX_CONTR > 3 || __MAX_CONTR == 3
32957! **************************************************************************************************
32958!> \brief ...
32959!> \param work ...
32960!> \param nl_a ...
32961!> \param nl_b ...
32962!> \param nl_c ...
32963!> \param nl_d ...
32964!> \param sphi_a ...
32965!> \param sphi_b ...
32966!> \param sphi_c ...
32967!> \param sphi_d ...
32968!> \param primitives ...
32969!> \param buffer1 ...
32970!> \param buffer2 ...
32971! **************************************************************************************************
32972 SUBROUTINE contract_ppsf(work, &
32973 nl_a, nl_b, nl_c, nl_d, &
32974 sphi_a, sphi_b, sphi_c, sphi_d, &
32975 primitives, &
32976 buffer1, buffer2)
32977 REAL(dp), DIMENSION(3*3*1*10), INTENT(IN) :: work
32978 INTEGER :: nl_a, nl_b, nl_c, nl_d
32979 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
32980 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
32981 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
32982 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
32983 REAL(dp), &
32984 DIMENSION(3*nl_a, 3*nl_b, 1*nl_c, 7*nl_d) :: primitives
32985 REAL(dp), DIMENSION(3*3*1*10) :: buffer1, buffer2
32986
32987 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
32988 kmax, s_offset_a1, s_offset_b1, &
32989 s_offset_c1, s_offset_d1
32990
32991 s_offset_a1 = 0
32992 DO ia = 1, nl_a
32993 s_offset_b1 = 0
32994 DO ib = 1, nl_b
32995 s_offset_c1 = 0
32996 DO ic = 1, nl_c
32997 s_offset_d1 = 0
32998 DO id = 1, nl_d
32999 buffer1 = 0.0_dp
33000 imax = 3*1*10
33001 kmax = 3
33002 DO i = 1, imax
33003 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
33004 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
33005 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
33006 END DO
33007 buffer2 = 0.0_dp
33008 imax = 3*1*10
33009 kmax = 3
33010 DO i = 1, imax
33011 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
33012 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
33013 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
33014 END DO
33015 buffer1 = 0.0_dp
33016 imax = 3*3*10
33017 kmax = 1
33018 DO i = 1, imax
33019 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
33020 END DO
33021 imax = 3*3*1
33022 kmax = 10
33023 i = 0
33024 DO i1 = 1, 1
33025 DO i2 = 1, 3
33026 DO i3 = 1, 3
33027 i = i + 1
33028 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
33029 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
33030 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
33031 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
33032 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
33033 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
33034 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
33035 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
33036 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
33037 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
33038 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
33039 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
33040 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
33041 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
33042 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
33043 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
33044 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
33045 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
33046 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
33047 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
33048 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
33049 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
33050 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
33051 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
33052 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
33053 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
33054 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
33055 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
33056 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
33057 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
33058 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
33059 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
33060 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
33061 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
33062 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
33063 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
33064 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
33065 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
33066 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
33067 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
33068 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
33069 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
33070 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
33071 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
33072 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
33073 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
33074 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
33075 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
33076 END DO
33077 END DO
33078 END DO
33079 s_offset_d1 = s_offset_d1 + 7
33080 END DO
33081 s_offset_c1 = s_offset_c1 + 1
33082 END DO
33083 s_offset_b1 = s_offset_b1 + 3
33084 END DO
33085 s_offset_a1 = s_offset_a1 + 3
33086 END DO
33087 END SUBROUTINE contract_ppsf
33088#endif
33089#if __MAX_CONTR > 4 || __MAX_CONTR == 4
33090! **************************************************************************************************
33091!> \brief ...
33092!> \param work ...
33093!> \param nl_a ...
33094!> \param nl_b ...
33095!> \param nl_c ...
33096!> \param nl_d ...
33097!> \param sphi_a ...
33098!> \param sphi_b ...
33099!> \param sphi_c ...
33100!> \param sphi_d ...
33101!> \param primitives ...
33102!> \param buffer1 ...
33103!> \param buffer2 ...
33104! **************************************************************************************************
33105 SUBROUTINE contract_ppsg(work, &
33106 nl_a, nl_b, nl_c, nl_d, &
33107 sphi_a, sphi_b, sphi_c, sphi_d, &
33108 primitives, &
33109 buffer1, buffer2)
33110 REAL(dp), DIMENSION(3*3*1*15), INTENT(IN) :: work
33111 INTEGER :: nl_a, nl_b, nl_c, nl_d
33112 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
33113 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
33114 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
33115 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
33116 REAL(dp), &
33117 DIMENSION(3*nl_a, 3*nl_b, 1*nl_c, 9*nl_d) :: primitives
33118 REAL(dp), DIMENSION(3*3*1*15) :: buffer1, buffer2
33119
33120 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
33121 kmax, s_offset_a1, s_offset_b1, &
33122 s_offset_c1, s_offset_d1
33123
33124 s_offset_a1 = 0
33125 DO ia = 1, nl_a
33126 s_offset_b1 = 0
33127 DO ib = 1, nl_b
33128 s_offset_c1 = 0
33129 DO ic = 1, nl_c
33130 s_offset_d1 = 0
33131 DO id = 1, nl_d
33132 buffer1 = 0.0_dp
33133 imax = 3*1*15
33134 kmax = 3
33135 DO i = 1, imax
33136 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
33137 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
33138 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
33139 END DO
33140 buffer2 = 0.0_dp
33141 imax = 3*1*15
33142 kmax = 3
33143 DO i = 1, imax
33144 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
33145 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
33146 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
33147 END DO
33148 buffer1 = 0.0_dp
33149 imax = 3*3*15
33150 kmax = 1
33151 DO i = 1, imax
33152 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
33153 END DO
33154 imax = 3*3*1
33155 kmax = 15
33156 i = 0
33157 DO i1 = 1, 1
33158 DO i2 = 1, 3
33159 DO i3 = 1, 3
33160 i = i + 1
33161 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
33162 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
33163 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
33164 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
33165 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
33166 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
33167 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
33168 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
33169 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
33170 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
33171 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
33172 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
33173 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
33174 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
33175 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
33176 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
33177 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
33178 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
33179 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
33180 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
33181 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
33182 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
33183 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
33184 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
33185 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
33186 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
33187 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
33188 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
33189 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
33190 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
33191 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
33192 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
33193 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
33194 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
33195 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
33196 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
33197 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
33198 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
33199 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
33200 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
33201 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
33202 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
33203 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
33204 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
33205 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
33206 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
33207 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
33208 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
33209 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
33210 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
33211 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
33212 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
33213 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
33214 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
33215 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
33216 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
33217 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
33218 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
33219 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
33220 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
33221 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
33222 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
33223 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
33224 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
33225 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
33226 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
33227 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
33228 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
33229 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
33230 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
33231 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
33232 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
33233 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
33234 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
33235 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
33236 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
33237 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
33238 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
33239 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
33240 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
33241 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
33242 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
33243 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
33244 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
33245 END DO
33246 END DO
33247 END DO
33248 s_offset_d1 = s_offset_d1 + 9
33249 END DO
33250 s_offset_c1 = s_offset_c1 + 1
33251 END DO
33252 s_offset_b1 = s_offset_b1 + 3
33253 END DO
33254 s_offset_a1 = s_offset_a1 + 3
33255 END DO
33256 END SUBROUTINE contract_ppsg
33257#endif
33258#if __MAX_CONTR > 1 || __MAX_CONTR == 1
33259! **************************************************************************************************
33260!> \brief ...
33261!> \param work ...
33262!> \param nl_a ...
33263!> \param nl_b ...
33264!> \param nl_c ...
33265!> \param nl_d ...
33266!> \param sphi_a ...
33267!> \param sphi_b ...
33268!> \param sphi_c ...
33269!> \param sphi_d ...
33270!> \param primitives ...
33271!> \param buffer1 ...
33272!> \param buffer2 ...
33273! **************************************************************************************************
33274 SUBROUTINE contract_ppps(work, &
33275 nl_a, nl_b, nl_c, nl_d, &
33276 sphi_a, sphi_b, sphi_c, sphi_d, &
33277 primitives, &
33278 buffer1, buffer2)
33279 REAL(dp), DIMENSION(3*3*3*1), INTENT(IN) :: work
33280 INTEGER :: nl_a, nl_b, nl_c, nl_d
33281 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
33282 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
33283 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
33284 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
33285 REAL(dp), &
33286 DIMENSION(3*nl_a, 3*nl_b, 3*nl_c, 1*nl_d) :: primitives
33287 REAL(dp), DIMENSION(3*3*3*1) :: buffer1, buffer2
33288
33289 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
33290 kmax, s_offset_a1, s_offset_b1, &
33291 s_offset_c1, s_offset_d1
33292
33293 s_offset_a1 = 0
33294 DO ia = 1, nl_a
33295 s_offset_b1 = 0
33296 DO ib = 1, nl_b
33297 s_offset_c1 = 0
33298 DO ic = 1, nl_c
33299 s_offset_d1 = 0
33300 DO id = 1, nl_d
33301 buffer1 = 0.0_dp
33302 imax = 3*3*1
33303 kmax = 3
33304 DO i = 1, imax
33305 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
33306 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
33307 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
33308 END DO
33309 buffer2 = 0.0_dp
33310 imax = 3*3*1
33311 kmax = 3
33312 DO i = 1, imax
33313 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
33314 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
33315 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
33316 END DO
33317 buffer1 = 0.0_dp
33318 imax = 3*3*1
33319 kmax = 3
33320 DO i = 1, imax
33321 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
33322 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
33323 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
33324 END DO
33325 imax = 3*3*3
33326 kmax = 1
33327 i = 0
33328 DO i1 = 1, 3
33329 DO i2 = 1, 3
33330 DO i3 = 1, 3
33331 i = i + 1
33332 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
33333 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
33334 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
33335 END DO
33336 END DO
33337 END DO
33338 s_offset_d1 = s_offset_d1 + 1
33339 END DO
33340 s_offset_c1 = s_offset_c1 + 3
33341 END DO
33342 s_offset_b1 = s_offset_b1 + 3
33343 END DO
33344 s_offset_a1 = s_offset_a1 + 3
33345 END DO
33346 END SUBROUTINE contract_ppps
33347#endif
33348#if __MAX_CONTR > 1 || __MAX_CONTR == 1
33349! **************************************************************************************************
33350!> \brief ...
33351!> \param work ...
33352!> \param nl_a ...
33353!> \param nl_b ...
33354!> \param nl_c ...
33355!> \param nl_d ...
33356!> \param sphi_a ...
33357!> \param sphi_b ...
33358!> \param sphi_c ...
33359!> \param sphi_d ...
33360!> \param primitives ...
33361!> \param buffer1 ...
33362!> \param buffer2 ...
33363! **************************************************************************************************
33364 SUBROUTINE contract_pppp(work, &
33365 nl_a, nl_b, nl_c, nl_d, &
33366 sphi_a, sphi_b, sphi_c, sphi_d, &
33367 primitives, &
33368 buffer1, buffer2)
33369 REAL(dp), DIMENSION(3*3*3*3), INTENT(IN) :: work
33370 INTEGER :: nl_a, nl_b, nl_c, nl_d
33371 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
33372 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
33373 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
33374 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
33375 REAL(dp), &
33376 DIMENSION(3*nl_a, 3*nl_b, 3*nl_c, 3*nl_d) :: primitives
33377 REAL(dp), DIMENSION(3*3*3*3) :: buffer1, buffer2
33378
33379 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
33380 kmax, s_offset_a1, s_offset_b1, &
33381 s_offset_c1, s_offset_d1
33382
33383 s_offset_a1 = 0
33384 DO ia = 1, nl_a
33385 s_offset_b1 = 0
33386 DO ib = 1, nl_b
33387 s_offset_c1 = 0
33388 DO ic = 1, nl_c
33389 s_offset_d1 = 0
33390 DO id = 1, nl_d
33391 buffer1 = 0.0_dp
33392 imax = 3*3*3
33393 kmax = 3
33394 DO i = 1, imax
33395 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
33396 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
33397 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
33398 END DO
33399 buffer2 = 0.0_dp
33400 imax = 3*3*3
33401 kmax = 3
33402 DO i = 1, imax
33403 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
33404 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
33405 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
33406 END DO
33407 buffer1 = 0.0_dp
33408 imax = 3*3*3
33409 kmax = 3
33410 DO i = 1, imax
33411 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
33412 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
33413 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
33414 END DO
33415 imax = 3*3*3
33416 kmax = 3
33417 i = 0
33418 DO i1 = 1, 3
33419 DO i2 = 1, 3
33420 DO i3 = 1, 3
33421 i = i + 1
33422 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
33423 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
33424 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
33425 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
33426 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
33427 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
33428 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
33429 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
33430 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
33431 END DO
33432 END DO
33433 END DO
33434 s_offset_d1 = s_offset_d1 + 3
33435 END DO
33436 s_offset_c1 = s_offset_c1 + 3
33437 END DO
33438 s_offset_b1 = s_offset_b1 + 3
33439 END DO
33440 s_offset_a1 = s_offset_a1 + 3
33441 END DO
33442 END SUBROUTINE contract_pppp
33443#endif
33444#if __MAX_CONTR > 2 || __MAX_CONTR == 2
33445! **************************************************************************************************
33446!> \brief ...
33447!> \param work ...
33448!> \param nl_a ...
33449!> \param nl_b ...
33450!> \param nl_c ...
33451!> \param nl_d ...
33452!> \param sphi_a ...
33453!> \param sphi_b ...
33454!> \param sphi_c ...
33455!> \param sphi_d ...
33456!> \param primitives ...
33457!> \param buffer1 ...
33458!> \param buffer2 ...
33459! **************************************************************************************************
33460 SUBROUTINE contract_pppd(work, &
33461 nl_a, nl_b, nl_c, nl_d, &
33462 sphi_a, sphi_b, sphi_c, sphi_d, &
33463 primitives, &
33464 buffer1, buffer2)
33465 REAL(dp), DIMENSION(3*3*3*6), INTENT(IN) :: work
33466 INTEGER :: nl_a, nl_b, nl_c, nl_d
33467 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
33468 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
33469 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
33470 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
33471 REAL(dp), &
33472 DIMENSION(3*nl_a, 3*nl_b, 3*nl_c, 5*nl_d) :: primitives
33473 REAL(dp), DIMENSION(3*3*3*6) :: buffer1, buffer2
33474
33475 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
33476 kmax, s_offset_a1, s_offset_b1, &
33477 s_offset_c1, s_offset_d1
33478
33479 s_offset_a1 = 0
33480 DO ia = 1, nl_a
33481 s_offset_b1 = 0
33482 DO ib = 1, nl_b
33483 s_offset_c1 = 0
33484 DO ic = 1, nl_c
33485 s_offset_d1 = 0
33486 DO id = 1, nl_d
33487 buffer1 = 0.0_dp
33488 imax = 3*3*6
33489 kmax = 3
33490 DO i = 1, imax
33491 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
33492 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
33493 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
33494 END DO
33495 buffer2 = 0.0_dp
33496 imax = 3*3*6
33497 kmax = 3
33498 DO i = 1, imax
33499 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
33500 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
33501 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
33502 END DO
33503 buffer1 = 0.0_dp
33504 imax = 3*3*6
33505 kmax = 3
33506 DO i = 1, imax
33507 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
33508 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
33509 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
33510 END DO
33511 imax = 3*3*3
33512 kmax = 6
33513 i = 0
33514 DO i1 = 1, 3
33515 DO i2 = 1, 3
33516 DO i3 = 1, 3
33517 i = i + 1
33518 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
33519 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
33520 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
33521 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
33522 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
33523 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
33524 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
33525 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
33526 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
33527 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
33528 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
33529 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
33530 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
33531 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
33532 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
33533 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
33534 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
33535 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
33536 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
33537 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
33538 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
33539 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
33540 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
33541 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
33542 END DO
33543 END DO
33544 END DO
33545 s_offset_d1 = s_offset_d1 + 5
33546 END DO
33547 s_offset_c1 = s_offset_c1 + 3
33548 END DO
33549 s_offset_b1 = s_offset_b1 + 3
33550 END DO
33551 s_offset_a1 = s_offset_a1 + 3
33552 END DO
33553 END SUBROUTINE contract_pppd
33554#endif
33555#if __MAX_CONTR > 3 || __MAX_CONTR == 3
33556! **************************************************************************************************
33557!> \brief ...
33558!> \param work ...
33559!> \param nl_a ...
33560!> \param nl_b ...
33561!> \param nl_c ...
33562!> \param nl_d ...
33563!> \param sphi_a ...
33564!> \param sphi_b ...
33565!> \param sphi_c ...
33566!> \param sphi_d ...
33567!> \param primitives ...
33568!> \param buffer1 ...
33569!> \param buffer2 ...
33570! **************************************************************************************************
33571 SUBROUTINE contract_pppf(work, &
33572 nl_a, nl_b, nl_c, nl_d, &
33573 sphi_a, sphi_b, sphi_c, sphi_d, &
33574 primitives, &
33575 buffer1, buffer2)
33576 REAL(dp), DIMENSION(3*3*3*10), INTENT(IN) :: work
33577 INTEGER :: nl_a, nl_b, nl_c, nl_d
33578 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
33579 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
33580 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
33581 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
33582 REAL(dp), &
33583 DIMENSION(3*nl_a, 3*nl_b, 3*nl_c, 7*nl_d) :: primitives
33584 REAL(dp), DIMENSION(3*3*3*10) :: buffer1, buffer2
33585
33586 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
33587 kmax, s_offset_a1, s_offset_b1, &
33588 s_offset_c1, s_offset_d1
33589
33590 s_offset_a1 = 0
33591 DO ia = 1, nl_a
33592 s_offset_b1 = 0
33593 DO ib = 1, nl_b
33594 s_offset_c1 = 0
33595 DO ic = 1, nl_c
33596 s_offset_d1 = 0
33597 DO id = 1, nl_d
33598 buffer1 = 0.0_dp
33599 imax = 3*3*10
33600 kmax = 3
33601 DO i = 1, imax
33602 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
33603 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
33604 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
33605 END DO
33606 buffer2 = 0.0_dp
33607 imax = 3*3*10
33608 kmax = 3
33609 DO i = 1, imax
33610 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
33611 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
33612 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
33613 END DO
33614 buffer1 = 0.0_dp
33615 imax = 3*3*10
33616 kmax = 3
33617 DO i = 1, imax
33618 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
33619 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
33620 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
33621 END DO
33622 imax = 3*3*3
33623 kmax = 10
33624 i = 0
33625 DO i1 = 1, 3
33626 DO i2 = 1, 3
33627 DO i3 = 1, 3
33628 i = i + 1
33629 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
33630 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
33631 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
33632 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
33633 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
33634 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
33635 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
33636 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
33637 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
33638 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
33639 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
33640 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
33641 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
33642 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
33643 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
33644 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
33645 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
33646 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
33647 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
33648 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
33649 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
33650 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
33651 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
33652 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
33653 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
33654 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
33655 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
33656 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
33657 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
33658 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
33659 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
33660 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
33661 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
33662 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
33663 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
33664 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
33665 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
33666 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
33667 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
33668 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
33669 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
33670 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
33671 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
33672 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
33673 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
33674 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
33675 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
33676 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
33677 END DO
33678 END DO
33679 END DO
33680 s_offset_d1 = s_offset_d1 + 7
33681 END DO
33682 s_offset_c1 = s_offset_c1 + 3
33683 END DO
33684 s_offset_b1 = s_offset_b1 + 3
33685 END DO
33686 s_offset_a1 = s_offset_a1 + 3
33687 END DO
33688 END SUBROUTINE contract_pppf
33689#endif
33690#if __MAX_CONTR > 4 || __MAX_CONTR == 4
33691! **************************************************************************************************
33692!> \brief ...
33693!> \param work ...
33694!> \param nl_a ...
33695!> \param nl_b ...
33696!> \param nl_c ...
33697!> \param nl_d ...
33698!> \param sphi_a ...
33699!> \param sphi_b ...
33700!> \param sphi_c ...
33701!> \param sphi_d ...
33702!> \param primitives ...
33703!> \param buffer1 ...
33704!> \param buffer2 ...
33705! **************************************************************************************************
33706 SUBROUTINE contract_pppg(work, &
33707 nl_a, nl_b, nl_c, nl_d, &
33708 sphi_a, sphi_b, sphi_c, sphi_d, &
33709 primitives, &
33710 buffer1, buffer2)
33711 REAL(dp), DIMENSION(3*3*3*15), INTENT(IN) :: work
33712 INTEGER :: nl_a, nl_b, nl_c, nl_d
33713 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
33714 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
33715 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
33716 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
33717 REAL(dp), &
33718 DIMENSION(3*nl_a, 3*nl_b, 3*nl_c, 9*nl_d) :: primitives
33719 REAL(dp), DIMENSION(3*3*3*15) :: buffer1, buffer2
33720
33721 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
33722 kmax, s_offset_a1, s_offset_b1, &
33723 s_offset_c1, s_offset_d1
33724
33725 s_offset_a1 = 0
33726 DO ia = 1, nl_a
33727 s_offset_b1 = 0
33728 DO ib = 1, nl_b
33729 s_offset_c1 = 0
33730 DO ic = 1, nl_c
33731 s_offset_d1 = 0
33732 DO id = 1, nl_d
33733 buffer1 = 0.0_dp
33734 imax = 3*3*15
33735 kmax = 3
33736 DO i = 1, imax
33737 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
33738 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
33739 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
33740 END DO
33741 buffer2 = 0.0_dp
33742 imax = 3*3*15
33743 kmax = 3
33744 DO i = 1, imax
33745 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
33746 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
33747 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
33748 END DO
33749 buffer1 = 0.0_dp
33750 imax = 3*3*15
33751 kmax = 3
33752 DO i = 1, imax
33753 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
33754 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
33755 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
33756 END DO
33757 imax = 3*3*3
33758 kmax = 15
33759 i = 0
33760 DO i1 = 1, 3
33761 DO i2 = 1, 3
33762 DO i3 = 1, 3
33763 i = i + 1
33764 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
33765 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
33766 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
33767 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
33768 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
33769 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
33770 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
33771 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
33772 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
33773 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
33774 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
33775 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
33776 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
33777 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
33778 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
33779 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
33780 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
33781 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
33782 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
33783 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
33784 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
33785 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
33786 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
33787 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
33788 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
33789 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
33790 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
33791 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
33792 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
33793 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
33794 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
33795 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
33796 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
33797 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
33798 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
33799 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
33800 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
33801 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
33802 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
33803 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
33804 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
33805 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
33806 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
33807 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
33808 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
33809 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
33810 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
33811 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
33812 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
33813 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
33814 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
33815 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
33816 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
33817 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
33818 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
33819 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
33820 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
33821 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
33822 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
33823 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
33824 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
33825 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
33826 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
33827 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
33828 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
33829 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
33830 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
33831 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
33832 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
33833 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
33834 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
33835 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
33836 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
33837 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
33838 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
33839 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
33840 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
33841 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
33842 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
33843 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
33844 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
33845 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
33846 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
33847 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
33848 END DO
33849 END DO
33850 END DO
33851 s_offset_d1 = s_offset_d1 + 9
33852 END DO
33853 s_offset_c1 = s_offset_c1 + 3
33854 END DO
33855 s_offset_b1 = s_offset_b1 + 3
33856 END DO
33857 s_offset_a1 = s_offset_a1 + 3
33858 END DO
33859 END SUBROUTINE contract_pppg
33860#endif
33861#if __MAX_CONTR > 2 || __MAX_CONTR == 2
33862! **************************************************************************************************
33863!> \brief ...
33864!> \param work ...
33865!> \param nl_a ...
33866!> \param nl_b ...
33867!> \param nl_c ...
33868!> \param nl_d ...
33869!> \param sphi_a ...
33870!> \param sphi_b ...
33871!> \param sphi_c ...
33872!> \param sphi_d ...
33873!> \param primitives ...
33874!> \param buffer1 ...
33875!> \param buffer2 ...
33876! **************************************************************************************************
33877 SUBROUTINE contract_ppds(work, &
33878 nl_a, nl_b, nl_c, nl_d, &
33879 sphi_a, sphi_b, sphi_c, sphi_d, &
33880 primitives, &
33881 buffer1, buffer2)
33882 REAL(dp), DIMENSION(3*3*6*1), INTENT(IN) :: work
33883 INTEGER :: nl_a, nl_b, nl_c, nl_d
33884 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
33885 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
33886 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
33887 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
33888 REAL(dp), &
33889 DIMENSION(3*nl_a, 3*nl_b, 5*nl_c, 1*nl_d) :: primitives
33890 REAL(dp), DIMENSION(3*3*6*1) :: buffer1, buffer2
33891
33892 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
33893 kmax, s_offset_a1, s_offset_b1, &
33894 s_offset_c1, s_offset_d1
33895
33896 s_offset_a1 = 0
33897 DO ia = 1, nl_a
33898 s_offset_b1 = 0
33899 DO ib = 1, nl_b
33900 s_offset_c1 = 0
33901 DO ic = 1, nl_c
33902 s_offset_d1 = 0
33903 DO id = 1, nl_d
33904 buffer1 = 0.0_dp
33905 imax = 3*6*1
33906 kmax = 3
33907 DO i = 1, imax
33908 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
33909 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
33910 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
33911 END DO
33912 buffer2 = 0.0_dp
33913 imax = 3*6*1
33914 kmax = 3
33915 DO i = 1, imax
33916 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
33917 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
33918 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
33919 END DO
33920 buffer1 = 0.0_dp
33921 imax = 3*3*1
33922 kmax = 6
33923 DO i = 1, imax
33924 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
33925 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
33926 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
33927 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
33928 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
33929 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
33930 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
33931 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
33932 END DO
33933 imax = 3*3*5
33934 kmax = 1
33935 i = 0
33936 DO i1 = 1, 5
33937 DO i2 = 1, 3
33938 DO i3 = 1, 3
33939 i = i + 1
33940 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
33941 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
33942 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
33943 END DO
33944 END DO
33945 END DO
33946 s_offset_d1 = s_offset_d1 + 1
33947 END DO
33948 s_offset_c1 = s_offset_c1 + 5
33949 END DO
33950 s_offset_b1 = s_offset_b1 + 3
33951 END DO
33952 s_offset_a1 = s_offset_a1 + 3
33953 END DO
33954 END SUBROUTINE contract_ppds
33955#endif
33956#if __MAX_CONTR > 2 || __MAX_CONTR == 2
33957! **************************************************************************************************
33958!> \brief ...
33959!> \param work ...
33960!> \param nl_a ...
33961!> \param nl_b ...
33962!> \param nl_c ...
33963!> \param nl_d ...
33964!> \param sphi_a ...
33965!> \param sphi_b ...
33966!> \param sphi_c ...
33967!> \param sphi_d ...
33968!> \param primitives ...
33969!> \param buffer1 ...
33970!> \param buffer2 ...
33971! **************************************************************************************************
33972 SUBROUTINE contract_ppdp(work, &
33973 nl_a, nl_b, nl_c, nl_d, &
33974 sphi_a, sphi_b, sphi_c, sphi_d, &
33975 primitives, &
33976 buffer1, buffer2)
33977 REAL(dp), DIMENSION(3*3*6*3), INTENT(IN) :: work
33978 INTEGER :: nl_a, nl_b, nl_c, nl_d
33979 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
33980 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
33981 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
33982 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
33983 REAL(dp), &
33984 DIMENSION(3*nl_a, 3*nl_b, 5*nl_c, 3*nl_d) :: primitives
33985 REAL(dp), DIMENSION(3*3*6*3) :: buffer1, buffer2
33986
33987 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
33988 kmax, s_offset_a1, s_offset_b1, &
33989 s_offset_c1, s_offset_d1
33990
33991 s_offset_a1 = 0
33992 DO ia = 1, nl_a
33993 s_offset_b1 = 0
33994 DO ib = 1, nl_b
33995 s_offset_c1 = 0
33996 DO ic = 1, nl_c
33997 s_offset_d1 = 0
33998 DO id = 1, nl_d
33999 buffer1 = 0.0_dp
34000 imax = 3*6*3
34001 kmax = 3
34002 DO i = 1, imax
34003 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
34004 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
34005 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
34006 END DO
34007 buffer2 = 0.0_dp
34008 imax = 3*6*3
34009 kmax = 3
34010 DO i = 1, imax
34011 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
34012 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
34013 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
34014 END DO
34015 buffer1 = 0.0_dp
34016 imax = 3*3*3
34017 kmax = 6
34018 DO i = 1, imax
34019 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
34020 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
34021 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
34022 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
34023 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
34024 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
34025 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
34026 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
34027 END DO
34028 imax = 3*3*5
34029 kmax = 3
34030 i = 0
34031 DO i1 = 1, 5
34032 DO i2 = 1, 3
34033 DO i3 = 1, 3
34034 i = i + 1
34035 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
34036 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
34037 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
34038 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
34039 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
34040 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
34041 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
34042 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
34043 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
34044 END DO
34045 END DO
34046 END DO
34047 s_offset_d1 = s_offset_d1 + 3
34048 END DO
34049 s_offset_c1 = s_offset_c1 + 5
34050 END DO
34051 s_offset_b1 = s_offset_b1 + 3
34052 END DO
34053 s_offset_a1 = s_offset_a1 + 3
34054 END DO
34055 END SUBROUTINE contract_ppdp
34056#endif
34057#if __MAX_CONTR > 2 || __MAX_CONTR == 2
34058! **************************************************************************************************
34059!> \brief ...
34060!> \param work ...
34061!> \param nl_a ...
34062!> \param nl_b ...
34063!> \param nl_c ...
34064!> \param nl_d ...
34065!> \param sphi_a ...
34066!> \param sphi_b ...
34067!> \param sphi_c ...
34068!> \param sphi_d ...
34069!> \param primitives ...
34070!> \param buffer1 ...
34071!> \param buffer2 ...
34072! **************************************************************************************************
34073 SUBROUTINE contract_ppdd(work, &
34074 nl_a, nl_b, nl_c, nl_d, &
34075 sphi_a, sphi_b, sphi_c, sphi_d, &
34076 primitives, &
34077 buffer1, buffer2)
34078 REAL(dp), DIMENSION(3*3*6*6), INTENT(IN) :: work
34079 INTEGER :: nl_a, nl_b, nl_c, nl_d
34080 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
34081 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
34082 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
34083 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
34084 REAL(dp), &
34085 DIMENSION(3*nl_a, 3*nl_b, 5*nl_c, 5*nl_d) :: primitives
34086 REAL(dp), DIMENSION(3*3*6*6) :: buffer1, buffer2
34087
34088 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
34089 kmax, s_offset_a1, s_offset_b1, &
34090 s_offset_c1, s_offset_d1
34091
34092 s_offset_a1 = 0
34093 DO ia = 1, nl_a
34094 s_offset_b1 = 0
34095 DO ib = 1, nl_b
34096 s_offset_c1 = 0
34097 DO ic = 1, nl_c
34098 s_offset_d1 = 0
34099 DO id = 1, nl_d
34100 buffer1 = 0.0_dp
34101 imax = 3*6*6
34102 kmax = 3
34103 DO i = 1, imax
34104 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
34105 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
34106 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
34107 END DO
34108 buffer2 = 0.0_dp
34109 imax = 3*6*6
34110 kmax = 3
34111 DO i = 1, imax
34112 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
34113 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
34114 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
34115 END DO
34116 buffer1 = 0.0_dp
34117 imax = 3*3*6
34118 kmax = 6
34119 DO i = 1, imax
34120 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
34121 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
34122 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
34123 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
34124 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
34125 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
34126 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
34127 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
34128 END DO
34129 imax = 3*3*5
34130 kmax = 6
34131 i = 0
34132 DO i1 = 1, 5
34133 DO i2 = 1, 3
34134 DO i3 = 1, 3
34135 i = i + 1
34136 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
34137 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
34138 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
34139 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
34140 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
34141 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
34142 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
34143 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
34144 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
34145 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
34146 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
34147 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
34148 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
34149 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
34150 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
34151 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
34152 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
34153 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
34154 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
34155 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
34156 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
34157 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
34158 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
34159 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
34160 END DO
34161 END DO
34162 END DO
34163 s_offset_d1 = s_offset_d1 + 5
34164 END DO
34165 s_offset_c1 = s_offset_c1 + 5
34166 END DO
34167 s_offset_b1 = s_offset_b1 + 3
34168 END DO
34169 s_offset_a1 = s_offset_a1 + 3
34170 END DO
34171 END SUBROUTINE contract_ppdd
34172#endif
34173#if __MAX_CONTR > 3 || __MAX_CONTR == 3
34174! **************************************************************************************************
34175!> \brief ...
34176!> \param work ...
34177!> \param nl_a ...
34178!> \param nl_b ...
34179!> \param nl_c ...
34180!> \param nl_d ...
34181!> \param sphi_a ...
34182!> \param sphi_b ...
34183!> \param sphi_c ...
34184!> \param sphi_d ...
34185!> \param primitives ...
34186!> \param buffer1 ...
34187!> \param buffer2 ...
34188! **************************************************************************************************
34189 SUBROUTINE contract_ppdf(work, &
34190 nl_a, nl_b, nl_c, nl_d, &
34191 sphi_a, sphi_b, sphi_c, sphi_d, &
34192 primitives, &
34193 buffer1, buffer2)
34194 REAL(dp), DIMENSION(3*3*6*10), INTENT(IN) :: work
34195 INTEGER :: nl_a, nl_b, nl_c, nl_d
34196 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
34197 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
34198 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
34199 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
34200 REAL(dp), &
34201 DIMENSION(3*nl_a, 3*nl_b, 5*nl_c, 7*nl_d) :: primitives
34202 REAL(dp), DIMENSION(3*3*6*10) :: buffer1, buffer2
34203
34204 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
34205 kmax, s_offset_a1, s_offset_b1, &
34206 s_offset_c1, s_offset_d1
34207
34208 s_offset_a1 = 0
34209 DO ia = 1, nl_a
34210 s_offset_b1 = 0
34211 DO ib = 1, nl_b
34212 s_offset_c1 = 0
34213 DO ic = 1, nl_c
34214 s_offset_d1 = 0
34215 DO id = 1, nl_d
34216 buffer1 = 0.0_dp
34217 imax = 3*6*10
34218 kmax = 3
34219 DO i = 1, imax
34220 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
34221 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
34222 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
34223 END DO
34224 buffer2 = 0.0_dp
34225 imax = 3*6*10
34226 kmax = 3
34227 DO i = 1, imax
34228 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
34229 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
34230 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
34231 END DO
34232 buffer1 = 0.0_dp
34233 imax = 3*3*10
34234 kmax = 6
34235 DO i = 1, imax
34236 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
34237 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
34238 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
34239 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
34240 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
34241 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
34242 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
34243 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
34244 END DO
34245 imax = 3*3*5
34246 kmax = 10
34247 i = 0
34248 DO i1 = 1, 5
34249 DO i2 = 1, 3
34250 DO i3 = 1, 3
34251 i = i + 1
34252 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
34253 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
34254 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
34255 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
34256 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
34257 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
34258 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
34259 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
34260 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
34261 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
34262 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
34263 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
34264 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
34265 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
34266 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
34267 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
34268 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
34269 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
34270 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
34271 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
34272 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
34273 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
34274 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
34275 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
34276 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
34277 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
34278 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
34279 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
34280 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
34281 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
34282 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
34283 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
34284 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
34285 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
34286 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
34287 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
34288 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
34289 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
34290 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
34291 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
34292 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
34293 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
34294 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
34295 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
34296 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
34297 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
34298 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
34299 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
34300 END DO
34301 END DO
34302 END DO
34303 s_offset_d1 = s_offset_d1 + 7
34304 END DO
34305 s_offset_c1 = s_offset_c1 + 5
34306 END DO
34307 s_offset_b1 = s_offset_b1 + 3
34308 END DO
34309 s_offset_a1 = s_offset_a1 + 3
34310 END DO
34311 END SUBROUTINE contract_ppdf
34312#endif
34313#if __MAX_CONTR > 4 || __MAX_CONTR == 4
34314! **************************************************************************************************
34315!> \brief ...
34316!> \param work ...
34317!> \param nl_a ...
34318!> \param nl_b ...
34319!> \param nl_c ...
34320!> \param nl_d ...
34321!> \param sphi_a ...
34322!> \param sphi_b ...
34323!> \param sphi_c ...
34324!> \param sphi_d ...
34325!> \param primitives ...
34326!> \param buffer1 ...
34327!> \param buffer2 ...
34328! **************************************************************************************************
34329 SUBROUTINE contract_ppdg(work, &
34330 nl_a, nl_b, nl_c, nl_d, &
34331 sphi_a, sphi_b, sphi_c, sphi_d, &
34332 primitives, &
34333 buffer1, buffer2)
34334 REAL(dp), DIMENSION(3*3*6*15), INTENT(IN) :: work
34335 INTEGER :: nl_a, nl_b, nl_c, nl_d
34336 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
34337 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
34338 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
34339 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
34340 REAL(dp), &
34341 DIMENSION(3*nl_a, 3*nl_b, 5*nl_c, 9*nl_d) :: primitives
34342 REAL(dp), DIMENSION(3*3*6*15) :: buffer1, buffer2
34343
34344 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
34345 kmax, s_offset_a1, s_offset_b1, &
34346 s_offset_c1, s_offset_d1
34347
34348 s_offset_a1 = 0
34349 DO ia = 1, nl_a
34350 s_offset_b1 = 0
34351 DO ib = 1, nl_b
34352 s_offset_c1 = 0
34353 DO ic = 1, nl_c
34354 s_offset_d1 = 0
34355 DO id = 1, nl_d
34356 buffer1 = 0.0_dp
34357 imax = 3*6*15
34358 kmax = 3
34359 DO i = 1, imax
34360 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
34361 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
34362 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
34363 END DO
34364 buffer2 = 0.0_dp
34365 imax = 3*6*15
34366 kmax = 3
34367 DO i = 1, imax
34368 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
34369 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
34370 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
34371 END DO
34372 buffer1 = 0.0_dp
34373 imax = 3*3*15
34374 kmax = 6
34375 DO i = 1, imax
34376 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
34377 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
34378 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
34379 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
34380 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
34381 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
34382 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
34383 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
34384 END DO
34385 imax = 3*3*5
34386 kmax = 15
34387 i = 0
34388 DO i1 = 1, 5
34389 DO i2 = 1, 3
34390 DO i3 = 1, 3
34391 i = i + 1
34392 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
34393 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
34394 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
34395 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
34396 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
34397 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
34398 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
34399 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
34400 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
34401 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
34402 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
34403 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
34404 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
34405 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
34406 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
34407 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
34408 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
34409 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
34410 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
34411 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
34412 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
34413 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
34414 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
34415 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
34416 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
34417 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
34418 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
34419 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
34420 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
34421 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
34422 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
34423 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
34424 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
34425 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
34426 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
34427 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
34428 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
34429 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
34430 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
34431 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
34432 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
34433 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
34434 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
34435 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
34436 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
34437 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
34438 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
34439 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
34440 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
34441 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
34442 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
34443 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
34444 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
34445 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
34446 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
34447 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
34448 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
34449 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
34450 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
34451 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
34452 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
34453 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
34454 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
34455 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
34456 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
34457 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
34458 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
34459 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
34460 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
34461 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
34462 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
34463 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
34464 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
34465 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
34466 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
34467 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
34468 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
34469 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
34470 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
34471 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
34472 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
34473 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
34474 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
34475 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
34476 END DO
34477 END DO
34478 END DO
34479 s_offset_d1 = s_offset_d1 + 9
34480 END DO
34481 s_offset_c1 = s_offset_c1 + 5
34482 END DO
34483 s_offset_b1 = s_offset_b1 + 3
34484 END DO
34485 s_offset_a1 = s_offset_a1 + 3
34486 END DO
34487 END SUBROUTINE contract_ppdg
34488#endif
34489#if __MAX_CONTR > 3 || __MAX_CONTR == 3
34490! **************************************************************************************************
34491!> \brief ...
34492!> \param work ...
34493!> \param nl_a ...
34494!> \param nl_b ...
34495!> \param nl_c ...
34496!> \param nl_d ...
34497!> \param sphi_a ...
34498!> \param sphi_b ...
34499!> \param sphi_c ...
34500!> \param sphi_d ...
34501!> \param primitives ...
34502!> \param buffer1 ...
34503!> \param buffer2 ...
34504! **************************************************************************************************
34505 SUBROUTINE contract_ppfs(work, &
34506 nl_a, nl_b, nl_c, nl_d, &
34507 sphi_a, sphi_b, sphi_c, sphi_d, &
34508 primitives, &
34509 buffer1, buffer2)
34510 REAL(dp), DIMENSION(3*3*10*1), INTENT(IN) :: work
34511 INTEGER :: nl_a, nl_b, nl_c, nl_d
34512 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
34513 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
34514 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
34515 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
34516 REAL(dp), &
34517 DIMENSION(3*nl_a, 3*nl_b, 7*nl_c, 1*nl_d) :: primitives
34518 REAL(dp), DIMENSION(3*3*10*1) :: buffer1, buffer2
34519
34520 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
34521 kmax, s_offset_a1, s_offset_b1, &
34522 s_offset_c1, s_offset_d1
34523
34524 s_offset_a1 = 0
34525 DO ia = 1, nl_a
34526 s_offset_b1 = 0
34527 DO ib = 1, nl_b
34528 s_offset_c1 = 0
34529 DO ic = 1, nl_c
34530 s_offset_d1 = 0
34531 DO id = 1, nl_d
34532 buffer1 = 0.0_dp
34533 imax = 3*10*1
34534 kmax = 3
34535 DO i = 1, imax
34536 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
34537 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
34538 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
34539 END DO
34540 buffer2 = 0.0_dp
34541 imax = 3*10*1
34542 kmax = 3
34543 DO i = 1, imax
34544 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
34545 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
34546 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
34547 END DO
34548 buffer1 = 0.0_dp
34549 imax = 3*3*1
34550 kmax = 10
34551 DO i = 1, imax
34552 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
34553 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
34554 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
34555 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
34556 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
34557 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
34558 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
34559 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
34560 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
34561 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
34562 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
34563 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
34564 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
34565 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
34566 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
34567 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
34568 END DO
34569 imax = 3*3*7
34570 kmax = 1
34571 i = 0
34572 DO i1 = 1, 7
34573 DO i2 = 1, 3
34574 DO i3 = 1, 3
34575 i = i + 1
34576 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
34577 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
34578 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
34579 END DO
34580 END DO
34581 END DO
34582 s_offset_d1 = s_offset_d1 + 1
34583 END DO
34584 s_offset_c1 = s_offset_c1 + 7
34585 END DO
34586 s_offset_b1 = s_offset_b1 + 3
34587 END DO
34588 s_offset_a1 = s_offset_a1 + 3
34589 END DO
34590 END SUBROUTINE contract_ppfs
34591#endif
34592#if __MAX_CONTR > 3 || __MAX_CONTR == 3
34593! **************************************************************************************************
34594!> \brief ...
34595!> \param work ...
34596!> \param nl_a ...
34597!> \param nl_b ...
34598!> \param nl_c ...
34599!> \param nl_d ...
34600!> \param sphi_a ...
34601!> \param sphi_b ...
34602!> \param sphi_c ...
34603!> \param sphi_d ...
34604!> \param primitives ...
34605!> \param buffer1 ...
34606!> \param buffer2 ...
34607! **************************************************************************************************
34608 SUBROUTINE contract_ppfp(work, &
34609 nl_a, nl_b, nl_c, nl_d, &
34610 sphi_a, sphi_b, sphi_c, sphi_d, &
34611 primitives, &
34612 buffer1, buffer2)
34613 REAL(dp), DIMENSION(3*3*10*3), INTENT(IN) :: work
34614 INTEGER :: nl_a, nl_b, nl_c, nl_d
34615 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
34616 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
34617 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
34618 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
34619 REAL(dp), &
34620 DIMENSION(3*nl_a, 3*nl_b, 7*nl_c, 3*nl_d) :: primitives
34621 REAL(dp), DIMENSION(3*3*10*3) :: buffer1, buffer2
34622
34623 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
34624 kmax, s_offset_a1, s_offset_b1, &
34625 s_offset_c1, s_offset_d1
34626
34627 s_offset_a1 = 0
34628 DO ia = 1, nl_a
34629 s_offset_b1 = 0
34630 DO ib = 1, nl_b
34631 s_offset_c1 = 0
34632 DO ic = 1, nl_c
34633 s_offset_d1 = 0
34634 DO id = 1, nl_d
34635 buffer1 = 0.0_dp
34636 imax = 3*10*3
34637 kmax = 3
34638 DO i = 1, imax
34639 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
34640 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
34641 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
34642 END DO
34643 buffer2 = 0.0_dp
34644 imax = 3*10*3
34645 kmax = 3
34646 DO i = 1, imax
34647 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
34648 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
34649 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
34650 END DO
34651 buffer1 = 0.0_dp
34652 imax = 3*3*3
34653 kmax = 10
34654 DO i = 1, imax
34655 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
34656 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
34657 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
34658 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
34659 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
34660 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
34661 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
34662 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
34663 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
34664 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
34665 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
34666 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
34667 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
34668 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
34669 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
34670 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
34671 END DO
34672 imax = 3*3*7
34673 kmax = 3
34674 i = 0
34675 DO i1 = 1, 7
34676 DO i2 = 1, 3
34677 DO i3 = 1, 3
34678 i = i + 1
34679 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
34680 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
34681 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
34682 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
34683 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
34684 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
34685 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
34686 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
34687 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
34688 END DO
34689 END DO
34690 END DO
34691 s_offset_d1 = s_offset_d1 + 3
34692 END DO
34693 s_offset_c1 = s_offset_c1 + 7
34694 END DO
34695 s_offset_b1 = s_offset_b1 + 3
34696 END DO
34697 s_offset_a1 = s_offset_a1 + 3
34698 END DO
34699 END SUBROUTINE contract_ppfp
34700#endif
34701#if __MAX_CONTR > 3 || __MAX_CONTR == 3
34702! **************************************************************************************************
34703!> \brief ...
34704!> \param work ...
34705!> \param nl_a ...
34706!> \param nl_b ...
34707!> \param nl_c ...
34708!> \param nl_d ...
34709!> \param sphi_a ...
34710!> \param sphi_b ...
34711!> \param sphi_c ...
34712!> \param sphi_d ...
34713!> \param primitives ...
34714!> \param buffer1 ...
34715!> \param buffer2 ...
34716! **************************************************************************************************
34717 SUBROUTINE contract_ppfd(work, &
34718 nl_a, nl_b, nl_c, nl_d, &
34719 sphi_a, sphi_b, sphi_c, sphi_d, &
34720 primitives, &
34721 buffer1, buffer2)
34722 REAL(dp), DIMENSION(3*3*10*6), INTENT(IN) :: work
34723 INTEGER :: nl_a, nl_b, nl_c, nl_d
34724 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
34725 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
34726 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
34727 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
34728 REAL(dp), &
34729 DIMENSION(3*nl_a, 3*nl_b, 7*nl_c, 5*nl_d) :: primitives
34730 REAL(dp), DIMENSION(3*3*10*6) :: buffer1, buffer2
34731
34732 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
34733 kmax, s_offset_a1, s_offset_b1, &
34734 s_offset_c1, s_offset_d1
34735
34736 s_offset_a1 = 0
34737 DO ia = 1, nl_a
34738 s_offset_b1 = 0
34739 DO ib = 1, nl_b
34740 s_offset_c1 = 0
34741 DO ic = 1, nl_c
34742 s_offset_d1 = 0
34743 DO id = 1, nl_d
34744 buffer1 = 0.0_dp
34745 imax = 3*10*6
34746 kmax = 3
34747 DO i = 1, imax
34748 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
34749 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
34750 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
34751 END DO
34752 buffer2 = 0.0_dp
34753 imax = 3*10*6
34754 kmax = 3
34755 DO i = 1, imax
34756 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
34757 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
34758 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
34759 END DO
34760 buffer1 = 0.0_dp
34761 imax = 3*3*6
34762 kmax = 10
34763 DO i = 1, imax
34764 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
34765 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
34766 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
34767 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
34768 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
34769 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
34770 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
34771 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
34772 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
34773 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
34774 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
34775 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
34776 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
34777 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
34778 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
34779 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
34780 END DO
34781 imax = 3*3*7
34782 kmax = 6
34783 i = 0
34784 DO i1 = 1, 7
34785 DO i2 = 1, 3
34786 DO i3 = 1, 3
34787 i = i + 1
34788 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
34789 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
34790 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
34791 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
34792 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
34793 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
34794 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
34795 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
34796 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
34797 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
34798 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
34799 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
34800 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
34801 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
34802 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
34803 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
34804 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
34805 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
34806 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
34807 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
34808 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
34809 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
34810 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
34811 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
34812 END DO
34813 END DO
34814 END DO
34815 s_offset_d1 = s_offset_d1 + 5
34816 END DO
34817 s_offset_c1 = s_offset_c1 + 7
34818 END DO
34819 s_offset_b1 = s_offset_b1 + 3
34820 END DO
34821 s_offset_a1 = s_offset_a1 + 3
34822 END DO
34823 END SUBROUTINE contract_ppfd
34824#endif
34825#if __MAX_CONTR > 3 || __MAX_CONTR == 3
34826! **************************************************************************************************
34827!> \brief ...
34828!> \param work ...
34829!> \param nl_a ...
34830!> \param nl_b ...
34831!> \param nl_c ...
34832!> \param nl_d ...
34833!> \param sphi_a ...
34834!> \param sphi_b ...
34835!> \param sphi_c ...
34836!> \param sphi_d ...
34837!> \param primitives ...
34838!> \param buffer1 ...
34839!> \param buffer2 ...
34840! **************************************************************************************************
34841 SUBROUTINE contract_ppff(work, &
34842 nl_a, nl_b, nl_c, nl_d, &
34843 sphi_a, sphi_b, sphi_c, sphi_d, &
34844 primitives, &
34845 buffer1, buffer2)
34846 REAL(dp), DIMENSION(3*3*10*10), INTENT(IN) :: work
34847 INTEGER :: nl_a, nl_b, nl_c, nl_d
34848 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
34849 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
34850 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
34851 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
34852 REAL(dp), &
34853 DIMENSION(3*nl_a, 3*nl_b, 7*nl_c, 7*nl_d) :: primitives
34854 REAL(dp), DIMENSION(3*3*10*10) :: buffer1, buffer2
34855
34856 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
34857 kmax, s_offset_a1, s_offset_b1, &
34858 s_offset_c1, s_offset_d1
34859
34860 s_offset_a1 = 0
34861 DO ia = 1, nl_a
34862 s_offset_b1 = 0
34863 DO ib = 1, nl_b
34864 s_offset_c1 = 0
34865 DO ic = 1, nl_c
34866 s_offset_d1 = 0
34867 DO id = 1, nl_d
34868 buffer1 = 0.0_dp
34869 imax = 3*10*10
34870 kmax = 3
34871 DO i = 1, imax
34872 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
34873 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
34874 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
34875 END DO
34876 buffer2 = 0.0_dp
34877 imax = 3*10*10
34878 kmax = 3
34879 DO i = 1, imax
34880 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
34881 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
34882 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
34883 END DO
34884 buffer1 = 0.0_dp
34885 imax = 3*3*10
34886 kmax = 10
34887 DO i = 1, imax
34888 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
34889 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
34890 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
34891 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
34892 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
34893 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
34894 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
34895 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
34896 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
34897 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
34898 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
34899 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
34900 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
34901 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
34902 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
34903 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
34904 END DO
34905 imax = 3*3*7
34906 kmax = 10
34907 i = 0
34908 DO i1 = 1, 7
34909 DO i2 = 1, 3
34910 DO i3 = 1, 3
34911 i = i + 1
34912 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
34913 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
34914 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
34915 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
34916 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
34917 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
34918 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
34919 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
34920 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
34921 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
34922 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
34923 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
34924 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
34925 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
34926 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
34927 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
34928 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
34929 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
34930 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
34931 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
34932 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
34933 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
34934 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
34935 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
34936 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
34937 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
34938 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
34939 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
34940 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
34941 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
34942 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
34943 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
34944 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
34945 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
34946 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
34947 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
34948 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
34949 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
34950 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
34951 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
34952 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
34953 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
34954 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
34955 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
34956 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
34957 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
34958 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
34959 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
34960 END DO
34961 END DO
34962 END DO
34963 s_offset_d1 = s_offset_d1 + 7
34964 END DO
34965 s_offset_c1 = s_offset_c1 + 7
34966 END DO
34967 s_offset_b1 = s_offset_b1 + 3
34968 END DO
34969 s_offset_a1 = s_offset_a1 + 3
34970 END DO
34971 END SUBROUTINE contract_ppff
34972#endif
34973#if __MAX_CONTR > 4 || __MAX_CONTR == 4
34974! **************************************************************************************************
34975!> \brief ...
34976!> \param work ...
34977!> \param nl_a ...
34978!> \param nl_b ...
34979!> \param nl_c ...
34980!> \param nl_d ...
34981!> \param sphi_a ...
34982!> \param sphi_b ...
34983!> \param sphi_c ...
34984!> \param sphi_d ...
34985!> \param primitives ...
34986!> \param buffer1 ...
34987!> \param buffer2 ...
34988! **************************************************************************************************
34989 SUBROUTINE contract_ppfg(work, &
34990 nl_a, nl_b, nl_c, nl_d, &
34991 sphi_a, sphi_b, sphi_c, sphi_d, &
34992 primitives, &
34993 buffer1, buffer2)
34994 REAL(dp), DIMENSION(3*3*10*15), INTENT(IN) :: work
34995 INTEGER :: nl_a, nl_b, nl_c, nl_d
34996 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
34997 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
34998 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
34999 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
35000 REAL(dp), &
35001 DIMENSION(3*nl_a, 3*nl_b, 7*nl_c, 9*nl_d) :: primitives
35002 REAL(dp), DIMENSION(3*3*10*15) :: buffer1, buffer2
35003
35004 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
35005 kmax, s_offset_a1, s_offset_b1, &
35006 s_offset_c1, s_offset_d1
35007
35008 s_offset_a1 = 0
35009 DO ia = 1, nl_a
35010 s_offset_b1 = 0
35011 DO ib = 1, nl_b
35012 s_offset_c1 = 0
35013 DO ic = 1, nl_c
35014 s_offset_d1 = 0
35015 DO id = 1, nl_d
35016 buffer1 = 0.0_dp
35017 imax = 3*10*15
35018 kmax = 3
35019 DO i = 1, imax
35020 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
35021 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
35022 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
35023 END DO
35024 buffer2 = 0.0_dp
35025 imax = 3*10*15
35026 kmax = 3
35027 DO i = 1, imax
35028 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
35029 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
35030 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
35031 END DO
35032 buffer1 = 0.0_dp
35033 imax = 3*3*15
35034 kmax = 10
35035 DO i = 1, imax
35036 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
35037 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
35038 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
35039 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
35040 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
35041 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
35042 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
35043 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
35044 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
35045 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
35046 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
35047 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
35048 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
35049 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
35050 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
35051 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
35052 END DO
35053 imax = 3*3*7
35054 kmax = 15
35055 i = 0
35056 DO i1 = 1, 7
35057 DO i2 = 1, 3
35058 DO i3 = 1, 3
35059 i = i + 1
35060 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
35061 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
35062 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
35063 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
35064 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
35065 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
35066 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
35067 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
35068 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
35069 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
35070 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
35071 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
35072 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
35073 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
35074 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
35075 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
35076 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
35077 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
35078 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
35079 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
35080 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
35081 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
35082 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
35083 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
35084 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
35085 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
35086 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
35087 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
35088 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
35089 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
35090 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
35091 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
35092 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
35093 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
35094 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
35095 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
35096 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
35097 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
35098 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
35099 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
35100 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
35101 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
35102 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
35103 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
35104 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
35105 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
35106 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
35107 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
35108 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
35109 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
35110 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
35111 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
35112 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
35113 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
35114 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
35115 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
35116 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
35117 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
35118 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
35119 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
35120 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
35121 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
35122 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
35123 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
35124 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
35125 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
35126 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
35127 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
35128 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
35129 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
35130 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
35131 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
35132 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
35133 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
35134 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
35135 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
35136 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
35137 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
35138 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
35139 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
35140 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
35141 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
35142 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
35143 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
35144 END DO
35145 END DO
35146 END DO
35147 s_offset_d1 = s_offset_d1 + 9
35148 END DO
35149 s_offset_c1 = s_offset_c1 + 7
35150 END DO
35151 s_offset_b1 = s_offset_b1 + 3
35152 END DO
35153 s_offset_a1 = s_offset_a1 + 3
35154 END DO
35155 END SUBROUTINE contract_ppfg
35156#endif
35157#if __MAX_CONTR > 4 || __MAX_CONTR == 4
35158! **************************************************************************************************
35159!> \brief ...
35160!> \param work ...
35161!> \param nl_a ...
35162!> \param nl_b ...
35163!> \param nl_c ...
35164!> \param nl_d ...
35165!> \param sphi_a ...
35166!> \param sphi_b ...
35167!> \param sphi_c ...
35168!> \param sphi_d ...
35169!> \param primitives ...
35170!> \param buffer1 ...
35171!> \param buffer2 ...
35172! **************************************************************************************************
35173 SUBROUTINE contract_ppgs(work, &
35174 nl_a, nl_b, nl_c, nl_d, &
35175 sphi_a, sphi_b, sphi_c, sphi_d, &
35176 primitives, &
35177 buffer1, buffer2)
35178 REAL(dp), DIMENSION(3*3*15*1), INTENT(IN) :: work
35179 INTEGER :: nl_a, nl_b, nl_c, nl_d
35180 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
35181 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
35182 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
35183 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
35184 REAL(dp), &
35185 DIMENSION(3*nl_a, 3*nl_b, 9*nl_c, 1*nl_d) :: primitives
35186 REAL(dp), DIMENSION(3*3*15*1) :: buffer1, buffer2
35187
35188 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
35189 kmax, s_offset_a1, s_offset_b1, &
35190 s_offset_c1, s_offset_d1
35191
35192 s_offset_a1 = 0
35193 DO ia = 1, nl_a
35194 s_offset_b1 = 0
35195 DO ib = 1, nl_b
35196 s_offset_c1 = 0
35197 DO ic = 1, nl_c
35198 s_offset_d1 = 0
35199 DO id = 1, nl_d
35200 buffer1 = 0.0_dp
35201 imax = 3*15*1
35202 kmax = 3
35203 DO i = 1, imax
35204 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
35205 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
35206 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
35207 END DO
35208 buffer2 = 0.0_dp
35209 imax = 3*15*1
35210 kmax = 3
35211 DO i = 1, imax
35212 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
35213 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
35214 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
35215 END DO
35216 buffer1 = 0.0_dp
35217 imax = 3*3*1
35218 kmax = 15
35219 DO i = 1, imax
35220 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
35221 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
35222 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
35223 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
35224 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
35225 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
35226 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
35227 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
35228 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
35229 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
35230 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
35231 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
35232 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
35233 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
35234 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
35235 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
35236 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
35237 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
35238 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
35239 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
35240 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
35241 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
35242 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
35243 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
35244 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
35245 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
35246 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
35247 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
35248 END DO
35249 imax = 3*3*9
35250 kmax = 1
35251 i = 0
35252 DO i1 = 1, 9
35253 DO i2 = 1, 3
35254 DO i3 = 1, 3
35255 i = i + 1
35256 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
35257 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
35258 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
35259 END DO
35260 END DO
35261 END DO
35262 s_offset_d1 = s_offset_d1 + 1
35263 END DO
35264 s_offset_c1 = s_offset_c1 + 9
35265 END DO
35266 s_offset_b1 = s_offset_b1 + 3
35267 END DO
35268 s_offset_a1 = s_offset_a1 + 3
35269 END DO
35270 END SUBROUTINE contract_ppgs
35271#endif
35272#if __MAX_CONTR > 4 || __MAX_CONTR == 4
35273! **************************************************************************************************
35274!> \brief ...
35275!> \param work ...
35276!> \param nl_a ...
35277!> \param nl_b ...
35278!> \param nl_c ...
35279!> \param nl_d ...
35280!> \param sphi_a ...
35281!> \param sphi_b ...
35282!> \param sphi_c ...
35283!> \param sphi_d ...
35284!> \param primitives ...
35285!> \param buffer1 ...
35286!> \param buffer2 ...
35287! **************************************************************************************************
35288 SUBROUTINE contract_ppgp(work, &
35289 nl_a, nl_b, nl_c, nl_d, &
35290 sphi_a, sphi_b, sphi_c, sphi_d, &
35291 primitives, &
35292 buffer1, buffer2)
35293 REAL(dp), DIMENSION(3*3*15*3), INTENT(IN) :: work
35294 INTEGER :: nl_a, nl_b, nl_c, nl_d
35295 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
35296 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
35297 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
35298 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
35299 REAL(dp), &
35300 DIMENSION(3*nl_a, 3*nl_b, 9*nl_c, 3*nl_d) :: primitives
35301 REAL(dp), DIMENSION(3*3*15*3) :: buffer1, buffer2
35302
35303 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
35304 kmax, s_offset_a1, s_offset_b1, &
35305 s_offset_c1, s_offset_d1
35306
35307 s_offset_a1 = 0
35308 DO ia = 1, nl_a
35309 s_offset_b1 = 0
35310 DO ib = 1, nl_b
35311 s_offset_c1 = 0
35312 DO ic = 1, nl_c
35313 s_offset_d1 = 0
35314 DO id = 1, nl_d
35315 buffer1 = 0.0_dp
35316 imax = 3*15*3
35317 kmax = 3
35318 DO i = 1, imax
35319 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
35320 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
35321 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
35322 END DO
35323 buffer2 = 0.0_dp
35324 imax = 3*15*3
35325 kmax = 3
35326 DO i = 1, imax
35327 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
35328 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
35329 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
35330 END DO
35331 buffer1 = 0.0_dp
35332 imax = 3*3*3
35333 kmax = 15
35334 DO i = 1, imax
35335 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
35336 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
35337 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
35338 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
35339 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
35340 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
35341 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
35342 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
35343 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
35344 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
35345 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
35346 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
35347 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
35348 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
35349 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
35350 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
35351 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
35352 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
35353 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
35354 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
35355 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
35356 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
35357 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
35358 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
35359 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
35360 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
35361 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
35362 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
35363 END DO
35364 imax = 3*3*9
35365 kmax = 3
35366 i = 0
35367 DO i1 = 1, 9
35368 DO i2 = 1, 3
35369 DO i3 = 1, 3
35370 i = i + 1
35371 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
35372 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
35373 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
35374 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
35375 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
35376 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
35377 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
35378 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
35379 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
35380 END DO
35381 END DO
35382 END DO
35383 s_offset_d1 = s_offset_d1 + 3
35384 END DO
35385 s_offset_c1 = s_offset_c1 + 9
35386 END DO
35387 s_offset_b1 = s_offset_b1 + 3
35388 END DO
35389 s_offset_a1 = s_offset_a1 + 3
35390 END DO
35391 END SUBROUTINE contract_ppgp
35392#endif
35393#if __MAX_CONTR > 4 || __MAX_CONTR == 4
35394! **************************************************************************************************
35395!> \brief ...
35396!> \param work ...
35397!> \param nl_a ...
35398!> \param nl_b ...
35399!> \param nl_c ...
35400!> \param nl_d ...
35401!> \param sphi_a ...
35402!> \param sphi_b ...
35403!> \param sphi_c ...
35404!> \param sphi_d ...
35405!> \param primitives ...
35406!> \param buffer1 ...
35407!> \param buffer2 ...
35408! **************************************************************************************************
35409 SUBROUTINE contract_ppgd(work, &
35410 nl_a, nl_b, nl_c, nl_d, &
35411 sphi_a, sphi_b, sphi_c, sphi_d, &
35412 primitives, &
35413 buffer1, buffer2)
35414 REAL(dp), DIMENSION(3*3*15*6), INTENT(IN) :: work
35415 INTEGER :: nl_a, nl_b, nl_c, nl_d
35416 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
35417 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
35418 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
35419 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
35420 REAL(dp), &
35421 DIMENSION(3*nl_a, 3*nl_b, 9*nl_c, 5*nl_d) :: primitives
35422 REAL(dp), DIMENSION(3*3*15*6) :: buffer1, buffer2
35423
35424 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
35425 kmax, s_offset_a1, s_offset_b1, &
35426 s_offset_c1, s_offset_d1
35427
35428 s_offset_a1 = 0
35429 DO ia = 1, nl_a
35430 s_offset_b1 = 0
35431 DO ib = 1, nl_b
35432 s_offset_c1 = 0
35433 DO ic = 1, nl_c
35434 s_offset_d1 = 0
35435 DO id = 1, nl_d
35436 buffer1 = 0.0_dp
35437 imax = 3*15*6
35438 kmax = 3
35439 DO i = 1, imax
35440 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
35441 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
35442 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
35443 END DO
35444 buffer2 = 0.0_dp
35445 imax = 3*15*6
35446 kmax = 3
35447 DO i = 1, imax
35448 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
35449 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
35450 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
35451 END DO
35452 buffer1 = 0.0_dp
35453 imax = 3*3*6
35454 kmax = 15
35455 DO i = 1, imax
35456 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
35457 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
35458 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
35459 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
35460 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
35461 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
35462 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
35463 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
35464 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
35465 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
35466 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
35467 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
35468 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
35469 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
35470 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
35471 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
35472 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
35473 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
35474 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
35475 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
35476 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
35477 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
35478 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
35479 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
35480 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
35481 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
35482 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
35483 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
35484 END DO
35485 imax = 3*3*9
35486 kmax = 6
35487 i = 0
35488 DO i1 = 1, 9
35489 DO i2 = 1, 3
35490 DO i3 = 1, 3
35491 i = i + 1
35492 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
35493 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
35494 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
35495 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
35496 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
35497 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
35498 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
35499 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
35500 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
35501 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
35502 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
35503 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
35504 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
35505 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
35506 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
35507 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
35508 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
35509 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
35510 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
35511 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
35512 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
35513 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
35514 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
35515 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
35516 END DO
35517 END DO
35518 END DO
35519 s_offset_d1 = s_offset_d1 + 5
35520 END DO
35521 s_offset_c1 = s_offset_c1 + 9
35522 END DO
35523 s_offset_b1 = s_offset_b1 + 3
35524 END DO
35525 s_offset_a1 = s_offset_a1 + 3
35526 END DO
35527 END SUBROUTINE contract_ppgd
35528#endif
35529#if __MAX_CONTR > 4 || __MAX_CONTR == 4
35530! **************************************************************************************************
35531!> \brief ...
35532!> \param work ...
35533!> \param nl_a ...
35534!> \param nl_b ...
35535!> \param nl_c ...
35536!> \param nl_d ...
35537!> \param sphi_a ...
35538!> \param sphi_b ...
35539!> \param sphi_c ...
35540!> \param sphi_d ...
35541!> \param primitives ...
35542!> \param buffer1 ...
35543!> \param buffer2 ...
35544! **************************************************************************************************
35545 SUBROUTINE contract_ppgf(work, &
35546 nl_a, nl_b, nl_c, nl_d, &
35547 sphi_a, sphi_b, sphi_c, sphi_d, &
35548 primitives, &
35549 buffer1, buffer2)
35550 REAL(dp), DIMENSION(3*3*15*10), INTENT(IN) :: work
35551 INTEGER :: nl_a, nl_b, nl_c, nl_d
35552 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
35553 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
35554 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
35555 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
35556 REAL(dp), &
35557 DIMENSION(3*nl_a, 3*nl_b, 9*nl_c, 7*nl_d) :: primitives
35558 REAL(dp), DIMENSION(3*3*15*10) :: buffer1, buffer2
35559
35560 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
35561 kmax, s_offset_a1, s_offset_b1, &
35562 s_offset_c1, s_offset_d1
35563
35564 s_offset_a1 = 0
35565 DO ia = 1, nl_a
35566 s_offset_b1 = 0
35567 DO ib = 1, nl_b
35568 s_offset_c1 = 0
35569 DO ic = 1, nl_c
35570 s_offset_d1 = 0
35571 DO id = 1, nl_d
35572 buffer1 = 0.0_dp
35573 imax = 3*15*10
35574 kmax = 3
35575 DO i = 1, imax
35576 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
35577 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
35578 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
35579 END DO
35580 buffer2 = 0.0_dp
35581 imax = 3*15*10
35582 kmax = 3
35583 DO i = 1, imax
35584 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
35585 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
35586 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
35587 END DO
35588 buffer1 = 0.0_dp
35589 imax = 3*3*10
35590 kmax = 15
35591 DO i = 1, imax
35592 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
35593 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
35594 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
35595 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
35596 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
35597 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
35598 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
35599 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
35600 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
35601 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
35602 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
35603 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
35604 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
35605 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
35606 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
35607 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
35608 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
35609 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
35610 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
35611 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
35612 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
35613 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
35614 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
35615 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
35616 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
35617 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
35618 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
35619 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
35620 END DO
35621 imax = 3*3*9
35622 kmax = 10
35623 i = 0
35624 DO i1 = 1, 9
35625 DO i2 = 1, 3
35626 DO i3 = 1, 3
35627 i = i + 1
35628 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
35629 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
35630 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
35631 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
35632 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
35633 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
35634 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
35635 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
35636 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
35637 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
35638 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
35639 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
35640 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
35641 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
35642 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
35643 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
35644 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
35645 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
35646 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
35647 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
35648 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
35649 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
35650 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
35651 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
35652 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
35653 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
35654 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
35655 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
35656 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
35657 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
35658 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
35659 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
35660 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
35661 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
35662 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
35663 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
35664 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
35665 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
35666 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
35667 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
35668 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
35669 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
35670 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
35671 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
35672 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
35673 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
35674 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
35675 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
35676 END DO
35677 END DO
35678 END DO
35679 s_offset_d1 = s_offset_d1 + 7
35680 END DO
35681 s_offset_c1 = s_offset_c1 + 9
35682 END DO
35683 s_offset_b1 = s_offset_b1 + 3
35684 END DO
35685 s_offset_a1 = s_offset_a1 + 3
35686 END DO
35687 END SUBROUTINE contract_ppgf
35688#endif
35689#if __MAX_CONTR > 4 || __MAX_CONTR == 4
35690! **************************************************************************************************
35691!> \brief ...
35692!> \param work ...
35693!> \param nl_a ...
35694!> \param nl_b ...
35695!> \param nl_c ...
35696!> \param nl_d ...
35697!> \param sphi_a ...
35698!> \param sphi_b ...
35699!> \param sphi_c ...
35700!> \param sphi_d ...
35701!> \param primitives ...
35702!> \param buffer1 ...
35703!> \param buffer2 ...
35704! **************************************************************************************************
35705 SUBROUTINE contract_ppgg(work, &
35706 nl_a, nl_b, nl_c, nl_d, &
35707 sphi_a, sphi_b, sphi_c, sphi_d, &
35708 primitives, &
35709 buffer1, buffer2)
35710 REAL(dp), DIMENSION(3*3*15*15), INTENT(IN) :: work
35711 INTEGER :: nl_a, nl_b, nl_c, nl_d
35712 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
35713 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
35714 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
35715 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
35716 REAL(dp), &
35717 DIMENSION(3*nl_a, 3*nl_b, 9*nl_c, 9*nl_d) :: primitives
35718 REAL(dp), DIMENSION(3*3*15*15) :: buffer1, buffer2
35719
35720 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
35721 kmax, s_offset_a1, s_offset_b1, &
35722 s_offset_c1, s_offset_d1
35723
35724 s_offset_a1 = 0
35725 DO ia = 1, nl_a
35726 s_offset_b1 = 0
35727 DO ib = 1, nl_b
35728 s_offset_c1 = 0
35729 DO ic = 1, nl_c
35730 s_offset_d1 = 0
35731 DO id = 1, nl_d
35732 buffer1 = 0.0_dp
35733 imax = 3*15*15
35734 kmax = 3
35735 DO i = 1, imax
35736 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
35737 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
35738 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
35739 END DO
35740 buffer2 = 0.0_dp
35741 imax = 3*15*15
35742 kmax = 3
35743 DO i = 1, imax
35744 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
35745 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
35746 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
35747 END DO
35748 buffer1 = 0.0_dp
35749 imax = 3*3*15
35750 kmax = 15
35751 DO i = 1, imax
35752 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
35753 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
35754 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
35755 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
35756 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
35757 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
35758 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
35759 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
35760 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
35761 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
35762 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
35763 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
35764 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
35765 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
35766 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
35767 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
35768 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
35769 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
35770 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
35771 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
35772 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
35773 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
35774 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
35775 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
35776 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
35777 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
35778 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
35779 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
35780 END DO
35781 imax = 3*3*9
35782 kmax = 15
35783 i = 0
35784 DO i1 = 1, 9
35785 DO i2 = 1, 3
35786 DO i3 = 1, 3
35787 i = i + 1
35788 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
35789 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
35790 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
35791 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
35792 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
35793 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
35794 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
35795 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
35796 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
35797 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
35798 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
35799 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
35800 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
35801 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
35802 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
35803 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
35804 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
35805 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
35806 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
35807 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
35808 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
35809 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
35810 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
35811 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
35812 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
35813 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
35814 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
35815 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
35816 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
35817 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
35818 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
35819 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
35820 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
35821 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
35822 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
35823 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
35824 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
35825 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
35826 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
35827 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
35828 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
35829 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
35830 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
35831 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
35832 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
35833 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
35834 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
35835 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
35836 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
35837 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
35838 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
35839 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
35840 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
35841 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
35842 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
35843 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
35844 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
35845 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
35846 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
35847 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
35848 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
35849 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
35850 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
35851 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
35852 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
35853 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
35854 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
35855 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
35856 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
35857 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
35858 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
35859 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
35860 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
35861 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
35862 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
35863 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
35864 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
35865 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
35866 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
35867 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
35868 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
35869 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
35870 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
35871 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
35872 END DO
35873 END DO
35874 END DO
35875 s_offset_d1 = s_offset_d1 + 9
35876 END DO
35877 s_offset_c1 = s_offset_c1 + 9
35878 END DO
35879 s_offset_b1 = s_offset_b1 + 3
35880 END DO
35881 s_offset_a1 = s_offset_a1 + 3
35882 END DO
35883 END SUBROUTINE contract_ppgg
35884#endif
35885#if __MAX_CONTR > 2 || __MAX_CONTR == 2
35886! **************************************************************************************************
35887!> \brief ...
35888!> \param work ...
35889!> \param nl_a ...
35890!> \param nl_b ...
35891!> \param nl_c ...
35892!> \param nl_d ...
35893!> \param sphi_a ...
35894!> \param sphi_b ...
35895!> \param sphi_c ...
35896!> \param sphi_d ...
35897!> \param primitives ...
35898!> \param buffer1 ...
35899!> \param buffer2 ...
35900! **************************************************************************************************
35901 SUBROUTINE contract_pdss(work, &
35902 nl_a, nl_b, nl_c, nl_d, &
35903 sphi_a, sphi_b, sphi_c, sphi_d, &
35904 primitives, &
35905 buffer1, buffer2)
35906 REAL(dp), DIMENSION(3*6*1*1), INTENT(IN) :: work
35907 INTEGER :: nl_a, nl_b, nl_c, nl_d
35908 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
35909 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
35910 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
35911 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
35912 REAL(dp), &
35913 DIMENSION(3*nl_a, 5*nl_b, 1*nl_c, 1*nl_d) :: primitives
35914 REAL(dp), DIMENSION(3*6*1*1) :: buffer1, buffer2
35915
35916 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
35917 kmax, s_offset_a1, s_offset_b1, &
35918 s_offset_c1, s_offset_d1
35919
35920 s_offset_a1 = 0
35921 DO ia = 1, nl_a
35922 s_offset_b1 = 0
35923 DO ib = 1, nl_b
35924 s_offset_c1 = 0
35925 DO ic = 1, nl_c
35926 s_offset_d1 = 0
35927 DO id = 1, nl_d
35928 buffer1 = 0.0_dp
35929 imax = 6*1*1
35930 kmax = 3
35931 DO i = 1, imax
35932 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
35933 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
35934 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
35935 END DO
35936 buffer2 = 0.0_dp
35937 imax = 3*1*1
35938 kmax = 6
35939 DO i = 1, imax
35940 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
35941 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
35942 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
35943 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
35944 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
35945 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
35946 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
35947 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
35948 END DO
35949 buffer1 = 0.0_dp
35950 imax = 3*5*1
35951 kmax = 1
35952 DO i = 1, imax
35953 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
35954 END DO
35955 imax = 3*5*1
35956 kmax = 1
35957 i = 0
35958 DO i1 = 1, 1
35959 DO i2 = 1, 5
35960 DO i3 = 1, 3
35961 i = i + 1
35962 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
35963 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
35964 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
35965 END DO
35966 END DO
35967 END DO
35968 s_offset_d1 = s_offset_d1 + 1
35969 END DO
35970 s_offset_c1 = s_offset_c1 + 1
35971 END DO
35972 s_offset_b1 = s_offset_b1 + 5
35973 END DO
35974 s_offset_a1 = s_offset_a1 + 3
35975 END DO
35976 END SUBROUTINE contract_pdss
35977#endif
35978#if __MAX_CONTR > 2 || __MAX_CONTR == 2
35979! **************************************************************************************************
35980!> \brief ...
35981!> \param work ...
35982!> \param nl_a ...
35983!> \param nl_b ...
35984!> \param nl_c ...
35985!> \param nl_d ...
35986!> \param sphi_a ...
35987!> \param sphi_b ...
35988!> \param sphi_c ...
35989!> \param sphi_d ...
35990!> \param primitives ...
35991!> \param buffer1 ...
35992!> \param buffer2 ...
35993! **************************************************************************************************
35994 SUBROUTINE contract_pdsp(work, &
35995 nl_a, nl_b, nl_c, nl_d, &
35996 sphi_a, sphi_b, sphi_c, sphi_d, &
35997 primitives, &
35998 buffer1, buffer2)
35999 REAL(dp), DIMENSION(3*6*1*3), INTENT(IN) :: work
36000 INTEGER :: nl_a, nl_b, nl_c, nl_d
36001 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
36002 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
36003 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
36004 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
36005 REAL(dp), &
36006 DIMENSION(3*nl_a, 5*nl_b, 1*nl_c, 3*nl_d) :: primitives
36007 REAL(dp), DIMENSION(3*6*1*3) :: buffer1, buffer2
36008
36009 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
36010 kmax, s_offset_a1, s_offset_b1, &
36011 s_offset_c1, s_offset_d1
36012
36013 s_offset_a1 = 0
36014 DO ia = 1, nl_a
36015 s_offset_b1 = 0
36016 DO ib = 1, nl_b
36017 s_offset_c1 = 0
36018 DO ic = 1, nl_c
36019 s_offset_d1 = 0
36020 DO id = 1, nl_d
36021 buffer1 = 0.0_dp
36022 imax = 6*1*3
36023 kmax = 3
36024 DO i = 1, imax
36025 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
36026 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
36027 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
36028 END DO
36029 buffer2 = 0.0_dp
36030 imax = 3*1*3
36031 kmax = 6
36032 DO i = 1, imax
36033 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
36034 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
36035 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
36036 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
36037 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
36038 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
36039 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
36040 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
36041 END DO
36042 buffer1 = 0.0_dp
36043 imax = 3*5*3
36044 kmax = 1
36045 DO i = 1, imax
36046 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
36047 END DO
36048 imax = 3*5*1
36049 kmax = 3
36050 i = 0
36051 DO i1 = 1, 1
36052 DO i2 = 1, 5
36053 DO i3 = 1, 3
36054 i = i + 1
36055 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
36056 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
36057 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
36058 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
36059 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
36060 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
36061 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
36062 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
36063 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
36064 END DO
36065 END DO
36066 END DO
36067 s_offset_d1 = s_offset_d1 + 3
36068 END DO
36069 s_offset_c1 = s_offset_c1 + 1
36070 END DO
36071 s_offset_b1 = s_offset_b1 + 5
36072 END DO
36073 s_offset_a1 = s_offset_a1 + 3
36074 END DO
36075 END SUBROUTINE contract_pdsp
36076#endif
36077#if __MAX_CONTR > 2 || __MAX_CONTR == 2
36078! **************************************************************************************************
36079!> \brief ...
36080!> \param work ...
36081!> \param nl_a ...
36082!> \param nl_b ...
36083!> \param nl_c ...
36084!> \param nl_d ...
36085!> \param sphi_a ...
36086!> \param sphi_b ...
36087!> \param sphi_c ...
36088!> \param sphi_d ...
36089!> \param primitives ...
36090!> \param buffer1 ...
36091!> \param buffer2 ...
36092! **************************************************************************************************
36093 SUBROUTINE contract_pdsd(work, &
36094 nl_a, nl_b, nl_c, nl_d, &
36095 sphi_a, sphi_b, sphi_c, sphi_d, &
36096 primitives, &
36097 buffer1, buffer2)
36098 REAL(dp), DIMENSION(3*6*1*6), INTENT(IN) :: work
36099 INTEGER :: nl_a, nl_b, nl_c, nl_d
36100 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
36101 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
36102 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
36103 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
36104 REAL(dp), &
36105 DIMENSION(3*nl_a, 5*nl_b, 1*nl_c, 5*nl_d) :: primitives
36106 REAL(dp), DIMENSION(3*6*1*6) :: buffer1, buffer2
36107
36108 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
36109 kmax, s_offset_a1, s_offset_b1, &
36110 s_offset_c1, s_offset_d1
36111
36112 s_offset_a1 = 0
36113 DO ia = 1, nl_a
36114 s_offset_b1 = 0
36115 DO ib = 1, nl_b
36116 s_offset_c1 = 0
36117 DO ic = 1, nl_c
36118 s_offset_d1 = 0
36119 DO id = 1, nl_d
36120 buffer1 = 0.0_dp
36121 imax = 6*1*6
36122 kmax = 3
36123 DO i = 1, imax
36124 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
36125 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
36126 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
36127 END DO
36128 buffer2 = 0.0_dp
36129 imax = 3*1*6
36130 kmax = 6
36131 DO i = 1, imax
36132 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
36133 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
36134 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
36135 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
36136 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
36137 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
36138 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
36139 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
36140 END DO
36141 buffer1 = 0.0_dp
36142 imax = 3*5*6
36143 kmax = 1
36144 DO i = 1, imax
36145 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
36146 END DO
36147 imax = 3*5*1
36148 kmax = 6
36149 i = 0
36150 DO i1 = 1, 1
36151 DO i2 = 1, 5
36152 DO i3 = 1, 3
36153 i = i + 1
36154 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
36155 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
36156 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
36157 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
36158 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
36159 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
36160 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
36161 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
36162 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
36163 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
36164 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
36165 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
36166 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
36167 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
36168 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
36169 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
36170 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
36171 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
36172 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
36173 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
36174 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
36175 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
36176 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
36177 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
36178 END DO
36179 END DO
36180 END DO
36181 s_offset_d1 = s_offset_d1 + 5
36182 END DO
36183 s_offset_c1 = s_offset_c1 + 1
36184 END DO
36185 s_offset_b1 = s_offset_b1 + 5
36186 END DO
36187 s_offset_a1 = s_offset_a1 + 3
36188 END DO
36189 END SUBROUTINE contract_pdsd
36190#endif
36191#if __MAX_CONTR > 3 || __MAX_CONTR == 3
36192! **************************************************************************************************
36193!> \brief ...
36194!> \param work ...
36195!> \param nl_a ...
36196!> \param nl_b ...
36197!> \param nl_c ...
36198!> \param nl_d ...
36199!> \param sphi_a ...
36200!> \param sphi_b ...
36201!> \param sphi_c ...
36202!> \param sphi_d ...
36203!> \param primitives ...
36204!> \param buffer1 ...
36205!> \param buffer2 ...
36206! **************************************************************************************************
36207 SUBROUTINE contract_pdsf(work, &
36208 nl_a, nl_b, nl_c, nl_d, &
36209 sphi_a, sphi_b, sphi_c, sphi_d, &
36210 primitives, &
36211 buffer1, buffer2)
36212 REAL(dp), DIMENSION(3*6*1*10), INTENT(IN) :: work
36213 INTEGER :: nl_a, nl_b, nl_c, nl_d
36214 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
36215 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
36216 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
36217 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
36218 REAL(dp), &
36219 DIMENSION(3*nl_a, 5*nl_b, 1*nl_c, 7*nl_d) :: primitives
36220 REAL(dp), DIMENSION(3*6*1*10) :: buffer1, buffer2
36221
36222 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
36223 kmax, s_offset_a1, s_offset_b1, &
36224 s_offset_c1, s_offset_d1
36225
36226 s_offset_a1 = 0
36227 DO ia = 1, nl_a
36228 s_offset_b1 = 0
36229 DO ib = 1, nl_b
36230 s_offset_c1 = 0
36231 DO ic = 1, nl_c
36232 s_offset_d1 = 0
36233 DO id = 1, nl_d
36234 buffer1 = 0.0_dp
36235 imax = 6*1*10
36236 kmax = 3
36237 DO i = 1, imax
36238 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
36239 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
36240 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
36241 END DO
36242 buffer2 = 0.0_dp
36243 imax = 3*1*10
36244 kmax = 6
36245 DO i = 1, imax
36246 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
36247 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
36248 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
36249 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
36250 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
36251 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
36252 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
36253 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
36254 END DO
36255 buffer1 = 0.0_dp
36256 imax = 3*5*10
36257 kmax = 1
36258 DO i = 1, imax
36259 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
36260 END DO
36261 imax = 3*5*1
36262 kmax = 10
36263 i = 0
36264 DO i1 = 1, 1
36265 DO i2 = 1, 5
36266 DO i3 = 1, 3
36267 i = i + 1
36268 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
36269 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
36270 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
36271 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
36272 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
36273 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
36274 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
36275 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
36276 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
36277 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
36278 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
36279 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
36280 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
36281 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
36282 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
36283 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
36284 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
36285 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
36286 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
36287 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
36288 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
36289 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
36290 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
36291 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
36292 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
36293 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
36294 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
36295 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
36296 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
36297 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
36298 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
36299 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
36300 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
36301 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
36302 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
36303 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
36304 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
36305 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
36306 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
36307 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
36308 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
36309 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
36310 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
36311 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
36312 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
36313 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
36314 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
36315 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
36316 END DO
36317 END DO
36318 END DO
36319 s_offset_d1 = s_offset_d1 + 7
36320 END DO
36321 s_offset_c1 = s_offset_c1 + 1
36322 END DO
36323 s_offset_b1 = s_offset_b1 + 5
36324 END DO
36325 s_offset_a1 = s_offset_a1 + 3
36326 END DO
36327 END SUBROUTINE contract_pdsf
36328#endif
36329#if __MAX_CONTR > 4 || __MAX_CONTR == 4
36330! **************************************************************************************************
36331!> \brief ...
36332!> \param work ...
36333!> \param nl_a ...
36334!> \param nl_b ...
36335!> \param nl_c ...
36336!> \param nl_d ...
36337!> \param sphi_a ...
36338!> \param sphi_b ...
36339!> \param sphi_c ...
36340!> \param sphi_d ...
36341!> \param primitives ...
36342!> \param buffer1 ...
36343!> \param buffer2 ...
36344! **************************************************************************************************
36345 SUBROUTINE contract_pdsg(work, &
36346 nl_a, nl_b, nl_c, nl_d, &
36347 sphi_a, sphi_b, sphi_c, sphi_d, &
36348 primitives, &
36349 buffer1, buffer2)
36350 REAL(dp), DIMENSION(3*6*1*15), INTENT(IN) :: work
36351 INTEGER :: nl_a, nl_b, nl_c, nl_d
36352 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
36353 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
36354 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
36355 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
36356 REAL(dp), &
36357 DIMENSION(3*nl_a, 5*nl_b, 1*nl_c, 9*nl_d) :: primitives
36358 REAL(dp), DIMENSION(3*6*1*15) :: buffer1, buffer2
36359
36360 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
36361 kmax, s_offset_a1, s_offset_b1, &
36362 s_offset_c1, s_offset_d1
36363
36364 s_offset_a1 = 0
36365 DO ia = 1, nl_a
36366 s_offset_b1 = 0
36367 DO ib = 1, nl_b
36368 s_offset_c1 = 0
36369 DO ic = 1, nl_c
36370 s_offset_d1 = 0
36371 DO id = 1, nl_d
36372 buffer1 = 0.0_dp
36373 imax = 6*1*15
36374 kmax = 3
36375 DO i = 1, imax
36376 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
36377 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
36378 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
36379 END DO
36380 buffer2 = 0.0_dp
36381 imax = 3*1*15
36382 kmax = 6
36383 DO i = 1, imax
36384 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
36385 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
36386 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
36387 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
36388 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
36389 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
36390 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
36391 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
36392 END DO
36393 buffer1 = 0.0_dp
36394 imax = 3*5*15
36395 kmax = 1
36396 DO i = 1, imax
36397 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
36398 END DO
36399 imax = 3*5*1
36400 kmax = 15
36401 i = 0
36402 DO i1 = 1, 1
36403 DO i2 = 1, 5
36404 DO i3 = 1, 3
36405 i = i + 1
36406 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
36407 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
36408 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
36409 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
36410 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
36411 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
36412 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
36413 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
36414 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
36415 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
36416 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
36417 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
36418 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
36419 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
36420 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
36421 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
36422 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
36423 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
36424 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
36425 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
36426 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
36427 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
36428 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
36429 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
36430 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
36431 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
36432 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
36433 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
36434 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
36435 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
36436 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
36437 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
36438 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
36439 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
36440 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
36441 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
36442 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
36443 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
36444 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
36445 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
36446 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
36447 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
36448 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
36449 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
36450 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
36451 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
36452 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
36453 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
36454 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
36455 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
36456 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
36457 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
36458 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
36459 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
36460 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
36461 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
36462 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
36463 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
36464 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
36465 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
36466 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
36467 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
36468 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
36469 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
36470 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
36471 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
36472 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
36473 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
36474 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
36475 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
36476 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
36477 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
36478 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
36479 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
36480 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
36481 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
36482 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
36483 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
36484 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
36485 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
36486 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
36487 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
36488 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
36489 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
36490 END DO
36491 END DO
36492 END DO
36493 s_offset_d1 = s_offset_d1 + 9
36494 END DO
36495 s_offset_c1 = s_offset_c1 + 1
36496 END DO
36497 s_offset_b1 = s_offset_b1 + 5
36498 END DO
36499 s_offset_a1 = s_offset_a1 + 3
36500 END DO
36501 END SUBROUTINE contract_pdsg
36502#endif
36503#if __MAX_CONTR > 2 || __MAX_CONTR == 2
36504! **************************************************************************************************
36505!> \brief ...
36506!> \param work ...
36507!> \param nl_a ...
36508!> \param nl_b ...
36509!> \param nl_c ...
36510!> \param nl_d ...
36511!> \param sphi_a ...
36512!> \param sphi_b ...
36513!> \param sphi_c ...
36514!> \param sphi_d ...
36515!> \param primitives ...
36516!> \param buffer1 ...
36517!> \param buffer2 ...
36518! **************************************************************************************************
36519 SUBROUTINE contract_pdps(work, &
36520 nl_a, nl_b, nl_c, nl_d, &
36521 sphi_a, sphi_b, sphi_c, sphi_d, &
36522 primitives, &
36523 buffer1, buffer2)
36524 REAL(dp), DIMENSION(3*6*3*1), INTENT(IN) :: work
36525 INTEGER :: nl_a, nl_b, nl_c, nl_d
36526 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
36527 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
36528 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
36529 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
36530 REAL(dp), &
36531 DIMENSION(3*nl_a, 5*nl_b, 3*nl_c, 1*nl_d) :: primitives
36532 REAL(dp), DIMENSION(3*6*3*1) :: buffer1, buffer2
36533
36534 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
36535 kmax, s_offset_a1, s_offset_b1, &
36536 s_offset_c1, s_offset_d1
36537
36538 s_offset_a1 = 0
36539 DO ia = 1, nl_a
36540 s_offset_b1 = 0
36541 DO ib = 1, nl_b
36542 s_offset_c1 = 0
36543 DO ic = 1, nl_c
36544 s_offset_d1 = 0
36545 DO id = 1, nl_d
36546 buffer1 = 0.0_dp
36547 imax = 6*3*1
36548 kmax = 3
36549 DO i = 1, imax
36550 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
36551 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
36552 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
36553 END DO
36554 buffer2 = 0.0_dp
36555 imax = 3*3*1
36556 kmax = 6
36557 DO i = 1, imax
36558 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
36559 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
36560 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
36561 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
36562 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
36563 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
36564 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
36565 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
36566 END DO
36567 buffer1 = 0.0_dp
36568 imax = 3*5*1
36569 kmax = 3
36570 DO i = 1, imax
36571 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
36572 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
36573 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
36574 END DO
36575 imax = 3*5*3
36576 kmax = 1
36577 i = 0
36578 DO i1 = 1, 3
36579 DO i2 = 1, 5
36580 DO i3 = 1, 3
36581 i = i + 1
36582 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
36583 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
36584 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
36585 END DO
36586 END DO
36587 END DO
36588 s_offset_d1 = s_offset_d1 + 1
36589 END DO
36590 s_offset_c1 = s_offset_c1 + 3
36591 END DO
36592 s_offset_b1 = s_offset_b1 + 5
36593 END DO
36594 s_offset_a1 = s_offset_a1 + 3
36595 END DO
36596 END SUBROUTINE contract_pdps
36597#endif
36598#if __MAX_CONTR > 2 || __MAX_CONTR == 2
36599! **************************************************************************************************
36600!> \brief ...
36601!> \param work ...
36602!> \param nl_a ...
36603!> \param nl_b ...
36604!> \param nl_c ...
36605!> \param nl_d ...
36606!> \param sphi_a ...
36607!> \param sphi_b ...
36608!> \param sphi_c ...
36609!> \param sphi_d ...
36610!> \param primitives ...
36611!> \param buffer1 ...
36612!> \param buffer2 ...
36613! **************************************************************************************************
36614 SUBROUTINE contract_pdpp(work, &
36615 nl_a, nl_b, nl_c, nl_d, &
36616 sphi_a, sphi_b, sphi_c, sphi_d, &
36617 primitives, &
36618 buffer1, buffer2)
36619 REAL(dp), DIMENSION(3*6*3*3), INTENT(IN) :: work
36620 INTEGER :: nl_a, nl_b, nl_c, nl_d
36621 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
36622 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
36623 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
36624 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
36625 REAL(dp), &
36626 DIMENSION(3*nl_a, 5*nl_b, 3*nl_c, 3*nl_d) :: primitives
36627 REAL(dp), DIMENSION(3*6*3*3) :: buffer1, buffer2
36628
36629 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
36630 kmax, s_offset_a1, s_offset_b1, &
36631 s_offset_c1, s_offset_d1
36632
36633 s_offset_a1 = 0
36634 DO ia = 1, nl_a
36635 s_offset_b1 = 0
36636 DO ib = 1, nl_b
36637 s_offset_c1 = 0
36638 DO ic = 1, nl_c
36639 s_offset_d1 = 0
36640 DO id = 1, nl_d
36641 buffer1 = 0.0_dp
36642 imax = 6*3*3
36643 kmax = 3
36644 DO i = 1, imax
36645 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
36646 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
36647 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
36648 END DO
36649 buffer2 = 0.0_dp
36650 imax = 3*3*3
36651 kmax = 6
36652 DO i = 1, imax
36653 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
36654 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
36655 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
36656 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
36657 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
36658 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
36659 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
36660 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
36661 END DO
36662 buffer1 = 0.0_dp
36663 imax = 3*5*3
36664 kmax = 3
36665 DO i = 1, imax
36666 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
36667 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
36668 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
36669 END DO
36670 imax = 3*5*3
36671 kmax = 3
36672 i = 0
36673 DO i1 = 1, 3
36674 DO i2 = 1, 5
36675 DO i3 = 1, 3
36676 i = i + 1
36677 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
36678 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
36679 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
36680 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
36681 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
36682 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
36683 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
36684 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
36685 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
36686 END DO
36687 END DO
36688 END DO
36689 s_offset_d1 = s_offset_d1 + 3
36690 END DO
36691 s_offset_c1 = s_offset_c1 + 3
36692 END DO
36693 s_offset_b1 = s_offset_b1 + 5
36694 END DO
36695 s_offset_a1 = s_offset_a1 + 3
36696 END DO
36697 END SUBROUTINE contract_pdpp
36698#endif
36699#if __MAX_CONTR > 2 || __MAX_CONTR == 2
36700! **************************************************************************************************
36701!> \brief ...
36702!> \param work ...
36703!> \param nl_a ...
36704!> \param nl_b ...
36705!> \param nl_c ...
36706!> \param nl_d ...
36707!> \param sphi_a ...
36708!> \param sphi_b ...
36709!> \param sphi_c ...
36710!> \param sphi_d ...
36711!> \param primitives ...
36712!> \param buffer1 ...
36713!> \param buffer2 ...
36714! **************************************************************************************************
36715 SUBROUTINE contract_pdpd(work, &
36716 nl_a, nl_b, nl_c, nl_d, &
36717 sphi_a, sphi_b, sphi_c, sphi_d, &
36718 primitives, &
36719 buffer1, buffer2)
36720 REAL(dp), DIMENSION(3*6*3*6), INTENT(IN) :: work
36721 INTEGER :: nl_a, nl_b, nl_c, nl_d
36722 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
36723 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
36724 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
36725 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
36726 REAL(dp), &
36727 DIMENSION(3*nl_a, 5*nl_b, 3*nl_c, 5*nl_d) :: primitives
36728 REAL(dp), DIMENSION(3*6*3*6) :: buffer1, buffer2
36729
36730 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
36731 kmax, s_offset_a1, s_offset_b1, &
36732 s_offset_c1, s_offset_d1
36733
36734 s_offset_a1 = 0
36735 DO ia = 1, nl_a
36736 s_offset_b1 = 0
36737 DO ib = 1, nl_b
36738 s_offset_c1 = 0
36739 DO ic = 1, nl_c
36740 s_offset_d1 = 0
36741 DO id = 1, nl_d
36742 buffer1 = 0.0_dp
36743 imax = 6*3*6
36744 kmax = 3
36745 DO i = 1, imax
36746 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
36747 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
36748 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
36749 END DO
36750 buffer2 = 0.0_dp
36751 imax = 3*3*6
36752 kmax = 6
36753 DO i = 1, imax
36754 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
36755 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
36756 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
36757 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
36758 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
36759 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
36760 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
36761 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
36762 END DO
36763 buffer1 = 0.0_dp
36764 imax = 3*5*6
36765 kmax = 3
36766 DO i = 1, imax
36767 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
36768 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
36769 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
36770 END DO
36771 imax = 3*5*3
36772 kmax = 6
36773 i = 0
36774 DO i1 = 1, 3
36775 DO i2 = 1, 5
36776 DO i3 = 1, 3
36777 i = i + 1
36778 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
36779 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
36780 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
36781 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
36782 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
36783 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
36784 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
36785 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
36786 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
36787 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
36788 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
36789 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
36790 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
36791 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
36792 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
36793 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
36794 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
36795 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
36796 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
36797 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
36798 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
36799 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
36800 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
36801 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
36802 END DO
36803 END DO
36804 END DO
36805 s_offset_d1 = s_offset_d1 + 5
36806 END DO
36807 s_offset_c1 = s_offset_c1 + 3
36808 END DO
36809 s_offset_b1 = s_offset_b1 + 5
36810 END DO
36811 s_offset_a1 = s_offset_a1 + 3
36812 END DO
36813 END SUBROUTINE contract_pdpd
36814#endif
36815#if __MAX_CONTR > 3 || __MAX_CONTR == 3
36816! **************************************************************************************************
36817!> \brief ...
36818!> \param work ...
36819!> \param nl_a ...
36820!> \param nl_b ...
36821!> \param nl_c ...
36822!> \param nl_d ...
36823!> \param sphi_a ...
36824!> \param sphi_b ...
36825!> \param sphi_c ...
36826!> \param sphi_d ...
36827!> \param primitives ...
36828!> \param buffer1 ...
36829!> \param buffer2 ...
36830! **************************************************************************************************
36831 SUBROUTINE contract_pdpf(work, &
36832 nl_a, nl_b, nl_c, nl_d, &
36833 sphi_a, sphi_b, sphi_c, sphi_d, &
36834 primitives, &
36835 buffer1, buffer2)
36836 REAL(dp), DIMENSION(3*6*3*10), INTENT(IN) :: work
36837 INTEGER :: nl_a, nl_b, nl_c, nl_d
36838 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
36839 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
36840 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
36841 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
36842 REAL(dp), &
36843 DIMENSION(3*nl_a, 5*nl_b, 3*nl_c, 7*nl_d) :: primitives
36844 REAL(dp), DIMENSION(3*6*3*10) :: buffer1, buffer2
36845
36846 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
36847 kmax, s_offset_a1, s_offset_b1, &
36848 s_offset_c1, s_offset_d1
36849
36850 s_offset_a1 = 0
36851 DO ia = 1, nl_a
36852 s_offset_b1 = 0
36853 DO ib = 1, nl_b
36854 s_offset_c1 = 0
36855 DO ic = 1, nl_c
36856 s_offset_d1 = 0
36857 DO id = 1, nl_d
36858 buffer1 = 0.0_dp
36859 imax = 6*3*10
36860 kmax = 3
36861 DO i = 1, imax
36862 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
36863 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
36864 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
36865 END DO
36866 buffer2 = 0.0_dp
36867 imax = 3*3*10
36868 kmax = 6
36869 DO i = 1, imax
36870 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
36871 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
36872 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
36873 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
36874 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
36875 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
36876 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
36877 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
36878 END DO
36879 buffer1 = 0.0_dp
36880 imax = 3*5*10
36881 kmax = 3
36882 DO i = 1, imax
36883 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
36884 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
36885 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
36886 END DO
36887 imax = 3*5*3
36888 kmax = 10
36889 i = 0
36890 DO i1 = 1, 3
36891 DO i2 = 1, 5
36892 DO i3 = 1, 3
36893 i = i + 1
36894 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
36895 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
36896 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
36897 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
36898 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
36899 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
36900 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
36901 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
36902 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
36903 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
36904 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
36905 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
36906 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
36907 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
36908 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
36909 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
36910 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
36911 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
36912 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
36913 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
36914 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
36915 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
36916 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
36917 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
36918 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
36919 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
36920 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
36921 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
36922 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
36923 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
36924 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
36925 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
36926 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
36927 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
36928 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
36929 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
36930 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
36931 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
36932 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
36933 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
36934 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
36935 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
36936 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
36937 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
36938 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
36939 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
36940 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
36941 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
36942 END DO
36943 END DO
36944 END DO
36945 s_offset_d1 = s_offset_d1 + 7
36946 END DO
36947 s_offset_c1 = s_offset_c1 + 3
36948 END DO
36949 s_offset_b1 = s_offset_b1 + 5
36950 END DO
36951 s_offset_a1 = s_offset_a1 + 3
36952 END DO
36953 END SUBROUTINE contract_pdpf
36954#endif
36955#if __MAX_CONTR > 4 || __MAX_CONTR == 4
36956! **************************************************************************************************
36957!> \brief ...
36958!> \param work ...
36959!> \param nl_a ...
36960!> \param nl_b ...
36961!> \param nl_c ...
36962!> \param nl_d ...
36963!> \param sphi_a ...
36964!> \param sphi_b ...
36965!> \param sphi_c ...
36966!> \param sphi_d ...
36967!> \param primitives ...
36968!> \param buffer1 ...
36969!> \param buffer2 ...
36970! **************************************************************************************************
36971 SUBROUTINE contract_pdpg(work, &
36972 nl_a, nl_b, nl_c, nl_d, &
36973 sphi_a, sphi_b, sphi_c, sphi_d, &
36974 primitives, &
36975 buffer1, buffer2)
36976 REAL(dp), DIMENSION(3*6*3*15), INTENT(IN) :: work
36977 INTEGER :: nl_a, nl_b, nl_c, nl_d
36978 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
36979 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
36980 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
36981 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
36982 REAL(dp), &
36983 DIMENSION(3*nl_a, 5*nl_b, 3*nl_c, 9*nl_d) :: primitives
36984 REAL(dp), DIMENSION(3*6*3*15) :: buffer1, buffer2
36985
36986 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
36987 kmax, s_offset_a1, s_offset_b1, &
36988 s_offset_c1, s_offset_d1
36989
36990 s_offset_a1 = 0
36991 DO ia = 1, nl_a
36992 s_offset_b1 = 0
36993 DO ib = 1, nl_b
36994 s_offset_c1 = 0
36995 DO ic = 1, nl_c
36996 s_offset_d1 = 0
36997 DO id = 1, nl_d
36998 buffer1 = 0.0_dp
36999 imax = 6*3*15
37000 kmax = 3
37001 DO i = 1, imax
37002 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
37003 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
37004 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
37005 END DO
37006 buffer2 = 0.0_dp
37007 imax = 3*3*15
37008 kmax = 6
37009 DO i = 1, imax
37010 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
37011 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
37012 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
37013 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
37014 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
37015 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
37016 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
37017 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
37018 END DO
37019 buffer1 = 0.0_dp
37020 imax = 3*5*15
37021 kmax = 3
37022 DO i = 1, imax
37023 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
37024 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
37025 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
37026 END DO
37027 imax = 3*5*3
37028 kmax = 15
37029 i = 0
37030 DO i1 = 1, 3
37031 DO i2 = 1, 5
37032 DO i3 = 1, 3
37033 i = i + 1
37034 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
37035 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
37036 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
37037 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
37038 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
37039 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
37040 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
37041 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
37042 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
37043 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
37044 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
37045 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
37046 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
37047 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
37048 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
37049 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
37050 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
37051 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
37052 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
37053 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
37054 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
37055 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
37056 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
37057 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
37058 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
37059 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
37060 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
37061 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
37062 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
37063 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
37064 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
37065 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
37066 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
37067 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
37068 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
37069 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
37070 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
37071 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
37072 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
37073 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
37074 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
37075 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
37076 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
37077 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
37078 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
37079 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
37080 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
37081 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
37082 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
37083 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
37084 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
37085 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
37086 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
37087 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
37088 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
37089 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
37090 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
37091 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
37092 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
37093 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
37094 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
37095 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
37096 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
37097 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
37098 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
37099 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
37100 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
37101 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
37102 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
37103 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
37104 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
37105 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
37106 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
37107 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
37108 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
37109 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
37110 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
37111 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
37112 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
37113 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
37114 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
37115 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
37116 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
37117 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
37118 END DO
37119 END DO
37120 END DO
37121 s_offset_d1 = s_offset_d1 + 9
37122 END DO
37123 s_offset_c1 = s_offset_c1 + 3
37124 END DO
37125 s_offset_b1 = s_offset_b1 + 5
37126 END DO
37127 s_offset_a1 = s_offset_a1 + 3
37128 END DO
37129 END SUBROUTINE contract_pdpg
37130#endif
37131#if __MAX_CONTR > 2 || __MAX_CONTR == 2
37132! **************************************************************************************************
37133!> \brief ...
37134!> \param work ...
37135!> \param nl_a ...
37136!> \param nl_b ...
37137!> \param nl_c ...
37138!> \param nl_d ...
37139!> \param sphi_a ...
37140!> \param sphi_b ...
37141!> \param sphi_c ...
37142!> \param sphi_d ...
37143!> \param primitives ...
37144!> \param buffer1 ...
37145!> \param buffer2 ...
37146! **************************************************************************************************
37147 SUBROUTINE contract_pdds(work, &
37148 nl_a, nl_b, nl_c, nl_d, &
37149 sphi_a, sphi_b, sphi_c, sphi_d, &
37150 primitives, &
37151 buffer1, buffer2)
37152 REAL(dp), DIMENSION(3*6*6*1), INTENT(IN) :: work
37153 INTEGER :: nl_a, nl_b, nl_c, nl_d
37154 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
37155 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
37156 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
37157 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
37158 REAL(dp), &
37159 DIMENSION(3*nl_a, 5*nl_b, 5*nl_c, 1*nl_d) :: primitives
37160 REAL(dp), DIMENSION(3*6*6*1) :: buffer1, buffer2
37161
37162 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
37163 kmax, s_offset_a1, s_offset_b1, &
37164 s_offset_c1, s_offset_d1
37165
37166 s_offset_a1 = 0
37167 DO ia = 1, nl_a
37168 s_offset_b1 = 0
37169 DO ib = 1, nl_b
37170 s_offset_c1 = 0
37171 DO ic = 1, nl_c
37172 s_offset_d1 = 0
37173 DO id = 1, nl_d
37174 buffer1 = 0.0_dp
37175 imax = 6*6*1
37176 kmax = 3
37177 DO i = 1, imax
37178 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
37179 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
37180 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
37181 END DO
37182 buffer2 = 0.0_dp
37183 imax = 3*6*1
37184 kmax = 6
37185 DO i = 1, imax
37186 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
37187 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
37188 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
37189 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
37190 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
37191 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
37192 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
37193 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
37194 END DO
37195 buffer1 = 0.0_dp
37196 imax = 3*5*1
37197 kmax = 6
37198 DO i = 1, imax
37199 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
37200 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
37201 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
37202 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
37203 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
37204 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
37205 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
37206 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
37207 END DO
37208 imax = 3*5*5
37209 kmax = 1
37210 i = 0
37211 DO i1 = 1, 5
37212 DO i2 = 1, 5
37213 DO i3 = 1, 3
37214 i = i + 1
37215 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
37216 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
37217 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
37218 END DO
37219 END DO
37220 END DO
37221 s_offset_d1 = s_offset_d1 + 1
37222 END DO
37223 s_offset_c1 = s_offset_c1 + 5
37224 END DO
37225 s_offset_b1 = s_offset_b1 + 5
37226 END DO
37227 s_offset_a1 = s_offset_a1 + 3
37228 END DO
37229 END SUBROUTINE contract_pdds
37230#endif
37231#if __MAX_CONTR > 2 || __MAX_CONTR == 2
37232! **************************************************************************************************
37233!> \brief ...
37234!> \param work ...
37235!> \param nl_a ...
37236!> \param nl_b ...
37237!> \param nl_c ...
37238!> \param nl_d ...
37239!> \param sphi_a ...
37240!> \param sphi_b ...
37241!> \param sphi_c ...
37242!> \param sphi_d ...
37243!> \param primitives ...
37244!> \param buffer1 ...
37245!> \param buffer2 ...
37246! **************************************************************************************************
37247 SUBROUTINE contract_pddp(work, &
37248 nl_a, nl_b, nl_c, nl_d, &
37249 sphi_a, sphi_b, sphi_c, sphi_d, &
37250 primitives, &
37251 buffer1, buffer2)
37252 REAL(dp), DIMENSION(3*6*6*3), INTENT(IN) :: work
37253 INTEGER :: nl_a, nl_b, nl_c, nl_d
37254 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
37255 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
37256 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
37257 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
37258 REAL(dp), &
37259 DIMENSION(3*nl_a, 5*nl_b, 5*nl_c, 3*nl_d) :: primitives
37260 REAL(dp), DIMENSION(3*6*6*3) :: buffer1, buffer2
37261
37262 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
37263 kmax, s_offset_a1, s_offset_b1, &
37264 s_offset_c1, s_offset_d1
37265
37266 s_offset_a1 = 0
37267 DO ia = 1, nl_a
37268 s_offset_b1 = 0
37269 DO ib = 1, nl_b
37270 s_offset_c1 = 0
37271 DO ic = 1, nl_c
37272 s_offset_d1 = 0
37273 DO id = 1, nl_d
37274 buffer1 = 0.0_dp
37275 imax = 6*6*3
37276 kmax = 3
37277 DO i = 1, imax
37278 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
37279 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
37280 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
37281 END DO
37282 buffer2 = 0.0_dp
37283 imax = 3*6*3
37284 kmax = 6
37285 DO i = 1, imax
37286 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
37287 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
37288 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
37289 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
37290 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
37291 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
37292 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
37293 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
37294 END DO
37295 buffer1 = 0.0_dp
37296 imax = 3*5*3
37297 kmax = 6
37298 DO i = 1, imax
37299 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
37300 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
37301 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
37302 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
37303 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
37304 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
37305 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
37306 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
37307 END DO
37308 imax = 3*5*5
37309 kmax = 3
37310 i = 0
37311 DO i1 = 1, 5
37312 DO i2 = 1, 5
37313 DO i3 = 1, 3
37314 i = i + 1
37315 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
37316 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
37317 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
37318 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
37319 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
37320 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
37321 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
37322 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
37323 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
37324 END DO
37325 END DO
37326 END DO
37327 s_offset_d1 = s_offset_d1 + 3
37328 END DO
37329 s_offset_c1 = s_offset_c1 + 5
37330 END DO
37331 s_offset_b1 = s_offset_b1 + 5
37332 END DO
37333 s_offset_a1 = s_offset_a1 + 3
37334 END DO
37335 END SUBROUTINE contract_pddp
37336#endif
37337#if __MAX_CONTR > 2 || __MAX_CONTR == 2
37338! **************************************************************************************************
37339!> \brief ...
37340!> \param work ...
37341!> \param nl_a ...
37342!> \param nl_b ...
37343!> \param nl_c ...
37344!> \param nl_d ...
37345!> \param sphi_a ...
37346!> \param sphi_b ...
37347!> \param sphi_c ...
37348!> \param sphi_d ...
37349!> \param primitives ...
37350!> \param buffer1 ...
37351!> \param buffer2 ...
37352! **************************************************************************************************
37353 SUBROUTINE contract_pddd(work, &
37354 nl_a, nl_b, nl_c, nl_d, &
37355 sphi_a, sphi_b, sphi_c, sphi_d, &
37356 primitives, &
37357 buffer1, buffer2)
37358 REAL(dp), DIMENSION(3*6*6*6), INTENT(IN) :: work
37359 INTEGER :: nl_a, nl_b, nl_c, nl_d
37360 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
37361 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
37362 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
37363 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
37364 REAL(dp), &
37365 DIMENSION(3*nl_a, 5*nl_b, 5*nl_c, 5*nl_d) :: primitives
37366 REAL(dp), DIMENSION(3*6*6*6) :: buffer1, buffer2
37367
37368 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
37369 kmax, s_offset_a1, s_offset_b1, &
37370 s_offset_c1, s_offset_d1
37371
37372 s_offset_a1 = 0
37373 DO ia = 1, nl_a
37374 s_offset_b1 = 0
37375 DO ib = 1, nl_b
37376 s_offset_c1 = 0
37377 DO ic = 1, nl_c
37378 s_offset_d1 = 0
37379 DO id = 1, nl_d
37380 buffer1 = 0.0_dp
37381 imax = 6*6*6
37382 kmax = 3
37383 DO i = 1, imax
37384 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
37385 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
37386 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
37387 END DO
37388 buffer2 = 0.0_dp
37389 imax = 3*6*6
37390 kmax = 6
37391 DO i = 1, imax
37392 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
37393 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
37394 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
37395 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
37396 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
37397 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
37398 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
37399 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
37400 END DO
37401 buffer1 = 0.0_dp
37402 imax = 3*5*6
37403 kmax = 6
37404 DO i = 1, imax
37405 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
37406 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
37407 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
37408 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
37409 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
37410 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
37411 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
37412 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
37413 END DO
37414 imax = 3*5*5
37415 kmax = 6
37416 i = 0
37417 DO i1 = 1, 5
37418 DO i2 = 1, 5
37419 DO i3 = 1, 3
37420 i = i + 1
37421 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
37422 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
37423 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
37424 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
37425 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
37426 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
37427 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
37428 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
37429 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
37430 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
37431 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
37432 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
37433 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
37434 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
37435 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
37436 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
37437 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
37438 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
37439 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
37440 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
37441 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
37442 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
37443 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
37444 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
37445 END DO
37446 END DO
37447 END DO
37448 s_offset_d1 = s_offset_d1 + 5
37449 END DO
37450 s_offset_c1 = s_offset_c1 + 5
37451 END DO
37452 s_offset_b1 = s_offset_b1 + 5
37453 END DO
37454 s_offset_a1 = s_offset_a1 + 3
37455 END DO
37456 END SUBROUTINE contract_pddd
37457#endif
37458#if __MAX_CONTR > 3 || __MAX_CONTR == 3
37459! **************************************************************************************************
37460!> \brief ...
37461!> \param work ...
37462!> \param nl_a ...
37463!> \param nl_b ...
37464!> \param nl_c ...
37465!> \param nl_d ...
37466!> \param sphi_a ...
37467!> \param sphi_b ...
37468!> \param sphi_c ...
37469!> \param sphi_d ...
37470!> \param primitives ...
37471!> \param buffer1 ...
37472!> \param buffer2 ...
37473! **************************************************************************************************
37474 SUBROUTINE contract_pddf(work, &
37475 nl_a, nl_b, nl_c, nl_d, &
37476 sphi_a, sphi_b, sphi_c, sphi_d, &
37477 primitives, &
37478 buffer1, buffer2)
37479 REAL(dp), DIMENSION(3*6*6*10), INTENT(IN) :: work
37480 INTEGER :: nl_a, nl_b, nl_c, nl_d
37481 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
37482 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
37483 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
37484 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
37485 REAL(dp), &
37486 DIMENSION(3*nl_a, 5*nl_b, 5*nl_c, 7*nl_d) :: primitives
37487 REAL(dp), DIMENSION(3*6*6*10) :: buffer1, buffer2
37488
37489 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
37490 kmax, s_offset_a1, s_offset_b1, &
37491 s_offset_c1, s_offset_d1
37492
37493 s_offset_a1 = 0
37494 DO ia = 1, nl_a
37495 s_offset_b1 = 0
37496 DO ib = 1, nl_b
37497 s_offset_c1 = 0
37498 DO ic = 1, nl_c
37499 s_offset_d1 = 0
37500 DO id = 1, nl_d
37501 buffer1 = 0.0_dp
37502 imax = 6*6*10
37503 kmax = 3
37504 DO i = 1, imax
37505 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
37506 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
37507 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
37508 END DO
37509 buffer2 = 0.0_dp
37510 imax = 3*6*10
37511 kmax = 6
37512 DO i = 1, imax
37513 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
37514 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
37515 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
37516 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
37517 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
37518 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
37519 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
37520 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
37521 END DO
37522 buffer1 = 0.0_dp
37523 imax = 3*5*10
37524 kmax = 6
37525 DO i = 1, imax
37526 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
37527 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
37528 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
37529 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
37530 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
37531 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
37532 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
37533 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
37534 END DO
37535 imax = 3*5*5
37536 kmax = 10
37537 i = 0
37538 DO i1 = 1, 5
37539 DO i2 = 1, 5
37540 DO i3 = 1, 3
37541 i = i + 1
37542 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
37543 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
37544 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
37545 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
37546 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
37547 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
37548 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
37549 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
37550 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
37551 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
37552 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
37553 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
37554 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
37555 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
37556 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
37557 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
37558 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
37559 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
37560 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
37561 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
37562 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
37563 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
37564 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
37565 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
37566 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
37567 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
37568 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
37569 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
37570 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
37571 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
37572 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
37573 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
37574 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
37575 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
37576 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
37577 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
37578 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
37579 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
37580 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
37581 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
37582 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
37583 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
37584 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
37585 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
37586 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
37587 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
37588 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
37589 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
37590 END DO
37591 END DO
37592 END DO
37593 s_offset_d1 = s_offset_d1 + 7
37594 END DO
37595 s_offset_c1 = s_offset_c1 + 5
37596 END DO
37597 s_offset_b1 = s_offset_b1 + 5
37598 END DO
37599 s_offset_a1 = s_offset_a1 + 3
37600 END DO
37601 END SUBROUTINE contract_pddf
37602#endif
37603#if __MAX_CONTR > 4 || __MAX_CONTR == 4
37604! **************************************************************************************************
37605!> \brief ...
37606!> \param work ...
37607!> \param nl_a ...
37608!> \param nl_b ...
37609!> \param nl_c ...
37610!> \param nl_d ...
37611!> \param sphi_a ...
37612!> \param sphi_b ...
37613!> \param sphi_c ...
37614!> \param sphi_d ...
37615!> \param primitives ...
37616!> \param buffer1 ...
37617!> \param buffer2 ...
37618! **************************************************************************************************
37619 SUBROUTINE contract_pddg(work, &
37620 nl_a, nl_b, nl_c, nl_d, &
37621 sphi_a, sphi_b, sphi_c, sphi_d, &
37622 primitives, &
37623 buffer1, buffer2)
37624 REAL(dp), DIMENSION(3*6*6*15), INTENT(IN) :: work
37625 INTEGER :: nl_a, nl_b, nl_c, nl_d
37626 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
37627 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
37628 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
37629 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
37630 REAL(dp), &
37631 DIMENSION(3*nl_a, 5*nl_b, 5*nl_c, 9*nl_d) :: primitives
37632 REAL(dp), DIMENSION(3*6*6*15) :: buffer1, buffer2
37633
37634 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
37635 kmax, s_offset_a1, s_offset_b1, &
37636 s_offset_c1, s_offset_d1
37637
37638 s_offset_a1 = 0
37639 DO ia = 1, nl_a
37640 s_offset_b1 = 0
37641 DO ib = 1, nl_b
37642 s_offset_c1 = 0
37643 DO ic = 1, nl_c
37644 s_offset_d1 = 0
37645 DO id = 1, nl_d
37646 buffer1 = 0.0_dp
37647 imax = 6*6*15
37648 kmax = 3
37649 DO i = 1, imax
37650 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
37651 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
37652 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
37653 END DO
37654 buffer2 = 0.0_dp
37655 imax = 3*6*15
37656 kmax = 6
37657 DO i = 1, imax
37658 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
37659 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
37660 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
37661 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
37662 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
37663 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
37664 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
37665 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
37666 END DO
37667 buffer1 = 0.0_dp
37668 imax = 3*5*15
37669 kmax = 6
37670 DO i = 1, imax
37671 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
37672 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
37673 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
37674 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
37675 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
37676 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
37677 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
37678 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
37679 END DO
37680 imax = 3*5*5
37681 kmax = 15
37682 i = 0
37683 DO i1 = 1, 5
37684 DO i2 = 1, 5
37685 DO i3 = 1, 3
37686 i = i + 1
37687 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
37688 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
37689 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
37690 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
37691 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
37692 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
37693 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
37694 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
37695 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
37696 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
37697 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
37698 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
37699 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
37700 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
37701 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
37702 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
37703 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
37704 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
37705 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
37706 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
37707 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
37708 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
37709 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
37710 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
37711 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
37712 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
37713 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
37714 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
37715 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
37716 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
37717 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
37718 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
37719 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
37720 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
37721 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
37722 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
37723 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
37724 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
37725 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
37726 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
37727 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
37728 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
37729 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
37730 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
37731 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
37732 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
37733 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
37734 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
37735 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
37736 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
37737 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
37738 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
37739 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
37740 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
37741 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
37742 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
37743 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
37744 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
37745 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
37746 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
37747 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
37748 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
37749 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
37750 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
37751 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
37752 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
37753 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
37754 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
37755 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
37756 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
37757 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
37758 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
37759 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
37760 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
37761 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
37762 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
37763 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
37764 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
37765 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
37766 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
37767 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
37768 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
37769 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
37770 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
37771 END DO
37772 END DO
37773 END DO
37774 s_offset_d1 = s_offset_d1 + 9
37775 END DO
37776 s_offset_c1 = s_offset_c1 + 5
37777 END DO
37778 s_offset_b1 = s_offset_b1 + 5
37779 END DO
37780 s_offset_a1 = s_offset_a1 + 3
37781 END DO
37782 END SUBROUTINE contract_pddg
37783#endif
37784#if __MAX_CONTR > 3 || __MAX_CONTR == 3
37785! **************************************************************************************************
37786!> \brief ...
37787!> \param work ...
37788!> \param nl_a ...
37789!> \param nl_b ...
37790!> \param nl_c ...
37791!> \param nl_d ...
37792!> \param sphi_a ...
37793!> \param sphi_b ...
37794!> \param sphi_c ...
37795!> \param sphi_d ...
37796!> \param primitives ...
37797!> \param buffer1 ...
37798!> \param buffer2 ...
37799! **************************************************************************************************
37800 SUBROUTINE contract_pdfs(work, &
37801 nl_a, nl_b, nl_c, nl_d, &
37802 sphi_a, sphi_b, sphi_c, sphi_d, &
37803 primitives, &
37804 buffer1, buffer2)
37805 REAL(dp), DIMENSION(3*6*10*1), INTENT(IN) :: work
37806 INTEGER :: nl_a, nl_b, nl_c, nl_d
37807 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
37808 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
37809 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
37810 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
37811 REAL(dp), &
37812 DIMENSION(3*nl_a, 5*nl_b, 7*nl_c, 1*nl_d) :: primitives
37813 REAL(dp), DIMENSION(3*6*10*1) :: buffer1, buffer2
37814
37815 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
37816 kmax, s_offset_a1, s_offset_b1, &
37817 s_offset_c1, s_offset_d1
37818
37819 s_offset_a1 = 0
37820 DO ia = 1, nl_a
37821 s_offset_b1 = 0
37822 DO ib = 1, nl_b
37823 s_offset_c1 = 0
37824 DO ic = 1, nl_c
37825 s_offset_d1 = 0
37826 DO id = 1, nl_d
37827 buffer1 = 0.0_dp
37828 imax = 6*10*1
37829 kmax = 3
37830 DO i = 1, imax
37831 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
37832 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
37833 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
37834 END DO
37835 buffer2 = 0.0_dp
37836 imax = 3*10*1
37837 kmax = 6
37838 DO i = 1, imax
37839 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
37840 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
37841 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
37842 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
37843 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
37844 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
37845 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
37846 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
37847 END DO
37848 buffer1 = 0.0_dp
37849 imax = 3*5*1
37850 kmax = 10
37851 DO i = 1, imax
37852 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
37853 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
37854 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
37855 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
37856 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
37857 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
37858 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
37859 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
37860 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
37861 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
37862 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
37863 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
37864 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
37865 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
37866 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
37867 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
37868 END DO
37869 imax = 3*5*7
37870 kmax = 1
37871 i = 0
37872 DO i1 = 1, 7
37873 DO i2 = 1, 5
37874 DO i3 = 1, 3
37875 i = i + 1
37876 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
37877 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
37878 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
37879 END DO
37880 END DO
37881 END DO
37882 s_offset_d1 = s_offset_d1 + 1
37883 END DO
37884 s_offset_c1 = s_offset_c1 + 7
37885 END DO
37886 s_offset_b1 = s_offset_b1 + 5
37887 END DO
37888 s_offset_a1 = s_offset_a1 + 3
37889 END DO
37890 END SUBROUTINE contract_pdfs
37891#endif
37892#if __MAX_CONTR > 3 || __MAX_CONTR == 3
37893! **************************************************************************************************
37894!> \brief ...
37895!> \param work ...
37896!> \param nl_a ...
37897!> \param nl_b ...
37898!> \param nl_c ...
37899!> \param nl_d ...
37900!> \param sphi_a ...
37901!> \param sphi_b ...
37902!> \param sphi_c ...
37903!> \param sphi_d ...
37904!> \param primitives ...
37905!> \param buffer1 ...
37906!> \param buffer2 ...
37907! **************************************************************************************************
37908 SUBROUTINE contract_pdfp(work, &
37909 nl_a, nl_b, nl_c, nl_d, &
37910 sphi_a, sphi_b, sphi_c, sphi_d, &
37911 primitives, &
37912 buffer1, buffer2)
37913 REAL(dp), DIMENSION(3*6*10*3), INTENT(IN) :: work
37914 INTEGER :: nl_a, nl_b, nl_c, nl_d
37915 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
37916 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
37917 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
37918 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
37919 REAL(dp), &
37920 DIMENSION(3*nl_a, 5*nl_b, 7*nl_c, 3*nl_d) :: primitives
37921 REAL(dp), DIMENSION(3*6*10*3) :: buffer1, buffer2
37922
37923 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
37924 kmax, s_offset_a1, s_offset_b1, &
37925 s_offset_c1, s_offset_d1
37926
37927 s_offset_a1 = 0
37928 DO ia = 1, nl_a
37929 s_offset_b1 = 0
37930 DO ib = 1, nl_b
37931 s_offset_c1 = 0
37932 DO ic = 1, nl_c
37933 s_offset_d1 = 0
37934 DO id = 1, nl_d
37935 buffer1 = 0.0_dp
37936 imax = 6*10*3
37937 kmax = 3
37938 DO i = 1, imax
37939 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
37940 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
37941 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
37942 END DO
37943 buffer2 = 0.0_dp
37944 imax = 3*10*3
37945 kmax = 6
37946 DO i = 1, imax
37947 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
37948 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
37949 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
37950 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
37951 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
37952 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
37953 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
37954 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
37955 END DO
37956 buffer1 = 0.0_dp
37957 imax = 3*5*3
37958 kmax = 10
37959 DO i = 1, imax
37960 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
37961 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
37962 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
37963 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
37964 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
37965 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
37966 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
37967 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
37968 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
37969 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
37970 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
37971 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
37972 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
37973 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
37974 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
37975 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
37976 END DO
37977 imax = 3*5*7
37978 kmax = 3
37979 i = 0
37980 DO i1 = 1, 7
37981 DO i2 = 1, 5
37982 DO i3 = 1, 3
37983 i = i + 1
37984 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
37985 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
37986 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
37987 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
37988 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
37989 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
37990 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
37991 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
37992 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
37993 END DO
37994 END DO
37995 END DO
37996 s_offset_d1 = s_offset_d1 + 3
37997 END DO
37998 s_offset_c1 = s_offset_c1 + 7
37999 END DO
38000 s_offset_b1 = s_offset_b1 + 5
38001 END DO
38002 s_offset_a1 = s_offset_a1 + 3
38003 END DO
38004 END SUBROUTINE contract_pdfp
38005#endif
38006#if __MAX_CONTR > 3 || __MAX_CONTR == 3
38007! **************************************************************************************************
38008!> \brief ...
38009!> \param work ...
38010!> \param nl_a ...
38011!> \param nl_b ...
38012!> \param nl_c ...
38013!> \param nl_d ...
38014!> \param sphi_a ...
38015!> \param sphi_b ...
38016!> \param sphi_c ...
38017!> \param sphi_d ...
38018!> \param primitives ...
38019!> \param buffer1 ...
38020!> \param buffer2 ...
38021! **************************************************************************************************
38022 SUBROUTINE contract_pdfd(work, &
38023 nl_a, nl_b, nl_c, nl_d, &
38024 sphi_a, sphi_b, sphi_c, sphi_d, &
38025 primitives, &
38026 buffer1, buffer2)
38027 REAL(dp), DIMENSION(3*6*10*6), INTENT(IN) :: work
38028 INTEGER :: nl_a, nl_b, nl_c, nl_d
38029 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
38030 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
38031 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
38032 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
38033 REAL(dp), &
38034 DIMENSION(3*nl_a, 5*nl_b, 7*nl_c, 5*nl_d) :: primitives
38035 REAL(dp), DIMENSION(3*6*10*6) :: buffer1, buffer2
38036
38037 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
38038 kmax, s_offset_a1, s_offset_b1, &
38039 s_offset_c1, s_offset_d1
38040
38041 s_offset_a1 = 0
38042 DO ia = 1, nl_a
38043 s_offset_b1 = 0
38044 DO ib = 1, nl_b
38045 s_offset_c1 = 0
38046 DO ic = 1, nl_c
38047 s_offset_d1 = 0
38048 DO id = 1, nl_d
38049 buffer1 = 0.0_dp
38050 imax = 6*10*6
38051 kmax = 3
38052 DO i = 1, imax
38053 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
38054 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
38055 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
38056 END DO
38057 buffer2 = 0.0_dp
38058 imax = 3*10*6
38059 kmax = 6
38060 DO i = 1, imax
38061 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
38062 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
38063 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
38064 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
38065 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
38066 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
38067 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
38068 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
38069 END DO
38070 buffer1 = 0.0_dp
38071 imax = 3*5*6
38072 kmax = 10
38073 DO i = 1, imax
38074 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
38075 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
38076 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
38077 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
38078 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
38079 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
38080 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
38081 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
38082 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
38083 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
38084 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
38085 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
38086 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
38087 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
38088 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
38089 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
38090 END DO
38091 imax = 3*5*7
38092 kmax = 6
38093 i = 0
38094 DO i1 = 1, 7
38095 DO i2 = 1, 5
38096 DO i3 = 1, 3
38097 i = i + 1
38098 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
38099 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
38100 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
38101 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
38102 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
38103 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
38104 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
38105 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
38106 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
38107 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
38108 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
38109 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
38110 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
38111 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
38112 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
38113 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
38114 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
38115 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
38116 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
38117 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
38118 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
38119 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
38120 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
38121 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
38122 END DO
38123 END DO
38124 END DO
38125 s_offset_d1 = s_offset_d1 + 5
38126 END DO
38127 s_offset_c1 = s_offset_c1 + 7
38128 END DO
38129 s_offset_b1 = s_offset_b1 + 5
38130 END DO
38131 s_offset_a1 = s_offset_a1 + 3
38132 END DO
38133 END SUBROUTINE contract_pdfd
38134#endif
38135#if __MAX_CONTR > 3 || __MAX_CONTR == 3
38136! **************************************************************************************************
38137!> \brief ...
38138!> \param work ...
38139!> \param nl_a ...
38140!> \param nl_b ...
38141!> \param nl_c ...
38142!> \param nl_d ...
38143!> \param sphi_a ...
38144!> \param sphi_b ...
38145!> \param sphi_c ...
38146!> \param sphi_d ...
38147!> \param primitives ...
38148!> \param buffer1 ...
38149!> \param buffer2 ...
38150! **************************************************************************************************
38151 SUBROUTINE contract_pdff(work, &
38152 nl_a, nl_b, nl_c, nl_d, &
38153 sphi_a, sphi_b, sphi_c, sphi_d, &
38154 primitives, &
38155 buffer1, buffer2)
38156 REAL(dp), DIMENSION(3*6*10*10), INTENT(IN) :: work
38157 INTEGER :: nl_a, nl_b, nl_c, nl_d
38158 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
38159 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
38160 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
38161 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
38162 REAL(dp), &
38163 DIMENSION(3*nl_a, 5*nl_b, 7*nl_c, 7*nl_d) :: primitives
38164 REAL(dp), DIMENSION(3*6*10*10) :: buffer1, buffer2
38165
38166 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
38167 kmax, s_offset_a1, s_offset_b1, &
38168 s_offset_c1, s_offset_d1
38169
38170 s_offset_a1 = 0
38171 DO ia = 1, nl_a
38172 s_offset_b1 = 0
38173 DO ib = 1, nl_b
38174 s_offset_c1 = 0
38175 DO ic = 1, nl_c
38176 s_offset_d1 = 0
38177 DO id = 1, nl_d
38178 buffer1 = 0.0_dp
38179 imax = 6*10*10
38180 kmax = 3
38181 DO i = 1, imax
38182 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
38183 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
38184 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
38185 END DO
38186 buffer2 = 0.0_dp
38187 imax = 3*10*10
38188 kmax = 6
38189 DO i = 1, imax
38190 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
38191 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
38192 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
38193 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
38194 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
38195 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
38196 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
38197 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
38198 END DO
38199 buffer1 = 0.0_dp
38200 imax = 3*5*10
38201 kmax = 10
38202 DO i = 1, imax
38203 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
38204 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
38205 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
38206 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
38207 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
38208 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
38209 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
38210 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
38211 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
38212 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
38213 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
38214 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
38215 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
38216 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
38217 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
38218 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
38219 END DO
38220 imax = 3*5*7
38221 kmax = 10
38222 i = 0
38223 DO i1 = 1, 7
38224 DO i2 = 1, 5
38225 DO i3 = 1, 3
38226 i = i + 1
38227 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
38228 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
38229 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
38230 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
38231 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
38232 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
38233 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
38234 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
38235 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
38236 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
38237 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
38238 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
38239 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
38240 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
38241 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
38242 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
38243 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
38244 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
38245 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
38246 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
38247 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
38248 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
38249 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
38250 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
38251 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
38252 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
38253 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
38254 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
38255 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
38256 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
38257 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
38258 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
38259 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
38260 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
38261 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
38262 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
38263 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
38264 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
38265 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
38266 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
38267 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
38268 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
38269 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
38270 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
38271 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
38272 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
38273 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
38274 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
38275 END DO
38276 END DO
38277 END DO
38278 s_offset_d1 = s_offset_d1 + 7
38279 END DO
38280 s_offset_c1 = s_offset_c1 + 7
38281 END DO
38282 s_offset_b1 = s_offset_b1 + 5
38283 END DO
38284 s_offset_a1 = s_offset_a1 + 3
38285 END DO
38286 END SUBROUTINE contract_pdff
38287#endif
38288#if __MAX_CONTR > 4 || __MAX_CONTR == 4
38289! **************************************************************************************************
38290!> \brief ...
38291!> \param work ...
38292!> \param nl_a ...
38293!> \param nl_b ...
38294!> \param nl_c ...
38295!> \param nl_d ...
38296!> \param sphi_a ...
38297!> \param sphi_b ...
38298!> \param sphi_c ...
38299!> \param sphi_d ...
38300!> \param primitives ...
38301!> \param buffer1 ...
38302!> \param buffer2 ...
38303! **************************************************************************************************
38304 SUBROUTINE contract_pdfg(work, &
38305 nl_a, nl_b, nl_c, nl_d, &
38306 sphi_a, sphi_b, sphi_c, sphi_d, &
38307 primitives, &
38308 buffer1, buffer2)
38309 REAL(dp), DIMENSION(3*6*10*15), INTENT(IN) :: work
38310 INTEGER :: nl_a, nl_b, nl_c, nl_d
38311 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
38312 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
38313 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
38314 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
38315 REAL(dp), &
38316 DIMENSION(3*nl_a, 5*nl_b, 7*nl_c, 9*nl_d) :: primitives
38317 REAL(dp), DIMENSION(3*6*10*15) :: buffer1, buffer2
38318
38319 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
38320 kmax, s_offset_a1, s_offset_b1, &
38321 s_offset_c1, s_offset_d1
38322
38323 s_offset_a1 = 0
38324 DO ia = 1, nl_a
38325 s_offset_b1 = 0
38326 DO ib = 1, nl_b
38327 s_offset_c1 = 0
38328 DO ic = 1, nl_c
38329 s_offset_d1 = 0
38330 DO id = 1, nl_d
38331 buffer1 = 0.0_dp
38332 imax = 6*10*15
38333 kmax = 3
38334 DO i = 1, imax
38335 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
38336 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
38337 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
38338 END DO
38339 buffer2 = 0.0_dp
38340 imax = 3*10*15
38341 kmax = 6
38342 DO i = 1, imax
38343 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
38344 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
38345 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
38346 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
38347 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
38348 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
38349 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
38350 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
38351 END DO
38352 buffer1 = 0.0_dp
38353 imax = 3*5*15
38354 kmax = 10
38355 DO i = 1, imax
38356 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
38357 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
38358 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
38359 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
38360 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
38361 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
38362 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
38363 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
38364 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
38365 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
38366 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
38367 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
38368 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
38369 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
38370 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
38371 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
38372 END DO
38373 imax = 3*5*7
38374 kmax = 15
38375 i = 0
38376 DO i1 = 1, 7
38377 DO i2 = 1, 5
38378 DO i3 = 1, 3
38379 i = i + 1
38380 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
38381 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
38382 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
38383 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
38384 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
38385 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
38386 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
38387 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
38388 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
38389 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
38390 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
38391 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
38392 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
38393 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
38394 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
38395 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
38396 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
38397 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
38398 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
38399 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
38400 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
38401 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
38402 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
38403 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
38404 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
38405 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
38406 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
38407 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
38408 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
38409 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
38410 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
38411 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
38412 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
38413 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
38414 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
38415 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
38416 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
38417 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
38418 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
38419 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
38420 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
38421 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
38422 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
38423 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
38424 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
38425 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
38426 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
38427 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
38428 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
38429 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
38430 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
38431 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
38432 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
38433 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
38434 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
38435 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
38436 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
38437 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
38438 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
38439 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
38440 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
38441 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
38442 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
38443 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
38444 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
38445 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
38446 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
38447 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
38448 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
38449 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
38450 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
38451 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
38452 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
38453 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
38454 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
38455 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
38456 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
38457 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
38458 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
38459 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
38460 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
38461 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
38462 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
38463 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
38464 END DO
38465 END DO
38466 END DO
38467 s_offset_d1 = s_offset_d1 + 9
38468 END DO
38469 s_offset_c1 = s_offset_c1 + 7
38470 END DO
38471 s_offset_b1 = s_offset_b1 + 5
38472 END DO
38473 s_offset_a1 = s_offset_a1 + 3
38474 END DO
38475 END SUBROUTINE contract_pdfg
38476#endif
38477#if __MAX_CONTR > 4 || __MAX_CONTR == 4
38478! **************************************************************************************************
38479!> \brief ...
38480!> \param work ...
38481!> \param nl_a ...
38482!> \param nl_b ...
38483!> \param nl_c ...
38484!> \param nl_d ...
38485!> \param sphi_a ...
38486!> \param sphi_b ...
38487!> \param sphi_c ...
38488!> \param sphi_d ...
38489!> \param primitives ...
38490!> \param buffer1 ...
38491!> \param buffer2 ...
38492! **************************************************************************************************
38493 SUBROUTINE contract_pdgs(work, &
38494 nl_a, nl_b, nl_c, nl_d, &
38495 sphi_a, sphi_b, sphi_c, sphi_d, &
38496 primitives, &
38497 buffer1, buffer2)
38498 REAL(dp), DIMENSION(3*6*15*1), INTENT(IN) :: work
38499 INTEGER :: nl_a, nl_b, nl_c, nl_d
38500 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
38501 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
38502 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
38503 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
38504 REAL(dp), &
38505 DIMENSION(3*nl_a, 5*nl_b, 9*nl_c, 1*nl_d) :: primitives
38506 REAL(dp), DIMENSION(3*6*15*1) :: buffer1, buffer2
38507
38508 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
38509 kmax, s_offset_a1, s_offset_b1, &
38510 s_offset_c1, s_offset_d1
38511
38512 s_offset_a1 = 0
38513 DO ia = 1, nl_a
38514 s_offset_b1 = 0
38515 DO ib = 1, nl_b
38516 s_offset_c1 = 0
38517 DO ic = 1, nl_c
38518 s_offset_d1 = 0
38519 DO id = 1, nl_d
38520 buffer1 = 0.0_dp
38521 imax = 6*15*1
38522 kmax = 3
38523 DO i = 1, imax
38524 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
38525 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
38526 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
38527 END DO
38528 buffer2 = 0.0_dp
38529 imax = 3*15*1
38530 kmax = 6
38531 DO i = 1, imax
38532 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
38533 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
38534 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
38535 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
38536 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
38537 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
38538 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
38539 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
38540 END DO
38541 buffer1 = 0.0_dp
38542 imax = 3*5*1
38543 kmax = 15
38544 DO i = 1, imax
38545 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
38546 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
38547 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
38548 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
38549 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
38550 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
38551 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
38552 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
38553 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
38554 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
38555 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
38556 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
38557 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
38558 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
38559 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
38560 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
38561 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
38562 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
38563 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
38564 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
38565 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
38566 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
38567 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
38568 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
38569 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
38570 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
38571 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
38572 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
38573 END DO
38574 imax = 3*5*9
38575 kmax = 1
38576 i = 0
38577 DO i1 = 1, 9
38578 DO i2 = 1, 5
38579 DO i3 = 1, 3
38580 i = i + 1
38581 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
38582 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
38583 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
38584 END DO
38585 END DO
38586 END DO
38587 s_offset_d1 = s_offset_d1 + 1
38588 END DO
38589 s_offset_c1 = s_offset_c1 + 9
38590 END DO
38591 s_offset_b1 = s_offset_b1 + 5
38592 END DO
38593 s_offset_a1 = s_offset_a1 + 3
38594 END DO
38595 END SUBROUTINE contract_pdgs
38596#endif
38597#if __MAX_CONTR > 4 || __MAX_CONTR == 4
38598! **************************************************************************************************
38599!> \brief ...
38600!> \param work ...
38601!> \param nl_a ...
38602!> \param nl_b ...
38603!> \param nl_c ...
38604!> \param nl_d ...
38605!> \param sphi_a ...
38606!> \param sphi_b ...
38607!> \param sphi_c ...
38608!> \param sphi_d ...
38609!> \param primitives ...
38610!> \param buffer1 ...
38611!> \param buffer2 ...
38612! **************************************************************************************************
38613 SUBROUTINE contract_pdgp(work, &
38614 nl_a, nl_b, nl_c, nl_d, &
38615 sphi_a, sphi_b, sphi_c, sphi_d, &
38616 primitives, &
38617 buffer1, buffer2)
38618 REAL(dp), DIMENSION(3*6*15*3), INTENT(IN) :: work
38619 INTEGER :: nl_a, nl_b, nl_c, nl_d
38620 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
38621 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
38622 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
38623 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
38624 REAL(dp), &
38625 DIMENSION(3*nl_a, 5*nl_b, 9*nl_c, 3*nl_d) :: primitives
38626 REAL(dp), DIMENSION(3*6*15*3) :: buffer1, buffer2
38627
38628 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
38629 kmax, s_offset_a1, s_offset_b1, &
38630 s_offset_c1, s_offset_d1
38631
38632 s_offset_a1 = 0
38633 DO ia = 1, nl_a
38634 s_offset_b1 = 0
38635 DO ib = 1, nl_b
38636 s_offset_c1 = 0
38637 DO ic = 1, nl_c
38638 s_offset_d1 = 0
38639 DO id = 1, nl_d
38640 buffer1 = 0.0_dp
38641 imax = 6*15*3
38642 kmax = 3
38643 DO i = 1, imax
38644 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
38645 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
38646 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
38647 END DO
38648 buffer2 = 0.0_dp
38649 imax = 3*15*3
38650 kmax = 6
38651 DO i = 1, imax
38652 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
38653 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
38654 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
38655 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
38656 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
38657 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
38658 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
38659 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
38660 END DO
38661 buffer1 = 0.0_dp
38662 imax = 3*5*3
38663 kmax = 15
38664 DO i = 1, imax
38665 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
38666 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
38667 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
38668 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
38669 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
38670 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
38671 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
38672 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
38673 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
38674 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
38675 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
38676 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
38677 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
38678 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
38679 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
38680 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
38681 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
38682 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
38683 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
38684 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
38685 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
38686 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
38687 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
38688 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
38689 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
38690 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
38691 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
38692 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
38693 END DO
38694 imax = 3*5*9
38695 kmax = 3
38696 i = 0
38697 DO i1 = 1, 9
38698 DO i2 = 1, 5
38699 DO i3 = 1, 3
38700 i = i + 1
38701 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
38702 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
38703 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
38704 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
38705 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
38706 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
38707 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
38708 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
38709 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
38710 END DO
38711 END DO
38712 END DO
38713 s_offset_d1 = s_offset_d1 + 3
38714 END DO
38715 s_offset_c1 = s_offset_c1 + 9
38716 END DO
38717 s_offset_b1 = s_offset_b1 + 5
38718 END DO
38719 s_offset_a1 = s_offset_a1 + 3
38720 END DO
38721 END SUBROUTINE contract_pdgp
38722#endif
38723#if __MAX_CONTR > 4 || __MAX_CONTR == 4
38724! **************************************************************************************************
38725!> \brief ...
38726!> \param work ...
38727!> \param nl_a ...
38728!> \param nl_b ...
38729!> \param nl_c ...
38730!> \param nl_d ...
38731!> \param sphi_a ...
38732!> \param sphi_b ...
38733!> \param sphi_c ...
38734!> \param sphi_d ...
38735!> \param primitives ...
38736!> \param buffer1 ...
38737!> \param buffer2 ...
38738! **************************************************************************************************
38739 SUBROUTINE contract_pdgd(work, &
38740 nl_a, nl_b, nl_c, nl_d, &
38741 sphi_a, sphi_b, sphi_c, sphi_d, &
38742 primitives, &
38743 buffer1, buffer2)
38744 REAL(dp), DIMENSION(3*6*15*6), INTENT(IN) :: work
38745 INTEGER :: nl_a, nl_b, nl_c, nl_d
38746 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
38747 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
38748 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
38749 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
38750 REAL(dp), &
38751 DIMENSION(3*nl_a, 5*nl_b, 9*nl_c, 5*nl_d) :: primitives
38752 REAL(dp), DIMENSION(3*6*15*6) :: buffer1, buffer2
38753
38754 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
38755 kmax, s_offset_a1, s_offset_b1, &
38756 s_offset_c1, s_offset_d1
38757
38758 s_offset_a1 = 0
38759 DO ia = 1, nl_a
38760 s_offset_b1 = 0
38761 DO ib = 1, nl_b
38762 s_offset_c1 = 0
38763 DO ic = 1, nl_c
38764 s_offset_d1 = 0
38765 DO id = 1, nl_d
38766 buffer1 = 0.0_dp
38767 imax = 6*15*6
38768 kmax = 3
38769 DO i = 1, imax
38770 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
38771 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
38772 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
38773 END DO
38774 buffer2 = 0.0_dp
38775 imax = 3*15*6
38776 kmax = 6
38777 DO i = 1, imax
38778 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
38779 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
38780 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
38781 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
38782 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
38783 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
38784 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
38785 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
38786 END DO
38787 buffer1 = 0.0_dp
38788 imax = 3*5*6
38789 kmax = 15
38790 DO i = 1, imax
38791 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
38792 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
38793 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
38794 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
38795 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
38796 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
38797 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
38798 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
38799 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
38800 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
38801 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
38802 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
38803 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
38804 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
38805 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
38806 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
38807 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
38808 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
38809 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
38810 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
38811 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
38812 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
38813 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
38814 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
38815 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
38816 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
38817 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
38818 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
38819 END DO
38820 imax = 3*5*9
38821 kmax = 6
38822 i = 0
38823 DO i1 = 1, 9
38824 DO i2 = 1, 5
38825 DO i3 = 1, 3
38826 i = i + 1
38827 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
38828 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
38829 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
38830 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
38831 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
38832 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
38833 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
38834 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
38835 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
38836 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
38837 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
38838 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
38839 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
38840 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
38841 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
38842 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
38843 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
38844 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
38845 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
38846 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
38847 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
38848 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
38849 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
38850 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
38851 END DO
38852 END DO
38853 END DO
38854 s_offset_d1 = s_offset_d1 + 5
38855 END DO
38856 s_offset_c1 = s_offset_c1 + 9
38857 END DO
38858 s_offset_b1 = s_offset_b1 + 5
38859 END DO
38860 s_offset_a1 = s_offset_a1 + 3
38861 END DO
38862 END SUBROUTINE contract_pdgd
38863#endif
38864#if __MAX_CONTR > 4 || __MAX_CONTR == 4
38865! **************************************************************************************************
38866!> \brief ...
38867!> \param work ...
38868!> \param nl_a ...
38869!> \param nl_b ...
38870!> \param nl_c ...
38871!> \param nl_d ...
38872!> \param sphi_a ...
38873!> \param sphi_b ...
38874!> \param sphi_c ...
38875!> \param sphi_d ...
38876!> \param primitives ...
38877!> \param buffer1 ...
38878!> \param buffer2 ...
38879! **************************************************************************************************
38880 SUBROUTINE contract_pdgf(work, &
38881 nl_a, nl_b, nl_c, nl_d, &
38882 sphi_a, sphi_b, sphi_c, sphi_d, &
38883 primitives, &
38884 buffer1, buffer2)
38885 REAL(dp), DIMENSION(3*6*15*10), INTENT(IN) :: work
38886 INTEGER :: nl_a, nl_b, nl_c, nl_d
38887 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
38888 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
38889 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
38890 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
38891 REAL(dp), &
38892 DIMENSION(3*nl_a, 5*nl_b, 9*nl_c, 7*nl_d) :: primitives
38893 REAL(dp), DIMENSION(3*6*15*10) :: buffer1, buffer2
38894
38895 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
38896 kmax, s_offset_a1, s_offset_b1, &
38897 s_offset_c1, s_offset_d1
38898
38899 s_offset_a1 = 0
38900 DO ia = 1, nl_a
38901 s_offset_b1 = 0
38902 DO ib = 1, nl_b
38903 s_offset_c1 = 0
38904 DO ic = 1, nl_c
38905 s_offset_d1 = 0
38906 DO id = 1, nl_d
38907 buffer1 = 0.0_dp
38908 imax = 6*15*10
38909 kmax = 3
38910 DO i = 1, imax
38911 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
38912 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
38913 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
38914 END DO
38915 buffer2 = 0.0_dp
38916 imax = 3*15*10
38917 kmax = 6
38918 DO i = 1, imax
38919 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
38920 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
38921 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
38922 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
38923 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
38924 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
38925 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
38926 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
38927 END DO
38928 buffer1 = 0.0_dp
38929 imax = 3*5*10
38930 kmax = 15
38931 DO i = 1, imax
38932 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
38933 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
38934 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
38935 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
38936 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
38937 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
38938 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
38939 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
38940 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
38941 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
38942 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
38943 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
38944 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
38945 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
38946 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
38947 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
38948 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
38949 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
38950 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
38951 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
38952 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
38953 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
38954 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
38955 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
38956 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
38957 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
38958 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
38959 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
38960 END DO
38961 imax = 3*5*9
38962 kmax = 10
38963 i = 0
38964 DO i1 = 1, 9
38965 DO i2 = 1, 5
38966 DO i3 = 1, 3
38967 i = i + 1
38968 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
38969 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
38970 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
38971 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
38972 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
38973 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
38974 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
38975 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
38976 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
38977 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
38978 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
38979 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
38980 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
38981 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
38982 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
38983 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
38984 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
38985 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
38986 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
38987 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
38988 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
38989 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
38990 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
38991 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
38992 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
38993 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
38994 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
38995 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
38996 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
38997 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
38998 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
38999 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
39000 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
39001 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
39002 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
39003 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
39004 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
39005 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
39006 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
39007 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
39008 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
39009 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
39010 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
39011 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
39012 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
39013 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
39014 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
39015 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
39016 END DO
39017 END DO
39018 END DO
39019 s_offset_d1 = s_offset_d1 + 7
39020 END DO
39021 s_offset_c1 = s_offset_c1 + 9
39022 END DO
39023 s_offset_b1 = s_offset_b1 + 5
39024 END DO
39025 s_offset_a1 = s_offset_a1 + 3
39026 END DO
39027 END SUBROUTINE contract_pdgf
39028#endif
39029#if __MAX_CONTR > 4 || __MAX_CONTR == 4
39030! **************************************************************************************************
39031!> \brief ...
39032!> \param work ...
39033!> \param nl_a ...
39034!> \param nl_b ...
39035!> \param nl_c ...
39036!> \param nl_d ...
39037!> \param sphi_a ...
39038!> \param sphi_b ...
39039!> \param sphi_c ...
39040!> \param sphi_d ...
39041!> \param primitives ...
39042!> \param buffer1 ...
39043!> \param buffer2 ...
39044! **************************************************************************************************
39045 SUBROUTINE contract_pdgg(work, &
39046 nl_a, nl_b, nl_c, nl_d, &
39047 sphi_a, sphi_b, sphi_c, sphi_d, &
39048 primitives, &
39049 buffer1, buffer2)
39050 REAL(dp), DIMENSION(3*6*15*15), INTENT(IN) :: work
39051 INTEGER :: nl_a, nl_b, nl_c, nl_d
39052 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
39053 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
39054 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
39055 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
39056 REAL(dp), &
39057 DIMENSION(3*nl_a, 5*nl_b, 9*nl_c, 9*nl_d) :: primitives
39058 REAL(dp), DIMENSION(3*6*15*15) :: buffer1, buffer2
39059
39060 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
39061 kmax, s_offset_a1, s_offset_b1, &
39062 s_offset_c1, s_offset_d1
39063
39064 s_offset_a1 = 0
39065 DO ia = 1, nl_a
39066 s_offset_b1 = 0
39067 DO ib = 1, nl_b
39068 s_offset_c1 = 0
39069 DO ic = 1, nl_c
39070 s_offset_d1 = 0
39071 DO id = 1, nl_d
39072 buffer1 = 0.0_dp
39073 imax = 6*15*15
39074 kmax = 3
39075 DO i = 1, imax
39076 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
39077 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
39078 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
39079 END DO
39080 buffer2 = 0.0_dp
39081 imax = 3*15*15
39082 kmax = 6
39083 DO i = 1, imax
39084 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
39085 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
39086 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
39087 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
39088 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
39089 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
39090 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
39091 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
39092 END DO
39093 buffer1 = 0.0_dp
39094 imax = 3*5*15
39095 kmax = 15
39096 DO i = 1, imax
39097 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
39098 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
39099 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
39100 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
39101 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
39102 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
39103 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
39104 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
39105 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
39106 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
39107 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
39108 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
39109 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
39110 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
39111 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
39112 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
39113 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
39114 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
39115 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
39116 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
39117 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
39118 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
39119 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
39120 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
39121 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
39122 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
39123 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
39124 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
39125 END DO
39126 imax = 3*5*9
39127 kmax = 15
39128 i = 0
39129 DO i1 = 1, 9
39130 DO i2 = 1, 5
39131 DO i3 = 1, 3
39132 i = i + 1
39133 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
39134 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
39135 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
39136 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
39137 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
39138 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
39139 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
39140 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
39141 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
39142 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
39143 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
39144 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
39145 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
39146 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
39147 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
39148 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
39149 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
39150 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
39151 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
39152 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
39153 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
39154 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
39155 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
39156 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
39157 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
39158 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
39159 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
39160 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
39161 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
39162 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
39163 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
39164 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
39165 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
39166 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
39167 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
39168 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
39169 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
39170 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
39171 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
39172 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
39173 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
39174 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
39175 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
39176 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
39177 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
39178 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
39179 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
39180 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
39181 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
39182 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
39183 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
39184 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
39185 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
39186 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
39187 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
39188 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
39189 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
39190 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
39191 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
39192 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
39193 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
39194 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
39195 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
39196 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
39197 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
39198 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
39199 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
39200 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
39201 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
39202 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
39203 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
39204 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
39205 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
39206 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
39207 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
39208 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
39209 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
39210 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
39211 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
39212 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
39213 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
39214 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
39215 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
39216 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
39217 END DO
39218 END DO
39219 END DO
39220 s_offset_d1 = s_offset_d1 + 9
39221 END DO
39222 s_offset_c1 = s_offset_c1 + 9
39223 END DO
39224 s_offset_b1 = s_offset_b1 + 5
39225 END DO
39226 s_offset_a1 = s_offset_a1 + 3
39227 END DO
39228 END SUBROUTINE contract_pdgg
39229#endif
39230#if __MAX_CONTR > 3 || __MAX_CONTR == 3
39231! **************************************************************************************************
39232!> \brief ...
39233!> \param work ...
39234!> \param nl_a ...
39235!> \param nl_b ...
39236!> \param nl_c ...
39237!> \param nl_d ...
39238!> \param sphi_a ...
39239!> \param sphi_b ...
39240!> \param sphi_c ...
39241!> \param sphi_d ...
39242!> \param primitives ...
39243!> \param buffer1 ...
39244!> \param buffer2 ...
39245! **************************************************************************************************
39246 SUBROUTINE contract_pfss(work, &
39247 nl_a, nl_b, nl_c, nl_d, &
39248 sphi_a, sphi_b, sphi_c, sphi_d, &
39249 primitives, &
39250 buffer1, buffer2)
39251 REAL(dp), DIMENSION(3*10*1*1), INTENT(IN) :: work
39252 INTEGER :: nl_a, nl_b, nl_c, nl_d
39253 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
39254 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
39255 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
39256 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
39257 REAL(dp), &
39258 DIMENSION(3*nl_a, 7*nl_b, 1*nl_c, 1*nl_d) :: primitives
39259 REAL(dp), DIMENSION(3*10*1*1) :: buffer1, buffer2
39260
39261 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
39262 kmax, s_offset_a1, s_offset_b1, &
39263 s_offset_c1, s_offset_d1
39264
39265 s_offset_a1 = 0
39266 DO ia = 1, nl_a
39267 s_offset_b1 = 0
39268 DO ib = 1, nl_b
39269 s_offset_c1 = 0
39270 DO ic = 1, nl_c
39271 s_offset_d1 = 0
39272 DO id = 1, nl_d
39273 buffer1 = 0.0_dp
39274 imax = 10*1*1
39275 kmax = 3
39276 DO i = 1, imax
39277 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
39278 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
39279 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
39280 END DO
39281 buffer2 = 0.0_dp
39282 imax = 3*1*1
39283 kmax = 10
39284 DO i = 1, imax
39285 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
39286 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
39287 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
39288 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
39289 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
39290 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
39291 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
39292 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
39293 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
39294 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
39295 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
39296 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
39297 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
39298 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
39299 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
39300 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
39301 END DO
39302 buffer1 = 0.0_dp
39303 imax = 3*7*1
39304 kmax = 1
39305 DO i = 1, imax
39306 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
39307 END DO
39308 imax = 3*7*1
39309 kmax = 1
39310 i = 0
39311 DO i1 = 1, 1
39312 DO i2 = 1, 7
39313 DO i3 = 1, 3
39314 i = i + 1
39315 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
39316 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
39317 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
39318 END DO
39319 END DO
39320 END DO
39321 s_offset_d1 = s_offset_d1 + 1
39322 END DO
39323 s_offset_c1 = s_offset_c1 + 1
39324 END DO
39325 s_offset_b1 = s_offset_b1 + 7
39326 END DO
39327 s_offset_a1 = s_offset_a1 + 3
39328 END DO
39329 END SUBROUTINE contract_pfss
39330#endif
39331#if __MAX_CONTR > 3 || __MAX_CONTR == 3
39332! **************************************************************************************************
39333!> \brief ...
39334!> \param work ...
39335!> \param nl_a ...
39336!> \param nl_b ...
39337!> \param nl_c ...
39338!> \param nl_d ...
39339!> \param sphi_a ...
39340!> \param sphi_b ...
39341!> \param sphi_c ...
39342!> \param sphi_d ...
39343!> \param primitives ...
39344!> \param buffer1 ...
39345!> \param buffer2 ...
39346! **************************************************************************************************
39347 SUBROUTINE contract_pfsp(work, &
39348 nl_a, nl_b, nl_c, nl_d, &
39349 sphi_a, sphi_b, sphi_c, sphi_d, &
39350 primitives, &
39351 buffer1, buffer2)
39352 REAL(dp), DIMENSION(3*10*1*3), INTENT(IN) :: work
39353 INTEGER :: nl_a, nl_b, nl_c, nl_d
39354 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
39355 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
39356 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
39357 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
39358 REAL(dp), &
39359 DIMENSION(3*nl_a, 7*nl_b, 1*nl_c, 3*nl_d) :: primitives
39360 REAL(dp), DIMENSION(3*10*1*3) :: buffer1, buffer2
39361
39362 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
39363 kmax, s_offset_a1, s_offset_b1, &
39364 s_offset_c1, s_offset_d1
39365
39366 s_offset_a1 = 0
39367 DO ia = 1, nl_a
39368 s_offset_b1 = 0
39369 DO ib = 1, nl_b
39370 s_offset_c1 = 0
39371 DO ic = 1, nl_c
39372 s_offset_d1 = 0
39373 DO id = 1, nl_d
39374 buffer1 = 0.0_dp
39375 imax = 10*1*3
39376 kmax = 3
39377 DO i = 1, imax
39378 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
39379 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
39380 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
39381 END DO
39382 buffer2 = 0.0_dp
39383 imax = 3*1*3
39384 kmax = 10
39385 DO i = 1, imax
39386 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
39387 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
39388 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
39389 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
39390 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
39391 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
39392 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
39393 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
39394 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
39395 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
39396 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
39397 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
39398 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
39399 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
39400 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
39401 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
39402 END DO
39403 buffer1 = 0.0_dp
39404 imax = 3*7*3
39405 kmax = 1
39406 DO i = 1, imax
39407 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
39408 END DO
39409 imax = 3*7*1
39410 kmax = 3
39411 i = 0
39412 DO i1 = 1, 1
39413 DO i2 = 1, 7
39414 DO i3 = 1, 3
39415 i = i + 1
39416 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
39417 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
39418 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
39419 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
39420 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
39421 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
39422 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
39423 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
39424 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
39425 END DO
39426 END DO
39427 END DO
39428 s_offset_d1 = s_offset_d1 + 3
39429 END DO
39430 s_offset_c1 = s_offset_c1 + 1
39431 END DO
39432 s_offset_b1 = s_offset_b1 + 7
39433 END DO
39434 s_offset_a1 = s_offset_a1 + 3
39435 END DO
39436 END SUBROUTINE contract_pfsp
39437#endif
39438#if __MAX_CONTR > 3 || __MAX_CONTR == 3
39439! **************************************************************************************************
39440!> \brief ...
39441!> \param work ...
39442!> \param nl_a ...
39443!> \param nl_b ...
39444!> \param nl_c ...
39445!> \param nl_d ...
39446!> \param sphi_a ...
39447!> \param sphi_b ...
39448!> \param sphi_c ...
39449!> \param sphi_d ...
39450!> \param primitives ...
39451!> \param buffer1 ...
39452!> \param buffer2 ...
39453! **************************************************************************************************
39454 SUBROUTINE contract_pfsd(work, &
39455 nl_a, nl_b, nl_c, nl_d, &
39456 sphi_a, sphi_b, sphi_c, sphi_d, &
39457 primitives, &
39458 buffer1, buffer2)
39459 REAL(dp), DIMENSION(3*10*1*6), INTENT(IN) :: work
39460 INTEGER :: nl_a, nl_b, nl_c, nl_d
39461 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
39462 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
39463 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
39464 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
39465 REAL(dp), &
39466 DIMENSION(3*nl_a, 7*nl_b, 1*nl_c, 5*nl_d) :: primitives
39467 REAL(dp), DIMENSION(3*10*1*6) :: buffer1, buffer2
39468
39469 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
39470 kmax, s_offset_a1, s_offset_b1, &
39471 s_offset_c1, s_offset_d1
39472
39473 s_offset_a1 = 0
39474 DO ia = 1, nl_a
39475 s_offset_b1 = 0
39476 DO ib = 1, nl_b
39477 s_offset_c1 = 0
39478 DO ic = 1, nl_c
39479 s_offset_d1 = 0
39480 DO id = 1, nl_d
39481 buffer1 = 0.0_dp
39482 imax = 10*1*6
39483 kmax = 3
39484 DO i = 1, imax
39485 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
39486 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
39487 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
39488 END DO
39489 buffer2 = 0.0_dp
39490 imax = 3*1*6
39491 kmax = 10
39492 DO i = 1, imax
39493 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
39494 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
39495 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
39496 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
39497 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
39498 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
39499 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
39500 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
39501 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
39502 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
39503 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
39504 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
39505 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
39506 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
39507 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
39508 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
39509 END DO
39510 buffer1 = 0.0_dp
39511 imax = 3*7*6
39512 kmax = 1
39513 DO i = 1, imax
39514 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
39515 END DO
39516 imax = 3*7*1
39517 kmax = 6
39518 i = 0
39519 DO i1 = 1, 1
39520 DO i2 = 1, 7
39521 DO i3 = 1, 3
39522 i = i + 1
39523 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
39524 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
39525 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
39526 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
39527 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
39528 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
39529 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
39530 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
39531 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
39532 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
39533 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
39534 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
39535 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
39536 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
39537 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
39538 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
39539 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
39540 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
39541 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
39542 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
39543 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
39544 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
39545 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
39546 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
39547 END DO
39548 END DO
39549 END DO
39550 s_offset_d1 = s_offset_d1 + 5
39551 END DO
39552 s_offset_c1 = s_offset_c1 + 1
39553 END DO
39554 s_offset_b1 = s_offset_b1 + 7
39555 END DO
39556 s_offset_a1 = s_offset_a1 + 3
39557 END DO
39558 END SUBROUTINE contract_pfsd
39559#endif
39560#if __MAX_CONTR > 3 || __MAX_CONTR == 3
39561! **************************************************************************************************
39562!> \brief ...
39563!> \param work ...
39564!> \param nl_a ...
39565!> \param nl_b ...
39566!> \param nl_c ...
39567!> \param nl_d ...
39568!> \param sphi_a ...
39569!> \param sphi_b ...
39570!> \param sphi_c ...
39571!> \param sphi_d ...
39572!> \param primitives ...
39573!> \param buffer1 ...
39574!> \param buffer2 ...
39575! **************************************************************************************************
39576 SUBROUTINE contract_pfsf(work, &
39577 nl_a, nl_b, nl_c, nl_d, &
39578 sphi_a, sphi_b, sphi_c, sphi_d, &
39579 primitives, &
39580 buffer1, buffer2)
39581 REAL(dp), DIMENSION(3*10*1*10), INTENT(IN) :: work
39582 INTEGER :: nl_a, nl_b, nl_c, nl_d
39583 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
39584 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
39585 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
39586 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
39587 REAL(dp), &
39588 DIMENSION(3*nl_a, 7*nl_b, 1*nl_c, 7*nl_d) :: primitives
39589 REAL(dp), DIMENSION(3*10*1*10) :: buffer1, buffer2
39590
39591 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
39592 kmax, s_offset_a1, s_offset_b1, &
39593 s_offset_c1, s_offset_d1
39594
39595 s_offset_a1 = 0
39596 DO ia = 1, nl_a
39597 s_offset_b1 = 0
39598 DO ib = 1, nl_b
39599 s_offset_c1 = 0
39600 DO ic = 1, nl_c
39601 s_offset_d1 = 0
39602 DO id = 1, nl_d
39603 buffer1 = 0.0_dp
39604 imax = 10*1*10
39605 kmax = 3
39606 DO i = 1, imax
39607 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
39608 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
39609 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
39610 END DO
39611 buffer2 = 0.0_dp
39612 imax = 3*1*10
39613 kmax = 10
39614 DO i = 1, imax
39615 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
39616 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
39617 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
39618 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
39619 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
39620 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
39621 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
39622 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
39623 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
39624 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
39625 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
39626 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
39627 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
39628 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
39629 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
39630 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
39631 END DO
39632 buffer1 = 0.0_dp
39633 imax = 3*7*10
39634 kmax = 1
39635 DO i = 1, imax
39636 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
39637 END DO
39638 imax = 3*7*1
39639 kmax = 10
39640 i = 0
39641 DO i1 = 1, 1
39642 DO i2 = 1, 7
39643 DO i3 = 1, 3
39644 i = i + 1
39645 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
39646 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
39647 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
39648 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
39649 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
39650 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
39651 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
39652 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
39653 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
39654 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
39655 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
39656 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
39657 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
39658 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
39659 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
39660 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
39661 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
39662 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
39663 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
39664 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
39665 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
39666 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
39667 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
39668 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
39669 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
39670 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
39671 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
39672 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
39673 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
39674 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
39675 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
39676 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
39677 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
39678 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
39679 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
39680 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
39681 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
39682 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
39683 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
39684 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
39685 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
39686 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
39687 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
39688 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
39689 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
39690 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
39691 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
39692 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
39693 END DO
39694 END DO
39695 END DO
39696 s_offset_d1 = s_offset_d1 + 7
39697 END DO
39698 s_offset_c1 = s_offset_c1 + 1
39699 END DO
39700 s_offset_b1 = s_offset_b1 + 7
39701 END DO
39702 s_offset_a1 = s_offset_a1 + 3
39703 END DO
39704 END SUBROUTINE contract_pfsf
39705#endif
39706#if __MAX_CONTR > 4 || __MAX_CONTR == 4
39707! **************************************************************************************************
39708!> \brief ...
39709!> \param work ...
39710!> \param nl_a ...
39711!> \param nl_b ...
39712!> \param nl_c ...
39713!> \param nl_d ...
39714!> \param sphi_a ...
39715!> \param sphi_b ...
39716!> \param sphi_c ...
39717!> \param sphi_d ...
39718!> \param primitives ...
39719!> \param buffer1 ...
39720!> \param buffer2 ...
39721! **************************************************************************************************
39722 SUBROUTINE contract_pfsg(work, &
39723 nl_a, nl_b, nl_c, nl_d, &
39724 sphi_a, sphi_b, sphi_c, sphi_d, &
39725 primitives, &
39726 buffer1, buffer2)
39727 REAL(dp), DIMENSION(3*10*1*15), INTENT(IN) :: work
39728 INTEGER :: nl_a, nl_b, nl_c, nl_d
39729 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
39730 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
39731 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
39732 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
39733 REAL(dp), &
39734 DIMENSION(3*nl_a, 7*nl_b, 1*nl_c, 9*nl_d) :: primitives
39735 REAL(dp), DIMENSION(3*10*1*15) :: buffer1, buffer2
39736
39737 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
39738 kmax, s_offset_a1, s_offset_b1, &
39739 s_offset_c1, s_offset_d1
39740
39741 s_offset_a1 = 0
39742 DO ia = 1, nl_a
39743 s_offset_b1 = 0
39744 DO ib = 1, nl_b
39745 s_offset_c1 = 0
39746 DO ic = 1, nl_c
39747 s_offset_d1 = 0
39748 DO id = 1, nl_d
39749 buffer1 = 0.0_dp
39750 imax = 10*1*15
39751 kmax = 3
39752 DO i = 1, imax
39753 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
39754 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
39755 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
39756 END DO
39757 buffer2 = 0.0_dp
39758 imax = 3*1*15
39759 kmax = 10
39760 DO i = 1, imax
39761 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
39762 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
39763 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
39764 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
39765 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
39766 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
39767 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
39768 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
39769 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
39770 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
39771 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
39772 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
39773 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
39774 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
39775 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
39776 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
39777 END DO
39778 buffer1 = 0.0_dp
39779 imax = 3*7*15
39780 kmax = 1
39781 DO i = 1, imax
39782 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
39783 END DO
39784 imax = 3*7*1
39785 kmax = 15
39786 i = 0
39787 DO i1 = 1, 1
39788 DO i2 = 1, 7
39789 DO i3 = 1, 3
39790 i = i + 1
39791 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
39792 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
39793 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
39794 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
39795 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
39796 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
39797 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
39798 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
39799 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
39800 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
39801 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
39802 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
39803 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
39804 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
39805 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
39806 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
39807 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
39808 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
39809 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
39810 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
39811 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
39812 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
39813 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
39814 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
39815 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
39816 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
39817 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
39818 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
39819 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
39820 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
39821 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
39822 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
39823 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
39824 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
39825 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
39826 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
39827 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
39828 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
39829 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
39830 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
39831 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
39832 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
39833 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
39834 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
39835 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
39836 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
39837 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
39838 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
39839 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
39840 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
39841 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
39842 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
39843 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
39844 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
39845 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
39846 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
39847 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
39848 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
39849 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
39850 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
39851 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
39852 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
39853 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
39854 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
39855 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
39856 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
39857 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
39858 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
39859 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
39860 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
39861 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
39862 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
39863 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
39864 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
39865 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
39866 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
39867 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
39868 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
39869 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
39870 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
39871 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
39872 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
39873 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
39874 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
39875 END DO
39876 END DO
39877 END DO
39878 s_offset_d1 = s_offset_d1 + 9
39879 END DO
39880 s_offset_c1 = s_offset_c1 + 1
39881 END DO
39882 s_offset_b1 = s_offset_b1 + 7
39883 END DO
39884 s_offset_a1 = s_offset_a1 + 3
39885 END DO
39886 END SUBROUTINE contract_pfsg
39887#endif
39888#if __MAX_CONTR > 3 || __MAX_CONTR == 3
39889! **************************************************************************************************
39890!> \brief ...
39891!> \param work ...
39892!> \param nl_a ...
39893!> \param nl_b ...
39894!> \param nl_c ...
39895!> \param nl_d ...
39896!> \param sphi_a ...
39897!> \param sphi_b ...
39898!> \param sphi_c ...
39899!> \param sphi_d ...
39900!> \param primitives ...
39901!> \param buffer1 ...
39902!> \param buffer2 ...
39903! **************************************************************************************************
39904 SUBROUTINE contract_pfps(work, &
39905 nl_a, nl_b, nl_c, nl_d, &
39906 sphi_a, sphi_b, sphi_c, sphi_d, &
39907 primitives, &
39908 buffer1, buffer2)
39909 REAL(dp), DIMENSION(3*10*3*1), INTENT(IN) :: work
39910 INTEGER :: nl_a, nl_b, nl_c, nl_d
39911 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
39912 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
39913 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
39914 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
39915 REAL(dp), &
39916 DIMENSION(3*nl_a, 7*nl_b, 3*nl_c, 1*nl_d) :: primitives
39917 REAL(dp), DIMENSION(3*10*3*1) :: buffer1, buffer2
39918
39919 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
39920 kmax, s_offset_a1, s_offset_b1, &
39921 s_offset_c1, s_offset_d1
39922
39923 s_offset_a1 = 0
39924 DO ia = 1, nl_a
39925 s_offset_b1 = 0
39926 DO ib = 1, nl_b
39927 s_offset_c1 = 0
39928 DO ic = 1, nl_c
39929 s_offset_d1 = 0
39930 DO id = 1, nl_d
39931 buffer1 = 0.0_dp
39932 imax = 10*3*1
39933 kmax = 3
39934 DO i = 1, imax
39935 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
39936 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
39937 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
39938 END DO
39939 buffer2 = 0.0_dp
39940 imax = 3*3*1
39941 kmax = 10
39942 DO i = 1, imax
39943 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
39944 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
39945 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
39946 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
39947 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
39948 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
39949 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
39950 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
39951 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
39952 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
39953 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
39954 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
39955 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
39956 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
39957 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
39958 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
39959 END DO
39960 buffer1 = 0.0_dp
39961 imax = 3*7*1
39962 kmax = 3
39963 DO i = 1, imax
39964 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
39965 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
39966 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
39967 END DO
39968 imax = 3*7*3
39969 kmax = 1
39970 i = 0
39971 DO i1 = 1, 3
39972 DO i2 = 1, 7
39973 DO i3 = 1, 3
39974 i = i + 1
39975 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
39976 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
39977 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
39978 END DO
39979 END DO
39980 END DO
39981 s_offset_d1 = s_offset_d1 + 1
39982 END DO
39983 s_offset_c1 = s_offset_c1 + 3
39984 END DO
39985 s_offset_b1 = s_offset_b1 + 7
39986 END DO
39987 s_offset_a1 = s_offset_a1 + 3
39988 END DO
39989 END SUBROUTINE contract_pfps
39990#endif
39991#if __MAX_CONTR > 3 || __MAX_CONTR == 3
39992! **************************************************************************************************
39993!> \brief ...
39994!> \param work ...
39995!> \param nl_a ...
39996!> \param nl_b ...
39997!> \param nl_c ...
39998!> \param nl_d ...
39999!> \param sphi_a ...
40000!> \param sphi_b ...
40001!> \param sphi_c ...
40002!> \param sphi_d ...
40003!> \param primitives ...
40004!> \param buffer1 ...
40005!> \param buffer2 ...
40006! **************************************************************************************************
40007 SUBROUTINE contract_pfpp(work, &
40008 nl_a, nl_b, nl_c, nl_d, &
40009 sphi_a, sphi_b, sphi_c, sphi_d, &
40010 primitives, &
40011 buffer1, buffer2)
40012 REAL(dp), DIMENSION(3*10*3*3), INTENT(IN) :: work
40013 INTEGER :: nl_a, nl_b, nl_c, nl_d
40014 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
40015 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
40016 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
40017 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
40018 REAL(dp), &
40019 DIMENSION(3*nl_a, 7*nl_b, 3*nl_c, 3*nl_d) :: primitives
40020 REAL(dp), DIMENSION(3*10*3*3) :: buffer1, buffer2
40021
40022 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
40023 kmax, s_offset_a1, s_offset_b1, &
40024 s_offset_c1, s_offset_d1
40025
40026 s_offset_a1 = 0
40027 DO ia = 1, nl_a
40028 s_offset_b1 = 0
40029 DO ib = 1, nl_b
40030 s_offset_c1 = 0
40031 DO ic = 1, nl_c
40032 s_offset_d1 = 0
40033 DO id = 1, nl_d
40034 buffer1 = 0.0_dp
40035 imax = 10*3*3
40036 kmax = 3
40037 DO i = 1, imax
40038 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
40039 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
40040 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
40041 END DO
40042 buffer2 = 0.0_dp
40043 imax = 3*3*3
40044 kmax = 10
40045 DO i = 1, imax
40046 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
40047 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
40048 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
40049 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
40050 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
40051 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
40052 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
40053 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
40054 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
40055 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
40056 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
40057 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
40058 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
40059 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
40060 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
40061 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
40062 END DO
40063 buffer1 = 0.0_dp
40064 imax = 3*7*3
40065 kmax = 3
40066 DO i = 1, imax
40067 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
40068 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
40069 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
40070 END DO
40071 imax = 3*7*3
40072 kmax = 3
40073 i = 0
40074 DO i1 = 1, 3
40075 DO i2 = 1, 7
40076 DO i3 = 1, 3
40077 i = i + 1
40078 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
40079 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
40080 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
40081 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
40082 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
40083 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
40084 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
40085 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
40086 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
40087 END DO
40088 END DO
40089 END DO
40090 s_offset_d1 = s_offset_d1 + 3
40091 END DO
40092 s_offset_c1 = s_offset_c1 + 3
40093 END DO
40094 s_offset_b1 = s_offset_b1 + 7
40095 END DO
40096 s_offset_a1 = s_offset_a1 + 3
40097 END DO
40098 END SUBROUTINE contract_pfpp
40099#endif
40100#if __MAX_CONTR > 3 || __MAX_CONTR == 3
40101! **************************************************************************************************
40102!> \brief ...
40103!> \param work ...
40104!> \param nl_a ...
40105!> \param nl_b ...
40106!> \param nl_c ...
40107!> \param nl_d ...
40108!> \param sphi_a ...
40109!> \param sphi_b ...
40110!> \param sphi_c ...
40111!> \param sphi_d ...
40112!> \param primitives ...
40113!> \param buffer1 ...
40114!> \param buffer2 ...
40115! **************************************************************************************************
40116 SUBROUTINE contract_pfpd(work, &
40117 nl_a, nl_b, nl_c, nl_d, &
40118 sphi_a, sphi_b, sphi_c, sphi_d, &
40119 primitives, &
40120 buffer1, buffer2)
40121 REAL(dp), DIMENSION(3*10*3*6), INTENT(IN) :: work
40122 INTEGER :: nl_a, nl_b, nl_c, nl_d
40123 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
40124 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
40125 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
40126 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
40127 REAL(dp), &
40128 DIMENSION(3*nl_a, 7*nl_b, 3*nl_c, 5*nl_d) :: primitives
40129 REAL(dp), DIMENSION(3*10*3*6) :: buffer1, buffer2
40130
40131 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
40132 kmax, s_offset_a1, s_offset_b1, &
40133 s_offset_c1, s_offset_d1
40134
40135 s_offset_a1 = 0
40136 DO ia = 1, nl_a
40137 s_offset_b1 = 0
40138 DO ib = 1, nl_b
40139 s_offset_c1 = 0
40140 DO ic = 1, nl_c
40141 s_offset_d1 = 0
40142 DO id = 1, nl_d
40143 buffer1 = 0.0_dp
40144 imax = 10*3*6
40145 kmax = 3
40146 DO i = 1, imax
40147 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
40148 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
40149 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
40150 END DO
40151 buffer2 = 0.0_dp
40152 imax = 3*3*6
40153 kmax = 10
40154 DO i = 1, imax
40155 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
40156 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
40157 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
40158 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
40159 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
40160 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
40161 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
40162 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
40163 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
40164 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
40165 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
40166 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
40167 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
40168 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
40169 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
40170 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
40171 END DO
40172 buffer1 = 0.0_dp
40173 imax = 3*7*6
40174 kmax = 3
40175 DO i = 1, imax
40176 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
40177 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
40178 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
40179 END DO
40180 imax = 3*7*3
40181 kmax = 6
40182 i = 0
40183 DO i1 = 1, 3
40184 DO i2 = 1, 7
40185 DO i3 = 1, 3
40186 i = i + 1
40187 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
40188 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
40189 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
40190 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
40191 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
40192 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
40193 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
40194 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
40195 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
40196 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
40197 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
40198 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
40199 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
40200 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
40201 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
40202 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
40203 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
40204 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
40205 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
40206 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
40207 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
40208 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
40209 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
40210 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
40211 END DO
40212 END DO
40213 END DO
40214 s_offset_d1 = s_offset_d1 + 5
40215 END DO
40216 s_offset_c1 = s_offset_c1 + 3
40217 END DO
40218 s_offset_b1 = s_offset_b1 + 7
40219 END DO
40220 s_offset_a1 = s_offset_a1 + 3
40221 END DO
40222 END SUBROUTINE contract_pfpd
40223#endif
40224#if __MAX_CONTR > 3 || __MAX_CONTR == 3
40225! **************************************************************************************************
40226!> \brief ...
40227!> \param work ...
40228!> \param nl_a ...
40229!> \param nl_b ...
40230!> \param nl_c ...
40231!> \param nl_d ...
40232!> \param sphi_a ...
40233!> \param sphi_b ...
40234!> \param sphi_c ...
40235!> \param sphi_d ...
40236!> \param primitives ...
40237!> \param buffer1 ...
40238!> \param buffer2 ...
40239! **************************************************************************************************
40240 SUBROUTINE contract_pfpf(work, &
40241 nl_a, nl_b, nl_c, nl_d, &
40242 sphi_a, sphi_b, sphi_c, sphi_d, &
40243 primitives, &
40244 buffer1, buffer2)
40245 REAL(dp), DIMENSION(3*10*3*10), INTENT(IN) :: work
40246 INTEGER :: nl_a, nl_b, nl_c, nl_d
40247 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
40248 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
40249 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
40250 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
40251 REAL(dp), &
40252 DIMENSION(3*nl_a, 7*nl_b, 3*nl_c, 7*nl_d) :: primitives
40253 REAL(dp), DIMENSION(3*10*3*10) :: buffer1, buffer2
40254
40255 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
40256 kmax, s_offset_a1, s_offset_b1, &
40257 s_offset_c1, s_offset_d1
40258
40259 s_offset_a1 = 0
40260 DO ia = 1, nl_a
40261 s_offset_b1 = 0
40262 DO ib = 1, nl_b
40263 s_offset_c1 = 0
40264 DO ic = 1, nl_c
40265 s_offset_d1 = 0
40266 DO id = 1, nl_d
40267 buffer1 = 0.0_dp
40268 imax = 10*3*10
40269 kmax = 3
40270 DO i = 1, imax
40271 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
40272 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
40273 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
40274 END DO
40275 buffer2 = 0.0_dp
40276 imax = 3*3*10
40277 kmax = 10
40278 DO i = 1, imax
40279 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
40280 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
40281 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
40282 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
40283 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
40284 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
40285 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
40286 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
40287 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
40288 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
40289 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
40290 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
40291 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
40292 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
40293 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
40294 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
40295 END DO
40296 buffer1 = 0.0_dp
40297 imax = 3*7*10
40298 kmax = 3
40299 DO i = 1, imax
40300 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
40301 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
40302 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
40303 END DO
40304 imax = 3*7*3
40305 kmax = 10
40306 i = 0
40307 DO i1 = 1, 3
40308 DO i2 = 1, 7
40309 DO i3 = 1, 3
40310 i = i + 1
40311 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
40312 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
40313 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
40314 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
40315 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
40316 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
40317 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
40318 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
40319 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
40320 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
40321 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
40322 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
40323 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
40324 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
40325 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
40326 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
40327 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
40328 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
40329 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
40330 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
40331 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
40332 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
40333 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
40334 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
40335 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
40336 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
40337 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
40338 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
40339 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
40340 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
40341 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
40342 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
40343 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
40344 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
40345 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
40346 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
40347 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
40348 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
40349 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
40350 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
40351 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
40352 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
40353 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
40354 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
40355 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
40356 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
40357 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
40358 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
40359 END DO
40360 END DO
40361 END DO
40362 s_offset_d1 = s_offset_d1 + 7
40363 END DO
40364 s_offset_c1 = s_offset_c1 + 3
40365 END DO
40366 s_offset_b1 = s_offset_b1 + 7
40367 END DO
40368 s_offset_a1 = s_offset_a1 + 3
40369 END DO
40370 END SUBROUTINE contract_pfpf
40371#endif
40372#if __MAX_CONTR > 4 || __MAX_CONTR == 4
40373! **************************************************************************************************
40374!> \brief ...
40375!> \param work ...
40376!> \param nl_a ...
40377!> \param nl_b ...
40378!> \param nl_c ...
40379!> \param nl_d ...
40380!> \param sphi_a ...
40381!> \param sphi_b ...
40382!> \param sphi_c ...
40383!> \param sphi_d ...
40384!> \param primitives ...
40385!> \param buffer1 ...
40386!> \param buffer2 ...
40387! **************************************************************************************************
40388 SUBROUTINE contract_pfpg(work, &
40389 nl_a, nl_b, nl_c, nl_d, &
40390 sphi_a, sphi_b, sphi_c, sphi_d, &
40391 primitives, &
40392 buffer1, buffer2)
40393 REAL(dp), DIMENSION(3*10*3*15), INTENT(IN) :: work
40394 INTEGER :: nl_a, nl_b, nl_c, nl_d
40395 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
40396 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
40397 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
40398 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
40399 REAL(dp), &
40400 DIMENSION(3*nl_a, 7*nl_b, 3*nl_c, 9*nl_d) :: primitives
40401 REAL(dp), DIMENSION(3*10*3*15) :: buffer1, buffer2
40402
40403 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
40404 kmax, s_offset_a1, s_offset_b1, &
40405 s_offset_c1, s_offset_d1
40406
40407 s_offset_a1 = 0
40408 DO ia = 1, nl_a
40409 s_offset_b1 = 0
40410 DO ib = 1, nl_b
40411 s_offset_c1 = 0
40412 DO ic = 1, nl_c
40413 s_offset_d1 = 0
40414 DO id = 1, nl_d
40415 buffer1 = 0.0_dp
40416 imax = 10*3*15
40417 kmax = 3
40418 DO i = 1, imax
40419 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
40420 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
40421 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
40422 END DO
40423 buffer2 = 0.0_dp
40424 imax = 3*3*15
40425 kmax = 10
40426 DO i = 1, imax
40427 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
40428 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
40429 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
40430 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
40431 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
40432 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
40433 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
40434 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
40435 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
40436 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
40437 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
40438 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
40439 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
40440 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
40441 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
40442 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
40443 END DO
40444 buffer1 = 0.0_dp
40445 imax = 3*7*15
40446 kmax = 3
40447 DO i = 1, imax
40448 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
40449 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
40450 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
40451 END DO
40452 imax = 3*7*3
40453 kmax = 15
40454 i = 0
40455 DO i1 = 1, 3
40456 DO i2 = 1, 7
40457 DO i3 = 1, 3
40458 i = i + 1
40459 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
40460 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
40461 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
40462 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
40463 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
40464 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
40465 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
40466 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
40467 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
40468 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
40469 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
40470 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
40471 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
40472 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
40473 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
40474 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
40475 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
40476 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
40477 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
40478 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
40479 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
40480 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
40481 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
40482 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
40483 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
40484 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
40485 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
40486 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
40487 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
40488 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
40489 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
40490 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
40491 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
40492 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
40493 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
40494 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
40495 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
40496 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
40497 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
40498 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
40499 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
40500 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
40501 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
40502 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
40503 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
40504 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
40505 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
40506 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
40507 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
40508 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
40509 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
40510 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
40511 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
40512 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
40513 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
40514 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
40515 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
40516 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
40517 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
40518 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
40519 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
40520 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
40521 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
40522 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
40523 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
40524 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
40525 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
40526 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
40527 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
40528 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
40529 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
40530 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
40531 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
40532 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
40533 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
40534 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
40535 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
40536 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
40537 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
40538 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
40539 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
40540 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
40541 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
40542 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
40543 END DO
40544 END DO
40545 END DO
40546 s_offset_d1 = s_offset_d1 + 9
40547 END DO
40548 s_offset_c1 = s_offset_c1 + 3
40549 END DO
40550 s_offset_b1 = s_offset_b1 + 7
40551 END DO
40552 s_offset_a1 = s_offset_a1 + 3
40553 END DO
40554 END SUBROUTINE contract_pfpg
40555#endif
40556#if __MAX_CONTR > 3 || __MAX_CONTR == 3
40557! **************************************************************************************************
40558!> \brief ...
40559!> \param work ...
40560!> \param nl_a ...
40561!> \param nl_b ...
40562!> \param nl_c ...
40563!> \param nl_d ...
40564!> \param sphi_a ...
40565!> \param sphi_b ...
40566!> \param sphi_c ...
40567!> \param sphi_d ...
40568!> \param primitives ...
40569!> \param buffer1 ...
40570!> \param buffer2 ...
40571! **************************************************************************************************
40572 SUBROUTINE contract_pfds(work, &
40573 nl_a, nl_b, nl_c, nl_d, &
40574 sphi_a, sphi_b, sphi_c, sphi_d, &
40575 primitives, &
40576 buffer1, buffer2)
40577 REAL(dp), DIMENSION(3*10*6*1), INTENT(IN) :: work
40578 INTEGER :: nl_a, nl_b, nl_c, nl_d
40579 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
40580 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
40581 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
40582 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
40583 REAL(dp), &
40584 DIMENSION(3*nl_a, 7*nl_b, 5*nl_c, 1*nl_d) :: primitives
40585 REAL(dp), DIMENSION(3*10*6*1) :: buffer1, buffer2
40586
40587 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
40588 kmax, s_offset_a1, s_offset_b1, &
40589 s_offset_c1, s_offset_d1
40590
40591 s_offset_a1 = 0
40592 DO ia = 1, nl_a
40593 s_offset_b1 = 0
40594 DO ib = 1, nl_b
40595 s_offset_c1 = 0
40596 DO ic = 1, nl_c
40597 s_offset_d1 = 0
40598 DO id = 1, nl_d
40599 buffer1 = 0.0_dp
40600 imax = 10*6*1
40601 kmax = 3
40602 DO i = 1, imax
40603 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
40604 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
40605 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
40606 END DO
40607 buffer2 = 0.0_dp
40608 imax = 3*6*1
40609 kmax = 10
40610 DO i = 1, imax
40611 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
40612 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
40613 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
40614 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
40615 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
40616 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
40617 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
40618 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
40619 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
40620 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
40621 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
40622 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
40623 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
40624 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
40625 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
40626 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
40627 END DO
40628 buffer1 = 0.0_dp
40629 imax = 3*7*1
40630 kmax = 6
40631 DO i = 1, imax
40632 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
40633 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
40634 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
40635 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
40636 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
40637 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
40638 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
40639 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
40640 END DO
40641 imax = 3*7*5
40642 kmax = 1
40643 i = 0
40644 DO i1 = 1, 5
40645 DO i2 = 1, 7
40646 DO i3 = 1, 3
40647 i = i + 1
40648 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
40649 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
40650 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
40651 END DO
40652 END DO
40653 END DO
40654 s_offset_d1 = s_offset_d1 + 1
40655 END DO
40656 s_offset_c1 = s_offset_c1 + 5
40657 END DO
40658 s_offset_b1 = s_offset_b1 + 7
40659 END DO
40660 s_offset_a1 = s_offset_a1 + 3
40661 END DO
40662 END SUBROUTINE contract_pfds
40663#endif
40664#if __MAX_CONTR > 3 || __MAX_CONTR == 3
40665! **************************************************************************************************
40666!> \brief ...
40667!> \param work ...
40668!> \param nl_a ...
40669!> \param nl_b ...
40670!> \param nl_c ...
40671!> \param nl_d ...
40672!> \param sphi_a ...
40673!> \param sphi_b ...
40674!> \param sphi_c ...
40675!> \param sphi_d ...
40676!> \param primitives ...
40677!> \param buffer1 ...
40678!> \param buffer2 ...
40679! **************************************************************************************************
40680 SUBROUTINE contract_pfdp(work, &
40681 nl_a, nl_b, nl_c, nl_d, &
40682 sphi_a, sphi_b, sphi_c, sphi_d, &
40683 primitives, &
40684 buffer1, buffer2)
40685 REAL(dp), DIMENSION(3*10*6*3), INTENT(IN) :: work
40686 INTEGER :: nl_a, nl_b, nl_c, nl_d
40687 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
40688 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
40689 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
40690 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
40691 REAL(dp), &
40692 DIMENSION(3*nl_a, 7*nl_b, 5*nl_c, 3*nl_d) :: primitives
40693 REAL(dp), DIMENSION(3*10*6*3) :: buffer1, buffer2
40694
40695 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
40696 kmax, s_offset_a1, s_offset_b1, &
40697 s_offset_c1, s_offset_d1
40698
40699 s_offset_a1 = 0
40700 DO ia = 1, nl_a
40701 s_offset_b1 = 0
40702 DO ib = 1, nl_b
40703 s_offset_c1 = 0
40704 DO ic = 1, nl_c
40705 s_offset_d1 = 0
40706 DO id = 1, nl_d
40707 buffer1 = 0.0_dp
40708 imax = 10*6*3
40709 kmax = 3
40710 DO i = 1, imax
40711 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
40712 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
40713 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
40714 END DO
40715 buffer2 = 0.0_dp
40716 imax = 3*6*3
40717 kmax = 10
40718 DO i = 1, imax
40719 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
40720 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
40721 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
40722 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
40723 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
40724 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
40725 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
40726 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
40727 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
40728 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
40729 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
40730 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
40731 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
40732 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
40733 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
40734 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
40735 END DO
40736 buffer1 = 0.0_dp
40737 imax = 3*7*3
40738 kmax = 6
40739 DO i = 1, imax
40740 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
40741 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
40742 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
40743 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
40744 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
40745 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
40746 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
40747 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
40748 END DO
40749 imax = 3*7*5
40750 kmax = 3
40751 i = 0
40752 DO i1 = 1, 5
40753 DO i2 = 1, 7
40754 DO i3 = 1, 3
40755 i = i + 1
40756 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
40757 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
40758 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
40759 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
40760 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
40761 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
40762 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
40763 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
40764 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
40765 END DO
40766 END DO
40767 END DO
40768 s_offset_d1 = s_offset_d1 + 3
40769 END DO
40770 s_offset_c1 = s_offset_c1 + 5
40771 END DO
40772 s_offset_b1 = s_offset_b1 + 7
40773 END DO
40774 s_offset_a1 = s_offset_a1 + 3
40775 END DO
40776 END SUBROUTINE contract_pfdp
40777#endif
40778#if __MAX_CONTR > 3 || __MAX_CONTR == 3
40779! **************************************************************************************************
40780!> \brief ...
40781!> \param work ...
40782!> \param nl_a ...
40783!> \param nl_b ...
40784!> \param nl_c ...
40785!> \param nl_d ...
40786!> \param sphi_a ...
40787!> \param sphi_b ...
40788!> \param sphi_c ...
40789!> \param sphi_d ...
40790!> \param primitives ...
40791!> \param buffer1 ...
40792!> \param buffer2 ...
40793! **************************************************************************************************
40794 SUBROUTINE contract_pfdd(work, &
40795 nl_a, nl_b, nl_c, nl_d, &
40796 sphi_a, sphi_b, sphi_c, sphi_d, &
40797 primitives, &
40798 buffer1, buffer2)
40799 REAL(dp), DIMENSION(3*10*6*6), INTENT(IN) :: work
40800 INTEGER :: nl_a, nl_b, nl_c, nl_d
40801 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
40802 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
40803 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
40804 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
40805 REAL(dp), &
40806 DIMENSION(3*nl_a, 7*nl_b, 5*nl_c, 5*nl_d) :: primitives
40807 REAL(dp), DIMENSION(3*10*6*6) :: buffer1, buffer2
40808
40809 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
40810 kmax, s_offset_a1, s_offset_b1, &
40811 s_offset_c1, s_offset_d1
40812
40813 s_offset_a1 = 0
40814 DO ia = 1, nl_a
40815 s_offset_b1 = 0
40816 DO ib = 1, nl_b
40817 s_offset_c1 = 0
40818 DO ic = 1, nl_c
40819 s_offset_d1 = 0
40820 DO id = 1, nl_d
40821 buffer1 = 0.0_dp
40822 imax = 10*6*6
40823 kmax = 3
40824 DO i = 1, imax
40825 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
40826 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
40827 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
40828 END DO
40829 buffer2 = 0.0_dp
40830 imax = 3*6*6
40831 kmax = 10
40832 DO i = 1, imax
40833 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
40834 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
40835 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
40836 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
40837 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
40838 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
40839 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
40840 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
40841 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
40842 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
40843 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
40844 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
40845 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
40846 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
40847 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
40848 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
40849 END DO
40850 buffer1 = 0.0_dp
40851 imax = 3*7*6
40852 kmax = 6
40853 DO i = 1, imax
40854 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
40855 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
40856 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
40857 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
40858 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
40859 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
40860 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
40861 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
40862 END DO
40863 imax = 3*7*5
40864 kmax = 6
40865 i = 0
40866 DO i1 = 1, 5
40867 DO i2 = 1, 7
40868 DO i3 = 1, 3
40869 i = i + 1
40870 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
40871 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
40872 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
40873 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
40874 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
40875 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
40876 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
40877 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
40878 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
40879 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
40880 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
40881 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
40882 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
40883 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
40884 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
40885 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
40886 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
40887 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
40888 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
40889 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
40890 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
40891 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
40892 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
40893 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
40894 END DO
40895 END DO
40896 END DO
40897 s_offset_d1 = s_offset_d1 + 5
40898 END DO
40899 s_offset_c1 = s_offset_c1 + 5
40900 END DO
40901 s_offset_b1 = s_offset_b1 + 7
40902 END DO
40903 s_offset_a1 = s_offset_a1 + 3
40904 END DO
40905 END SUBROUTINE contract_pfdd
40906#endif
40907#if __MAX_CONTR > 3 || __MAX_CONTR == 3
40908! **************************************************************************************************
40909!> \brief ...
40910!> \param work ...
40911!> \param nl_a ...
40912!> \param nl_b ...
40913!> \param nl_c ...
40914!> \param nl_d ...
40915!> \param sphi_a ...
40916!> \param sphi_b ...
40917!> \param sphi_c ...
40918!> \param sphi_d ...
40919!> \param primitives ...
40920!> \param buffer1 ...
40921!> \param buffer2 ...
40922! **************************************************************************************************
40923 SUBROUTINE contract_pfdf(work, &
40924 nl_a, nl_b, nl_c, nl_d, &
40925 sphi_a, sphi_b, sphi_c, sphi_d, &
40926 primitives, &
40927 buffer1, buffer2)
40928 REAL(dp), DIMENSION(3*10*6*10), INTENT(IN) :: work
40929 INTEGER :: nl_a, nl_b, nl_c, nl_d
40930 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
40931 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
40932 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
40933 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
40934 REAL(dp), &
40935 DIMENSION(3*nl_a, 7*nl_b, 5*nl_c, 7*nl_d) :: primitives
40936 REAL(dp), DIMENSION(3*10*6*10) :: buffer1, buffer2
40937
40938 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
40939 kmax, s_offset_a1, s_offset_b1, &
40940 s_offset_c1, s_offset_d1
40941
40942 s_offset_a1 = 0
40943 DO ia = 1, nl_a
40944 s_offset_b1 = 0
40945 DO ib = 1, nl_b
40946 s_offset_c1 = 0
40947 DO ic = 1, nl_c
40948 s_offset_d1 = 0
40949 DO id = 1, nl_d
40950 buffer1 = 0.0_dp
40951 imax = 10*6*10
40952 kmax = 3
40953 DO i = 1, imax
40954 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
40955 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
40956 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
40957 END DO
40958 buffer2 = 0.0_dp
40959 imax = 3*6*10
40960 kmax = 10
40961 DO i = 1, imax
40962 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
40963 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
40964 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
40965 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
40966 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
40967 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
40968 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
40969 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
40970 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
40971 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
40972 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
40973 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
40974 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
40975 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
40976 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
40977 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
40978 END DO
40979 buffer1 = 0.0_dp
40980 imax = 3*7*10
40981 kmax = 6
40982 DO i = 1, imax
40983 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
40984 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
40985 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
40986 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
40987 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
40988 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
40989 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
40990 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
40991 END DO
40992 imax = 3*7*5
40993 kmax = 10
40994 i = 0
40995 DO i1 = 1, 5
40996 DO i2 = 1, 7
40997 DO i3 = 1, 3
40998 i = i + 1
40999 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
41000 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
41001 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
41002 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
41003 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
41004 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
41005 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
41006 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
41007 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
41008 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
41009 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
41010 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
41011 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
41012 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
41013 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
41014 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
41015 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
41016 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
41017 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
41018 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
41019 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
41020 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
41021 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
41022 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
41023 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
41024 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
41025 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
41026 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
41027 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
41028 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
41029 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
41030 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
41031 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
41032 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
41033 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
41034 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
41035 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
41036 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
41037 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
41038 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
41039 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
41040 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
41041 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
41042 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
41043 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
41044 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
41045 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
41046 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
41047 END DO
41048 END DO
41049 END DO
41050 s_offset_d1 = s_offset_d1 + 7
41051 END DO
41052 s_offset_c1 = s_offset_c1 + 5
41053 END DO
41054 s_offset_b1 = s_offset_b1 + 7
41055 END DO
41056 s_offset_a1 = s_offset_a1 + 3
41057 END DO
41058 END SUBROUTINE contract_pfdf
41059#endif
41060#if __MAX_CONTR > 4 || __MAX_CONTR == 4
41061! **************************************************************************************************
41062!> \brief ...
41063!> \param work ...
41064!> \param nl_a ...
41065!> \param nl_b ...
41066!> \param nl_c ...
41067!> \param nl_d ...
41068!> \param sphi_a ...
41069!> \param sphi_b ...
41070!> \param sphi_c ...
41071!> \param sphi_d ...
41072!> \param primitives ...
41073!> \param buffer1 ...
41074!> \param buffer2 ...
41075! **************************************************************************************************
41076 SUBROUTINE contract_pfdg(work, &
41077 nl_a, nl_b, nl_c, nl_d, &
41078 sphi_a, sphi_b, sphi_c, sphi_d, &
41079 primitives, &
41080 buffer1, buffer2)
41081 REAL(dp), DIMENSION(3*10*6*15), INTENT(IN) :: work
41082 INTEGER :: nl_a, nl_b, nl_c, nl_d
41083 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
41084 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
41085 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
41086 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
41087 REAL(dp), &
41088 DIMENSION(3*nl_a, 7*nl_b, 5*nl_c, 9*nl_d) :: primitives
41089 REAL(dp), DIMENSION(3*10*6*15) :: buffer1, buffer2
41090
41091 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
41092 kmax, s_offset_a1, s_offset_b1, &
41093 s_offset_c1, s_offset_d1
41094
41095 s_offset_a1 = 0
41096 DO ia = 1, nl_a
41097 s_offset_b1 = 0
41098 DO ib = 1, nl_b
41099 s_offset_c1 = 0
41100 DO ic = 1, nl_c
41101 s_offset_d1 = 0
41102 DO id = 1, nl_d
41103 buffer1 = 0.0_dp
41104 imax = 10*6*15
41105 kmax = 3
41106 DO i = 1, imax
41107 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
41108 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
41109 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
41110 END DO
41111 buffer2 = 0.0_dp
41112 imax = 3*6*15
41113 kmax = 10
41114 DO i = 1, imax
41115 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
41116 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
41117 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
41118 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
41119 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
41120 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
41121 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
41122 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
41123 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
41124 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
41125 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
41126 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
41127 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
41128 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
41129 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
41130 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
41131 END DO
41132 buffer1 = 0.0_dp
41133 imax = 3*7*15
41134 kmax = 6
41135 DO i = 1, imax
41136 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
41137 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
41138 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
41139 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
41140 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
41141 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
41142 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
41143 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
41144 END DO
41145 imax = 3*7*5
41146 kmax = 15
41147 i = 0
41148 DO i1 = 1, 5
41149 DO i2 = 1, 7
41150 DO i3 = 1, 3
41151 i = i + 1
41152 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
41153 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
41154 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
41155 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
41156 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
41157 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
41158 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
41159 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
41160 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
41161 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
41162 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
41163 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
41164 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
41165 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
41166 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
41167 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
41168 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
41169 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
41170 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
41171 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
41172 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
41173 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
41174 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
41175 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
41176 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
41177 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
41178 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
41179 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
41180 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
41181 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
41182 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
41183 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
41184 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
41185 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
41186 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
41187 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
41188 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
41189 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
41190 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
41191 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
41192 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
41193 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
41194 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
41195 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
41196 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
41197 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
41198 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
41199 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
41200 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
41201 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
41202 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
41203 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
41204 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
41205 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
41206 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
41207 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
41208 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
41209 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
41210 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
41211 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
41212 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
41213 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
41214 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
41215 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
41216 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
41217 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
41218 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
41219 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
41220 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
41221 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
41222 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
41223 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
41224 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
41225 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
41226 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
41227 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
41228 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
41229 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
41230 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
41231 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
41232 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
41233 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
41234 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
41235 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
41236 END DO
41237 END DO
41238 END DO
41239 s_offset_d1 = s_offset_d1 + 9
41240 END DO
41241 s_offset_c1 = s_offset_c1 + 5
41242 END DO
41243 s_offset_b1 = s_offset_b1 + 7
41244 END DO
41245 s_offset_a1 = s_offset_a1 + 3
41246 END DO
41247 END SUBROUTINE contract_pfdg
41248#endif
41249#if __MAX_CONTR > 3 || __MAX_CONTR == 3
41250! **************************************************************************************************
41251!> \brief ...
41252!> \param work ...
41253!> \param nl_a ...
41254!> \param nl_b ...
41255!> \param nl_c ...
41256!> \param nl_d ...
41257!> \param sphi_a ...
41258!> \param sphi_b ...
41259!> \param sphi_c ...
41260!> \param sphi_d ...
41261!> \param primitives ...
41262!> \param buffer1 ...
41263!> \param buffer2 ...
41264! **************************************************************************************************
41265 SUBROUTINE contract_pffs(work, &
41266 nl_a, nl_b, nl_c, nl_d, &
41267 sphi_a, sphi_b, sphi_c, sphi_d, &
41268 primitives, &
41269 buffer1, buffer2)
41270 REAL(dp), DIMENSION(3*10*10*1), INTENT(IN) :: work
41271 INTEGER :: nl_a, nl_b, nl_c, nl_d
41272 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
41273 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
41274 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
41275 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
41276 REAL(dp), &
41277 DIMENSION(3*nl_a, 7*nl_b, 7*nl_c, 1*nl_d) :: primitives
41278 REAL(dp), DIMENSION(3*10*10*1) :: buffer1, buffer2
41279
41280 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
41281 kmax, s_offset_a1, s_offset_b1, &
41282 s_offset_c1, s_offset_d1
41283
41284 s_offset_a1 = 0
41285 DO ia = 1, nl_a
41286 s_offset_b1 = 0
41287 DO ib = 1, nl_b
41288 s_offset_c1 = 0
41289 DO ic = 1, nl_c
41290 s_offset_d1 = 0
41291 DO id = 1, nl_d
41292 buffer1 = 0.0_dp
41293 imax = 10*10*1
41294 kmax = 3
41295 DO i = 1, imax
41296 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
41297 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
41298 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
41299 END DO
41300 buffer2 = 0.0_dp
41301 imax = 3*10*1
41302 kmax = 10
41303 DO i = 1, imax
41304 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
41305 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
41306 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
41307 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
41308 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
41309 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
41310 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
41311 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
41312 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
41313 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
41314 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
41315 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
41316 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
41317 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
41318 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
41319 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
41320 END DO
41321 buffer1 = 0.0_dp
41322 imax = 3*7*1
41323 kmax = 10
41324 DO i = 1, imax
41325 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
41326 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
41327 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
41328 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
41329 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
41330 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
41331 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
41332 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
41333 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
41334 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
41335 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
41336 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
41337 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
41338 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
41339 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
41340 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
41341 END DO
41342 imax = 3*7*7
41343 kmax = 1
41344 i = 0
41345 DO i1 = 1, 7
41346 DO i2 = 1, 7
41347 DO i3 = 1, 3
41348 i = i + 1
41349 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
41350 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
41351 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
41352 END DO
41353 END DO
41354 END DO
41355 s_offset_d1 = s_offset_d1 + 1
41356 END DO
41357 s_offset_c1 = s_offset_c1 + 7
41358 END DO
41359 s_offset_b1 = s_offset_b1 + 7
41360 END DO
41361 s_offset_a1 = s_offset_a1 + 3
41362 END DO
41363 END SUBROUTINE contract_pffs
41364#endif
41365#if __MAX_CONTR > 3 || __MAX_CONTR == 3
41366! **************************************************************************************************
41367!> \brief ...
41368!> \param work ...
41369!> \param nl_a ...
41370!> \param nl_b ...
41371!> \param nl_c ...
41372!> \param nl_d ...
41373!> \param sphi_a ...
41374!> \param sphi_b ...
41375!> \param sphi_c ...
41376!> \param sphi_d ...
41377!> \param primitives ...
41378!> \param buffer1 ...
41379!> \param buffer2 ...
41380! **************************************************************************************************
41381 SUBROUTINE contract_pffp(work, &
41382 nl_a, nl_b, nl_c, nl_d, &
41383 sphi_a, sphi_b, sphi_c, sphi_d, &
41384 primitives, &
41385 buffer1, buffer2)
41386 REAL(dp), DIMENSION(3*10*10*3), INTENT(IN) :: work
41387 INTEGER :: nl_a, nl_b, nl_c, nl_d
41388 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
41389 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
41390 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
41391 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
41392 REAL(dp), &
41393 DIMENSION(3*nl_a, 7*nl_b, 7*nl_c, 3*nl_d) :: primitives
41394 REAL(dp), DIMENSION(3*10*10*3) :: buffer1, buffer2
41395
41396 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
41397 kmax, s_offset_a1, s_offset_b1, &
41398 s_offset_c1, s_offset_d1
41399
41400 s_offset_a1 = 0
41401 DO ia = 1, nl_a
41402 s_offset_b1 = 0
41403 DO ib = 1, nl_b
41404 s_offset_c1 = 0
41405 DO ic = 1, nl_c
41406 s_offset_d1 = 0
41407 DO id = 1, nl_d
41408 buffer1 = 0.0_dp
41409 imax = 10*10*3
41410 kmax = 3
41411 DO i = 1, imax
41412 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
41413 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
41414 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
41415 END DO
41416 buffer2 = 0.0_dp
41417 imax = 3*10*3
41418 kmax = 10
41419 DO i = 1, imax
41420 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
41421 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
41422 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
41423 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
41424 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
41425 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
41426 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
41427 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
41428 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
41429 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
41430 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
41431 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
41432 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
41433 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
41434 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
41435 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
41436 END DO
41437 buffer1 = 0.0_dp
41438 imax = 3*7*3
41439 kmax = 10
41440 DO i = 1, imax
41441 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
41442 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
41443 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
41444 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
41445 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
41446 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
41447 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
41448 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
41449 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
41450 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
41451 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
41452 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
41453 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
41454 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
41455 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
41456 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
41457 END DO
41458 imax = 3*7*7
41459 kmax = 3
41460 i = 0
41461 DO i1 = 1, 7
41462 DO i2 = 1, 7
41463 DO i3 = 1, 3
41464 i = i + 1
41465 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
41466 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
41467 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
41468 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
41469 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
41470 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
41471 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
41472 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
41473 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
41474 END DO
41475 END DO
41476 END DO
41477 s_offset_d1 = s_offset_d1 + 3
41478 END DO
41479 s_offset_c1 = s_offset_c1 + 7
41480 END DO
41481 s_offset_b1 = s_offset_b1 + 7
41482 END DO
41483 s_offset_a1 = s_offset_a1 + 3
41484 END DO
41485 END SUBROUTINE contract_pffp
41486#endif
41487#if __MAX_CONTR > 3 || __MAX_CONTR == 3
41488! **************************************************************************************************
41489!> \brief ...
41490!> \param work ...
41491!> \param nl_a ...
41492!> \param nl_b ...
41493!> \param nl_c ...
41494!> \param nl_d ...
41495!> \param sphi_a ...
41496!> \param sphi_b ...
41497!> \param sphi_c ...
41498!> \param sphi_d ...
41499!> \param primitives ...
41500!> \param buffer1 ...
41501!> \param buffer2 ...
41502! **************************************************************************************************
41503 SUBROUTINE contract_pffd(work, &
41504 nl_a, nl_b, nl_c, nl_d, &
41505 sphi_a, sphi_b, sphi_c, sphi_d, &
41506 primitives, &
41507 buffer1, buffer2)
41508 REAL(dp), DIMENSION(3*10*10*6), INTENT(IN) :: work
41509 INTEGER :: nl_a, nl_b, nl_c, nl_d
41510 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
41511 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
41512 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
41513 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
41514 REAL(dp), &
41515 DIMENSION(3*nl_a, 7*nl_b, 7*nl_c, 5*nl_d) :: primitives
41516 REAL(dp), DIMENSION(3*10*10*6) :: buffer1, buffer2
41517
41518 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
41519 kmax, s_offset_a1, s_offset_b1, &
41520 s_offset_c1, s_offset_d1
41521
41522 s_offset_a1 = 0
41523 DO ia = 1, nl_a
41524 s_offset_b1 = 0
41525 DO ib = 1, nl_b
41526 s_offset_c1 = 0
41527 DO ic = 1, nl_c
41528 s_offset_d1 = 0
41529 DO id = 1, nl_d
41530 buffer1 = 0.0_dp
41531 imax = 10*10*6
41532 kmax = 3
41533 DO i = 1, imax
41534 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
41535 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
41536 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
41537 END DO
41538 buffer2 = 0.0_dp
41539 imax = 3*10*6
41540 kmax = 10
41541 DO i = 1, imax
41542 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
41543 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
41544 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
41545 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
41546 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
41547 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
41548 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
41549 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
41550 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
41551 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
41552 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
41553 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
41554 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
41555 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
41556 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
41557 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
41558 END DO
41559 buffer1 = 0.0_dp
41560 imax = 3*7*6
41561 kmax = 10
41562 DO i = 1, imax
41563 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
41564 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
41565 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
41566 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
41567 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
41568 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
41569 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
41570 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
41571 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
41572 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
41573 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
41574 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
41575 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
41576 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
41577 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
41578 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
41579 END DO
41580 imax = 3*7*7
41581 kmax = 6
41582 i = 0
41583 DO i1 = 1, 7
41584 DO i2 = 1, 7
41585 DO i3 = 1, 3
41586 i = i + 1
41587 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
41588 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
41589 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
41590 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
41591 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
41592 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
41593 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
41594 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
41595 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
41596 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
41597 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
41598 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
41599 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
41600 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
41601 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
41602 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
41603 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
41604 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
41605 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
41606 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
41607 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
41608 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
41609 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
41610 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
41611 END DO
41612 END DO
41613 END DO
41614 s_offset_d1 = s_offset_d1 + 5
41615 END DO
41616 s_offset_c1 = s_offset_c1 + 7
41617 END DO
41618 s_offset_b1 = s_offset_b1 + 7
41619 END DO
41620 s_offset_a1 = s_offset_a1 + 3
41621 END DO
41622 END SUBROUTINE contract_pffd
41623#endif
41624#if __MAX_CONTR > 3 || __MAX_CONTR == 3
41625! **************************************************************************************************
41626!> \brief ...
41627!> \param work ...
41628!> \param nl_a ...
41629!> \param nl_b ...
41630!> \param nl_c ...
41631!> \param nl_d ...
41632!> \param sphi_a ...
41633!> \param sphi_b ...
41634!> \param sphi_c ...
41635!> \param sphi_d ...
41636!> \param primitives ...
41637!> \param buffer1 ...
41638!> \param buffer2 ...
41639! **************************************************************************************************
41640 SUBROUTINE contract_pfff(work, &
41641 nl_a, nl_b, nl_c, nl_d, &
41642 sphi_a, sphi_b, sphi_c, sphi_d, &
41643 primitives, &
41644 buffer1, buffer2)
41645 REAL(dp), DIMENSION(3*10*10*10), INTENT(IN) :: work
41646 INTEGER :: nl_a, nl_b, nl_c, nl_d
41647 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
41648 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
41649 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
41650 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
41651 REAL(dp), &
41652 DIMENSION(3*nl_a, 7*nl_b, 7*nl_c, 7*nl_d) :: primitives
41653 REAL(dp), DIMENSION(3*10*10*10) :: buffer1, buffer2
41654
41655 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
41656 kmax, s_offset_a1, s_offset_b1, &
41657 s_offset_c1, s_offset_d1
41658
41659 s_offset_a1 = 0
41660 DO ia = 1, nl_a
41661 s_offset_b1 = 0
41662 DO ib = 1, nl_b
41663 s_offset_c1 = 0
41664 DO ic = 1, nl_c
41665 s_offset_d1 = 0
41666 DO id = 1, nl_d
41667 buffer1 = 0.0_dp
41668 imax = 10*10*10
41669 kmax = 3
41670 DO i = 1, imax
41671 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
41672 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
41673 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
41674 END DO
41675 buffer2 = 0.0_dp
41676 imax = 3*10*10
41677 kmax = 10
41678 DO i = 1, imax
41679 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
41680 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
41681 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
41682 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
41683 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
41684 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
41685 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
41686 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
41687 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
41688 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
41689 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
41690 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
41691 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
41692 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
41693 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
41694 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
41695 END DO
41696 buffer1 = 0.0_dp
41697 imax = 3*7*10
41698 kmax = 10
41699 DO i = 1, imax
41700 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
41701 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
41702 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
41703 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
41704 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
41705 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
41706 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
41707 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
41708 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
41709 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
41710 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
41711 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
41712 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
41713 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
41714 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
41715 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
41716 END DO
41717 imax = 3*7*7
41718 kmax = 10
41719 i = 0
41720 DO i1 = 1, 7
41721 DO i2 = 1, 7
41722 DO i3 = 1, 3
41723 i = i + 1
41724 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
41725 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
41726 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
41727 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
41728 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
41729 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
41730 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
41731 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
41732 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
41733 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
41734 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
41735 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
41736 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
41737 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
41738 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
41739 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
41740 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
41741 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
41742 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
41743 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
41744 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
41745 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
41746 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
41747 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
41748 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
41749 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
41750 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
41751 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
41752 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
41753 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
41754 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
41755 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
41756 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
41757 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
41758 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
41759 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
41760 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
41761 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
41762 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
41763 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
41764 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
41765 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
41766 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
41767 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
41768 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
41769 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
41770 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
41771 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
41772 END DO
41773 END DO
41774 END DO
41775 s_offset_d1 = s_offset_d1 + 7
41776 END DO
41777 s_offset_c1 = s_offset_c1 + 7
41778 END DO
41779 s_offset_b1 = s_offset_b1 + 7
41780 END DO
41781 s_offset_a1 = s_offset_a1 + 3
41782 END DO
41783 END SUBROUTINE contract_pfff
41784#endif
41785#if __MAX_CONTR > 4 || __MAX_CONTR == 4
41786! **************************************************************************************************
41787!> \brief ...
41788!> \param work ...
41789!> \param nl_a ...
41790!> \param nl_b ...
41791!> \param nl_c ...
41792!> \param nl_d ...
41793!> \param sphi_a ...
41794!> \param sphi_b ...
41795!> \param sphi_c ...
41796!> \param sphi_d ...
41797!> \param primitives ...
41798!> \param buffer1 ...
41799!> \param buffer2 ...
41800! **************************************************************************************************
41801 SUBROUTINE contract_pffg(work, &
41802 nl_a, nl_b, nl_c, nl_d, &
41803 sphi_a, sphi_b, sphi_c, sphi_d, &
41804 primitives, &
41805 buffer1, buffer2)
41806 REAL(dp), DIMENSION(3*10*10*15), INTENT(IN) :: work
41807 INTEGER :: nl_a, nl_b, nl_c, nl_d
41808 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
41809 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
41810 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
41811 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
41812 REAL(dp), &
41813 DIMENSION(3*nl_a, 7*nl_b, 7*nl_c, 9*nl_d) :: primitives
41814 REAL(dp), DIMENSION(3*10*10*15) :: buffer1, buffer2
41815
41816 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
41817 kmax, s_offset_a1, s_offset_b1, &
41818 s_offset_c1, s_offset_d1
41819
41820 s_offset_a1 = 0
41821 DO ia = 1, nl_a
41822 s_offset_b1 = 0
41823 DO ib = 1, nl_b
41824 s_offset_c1 = 0
41825 DO ic = 1, nl_c
41826 s_offset_d1 = 0
41827 DO id = 1, nl_d
41828 buffer1 = 0.0_dp
41829 imax = 10*10*15
41830 kmax = 3
41831 DO i = 1, imax
41832 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
41833 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
41834 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
41835 END DO
41836 buffer2 = 0.0_dp
41837 imax = 3*10*15
41838 kmax = 10
41839 DO i = 1, imax
41840 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
41841 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
41842 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
41843 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
41844 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
41845 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
41846 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
41847 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
41848 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
41849 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
41850 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
41851 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
41852 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
41853 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
41854 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
41855 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
41856 END DO
41857 buffer1 = 0.0_dp
41858 imax = 3*7*15
41859 kmax = 10
41860 DO i = 1, imax
41861 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
41862 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
41863 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
41864 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
41865 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
41866 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
41867 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
41868 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
41869 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
41870 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
41871 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
41872 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
41873 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
41874 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
41875 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
41876 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
41877 END DO
41878 imax = 3*7*7
41879 kmax = 15
41880 i = 0
41881 DO i1 = 1, 7
41882 DO i2 = 1, 7
41883 DO i3 = 1, 3
41884 i = i + 1
41885 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
41886 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
41887 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
41888 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
41889 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
41890 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
41891 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
41892 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
41893 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
41894 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
41895 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
41896 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
41897 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
41898 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
41899 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
41900 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
41901 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
41902 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
41903 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
41904 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
41905 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
41906 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
41907 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
41908 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
41909 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
41910 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
41911 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
41912 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
41913 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
41914 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
41915 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
41916 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
41917 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
41918 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
41919 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
41920 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
41921 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
41922 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
41923 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
41924 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
41925 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
41926 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
41927 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
41928 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
41929 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
41930 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
41931 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
41932 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
41933 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
41934 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
41935 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
41936 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
41937 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
41938 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
41939 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
41940 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
41941 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
41942 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
41943 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
41944 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
41945 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
41946 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
41947 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
41948 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
41949 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
41950 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
41951 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
41952 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
41953 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
41954 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
41955 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
41956 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
41957 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
41958 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
41959 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
41960 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
41961 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
41962 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
41963 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
41964 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
41965 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
41966 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
41967 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
41968 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
41969 END DO
41970 END DO
41971 END DO
41972 s_offset_d1 = s_offset_d1 + 9
41973 END DO
41974 s_offset_c1 = s_offset_c1 + 7
41975 END DO
41976 s_offset_b1 = s_offset_b1 + 7
41977 END DO
41978 s_offset_a1 = s_offset_a1 + 3
41979 END DO
41980 END SUBROUTINE contract_pffg
41981#endif
41982#if __MAX_CONTR > 4 || __MAX_CONTR == 4
41983! **************************************************************************************************
41984!> \brief ...
41985!> \param work ...
41986!> \param nl_a ...
41987!> \param nl_b ...
41988!> \param nl_c ...
41989!> \param nl_d ...
41990!> \param sphi_a ...
41991!> \param sphi_b ...
41992!> \param sphi_c ...
41993!> \param sphi_d ...
41994!> \param primitives ...
41995!> \param buffer1 ...
41996!> \param buffer2 ...
41997! **************************************************************************************************
41998 SUBROUTINE contract_pfgs(work, &
41999 nl_a, nl_b, nl_c, nl_d, &
42000 sphi_a, sphi_b, sphi_c, sphi_d, &
42001 primitives, &
42002 buffer1, buffer2)
42003 REAL(dp), DIMENSION(3*10*15*1), INTENT(IN) :: work
42004 INTEGER :: nl_a, nl_b, nl_c, nl_d
42005 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
42006 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
42007 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
42008 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
42009 REAL(dp), &
42010 DIMENSION(3*nl_a, 7*nl_b, 9*nl_c, 1*nl_d) :: primitives
42011 REAL(dp), DIMENSION(3*10*15*1) :: buffer1, buffer2
42012
42013 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
42014 kmax, s_offset_a1, s_offset_b1, &
42015 s_offset_c1, s_offset_d1
42016
42017 s_offset_a1 = 0
42018 DO ia = 1, nl_a
42019 s_offset_b1 = 0
42020 DO ib = 1, nl_b
42021 s_offset_c1 = 0
42022 DO ic = 1, nl_c
42023 s_offset_d1 = 0
42024 DO id = 1, nl_d
42025 buffer1 = 0.0_dp
42026 imax = 10*15*1
42027 kmax = 3
42028 DO i = 1, imax
42029 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
42030 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
42031 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
42032 END DO
42033 buffer2 = 0.0_dp
42034 imax = 3*15*1
42035 kmax = 10
42036 DO i = 1, imax
42037 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
42038 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
42039 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
42040 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
42041 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
42042 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
42043 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
42044 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
42045 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
42046 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
42047 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
42048 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
42049 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
42050 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
42051 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
42052 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
42053 END DO
42054 buffer1 = 0.0_dp
42055 imax = 3*7*1
42056 kmax = 15
42057 DO i = 1, imax
42058 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
42059 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
42060 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
42061 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
42062 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
42063 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
42064 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
42065 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
42066 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
42067 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
42068 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
42069 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
42070 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
42071 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
42072 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
42073 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
42074 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
42075 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
42076 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
42077 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
42078 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
42079 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
42080 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
42081 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
42082 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
42083 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
42084 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
42085 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
42086 END DO
42087 imax = 3*7*9
42088 kmax = 1
42089 i = 0
42090 DO i1 = 1, 9
42091 DO i2 = 1, 7
42092 DO i3 = 1, 3
42093 i = i + 1
42094 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
42095 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
42096 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
42097 END DO
42098 END DO
42099 END DO
42100 s_offset_d1 = s_offset_d1 + 1
42101 END DO
42102 s_offset_c1 = s_offset_c1 + 9
42103 END DO
42104 s_offset_b1 = s_offset_b1 + 7
42105 END DO
42106 s_offset_a1 = s_offset_a1 + 3
42107 END DO
42108 END SUBROUTINE contract_pfgs
42109#endif
42110#if __MAX_CONTR > 4 || __MAX_CONTR == 4
42111! **************************************************************************************************
42112!> \brief ...
42113!> \param work ...
42114!> \param nl_a ...
42115!> \param nl_b ...
42116!> \param nl_c ...
42117!> \param nl_d ...
42118!> \param sphi_a ...
42119!> \param sphi_b ...
42120!> \param sphi_c ...
42121!> \param sphi_d ...
42122!> \param primitives ...
42123!> \param buffer1 ...
42124!> \param buffer2 ...
42125! **************************************************************************************************
42126 SUBROUTINE contract_pfgp(work, &
42127 nl_a, nl_b, nl_c, nl_d, &
42128 sphi_a, sphi_b, sphi_c, sphi_d, &
42129 primitives, &
42130 buffer1, buffer2)
42131 REAL(dp), DIMENSION(3*10*15*3), INTENT(IN) :: work
42132 INTEGER :: nl_a, nl_b, nl_c, nl_d
42133 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
42134 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
42135 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
42136 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
42137 REAL(dp), &
42138 DIMENSION(3*nl_a, 7*nl_b, 9*nl_c, 3*nl_d) :: primitives
42139 REAL(dp), DIMENSION(3*10*15*3) :: buffer1, buffer2
42140
42141 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
42142 kmax, s_offset_a1, s_offset_b1, &
42143 s_offset_c1, s_offset_d1
42144
42145 s_offset_a1 = 0
42146 DO ia = 1, nl_a
42147 s_offset_b1 = 0
42148 DO ib = 1, nl_b
42149 s_offset_c1 = 0
42150 DO ic = 1, nl_c
42151 s_offset_d1 = 0
42152 DO id = 1, nl_d
42153 buffer1 = 0.0_dp
42154 imax = 10*15*3
42155 kmax = 3
42156 DO i = 1, imax
42157 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
42158 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
42159 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
42160 END DO
42161 buffer2 = 0.0_dp
42162 imax = 3*15*3
42163 kmax = 10
42164 DO i = 1, imax
42165 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
42166 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
42167 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
42168 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
42169 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
42170 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
42171 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
42172 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
42173 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
42174 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
42175 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
42176 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
42177 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
42178 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
42179 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
42180 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
42181 END DO
42182 buffer1 = 0.0_dp
42183 imax = 3*7*3
42184 kmax = 15
42185 DO i = 1, imax
42186 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
42187 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
42188 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
42189 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
42190 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
42191 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
42192 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
42193 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
42194 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
42195 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
42196 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
42197 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
42198 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
42199 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
42200 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
42201 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
42202 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
42203 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
42204 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
42205 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
42206 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
42207 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
42208 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
42209 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
42210 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
42211 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
42212 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
42213 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
42214 END DO
42215 imax = 3*7*9
42216 kmax = 3
42217 i = 0
42218 DO i1 = 1, 9
42219 DO i2 = 1, 7
42220 DO i3 = 1, 3
42221 i = i + 1
42222 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
42223 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
42224 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
42225 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
42226 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
42227 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
42228 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
42229 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
42230 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
42231 END DO
42232 END DO
42233 END DO
42234 s_offset_d1 = s_offset_d1 + 3
42235 END DO
42236 s_offset_c1 = s_offset_c1 + 9
42237 END DO
42238 s_offset_b1 = s_offset_b1 + 7
42239 END DO
42240 s_offset_a1 = s_offset_a1 + 3
42241 END DO
42242 END SUBROUTINE contract_pfgp
42243#endif
42244#if __MAX_CONTR > 4 || __MAX_CONTR == 4
42245! **************************************************************************************************
42246!> \brief ...
42247!> \param work ...
42248!> \param nl_a ...
42249!> \param nl_b ...
42250!> \param nl_c ...
42251!> \param nl_d ...
42252!> \param sphi_a ...
42253!> \param sphi_b ...
42254!> \param sphi_c ...
42255!> \param sphi_d ...
42256!> \param primitives ...
42257!> \param buffer1 ...
42258!> \param buffer2 ...
42259! **************************************************************************************************
42260 SUBROUTINE contract_pfgd(work, &
42261 nl_a, nl_b, nl_c, nl_d, &
42262 sphi_a, sphi_b, sphi_c, sphi_d, &
42263 primitives, &
42264 buffer1, buffer2)
42265 REAL(dp), DIMENSION(3*10*15*6), INTENT(IN) :: work
42266 INTEGER :: nl_a, nl_b, nl_c, nl_d
42267 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
42268 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
42269 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
42270 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
42271 REAL(dp), &
42272 DIMENSION(3*nl_a, 7*nl_b, 9*nl_c, 5*nl_d) :: primitives
42273 REAL(dp), DIMENSION(3*10*15*6) :: buffer1, buffer2
42274
42275 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
42276 kmax, s_offset_a1, s_offset_b1, &
42277 s_offset_c1, s_offset_d1
42278
42279 s_offset_a1 = 0
42280 DO ia = 1, nl_a
42281 s_offset_b1 = 0
42282 DO ib = 1, nl_b
42283 s_offset_c1 = 0
42284 DO ic = 1, nl_c
42285 s_offset_d1 = 0
42286 DO id = 1, nl_d
42287 buffer1 = 0.0_dp
42288 imax = 10*15*6
42289 kmax = 3
42290 DO i = 1, imax
42291 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
42292 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
42293 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
42294 END DO
42295 buffer2 = 0.0_dp
42296 imax = 3*15*6
42297 kmax = 10
42298 DO i = 1, imax
42299 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
42300 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
42301 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
42302 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
42303 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
42304 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
42305 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
42306 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
42307 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
42308 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
42309 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
42310 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
42311 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
42312 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
42313 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
42314 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
42315 END DO
42316 buffer1 = 0.0_dp
42317 imax = 3*7*6
42318 kmax = 15
42319 DO i = 1, imax
42320 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
42321 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
42322 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
42323 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
42324 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
42325 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
42326 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
42327 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
42328 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
42329 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
42330 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
42331 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
42332 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
42333 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
42334 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
42335 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
42336 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
42337 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
42338 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
42339 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
42340 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
42341 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
42342 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
42343 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
42344 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
42345 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
42346 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
42347 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
42348 END DO
42349 imax = 3*7*9
42350 kmax = 6
42351 i = 0
42352 DO i1 = 1, 9
42353 DO i2 = 1, 7
42354 DO i3 = 1, 3
42355 i = i + 1
42356 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
42357 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
42358 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
42359 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
42360 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
42361 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
42362 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
42363 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
42364 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
42365 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
42366 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
42367 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
42368 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
42369 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
42370 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
42371 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
42372 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
42373 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
42374 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
42375 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
42376 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
42377 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
42378 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
42379 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
42380 END DO
42381 END DO
42382 END DO
42383 s_offset_d1 = s_offset_d1 + 5
42384 END DO
42385 s_offset_c1 = s_offset_c1 + 9
42386 END DO
42387 s_offset_b1 = s_offset_b1 + 7
42388 END DO
42389 s_offset_a1 = s_offset_a1 + 3
42390 END DO
42391 END SUBROUTINE contract_pfgd
42392#endif
42393#if __MAX_CONTR > 4 || __MAX_CONTR == 4
42394! **************************************************************************************************
42395!> \brief ...
42396!> \param work ...
42397!> \param nl_a ...
42398!> \param nl_b ...
42399!> \param nl_c ...
42400!> \param nl_d ...
42401!> \param sphi_a ...
42402!> \param sphi_b ...
42403!> \param sphi_c ...
42404!> \param sphi_d ...
42405!> \param primitives ...
42406!> \param buffer1 ...
42407!> \param buffer2 ...
42408! **************************************************************************************************
42409 SUBROUTINE contract_pfgf(work, &
42410 nl_a, nl_b, nl_c, nl_d, &
42411 sphi_a, sphi_b, sphi_c, sphi_d, &
42412 primitives, &
42413 buffer1, buffer2)
42414 REAL(dp), DIMENSION(3*10*15*10), INTENT(IN) :: work
42415 INTEGER :: nl_a, nl_b, nl_c, nl_d
42416 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
42417 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
42418 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
42419 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
42420 REAL(dp), &
42421 DIMENSION(3*nl_a, 7*nl_b, 9*nl_c, 7*nl_d) :: primitives
42422 REAL(dp), DIMENSION(3*10*15*10) :: buffer1, buffer2
42423
42424 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
42425 kmax, s_offset_a1, s_offset_b1, &
42426 s_offset_c1, s_offset_d1
42427
42428 s_offset_a1 = 0
42429 DO ia = 1, nl_a
42430 s_offset_b1 = 0
42431 DO ib = 1, nl_b
42432 s_offset_c1 = 0
42433 DO ic = 1, nl_c
42434 s_offset_d1 = 0
42435 DO id = 1, nl_d
42436 buffer1 = 0.0_dp
42437 imax = 10*15*10
42438 kmax = 3
42439 DO i = 1, imax
42440 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
42441 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
42442 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
42443 END DO
42444 buffer2 = 0.0_dp
42445 imax = 3*15*10
42446 kmax = 10
42447 DO i = 1, imax
42448 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
42449 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
42450 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
42451 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
42452 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
42453 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
42454 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
42455 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
42456 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
42457 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
42458 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
42459 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
42460 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
42461 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
42462 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
42463 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
42464 END DO
42465 buffer1 = 0.0_dp
42466 imax = 3*7*10
42467 kmax = 15
42468 DO i = 1, imax
42469 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
42470 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
42471 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
42472 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
42473 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
42474 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
42475 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
42476 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
42477 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
42478 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
42479 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
42480 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
42481 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
42482 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
42483 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
42484 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
42485 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
42486 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
42487 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
42488 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
42489 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
42490 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
42491 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
42492 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
42493 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
42494 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
42495 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
42496 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
42497 END DO
42498 imax = 3*7*9
42499 kmax = 10
42500 i = 0
42501 DO i1 = 1, 9
42502 DO i2 = 1, 7
42503 DO i3 = 1, 3
42504 i = i + 1
42505 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
42506 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
42507 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
42508 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
42509 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
42510 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
42511 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
42512 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
42513 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
42514 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
42515 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
42516 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
42517 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
42518 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
42519 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
42520 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
42521 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
42522 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
42523 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
42524 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
42525 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
42526 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
42527 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
42528 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
42529 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
42530 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
42531 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
42532 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
42533 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
42534 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
42535 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
42536 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
42537 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
42538 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
42539 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
42540 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
42541 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
42542 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
42543 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
42544 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
42545 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
42546 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
42547 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
42548 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
42549 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
42550 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
42551 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
42552 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
42553 END DO
42554 END DO
42555 END DO
42556 s_offset_d1 = s_offset_d1 + 7
42557 END DO
42558 s_offset_c1 = s_offset_c1 + 9
42559 END DO
42560 s_offset_b1 = s_offset_b1 + 7
42561 END DO
42562 s_offset_a1 = s_offset_a1 + 3
42563 END DO
42564 END SUBROUTINE contract_pfgf
42565#endif
42566#if __MAX_CONTR > 4 || __MAX_CONTR == 4
42567! **************************************************************************************************
42568!> \brief ...
42569!> \param work ...
42570!> \param nl_a ...
42571!> \param nl_b ...
42572!> \param nl_c ...
42573!> \param nl_d ...
42574!> \param sphi_a ...
42575!> \param sphi_b ...
42576!> \param sphi_c ...
42577!> \param sphi_d ...
42578!> \param primitives ...
42579!> \param buffer1 ...
42580!> \param buffer2 ...
42581! **************************************************************************************************
42582 SUBROUTINE contract_pfgg(work, &
42583 nl_a, nl_b, nl_c, nl_d, &
42584 sphi_a, sphi_b, sphi_c, sphi_d, &
42585 primitives, &
42586 buffer1, buffer2)
42587 REAL(dp), DIMENSION(3*10*15*15), INTENT(IN) :: work
42588 INTEGER :: nl_a, nl_b, nl_c, nl_d
42589 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
42590 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
42591 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
42592 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
42593 REAL(dp), &
42594 DIMENSION(3*nl_a, 7*nl_b, 9*nl_c, 9*nl_d) :: primitives
42595 REAL(dp), DIMENSION(3*10*15*15) :: buffer1, buffer2
42596
42597 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
42598 kmax, s_offset_a1, s_offset_b1, &
42599 s_offset_c1, s_offset_d1
42600
42601 s_offset_a1 = 0
42602 DO ia = 1, nl_a
42603 s_offset_b1 = 0
42604 DO ib = 1, nl_b
42605 s_offset_c1 = 0
42606 DO ic = 1, nl_c
42607 s_offset_d1 = 0
42608 DO id = 1, nl_d
42609 buffer1 = 0.0_dp
42610 imax = 10*15*15
42611 kmax = 3
42612 DO i = 1, imax
42613 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
42614 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
42615 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
42616 END DO
42617 buffer2 = 0.0_dp
42618 imax = 3*15*15
42619 kmax = 10
42620 DO i = 1, imax
42621 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
42622 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
42623 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
42624 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
42625 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
42626 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
42627 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
42628 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
42629 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
42630 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
42631 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
42632 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
42633 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
42634 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
42635 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
42636 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
42637 END DO
42638 buffer1 = 0.0_dp
42639 imax = 3*7*15
42640 kmax = 15
42641 DO i = 1, imax
42642 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
42643 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
42644 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
42645 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
42646 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
42647 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
42648 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
42649 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
42650 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
42651 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
42652 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
42653 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
42654 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
42655 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
42656 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
42657 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
42658 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
42659 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
42660 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
42661 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
42662 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
42663 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
42664 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
42665 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
42666 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
42667 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
42668 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
42669 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
42670 END DO
42671 imax = 3*7*9
42672 kmax = 15
42673 i = 0
42674 DO i1 = 1, 9
42675 DO i2 = 1, 7
42676 DO i3 = 1, 3
42677 i = i + 1
42678 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
42679 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
42680 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
42681 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
42682 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
42683 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
42684 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
42685 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
42686 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
42687 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
42688 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
42689 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
42690 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
42691 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
42692 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
42693 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
42694 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
42695 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
42696 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
42697 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
42698 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
42699 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
42700 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
42701 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
42702 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
42703 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
42704 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
42705 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
42706 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
42707 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
42708 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
42709 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
42710 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
42711 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
42712 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
42713 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
42714 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
42715 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
42716 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
42717 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
42718 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
42719 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
42720 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
42721 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
42722 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
42723 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
42724 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
42725 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
42726 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
42727 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
42728 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
42729 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
42730 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
42731 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
42732 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
42733 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
42734 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
42735 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
42736 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
42737 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
42738 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
42739 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
42740 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
42741 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
42742 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
42743 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
42744 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
42745 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
42746 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
42747 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
42748 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
42749 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
42750 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
42751 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
42752 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
42753 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
42754 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
42755 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
42756 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
42757 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
42758 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
42759 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
42760 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
42761 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
42762 END DO
42763 END DO
42764 END DO
42765 s_offset_d1 = s_offset_d1 + 9
42766 END DO
42767 s_offset_c1 = s_offset_c1 + 9
42768 END DO
42769 s_offset_b1 = s_offset_b1 + 7
42770 END DO
42771 s_offset_a1 = s_offset_a1 + 3
42772 END DO
42773 END SUBROUTINE contract_pfgg
42774#endif
42775#if __MAX_CONTR > 4 || __MAX_CONTR == 4
42776! **************************************************************************************************
42777!> \brief ...
42778!> \param work ...
42779!> \param nl_a ...
42780!> \param nl_b ...
42781!> \param nl_c ...
42782!> \param nl_d ...
42783!> \param sphi_a ...
42784!> \param sphi_b ...
42785!> \param sphi_c ...
42786!> \param sphi_d ...
42787!> \param primitives ...
42788!> \param buffer1 ...
42789!> \param buffer2 ...
42790! **************************************************************************************************
42791 SUBROUTINE contract_pgss(work, &
42792 nl_a, nl_b, nl_c, nl_d, &
42793 sphi_a, sphi_b, sphi_c, sphi_d, &
42794 primitives, &
42795 buffer1, buffer2)
42796 REAL(dp), DIMENSION(3*15*1*1), INTENT(IN) :: work
42797 INTEGER :: nl_a, nl_b, nl_c, nl_d
42798 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
42799 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
42800 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
42801 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
42802 REAL(dp), &
42803 DIMENSION(3*nl_a, 9*nl_b, 1*nl_c, 1*nl_d) :: primitives
42804 REAL(dp), DIMENSION(3*15*1*1) :: buffer1, buffer2
42805
42806 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
42807 kmax, s_offset_a1, s_offset_b1, &
42808 s_offset_c1, s_offset_d1
42809
42810 s_offset_a1 = 0
42811 DO ia = 1, nl_a
42812 s_offset_b1 = 0
42813 DO ib = 1, nl_b
42814 s_offset_c1 = 0
42815 DO ic = 1, nl_c
42816 s_offset_d1 = 0
42817 DO id = 1, nl_d
42818 buffer1 = 0.0_dp
42819 imax = 15*1*1
42820 kmax = 3
42821 DO i = 1, imax
42822 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
42823 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
42824 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
42825 END DO
42826 buffer2 = 0.0_dp
42827 imax = 3*1*1
42828 kmax = 15
42829 DO i = 1, imax
42830 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
42831 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
42832 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
42833 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
42834 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
42835 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
42836 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
42837 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
42838 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
42839 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
42840 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
42841 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
42842 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
42843 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
42844 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
42845 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
42846 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
42847 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
42848 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
42849 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
42850 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
42851 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
42852 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
42853 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
42854 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
42855 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
42856 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
42857 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
42858 END DO
42859 buffer1 = 0.0_dp
42860 imax = 3*9*1
42861 kmax = 1
42862 DO i = 1, imax
42863 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
42864 END DO
42865 imax = 3*9*1
42866 kmax = 1
42867 i = 0
42868 DO i1 = 1, 1
42869 DO i2 = 1, 9
42870 DO i3 = 1, 3
42871 i = i + 1
42872 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
42873 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
42874 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
42875 END DO
42876 END DO
42877 END DO
42878 s_offset_d1 = s_offset_d1 + 1
42879 END DO
42880 s_offset_c1 = s_offset_c1 + 1
42881 END DO
42882 s_offset_b1 = s_offset_b1 + 9
42883 END DO
42884 s_offset_a1 = s_offset_a1 + 3
42885 END DO
42886 END SUBROUTINE contract_pgss
42887#endif
42888#if __MAX_CONTR > 4 || __MAX_CONTR == 4
42889! **************************************************************************************************
42890!> \brief ...
42891!> \param work ...
42892!> \param nl_a ...
42893!> \param nl_b ...
42894!> \param nl_c ...
42895!> \param nl_d ...
42896!> \param sphi_a ...
42897!> \param sphi_b ...
42898!> \param sphi_c ...
42899!> \param sphi_d ...
42900!> \param primitives ...
42901!> \param buffer1 ...
42902!> \param buffer2 ...
42903! **************************************************************************************************
42904 SUBROUTINE contract_pgsp(work, &
42905 nl_a, nl_b, nl_c, nl_d, &
42906 sphi_a, sphi_b, sphi_c, sphi_d, &
42907 primitives, &
42908 buffer1, buffer2)
42909 REAL(dp), DIMENSION(3*15*1*3), INTENT(IN) :: work
42910 INTEGER :: nl_a, nl_b, nl_c, nl_d
42911 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
42912 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
42913 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
42914 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
42915 REAL(dp), &
42916 DIMENSION(3*nl_a, 9*nl_b, 1*nl_c, 3*nl_d) :: primitives
42917 REAL(dp), DIMENSION(3*15*1*3) :: buffer1, buffer2
42918
42919 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
42920 kmax, s_offset_a1, s_offset_b1, &
42921 s_offset_c1, s_offset_d1
42922
42923 s_offset_a1 = 0
42924 DO ia = 1, nl_a
42925 s_offset_b1 = 0
42926 DO ib = 1, nl_b
42927 s_offset_c1 = 0
42928 DO ic = 1, nl_c
42929 s_offset_d1 = 0
42930 DO id = 1, nl_d
42931 buffer1 = 0.0_dp
42932 imax = 15*1*3
42933 kmax = 3
42934 DO i = 1, imax
42935 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
42936 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
42937 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
42938 END DO
42939 buffer2 = 0.0_dp
42940 imax = 3*1*3
42941 kmax = 15
42942 DO i = 1, imax
42943 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
42944 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
42945 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
42946 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
42947 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
42948 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
42949 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
42950 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
42951 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
42952 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
42953 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
42954 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
42955 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
42956 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
42957 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
42958 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
42959 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
42960 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
42961 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
42962 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
42963 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
42964 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
42965 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
42966 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
42967 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
42968 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
42969 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
42970 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
42971 END DO
42972 buffer1 = 0.0_dp
42973 imax = 3*9*3
42974 kmax = 1
42975 DO i = 1, imax
42976 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
42977 END DO
42978 imax = 3*9*1
42979 kmax = 3
42980 i = 0
42981 DO i1 = 1, 1
42982 DO i2 = 1, 9
42983 DO i3 = 1, 3
42984 i = i + 1
42985 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
42986 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
42987 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
42988 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
42989 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
42990 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
42991 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
42992 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
42993 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
42994 END DO
42995 END DO
42996 END DO
42997 s_offset_d1 = s_offset_d1 + 3
42998 END DO
42999 s_offset_c1 = s_offset_c1 + 1
43000 END DO
43001 s_offset_b1 = s_offset_b1 + 9
43002 END DO
43003 s_offset_a1 = s_offset_a1 + 3
43004 END DO
43005 END SUBROUTINE contract_pgsp
43006#endif
43007#if __MAX_CONTR > 4 || __MAX_CONTR == 4
43008! **************************************************************************************************
43009!> \brief ...
43010!> \param work ...
43011!> \param nl_a ...
43012!> \param nl_b ...
43013!> \param nl_c ...
43014!> \param nl_d ...
43015!> \param sphi_a ...
43016!> \param sphi_b ...
43017!> \param sphi_c ...
43018!> \param sphi_d ...
43019!> \param primitives ...
43020!> \param buffer1 ...
43021!> \param buffer2 ...
43022! **************************************************************************************************
43023 SUBROUTINE contract_pgsd(work, &
43024 nl_a, nl_b, nl_c, nl_d, &
43025 sphi_a, sphi_b, sphi_c, sphi_d, &
43026 primitives, &
43027 buffer1, buffer2)
43028 REAL(dp), DIMENSION(3*15*1*6), INTENT(IN) :: work
43029 INTEGER :: nl_a, nl_b, nl_c, nl_d
43030 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
43031 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
43032 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
43033 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
43034 REAL(dp), &
43035 DIMENSION(3*nl_a, 9*nl_b, 1*nl_c, 5*nl_d) :: primitives
43036 REAL(dp), DIMENSION(3*15*1*6) :: buffer1, buffer2
43037
43038 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
43039 kmax, s_offset_a1, s_offset_b1, &
43040 s_offset_c1, s_offset_d1
43041
43042 s_offset_a1 = 0
43043 DO ia = 1, nl_a
43044 s_offset_b1 = 0
43045 DO ib = 1, nl_b
43046 s_offset_c1 = 0
43047 DO ic = 1, nl_c
43048 s_offset_d1 = 0
43049 DO id = 1, nl_d
43050 buffer1 = 0.0_dp
43051 imax = 15*1*6
43052 kmax = 3
43053 DO i = 1, imax
43054 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
43055 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
43056 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
43057 END DO
43058 buffer2 = 0.0_dp
43059 imax = 3*1*6
43060 kmax = 15
43061 DO i = 1, imax
43062 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
43063 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
43064 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
43065 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
43066 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
43067 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
43068 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
43069 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
43070 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
43071 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
43072 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
43073 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
43074 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
43075 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
43076 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
43077 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
43078 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
43079 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
43080 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
43081 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
43082 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
43083 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
43084 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
43085 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
43086 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
43087 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
43088 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
43089 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
43090 END DO
43091 buffer1 = 0.0_dp
43092 imax = 3*9*6
43093 kmax = 1
43094 DO i = 1, imax
43095 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
43096 END DO
43097 imax = 3*9*1
43098 kmax = 6
43099 i = 0
43100 DO i1 = 1, 1
43101 DO i2 = 1, 9
43102 DO i3 = 1, 3
43103 i = i + 1
43104 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
43105 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
43106 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
43107 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
43108 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
43109 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
43110 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
43111 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
43112 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
43113 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
43114 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
43115 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
43116 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
43117 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
43118 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
43119 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
43120 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
43121 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
43122 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
43123 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
43124 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
43125 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
43126 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
43127 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
43128 END DO
43129 END DO
43130 END DO
43131 s_offset_d1 = s_offset_d1 + 5
43132 END DO
43133 s_offset_c1 = s_offset_c1 + 1
43134 END DO
43135 s_offset_b1 = s_offset_b1 + 9
43136 END DO
43137 s_offset_a1 = s_offset_a1 + 3
43138 END DO
43139 END SUBROUTINE contract_pgsd
43140#endif
43141#if __MAX_CONTR > 4 || __MAX_CONTR == 4
43142! **************************************************************************************************
43143!> \brief ...
43144!> \param work ...
43145!> \param nl_a ...
43146!> \param nl_b ...
43147!> \param nl_c ...
43148!> \param nl_d ...
43149!> \param sphi_a ...
43150!> \param sphi_b ...
43151!> \param sphi_c ...
43152!> \param sphi_d ...
43153!> \param primitives ...
43154!> \param buffer1 ...
43155!> \param buffer2 ...
43156! **************************************************************************************************
43157 SUBROUTINE contract_pgsf(work, &
43158 nl_a, nl_b, nl_c, nl_d, &
43159 sphi_a, sphi_b, sphi_c, sphi_d, &
43160 primitives, &
43161 buffer1, buffer2)
43162 REAL(dp), DIMENSION(3*15*1*10), INTENT(IN) :: work
43163 INTEGER :: nl_a, nl_b, nl_c, nl_d
43164 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
43165 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
43166 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
43167 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
43168 REAL(dp), &
43169 DIMENSION(3*nl_a, 9*nl_b, 1*nl_c, 7*nl_d) :: primitives
43170 REAL(dp), DIMENSION(3*15*1*10) :: buffer1, buffer2
43171
43172 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
43173 kmax, s_offset_a1, s_offset_b1, &
43174 s_offset_c1, s_offset_d1
43175
43176 s_offset_a1 = 0
43177 DO ia = 1, nl_a
43178 s_offset_b1 = 0
43179 DO ib = 1, nl_b
43180 s_offset_c1 = 0
43181 DO ic = 1, nl_c
43182 s_offset_d1 = 0
43183 DO id = 1, nl_d
43184 buffer1 = 0.0_dp
43185 imax = 15*1*10
43186 kmax = 3
43187 DO i = 1, imax
43188 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
43189 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
43190 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
43191 END DO
43192 buffer2 = 0.0_dp
43193 imax = 3*1*10
43194 kmax = 15
43195 DO i = 1, imax
43196 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
43197 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
43198 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
43199 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
43200 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
43201 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
43202 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
43203 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
43204 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
43205 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
43206 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
43207 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
43208 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
43209 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
43210 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
43211 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
43212 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
43213 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
43214 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
43215 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
43216 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
43217 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
43218 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
43219 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
43220 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
43221 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
43222 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
43223 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
43224 END DO
43225 buffer1 = 0.0_dp
43226 imax = 3*9*10
43227 kmax = 1
43228 DO i = 1, imax
43229 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
43230 END DO
43231 imax = 3*9*1
43232 kmax = 10
43233 i = 0
43234 DO i1 = 1, 1
43235 DO i2 = 1, 9
43236 DO i3 = 1, 3
43237 i = i + 1
43238 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
43239 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
43240 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
43241 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
43242 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
43243 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
43244 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
43245 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
43246 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
43247 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
43248 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
43249 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
43250 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
43251 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
43252 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
43253 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
43254 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
43255 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
43256 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
43257 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
43258 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
43259 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
43260 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
43261 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
43262 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
43263 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
43264 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
43265 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
43266 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
43267 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
43268 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
43269 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
43270 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
43271 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
43272 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
43273 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
43274 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
43275 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
43276 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
43277 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
43278 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
43279 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
43280 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
43281 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
43282 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
43283 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
43284 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
43285 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
43286 END DO
43287 END DO
43288 END DO
43289 s_offset_d1 = s_offset_d1 + 7
43290 END DO
43291 s_offset_c1 = s_offset_c1 + 1
43292 END DO
43293 s_offset_b1 = s_offset_b1 + 9
43294 END DO
43295 s_offset_a1 = s_offset_a1 + 3
43296 END DO
43297 END SUBROUTINE contract_pgsf
43298#endif
43299#if __MAX_CONTR > 4 || __MAX_CONTR == 4
43300! **************************************************************************************************
43301!> \brief ...
43302!> \param work ...
43303!> \param nl_a ...
43304!> \param nl_b ...
43305!> \param nl_c ...
43306!> \param nl_d ...
43307!> \param sphi_a ...
43308!> \param sphi_b ...
43309!> \param sphi_c ...
43310!> \param sphi_d ...
43311!> \param primitives ...
43312!> \param buffer1 ...
43313!> \param buffer2 ...
43314! **************************************************************************************************
43315 SUBROUTINE contract_pgsg(work, &
43316 nl_a, nl_b, nl_c, nl_d, &
43317 sphi_a, sphi_b, sphi_c, sphi_d, &
43318 primitives, &
43319 buffer1, buffer2)
43320 REAL(dp), DIMENSION(3*15*1*15), INTENT(IN) :: work
43321 INTEGER :: nl_a, nl_b, nl_c, nl_d
43322 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
43323 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
43324 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
43325 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
43326 REAL(dp), &
43327 DIMENSION(3*nl_a, 9*nl_b, 1*nl_c, 9*nl_d) :: primitives
43328 REAL(dp), DIMENSION(3*15*1*15) :: buffer1, buffer2
43329
43330 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
43331 kmax, s_offset_a1, s_offset_b1, &
43332 s_offset_c1, s_offset_d1
43333
43334 s_offset_a1 = 0
43335 DO ia = 1, nl_a
43336 s_offset_b1 = 0
43337 DO ib = 1, nl_b
43338 s_offset_c1 = 0
43339 DO ic = 1, nl_c
43340 s_offset_d1 = 0
43341 DO id = 1, nl_d
43342 buffer1 = 0.0_dp
43343 imax = 15*1*15
43344 kmax = 3
43345 DO i = 1, imax
43346 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
43347 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
43348 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
43349 END DO
43350 buffer2 = 0.0_dp
43351 imax = 3*1*15
43352 kmax = 15
43353 DO i = 1, imax
43354 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
43355 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
43356 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
43357 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
43358 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
43359 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
43360 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
43361 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
43362 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
43363 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
43364 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
43365 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
43366 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
43367 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
43368 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
43369 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
43370 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
43371 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
43372 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
43373 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
43374 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
43375 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
43376 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
43377 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
43378 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
43379 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
43380 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
43381 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
43382 END DO
43383 buffer1 = 0.0_dp
43384 imax = 3*9*15
43385 kmax = 1
43386 DO i = 1, imax
43387 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
43388 END DO
43389 imax = 3*9*1
43390 kmax = 15
43391 i = 0
43392 DO i1 = 1, 1
43393 DO i2 = 1, 9
43394 DO i3 = 1, 3
43395 i = i + 1
43396 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
43397 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
43398 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
43399 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
43400 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
43401 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
43402 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
43403 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
43404 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
43405 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
43406 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
43407 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
43408 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
43409 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
43410 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
43411 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
43412 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
43413 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
43414 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
43415 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
43416 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
43417 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
43418 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
43419 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
43420 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
43421 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
43422 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
43423 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
43424 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
43425 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
43426 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
43427 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
43428 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
43429 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
43430 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
43431 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
43432 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
43433 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
43434 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
43435 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
43436 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
43437 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
43438 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
43439 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
43440 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
43441 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
43442 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
43443 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
43444 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
43445 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
43446 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
43447 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
43448 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
43449 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
43450 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
43451 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
43452 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
43453 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
43454 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
43455 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
43456 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
43457 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
43458 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
43459 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
43460 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
43461 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
43462 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
43463 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
43464 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
43465 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
43466 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
43467 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
43468 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
43469 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
43470 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
43471 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
43472 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
43473 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
43474 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
43475 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
43476 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
43477 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
43478 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
43479 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
43480 END DO
43481 END DO
43482 END DO
43483 s_offset_d1 = s_offset_d1 + 9
43484 END DO
43485 s_offset_c1 = s_offset_c1 + 1
43486 END DO
43487 s_offset_b1 = s_offset_b1 + 9
43488 END DO
43489 s_offset_a1 = s_offset_a1 + 3
43490 END DO
43491 END SUBROUTINE contract_pgsg
43492#endif
43493#if __MAX_CONTR > 4 || __MAX_CONTR == 4
43494! **************************************************************************************************
43495!> \brief ...
43496!> \param work ...
43497!> \param nl_a ...
43498!> \param nl_b ...
43499!> \param nl_c ...
43500!> \param nl_d ...
43501!> \param sphi_a ...
43502!> \param sphi_b ...
43503!> \param sphi_c ...
43504!> \param sphi_d ...
43505!> \param primitives ...
43506!> \param buffer1 ...
43507!> \param buffer2 ...
43508! **************************************************************************************************
43509 SUBROUTINE contract_pgps(work, &
43510 nl_a, nl_b, nl_c, nl_d, &
43511 sphi_a, sphi_b, sphi_c, sphi_d, &
43512 primitives, &
43513 buffer1, buffer2)
43514 REAL(dp), DIMENSION(3*15*3*1), INTENT(IN) :: work
43515 INTEGER :: nl_a, nl_b, nl_c, nl_d
43516 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
43517 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
43518 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
43519 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
43520 REAL(dp), &
43521 DIMENSION(3*nl_a, 9*nl_b, 3*nl_c, 1*nl_d) :: primitives
43522 REAL(dp), DIMENSION(3*15*3*1) :: buffer1, buffer2
43523
43524 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
43525 kmax, s_offset_a1, s_offset_b1, &
43526 s_offset_c1, s_offset_d1
43527
43528 s_offset_a1 = 0
43529 DO ia = 1, nl_a
43530 s_offset_b1 = 0
43531 DO ib = 1, nl_b
43532 s_offset_c1 = 0
43533 DO ic = 1, nl_c
43534 s_offset_d1 = 0
43535 DO id = 1, nl_d
43536 buffer1 = 0.0_dp
43537 imax = 15*3*1
43538 kmax = 3
43539 DO i = 1, imax
43540 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
43541 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
43542 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
43543 END DO
43544 buffer2 = 0.0_dp
43545 imax = 3*3*1
43546 kmax = 15
43547 DO i = 1, imax
43548 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
43549 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
43550 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
43551 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
43552 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
43553 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
43554 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
43555 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
43556 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
43557 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
43558 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
43559 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
43560 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
43561 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
43562 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
43563 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
43564 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
43565 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
43566 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
43567 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
43568 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
43569 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
43570 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
43571 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
43572 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
43573 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
43574 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
43575 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
43576 END DO
43577 buffer1 = 0.0_dp
43578 imax = 3*9*1
43579 kmax = 3
43580 DO i = 1, imax
43581 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
43582 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
43583 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
43584 END DO
43585 imax = 3*9*3
43586 kmax = 1
43587 i = 0
43588 DO i1 = 1, 3
43589 DO i2 = 1, 9
43590 DO i3 = 1, 3
43591 i = i + 1
43592 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
43593 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
43594 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
43595 END DO
43596 END DO
43597 END DO
43598 s_offset_d1 = s_offset_d1 + 1
43599 END DO
43600 s_offset_c1 = s_offset_c1 + 3
43601 END DO
43602 s_offset_b1 = s_offset_b1 + 9
43603 END DO
43604 s_offset_a1 = s_offset_a1 + 3
43605 END DO
43606 END SUBROUTINE contract_pgps
43607#endif
43608#if __MAX_CONTR > 4 || __MAX_CONTR == 4
43609! **************************************************************************************************
43610!> \brief ...
43611!> \param work ...
43612!> \param nl_a ...
43613!> \param nl_b ...
43614!> \param nl_c ...
43615!> \param nl_d ...
43616!> \param sphi_a ...
43617!> \param sphi_b ...
43618!> \param sphi_c ...
43619!> \param sphi_d ...
43620!> \param primitives ...
43621!> \param buffer1 ...
43622!> \param buffer2 ...
43623! **************************************************************************************************
43624 SUBROUTINE contract_pgpp(work, &
43625 nl_a, nl_b, nl_c, nl_d, &
43626 sphi_a, sphi_b, sphi_c, sphi_d, &
43627 primitives, &
43628 buffer1, buffer2)
43629 REAL(dp), DIMENSION(3*15*3*3), INTENT(IN) :: work
43630 INTEGER :: nl_a, nl_b, nl_c, nl_d
43631 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
43632 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
43633 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
43634 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
43635 REAL(dp), &
43636 DIMENSION(3*nl_a, 9*nl_b, 3*nl_c, 3*nl_d) :: primitives
43637 REAL(dp), DIMENSION(3*15*3*3) :: buffer1, buffer2
43638
43639 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
43640 kmax, s_offset_a1, s_offset_b1, &
43641 s_offset_c1, s_offset_d1
43642
43643 s_offset_a1 = 0
43644 DO ia = 1, nl_a
43645 s_offset_b1 = 0
43646 DO ib = 1, nl_b
43647 s_offset_c1 = 0
43648 DO ic = 1, nl_c
43649 s_offset_d1 = 0
43650 DO id = 1, nl_d
43651 buffer1 = 0.0_dp
43652 imax = 15*3*3
43653 kmax = 3
43654 DO i = 1, imax
43655 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
43656 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
43657 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
43658 END DO
43659 buffer2 = 0.0_dp
43660 imax = 3*3*3
43661 kmax = 15
43662 DO i = 1, imax
43663 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
43664 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
43665 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
43666 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
43667 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
43668 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
43669 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
43670 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
43671 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
43672 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
43673 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
43674 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
43675 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
43676 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
43677 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
43678 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
43679 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
43680 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
43681 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
43682 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
43683 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
43684 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
43685 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
43686 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
43687 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
43688 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
43689 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
43690 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
43691 END DO
43692 buffer1 = 0.0_dp
43693 imax = 3*9*3
43694 kmax = 3
43695 DO i = 1, imax
43696 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
43697 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
43698 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
43699 END DO
43700 imax = 3*9*3
43701 kmax = 3
43702 i = 0
43703 DO i1 = 1, 3
43704 DO i2 = 1, 9
43705 DO i3 = 1, 3
43706 i = i + 1
43707 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
43708 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
43709 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
43710 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
43711 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
43712 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
43713 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
43714 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
43715 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
43716 END DO
43717 END DO
43718 END DO
43719 s_offset_d1 = s_offset_d1 + 3
43720 END DO
43721 s_offset_c1 = s_offset_c1 + 3
43722 END DO
43723 s_offset_b1 = s_offset_b1 + 9
43724 END DO
43725 s_offset_a1 = s_offset_a1 + 3
43726 END DO
43727 END SUBROUTINE contract_pgpp
43728#endif
43729#if __MAX_CONTR > 4 || __MAX_CONTR == 4
43730! **************************************************************************************************
43731!> \brief ...
43732!> \param work ...
43733!> \param nl_a ...
43734!> \param nl_b ...
43735!> \param nl_c ...
43736!> \param nl_d ...
43737!> \param sphi_a ...
43738!> \param sphi_b ...
43739!> \param sphi_c ...
43740!> \param sphi_d ...
43741!> \param primitives ...
43742!> \param buffer1 ...
43743!> \param buffer2 ...
43744! **************************************************************************************************
43745 SUBROUTINE contract_pgpd(work, &
43746 nl_a, nl_b, nl_c, nl_d, &
43747 sphi_a, sphi_b, sphi_c, sphi_d, &
43748 primitives, &
43749 buffer1, buffer2)
43750 REAL(dp), DIMENSION(3*15*3*6), INTENT(IN) :: work
43751 INTEGER :: nl_a, nl_b, nl_c, nl_d
43752 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
43753 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
43754 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
43755 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
43756 REAL(dp), &
43757 DIMENSION(3*nl_a, 9*nl_b, 3*nl_c, 5*nl_d) :: primitives
43758 REAL(dp), DIMENSION(3*15*3*6) :: buffer1, buffer2
43759
43760 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
43761 kmax, s_offset_a1, s_offset_b1, &
43762 s_offset_c1, s_offset_d1
43763
43764 s_offset_a1 = 0
43765 DO ia = 1, nl_a
43766 s_offset_b1 = 0
43767 DO ib = 1, nl_b
43768 s_offset_c1 = 0
43769 DO ic = 1, nl_c
43770 s_offset_d1 = 0
43771 DO id = 1, nl_d
43772 buffer1 = 0.0_dp
43773 imax = 15*3*6
43774 kmax = 3
43775 DO i = 1, imax
43776 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
43777 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
43778 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
43779 END DO
43780 buffer2 = 0.0_dp
43781 imax = 3*3*6
43782 kmax = 15
43783 DO i = 1, imax
43784 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
43785 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
43786 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
43787 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
43788 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
43789 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
43790 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
43791 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
43792 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
43793 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
43794 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
43795 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
43796 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
43797 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
43798 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
43799 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
43800 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
43801 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
43802 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
43803 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
43804 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
43805 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
43806 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
43807 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
43808 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
43809 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
43810 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
43811 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
43812 END DO
43813 buffer1 = 0.0_dp
43814 imax = 3*9*6
43815 kmax = 3
43816 DO i = 1, imax
43817 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
43818 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
43819 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
43820 END DO
43821 imax = 3*9*3
43822 kmax = 6
43823 i = 0
43824 DO i1 = 1, 3
43825 DO i2 = 1, 9
43826 DO i3 = 1, 3
43827 i = i + 1
43828 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
43829 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
43830 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
43831 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
43832 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
43833 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
43834 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
43835 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
43836 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
43837 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
43838 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
43839 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
43840 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
43841 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
43842 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
43843 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
43844 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
43845 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
43846 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
43847 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
43848 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
43849 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
43850 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
43851 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
43852 END DO
43853 END DO
43854 END DO
43855 s_offset_d1 = s_offset_d1 + 5
43856 END DO
43857 s_offset_c1 = s_offset_c1 + 3
43858 END DO
43859 s_offset_b1 = s_offset_b1 + 9
43860 END DO
43861 s_offset_a1 = s_offset_a1 + 3
43862 END DO
43863 END SUBROUTINE contract_pgpd
43864#endif
43865#if __MAX_CONTR > 4 || __MAX_CONTR == 4
43866! **************************************************************************************************
43867!> \brief ...
43868!> \param work ...
43869!> \param nl_a ...
43870!> \param nl_b ...
43871!> \param nl_c ...
43872!> \param nl_d ...
43873!> \param sphi_a ...
43874!> \param sphi_b ...
43875!> \param sphi_c ...
43876!> \param sphi_d ...
43877!> \param primitives ...
43878!> \param buffer1 ...
43879!> \param buffer2 ...
43880! **************************************************************************************************
43881 SUBROUTINE contract_pgpf(work, &
43882 nl_a, nl_b, nl_c, nl_d, &
43883 sphi_a, sphi_b, sphi_c, sphi_d, &
43884 primitives, &
43885 buffer1, buffer2)
43886 REAL(dp), DIMENSION(3*15*3*10), INTENT(IN) :: work
43887 INTEGER :: nl_a, nl_b, nl_c, nl_d
43888 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
43889 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
43890 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
43891 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
43892 REAL(dp), &
43893 DIMENSION(3*nl_a, 9*nl_b, 3*nl_c, 7*nl_d) :: primitives
43894 REAL(dp), DIMENSION(3*15*3*10) :: buffer1, buffer2
43895
43896 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
43897 kmax, s_offset_a1, s_offset_b1, &
43898 s_offset_c1, s_offset_d1
43899
43900 s_offset_a1 = 0
43901 DO ia = 1, nl_a
43902 s_offset_b1 = 0
43903 DO ib = 1, nl_b
43904 s_offset_c1 = 0
43905 DO ic = 1, nl_c
43906 s_offset_d1 = 0
43907 DO id = 1, nl_d
43908 buffer1 = 0.0_dp
43909 imax = 15*3*10
43910 kmax = 3
43911 DO i = 1, imax
43912 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
43913 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
43914 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
43915 END DO
43916 buffer2 = 0.0_dp
43917 imax = 3*3*10
43918 kmax = 15
43919 DO i = 1, imax
43920 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
43921 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
43922 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
43923 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
43924 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
43925 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
43926 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
43927 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
43928 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
43929 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
43930 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
43931 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
43932 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
43933 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
43934 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
43935 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
43936 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
43937 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
43938 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
43939 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
43940 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
43941 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
43942 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
43943 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
43944 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
43945 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
43946 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
43947 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
43948 END DO
43949 buffer1 = 0.0_dp
43950 imax = 3*9*10
43951 kmax = 3
43952 DO i = 1, imax
43953 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
43954 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
43955 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
43956 END DO
43957 imax = 3*9*3
43958 kmax = 10
43959 i = 0
43960 DO i1 = 1, 3
43961 DO i2 = 1, 9
43962 DO i3 = 1, 3
43963 i = i + 1
43964 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
43965 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
43966 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
43967 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
43968 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
43969 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
43970 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
43971 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
43972 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
43973 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
43974 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
43975 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
43976 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
43977 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
43978 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
43979 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
43980 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
43981 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
43982 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
43983 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
43984 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
43985 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
43986 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
43987 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
43988 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
43989 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
43990 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
43991 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
43992 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
43993 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
43994 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
43995 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
43996 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
43997 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
43998 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
43999 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
44000 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
44001 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
44002 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
44003 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
44004 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
44005 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
44006 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
44007 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
44008 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
44009 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
44010 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
44011 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
44012 END DO
44013 END DO
44014 END DO
44015 s_offset_d1 = s_offset_d1 + 7
44016 END DO
44017 s_offset_c1 = s_offset_c1 + 3
44018 END DO
44019 s_offset_b1 = s_offset_b1 + 9
44020 END DO
44021 s_offset_a1 = s_offset_a1 + 3
44022 END DO
44023 END SUBROUTINE contract_pgpf
44024#endif
44025#if __MAX_CONTR > 4 || __MAX_CONTR == 4
44026! **************************************************************************************************
44027!> \brief ...
44028!> \param work ...
44029!> \param nl_a ...
44030!> \param nl_b ...
44031!> \param nl_c ...
44032!> \param nl_d ...
44033!> \param sphi_a ...
44034!> \param sphi_b ...
44035!> \param sphi_c ...
44036!> \param sphi_d ...
44037!> \param primitives ...
44038!> \param buffer1 ...
44039!> \param buffer2 ...
44040! **************************************************************************************************
44041 SUBROUTINE contract_pgpg(work, &
44042 nl_a, nl_b, nl_c, nl_d, &
44043 sphi_a, sphi_b, sphi_c, sphi_d, &
44044 primitives, &
44045 buffer1, buffer2)
44046 REAL(dp), DIMENSION(3*15*3*15), INTENT(IN) :: work
44047 INTEGER :: nl_a, nl_b, nl_c, nl_d
44048 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
44049 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
44050 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
44051 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
44052 REAL(dp), &
44053 DIMENSION(3*nl_a, 9*nl_b, 3*nl_c, 9*nl_d) :: primitives
44054 REAL(dp), DIMENSION(3*15*3*15) :: buffer1, buffer2
44055
44056 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
44057 kmax, s_offset_a1, s_offset_b1, &
44058 s_offset_c1, s_offset_d1
44059
44060 s_offset_a1 = 0
44061 DO ia = 1, nl_a
44062 s_offset_b1 = 0
44063 DO ib = 1, nl_b
44064 s_offset_c1 = 0
44065 DO ic = 1, nl_c
44066 s_offset_d1 = 0
44067 DO id = 1, nl_d
44068 buffer1 = 0.0_dp
44069 imax = 15*3*15
44070 kmax = 3
44071 DO i = 1, imax
44072 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
44073 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
44074 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
44075 END DO
44076 buffer2 = 0.0_dp
44077 imax = 3*3*15
44078 kmax = 15
44079 DO i = 1, imax
44080 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
44081 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
44082 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
44083 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
44084 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
44085 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
44086 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
44087 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
44088 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
44089 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
44090 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
44091 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
44092 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
44093 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
44094 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
44095 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
44096 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
44097 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
44098 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
44099 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
44100 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
44101 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
44102 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
44103 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
44104 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
44105 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
44106 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
44107 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
44108 END DO
44109 buffer1 = 0.0_dp
44110 imax = 3*9*15
44111 kmax = 3
44112 DO i = 1, imax
44113 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
44114 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
44115 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
44116 END DO
44117 imax = 3*9*3
44118 kmax = 15
44119 i = 0
44120 DO i1 = 1, 3
44121 DO i2 = 1, 9
44122 DO i3 = 1, 3
44123 i = i + 1
44124 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
44125 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
44126 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
44127 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
44128 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
44129 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
44130 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
44131 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
44132 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
44133 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
44134 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
44135 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
44136 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
44137 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
44138 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
44139 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
44140 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
44141 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
44142 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
44143 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
44144 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
44145 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
44146 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
44147 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
44148 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
44149 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
44150 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
44151 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
44152 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
44153 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
44154 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
44155 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
44156 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
44157 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
44158 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
44159 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
44160 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
44161 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
44162 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
44163 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
44164 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
44165 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
44166 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
44167 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
44168 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
44169 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
44170 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
44171 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
44172 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
44173 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
44174 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
44175 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
44176 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
44177 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
44178 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
44179 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
44180 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
44181 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
44182 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
44183 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
44184 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
44185 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
44186 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
44187 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
44188 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
44189 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
44190 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
44191 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
44192 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
44193 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
44194 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
44195 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
44196 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
44197 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
44198 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
44199 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
44200 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
44201 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
44202 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
44203 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
44204 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
44205 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
44206 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
44207 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
44208 END DO
44209 END DO
44210 END DO
44211 s_offset_d1 = s_offset_d1 + 9
44212 END DO
44213 s_offset_c1 = s_offset_c1 + 3
44214 END DO
44215 s_offset_b1 = s_offset_b1 + 9
44216 END DO
44217 s_offset_a1 = s_offset_a1 + 3
44218 END DO
44219 END SUBROUTINE contract_pgpg
44220#endif
44221#if __MAX_CONTR > 4 || __MAX_CONTR == 4
44222! **************************************************************************************************
44223!> \brief ...
44224!> \param work ...
44225!> \param nl_a ...
44226!> \param nl_b ...
44227!> \param nl_c ...
44228!> \param nl_d ...
44229!> \param sphi_a ...
44230!> \param sphi_b ...
44231!> \param sphi_c ...
44232!> \param sphi_d ...
44233!> \param primitives ...
44234!> \param buffer1 ...
44235!> \param buffer2 ...
44236! **************************************************************************************************
44237 SUBROUTINE contract_pgds(work, &
44238 nl_a, nl_b, nl_c, nl_d, &
44239 sphi_a, sphi_b, sphi_c, sphi_d, &
44240 primitives, &
44241 buffer1, buffer2)
44242 REAL(dp), DIMENSION(3*15*6*1), INTENT(IN) :: work
44243 INTEGER :: nl_a, nl_b, nl_c, nl_d
44244 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
44245 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
44246 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
44247 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
44248 REAL(dp), &
44249 DIMENSION(3*nl_a, 9*nl_b, 5*nl_c, 1*nl_d) :: primitives
44250 REAL(dp), DIMENSION(3*15*6*1) :: buffer1, buffer2
44251
44252 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
44253 kmax, s_offset_a1, s_offset_b1, &
44254 s_offset_c1, s_offset_d1
44255
44256 s_offset_a1 = 0
44257 DO ia = 1, nl_a
44258 s_offset_b1 = 0
44259 DO ib = 1, nl_b
44260 s_offset_c1 = 0
44261 DO ic = 1, nl_c
44262 s_offset_d1 = 0
44263 DO id = 1, nl_d
44264 buffer1 = 0.0_dp
44265 imax = 15*6*1
44266 kmax = 3
44267 DO i = 1, imax
44268 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
44269 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
44270 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
44271 END DO
44272 buffer2 = 0.0_dp
44273 imax = 3*6*1
44274 kmax = 15
44275 DO i = 1, imax
44276 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
44277 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
44278 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
44279 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
44280 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
44281 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
44282 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
44283 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
44284 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
44285 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
44286 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
44287 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
44288 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
44289 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
44290 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
44291 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
44292 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
44293 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
44294 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
44295 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
44296 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
44297 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
44298 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
44299 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
44300 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
44301 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
44302 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
44303 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
44304 END DO
44305 buffer1 = 0.0_dp
44306 imax = 3*9*1
44307 kmax = 6
44308 DO i = 1, imax
44309 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
44310 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
44311 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
44312 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
44313 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
44314 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
44315 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
44316 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
44317 END DO
44318 imax = 3*9*5
44319 kmax = 1
44320 i = 0
44321 DO i1 = 1, 5
44322 DO i2 = 1, 9
44323 DO i3 = 1, 3
44324 i = i + 1
44325 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
44326 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
44327 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
44328 END DO
44329 END DO
44330 END DO
44331 s_offset_d1 = s_offset_d1 + 1
44332 END DO
44333 s_offset_c1 = s_offset_c1 + 5
44334 END DO
44335 s_offset_b1 = s_offset_b1 + 9
44336 END DO
44337 s_offset_a1 = s_offset_a1 + 3
44338 END DO
44339 END SUBROUTINE contract_pgds
44340#endif
44341#if __MAX_CONTR > 4 || __MAX_CONTR == 4
44342! **************************************************************************************************
44343!> \brief ...
44344!> \param work ...
44345!> \param nl_a ...
44346!> \param nl_b ...
44347!> \param nl_c ...
44348!> \param nl_d ...
44349!> \param sphi_a ...
44350!> \param sphi_b ...
44351!> \param sphi_c ...
44352!> \param sphi_d ...
44353!> \param primitives ...
44354!> \param buffer1 ...
44355!> \param buffer2 ...
44356! **************************************************************************************************
44357 SUBROUTINE contract_pgdp(work, &
44358 nl_a, nl_b, nl_c, nl_d, &
44359 sphi_a, sphi_b, sphi_c, sphi_d, &
44360 primitives, &
44361 buffer1, buffer2)
44362 REAL(dp), DIMENSION(3*15*6*3), INTENT(IN) :: work
44363 INTEGER :: nl_a, nl_b, nl_c, nl_d
44364 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
44365 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
44366 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
44367 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
44368 REAL(dp), &
44369 DIMENSION(3*nl_a, 9*nl_b, 5*nl_c, 3*nl_d) :: primitives
44370 REAL(dp), DIMENSION(3*15*6*3) :: buffer1, buffer2
44371
44372 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
44373 kmax, s_offset_a1, s_offset_b1, &
44374 s_offset_c1, s_offset_d1
44375
44376 s_offset_a1 = 0
44377 DO ia = 1, nl_a
44378 s_offset_b1 = 0
44379 DO ib = 1, nl_b
44380 s_offset_c1 = 0
44381 DO ic = 1, nl_c
44382 s_offset_d1 = 0
44383 DO id = 1, nl_d
44384 buffer1 = 0.0_dp
44385 imax = 15*6*3
44386 kmax = 3
44387 DO i = 1, imax
44388 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
44389 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
44390 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
44391 END DO
44392 buffer2 = 0.0_dp
44393 imax = 3*6*3
44394 kmax = 15
44395 DO i = 1, imax
44396 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
44397 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
44398 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
44399 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
44400 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
44401 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
44402 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
44403 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
44404 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
44405 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
44406 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
44407 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
44408 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
44409 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
44410 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
44411 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
44412 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
44413 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
44414 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
44415 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
44416 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
44417 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
44418 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
44419 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
44420 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
44421 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
44422 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
44423 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
44424 END DO
44425 buffer1 = 0.0_dp
44426 imax = 3*9*3
44427 kmax = 6
44428 DO i = 1, imax
44429 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
44430 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
44431 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
44432 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
44433 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
44434 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
44435 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
44436 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
44437 END DO
44438 imax = 3*9*5
44439 kmax = 3
44440 i = 0
44441 DO i1 = 1, 5
44442 DO i2 = 1, 9
44443 DO i3 = 1, 3
44444 i = i + 1
44445 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
44446 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
44447 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
44448 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
44449 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
44450 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
44451 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
44452 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
44453 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
44454 END DO
44455 END DO
44456 END DO
44457 s_offset_d1 = s_offset_d1 + 3
44458 END DO
44459 s_offset_c1 = s_offset_c1 + 5
44460 END DO
44461 s_offset_b1 = s_offset_b1 + 9
44462 END DO
44463 s_offset_a1 = s_offset_a1 + 3
44464 END DO
44465 END SUBROUTINE contract_pgdp
44466#endif
44467#if __MAX_CONTR > 4 || __MAX_CONTR == 4
44468! **************************************************************************************************
44469!> \brief ...
44470!> \param work ...
44471!> \param nl_a ...
44472!> \param nl_b ...
44473!> \param nl_c ...
44474!> \param nl_d ...
44475!> \param sphi_a ...
44476!> \param sphi_b ...
44477!> \param sphi_c ...
44478!> \param sphi_d ...
44479!> \param primitives ...
44480!> \param buffer1 ...
44481!> \param buffer2 ...
44482! **************************************************************************************************
44483 SUBROUTINE contract_pgdd(work, &
44484 nl_a, nl_b, nl_c, nl_d, &
44485 sphi_a, sphi_b, sphi_c, sphi_d, &
44486 primitives, &
44487 buffer1, buffer2)
44488 REAL(dp), DIMENSION(3*15*6*6), INTENT(IN) :: work
44489 INTEGER :: nl_a, nl_b, nl_c, nl_d
44490 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
44491 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
44492 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
44493 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
44494 REAL(dp), &
44495 DIMENSION(3*nl_a, 9*nl_b, 5*nl_c, 5*nl_d) :: primitives
44496 REAL(dp), DIMENSION(3*15*6*6) :: buffer1, buffer2
44497
44498 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
44499 kmax, s_offset_a1, s_offset_b1, &
44500 s_offset_c1, s_offset_d1
44501
44502 s_offset_a1 = 0
44503 DO ia = 1, nl_a
44504 s_offset_b1 = 0
44505 DO ib = 1, nl_b
44506 s_offset_c1 = 0
44507 DO ic = 1, nl_c
44508 s_offset_d1 = 0
44509 DO id = 1, nl_d
44510 buffer1 = 0.0_dp
44511 imax = 15*6*6
44512 kmax = 3
44513 DO i = 1, imax
44514 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
44515 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
44516 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
44517 END DO
44518 buffer2 = 0.0_dp
44519 imax = 3*6*6
44520 kmax = 15
44521 DO i = 1, imax
44522 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
44523 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
44524 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
44525 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
44526 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
44527 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
44528 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
44529 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
44530 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
44531 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
44532 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
44533 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
44534 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
44535 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
44536 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
44537 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
44538 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
44539 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
44540 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
44541 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
44542 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
44543 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
44544 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
44545 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
44546 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
44547 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
44548 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
44549 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
44550 END DO
44551 buffer1 = 0.0_dp
44552 imax = 3*9*6
44553 kmax = 6
44554 DO i = 1, imax
44555 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
44556 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
44557 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
44558 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
44559 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
44560 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
44561 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
44562 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
44563 END DO
44564 imax = 3*9*5
44565 kmax = 6
44566 i = 0
44567 DO i1 = 1, 5
44568 DO i2 = 1, 9
44569 DO i3 = 1, 3
44570 i = i + 1
44571 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
44572 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
44573 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
44574 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
44575 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
44576 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
44577 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
44578 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
44579 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
44580 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
44581 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
44582 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
44583 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
44584 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
44585 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
44586 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
44587 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
44588 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
44589 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
44590 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
44591 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
44592 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
44593 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
44594 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
44595 END DO
44596 END DO
44597 END DO
44598 s_offset_d1 = s_offset_d1 + 5
44599 END DO
44600 s_offset_c1 = s_offset_c1 + 5
44601 END DO
44602 s_offset_b1 = s_offset_b1 + 9
44603 END DO
44604 s_offset_a1 = s_offset_a1 + 3
44605 END DO
44606 END SUBROUTINE contract_pgdd
44607#endif
44608#if __MAX_CONTR > 4 || __MAX_CONTR == 4
44609! **************************************************************************************************
44610!> \brief ...
44611!> \param work ...
44612!> \param nl_a ...
44613!> \param nl_b ...
44614!> \param nl_c ...
44615!> \param nl_d ...
44616!> \param sphi_a ...
44617!> \param sphi_b ...
44618!> \param sphi_c ...
44619!> \param sphi_d ...
44620!> \param primitives ...
44621!> \param buffer1 ...
44622!> \param buffer2 ...
44623! **************************************************************************************************
44624 SUBROUTINE contract_pgdf(work, &
44625 nl_a, nl_b, nl_c, nl_d, &
44626 sphi_a, sphi_b, sphi_c, sphi_d, &
44627 primitives, &
44628 buffer1, buffer2)
44629 REAL(dp), DIMENSION(3*15*6*10), INTENT(IN) :: work
44630 INTEGER :: nl_a, nl_b, nl_c, nl_d
44631 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
44632 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
44633 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
44634 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
44635 REAL(dp), &
44636 DIMENSION(3*nl_a, 9*nl_b, 5*nl_c, 7*nl_d) :: primitives
44637 REAL(dp), DIMENSION(3*15*6*10) :: buffer1, buffer2
44638
44639 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
44640 kmax, s_offset_a1, s_offset_b1, &
44641 s_offset_c1, s_offset_d1
44642
44643 s_offset_a1 = 0
44644 DO ia = 1, nl_a
44645 s_offset_b1 = 0
44646 DO ib = 1, nl_b
44647 s_offset_c1 = 0
44648 DO ic = 1, nl_c
44649 s_offset_d1 = 0
44650 DO id = 1, nl_d
44651 buffer1 = 0.0_dp
44652 imax = 15*6*10
44653 kmax = 3
44654 DO i = 1, imax
44655 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
44656 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
44657 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
44658 END DO
44659 buffer2 = 0.0_dp
44660 imax = 3*6*10
44661 kmax = 15
44662 DO i = 1, imax
44663 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
44664 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
44665 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
44666 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
44667 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
44668 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
44669 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
44670 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
44671 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
44672 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
44673 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
44674 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
44675 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
44676 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
44677 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
44678 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
44679 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
44680 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
44681 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
44682 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
44683 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
44684 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
44685 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
44686 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
44687 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
44688 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
44689 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
44690 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
44691 END DO
44692 buffer1 = 0.0_dp
44693 imax = 3*9*10
44694 kmax = 6
44695 DO i = 1, imax
44696 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
44697 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
44698 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
44699 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
44700 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
44701 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
44702 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
44703 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
44704 END DO
44705 imax = 3*9*5
44706 kmax = 10
44707 i = 0
44708 DO i1 = 1, 5
44709 DO i2 = 1, 9
44710 DO i3 = 1, 3
44711 i = i + 1
44712 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
44713 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
44714 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
44715 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
44716 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
44717 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
44718 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
44719 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
44720 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
44721 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
44722 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
44723 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
44724 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
44725 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
44726 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
44727 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
44728 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
44729 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
44730 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
44731 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
44732 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
44733 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
44734 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
44735 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
44736 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
44737 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
44738 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
44739 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
44740 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
44741 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
44742 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
44743 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
44744 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
44745 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
44746 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
44747 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
44748 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
44749 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
44750 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
44751 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
44752 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
44753 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
44754 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
44755 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
44756 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
44757 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
44758 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
44759 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
44760 END DO
44761 END DO
44762 END DO
44763 s_offset_d1 = s_offset_d1 + 7
44764 END DO
44765 s_offset_c1 = s_offset_c1 + 5
44766 END DO
44767 s_offset_b1 = s_offset_b1 + 9
44768 END DO
44769 s_offset_a1 = s_offset_a1 + 3
44770 END DO
44771 END SUBROUTINE contract_pgdf
44772#endif
44773#if __MAX_CONTR > 4 || __MAX_CONTR == 4
44774! **************************************************************************************************
44775!> \brief ...
44776!> \param work ...
44777!> \param nl_a ...
44778!> \param nl_b ...
44779!> \param nl_c ...
44780!> \param nl_d ...
44781!> \param sphi_a ...
44782!> \param sphi_b ...
44783!> \param sphi_c ...
44784!> \param sphi_d ...
44785!> \param primitives ...
44786!> \param buffer1 ...
44787!> \param buffer2 ...
44788! **************************************************************************************************
44789 SUBROUTINE contract_pgdg(work, &
44790 nl_a, nl_b, nl_c, nl_d, &
44791 sphi_a, sphi_b, sphi_c, sphi_d, &
44792 primitives, &
44793 buffer1, buffer2)
44794 REAL(dp), DIMENSION(3*15*6*15), INTENT(IN) :: work
44795 INTEGER :: nl_a, nl_b, nl_c, nl_d
44796 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
44797 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
44798 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
44799 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
44800 REAL(dp), &
44801 DIMENSION(3*nl_a, 9*nl_b, 5*nl_c, 9*nl_d) :: primitives
44802 REAL(dp), DIMENSION(3*15*6*15) :: buffer1, buffer2
44803
44804 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
44805 kmax, s_offset_a1, s_offset_b1, &
44806 s_offset_c1, s_offset_d1
44807
44808 s_offset_a1 = 0
44809 DO ia = 1, nl_a
44810 s_offset_b1 = 0
44811 DO ib = 1, nl_b
44812 s_offset_c1 = 0
44813 DO ic = 1, nl_c
44814 s_offset_d1 = 0
44815 DO id = 1, nl_d
44816 buffer1 = 0.0_dp
44817 imax = 15*6*15
44818 kmax = 3
44819 DO i = 1, imax
44820 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
44821 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
44822 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
44823 END DO
44824 buffer2 = 0.0_dp
44825 imax = 3*6*15
44826 kmax = 15
44827 DO i = 1, imax
44828 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
44829 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
44830 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
44831 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
44832 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
44833 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
44834 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
44835 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
44836 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
44837 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
44838 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
44839 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
44840 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
44841 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
44842 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
44843 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
44844 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
44845 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
44846 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
44847 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
44848 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
44849 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
44850 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
44851 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
44852 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
44853 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
44854 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
44855 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
44856 END DO
44857 buffer1 = 0.0_dp
44858 imax = 3*9*15
44859 kmax = 6
44860 DO i = 1, imax
44861 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
44862 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
44863 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
44864 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
44865 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
44866 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
44867 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
44868 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
44869 END DO
44870 imax = 3*9*5
44871 kmax = 15
44872 i = 0
44873 DO i1 = 1, 5
44874 DO i2 = 1, 9
44875 DO i3 = 1, 3
44876 i = i + 1
44877 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
44878 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
44879 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
44880 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
44881 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
44882 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
44883 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
44884 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
44885 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
44886 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
44887 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
44888 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
44889 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
44890 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
44891 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
44892 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
44893 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
44894 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
44895 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
44896 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
44897 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
44898 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
44899 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
44900 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
44901 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
44902 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
44903 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
44904 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
44905 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
44906 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
44907 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
44908 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
44909 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
44910 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
44911 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
44912 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
44913 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
44914 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
44915 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
44916 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
44917 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
44918 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
44919 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
44920 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
44921 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
44922 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
44923 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
44924 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
44925 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
44926 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
44927 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
44928 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
44929 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
44930 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
44931 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
44932 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
44933 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
44934 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
44935 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
44936 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
44937 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
44938 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
44939 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
44940 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
44941 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
44942 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
44943 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
44944 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
44945 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
44946 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
44947 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
44948 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
44949 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
44950 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
44951 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
44952 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
44953 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
44954 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
44955 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
44956 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
44957 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
44958 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
44959 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
44960 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
44961 END DO
44962 END DO
44963 END DO
44964 s_offset_d1 = s_offset_d1 + 9
44965 END DO
44966 s_offset_c1 = s_offset_c1 + 5
44967 END DO
44968 s_offset_b1 = s_offset_b1 + 9
44969 END DO
44970 s_offset_a1 = s_offset_a1 + 3
44971 END DO
44972 END SUBROUTINE contract_pgdg
44973#endif
44974#if __MAX_CONTR > 4 || __MAX_CONTR == 4
44975! **************************************************************************************************
44976!> \brief ...
44977!> \param work ...
44978!> \param nl_a ...
44979!> \param nl_b ...
44980!> \param nl_c ...
44981!> \param nl_d ...
44982!> \param sphi_a ...
44983!> \param sphi_b ...
44984!> \param sphi_c ...
44985!> \param sphi_d ...
44986!> \param primitives ...
44987!> \param buffer1 ...
44988!> \param buffer2 ...
44989! **************************************************************************************************
44990 SUBROUTINE contract_pgfs(work, &
44991 nl_a, nl_b, nl_c, nl_d, &
44992 sphi_a, sphi_b, sphi_c, sphi_d, &
44993 primitives, &
44994 buffer1, buffer2)
44995 REAL(dp), DIMENSION(3*15*10*1), INTENT(IN) :: work
44996 INTEGER :: nl_a, nl_b, nl_c, nl_d
44997 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
44998 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
44999 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
45000 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
45001 REAL(dp), &
45002 DIMENSION(3*nl_a, 9*nl_b, 7*nl_c, 1*nl_d) :: primitives
45003 REAL(dp), DIMENSION(3*15*10*1) :: buffer1, buffer2
45004
45005 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
45006 kmax, s_offset_a1, s_offset_b1, &
45007 s_offset_c1, s_offset_d1
45008
45009 s_offset_a1 = 0
45010 DO ia = 1, nl_a
45011 s_offset_b1 = 0
45012 DO ib = 1, nl_b
45013 s_offset_c1 = 0
45014 DO ic = 1, nl_c
45015 s_offset_d1 = 0
45016 DO id = 1, nl_d
45017 buffer1 = 0.0_dp
45018 imax = 15*10*1
45019 kmax = 3
45020 DO i = 1, imax
45021 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
45022 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
45023 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
45024 END DO
45025 buffer2 = 0.0_dp
45026 imax = 3*10*1
45027 kmax = 15
45028 DO i = 1, imax
45029 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
45030 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
45031 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
45032 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
45033 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
45034 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
45035 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
45036 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
45037 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
45038 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
45039 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
45040 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
45041 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
45042 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
45043 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
45044 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
45045 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
45046 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
45047 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
45048 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
45049 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
45050 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
45051 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
45052 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
45053 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
45054 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
45055 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
45056 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
45057 END DO
45058 buffer1 = 0.0_dp
45059 imax = 3*9*1
45060 kmax = 10
45061 DO i = 1, imax
45062 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
45063 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
45064 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
45065 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
45066 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
45067 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
45068 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
45069 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
45070 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
45071 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
45072 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
45073 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
45074 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
45075 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
45076 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
45077 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
45078 END DO
45079 imax = 3*9*7
45080 kmax = 1
45081 i = 0
45082 DO i1 = 1, 7
45083 DO i2 = 1, 9
45084 DO i3 = 1, 3
45085 i = i + 1
45086 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
45087 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
45088 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
45089 END DO
45090 END DO
45091 END DO
45092 s_offset_d1 = s_offset_d1 + 1
45093 END DO
45094 s_offset_c1 = s_offset_c1 + 7
45095 END DO
45096 s_offset_b1 = s_offset_b1 + 9
45097 END DO
45098 s_offset_a1 = s_offset_a1 + 3
45099 END DO
45100 END SUBROUTINE contract_pgfs
45101#endif
45102#if __MAX_CONTR > 4 || __MAX_CONTR == 4
45103! **************************************************************************************************
45104!> \brief ...
45105!> \param work ...
45106!> \param nl_a ...
45107!> \param nl_b ...
45108!> \param nl_c ...
45109!> \param nl_d ...
45110!> \param sphi_a ...
45111!> \param sphi_b ...
45112!> \param sphi_c ...
45113!> \param sphi_d ...
45114!> \param primitives ...
45115!> \param buffer1 ...
45116!> \param buffer2 ...
45117! **************************************************************************************************
45118 SUBROUTINE contract_pgfp(work, &
45119 nl_a, nl_b, nl_c, nl_d, &
45120 sphi_a, sphi_b, sphi_c, sphi_d, &
45121 primitives, &
45122 buffer1, buffer2)
45123 REAL(dp), DIMENSION(3*15*10*3), INTENT(IN) :: work
45124 INTEGER :: nl_a, nl_b, nl_c, nl_d
45125 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
45126 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
45127 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
45128 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
45129 REAL(dp), &
45130 DIMENSION(3*nl_a, 9*nl_b, 7*nl_c, 3*nl_d) :: primitives
45131 REAL(dp), DIMENSION(3*15*10*3) :: buffer1, buffer2
45132
45133 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
45134 kmax, s_offset_a1, s_offset_b1, &
45135 s_offset_c1, s_offset_d1
45136
45137 s_offset_a1 = 0
45138 DO ia = 1, nl_a
45139 s_offset_b1 = 0
45140 DO ib = 1, nl_b
45141 s_offset_c1 = 0
45142 DO ic = 1, nl_c
45143 s_offset_d1 = 0
45144 DO id = 1, nl_d
45145 buffer1 = 0.0_dp
45146 imax = 15*10*3
45147 kmax = 3
45148 DO i = 1, imax
45149 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
45150 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
45151 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
45152 END DO
45153 buffer2 = 0.0_dp
45154 imax = 3*10*3
45155 kmax = 15
45156 DO i = 1, imax
45157 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
45158 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
45159 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
45160 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
45161 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
45162 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
45163 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
45164 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
45165 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
45166 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
45167 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
45168 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
45169 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
45170 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
45171 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
45172 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
45173 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
45174 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
45175 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
45176 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
45177 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
45178 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
45179 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
45180 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
45181 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
45182 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
45183 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
45184 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
45185 END DO
45186 buffer1 = 0.0_dp
45187 imax = 3*9*3
45188 kmax = 10
45189 DO i = 1, imax
45190 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
45191 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
45192 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
45193 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
45194 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
45195 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
45196 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
45197 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
45198 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
45199 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
45200 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
45201 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
45202 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
45203 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
45204 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
45205 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
45206 END DO
45207 imax = 3*9*7
45208 kmax = 3
45209 i = 0
45210 DO i1 = 1, 7
45211 DO i2 = 1, 9
45212 DO i3 = 1, 3
45213 i = i + 1
45214 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
45215 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
45216 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
45217 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
45218 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
45219 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
45220 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
45221 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
45222 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
45223 END DO
45224 END DO
45225 END DO
45226 s_offset_d1 = s_offset_d1 + 3
45227 END DO
45228 s_offset_c1 = s_offset_c1 + 7
45229 END DO
45230 s_offset_b1 = s_offset_b1 + 9
45231 END DO
45232 s_offset_a1 = s_offset_a1 + 3
45233 END DO
45234 END SUBROUTINE contract_pgfp
45235#endif
45236#if __MAX_CONTR > 4 || __MAX_CONTR == 4
45237! **************************************************************************************************
45238!> \brief ...
45239!> \param work ...
45240!> \param nl_a ...
45241!> \param nl_b ...
45242!> \param nl_c ...
45243!> \param nl_d ...
45244!> \param sphi_a ...
45245!> \param sphi_b ...
45246!> \param sphi_c ...
45247!> \param sphi_d ...
45248!> \param primitives ...
45249!> \param buffer1 ...
45250!> \param buffer2 ...
45251! **************************************************************************************************
45252 SUBROUTINE contract_pgfd(work, &
45253 nl_a, nl_b, nl_c, nl_d, &
45254 sphi_a, sphi_b, sphi_c, sphi_d, &
45255 primitives, &
45256 buffer1, buffer2)
45257 REAL(dp), DIMENSION(3*15*10*6), INTENT(IN) :: work
45258 INTEGER :: nl_a, nl_b, nl_c, nl_d
45259 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
45260 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
45261 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
45262 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
45263 REAL(dp), &
45264 DIMENSION(3*nl_a, 9*nl_b, 7*nl_c, 5*nl_d) :: primitives
45265 REAL(dp), DIMENSION(3*15*10*6) :: buffer1, buffer2
45266
45267 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
45268 kmax, s_offset_a1, s_offset_b1, &
45269 s_offset_c1, s_offset_d1
45270
45271 s_offset_a1 = 0
45272 DO ia = 1, nl_a
45273 s_offset_b1 = 0
45274 DO ib = 1, nl_b
45275 s_offset_c1 = 0
45276 DO ic = 1, nl_c
45277 s_offset_d1 = 0
45278 DO id = 1, nl_d
45279 buffer1 = 0.0_dp
45280 imax = 15*10*6
45281 kmax = 3
45282 DO i = 1, imax
45283 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
45284 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
45285 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
45286 END DO
45287 buffer2 = 0.0_dp
45288 imax = 3*10*6
45289 kmax = 15
45290 DO i = 1, imax
45291 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
45292 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
45293 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
45294 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
45295 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
45296 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
45297 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
45298 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
45299 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
45300 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
45301 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
45302 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
45303 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
45304 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
45305 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
45306 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
45307 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
45308 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
45309 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
45310 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
45311 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
45312 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
45313 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
45314 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
45315 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
45316 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
45317 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
45318 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
45319 END DO
45320 buffer1 = 0.0_dp
45321 imax = 3*9*6
45322 kmax = 10
45323 DO i = 1, imax
45324 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
45325 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
45326 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
45327 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
45328 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
45329 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
45330 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
45331 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
45332 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
45333 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
45334 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
45335 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
45336 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
45337 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
45338 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
45339 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
45340 END DO
45341 imax = 3*9*7
45342 kmax = 6
45343 i = 0
45344 DO i1 = 1, 7
45345 DO i2 = 1, 9
45346 DO i3 = 1, 3
45347 i = i + 1
45348 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
45349 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
45350 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
45351 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
45352 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
45353 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
45354 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
45355 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
45356 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
45357 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
45358 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
45359 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
45360 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
45361 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
45362 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
45363 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
45364 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
45365 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
45366 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
45367 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
45368 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
45369 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
45370 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
45371 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
45372 END DO
45373 END DO
45374 END DO
45375 s_offset_d1 = s_offset_d1 + 5
45376 END DO
45377 s_offset_c1 = s_offset_c1 + 7
45378 END DO
45379 s_offset_b1 = s_offset_b1 + 9
45380 END DO
45381 s_offset_a1 = s_offset_a1 + 3
45382 END DO
45383 END SUBROUTINE contract_pgfd
45384#endif
45385#if __MAX_CONTR > 4 || __MAX_CONTR == 4
45386! **************************************************************************************************
45387!> \brief ...
45388!> \param work ...
45389!> \param nl_a ...
45390!> \param nl_b ...
45391!> \param nl_c ...
45392!> \param nl_d ...
45393!> \param sphi_a ...
45394!> \param sphi_b ...
45395!> \param sphi_c ...
45396!> \param sphi_d ...
45397!> \param primitives ...
45398!> \param buffer1 ...
45399!> \param buffer2 ...
45400! **************************************************************************************************
45401 SUBROUTINE contract_pgff(work, &
45402 nl_a, nl_b, nl_c, nl_d, &
45403 sphi_a, sphi_b, sphi_c, sphi_d, &
45404 primitives, &
45405 buffer1, buffer2)
45406 REAL(dp), DIMENSION(3*15*10*10), INTENT(IN) :: work
45407 INTEGER :: nl_a, nl_b, nl_c, nl_d
45408 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
45409 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
45410 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
45411 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
45412 REAL(dp), &
45413 DIMENSION(3*nl_a, 9*nl_b, 7*nl_c, 7*nl_d) :: primitives
45414 REAL(dp), DIMENSION(3*15*10*10) :: buffer1, buffer2
45415
45416 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
45417 kmax, s_offset_a1, s_offset_b1, &
45418 s_offset_c1, s_offset_d1
45419
45420 s_offset_a1 = 0
45421 DO ia = 1, nl_a
45422 s_offset_b1 = 0
45423 DO ib = 1, nl_b
45424 s_offset_c1 = 0
45425 DO ic = 1, nl_c
45426 s_offset_d1 = 0
45427 DO id = 1, nl_d
45428 buffer1 = 0.0_dp
45429 imax = 15*10*10
45430 kmax = 3
45431 DO i = 1, imax
45432 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
45433 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
45434 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
45435 END DO
45436 buffer2 = 0.0_dp
45437 imax = 3*10*10
45438 kmax = 15
45439 DO i = 1, imax
45440 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
45441 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
45442 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
45443 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
45444 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
45445 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
45446 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
45447 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
45448 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
45449 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
45450 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
45451 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
45452 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
45453 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
45454 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
45455 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
45456 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
45457 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
45458 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
45459 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
45460 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
45461 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
45462 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
45463 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
45464 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
45465 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
45466 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
45467 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
45468 END DO
45469 buffer1 = 0.0_dp
45470 imax = 3*9*10
45471 kmax = 10
45472 DO i = 1, imax
45473 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
45474 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
45475 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
45476 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
45477 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
45478 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
45479 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
45480 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
45481 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
45482 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
45483 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
45484 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
45485 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
45486 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
45487 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
45488 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
45489 END DO
45490 imax = 3*9*7
45491 kmax = 10
45492 i = 0
45493 DO i1 = 1, 7
45494 DO i2 = 1, 9
45495 DO i3 = 1, 3
45496 i = i + 1
45497 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
45498 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
45499 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
45500 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
45501 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
45502 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
45503 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
45504 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
45505 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
45506 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
45507 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
45508 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
45509 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
45510 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
45511 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
45512 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
45513 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
45514 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
45515 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
45516 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
45517 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
45518 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
45519 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
45520 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
45521 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
45522 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
45523 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
45524 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
45525 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
45526 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
45527 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
45528 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
45529 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
45530 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
45531 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
45532 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
45533 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
45534 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
45535 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
45536 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
45537 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
45538 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
45539 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
45540 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
45541 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
45542 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
45543 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
45544 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
45545 END DO
45546 END DO
45547 END DO
45548 s_offset_d1 = s_offset_d1 + 7
45549 END DO
45550 s_offset_c1 = s_offset_c1 + 7
45551 END DO
45552 s_offset_b1 = s_offset_b1 + 9
45553 END DO
45554 s_offset_a1 = s_offset_a1 + 3
45555 END DO
45556 END SUBROUTINE contract_pgff
45557#endif
45558#if __MAX_CONTR > 4 || __MAX_CONTR == 4
45559! **************************************************************************************************
45560!> \brief ...
45561!> \param work ...
45562!> \param nl_a ...
45563!> \param nl_b ...
45564!> \param nl_c ...
45565!> \param nl_d ...
45566!> \param sphi_a ...
45567!> \param sphi_b ...
45568!> \param sphi_c ...
45569!> \param sphi_d ...
45570!> \param primitives ...
45571!> \param buffer1 ...
45572!> \param buffer2 ...
45573! **************************************************************************************************
45574 SUBROUTINE contract_pgfg(work, &
45575 nl_a, nl_b, nl_c, nl_d, &
45576 sphi_a, sphi_b, sphi_c, sphi_d, &
45577 primitives, &
45578 buffer1, buffer2)
45579 REAL(dp), DIMENSION(3*15*10*15), INTENT(IN) :: work
45580 INTEGER :: nl_a, nl_b, nl_c, nl_d
45581 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
45582 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
45583 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
45584 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
45585 REAL(dp), &
45586 DIMENSION(3*nl_a, 9*nl_b, 7*nl_c, 9*nl_d) :: primitives
45587 REAL(dp), DIMENSION(3*15*10*15) :: buffer1, buffer2
45588
45589 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
45590 kmax, s_offset_a1, s_offset_b1, &
45591 s_offset_c1, s_offset_d1
45592
45593 s_offset_a1 = 0
45594 DO ia = 1, nl_a
45595 s_offset_b1 = 0
45596 DO ib = 1, nl_b
45597 s_offset_c1 = 0
45598 DO ic = 1, nl_c
45599 s_offset_d1 = 0
45600 DO id = 1, nl_d
45601 buffer1 = 0.0_dp
45602 imax = 15*10*15
45603 kmax = 3
45604 DO i = 1, imax
45605 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
45606 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
45607 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
45608 END DO
45609 buffer2 = 0.0_dp
45610 imax = 3*10*15
45611 kmax = 15
45612 DO i = 1, imax
45613 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
45614 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
45615 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
45616 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
45617 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
45618 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
45619 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
45620 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
45621 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
45622 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
45623 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
45624 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
45625 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
45626 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
45627 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
45628 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
45629 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
45630 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
45631 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
45632 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
45633 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
45634 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
45635 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
45636 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
45637 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
45638 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
45639 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
45640 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
45641 END DO
45642 buffer1 = 0.0_dp
45643 imax = 3*9*15
45644 kmax = 10
45645 DO i = 1, imax
45646 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
45647 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
45648 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
45649 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
45650 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
45651 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
45652 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
45653 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
45654 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
45655 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
45656 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
45657 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
45658 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
45659 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
45660 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
45661 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
45662 END DO
45663 imax = 3*9*7
45664 kmax = 15
45665 i = 0
45666 DO i1 = 1, 7
45667 DO i2 = 1, 9
45668 DO i3 = 1, 3
45669 i = i + 1
45670 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
45671 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
45672 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
45673 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
45674 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
45675 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
45676 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
45677 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
45678 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
45679 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
45680 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
45681 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
45682 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
45683 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
45684 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
45685 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
45686 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
45687 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
45688 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
45689 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
45690 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
45691 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
45692 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
45693 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
45694 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
45695 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
45696 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
45697 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
45698 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
45699 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
45700 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
45701 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
45702 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
45703 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
45704 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
45705 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
45706 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
45707 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
45708 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
45709 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
45710 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
45711 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
45712 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
45713 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
45714 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
45715 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
45716 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
45717 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
45718 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
45719 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
45720 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
45721 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
45722 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
45723 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
45724 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
45725 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
45726 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
45727 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
45728 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
45729 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
45730 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
45731 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
45732 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
45733 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
45734 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
45735 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
45736 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
45737 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
45738 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
45739 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
45740 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
45741 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
45742 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
45743 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
45744 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
45745 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
45746 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
45747 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
45748 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
45749 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
45750 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
45751 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
45752 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
45753 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
45754 END DO
45755 END DO
45756 END DO
45757 s_offset_d1 = s_offset_d1 + 9
45758 END DO
45759 s_offset_c1 = s_offset_c1 + 7
45760 END DO
45761 s_offset_b1 = s_offset_b1 + 9
45762 END DO
45763 s_offset_a1 = s_offset_a1 + 3
45764 END DO
45765 END SUBROUTINE contract_pgfg
45766#endif
45767#if __MAX_CONTR > 4 || __MAX_CONTR == 4
45768! **************************************************************************************************
45769!> \brief ...
45770!> \param work ...
45771!> \param nl_a ...
45772!> \param nl_b ...
45773!> \param nl_c ...
45774!> \param nl_d ...
45775!> \param sphi_a ...
45776!> \param sphi_b ...
45777!> \param sphi_c ...
45778!> \param sphi_d ...
45779!> \param primitives ...
45780!> \param buffer1 ...
45781!> \param buffer2 ...
45782! **************************************************************************************************
45783 SUBROUTINE contract_pggs(work, &
45784 nl_a, nl_b, nl_c, nl_d, &
45785 sphi_a, sphi_b, sphi_c, sphi_d, &
45786 primitives, &
45787 buffer1, buffer2)
45788 REAL(dp), DIMENSION(3*15*15*1), INTENT(IN) :: work
45789 INTEGER :: nl_a, nl_b, nl_c, nl_d
45790 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
45791 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
45792 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
45793 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
45794 REAL(dp), &
45795 DIMENSION(3*nl_a, 9*nl_b, 9*nl_c, 1*nl_d) :: primitives
45796 REAL(dp), DIMENSION(3*15*15*1) :: buffer1, buffer2
45797
45798 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
45799 kmax, s_offset_a1, s_offset_b1, &
45800 s_offset_c1, s_offset_d1
45801
45802 s_offset_a1 = 0
45803 DO ia = 1, nl_a
45804 s_offset_b1 = 0
45805 DO ib = 1, nl_b
45806 s_offset_c1 = 0
45807 DO ic = 1, nl_c
45808 s_offset_d1 = 0
45809 DO id = 1, nl_d
45810 buffer1 = 0.0_dp
45811 imax = 15*15*1
45812 kmax = 3
45813 DO i = 1, imax
45814 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
45815 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
45816 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
45817 END DO
45818 buffer2 = 0.0_dp
45819 imax = 3*15*1
45820 kmax = 15
45821 DO i = 1, imax
45822 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
45823 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
45824 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
45825 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
45826 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
45827 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
45828 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
45829 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
45830 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
45831 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
45832 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
45833 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
45834 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
45835 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
45836 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
45837 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
45838 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
45839 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
45840 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
45841 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
45842 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
45843 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
45844 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
45845 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
45846 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
45847 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
45848 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
45849 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
45850 END DO
45851 buffer1 = 0.0_dp
45852 imax = 3*9*1
45853 kmax = 15
45854 DO i = 1, imax
45855 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
45856 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
45857 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
45858 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
45859 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
45860 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
45861 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
45862 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
45863 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
45864 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
45865 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
45866 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
45867 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
45868 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
45869 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
45870 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
45871 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
45872 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
45873 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
45874 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
45875 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
45876 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
45877 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
45878 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
45879 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
45880 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
45881 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
45882 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
45883 END DO
45884 imax = 3*9*9
45885 kmax = 1
45886 i = 0
45887 DO i1 = 1, 9
45888 DO i2 = 1, 9
45889 DO i3 = 1, 3
45890 i = i + 1
45891 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
45892 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
45893 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
45894 END DO
45895 END DO
45896 END DO
45897 s_offset_d1 = s_offset_d1 + 1
45898 END DO
45899 s_offset_c1 = s_offset_c1 + 9
45900 END DO
45901 s_offset_b1 = s_offset_b1 + 9
45902 END DO
45903 s_offset_a1 = s_offset_a1 + 3
45904 END DO
45905 END SUBROUTINE contract_pggs
45906#endif
45907#if __MAX_CONTR > 4 || __MAX_CONTR == 4
45908! **************************************************************************************************
45909!> \brief ...
45910!> \param work ...
45911!> \param nl_a ...
45912!> \param nl_b ...
45913!> \param nl_c ...
45914!> \param nl_d ...
45915!> \param sphi_a ...
45916!> \param sphi_b ...
45917!> \param sphi_c ...
45918!> \param sphi_d ...
45919!> \param primitives ...
45920!> \param buffer1 ...
45921!> \param buffer2 ...
45922! **************************************************************************************************
45923 SUBROUTINE contract_pggp(work, &
45924 nl_a, nl_b, nl_c, nl_d, &
45925 sphi_a, sphi_b, sphi_c, sphi_d, &
45926 primitives, &
45927 buffer1, buffer2)
45928 REAL(dp), DIMENSION(3*15*15*3), INTENT(IN) :: work
45929 INTEGER :: nl_a, nl_b, nl_c, nl_d
45930 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
45931 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
45932 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
45933 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
45934 REAL(dp), &
45935 DIMENSION(3*nl_a, 9*nl_b, 9*nl_c, 3*nl_d) :: primitives
45936 REAL(dp), DIMENSION(3*15*15*3) :: buffer1, buffer2
45937
45938 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
45939 kmax, s_offset_a1, s_offset_b1, &
45940 s_offset_c1, s_offset_d1
45941
45942 s_offset_a1 = 0
45943 DO ia = 1, nl_a
45944 s_offset_b1 = 0
45945 DO ib = 1, nl_b
45946 s_offset_c1 = 0
45947 DO ic = 1, nl_c
45948 s_offset_d1 = 0
45949 DO id = 1, nl_d
45950 buffer1 = 0.0_dp
45951 imax = 15*15*3
45952 kmax = 3
45953 DO i = 1, imax
45954 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
45955 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
45956 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
45957 END DO
45958 buffer2 = 0.0_dp
45959 imax = 3*15*3
45960 kmax = 15
45961 DO i = 1, imax
45962 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
45963 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
45964 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
45965 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
45966 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
45967 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
45968 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
45969 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
45970 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
45971 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
45972 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
45973 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
45974 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
45975 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
45976 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
45977 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
45978 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
45979 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
45980 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
45981 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
45982 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
45983 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
45984 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
45985 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
45986 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
45987 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
45988 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
45989 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
45990 END DO
45991 buffer1 = 0.0_dp
45992 imax = 3*9*3
45993 kmax = 15
45994 DO i = 1, imax
45995 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
45996 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
45997 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
45998 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
45999 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
46000 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
46001 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
46002 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
46003 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
46004 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
46005 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
46006 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
46007 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
46008 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
46009 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
46010 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
46011 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
46012 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
46013 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
46014 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
46015 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
46016 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
46017 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
46018 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
46019 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
46020 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
46021 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
46022 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
46023 END DO
46024 imax = 3*9*9
46025 kmax = 3
46026 i = 0
46027 DO i1 = 1, 9
46028 DO i2 = 1, 9
46029 DO i3 = 1, 3
46030 i = i + 1
46031 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
46032 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
46033 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
46034 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
46035 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
46036 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
46037 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
46038 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
46039 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
46040 END DO
46041 END DO
46042 END DO
46043 s_offset_d1 = s_offset_d1 + 3
46044 END DO
46045 s_offset_c1 = s_offset_c1 + 9
46046 END DO
46047 s_offset_b1 = s_offset_b1 + 9
46048 END DO
46049 s_offset_a1 = s_offset_a1 + 3
46050 END DO
46051 END SUBROUTINE contract_pggp
46052#endif
46053#if __MAX_CONTR > 4 || __MAX_CONTR == 4
46054! **************************************************************************************************
46055!> \brief ...
46056!> \param work ...
46057!> \param nl_a ...
46058!> \param nl_b ...
46059!> \param nl_c ...
46060!> \param nl_d ...
46061!> \param sphi_a ...
46062!> \param sphi_b ...
46063!> \param sphi_c ...
46064!> \param sphi_d ...
46065!> \param primitives ...
46066!> \param buffer1 ...
46067!> \param buffer2 ...
46068! **************************************************************************************************
46069 SUBROUTINE contract_pggd(work, &
46070 nl_a, nl_b, nl_c, nl_d, &
46071 sphi_a, sphi_b, sphi_c, sphi_d, &
46072 primitives, &
46073 buffer1, buffer2)
46074 REAL(dp), DIMENSION(3*15*15*6), INTENT(IN) :: work
46075 INTEGER :: nl_a, nl_b, nl_c, nl_d
46076 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
46077 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
46078 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
46079 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
46080 REAL(dp), &
46081 DIMENSION(3*nl_a, 9*nl_b, 9*nl_c, 5*nl_d) :: primitives
46082 REAL(dp), DIMENSION(3*15*15*6) :: buffer1, buffer2
46083
46084 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
46085 kmax, s_offset_a1, s_offset_b1, &
46086 s_offset_c1, s_offset_d1
46087
46088 s_offset_a1 = 0
46089 DO ia = 1, nl_a
46090 s_offset_b1 = 0
46091 DO ib = 1, nl_b
46092 s_offset_c1 = 0
46093 DO ic = 1, nl_c
46094 s_offset_d1 = 0
46095 DO id = 1, nl_d
46096 buffer1 = 0.0_dp
46097 imax = 15*15*6
46098 kmax = 3
46099 DO i = 1, imax
46100 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
46101 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
46102 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
46103 END DO
46104 buffer2 = 0.0_dp
46105 imax = 3*15*6
46106 kmax = 15
46107 DO i = 1, imax
46108 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
46109 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
46110 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
46111 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
46112 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
46113 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
46114 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
46115 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
46116 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
46117 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
46118 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
46119 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
46120 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
46121 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
46122 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
46123 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
46124 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
46125 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
46126 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
46127 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
46128 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
46129 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
46130 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
46131 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
46132 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
46133 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
46134 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
46135 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
46136 END DO
46137 buffer1 = 0.0_dp
46138 imax = 3*9*6
46139 kmax = 15
46140 DO i = 1, imax
46141 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
46142 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
46143 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
46144 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
46145 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
46146 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
46147 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
46148 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
46149 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
46150 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
46151 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
46152 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
46153 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
46154 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
46155 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
46156 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
46157 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
46158 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
46159 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
46160 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
46161 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
46162 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
46163 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
46164 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
46165 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
46166 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
46167 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
46168 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
46169 END DO
46170 imax = 3*9*9
46171 kmax = 6
46172 i = 0
46173 DO i1 = 1, 9
46174 DO i2 = 1, 9
46175 DO i3 = 1, 3
46176 i = i + 1
46177 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
46178 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
46179 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
46180 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
46181 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
46182 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
46183 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
46184 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
46185 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
46186 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
46187 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
46188 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
46189 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
46190 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
46191 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
46192 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
46193 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
46194 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
46195 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
46196 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
46197 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
46198 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
46199 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
46200 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
46201 END DO
46202 END DO
46203 END DO
46204 s_offset_d1 = s_offset_d1 + 5
46205 END DO
46206 s_offset_c1 = s_offset_c1 + 9
46207 END DO
46208 s_offset_b1 = s_offset_b1 + 9
46209 END DO
46210 s_offset_a1 = s_offset_a1 + 3
46211 END DO
46212 END SUBROUTINE contract_pggd
46213#endif
46214#if __MAX_CONTR > 4 || __MAX_CONTR == 4
46215! **************************************************************************************************
46216!> \brief ...
46217!> \param work ...
46218!> \param nl_a ...
46219!> \param nl_b ...
46220!> \param nl_c ...
46221!> \param nl_d ...
46222!> \param sphi_a ...
46223!> \param sphi_b ...
46224!> \param sphi_c ...
46225!> \param sphi_d ...
46226!> \param primitives ...
46227!> \param buffer1 ...
46228!> \param buffer2 ...
46229! **************************************************************************************************
46230 SUBROUTINE contract_pggf(work, &
46231 nl_a, nl_b, nl_c, nl_d, &
46232 sphi_a, sphi_b, sphi_c, sphi_d, &
46233 primitives, &
46234 buffer1, buffer2)
46235 REAL(dp), DIMENSION(3*15*15*10), INTENT(IN) :: work
46236 INTEGER :: nl_a, nl_b, nl_c, nl_d
46237 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
46238 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
46239 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
46240 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
46241 REAL(dp), &
46242 DIMENSION(3*nl_a, 9*nl_b, 9*nl_c, 7*nl_d) :: primitives
46243 REAL(dp), DIMENSION(3*15*15*10) :: buffer1, buffer2
46244
46245 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
46246 kmax, s_offset_a1, s_offset_b1, &
46247 s_offset_c1, s_offset_d1
46248
46249 s_offset_a1 = 0
46250 DO ia = 1, nl_a
46251 s_offset_b1 = 0
46252 DO ib = 1, nl_b
46253 s_offset_c1 = 0
46254 DO ic = 1, nl_c
46255 s_offset_d1 = 0
46256 DO id = 1, nl_d
46257 buffer1 = 0.0_dp
46258 imax = 15*15*10
46259 kmax = 3
46260 DO i = 1, imax
46261 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
46262 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
46263 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
46264 END DO
46265 buffer2 = 0.0_dp
46266 imax = 3*15*10
46267 kmax = 15
46268 DO i = 1, imax
46269 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
46270 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
46271 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
46272 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
46273 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
46274 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
46275 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
46276 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
46277 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
46278 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
46279 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
46280 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
46281 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
46282 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
46283 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
46284 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
46285 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
46286 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
46287 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
46288 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
46289 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
46290 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
46291 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
46292 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
46293 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
46294 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
46295 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
46296 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
46297 END DO
46298 buffer1 = 0.0_dp
46299 imax = 3*9*10
46300 kmax = 15
46301 DO i = 1, imax
46302 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
46303 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
46304 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
46305 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
46306 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
46307 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
46308 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
46309 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
46310 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
46311 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
46312 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
46313 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
46314 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
46315 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
46316 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
46317 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
46318 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
46319 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
46320 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
46321 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
46322 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
46323 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
46324 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
46325 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
46326 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
46327 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
46328 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
46329 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
46330 END DO
46331 imax = 3*9*9
46332 kmax = 10
46333 i = 0
46334 DO i1 = 1, 9
46335 DO i2 = 1, 9
46336 DO i3 = 1, 3
46337 i = i + 1
46338 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
46339 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
46340 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
46341 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
46342 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
46343 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
46344 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
46345 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
46346 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
46347 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
46348 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
46349 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
46350 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
46351 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
46352 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
46353 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
46354 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
46355 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
46356 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
46357 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
46358 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
46359 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
46360 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
46361 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
46362 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
46363 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
46364 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
46365 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
46366 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
46367 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
46368 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
46369 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
46370 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
46371 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
46372 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
46373 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
46374 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
46375 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
46376 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
46377 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
46378 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
46379 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
46380 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
46381 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
46382 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
46383 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
46384 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
46385 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
46386 END DO
46387 END DO
46388 END DO
46389 s_offset_d1 = s_offset_d1 + 7
46390 END DO
46391 s_offset_c1 = s_offset_c1 + 9
46392 END DO
46393 s_offset_b1 = s_offset_b1 + 9
46394 END DO
46395 s_offset_a1 = s_offset_a1 + 3
46396 END DO
46397 END SUBROUTINE contract_pggf
46398#endif
46399#if __MAX_CONTR > 4 || __MAX_CONTR == 4
46400! **************************************************************************************************
46401!> \brief ...
46402!> \param work ...
46403!> \param nl_a ...
46404!> \param nl_b ...
46405!> \param nl_c ...
46406!> \param nl_d ...
46407!> \param sphi_a ...
46408!> \param sphi_b ...
46409!> \param sphi_c ...
46410!> \param sphi_d ...
46411!> \param primitives ...
46412!> \param buffer1 ...
46413!> \param buffer2 ...
46414! **************************************************************************************************
46415 SUBROUTINE contract_pggg(work, &
46416 nl_a, nl_b, nl_c, nl_d, &
46417 sphi_a, sphi_b, sphi_c, sphi_d, &
46418 primitives, &
46419 buffer1, buffer2)
46420 REAL(dp), DIMENSION(3*15*15*15), INTENT(IN) :: work
46421 INTEGER :: nl_a, nl_b, nl_c, nl_d
46422 REAL(dp), DIMENSION(3, 3*nl_a), INTENT(IN) :: sphi_a
46423 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
46424 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
46425 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
46426 REAL(dp), &
46427 DIMENSION(3*nl_a, 9*nl_b, 9*nl_c, 9*nl_d) :: primitives
46428 REAL(dp), DIMENSION(3*15*15*15) :: buffer1, buffer2
46429
46430 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
46431 kmax, s_offset_a1, s_offset_b1, &
46432 s_offset_c1, s_offset_d1
46433
46434 s_offset_a1 = 0
46435 DO ia = 1, nl_a
46436 s_offset_b1 = 0
46437 DO ib = 1, nl_b
46438 s_offset_c1 = 0
46439 DO ic = 1, nl_c
46440 s_offset_d1 = 0
46441 DO id = 1, nl_d
46442 buffer1 = 0.0_dp
46443 imax = 15*15*15
46444 kmax = 3
46445 DO i = 1, imax
46446 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
46447 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
46448 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
46449 END DO
46450 buffer2 = 0.0_dp
46451 imax = 3*15*15
46452 kmax = 15
46453 DO i = 1, imax
46454 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
46455 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
46456 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
46457 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
46458 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
46459 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
46460 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
46461 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
46462 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
46463 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
46464 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
46465 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
46466 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
46467 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
46468 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
46469 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
46470 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
46471 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
46472 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
46473 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
46474 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
46475 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
46476 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
46477 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
46478 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
46479 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
46480 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
46481 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
46482 END DO
46483 buffer1 = 0.0_dp
46484 imax = 3*9*15
46485 kmax = 15
46486 DO i = 1, imax
46487 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
46488 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
46489 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
46490 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
46491 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
46492 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
46493 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
46494 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
46495 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
46496 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
46497 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
46498 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
46499 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
46500 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
46501 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
46502 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
46503 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
46504 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
46505 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
46506 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
46507 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
46508 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
46509 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
46510 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
46511 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
46512 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
46513 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
46514 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
46515 END DO
46516 imax = 3*9*9
46517 kmax = 15
46518 i = 0
46519 DO i1 = 1, 9
46520 DO i2 = 1, 9
46521 DO i3 = 1, 3
46522 i = i + 1
46523 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
46524 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
46525 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
46526 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
46527 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
46528 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
46529 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
46530 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
46531 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
46532 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
46533 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
46534 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
46535 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
46536 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
46537 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
46538 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
46539 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
46540 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
46541 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
46542 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
46543 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
46544 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
46545 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
46546 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
46547 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
46548 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
46549 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
46550 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
46551 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
46552 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
46553 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
46554 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
46555 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
46556 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
46557 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
46558 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
46559 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
46560 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
46561 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
46562 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
46563 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
46564 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
46565 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
46566 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
46567 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
46568 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
46569 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
46570 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
46571 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
46572 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
46573 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
46574 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
46575 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
46576 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
46577 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
46578 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
46579 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
46580 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
46581 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
46582 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
46583 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
46584 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
46585 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
46586 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
46587 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
46588 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
46589 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
46590 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
46591 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
46592 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
46593 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
46594 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
46595 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
46596 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
46597 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
46598 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
46599 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
46600 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
46601 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
46602 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
46603 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
46604 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
46605 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
46606 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
46607 END DO
46608 END DO
46609 END DO
46610 s_offset_d1 = s_offset_d1 + 9
46611 END DO
46612 s_offset_c1 = s_offset_c1 + 9
46613 END DO
46614 s_offset_b1 = s_offset_b1 + 9
46615 END DO
46616 s_offset_a1 = s_offset_a1 + 3
46617 END DO
46618 END SUBROUTINE contract_pggg
46619#endif
46620#if __MAX_CONTR > 2 || __MAX_CONTR == 2
46621! **************************************************************************************************
46622!> \brief ...
46623!> \param work ...
46624!> \param nl_a ...
46625!> \param nl_b ...
46626!> \param nl_c ...
46627!> \param nl_d ...
46628!> \param sphi_a ...
46629!> \param sphi_b ...
46630!> \param sphi_c ...
46631!> \param sphi_d ...
46632!> \param primitives ...
46633!> \param buffer1 ...
46634!> \param buffer2 ...
46635! **************************************************************************************************
46636 SUBROUTINE contract_dsss(work, &
46637 nl_a, nl_b, nl_c, nl_d, &
46638 sphi_a, sphi_b, sphi_c, sphi_d, &
46639 primitives, &
46640 buffer1, buffer2)
46641 REAL(dp), DIMENSION(6*1*1*1), INTENT(IN) :: work
46642 INTEGER :: nl_a, nl_b, nl_c, nl_d
46643 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
46644 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
46645 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
46646 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
46647 REAL(dp), &
46648 DIMENSION(5*nl_a, 1*nl_b, 1*nl_c, 1*nl_d) :: primitives
46649 REAL(dp), DIMENSION(6*1*1*1) :: buffer1, buffer2
46650
46651 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
46652 kmax, s_offset_a1, s_offset_b1, &
46653 s_offset_c1, s_offset_d1
46654
46655 s_offset_a1 = 0
46656 DO ia = 1, nl_a
46657 s_offset_b1 = 0
46658 DO ib = 1, nl_b
46659 s_offset_c1 = 0
46660 DO ic = 1, nl_c
46661 s_offset_d1 = 0
46662 DO id = 1, nl_d
46663 buffer1 = 0.0_dp
46664 imax = 1*1*1
46665 kmax = 6
46666 DO i = 1, imax
46667 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
46668 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
46669 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
46670 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
46671 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
46672 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
46673 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
46674 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
46675 END DO
46676 buffer2 = 0.0_dp
46677 imax = 5*1*1
46678 kmax = 1
46679 DO i = 1, imax
46680 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
46681 END DO
46682 buffer1 = 0.0_dp
46683 imax = 5*1*1
46684 kmax = 1
46685 DO i = 1, imax
46686 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
46687 END DO
46688 imax = 5*1*1
46689 kmax = 1
46690 i = 0
46691 DO i1 = 1, 1
46692 DO i2 = 1, 1
46693 DO i3 = 1, 5
46694 i = i + 1
46695 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
46696 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
46697 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
46698 END DO
46699 END DO
46700 END DO
46701 s_offset_d1 = s_offset_d1 + 1
46702 END DO
46703 s_offset_c1 = s_offset_c1 + 1
46704 END DO
46705 s_offset_b1 = s_offset_b1 + 1
46706 END DO
46707 s_offset_a1 = s_offset_a1 + 5
46708 END DO
46709 END SUBROUTINE contract_dsss
46710#endif
46711#if __MAX_CONTR > 2 || __MAX_CONTR == 2
46712! **************************************************************************************************
46713!> \brief ...
46714!> \param work ...
46715!> \param nl_a ...
46716!> \param nl_b ...
46717!> \param nl_c ...
46718!> \param nl_d ...
46719!> \param sphi_a ...
46720!> \param sphi_b ...
46721!> \param sphi_c ...
46722!> \param sphi_d ...
46723!> \param primitives ...
46724!> \param buffer1 ...
46725!> \param buffer2 ...
46726! **************************************************************************************************
46727 SUBROUTINE contract_dssp(work, &
46728 nl_a, nl_b, nl_c, nl_d, &
46729 sphi_a, sphi_b, sphi_c, sphi_d, &
46730 primitives, &
46731 buffer1, buffer2)
46732 REAL(dp), DIMENSION(6*1*1*3), INTENT(IN) :: work
46733 INTEGER :: nl_a, nl_b, nl_c, nl_d
46734 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
46735 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
46736 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
46737 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
46738 REAL(dp), &
46739 DIMENSION(5*nl_a, 1*nl_b, 1*nl_c, 3*nl_d) :: primitives
46740 REAL(dp), DIMENSION(6*1*1*3) :: buffer1, buffer2
46741
46742 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
46743 kmax, s_offset_a1, s_offset_b1, &
46744 s_offset_c1, s_offset_d1
46745
46746 s_offset_a1 = 0
46747 DO ia = 1, nl_a
46748 s_offset_b1 = 0
46749 DO ib = 1, nl_b
46750 s_offset_c1 = 0
46751 DO ic = 1, nl_c
46752 s_offset_d1 = 0
46753 DO id = 1, nl_d
46754 buffer1 = 0.0_dp
46755 imax = 1*1*3
46756 kmax = 6
46757 DO i = 1, imax
46758 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
46759 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
46760 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
46761 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
46762 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
46763 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
46764 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
46765 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
46766 END DO
46767 buffer2 = 0.0_dp
46768 imax = 5*1*3
46769 kmax = 1
46770 DO i = 1, imax
46771 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
46772 END DO
46773 buffer1 = 0.0_dp
46774 imax = 5*1*3
46775 kmax = 1
46776 DO i = 1, imax
46777 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
46778 END DO
46779 imax = 5*1*1
46780 kmax = 3
46781 i = 0
46782 DO i1 = 1, 1
46783 DO i2 = 1, 1
46784 DO i3 = 1, 5
46785 i = i + 1
46786 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
46787 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
46788 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
46789 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
46790 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
46791 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
46792 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
46793 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
46794 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
46795 END DO
46796 END DO
46797 END DO
46798 s_offset_d1 = s_offset_d1 + 3
46799 END DO
46800 s_offset_c1 = s_offset_c1 + 1
46801 END DO
46802 s_offset_b1 = s_offset_b1 + 1
46803 END DO
46804 s_offset_a1 = s_offset_a1 + 5
46805 END DO
46806 END SUBROUTINE contract_dssp
46807#endif
46808#if __MAX_CONTR > 2 || __MAX_CONTR == 2
46809! **************************************************************************************************
46810!> \brief ...
46811!> \param work ...
46812!> \param nl_a ...
46813!> \param nl_b ...
46814!> \param nl_c ...
46815!> \param nl_d ...
46816!> \param sphi_a ...
46817!> \param sphi_b ...
46818!> \param sphi_c ...
46819!> \param sphi_d ...
46820!> \param primitives ...
46821!> \param buffer1 ...
46822!> \param buffer2 ...
46823! **************************************************************************************************
46824 SUBROUTINE contract_dssd(work, &
46825 nl_a, nl_b, nl_c, nl_d, &
46826 sphi_a, sphi_b, sphi_c, sphi_d, &
46827 primitives, &
46828 buffer1, buffer2)
46829 REAL(dp), DIMENSION(6*1*1*6), INTENT(IN) :: work
46830 INTEGER :: nl_a, nl_b, nl_c, nl_d
46831 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
46832 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
46833 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
46834 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
46835 REAL(dp), &
46836 DIMENSION(5*nl_a, 1*nl_b, 1*nl_c, 5*nl_d) :: primitives
46837 REAL(dp), DIMENSION(6*1*1*6) :: buffer1, buffer2
46838
46839 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
46840 kmax, s_offset_a1, s_offset_b1, &
46841 s_offset_c1, s_offset_d1
46842
46843 s_offset_a1 = 0
46844 DO ia = 1, nl_a
46845 s_offset_b1 = 0
46846 DO ib = 1, nl_b
46847 s_offset_c1 = 0
46848 DO ic = 1, nl_c
46849 s_offset_d1 = 0
46850 DO id = 1, nl_d
46851 buffer1 = 0.0_dp
46852 imax = 1*1*6
46853 kmax = 6
46854 DO i = 1, imax
46855 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
46856 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
46857 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
46858 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
46859 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
46860 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
46861 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
46862 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
46863 END DO
46864 buffer2 = 0.0_dp
46865 imax = 5*1*6
46866 kmax = 1
46867 DO i = 1, imax
46868 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
46869 END DO
46870 buffer1 = 0.0_dp
46871 imax = 5*1*6
46872 kmax = 1
46873 DO i = 1, imax
46874 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
46875 END DO
46876 imax = 5*1*1
46877 kmax = 6
46878 i = 0
46879 DO i1 = 1, 1
46880 DO i2 = 1, 1
46881 DO i3 = 1, 5
46882 i = i + 1
46883 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
46884 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
46885 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
46886 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
46887 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
46888 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
46889 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
46890 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
46891 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
46892 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
46893 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
46894 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
46895 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
46896 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
46897 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
46898 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
46899 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
46900 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
46901 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
46902 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
46903 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
46904 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
46905 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
46906 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
46907 END DO
46908 END DO
46909 END DO
46910 s_offset_d1 = s_offset_d1 + 5
46911 END DO
46912 s_offset_c1 = s_offset_c1 + 1
46913 END DO
46914 s_offset_b1 = s_offset_b1 + 1
46915 END DO
46916 s_offset_a1 = s_offset_a1 + 5
46917 END DO
46918 END SUBROUTINE contract_dssd
46919#endif
46920#if __MAX_CONTR > 3 || __MAX_CONTR == 3
46921! **************************************************************************************************
46922!> \brief ...
46923!> \param work ...
46924!> \param nl_a ...
46925!> \param nl_b ...
46926!> \param nl_c ...
46927!> \param nl_d ...
46928!> \param sphi_a ...
46929!> \param sphi_b ...
46930!> \param sphi_c ...
46931!> \param sphi_d ...
46932!> \param primitives ...
46933!> \param buffer1 ...
46934!> \param buffer2 ...
46935! **************************************************************************************************
46936 SUBROUTINE contract_dssf(work, &
46937 nl_a, nl_b, nl_c, nl_d, &
46938 sphi_a, sphi_b, sphi_c, sphi_d, &
46939 primitives, &
46940 buffer1, buffer2)
46941 REAL(dp), DIMENSION(6*1*1*10), INTENT(IN) :: work
46942 INTEGER :: nl_a, nl_b, nl_c, nl_d
46943 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
46944 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
46945 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
46946 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
46947 REAL(dp), &
46948 DIMENSION(5*nl_a, 1*nl_b, 1*nl_c, 7*nl_d) :: primitives
46949 REAL(dp), DIMENSION(6*1*1*10) :: buffer1, buffer2
46950
46951 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
46952 kmax, s_offset_a1, s_offset_b1, &
46953 s_offset_c1, s_offset_d1
46954
46955 s_offset_a1 = 0
46956 DO ia = 1, nl_a
46957 s_offset_b1 = 0
46958 DO ib = 1, nl_b
46959 s_offset_c1 = 0
46960 DO ic = 1, nl_c
46961 s_offset_d1 = 0
46962 DO id = 1, nl_d
46963 buffer1 = 0.0_dp
46964 imax = 1*1*10
46965 kmax = 6
46966 DO i = 1, imax
46967 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
46968 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
46969 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
46970 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
46971 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
46972 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
46973 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
46974 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
46975 END DO
46976 buffer2 = 0.0_dp
46977 imax = 5*1*10
46978 kmax = 1
46979 DO i = 1, imax
46980 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
46981 END DO
46982 buffer1 = 0.0_dp
46983 imax = 5*1*10
46984 kmax = 1
46985 DO i = 1, imax
46986 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
46987 END DO
46988 imax = 5*1*1
46989 kmax = 10
46990 i = 0
46991 DO i1 = 1, 1
46992 DO i2 = 1, 1
46993 DO i3 = 1, 5
46994 i = i + 1
46995 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
46996 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
46997 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
46998 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
46999 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
47000 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
47001 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
47002 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
47003 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
47004 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
47005 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
47006 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
47007 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
47008 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
47009 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
47010 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
47011 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
47012 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
47013 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
47014 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
47015 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
47016 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
47017 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
47018 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
47019 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
47020 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
47021 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
47022 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
47023 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
47024 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
47025 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
47026 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
47027 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
47028 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
47029 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
47030 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
47031 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
47032 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
47033 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
47034 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
47035 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
47036 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
47037 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
47038 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
47039 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
47040 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
47041 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
47042 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
47043 END DO
47044 END DO
47045 END DO
47046 s_offset_d1 = s_offset_d1 + 7
47047 END DO
47048 s_offset_c1 = s_offset_c1 + 1
47049 END DO
47050 s_offset_b1 = s_offset_b1 + 1
47051 END DO
47052 s_offset_a1 = s_offset_a1 + 5
47053 END DO
47054 END SUBROUTINE contract_dssf
47055#endif
47056#if __MAX_CONTR > 4 || __MAX_CONTR == 4
47057! **************************************************************************************************
47058!> \brief ...
47059!> \param work ...
47060!> \param nl_a ...
47061!> \param nl_b ...
47062!> \param nl_c ...
47063!> \param nl_d ...
47064!> \param sphi_a ...
47065!> \param sphi_b ...
47066!> \param sphi_c ...
47067!> \param sphi_d ...
47068!> \param primitives ...
47069!> \param buffer1 ...
47070!> \param buffer2 ...
47071! **************************************************************************************************
47072 SUBROUTINE contract_dssg(work, &
47073 nl_a, nl_b, nl_c, nl_d, &
47074 sphi_a, sphi_b, sphi_c, sphi_d, &
47075 primitives, &
47076 buffer1, buffer2)
47077 REAL(dp), DIMENSION(6*1*1*15), INTENT(IN) :: work
47078 INTEGER :: nl_a, nl_b, nl_c, nl_d
47079 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
47080 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
47081 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
47082 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
47083 REAL(dp), &
47084 DIMENSION(5*nl_a, 1*nl_b, 1*nl_c, 9*nl_d) :: primitives
47085 REAL(dp), DIMENSION(6*1*1*15) :: buffer1, buffer2
47086
47087 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
47088 kmax, s_offset_a1, s_offset_b1, &
47089 s_offset_c1, s_offset_d1
47090
47091 s_offset_a1 = 0
47092 DO ia = 1, nl_a
47093 s_offset_b1 = 0
47094 DO ib = 1, nl_b
47095 s_offset_c1 = 0
47096 DO ic = 1, nl_c
47097 s_offset_d1 = 0
47098 DO id = 1, nl_d
47099 buffer1 = 0.0_dp
47100 imax = 1*1*15
47101 kmax = 6
47102 DO i = 1, imax
47103 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
47104 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
47105 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
47106 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
47107 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
47108 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
47109 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
47110 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
47111 END DO
47112 buffer2 = 0.0_dp
47113 imax = 5*1*15
47114 kmax = 1
47115 DO i = 1, imax
47116 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
47117 END DO
47118 buffer1 = 0.0_dp
47119 imax = 5*1*15
47120 kmax = 1
47121 DO i = 1, imax
47122 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
47123 END DO
47124 imax = 5*1*1
47125 kmax = 15
47126 i = 0
47127 DO i1 = 1, 1
47128 DO i2 = 1, 1
47129 DO i3 = 1, 5
47130 i = i + 1
47131 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
47132 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
47133 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
47134 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
47135 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
47136 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
47137 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
47138 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
47139 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
47140 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
47141 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
47142 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
47143 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
47144 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
47145 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
47146 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
47147 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
47148 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
47149 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
47150 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
47151 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
47152 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
47153 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
47154 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
47155 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
47156 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
47157 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
47158 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
47159 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
47160 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
47161 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
47162 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
47163 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
47164 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
47165 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
47166 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
47167 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
47168 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
47169 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
47170 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
47171 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
47172 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
47173 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
47174 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
47175 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
47176 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
47177 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
47178 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
47179 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
47180 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
47181 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
47182 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
47183 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
47184 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
47185 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
47186 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
47187 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
47188 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
47189 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
47190 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
47191 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
47192 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
47193 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
47194 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
47195 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
47196 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
47197 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
47198 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
47199 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
47200 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
47201 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
47202 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
47203 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
47204 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
47205 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
47206 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
47207 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
47208 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
47209 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
47210 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
47211 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
47212 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
47213 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
47214 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
47215 END DO
47216 END DO
47217 END DO
47218 s_offset_d1 = s_offset_d1 + 9
47219 END DO
47220 s_offset_c1 = s_offset_c1 + 1
47221 END DO
47222 s_offset_b1 = s_offset_b1 + 1
47223 END DO
47224 s_offset_a1 = s_offset_a1 + 5
47225 END DO
47226 END SUBROUTINE contract_dssg
47227#endif
47228#if __MAX_CONTR > 2 || __MAX_CONTR == 2
47229! **************************************************************************************************
47230!> \brief ...
47231!> \param work ...
47232!> \param nl_a ...
47233!> \param nl_b ...
47234!> \param nl_c ...
47235!> \param nl_d ...
47236!> \param sphi_a ...
47237!> \param sphi_b ...
47238!> \param sphi_c ...
47239!> \param sphi_d ...
47240!> \param primitives ...
47241!> \param buffer1 ...
47242!> \param buffer2 ...
47243! **************************************************************************************************
47244 SUBROUTINE contract_dsps(work, &
47245 nl_a, nl_b, nl_c, nl_d, &
47246 sphi_a, sphi_b, sphi_c, sphi_d, &
47247 primitives, &
47248 buffer1, buffer2)
47249 REAL(dp), DIMENSION(6*1*3*1), INTENT(IN) :: work
47250 INTEGER :: nl_a, nl_b, nl_c, nl_d
47251 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
47252 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
47253 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
47254 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
47255 REAL(dp), &
47256 DIMENSION(5*nl_a, 1*nl_b, 3*nl_c, 1*nl_d) :: primitives
47257 REAL(dp), DIMENSION(6*1*3*1) :: buffer1, buffer2
47258
47259 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
47260 kmax, s_offset_a1, s_offset_b1, &
47261 s_offset_c1, s_offset_d1
47262
47263 s_offset_a1 = 0
47264 DO ia = 1, nl_a
47265 s_offset_b1 = 0
47266 DO ib = 1, nl_b
47267 s_offset_c1 = 0
47268 DO ic = 1, nl_c
47269 s_offset_d1 = 0
47270 DO id = 1, nl_d
47271 buffer1 = 0.0_dp
47272 imax = 1*3*1
47273 kmax = 6
47274 DO i = 1, imax
47275 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
47276 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
47277 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
47278 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
47279 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
47280 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
47281 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
47282 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
47283 END DO
47284 buffer2 = 0.0_dp
47285 imax = 5*3*1
47286 kmax = 1
47287 DO i = 1, imax
47288 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
47289 END DO
47290 buffer1 = 0.0_dp
47291 imax = 5*1*1
47292 kmax = 3
47293 DO i = 1, imax
47294 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
47295 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
47296 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
47297 END DO
47298 imax = 5*1*3
47299 kmax = 1
47300 i = 0
47301 DO i1 = 1, 3
47302 DO i2 = 1, 1
47303 DO i3 = 1, 5
47304 i = i + 1
47305 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
47306 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
47307 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
47308 END DO
47309 END DO
47310 END DO
47311 s_offset_d1 = s_offset_d1 + 1
47312 END DO
47313 s_offset_c1 = s_offset_c1 + 3
47314 END DO
47315 s_offset_b1 = s_offset_b1 + 1
47316 END DO
47317 s_offset_a1 = s_offset_a1 + 5
47318 END DO
47319 END SUBROUTINE contract_dsps
47320#endif
47321#if __MAX_CONTR > 2 || __MAX_CONTR == 2
47322! **************************************************************************************************
47323!> \brief ...
47324!> \param work ...
47325!> \param nl_a ...
47326!> \param nl_b ...
47327!> \param nl_c ...
47328!> \param nl_d ...
47329!> \param sphi_a ...
47330!> \param sphi_b ...
47331!> \param sphi_c ...
47332!> \param sphi_d ...
47333!> \param primitives ...
47334!> \param buffer1 ...
47335!> \param buffer2 ...
47336! **************************************************************************************************
47337 SUBROUTINE contract_dspp(work, &
47338 nl_a, nl_b, nl_c, nl_d, &
47339 sphi_a, sphi_b, sphi_c, sphi_d, &
47340 primitives, &
47341 buffer1, buffer2)
47342 REAL(dp), DIMENSION(6*1*3*3), INTENT(IN) :: work
47343 INTEGER :: nl_a, nl_b, nl_c, nl_d
47344 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
47345 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
47346 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
47347 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
47348 REAL(dp), &
47349 DIMENSION(5*nl_a, 1*nl_b, 3*nl_c, 3*nl_d) :: primitives
47350 REAL(dp), DIMENSION(6*1*3*3) :: buffer1, buffer2
47351
47352 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
47353 kmax, s_offset_a1, s_offset_b1, &
47354 s_offset_c1, s_offset_d1
47355
47356 s_offset_a1 = 0
47357 DO ia = 1, nl_a
47358 s_offset_b1 = 0
47359 DO ib = 1, nl_b
47360 s_offset_c1 = 0
47361 DO ic = 1, nl_c
47362 s_offset_d1 = 0
47363 DO id = 1, nl_d
47364 buffer1 = 0.0_dp
47365 imax = 1*3*3
47366 kmax = 6
47367 DO i = 1, imax
47368 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
47369 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
47370 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
47371 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
47372 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
47373 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
47374 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
47375 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
47376 END DO
47377 buffer2 = 0.0_dp
47378 imax = 5*3*3
47379 kmax = 1
47380 DO i = 1, imax
47381 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
47382 END DO
47383 buffer1 = 0.0_dp
47384 imax = 5*1*3
47385 kmax = 3
47386 DO i = 1, imax
47387 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
47388 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
47389 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
47390 END DO
47391 imax = 5*1*3
47392 kmax = 3
47393 i = 0
47394 DO i1 = 1, 3
47395 DO i2 = 1, 1
47396 DO i3 = 1, 5
47397 i = i + 1
47398 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
47399 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
47400 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
47401 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
47402 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
47403 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
47404 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
47405 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
47406 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
47407 END DO
47408 END DO
47409 END DO
47410 s_offset_d1 = s_offset_d1 + 3
47411 END DO
47412 s_offset_c1 = s_offset_c1 + 3
47413 END DO
47414 s_offset_b1 = s_offset_b1 + 1
47415 END DO
47416 s_offset_a1 = s_offset_a1 + 5
47417 END DO
47418 END SUBROUTINE contract_dspp
47419#endif
47420#if __MAX_CONTR > 2 || __MAX_CONTR == 2
47421! **************************************************************************************************
47422!> \brief ...
47423!> \param work ...
47424!> \param nl_a ...
47425!> \param nl_b ...
47426!> \param nl_c ...
47427!> \param nl_d ...
47428!> \param sphi_a ...
47429!> \param sphi_b ...
47430!> \param sphi_c ...
47431!> \param sphi_d ...
47432!> \param primitives ...
47433!> \param buffer1 ...
47434!> \param buffer2 ...
47435! **************************************************************************************************
47436 SUBROUTINE contract_dspd(work, &
47437 nl_a, nl_b, nl_c, nl_d, &
47438 sphi_a, sphi_b, sphi_c, sphi_d, &
47439 primitives, &
47440 buffer1, buffer2)
47441 REAL(dp), DIMENSION(6*1*3*6), INTENT(IN) :: work
47442 INTEGER :: nl_a, nl_b, nl_c, nl_d
47443 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
47444 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
47445 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
47446 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
47447 REAL(dp), &
47448 DIMENSION(5*nl_a, 1*nl_b, 3*nl_c, 5*nl_d) :: primitives
47449 REAL(dp), DIMENSION(6*1*3*6) :: buffer1, buffer2
47450
47451 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
47452 kmax, s_offset_a1, s_offset_b1, &
47453 s_offset_c1, s_offset_d1
47454
47455 s_offset_a1 = 0
47456 DO ia = 1, nl_a
47457 s_offset_b1 = 0
47458 DO ib = 1, nl_b
47459 s_offset_c1 = 0
47460 DO ic = 1, nl_c
47461 s_offset_d1 = 0
47462 DO id = 1, nl_d
47463 buffer1 = 0.0_dp
47464 imax = 1*3*6
47465 kmax = 6
47466 DO i = 1, imax
47467 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
47468 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
47469 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
47470 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
47471 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
47472 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
47473 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
47474 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
47475 END DO
47476 buffer2 = 0.0_dp
47477 imax = 5*3*6
47478 kmax = 1
47479 DO i = 1, imax
47480 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
47481 END DO
47482 buffer1 = 0.0_dp
47483 imax = 5*1*6
47484 kmax = 3
47485 DO i = 1, imax
47486 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
47487 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
47488 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
47489 END DO
47490 imax = 5*1*3
47491 kmax = 6
47492 i = 0
47493 DO i1 = 1, 3
47494 DO i2 = 1, 1
47495 DO i3 = 1, 5
47496 i = i + 1
47497 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
47498 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
47499 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
47500 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
47501 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
47502 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
47503 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
47504 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
47505 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
47506 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
47507 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
47508 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
47509 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
47510 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
47511 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
47512 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
47513 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
47514 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
47515 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
47516 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
47517 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
47518 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
47519 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
47520 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
47521 END DO
47522 END DO
47523 END DO
47524 s_offset_d1 = s_offset_d1 + 5
47525 END DO
47526 s_offset_c1 = s_offset_c1 + 3
47527 END DO
47528 s_offset_b1 = s_offset_b1 + 1
47529 END DO
47530 s_offset_a1 = s_offset_a1 + 5
47531 END DO
47532 END SUBROUTINE contract_dspd
47533#endif
47534#if __MAX_CONTR > 3 || __MAX_CONTR == 3
47535! **************************************************************************************************
47536!> \brief ...
47537!> \param work ...
47538!> \param nl_a ...
47539!> \param nl_b ...
47540!> \param nl_c ...
47541!> \param nl_d ...
47542!> \param sphi_a ...
47543!> \param sphi_b ...
47544!> \param sphi_c ...
47545!> \param sphi_d ...
47546!> \param primitives ...
47547!> \param buffer1 ...
47548!> \param buffer2 ...
47549! **************************************************************************************************
47550 SUBROUTINE contract_dspf(work, &
47551 nl_a, nl_b, nl_c, nl_d, &
47552 sphi_a, sphi_b, sphi_c, sphi_d, &
47553 primitives, &
47554 buffer1, buffer2)
47555 REAL(dp), DIMENSION(6*1*3*10), INTENT(IN) :: work
47556 INTEGER :: nl_a, nl_b, nl_c, nl_d
47557 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
47558 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
47559 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
47560 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
47561 REAL(dp), &
47562 DIMENSION(5*nl_a, 1*nl_b, 3*nl_c, 7*nl_d) :: primitives
47563 REAL(dp), DIMENSION(6*1*3*10) :: buffer1, buffer2
47564
47565 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
47566 kmax, s_offset_a1, s_offset_b1, &
47567 s_offset_c1, s_offset_d1
47568
47569 s_offset_a1 = 0
47570 DO ia = 1, nl_a
47571 s_offset_b1 = 0
47572 DO ib = 1, nl_b
47573 s_offset_c1 = 0
47574 DO ic = 1, nl_c
47575 s_offset_d1 = 0
47576 DO id = 1, nl_d
47577 buffer1 = 0.0_dp
47578 imax = 1*3*10
47579 kmax = 6
47580 DO i = 1, imax
47581 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
47582 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
47583 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
47584 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
47585 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
47586 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
47587 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
47588 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
47589 END DO
47590 buffer2 = 0.0_dp
47591 imax = 5*3*10
47592 kmax = 1
47593 DO i = 1, imax
47594 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
47595 END DO
47596 buffer1 = 0.0_dp
47597 imax = 5*1*10
47598 kmax = 3
47599 DO i = 1, imax
47600 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
47601 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
47602 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
47603 END DO
47604 imax = 5*1*3
47605 kmax = 10
47606 i = 0
47607 DO i1 = 1, 3
47608 DO i2 = 1, 1
47609 DO i3 = 1, 5
47610 i = i + 1
47611 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
47612 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
47613 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
47614 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
47615 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
47616 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
47617 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
47618 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
47619 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
47620 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
47621 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
47622 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
47623 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
47624 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
47625 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
47626 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
47627 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
47628 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
47629 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
47630 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
47631 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
47632 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
47633 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
47634 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
47635 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
47636 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
47637 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
47638 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
47639 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
47640 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
47641 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
47642 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
47643 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
47644 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
47645 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
47646 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
47647 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
47648 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
47649 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
47650 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
47651 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
47652 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
47653 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
47654 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
47655 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
47656 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
47657 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
47658 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
47659 END DO
47660 END DO
47661 END DO
47662 s_offset_d1 = s_offset_d1 + 7
47663 END DO
47664 s_offset_c1 = s_offset_c1 + 3
47665 END DO
47666 s_offset_b1 = s_offset_b1 + 1
47667 END DO
47668 s_offset_a1 = s_offset_a1 + 5
47669 END DO
47670 END SUBROUTINE contract_dspf
47671#endif
47672#if __MAX_CONTR > 4 || __MAX_CONTR == 4
47673! **************************************************************************************************
47674!> \brief ...
47675!> \param work ...
47676!> \param nl_a ...
47677!> \param nl_b ...
47678!> \param nl_c ...
47679!> \param nl_d ...
47680!> \param sphi_a ...
47681!> \param sphi_b ...
47682!> \param sphi_c ...
47683!> \param sphi_d ...
47684!> \param primitives ...
47685!> \param buffer1 ...
47686!> \param buffer2 ...
47687! **************************************************************************************************
47688 SUBROUTINE contract_dspg(work, &
47689 nl_a, nl_b, nl_c, nl_d, &
47690 sphi_a, sphi_b, sphi_c, sphi_d, &
47691 primitives, &
47692 buffer1, buffer2)
47693 REAL(dp), DIMENSION(6*1*3*15), INTENT(IN) :: work
47694 INTEGER :: nl_a, nl_b, nl_c, nl_d
47695 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
47696 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
47697 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
47698 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
47699 REAL(dp), &
47700 DIMENSION(5*nl_a, 1*nl_b, 3*nl_c, 9*nl_d) :: primitives
47701 REAL(dp), DIMENSION(6*1*3*15) :: buffer1, buffer2
47702
47703 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
47704 kmax, s_offset_a1, s_offset_b1, &
47705 s_offset_c1, s_offset_d1
47706
47707 s_offset_a1 = 0
47708 DO ia = 1, nl_a
47709 s_offset_b1 = 0
47710 DO ib = 1, nl_b
47711 s_offset_c1 = 0
47712 DO ic = 1, nl_c
47713 s_offset_d1 = 0
47714 DO id = 1, nl_d
47715 buffer1 = 0.0_dp
47716 imax = 1*3*15
47717 kmax = 6
47718 DO i = 1, imax
47719 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
47720 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
47721 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
47722 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
47723 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
47724 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
47725 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
47726 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
47727 END DO
47728 buffer2 = 0.0_dp
47729 imax = 5*3*15
47730 kmax = 1
47731 DO i = 1, imax
47732 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
47733 END DO
47734 buffer1 = 0.0_dp
47735 imax = 5*1*15
47736 kmax = 3
47737 DO i = 1, imax
47738 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
47739 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
47740 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
47741 END DO
47742 imax = 5*1*3
47743 kmax = 15
47744 i = 0
47745 DO i1 = 1, 3
47746 DO i2 = 1, 1
47747 DO i3 = 1, 5
47748 i = i + 1
47749 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
47750 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
47751 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
47752 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
47753 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
47754 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
47755 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
47756 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
47757 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
47758 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
47759 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
47760 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
47761 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
47762 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
47763 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
47764 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
47765 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
47766 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
47767 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
47768 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
47769 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
47770 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
47771 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
47772 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
47773 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
47774 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
47775 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
47776 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
47777 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
47778 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
47779 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
47780 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
47781 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
47782 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
47783 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
47784 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
47785 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
47786 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
47787 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
47788 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
47789 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
47790 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
47791 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
47792 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
47793 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
47794 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
47795 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
47796 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
47797 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
47798 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
47799 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
47800 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
47801 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
47802 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
47803 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
47804 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
47805 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
47806 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
47807 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
47808 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
47809 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
47810 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
47811 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
47812 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
47813 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
47814 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
47815 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
47816 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
47817 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
47818 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
47819 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
47820 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
47821 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
47822 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
47823 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
47824 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
47825 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
47826 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
47827 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
47828 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
47829 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
47830 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
47831 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
47832 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
47833 END DO
47834 END DO
47835 END DO
47836 s_offset_d1 = s_offset_d1 + 9
47837 END DO
47838 s_offset_c1 = s_offset_c1 + 3
47839 END DO
47840 s_offset_b1 = s_offset_b1 + 1
47841 END DO
47842 s_offset_a1 = s_offset_a1 + 5
47843 END DO
47844 END SUBROUTINE contract_dspg
47845#endif
47846#if __MAX_CONTR > 2 || __MAX_CONTR == 2
47847! **************************************************************************************************
47848!> \brief ...
47849!> \param work ...
47850!> \param nl_a ...
47851!> \param nl_b ...
47852!> \param nl_c ...
47853!> \param nl_d ...
47854!> \param sphi_a ...
47855!> \param sphi_b ...
47856!> \param sphi_c ...
47857!> \param sphi_d ...
47858!> \param primitives ...
47859!> \param buffer1 ...
47860!> \param buffer2 ...
47861! **************************************************************************************************
47862 SUBROUTINE contract_dsds(work, &
47863 nl_a, nl_b, nl_c, nl_d, &
47864 sphi_a, sphi_b, sphi_c, sphi_d, &
47865 primitives, &
47866 buffer1, buffer2)
47867 REAL(dp), DIMENSION(6*1*6*1), INTENT(IN) :: work
47868 INTEGER :: nl_a, nl_b, nl_c, nl_d
47869 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
47870 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
47871 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
47872 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
47873 REAL(dp), &
47874 DIMENSION(5*nl_a, 1*nl_b, 5*nl_c, 1*nl_d) :: primitives
47875 REAL(dp), DIMENSION(6*1*6*1) :: buffer1, buffer2
47876
47877 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
47878 kmax, s_offset_a1, s_offset_b1, &
47879 s_offset_c1, s_offset_d1
47880
47881 s_offset_a1 = 0
47882 DO ia = 1, nl_a
47883 s_offset_b1 = 0
47884 DO ib = 1, nl_b
47885 s_offset_c1 = 0
47886 DO ic = 1, nl_c
47887 s_offset_d1 = 0
47888 DO id = 1, nl_d
47889 buffer1 = 0.0_dp
47890 imax = 1*6*1
47891 kmax = 6
47892 DO i = 1, imax
47893 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
47894 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
47895 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
47896 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
47897 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
47898 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
47899 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
47900 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
47901 END DO
47902 buffer2 = 0.0_dp
47903 imax = 5*6*1
47904 kmax = 1
47905 DO i = 1, imax
47906 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
47907 END DO
47908 buffer1 = 0.0_dp
47909 imax = 5*1*1
47910 kmax = 6
47911 DO i = 1, imax
47912 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
47913 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
47914 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
47915 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
47916 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
47917 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
47918 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
47919 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
47920 END DO
47921 imax = 5*1*5
47922 kmax = 1
47923 i = 0
47924 DO i1 = 1, 5
47925 DO i2 = 1, 1
47926 DO i3 = 1, 5
47927 i = i + 1
47928 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
47929 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
47930 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
47931 END DO
47932 END DO
47933 END DO
47934 s_offset_d1 = s_offset_d1 + 1
47935 END DO
47936 s_offset_c1 = s_offset_c1 + 5
47937 END DO
47938 s_offset_b1 = s_offset_b1 + 1
47939 END DO
47940 s_offset_a1 = s_offset_a1 + 5
47941 END DO
47942 END SUBROUTINE contract_dsds
47943#endif
47944#if __MAX_CONTR > 2 || __MAX_CONTR == 2
47945! **************************************************************************************************
47946!> \brief ...
47947!> \param work ...
47948!> \param nl_a ...
47949!> \param nl_b ...
47950!> \param nl_c ...
47951!> \param nl_d ...
47952!> \param sphi_a ...
47953!> \param sphi_b ...
47954!> \param sphi_c ...
47955!> \param sphi_d ...
47956!> \param primitives ...
47957!> \param buffer1 ...
47958!> \param buffer2 ...
47959! **************************************************************************************************
47960 SUBROUTINE contract_dsdp(work, &
47961 nl_a, nl_b, nl_c, nl_d, &
47962 sphi_a, sphi_b, sphi_c, sphi_d, &
47963 primitives, &
47964 buffer1, buffer2)
47965 REAL(dp), DIMENSION(6*1*6*3), INTENT(IN) :: work
47966 INTEGER :: nl_a, nl_b, nl_c, nl_d
47967 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
47968 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
47969 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
47970 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
47971 REAL(dp), &
47972 DIMENSION(5*nl_a, 1*nl_b, 5*nl_c, 3*nl_d) :: primitives
47973 REAL(dp), DIMENSION(6*1*6*3) :: buffer1, buffer2
47974
47975 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
47976 kmax, s_offset_a1, s_offset_b1, &
47977 s_offset_c1, s_offset_d1
47978
47979 s_offset_a1 = 0
47980 DO ia = 1, nl_a
47981 s_offset_b1 = 0
47982 DO ib = 1, nl_b
47983 s_offset_c1 = 0
47984 DO ic = 1, nl_c
47985 s_offset_d1 = 0
47986 DO id = 1, nl_d
47987 buffer1 = 0.0_dp
47988 imax = 1*6*3
47989 kmax = 6
47990 DO i = 1, imax
47991 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
47992 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
47993 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
47994 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
47995 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
47996 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
47997 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
47998 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
47999 END DO
48000 buffer2 = 0.0_dp
48001 imax = 5*6*3
48002 kmax = 1
48003 DO i = 1, imax
48004 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
48005 END DO
48006 buffer1 = 0.0_dp
48007 imax = 5*1*3
48008 kmax = 6
48009 DO i = 1, imax
48010 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
48011 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
48012 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
48013 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
48014 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
48015 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
48016 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
48017 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
48018 END DO
48019 imax = 5*1*5
48020 kmax = 3
48021 i = 0
48022 DO i1 = 1, 5
48023 DO i2 = 1, 1
48024 DO i3 = 1, 5
48025 i = i + 1
48026 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
48027 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
48028 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
48029 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
48030 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
48031 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
48032 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
48033 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
48034 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
48035 END DO
48036 END DO
48037 END DO
48038 s_offset_d1 = s_offset_d1 + 3
48039 END DO
48040 s_offset_c1 = s_offset_c1 + 5
48041 END DO
48042 s_offset_b1 = s_offset_b1 + 1
48043 END DO
48044 s_offset_a1 = s_offset_a1 + 5
48045 END DO
48046 END SUBROUTINE contract_dsdp
48047#endif
48048#if __MAX_CONTR > 2 || __MAX_CONTR == 2
48049! **************************************************************************************************
48050!> \brief ...
48051!> \param work ...
48052!> \param nl_a ...
48053!> \param nl_b ...
48054!> \param nl_c ...
48055!> \param nl_d ...
48056!> \param sphi_a ...
48057!> \param sphi_b ...
48058!> \param sphi_c ...
48059!> \param sphi_d ...
48060!> \param primitives ...
48061!> \param buffer1 ...
48062!> \param buffer2 ...
48063! **************************************************************************************************
48064 SUBROUTINE contract_dsdd(work, &
48065 nl_a, nl_b, nl_c, nl_d, &
48066 sphi_a, sphi_b, sphi_c, sphi_d, &
48067 primitives, &
48068 buffer1, buffer2)
48069 REAL(dp), DIMENSION(6*1*6*6), INTENT(IN) :: work
48070 INTEGER :: nl_a, nl_b, nl_c, nl_d
48071 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
48072 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
48073 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
48074 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
48075 REAL(dp), &
48076 DIMENSION(5*nl_a, 1*nl_b, 5*nl_c, 5*nl_d) :: primitives
48077 REAL(dp), DIMENSION(6*1*6*6) :: buffer1, buffer2
48078
48079 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
48080 kmax, s_offset_a1, s_offset_b1, &
48081 s_offset_c1, s_offset_d1
48082
48083 s_offset_a1 = 0
48084 DO ia = 1, nl_a
48085 s_offset_b1 = 0
48086 DO ib = 1, nl_b
48087 s_offset_c1 = 0
48088 DO ic = 1, nl_c
48089 s_offset_d1 = 0
48090 DO id = 1, nl_d
48091 buffer1 = 0.0_dp
48092 imax = 1*6*6
48093 kmax = 6
48094 DO i = 1, imax
48095 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
48096 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
48097 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
48098 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
48099 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
48100 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
48101 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
48102 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
48103 END DO
48104 buffer2 = 0.0_dp
48105 imax = 5*6*6
48106 kmax = 1
48107 DO i = 1, imax
48108 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
48109 END DO
48110 buffer1 = 0.0_dp
48111 imax = 5*1*6
48112 kmax = 6
48113 DO i = 1, imax
48114 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
48115 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
48116 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
48117 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
48118 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
48119 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
48120 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
48121 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
48122 END DO
48123 imax = 5*1*5
48124 kmax = 6
48125 i = 0
48126 DO i1 = 1, 5
48127 DO i2 = 1, 1
48128 DO i3 = 1, 5
48129 i = i + 1
48130 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
48131 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
48132 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
48133 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
48134 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
48135 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
48136 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
48137 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
48138 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
48139 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
48140 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
48141 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
48142 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
48143 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
48144 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
48145 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
48146 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
48147 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
48148 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
48149 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
48150 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
48151 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
48152 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
48153 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
48154 END DO
48155 END DO
48156 END DO
48157 s_offset_d1 = s_offset_d1 + 5
48158 END DO
48159 s_offset_c1 = s_offset_c1 + 5
48160 END DO
48161 s_offset_b1 = s_offset_b1 + 1
48162 END DO
48163 s_offset_a1 = s_offset_a1 + 5
48164 END DO
48165 END SUBROUTINE contract_dsdd
48166#endif
48167#if __MAX_CONTR > 3 || __MAX_CONTR == 3
48168! **************************************************************************************************
48169!> \brief ...
48170!> \param work ...
48171!> \param nl_a ...
48172!> \param nl_b ...
48173!> \param nl_c ...
48174!> \param nl_d ...
48175!> \param sphi_a ...
48176!> \param sphi_b ...
48177!> \param sphi_c ...
48178!> \param sphi_d ...
48179!> \param primitives ...
48180!> \param buffer1 ...
48181!> \param buffer2 ...
48182! **************************************************************************************************
48183 SUBROUTINE contract_dsdf(work, &
48184 nl_a, nl_b, nl_c, nl_d, &
48185 sphi_a, sphi_b, sphi_c, sphi_d, &
48186 primitives, &
48187 buffer1, buffer2)
48188 REAL(dp), DIMENSION(6*1*6*10), INTENT(IN) :: work
48189 INTEGER :: nl_a, nl_b, nl_c, nl_d
48190 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
48191 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
48192 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
48193 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
48194 REAL(dp), &
48195 DIMENSION(5*nl_a, 1*nl_b, 5*nl_c, 7*nl_d) :: primitives
48196 REAL(dp), DIMENSION(6*1*6*10) :: buffer1, buffer2
48197
48198 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
48199 kmax, s_offset_a1, s_offset_b1, &
48200 s_offset_c1, s_offset_d1
48201
48202 s_offset_a1 = 0
48203 DO ia = 1, nl_a
48204 s_offset_b1 = 0
48205 DO ib = 1, nl_b
48206 s_offset_c1 = 0
48207 DO ic = 1, nl_c
48208 s_offset_d1 = 0
48209 DO id = 1, nl_d
48210 buffer1 = 0.0_dp
48211 imax = 1*6*10
48212 kmax = 6
48213 DO i = 1, imax
48214 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
48215 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
48216 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
48217 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
48218 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
48219 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
48220 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
48221 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
48222 END DO
48223 buffer2 = 0.0_dp
48224 imax = 5*6*10
48225 kmax = 1
48226 DO i = 1, imax
48227 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
48228 END DO
48229 buffer1 = 0.0_dp
48230 imax = 5*1*10
48231 kmax = 6
48232 DO i = 1, imax
48233 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
48234 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
48235 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
48236 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
48237 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
48238 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
48239 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
48240 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
48241 END DO
48242 imax = 5*1*5
48243 kmax = 10
48244 i = 0
48245 DO i1 = 1, 5
48246 DO i2 = 1, 1
48247 DO i3 = 1, 5
48248 i = i + 1
48249 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
48250 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
48251 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
48252 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
48253 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
48254 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
48255 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
48256 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
48257 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
48258 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
48259 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
48260 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
48261 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
48262 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
48263 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
48264 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
48265 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
48266 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
48267 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
48268 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
48269 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
48270 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
48271 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
48272 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
48273 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
48274 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
48275 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
48276 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
48277 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
48278 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
48279 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
48280 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
48281 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
48282 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
48283 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
48284 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
48285 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
48286 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
48287 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
48288 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
48289 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
48290 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
48291 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
48292 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
48293 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
48294 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
48295 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
48296 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
48297 END DO
48298 END DO
48299 END DO
48300 s_offset_d1 = s_offset_d1 + 7
48301 END DO
48302 s_offset_c1 = s_offset_c1 + 5
48303 END DO
48304 s_offset_b1 = s_offset_b1 + 1
48305 END DO
48306 s_offset_a1 = s_offset_a1 + 5
48307 END DO
48308 END SUBROUTINE contract_dsdf
48309#endif
48310#if __MAX_CONTR > 4 || __MAX_CONTR == 4
48311! **************************************************************************************************
48312!> \brief ...
48313!> \param work ...
48314!> \param nl_a ...
48315!> \param nl_b ...
48316!> \param nl_c ...
48317!> \param nl_d ...
48318!> \param sphi_a ...
48319!> \param sphi_b ...
48320!> \param sphi_c ...
48321!> \param sphi_d ...
48322!> \param primitives ...
48323!> \param buffer1 ...
48324!> \param buffer2 ...
48325! **************************************************************************************************
48326 SUBROUTINE contract_dsdg(work, &
48327 nl_a, nl_b, nl_c, nl_d, &
48328 sphi_a, sphi_b, sphi_c, sphi_d, &
48329 primitives, &
48330 buffer1, buffer2)
48331 REAL(dp), DIMENSION(6*1*6*15), INTENT(IN) :: work
48332 INTEGER :: nl_a, nl_b, nl_c, nl_d
48333 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
48334 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
48335 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
48336 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
48337 REAL(dp), &
48338 DIMENSION(5*nl_a, 1*nl_b, 5*nl_c, 9*nl_d) :: primitives
48339 REAL(dp), DIMENSION(6*1*6*15) :: buffer1, buffer2
48340
48341 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
48342 kmax, s_offset_a1, s_offset_b1, &
48343 s_offset_c1, s_offset_d1
48344
48345 s_offset_a1 = 0
48346 DO ia = 1, nl_a
48347 s_offset_b1 = 0
48348 DO ib = 1, nl_b
48349 s_offset_c1 = 0
48350 DO ic = 1, nl_c
48351 s_offset_d1 = 0
48352 DO id = 1, nl_d
48353 buffer1 = 0.0_dp
48354 imax = 1*6*15
48355 kmax = 6
48356 DO i = 1, imax
48357 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
48358 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
48359 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
48360 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
48361 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
48362 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
48363 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
48364 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
48365 END DO
48366 buffer2 = 0.0_dp
48367 imax = 5*6*15
48368 kmax = 1
48369 DO i = 1, imax
48370 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
48371 END DO
48372 buffer1 = 0.0_dp
48373 imax = 5*1*15
48374 kmax = 6
48375 DO i = 1, imax
48376 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
48377 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
48378 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
48379 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
48380 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
48381 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
48382 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
48383 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
48384 END DO
48385 imax = 5*1*5
48386 kmax = 15
48387 i = 0
48388 DO i1 = 1, 5
48389 DO i2 = 1, 1
48390 DO i3 = 1, 5
48391 i = i + 1
48392 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
48393 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
48394 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
48395 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
48396 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
48397 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
48398 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
48399 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
48400 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
48401 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
48402 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
48403 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
48404 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
48405 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
48406 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
48407 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
48408 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
48409 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
48410 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
48411 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
48412 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
48413 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
48414 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
48415 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
48416 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
48417 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
48418 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
48419 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
48420 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
48421 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
48422 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
48423 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
48424 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
48425 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
48426 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
48427 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
48428 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
48429 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
48430 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
48431 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
48432 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
48433 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
48434 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
48435 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
48436 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
48437 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
48438 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
48439 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
48440 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
48441 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
48442 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
48443 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
48444 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
48445 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
48446 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
48447 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
48448 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
48449 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
48450 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
48451 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
48452 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
48453 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
48454 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
48455 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
48456 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
48457 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
48458 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
48459 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
48460 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
48461 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
48462 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
48463 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
48464 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
48465 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
48466 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
48467 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
48468 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
48469 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
48470 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
48471 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
48472 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
48473 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
48474 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
48475 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
48476 END DO
48477 END DO
48478 END DO
48479 s_offset_d1 = s_offset_d1 + 9
48480 END DO
48481 s_offset_c1 = s_offset_c1 + 5
48482 END DO
48483 s_offset_b1 = s_offset_b1 + 1
48484 END DO
48485 s_offset_a1 = s_offset_a1 + 5
48486 END DO
48487 END SUBROUTINE contract_dsdg
48488#endif
48489#if __MAX_CONTR > 3 || __MAX_CONTR == 3
48490! **************************************************************************************************
48491!> \brief ...
48492!> \param work ...
48493!> \param nl_a ...
48494!> \param nl_b ...
48495!> \param nl_c ...
48496!> \param nl_d ...
48497!> \param sphi_a ...
48498!> \param sphi_b ...
48499!> \param sphi_c ...
48500!> \param sphi_d ...
48501!> \param primitives ...
48502!> \param buffer1 ...
48503!> \param buffer2 ...
48504! **************************************************************************************************
48505 SUBROUTINE contract_dsfs(work, &
48506 nl_a, nl_b, nl_c, nl_d, &
48507 sphi_a, sphi_b, sphi_c, sphi_d, &
48508 primitives, &
48509 buffer1, buffer2)
48510 REAL(dp), DIMENSION(6*1*10*1), INTENT(IN) :: work
48511 INTEGER :: nl_a, nl_b, nl_c, nl_d
48512 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
48513 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
48514 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
48515 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
48516 REAL(dp), &
48517 DIMENSION(5*nl_a, 1*nl_b, 7*nl_c, 1*nl_d) :: primitives
48518 REAL(dp), DIMENSION(6*1*10*1) :: buffer1, buffer2
48519
48520 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
48521 kmax, s_offset_a1, s_offset_b1, &
48522 s_offset_c1, s_offset_d1
48523
48524 s_offset_a1 = 0
48525 DO ia = 1, nl_a
48526 s_offset_b1 = 0
48527 DO ib = 1, nl_b
48528 s_offset_c1 = 0
48529 DO ic = 1, nl_c
48530 s_offset_d1 = 0
48531 DO id = 1, nl_d
48532 buffer1 = 0.0_dp
48533 imax = 1*10*1
48534 kmax = 6
48535 DO i = 1, imax
48536 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
48537 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
48538 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
48539 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
48540 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
48541 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
48542 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
48543 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
48544 END DO
48545 buffer2 = 0.0_dp
48546 imax = 5*10*1
48547 kmax = 1
48548 DO i = 1, imax
48549 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
48550 END DO
48551 buffer1 = 0.0_dp
48552 imax = 5*1*1
48553 kmax = 10
48554 DO i = 1, imax
48555 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
48556 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
48557 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
48558 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
48559 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
48560 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
48561 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
48562 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
48563 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
48564 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
48565 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
48566 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
48567 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
48568 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
48569 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
48570 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
48571 END DO
48572 imax = 5*1*7
48573 kmax = 1
48574 i = 0
48575 DO i1 = 1, 7
48576 DO i2 = 1, 1
48577 DO i3 = 1, 5
48578 i = i + 1
48579 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
48580 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
48581 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
48582 END DO
48583 END DO
48584 END DO
48585 s_offset_d1 = s_offset_d1 + 1
48586 END DO
48587 s_offset_c1 = s_offset_c1 + 7
48588 END DO
48589 s_offset_b1 = s_offset_b1 + 1
48590 END DO
48591 s_offset_a1 = s_offset_a1 + 5
48592 END DO
48593 END SUBROUTINE contract_dsfs
48594#endif
48595#if __MAX_CONTR > 3 || __MAX_CONTR == 3
48596! **************************************************************************************************
48597!> \brief ...
48598!> \param work ...
48599!> \param nl_a ...
48600!> \param nl_b ...
48601!> \param nl_c ...
48602!> \param nl_d ...
48603!> \param sphi_a ...
48604!> \param sphi_b ...
48605!> \param sphi_c ...
48606!> \param sphi_d ...
48607!> \param primitives ...
48608!> \param buffer1 ...
48609!> \param buffer2 ...
48610! **************************************************************************************************
48611 SUBROUTINE contract_dsfp(work, &
48612 nl_a, nl_b, nl_c, nl_d, &
48613 sphi_a, sphi_b, sphi_c, sphi_d, &
48614 primitives, &
48615 buffer1, buffer2)
48616 REAL(dp), DIMENSION(6*1*10*3), INTENT(IN) :: work
48617 INTEGER :: nl_a, nl_b, nl_c, nl_d
48618 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
48619 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
48620 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
48621 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
48622 REAL(dp), &
48623 DIMENSION(5*nl_a, 1*nl_b, 7*nl_c, 3*nl_d) :: primitives
48624 REAL(dp), DIMENSION(6*1*10*3) :: buffer1, buffer2
48625
48626 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
48627 kmax, s_offset_a1, s_offset_b1, &
48628 s_offset_c1, s_offset_d1
48629
48630 s_offset_a1 = 0
48631 DO ia = 1, nl_a
48632 s_offset_b1 = 0
48633 DO ib = 1, nl_b
48634 s_offset_c1 = 0
48635 DO ic = 1, nl_c
48636 s_offset_d1 = 0
48637 DO id = 1, nl_d
48638 buffer1 = 0.0_dp
48639 imax = 1*10*3
48640 kmax = 6
48641 DO i = 1, imax
48642 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
48643 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
48644 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
48645 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
48646 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
48647 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
48648 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
48649 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
48650 END DO
48651 buffer2 = 0.0_dp
48652 imax = 5*10*3
48653 kmax = 1
48654 DO i = 1, imax
48655 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
48656 END DO
48657 buffer1 = 0.0_dp
48658 imax = 5*1*3
48659 kmax = 10
48660 DO i = 1, imax
48661 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
48662 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
48663 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
48664 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
48665 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
48666 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
48667 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
48668 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
48669 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
48670 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
48671 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
48672 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
48673 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
48674 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
48675 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
48676 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
48677 END DO
48678 imax = 5*1*7
48679 kmax = 3
48680 i = 0
48681 DO i1 = 1, 7
48682 DO i2 = 1, 1
48683 DO i3 = 1, 5
48684 i = i + 1
48685 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
48686 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
48687 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
48688 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
48689 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
48690 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
48691 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
48692 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
48693 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
48694 END DO
48695 END DO
48696 END DO
48697 s_offset_d1 = s_offset_d1 + 3
48698 END DO
48699 s_offset_c1 = s_offset_c1 + 7
48700 END DO
48701 s_offset_b1 = s_offset_b1 + 1
48702 END DO
48703 s_offset_a1 = s_offset_a1 + 5
48704 END DO
48705 END SUBROUTINE contract_dsfp
48706#endif
48707#if __MAX_CONTR > 3 || __MAX_CONTR == 3
48708! **************************************************************************************************
48709!> \brief ...
48710!> \param work ...
48711!> \param nl_a ...
48712!> \param nl_b ...
48713!> \param nl_c ...
48714!> \param nl_d ...
48715!> \param sphi_a ...
48716!> \param sphi_b ...
48717!> \param sphi_c ...
48718!> \param sphi_d ...
48719!> \param primitives ...
48720!> \param buffer1 ...
48721!> \param buffer2 ...
48722! **************************************************************************************************
48723 SUBROUTINE contract_dsfd(work, &
48724 nl_a, nl_b, nl_c, nl_d, &
48725 sphi_a, sphi_b, sphi_c, sphi_d, &
48726 primitives, &
48727 buffer1, buffer2)
48728 REAL(dp), DIMENSION(6*1*10*6), INTENT(IN) :: work
48729 INTEGER :: nl_a, nl_b, nl_c, nl_d
48730 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
48731 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
48732 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
48733 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
48734 REAL(dp), &
48735 DIMENSION(5*nl_a, 1*nl_b, 7*nl_c, 5*nl_d) :: primitives
48736 REAL(dp), DIMENSION(6*1*10*6) :: buffer1, buffer2
48737
48738 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
48739 kmax, s_offset_a1, s_offset_b1, &
48740 s_offset_c1, s_offset_d1
48741
48742 s_offset_a1 = 0
48743 DO ia = 1, nl_a
48744 s_offset_b1 = 0
48745 DO ib = 1, nl_b
48746 s_offset_c1 = 0
48747 DO ic = 1, nl_c
48748 s_offset_d1 = 0
48749 DO id = 1, nl_d
48750 buffer1 = 0.0_dp
48751 imax = 1*10*6
48752 kmax = 6
48753 DO i = 1, imax
48754 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
48755 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
48756 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
48757 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
48758 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
48759 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
48760 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
48761 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
48762 END DO
48763 buffer2 = 0.0_dp
48764 imax = 5*10*6
48765 kmax = 1
48766 DO i = 1, imax
48767 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
48768 END DO
48769 buffer1 = 0.0_dp
48770 imax = 5*1*6
48771 kmax = 10
48772 DO i = 1, imax
48773 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
48774 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
48775 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
48776 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
48777 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
48778 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
48779 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
48780 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
48781 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
48782 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
48783 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
48784 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
48785 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
48786 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
48787 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
48788 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
48789 END DO
48790 imax = 5*1*7
48791 kmax = 6
48792 i = 0
48793 DO i1 = 1, 7
48794 DO i2 = 1, 1
48795 DO i3 = 1, 5
48796 i = i + 1
48797 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
48798 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
48799 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
48800 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
48801 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
48802 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
48803 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
48804 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
48805 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
48806 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
48807 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
48808 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
48809 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
48810 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
48811 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
48812 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
48813 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
48814 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
48815 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
48816 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
48817 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
48818 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
48819 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
48820 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
48821 END DO
48822 END DO
48823 END DO
48824 s_offset_d1 = s_offset_d1 + 5
48825 END DO
48826 s_offset_c1 = s_offset_c1 + 7
48827 END DO
48828 s_offset_b1 = s_offset_b1 + 1
48829 END DO
48830 s_offset_a1 = s_offset_a1 + 5
48831 END DO
48832 END SUBROUTINE contract_dsfd
48833#endif
48834#if __MAX_CONTR > 3 || __MAX_CONTR == 3
48835! **************************************************************************************************
48836!> \brief ...
48837!> \param work ...
48838!> \param nl_a ...
48839!> \param nl_b ...
48840!> \param nl_c ...
48841!> \param nl_d ...
48842!> \param sphi_a ...
48843!> \param sphi_b ...
48844!> \param sphi_c ...
48845!> \param sphi_d ...
48846!> \param primitives ...
48847!> \param buffer1 ...
48848!> \param buffer2 ...
48849! **************************************************************************************************
48850 SUBROUTINE contract_dsff(work, &
48851 nl_a, nl_b, nl_c, nl_d, &
48852 sphi_a, sphi_b, sphi_c, sphi_d, &
48853 primitives, &
48854 buffer1, buffer2)
48855 REAL(dp), DIMENSION(6*1*10*10), INTENT(IN) :: work
48856 INTEGER :: nl_a, nl_b, nl_c, nl_d
48857 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
48858 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
48859 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
48860 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
48861 REAL(dp), &
48862 DIMENSION(5*nl_a, 1*nl_b, 7*nl_c, 7*nl_d) :: primitives
48863 REAL(dp), DIMENSION(6*1*10*10) :: buffer1, buffer2
48864
48865 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
48866 kmax, s_offset_a1, s_offset_b1, &
48867 s_offset_c1, s_offset_d1
48868
48869 s_offset_a1 = 0
48870 DO ia = 1, nl_a
48871 s_offset_b1 = 0
48872 DO ib = 1, nl_b
48873 s_offset_c1 = 0
48874 DO ic = 1, nl_c
48875 s_offset_d1 = 0
48876 DO id = 1, nl_d
48877 buffer1 = 0.0_dp
48878 imax = 1*10*10
48879 kmax = 6
48880 DO i = 1, imax
48881 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
48882 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
48883 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
48884 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
48885 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
48886 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
48887 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
48888 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
48889 END DO
48890 buffer2 = 0.0_dp
48891 imax = 5*10*10
48892 kmax = 1
48893 DO i = 1, imax
48894 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
48895 END DO
48896 buffer1 = 0.0_dp
48897 imax = 5*1*10
48898 kmax = 10
48899 DO i = 1, imax
48900 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
48901 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
48902 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
48903 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
48904 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
48905 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
48906 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
48907 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
48908 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
48909 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
48910 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
48911 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
48912 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
48913 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
48914 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
48915 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
48916 END DO
48917 imax = 5*1*7
48918 kmax = 10
48919 i = 0
48920 DO i1 = 1, 7
48921 DO i2 = 1, 1
48922 DO i3 = 1, 5
48923 i = i + 1
48924 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
48925 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
48926 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
48927 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
48928 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
48929 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
48930 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
48931 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
48932 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
48933 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
48934 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
48935 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
48936 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
48937 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
48938 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
48939 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
48940 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
48941 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
48942 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
48943 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
48944 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
48945 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
48946 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
48947 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
48948 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
48949 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
48950 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
48951 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
48952 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
48953 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
48954 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
48955 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
48956 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
48957 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
48958 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
48959 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
48960 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
48961 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
48962 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
48963 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
48964 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
48965 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
48966 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
48967 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
48968 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
48969 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
48970 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
48971 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
48972 END DO
48973 END DO
48974 END DO
48975 s_offset_d1 = s_offset_d1 + 7
48976 END DO
48977 s_offset_c1 = s_offset_c1 + 7
48978 END DO
48979 s_offset_b1 = s_offset_b1 + 1
48980 END DO
48981 s_offset_a1 = s_offset_a1 + 5
48982 END DO
48983 END SUBROUTINE contract_dsff
48984#endif
48985#if __MAX_CONTR > 4 || __MAX_CONTR == 4
48986! **************************************************************************************************
48987!> \brief ...
48988!> \param work ...
48989!> \param nl_a ...
48990!> \param nl_b ...
48991!> \param nl_c ...
48992!> \param nl_d ...
48993!> \param sphi_a ...
48994!> \param sphi_b ...
48995!> \param sphi_c ...
48996!> \param sphi_d ...
48997!> \param primitives ...
48998!> \param buffer1 ...
48999!> \param buffer2 ...
49000! **************************************************************************************************
49001 SUBROUTINE contract_dsfg(work, &
49002 nl_a, nl_b, nl_c, nl_d, &
49003 sphi_a, sphi_b, sphi_c, sphi_d, &
49004 primitives, &
49005 buffer1, buffer2)
49006 REAL(dp), DIMENSION(6*1*10*15), INTENT(IN) :: work
49007 INTEGER :: nl_a, nl_b, nl_c, nl_d
49008 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
49009 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
49010 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
49011 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
49012 REAL(dp), &
49013 DIMENSION(5*nl_a, 1*nl_b, 7*nl_c, 9*nl_d) :: primitives
49014 REAL(dp), DIMENSION(6*1*10*15) :: buffer1, buffer2
49015
49016 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
49017 kmax, s_offset_a1, s_offset_b1, &
49018 s_offset_c1, s_offset_d1
49019
49020 s_offset_a1 = 0
49021 DO ia = 1, nl_a
49022 s_offset_b1 = 0
49023 DO ib = 1, nl_b
49024 s_offset_c1 = 0
49025 DO ic = 1, nl_c
49026 s_offset_d1 = 0
49027 DO id = 1, nl_d
49028 buffer1 = 0.0_dp
49029 imax = 1*10*15
49030 kmax = 6
49031 DO i = 1, imax
49032 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
49033 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
49034 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
49035 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
49036 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
49037 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
49038 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
49039 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
49040 END DO
49041 buffer2 = 0.0_dp
49042 imax = 5*10*15
49043 kmax = 1
49044 DO i = 1, imax
49045 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
49046 END DO
49047 buffer1 = 0.0_dp
49048 imax = 5*1*15
49049 kmax = 10
49050 DO i = 1, imax
49051 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
49052 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
49053 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
49054 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
49055 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
49056 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
49057 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
49058 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
49059 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
49060 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
49061 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
49062 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
49063 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
49064 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
49065 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
49066 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
49067 END DO
49068 imax = 5*1*7
49069 kmax = 15
49070 i = 0
49071 DO i1 = 1, 7
49072 DO i2 = 1, 1
49073 DO i3 = 1, 5
49074 i = i + 1
49075 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
49076 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
49077 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
49078 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
49079 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
49080 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
49081 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
49082 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
49083 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
49084 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
49085 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
49086 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
49087 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
49088 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
49089 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
49090 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
49091 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
49092 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
49093 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
49094 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
49095 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
49096 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
49097 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
49098 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
49099 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
49100 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
49101 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
49102 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
49103 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
49104 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
49105 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
49106 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
49107 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
49108 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
49109 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
49110 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
49111 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
49112 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
49113 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
49114 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
49115 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
49116 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
49117 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
49118 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
49119 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
49120 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
49121 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
49122 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
49123 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
49124 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
49125 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
49126 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
49127 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
49128 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
49129 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
49130 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
49131 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
49132 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
49133 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
49134 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
49135 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
49136 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
49137 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
49138 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
49139 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
49140 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
49141 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
49142 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
49143 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
49144 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
49145 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
49146 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
49147 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
49148 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
49149 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
49150 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
49151 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
49152 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
49153 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
49154 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
49155 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
49156 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
49157 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
49158 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
49159 END DO
49160 END DO
49161 END DO
49162 s_offset_d1 = s_offset_d1 + 9
49163 END DO
49164 s_offset_c1 = s_offset_c1 + 7
49165 END DO
49166 s_offset_b1 = s_offset_b1 + 1
49167 END DO
49168 s_offset_a1 = s_offset_a1 + 5
49169 END DO
49170 END SUBROUTINE contract_dsfg
49171#endif
49172#if __MAX_CONTR > 4 || __MAX_CONTR == 4
49173! **************************************************************************************************
49174!> \brief ...
49175!> \param work ...
49176!> \param nl_a ...
49177!> \param nl_b ...
49178!> \param nl_c ...
49179!> \param nl_d ...
49180!> \param sphi_a ...
49181!> \param sphi_b ...
49182!> \param sphi_c ...
49183!> \param sphi_d ...
49184!> \param primitives ...
49185!> \param buffer1 ...
49186!> \param buffer2 ...
49187! **************************************************************************************************
49188 SUBROUTINE contract_dsgs(work, &
49189 nl_a, nl_b, nl_c, nl_d, &
49190 sphi_a, sphi_b, sphi_c, sphi_d, &
49191 primitives, &
49192 buffer1, buffer2)
49193 REAL(dp), DIMENSION(6*1*15*1), INTENT(IN) :: work
49194 INTEGER :: nl_a, nl_b, nl_c, nl_d
49195 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
49196 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
49197 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
49198 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
49199 REAL(dp), &
49200 DIMENSION(5*nl_a, 1*nl_b, 9*nl_c, 1*nl_d) :: primitives
49201 REAL(dp), DIMENSION(6*1*15*1) :: buffer1, buffer2
49202
49203 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
49204 kmax, s_offset_a1, s_offset_b1, &
49205 s_offset_c1, s_offset_d1
49206
49207 s_offset_a1 = 0
49208 DO ia = 1, nl_a
49209 s_offset_b1 = 0
49210 DO ib = 1, nl_b
49211 s_offset_c1 = 0
49212 DO ic = 1, nl_c
49213 s_offset_d1 = 0
49214 DO id = 1, nl_d
49215 buffer1 = 0.0_dp
49216 imax = 1*15*1
49217 kmax = 6
49218 DO i = 1, imax
49219 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
49220 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
49221 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
49222 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
49223 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
49224 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
49225 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
49226 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
49227 END DO
49228 buffer2 = 0.0_dp
49229 imax = 5*15*1
49230 kmax = 1
49231 DO i = 1, imax
49232 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
49233 END DO
49234 buffer1 = 0.0_dp
49235 imax = 5*1*1
49236 kmax = 15
49237 DO i = 1, imax
49238 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
49239 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
49240 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
49241 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
49242 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
49243 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
49244 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
49245 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
49246 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
49247 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
49248 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
49249 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
49250 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
49251 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
49252 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
49253 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
49254 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
49255 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
49256 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
49257 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
49258 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
49259 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
49260 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
49261 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
49262 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
49263 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
49264 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
49265 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
49266 END DO
49267 imax = 5*1*9
49268 kmax = 1
49269 i = 0
49270 DO i1 = 1, 9
49271 DO i2 = 1, 1
49272 DO i3 = 1, 5
49273 i = i + 1
49274 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
49275 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
49276 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
49277 END DO
49278 END DO
49279 END DO
49280 s_offset_d1 = s_offset_d1 + 1
49281 END DO
49282 s_offset_c1 = s_offset_c1 + 9
49283 END DO
49284 s_offset_b1 = s_offset_b1 + 1
49285 END DO
49286 s_offset_a1 = s_offset_a1 + 5
49287 END DO
49288 END SUBROUTINE contract_dsgs
49289#endif
49290#if __MAX_CONTR > 4 || __MAX_CONTR == 4
49291! **************************************************************************************************
49292!> \brief ...
49293!> \param work ...
49294!> \param nl_a ...
49295!> \param nl_b ...
49296!> \param nl_c ...
49297!> \param nl_d ...
49298!> \param sphi_a ...
49299!> \param sphi_b ...
49300!> \param sphi_c ...
49301!> \param sphi_d ...
49302!> \param primitives ...
49303!> \param buffer1 ...
49304!> \param buffer2 ...
49305! **************************************************************************************************
49306 SUBROUTINE contract_dsgp(work, &
49307 nl_a, nl_b, nl_c, nl_d, &
49308 sphi_a, sphi_b, sphi_c, sphi_d, &
49309 primitives, &
49310 buffer1, buffer2)
49311 REAL(dp), DIMENSION(6*1*15*3), INTENT(IN) :: work
49312 INTEGER :: nl_a, nl_b, nl_c, nl_d
49313 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
49314 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
49315 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
49316 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
49317 REAL(dp), &
49318 DIMENSION(5*nl_a, 1*nl_b, 9*nl_c, 3*nl_d) :: primitives
49319 REAL(dp), DIMENSION(6*1*15*3) :: buffer1, buffer2
49320
49321 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
49322 kmax, s_offset_a1, s_offset_b1, &
49323 s_offset_c1, s_offset_d1
49324
49325 s_offset_a1 = 0
49326 DO ia = 1, nl_a
49327 s_offset_b1 = 0
49328 DO ib = 1, nl_b
49329 s_offset_c1 = 0
49330 DO ic = 1, nl_c
49331 s_offset_d1 = 0
49332 DO id = 1, nl_d
49333 buffer1 = 0.0_dp
49334 imax = 1*15*3
49335 kmax = 6
49336 DO i = 1, imax
49337 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
49338 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
49339 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
49340 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
49341 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
49342 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
49343 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
49344 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
49345 END DO
49346 buffer2 = 0.0_dp
49347 imax = 5*15*3
49348 kmax = 1
49349 DO i = 1, imax
49350 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
49351 END DO
49352 buffer1 = 0.0_dp
49353 imax = 5*1*3
49354 kmax = 15
49355 DO i = 1, imax
49356 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
49357 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
49358 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
49359 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
49360 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
49361 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
49362 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
49363 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
49364 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
49365 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
49366 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
49367 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
49368 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
49369 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
49370 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
49371 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
49372 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
49373 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
49374 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
49375 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
49376 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
49377 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
49378 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
49379 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
49380 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
49381 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
49382 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
49383 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
49384 END DO
49385 imax = 5*1*9
49386 kmax = 3
49387 i = 0
49388 DO i1 = 1, 9
49389 DO i2 = 1, 1
49390 DO i3 = 1, 5
49391 i = i + 1
49392 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
49393 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
49394 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
49395 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
49396 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
49397 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
49398 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
49399 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
49400 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
49401 END DO
49402 END DO
49403 END DO
49404 s_offset_d1 = s_offset_d1 + 3
49405 END DO
49406 s_offset_c1 = s_offset_c1 + 9
49407 END DO
49408 s_offset_b1 = s_offset_b1 + 1
49409 END DO
49410 s_offset_a1 = s_offset_a1 + 5
49411 END DO
49412 END SUBROUTINE contract_dsgp
49413#endif
49414#if __MAX_CONTR > 4 || __MAX_CONTR == 4
49415! **************************************************************************************************
49416!> \brief ...
49417!> \param work ...
49418!> \param nl_a ...
49419!> \param nl_b ...
49420!> \param nl_c ...
49421!> \param nl_d ...
49422!> \param sphi_a ...
49423!> \param sphi_b ...
49424!> \param sphi_c ...
49425!> \param sphi_d ...
49426!> \param primitives ...
49427!> \param buffer1 ...
49428!> \param buffer2 ...
49429! **************************************************************************************************
49430 SUBROUTINE contract_dsgd(work, &
49431 nl_a, nl_b, nl_c, nl_d, &
49432 sphi_a, sphi_b, sphi_c, sphi_d, &
49433 primitives, &
49434 buffer1, buffer2)
49435 REAL(dp), DIMENSION(6*1*15*6), INTENT(IN) :: work
49436 INTEGER :: nl_a, nl_b, nl_c, nl_d
49437 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
49438 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
49439 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
49440 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
49441 REAL(dp), &
49442 DIMENSION(5*nl_a, 1*nl_b, 9*nl_c, 5*nl_d) :: primitives
49443 REAL(dp), DIMENSION(6*1*15*6) :: buffer1, buffer2
49444
49445 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
49446 kmax, s_offset_a1, s_offset_b1, &
49447 s_offset_c1, s_offset_d1
49448
49449 s_offset_a1 = 0
49450 DO ia = 1, nl_a
49451 s_offset_b1 = 0
49452 DO ib = 1, nl_b
49453 s_offset_c1 = 0
49454 DO ic = 1, nl_c
49455 s_offset_d1 = 0
49456 DO id = 1, nl_d
49457 buffer1 = 0.0_dp
49458 imax = 1*15*6
49459 kmax = 6
49460 DO i = 1, imax
49461 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
49462 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
49463 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
49464 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
49465 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
49466 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
49467 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
49468 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
49469 END DO
49470 buffer2 = 0.0_dp
49471 imax = 5*15*6
49472 kmax = 1
49473 DO i = 1, imax
49474 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
49475 END DO
49476 buffer1 = 0.0_dp
49477 imax = 5*1*6
49478 kmax = 15
49479 DO i = 1, imax
49480 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
49481 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
49482 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
49483 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
49484 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
49485 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
49486 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
49487 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
49488 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
49489 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
49490 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
49491 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
49492 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
49493 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
49494 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
49495 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
49496 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
49497 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
49498 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
49499 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
49500 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
49501 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
49502 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
49503 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
49504 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
49505 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
49506 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
49507 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
49508 END DO
49509 imax = 5*1*9
49510 kmax = 6
49511 i = 0
49512 DO i1 = 1, 9
49513 DO i2 = 1, 1
49514 DO i3 = 1, 5
49515 i = i + 1
49516 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
49517 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
49518 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
49519 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
49520 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
49521 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
49522 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
49523 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
49524 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
49525 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
49526 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
49527 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
49528 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
49529 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
49530 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
49531 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
49532 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
49533 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
49534 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
49535 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
49536 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
49537 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
49538 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
49539 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
49540 END DO
49541 END DO
49542 END DO
49543 s_offset_d1 = s_offset_d1 + 5
49544 END DO
49545 s_offset_c1 = s_offset_c1 + 9
49546 END DO
49547 s_offset_b1 = s_offset_b1 + 1
49548 END DO
49549 s_offset_a1 = s_offset_a1 + 5
49550 END DO
49551 END SUBROUTINE contract_dsgd
49552#endif
49553#if __MAX_CONTR > 4 || __MAX_CONTR == 4
49554! **************************************************************************************************
49555!> \brief ...
49556!> \param work ...
49557!> \param nl_a ...
49558!> \param nl_b ...
49559!> \param nl_c ...
49560!> \param nl_d ...
49561!> \param sphi_a ...
49562!> \param sphi_b ...
49563!> \param sphi_c ...
49564!> \param sphi_d ...
49565!> \param primitives ...
49566!> \param buffer1 ...
49567!> \param buffer2 ...
49568! **************************************************************************************************
49569 SUBROUTINE contract_dsgf(work, &
49570 nl_a, nl_b, nl_c, nl_d, &
49571 sphi_a, sphi_b, sphi_c, sphi_d, &
49572 primitives, &
49573 buffer1, buffer2)
49574 REAL(dp), DIMENSION(6*1*15*10), INTENT(IN) :: work
49575 INTEGER :: nl_a, nl_b, nl_c, nl_d
49576 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
49577 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
49578 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
49579 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
49580 REAL(dp), &
49581 DIMENSION(5*nl_a, 1*nl_b, 9*nl_c, 7*nl_d) :: primitives
49582 REAL(dp), DIMENSION(6*1*15*10) :: buffer1, buffer2
49583
49584 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
49585 kmax, s_offset_a1, s_offset_b1, &
49586 s_offset_c1, s_offset_d1
49587
49588 s_offset_a1 = 0
49589 DO ia = 1, nl_a
49590 s_offset_b1 = 0
49591 DO ib = 1, nl_b
49592 s_offset_c1 = 0
49593 DO ic = 1, nl_c
49594 s_offset_d1 = 0
49595 DO id = 1, nl_d
49596 buffer1 = 0.0_dp
49597 imax = 1*15*10
49598 kmax = 6
49599 DO i = 1, imax
49600 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
49601 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
49602 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
49603 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
49604 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
49605 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
49606 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
49607 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
49608 END DO
49609 buffer2 = 0.0_dp
49610 imax = 5*15*10
49611 kmax = 1
49612 DO i = 1, imax
49613 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
49614 END DO
49615 buffer1 = 0.0_dp
49616 imax = 5*1*10
49617 kmax = 15
49618 DO i = 1, imax
49619 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
49620 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
49621 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
49622 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
49623 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
49624 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
49625 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
49626 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
49627 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
49628 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
49629 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
49630 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
49631 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
49632 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
49633 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
49634 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
49635 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
49636 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
49637 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
49638 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
49639 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
49640 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
49641 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
49642 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
49643 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
49644 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
49645 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
49646 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
49647 END DO
49648 imax = 5*1*9
49649 kmax = 10
49650 i = 0
49651 DO i1 = 1, 9
49652 DO i2 = 1, 1
49653 DO i3 = 1, 5
49654 i = i + 1
49655 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
49656 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
49657 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
49658 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
49659 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
49660 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
49661 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
49662 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
49663 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
49664 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
49665 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
49666 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
49667 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
49668 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
49669 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
49670 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
49671 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
49672 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
49673 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
49674 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
49675 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
49676 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
49677 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
49678 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
49679 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
49680 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
49681 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
49682 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
49683 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
49684 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
49685 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
49686 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
49687 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
49688 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
49689 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
49690 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
49691 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
49692 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
49693 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
49694 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
49695 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
49696 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
49697 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
49698 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
49699 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
49700 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
49701 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
49702 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
49703 END DO
49704 END DO
49705 END DO
49706 s_offset_d1 = s_offset_d1 + 7
49707 END DO
49708 s_offset_c1 = s_offset_c1 + 9
49709 END DO
49710 s_offset_b1 = s_offset_b1 + 1
49711 END DO
49712 s_offset_a1 = s_offset_a1 + 5
49713 END DO
49714 END SUBROUTINE contract_dsgf
49715#endif
49716#if __MAX_CONTR > 4 || __MAX_CONTR == 4
49717! **************************************************************************************************
49718!> \brief ...
49719!> \param work ...
49720!> \param nl_a ...
49721!> \param nl_b ...
49722!> \param nl_c ...
49723!> \param nl_d ...
49724!> \param sphi_a ...
49725!> \param sphi_b ...
49726!> \param sphi_c ...
49727!> \param sphi_d ...
49728!> \param primitives ...
49729!> \param buffer1 ...
49730!> \param buffer2 ...
49731! **************************************************************************************************
49732 SUBROUTINE contract_dsgg(work, &
49733 nl_a, nl_b, nl_c, nl_d, &
49734 sphi_a, sphi_b, sphi_c, sphi_d, &
49735 primitives, &
49736 buffer1, buffer2)
49737 REAL(dp), DIMENSION(6*1*15*15), INTENT(IN) :: work
49738 INTEGER :: nl_a, nl_b, nl_c, nl_d
49739 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
49740 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
49741 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
49742 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
49743 REAL(dp), &
49744 DIMENSION(5*nl_a, 1*nl_b, 9*nl_c, 9*nl_d) :: primitives
49745 REAL(dp), DIMENSION(6*1*15*15) :: buffer1, buffer2
49746
49747 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
49748 kmax, s_offset_a1, s_offset_b1, &
49749 s_offset_c1, s_offset_d1
49750
49751 s_offset_a1 = 0
49752 DO ia = 1, nl_a
49753 s_offset_b1 = 0
49754 DO ib = 1, nl_b
49755 s_offset_c1 = 0
49756 DO ic = 1, nl_c
49757 s_offset_d1 = 0
49758 DO id = 1, nl_d
49759 buffer1 = 0.0_dp
49760 imax = 1*15*15
49761 kmax = 6
49762 DO i = 1, imax
49763 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
49764 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
49765 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
49766 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
49767 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
49768 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
49769 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
49770 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
49771 END DO
49772 buffer2 = 0.0_dp
49773 imax = 5*15*15
49774 kmax = 1
49775 DO i = 1, imax
49776 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
49777 END DO
49778 buffer1 = 0.0_dp
49779 imax = 5*1*15
49780 kmax = 15
49781 DO i = 1, imax
49782 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
49783 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
49784 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
49785 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
49786 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
49787 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
49788 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
49789 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
49790 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
49791 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
49792 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
49793 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
49794 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
49795 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
49796 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
49797 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
49798 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
49799 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
49800 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
49801 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
49802 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
49803 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
49804 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
49805 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
49806 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
49807 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
49808 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
49809 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
49810 END DO
49811 imax = 5*1*9
49812 kmax = 15
49813 i = 0
49814 DO i1 = 1, 9
49815 DO i2 = 1, 1
49816 DO i3 = 1, 5
49817 i = i + 1
49818 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
49819 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
49820 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
49821 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
49822 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
49823 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
49824 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
49825 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
49826 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
49827 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
49828 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
49829 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
49830 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
49831 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
49832 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
49833 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
49834 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
49835 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
49836 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
49837 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
49838 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
49839 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
49840 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
49841 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
49842 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
49843 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
49844 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
49845 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
49846 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
49847 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
49848 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
49849 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
49850 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
49851 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
49852 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
49853 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
49854 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
49855 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
49856 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
49857 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
49858 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
49859 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
49860 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
49861 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
49862 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
49863 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
49864 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
49865 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
49866 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
49867 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
49868 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
49869 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
49870 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
49871 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
49872 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
49873 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
49874 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
49875 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
49876 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
49877 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
49878 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
49879 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
49880 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
49881 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
49882 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
49883 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
49884 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
49885 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
49886 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
49887 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
49888 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
49889 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
49890 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
49891 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
49892 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
49893 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
49894 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
49895 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
49896 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
49897 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
49898 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
49899 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
49900 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
49901 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
49902 END DO
49903 END DO
49904 END DO
49905 s_offset_d1 = s_offset_d1 + 9
49906 END DO
49907 s_offset_c1 = s_offset_c1 + 9
49908 END DO
49909 s_offset_b1 = s_offset_b1 + 1
49910 END DO
49911 s_offset_a1 = s_offset_a1 + 5
49912 END DO
49913 END SUBROUTINE contract_dsgg
49914#endif
49915#if __MAX_CONTR > 2 || __MAX_CONTR == 2
49916! **************************************************************************************************
49917!> \brief ...
49918!> \param work ...
49919!> \param nl_a ...
49920!> \param nl_b ...
49921!> \param nl_c ...
49922!> \param nl_d ...
49923!> \param sphi_a ...
49924!> \param sphi_b ...
49925!> \param sphi_c ...
49926!> \param sphi_d ...
49927!> \param primitives ...
49928!> \param buffer1 ...
49929!> \param buffer2 ...
49930! **************************************************************************************************
49931 SUBROUTINE contract_dpss(work, &
49932 nl_a, nl_b, nl_c, nl_d, &
49933 sphi_a, sphi_b, sphi_c, sphi_d, &
49934 primitives, &
49935 buffer1, buffer2)
49936 REAL(dp), DIMENSION(6*3*1*1), INTENT(IN) :: work
49937 INTEGER :: nl_a, nl_b, nl_c, nl_d
49938 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
49939 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
49940 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
49941 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
49942 REAL(dp), &
49943 DIMENSION(5*nl_a, 3*nl_b, 1*nl_c, 1*nl_d) :: primitives
49944 REAL(dp), DIMENSION(6*3*1*1) :: buffer1, buffer2
49945
49946 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
49947 kmax, s_offset_a1, s_offset_b1, &
49948 s_offset_c1, s_offset_d1
49949
49950 s_offset_a1 = 0
49951 DO ia = 1, nl_a
49952 s_offset_b1 = 0
49953 DO ib = 1, nl_b
49954 s_offset_c1 = 0
49955 DO ic = 1, nl_c
49956 s_offset_d1 = 0
49957 DO id = 1, nl_d
49958 buffer1 = 0.0_dp
49959 imax = 3*1*1
49960 kmax = 6
49961 DO i = 1, imax
49962 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
49963 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
49964 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
49965 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
49966 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
49967 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
49968 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
49969 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
49970 END DO
49971 buffer2 = 0.0_dp
49972 imax = 5*1*1
49973 kmax = 3
49974 DO i = 1, imax
49975 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
49976 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
49977 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
49978 END DO
49979 buffer1 = 0.0_dp
49980 imax = 5*3*1
49981 kmax = 1
49982 DO i = 1, imax
49983 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
49984 END DO
49985 imax = 5*3*1
49986 kmax = 1
49987 i = 0
49988 DO i1 = 1, 1
49989 DO i2 = 1, 3
49990 DO i3 = 1, 5
49991 i = i + 1
49992 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
49993 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
49994 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
49995 END DO
49996 END DO
49997 END DO
49998 s_offset_d1 = s_offset_d1 + 1
49999 END DO
50000 s_offset_c1 = s_offset_c1 + 1
50001 END DO
50002 s_offset_b1 = s_offset_b1 + 3
50003 END DO
50004 s_offset_a1 = s_offset_a1 + 5
50005 END DO
50006 END SUBROUTINE contract_dpss
50007#endif
50008#if __MAX_CONTR > 2 || __MAX_CONTR == 2
50009! **************************************************************************************************
50010!> \brief ...
50011!> \param work ...
50012!> \param nl_a ...
50013!> \param nl_b ...
50014!> \param nl_c ...
50015!> \param nl_d ...
50016!> \param sphi_a ...
50017!> \param sphi_b ...
50018!> \param sphi_c ...
50019!> \param sphi_d ...
50020!> \param primitives ...
50021!> \param buffer1 ...
50022!> \param buffer2 ...
50023! **************************************************************************************************
50024 SUBROUTINE contract_dpsp(work, &
50025 nl_a, nl_b, nl_c, nl_d, &
50026 sphi_a, sphi_b, sphi_c, sphi_d, &
50027 primitives, &
50028 buffer1, buffer2)
50029 REAL(dp), DIMENSION(6*3*1*3), INTENT(IN) :: work
50030 INTEGER :: nl_a, nl_b, nl_c, nl_d
50031 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
50032 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
50033 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
50034 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
50035 REAL(dp), &
50036 DIMENSION(5*nl_a, 3*nl_b, 1*nl_c, 3*nl_d) :: primitives
50037 REAL(dp), DIMENSION(6*3*1*3) :: buffer1, buffer2
50038
50039 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
50040 kmax, s_offset_a1, s_offset_b1, &
50041 s_offset_c1, s_offset_d1
50042
50043 s_offset_a1 = 0
50044 DO ia = 1, nl_a
50045 s_offset_b1 = 0
50046 DO ib = 1, nl_b
50047 s_offset_c1 = 0
50048 DO ic = 1, nl_c
50049 s_offset_d1 = 0
50050 DO id = 1, nl_d
50051 buffer1 = 0.0_dp
50052 imax = 3*1*3
50053 kmax = 6
50054 DO i = 1, imax
50055 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
50056 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
50057 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
50058 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
50059 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
50060 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
50061 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
50062 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
50063 END DO
50064 buffer2 = 0.0_dp
50065 imax = 5*1*3
50066 kmax = 3
50067 DO i = 1, imax
50068 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
50069 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
50070 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
50071 END DO
50072 buffer1 = 0.0_dp
50073 imax = 5*3*3
50074 kmax = 1
50075 DO i = 1, imax
50076 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
50077 END DO
50078 imax = 5*3*1
50079 kmax = 3
50080 i = 0
50081 DO i1 = 1, 1
50082 DO i2 = 1, 3
50083 DO i3 = 1, 5
50084 i = i + 1
50085 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
50086 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
50087 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
50088 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
50089 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
50090 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
50091 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
50092 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
50093 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
50094 END DO
50095 END DO
50096 END DO
50097 s_offset_d1 = s_offset_d1 + 3
50098 END DO
50099 s_offset_c1 = s_offset_c1 + 1
50100 END DO
50101 s_offset_b1 = s_offset_b1 + 3
50102 END DO
50103 s_offset_a1 = s_offset_a1 + 5
50104 END DO
50105 END SUBROUTINE contract_dpsp
50106#endif
50107#if __MAX_CONTR > 2 || __MAX_CONTR == 2
50108! **************************************************************************************************
50109!> \brief ...
50110!> \param work ...
50111!> \param nl_a ...
50112!> \param nl_b ...
50113!> \param nl_c ...
50114!> \param nl_d ...
50115!> \param sphi_a ...
50116!> \param sphi_b ...
50117!> \param sphi_c ...
50118!> \param sphi_d ...
50119!> \param primitives ...
50120!> \param buffer1 ...
50121!> \param buffer2 ...
50122! **************************************************************************************************
50123 SUBROUTINE contract_dpsd(work, &
50124 nl_a, nl_b, nl_c, nl_d, &
50125 sphi_a, sphi_b, sphi_c, sphi_d, &
50126 primitives, &
50127 buffer1, buffer2)
50128 REAL(dp), DIMENSION(6*3*1*6), INTENT(IN) :: work
50129 INTEGER :: nl_a, nl_b, nl_c, nl_d
50130 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
50131 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
50132 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
50133 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
50134 REAL(dp), &
50135 DIMENSION(5*nl_a, 3*nl_b, 1*nl_c, 5*nl_d) :: primitives
50136 REAL(dp), DIMENSION(6*3*1*6) :: buffer1, buffer2
50137
50138 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
50139 kmax, s_offset_a1, s_offset_b1, &
50140 s_offset_c1, s_offset_d1
50141
50142 s_offset_a1 = 0
50143 DO ia = 1, nl_a
50144 s_offset_b1 = 0
50145 DO ib = 1, nl_b
50146 s_offset_c1 = 0
50147 DO ic = 1, nl_c
50148 s_offset_d1 = 0
50149 DO id = 1, nl_d
50150 buffer1 = 0.0_dp
50151 imax = 3*1*6
50152 kmax = 6
50153 DO i = 1, imax
50154 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
50155 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
50156 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
50157 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
50158 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
50159 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
50160 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
50161 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
50162 END DO
50163 buffer2 = 0.0_dp
50164 imax = 5*1*6
50165 kmax = 3
50166 DO i = 1, imax
50167 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
50168 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
50169 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
50170 END DO
50171 buffer1 = 0.0_dp
50172 imax = 5*3*6
50173 kmax = 1
50174 DO i = 1, imax
50175 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
50176 END DO
50177 imax = 5*3*1
50178 kmax = 6
50179 i = 0
50180 DO i1 = 1, 1
50181 DO i2 = 1, 3
50182 DO i3 = 1, 5
50183 i = i + 1
50184 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
50185 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
50186 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
50187 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
50188 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
50189 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
50190 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
50191 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
50192 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
50193 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
50194 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
50195 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
50196 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
50197 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
50198 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
50199 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
50200 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
50201 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
50202 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
50203 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
50204 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
50205 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
50206 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
50207 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
50208 END DO
50209 END DO
50210 END DO
50211 s_offset_d1 = s_offset_d1 + 5
50212 END DO
50213 s_offset_c1 = s_offset_c1 + 1
50214 END DO
50215 s_offset_b1 = s_offset_b1 + 3
50216 END DO
50217 s_offset_a1 = s_offset_a1 + 5
50218 END DO
50219 END SUBROUTINE contract_dpsd
50220#endif
50221#if __MAX_CONTR > 3 || __MAX_CONTR == 3
50222! **************************************************************************************************
50223!> \brief ...
50224!> \param work ...
50225!> \param nl_a ...
50226!> \param nl_b ...
50227!> \param nl_c ...
50228!> \param nl_d ...
50229!> \param sphi_a ...
50230!> \param sphi_b ...
50231!> \param sphi_c ...
50232!> \param sphi_d ...
50233!> \param primitives ...
50234!> \param buffer1 ...
50235!> \param buffer2 ...
50236! **************************************************************************************************
50237 SUBROUTINE contract_dpsf(work, &
50238 nl_a, nl_b, nl_c, nl_d, &
50239 sphi_a, sphi_b, sphi_c, sphi_d, &
50240 primitives, &
50241 buffer1, buffer2)
50242 REAL(dp), DIMENSION(6*3*1*10), INTENT(IN) :: work
50243 INTEGER :: nl_a, nl_b, nl_c, nl_d
50244 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
50245 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
50246 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
50247 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
50248 REAL(dp), &
50249 DIMENSION(5*nl_a, 3*nl_b, 1*nl_c, 7*nl_d) :: primitives
50250 REAL(dp), DIMENSION(6*3*1*10) :: buffer1, buffer2
50251
50252 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
50253 kmax, s_offset_a1, s_offset_b1, &
50254 s_offset_c1, s_offset_d1
50255
50256 s_offset_a1 = 0
50257 DO ia = 1, nl_a
50258 s_offset_b1 = 0
50259 DO ib = 1, nl_b
50260 s_offset_c1 = 0
50261 DO ic = 1, nl_c
50262 s_offset_d1 = 0
50263 DO id = 1, nl_d
50264 buffer1 = 0.0_dp
50265 imax = 3*1*10
50266 kmax = 6
50267 DO i = 1, imax
50268 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
50269 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
50270 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
50271 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
50272 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
50273 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
50274 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
50275 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
50276 END DO
50277 buffer2 = 0.0_dp
50278 imax = 5*1*10
50279 kmax = 3
50280 DO i = 1, imax
50281 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
50282 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
50283 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
50284 END DO
50285 buffer1 = 0.0_dp
50286 imax = 5*3*10
50287 kmax = 1
50288 DO i = 1, imax
50289 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
50290 END DO
50291 imax = 5*3*1
50292 kmax = 10
50293 i = 0
50294 DO i1 = 1, 1
50295 DO i2 = 1, 3
50296 DO i3 = 1, 5
50297 i = i + 1
50298 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
50299 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
50300 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
50301 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
50302 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
50303 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
50304 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
50305 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
50306 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
50307 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
50308 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
50309 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
50310 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
50311 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
50312 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
50313 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
50314 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
50315 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
50316 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
50317 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
50318 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
50319 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
50320 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
50321 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
50322 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
50323 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
50324 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
50325 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
50326 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
50327 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
50328 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
50329 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
50330 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
50331 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
50332 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
50333 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
50334 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
50335 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
50336 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
50337 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
50338 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
50339 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
50340 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
50341 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
50342 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
50343 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
50344 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
50345 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
50346 END DO
50347 END DO
50348 END DO
50349 s_offset_d1 = s_offset_d1 + 7
50350 END DO
50351 s_offset_c1 = s_offset_c1 + 1
50352 END DO
50353 s_offset_b1 = s_offset_b1 + 3
50354 END DO
50355 s_offset_a1 = s_offset_a1 + 5
50356 END DO
50357 END SUBROUTINE contract_dpsf
50358#endif
50359#if __MAX_CONTR > 4 || __MAX_CONTR == 4
50360! **************************************************************************************************
50361!> \brief ...
50362!> \param work ...
50363!> \param nl_a ...
50364!> \param nl_b ...
50365!> \param nl_c ...
50366!> \param nl_d ...
50367!> \param sphi_a ...
50368!> \param sphi_b ...
50369!> \param sphi_c ...
50370!> \param sphi_d ...
50371!> \param primitives ...
50372!> \param buffer1 ...
50373!> \param buffer2 ...
50374! **************************************************************************************************
50375 SUBROUTINE contract_dpsg(work, &
50376 nl_a, nl_b, nl_c, nl_d, &
50377 sphi_a, sphi_b, sphi_c, sphi_d, &
50378 primitives, &
50379 buffer1, buffer2)
50380 REAL(dp), DIMENSION(6*3*1*15), INTENT(IN) :: work
50381 INTEGER :: nl_a, nl_b, nl_c, nl_d
50382 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
50383 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
50384 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
50385 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
50386 REAL(dp), &
50387 DIMENSION(5*nl_a, 3*nl_b, 1*nl_c, 9*nl_d) :: primitives
50388 REAL(dp), DIMENSION(6*3*1*15) :: buffer1, buffer2
50389
50390 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
50391 kmax, s_offset_a1, s_offset_b1, &
50392 s_offset_c1, s_offset_d1
50393
50394 s_offset_a1 = 0
50395 DO ia = 1, nl_a
50396 s_offset_b1 = 0
50397 DO ib = 1, nl_b
50398 s_offset_c1 = 0
50399 DO ic = 1, nl_c
50400 s_offset_d1 = 0
50401 DO id = 1, nl_d
50402 buffer1 = 0.0_dp
50403 imax = 3*1*15
50404 kmax = 6
50405 DO i = 1, imax
50406 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
50407 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
50408 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
50409 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
50410 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
50411 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
50412 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
50413 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
50414 END DO
50415 buffer2 = 0.0_dp
50416 imax = 5*1*15
50417 kmax = 3
50418 DO i = 1, imax
50419 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
50420 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
50421 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
50422 END DO
50423 buffer1 = 0.0_dp
50424 imax = 5*3*15
50425 kmax = 1
50426 DO i = 1, imax
50427 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
50428 END DO
50429 imax = 5*3*1
50430 kmax = 15
50431 i = 0
50432 DO i1 = 1, 1
50433 DO i2 = 1, 3
50434 DO i3 = 1, 5
50435 i = i + 1
50436 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
50437 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
50438 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
50439 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
50440 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
50441 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
50442 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
50443 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
50444 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
50445 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
50446 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
50447 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
50448 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
50449 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
50450 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
50451 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
50452 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
50453 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
50454 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
50455 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
50456 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
50457 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
50458 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
50459 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
50460 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
50461 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
50462 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
50463 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
50464 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
50465 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
50466 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
50467 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
50468 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
50469 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
50470 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
50471 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
50472 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
50473 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
50474 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
50475 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
50476 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
50477 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
50478 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
50479 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
50480 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
50481 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
50482 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
50483 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
50484 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
50485 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
50486 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
50487 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
50488 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
50489 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
50490 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
50491 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
50492 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
50493 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
50494 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
50495 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
50496 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
50497 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
50498 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
50499 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
50500 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
50501 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
50502 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
50503 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
50504 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
50505 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
50506 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
50507 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
50508 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
50509 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
50510 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
50511 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
50512 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
50513 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
50514 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
50515 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
50516 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
50517 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
50518 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
50519 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
50520 END DO
50521 END DO
50522 END DO
50523 s_offset_d1 = s_offset_d1 + 9
50524 END DO
50525 s_offset_c1 = s_offset_c1 + 1
50526 END DO
50527 s_offset_b1 = s_offset_b1 + 3
50528 END DO
50529 s_offset_a1 = s_offset_a1 + 5
50530 END DO
50531 END SUBROUTINE contract_dpsg
50532#endif
50533#if __MAX_CONTR > 2 || __MAX_CONTR == 2
50534! **************************************************************************************************
50535!> \brief ...
50536!> \param work ...
50537!> \param nl_a ...
50538!> \param nl_b ...
50539!> \param nl_c ...
50540!> \param nl_d ...
50541!> \param sphi_a ...
50542!> \param sphi_b ...
50543!> \param sphi_c ...
50544!> \param sphi_d ...
50545!> \param primitives ...
50546!> \param buffer1 ...
50547!> \param buffer2 ...
50548! **************************************************************************************************
50549 SUBROUTINE contract_dpps(work, &
50550 nl_a, nl_b, nl_c, nl_d, &
50551 sphi_a, sphi_b, sphi_c, sphi_d, &
50552 primitives, &
50553 buffer1, buffer2)
50554 REAL(dp), DIMENSION(6*3*3*1), INTENT(IN) :: work
50555 INTEGER :: nl_a, nl_b, nl_c, nl_d
50556 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
50557 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
50558 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
50559 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
50560 REAL(dp), &
50561 DIMENSION(5*nl_a, 3*nl_b, 3*nl_c, 1*nl_d) :: primitives
50562 REAL(dp), DIMENSION(6*3*3*1) :: buffer1, buffer2
50563
50564 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
50565 kmax, s_offset_a1, s_offset_b1, &
50566 s_offset_c1, s_offset_d1
50567
50568 s_offset_a1 = 0
50569 DO ia = 1, nl_a
50570 s_offset_b1 = 0
50571 DO ib = 1, nl_b
50572 s_offset_c1 = 0
50573 DO ic = 1, nl_c
50574 s_offset_d1 = 0
50575 DO id = 1, nl_d
50576 buffer1 = 0.0_dp
50577 imax = 3*3*1
50578 kmax = 6
50579 DO i = 1, imax
50580 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
50581 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
50582 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
50583 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
50584 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
50585 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
50586 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
50587 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
50588 END DO
50589 buffer2 = 0.0_dp
50590 imax = 5*3*1
50591 kmax = 3
50592 DO i = 1, imax
50593 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
50594 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
50595 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
50596 END DO
50597 buffer1 = 0.0_dp
50598 imax = 5*3*1
50599 kmax = 3
50600 DO i = 1, imax
50601 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
50602 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
50603 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
50604 END DO
50605 imax = 5*3*3
50606 kmax = 1
50607 i = 0
50608 DO i1 = 1, 3
50609 DO i2 = 1, 3
50610 DO i3 = 1, 5
50611 i = i + 1
50612 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
50613 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
50614 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
50615 END DO
50616 END DO
50617 END DO
50618 s_offset_d1 = s_offset_d1 + 1
50619 END DO
50620 s_offset_c1 = s_offset_c1 + 3
50621 END DO
50622 s_offset_b1 = s_offset_b1 + 3
50623 END DO
50624 s_offset_a1 = s_offset_a1 + 5
50625 END DO
50626 END SUBROUTINE contract_dpps
50627#endif
50628#if __MAX_CONTR > 2 || __MAX_CONTR == 2
50629! **************************************************************************************************
50630!> \brief ...
50631!> \param work ...
50632!> \param nl_a ...
50633!> \param nl_b ...
50634!> \param nl_c ...
50635!> \param nl_d ...
50636!> \param sphi_a ...
50637!> \param sphi_b ...
50638!> \param sphi_c ...
50639!> \param sphi_d ...
50640!> \param primitives ...
50641!> \param buffer1 ...
50642!> \param buffer2 ...
50643! **************************************************************************************************
50644 SUBROUTINE contract_dppp(work, &
50645 nl_a, nl_b, nl_c, nl_d, &
50646 sphi_a, sphi_b, sphi_c, sphi_d, &
50647 primitives, &
50648 buffer1, buffer2)
50649 REAL(dp), DIMENSION(6*3*3*3), INTENT(IN) :: work
50650 INTEGER :: nl_a, nl_b, nl_c, nl_d
50651 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
50652 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
50653 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
50654 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
50655 REAL(dp), &
50656 DIMENSION(5*nl_a, 3*nl_b, 3*nl_c, 3*nl_d) :: primitives
50657 REAL(dp), DIMENSION(6*3*3*3) :: buffer1, buffer2
50658
50659 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
50660 kmax, s_offset_a1, s_offset_b1, &
50661 s_offset_c1, s_offset_d1
50662
50663 s_offset_a1 = 0
50664 DO ia = 1, nl_a
50665 s_offset_b1 = 0
50666 DO ib = 1, nl_b
50667 s_offset_c1 = 0
50668 DO ic = 1, nl_c
50669 s_offset_d1 = 0
50670 DO id = 1, nl_d
50671 buffer1 = 0.0_dp
50672 imax = 3*3*3
50673 kmax = 6
50674 DO i = 1, imax
50675 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
50676 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
50677 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
50678 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
50679 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
50680 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
50681 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
50682 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
50683 END DO
50684 buffer2 = 0.0_dp
50685 imax = 5*3*3
50686 kmax = 3
50687 DO i = 1, imax
50688 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
50689 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
50690 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
50691 END DO
50692 buffer1 = 0.0_dp
50693 imax = 5*3*3
50694 kmax = 3
50695 DO i = 1, imax
50696 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
50697 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
50698 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
50699 END DO
50700 imax = 5*3*3
50701 kmax = 3
50702 i = 0
50703 DO i1 = 1, 3
50704 DO i2 = 1, 3
50705 DO i3 = 1, 5
50706 i = i + 1
50707 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
50708 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
50709 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
50710 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
50711 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
50712 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
50713 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
50714 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
50715 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
50716 END DO
50717 END DO
50718 END DO
50719 s_offset_d1 = s_offset_d1 + 3
50720 END DO
50721 s_offset_c1 = s_offset_c1 + 3
50722 END DO
50723 s_offset_b1 = s_offset_b1 + 3
50724 END DO
50725 s_offset_a1 = s_offset_a1 + 5
50726 END DO
50727 END SUBROUTINE contract_dppp
50728#endif
50729#if __MAX_CONTR > 2 || __MAX_CONTR == 2
50730! **************************************************************************************************
50731!> \brief ...
50732!> \param work ...
50733!> \param nl_a ...
50734!> \param nl_b ...
50735!> \param nl_c ...
50736!> \param nl_d ...
50737!> \param sphi_a ...
50738!> \param sphi_b ...
50739!> \param sphi_c ...
50740!> \param sphi_d ...
50741!> \param primitives ...
50742!> \param buffer1 ...
50743!> \param buffer2 ...
50744! **************************************************************************************************
50745 SUBROUTINE contract_dppd(work, &
50746 nl_a, nl_b, nl_c, nl_d, &
50747 sphi_a, sphi_b, sphi_c, sphi_d, &
50748 primitives, &
50749 buffer1, buffer2)
50750 REAL(dp), DIMENSION(6*3*3*6), INTENT(IN) :: work
50751 INTEGER :: nl_a, nl_b, nl_c, nl_d
50752 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
50753 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
50754 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
50755 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
50756 REAL(dp), &
50757 DIMENSION(5*nl_a, 3*nl_b, 3*nl_c, 5*nl_d) :: primitives
50758 REAL(dp), DIMENSION(6*3*3*6) :: buffer1, buffer2
50759
50760 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
50761 kmax, s_offset_a1, s_offset_b1, &
50762 s_offset_c1, s_offset_d1
50763
50764 s_offset_a1 = 0
50765 DO ia = 1, nl_a
50766 s_offset_b1 = 0
50767 DO ib = 1, nl_b
50768 s_offset_c1 = 0
50769 DO ic = 1, nl_c
50770 s_offset_d1 = 0
50771 DO id = 1, nl_d
50772 buffer1 = 0.0_dp
50773 imax = 3*3*6
50774 kmax = 6
50775 DO i = 1, imax
50776 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
50777 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
50778 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
50779 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
50780 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
50781 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
50782 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
50783 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
50784 END DO
50785 buffer2 = 0.0_dp
50786 imax = 5*3*6
50787 kmax = 3
50788 DO i = 1, imax
50789 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
50790 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
50791 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
50792 END DO
50793 buffer1 = 0.0_dp
50794 imax = 5*3*6
50795 kmax = 3
50796 DO i = 1, imax
50797 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
50798 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
50799 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
50800 END DO
50801 imax = 5*3*3
50802 kmax = 6
50803 i = 0
50804 DO i1 = 1, 3
50805 DO i2 = 1, 3
50806 DO i3 = 1, 5
50807 i = i + 1
50808 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
50809 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
50810 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
50811 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
50812 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
50813 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
50814 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
50815 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
50816 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
50817 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
50818 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
50819 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
50820 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
50821 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
50822 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
50823 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
50824 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
50825 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
50826 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
50827 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
50828 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
50829 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
50830 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
50831 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
50832 END DO
50833 END DO
50834 END DO
50835 s_offset_d1 = s_offset_d1 + 5
50836 END DO
50837 s_offset_c1 = s_offset_c1 + 3
50838 END DO
50839 s_offset_b1 = s_offset_b1 + 3
50840 END DO
50841 s_offset_a1 = s_offset_a1 + 5
50842 END DO
50843 END SUBROUTINE contract_dppd
50844#endif
50845#if __MAX_CONTR > 3 || __MAX_CONTR == 3
50846! **************************************************************************************************
50847!> \brief ...
50848!> \param work ...
50849!> \param nl_a ...
50850!> \param nl_b ...
50851!> \param nl_c ...
50852!> \param nl_d ...
50853!> \param sphi_a ...
50854!> \param sphi_b ...
50855!> \param sphi_c ...
50856!> \param sphi_d ...
50857!> \param primitives ...
50858!> \param buffer1 ...
50859!> \param buffer2 ...
50860! **************************************************************************************************
50861 SUBROUTINE contract_dppf(work, &
50862 nl_a, nl_b, nl_c, nl_d, &
50863 sphi_a, sphi_b, sphi_c, sphi_d, &
50864 primitives, &
50865 buffer1, buffer2)
50866 REAL(dp), DIMENSION(6*3*3*10), INTENT(IN) :: work
50867 INTEGER :: nl_a, nl_b, nl_c, nl_d
50868 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
50869 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
50870 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
50871 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
50872 REAL(dp), &
50873 DIMENSION(5*nl_a, 3*nl_b, 3*nl_c, 7*nl_d) :: primitives
50874 REAL(dp), DIMENSION(6*3*3*10) :: buffer1, buffer2
50875
50876 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
50877 kmax, s_offset_a1, s_offset_b1, &
50878 s_offset_c1, s_offset_d1
50879
50880 s_offset_a1 = 0
50881 DO ia = 1, nl_a
50882 s_offset_b1 = 0
50883 DO ib = 1, nl_b
50884 s_offset_c1 = 0
50885 DO ic = 1, nl_c
50886 s_offset_d1 = 0
50887 DO id = 1, nl_d
50888 buffer1 = 0.0_dp
50889 imax = 3*3*10
50890 kmax = 6
50891 DO i = 1, imax
50892 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
50893 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
50894 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
50895 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
50896 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
50897 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
50898 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
50899 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
50900 END DO
50901 buffer2 = 0.0_dp
50902 imax = 5*3*10
50903 kmax = 3
50904 DO i = 1, imax
50905 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
50906 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
50907 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
50908 END DO
50909 buffer1 = 0.0_dp
50910 imax = 5*3*10
50911 kmax = 3
50912 DO i = 1, imax
50913 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
50914 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
50915 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
50916 END DO
50917 imax = 5*3*3
50918 kmax = 10
50919 i = 0
50920 DO i1 = 1, 3
50921 DO i2 = 1, 3
50922 DO i3 = 1, 5
50923 i = i + 1
50924 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
50925 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
50926 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
50927 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
50928 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
50929 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
50930 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
50931 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
50932 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
50933 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
50934 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
50935 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
50936 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
50937 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
50938 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
50939 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
50940 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
50941 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
50942 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
50943 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
50944 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
50945 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
50946 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
50947 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
50948 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
50949 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
50950 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
50951 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
50952 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
50953 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
50954 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
50955 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
50956 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
50957 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
50958 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
50959 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
50960 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
50961 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
50962 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
50963 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
50964 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
50965 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
50966 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
50967 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
50968 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
50969 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
50970 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
50971 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
50972 END DO
50973 END DO
50974 END DO
50975 s_offset_d1 = s_offset_d1 + 7
50976 END DO
50977 s_offset_c1 = s_offset_c1 + 3
50978 END DO
50979 s_offset_b1 = s_offset_b1 + 3
50980 END DO
50981 s_offset_a1 = s_offset_a1 + 5
50982 END DO
50983 END SUBROUTINE contract_dppf
50984#endif
50985#if __MAX_CONTR > 4 || __MAX_CONTR == 4
50986! **************************************************************************************************
50987!> \brief ...
50988!> \param work ...
50989!> \param nl_a ...
50990!> \param nl_b ...
50991!> \param nl_c ...
50992!> \param nl_d ...
50993!> \param sphi_a ...
50994!> \param sphi_b ...
50995!> \param sphi_c ...
50996!> \param sphi_d ...
50997!> \param primitives ...
50998!> \param buffer1 ...
50999!> \param buffer2 ...
51000! **************************************************************************************************
51001 SUBROUTINE contract_dppg(work, &
51002 nl_a, nl_b, nl_c, nl_d, &
51003 sphi_a, sphi_b, sphi_c, sphi_d, &
51004 primitives, &
51005 buffer1, buffer2)
51006 REAL(dp), DIMENSION(6*3*3*15), INTENT(IN) :: work
51007 INTEGER :: nl_a, nl_b, nl_c, nl_d
51008 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
51009 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
51010 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
51011 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
51012 REAL(dp), &
51013 DIMENSION(5*nl_a, 3*nl_b, 3*nl_c, 9*nl_d) :: primitives
51014 REAL(dp), DIMENSION(6*3*3*15) :: buffer1, buffer2
51015
51016 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
51017 kmax, s_offset_a1, s_offset_b1, &
51018 s_offset_c1, s_offset_d1
51019
51020 s_offset_a1 = 0
51021 DO ia = 1, nl_a
51022 s_offset_b1 = 0
51023 DO ib = 1, nl_b
51024 s_offset_c1 = 0
51025 DO ic = 1, nl_c
51026 s_offset_d1 = 0
51027 DO id = 1, nl_d
51028 buffer1 = 0.0_dp
51029 imax = 3*3*15
51030 kmax = 6
51031 DO i = 1, imax
51032 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
51033 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
51034 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
51035 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
51036 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
51037 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
51038 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
51039 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
51040 END DO
51041 buffer2 = 0.0_dp
51042 imax = 5*3*15
51043 kmax = 3
51044 DO i = 1, imax
51045 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
51046 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
51047 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
51048 END DO
51049 buffer1 = 0.0_dp
51050 imax = 5*3*15
51051 kmax = 3
51052 DO i = 1, imax
51053 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
51054 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
51055 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
51056 END DO
51057 imax = 5*3*3
51058 kmax = 15
51059 i = 0
51060 DO i1 = 1, 3
51061 DO i2 = 1, 3
51062 DO i3 = 1, 5
51063 i = i + 1
51064 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
51065 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
51066 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
51067 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
51068 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
51069 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
51070 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
51071 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
51072 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
51073 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
51074 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
51075 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
51076 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
51077 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
51078 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
51079 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
51080 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
51081 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
51082 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
51083 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
51084 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
51085 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
51086 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
51087 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
51088 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
51089 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
51090 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
51091 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
51092 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
51093 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
51094 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
51095 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
51096 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
51097 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
51098 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
51099 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
51100 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
51101 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
51102 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
51103 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
51104 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
51105 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
51106 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
51107 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
51108 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
51109 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
51110 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
51111 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
51112 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
51113 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
51114 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
51115 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
51116 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
51117 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
51118 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
51119 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
51120 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
51121 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
51122 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
51123 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
51124 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
51125 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
51126 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
51127 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
51128 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
51129 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
51130 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
51131 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
51132 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
51133 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
51134 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
51135 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
51136 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
51137 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
51138 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
51139 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
51140 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
51141 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
51142 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
51143 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
51144 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
51145 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
51146 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
51147 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
51148 END DO
51149 END DO
51150 END DO
51151 s_offset_d1 = s_offset_d1 + 9
51152 END DO
51153 s_offset_c1 = s_offset_c1 + 3
51154 END DO
51155 s_offset_b1 = s_offset_b1 + 3
51156 END DO
51157 s_offset_a1 = s_offset_a1 + 5
51158 END DO
51159 END SUBROUTINE contract_dppg
51160#endif
51161#if __MAX_CONTR > 2 || __MAX_CONTR == 2
51162! **************************************************************************************************
51163!> \brief ...
51164!> \param work ...
51165!> \param nl_a ...
51166!> \param nl_b ...
51167!> \param nl_c ...
51168!> \param nl_d ...
51169!> \param sphi_a ...
51170!> \param sphi_b ...
51171!> \param sphi_c ...
51172!> \param sphi_d ...
51173!> \param primitives ...
51174!> \param buffer1 ...
51175!> \param buffer2 ...
51176! **************************************************************************************************
51177 SUBROUTINE contract_dpds(work, &
51178 nl_a, nl_b, nl_c, nl_d, &
51179 sphi_a, sphi_b, sphi_c, sphi_d, &
51180 primitives, &
51181 buffer1, buffer2)
51182 REAL(dp), DIMENSION(6*3*6*1), INTENT(IN) :: work
51183 INTEGER :: nl_a, nl_b, nl_c, nl_d
51184 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
51185 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
51186 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
51187 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
51188 REAL(dp), &
51189 DIMENSION(5*nl_a, 3*nl_b, 5*nl_c, 1*nl_d) :: primitives
51190 REAL(dp), DIMENSION(6*3*6*1) :: buffer1, buffer2
51191
51192 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
51193 kmax, s_offset_a1, s_offset_b1, &
51194 s_offset_c1, s_offset_d1
51195
51196 s_offset_a1 = 0
51197 DO ia = 1, nl_a
51198 s_offset_b1 = 0
51199 DO ib = 1, nl_b
51200 s_offset_c1 = 0
51201 DO ic = 1, nl_c
51202 s_offset_d1 = 0
51203 DO id = 1, nl_d
51204 buffer1 = 0.0_dp
51205 imax = 3*6*1
51206 kmax = 6
51207 DO i = 1, imax
51208 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
51209 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
51210 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
51211 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
51212 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
51213 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
51214 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
51215 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
51216 END DO
51217 buffer2 = 0.0_dp
51218 imax = 5*6*1
51219 kmax = 3
51220 DO i = 1, imax
51221 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
51222 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
51223 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
51224 END DO
51225 buffer1 = 0.0_dp
51226 imax = 5*3*1
51227 kmax = 6
51228 DO i = 1, imax
51229 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
51230 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
51231 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
51232 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
51233 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
51234 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
51235 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
51236 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
51237 END DO
51238 imax = 5*3*5
51239 kmax = 1
51240 i = 0
51241 DO i1 = 1, 5
51242 DO i2 = 1, 3
51243 DO i3 = 1, 5
51244 i = i + 1
51245 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
51246 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
51247 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
51248 END DO
51249 END DO
51250 END DO
51251 s_offset_d1 = s_offset_d1 + 1
51252 END DO
51253 s_offset_c1 = s_offset_c1 + 5
51254 END DO
51255 s_offset_b1 = s_offset_b1 + 3
51256 END DO
51257 s_offset_a1 = s_offset_a1 + 5
51258 END DO
51259 END SUBROUTINE contract_dpds
51260#endif
51261#if __MAX_CONTR > 2 || __MAX_CONTR == 2
51262! **************************************************************************************************
51263!> \brief ...
51264!> \param work ...
51265!> \param nl_a ...
51266!> \param nl_b ...
51267!> \param nl_c ...
51268!> \param nl_d ...
51269!> \param sphi_a ...
51270!> \param sphi_b ...
51271!> \param sphi_c ...
51272!> \param sphi_d ...
51273!> \param primitives ...
51274!> \param buffer1 ...
51275!> \param buffer2 ...
51276! **************************************************************************************************
51277 SUBROUTINE contract_dpdp(work, &
51278 nl_a, nl_b, nl_c, nl_d, &
51279 sphi_a, sphi_b, sphi_c, sphi_d, &
51280 primitives, &
51281 buffer1, buffer2)
51282 REAL(dp), DIMENSION(6*3*6*3), INTENT(IN) :: work
51283 INTEGER :: nl_a, nl_b, nl_c, nl_d
51284 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
51285 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
51286 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
51287 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
51288 REAL(dp), &
51289 DIMENSION(5*nl_a, 3*nl_b, 5*nl_c, 3*nl_d) :: primitives
51290 REAL(dp), DIMENSION(6*3*6*3) :: buffer1, buffer2
51291
51292 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
51293 kmax, s_offset_a1, s_offset_b1, &
51294 s_offset_c1, s_offset_d1
51295
51296 s_offset_a1 = 0
51297 DO ia = 1, nl_a
51298 s_offset_b1 = 0
51299 DO ib = 1, nl_b
51300 s_offset_c1 = 0
51301 DO ic = 1, nl_c
51302 s_offset_d1 = 0
51303 DO id = 1, nl_d
51304 buffer1 = 0.0_dp
51305 imax = 3*6*3
51306 kmax = 6
51307 DO i = 1, imax
51308 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
51309 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
51310 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
51311 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
51312 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
51313 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
51314 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
51315 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
51316 END DO
51317 buffer2 = 0.0_dp
51318 imax = 5*6*3
51319 kmax = 3
51320 DO i = 1, imax
51321 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
51322 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
51323 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
51324 END DO
51325 buffer1 = 0.0_dp
51326 imax = 5*3*3
51327 kmax = 6
51328 DO i = 1, imax
51329 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
51330 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
51331 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
51332 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
51333 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
51334 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
51335 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
51336 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
51337 END DO
51338 imax = 5*3*5
51339 kmax = 3
51340 i = 0
51341 DO i1 = 1, 5
51342 DO i2 = 1, 3
51343 DO i3 = 1, 5
51344 i = i + 1
51345 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
51346 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
51347 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
51348 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
51349 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
51350 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
51351 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
51352 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
51353 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
51354 END DO
51355 END DO
51356 END DO
51357 s_offset_d1 = s_offset_d1 + 3
51358 END DO
51359 s_offset_c1 = s_offset_c1 + 5
51360 END DO
51361 s_offset_b1 = s_offset_b1 + 3
51362 END DO
51363 s_offset_a1 = s_offset_a1 + 5
51364 END DO
51365 END SUBROUTINE contract_dpdp
51366#endif
51367#if __MAX_CONTR > 2 || __MAX_CONTR == 2
51368! **************************************************************************************************
51369!> \brief ...
51370!> \param work ...
51371!> \param nl_a ...
51372!> \param nl_b ...
51373!> \param nl_c ...
51374!> \param nl_d ...
51375!> \param sphi_a ...
51376!> \param sphi_b ...
51377!> \param sphi_c ...
51378!> \param sphi_d ...
51379!> \param primitives ...
51380!> \param buffer1 ...
51381!> \param buffer2 ...
51382! **************************************************************************************************
51383 SUBROUTINE contract_dpdd(work, &
51384 nl_a, nl_b, nl_c, nl_d, &
51385 sphi_a, sphi_b, sphi_c, sphi_d, &
51386 primitives, &
51387 buffer1, buffer2)
51388 REAL(dp), DIMENSION(6*3*6*6), INTENT(IN) :: work
51389 INTEGER :: nl_a, nl_b, nl_c, nl_d
51390 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
51391 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
51392 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
51393 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
51394 REAL(dp), &
51395 DIMENSION(5*nl_a, 3*nl_b, 5*nl_c, 5*nl_d) :: primitives
51396 REAL(dp), DIMENSION(6*3*6*6) :: buffer1, buffer2
51397
51398 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
51399 kmax, s_offset_a1, s_offset_b1, &
51400 s_offset_c1, s_offset_d1
51401
51402 s_offset_a1 = 0
51403 DO ia = 1, nl_a
51404 s_offset_b1 = 0
51405 DO ib = 1, nl_b
51406 s_offset_c1 = 0
51407 DO ic = 1, nl_c
51408 s_offset_d1 = 0
51409 DO id = 1, nl_d
51410 buffer1 = 0.0_dp
51411 imax = 3*6*6
51412 kmax = 6
51413 DO i = 1, imax
51414 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
51415 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
51416 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
51417 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
51418 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
51419 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
51420 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
51421 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
51422 END DO
51423 buffer2 = 0.0_dp
51424 imax = 5*6*6
51425 kmax = 3
51426 DO i = 1, imax
51427 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
51428 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
51429 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
51430 END DO
51431 buffer1 = 0.0_dp
51432 imax = 5*3*6
51433 kmax = 6
51434 DO i = 1, imax
51435 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
51436 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
51437 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
51438 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
51439 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
51440 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
51441 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
51442 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
51443 END DO
51444 imax = 5*3*5
51445 kmax = 6
51446 i = 0
51447 DO i1 = 1, 5
51448 DO i2 = 1, 3
51449 DO i3 = 1, 5
51450 i = i + 1
51451 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
51452 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
51453 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
51454 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
51455 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
51456 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
51457 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
51458 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
51459 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
51460 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
51461 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
51462 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
51463 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
51464 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
51465 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
51466 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
51467 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
51468 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
51469 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
51470 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
51471 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
51472 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
51473 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
51474 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
51475 END DO
51476 END DO
51477 END DO
51478 s_offset_d1 = s_offset_d1 + 5
51479 END DO
51480 s_offset_c1 = s_offset_c1 + 5
51481 END DO
51482 s_offset_b1 = s_offset_b1 + 3
51483 END DO
51484 s_offset_a1 = s_offset_a1 + 5
51485 END DO
51486 END SUBROUTINE contract_dpdd
51487#endif
51488#if __MAX_CONTR > 3 || __MAX_CONTR == 3
51489! **************************************************************************************************
51490!> \brief ...
51491!> \param work ...
51492!> \param nl_a ...
51493!> \param nl_b ...
51494!> \param nl_c ...
51495!> \param nl_d ...
51496!> \param sphi_a ...
51497!> \param sphi_b ...
51498!> \param sphi_c ...
51499!> \param sphi_d ...
51500!> \param primitives ...
51501!> \param buffer1 ...
51502!> \param buffer2 ...
51503! **************************************************************************************************
51504 SUBROUTINE contract_dpdf(work, &
51505 nl_a, nl_b, nl_c, nl_d, &
51506 sphi_a, sphi_b, sphi_c, sphi_d, &
51507 primitives, &
51508 buffer1, buffer2)
51509 REAL(dp), DIMENSION(6*3*6*10), INTENT(IN) :: work
51510 INTEGER :: nl_a, nl_b, nl_c, nl_d
51511 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
51512 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
51513 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
51514 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
51515 REAL(dp), &
51516 DIMENSION(5*nl_a, 3*nl_b, 5*nl_c, 7*nl_d) :: primitives
51517 REAL(dp), DIMENSION(6*3*6*10) :: buffer1, buffer2
51518
51519 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
51520 kmax, s_offset_a1, s_offset_b1, &
51521 s_offset_c1, s_offset_d1
51522
51523 s_offset_a1 = 0
51524 DO ia = 1, nl_a
51525 s_offset_b1 = 0
51526 DO ib = 1, nl_b
51527 s_offset_c1 = 0
51528 DO ic = 1, nl_c
51529 s_offset_d1 = 0
51530 DO id = 1, nl_d
51531 buffer1 = 0.0_dp
51532 imax = 3*6*10
51533 kmax = 6
51534 DO i = 1, imax
51535 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
51536 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
51537 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
51538 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
51539 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
51540 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
51541 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
51542 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
51543 END DO
51544 buffer2 = 0.0_dp
51545 imax = 5*6*10
51546 kmax = 3
51547 DO i = 1, imax
51548 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
51549 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
51550 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
51551 END DO
51552 buffer1 = 0.0_dp
51553 imax = 5*3*10
51554 kmax = 6
51555 DO i = 1, imax
51556 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
51557 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
51558 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
51559 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
51560 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
51561 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
51562 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
51563 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
51564 END DO
51565 imax = 5*3*5
51566 kmax = 10
51567 i = 0
51568 DO i1 = 1, 5
51569 DO i2 = 1, 3
51570 DO i3 = 1, 5
51571 i = i + 1
51572 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
51573 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
51574 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
51575 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
51576 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
51577 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
51578 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
51579 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
51580 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
51581 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
51582 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
51583 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
51584 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
51585 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
51586 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
51587 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
51588 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
51589 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
51590 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
51591 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
51592 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
51593 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
51594 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
51595 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
51596 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
51597 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
51598 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
51599 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
51600 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
51601 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
51602 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
51603 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
51604 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
51605 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
51606 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
51607 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
51608 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
51609 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
51610 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
51611 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
51612 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
51613 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
51614 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
51615 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
51616 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
51617 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
51618 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
51619 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
51620 END DO
51621 END DO
51622 END DO
51623 s_offset_d1 = s_offset_d1 + 7
51624 END DO
51625 s_offset_c1 = s_offset_c1 + 5
51626 END DO
51627 s_offset_b1 = s_offset_b1 + 3
51628 END DO
51629 s_offset_a1 = s_offset_a1 + 5
51630 END DO
51631 END SUBROUTINE contract_dpdf
51632#endif
51633#if __MAX_CONTR > 4 || __MAX_CONTR == 4
51634! **************************************************************************************************
51635!> \brief ...
51636!> \param work ...
51637!> \param nl_a ...
51638!> \param nl_b ...
51639!> \param nl_c ...
51640!> \param nl_d ...
51641!> \param sphi_a ...
51642!> \param sphi_b ...
51643!> \param sphi_c ...
51644!> \param sphi_d ...
51645!> \param primitives ...
51646!> \param buffer1 ...
51647!> \param buffer2 ...
51648! **************************************************************************************************
51649 SUBROUTINE contract_dpdg(work, &
51650 nl_a, nl_b, nl_c, nl_d, &
51651 sphi_a, sphi_b, sphi_c, sphi_d, &
51652 primitives, &
51653 buffer1, buffer2)
51654 REAL(dp), DIMENSION(6*3*6*15), INTENT(IN) :: work
51655 INTEGER :: nl_a, nl_b, nl_c, nl_d
51656 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
51657 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
51658 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
51659 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
51660 REAL(dp), &
51661 DIMENSION(5*nl_a, 3*nl_b, 5*nl_c, 9*nl_d) :: primitives
51662 REAL(dp), DIMENSION(6*3*6*15) :: buffer1, buffer2
51663
51664 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
51665 kmax, s_offset_a1, s_offset_b1, &
51666 s_offset_c1, s_offset_d1
51667
51668 s_offset_a1 = 0
51669 DO ia = 1, nl_a
51670 s_offset_b1 = 0
51671 DO ib = 1, nl_b
51672 s_offset_c1 = 0
51673 DO ic = 1, nl_c
51674 s_offset_d1 = 0
51675 DO id = 1, nl_d
51676 buffer1 = 0.0_dp
51677 imax = 3*6*15
51678 kmax = 6
51679 DO i = 1, imax
51680 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
51681 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
51682 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
51683 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
51684 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
51685 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
51686 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
51687 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
51688 END DO
51689 buffer2 = 0.0_dp
51690 imax = 5*6*15
51691 kmax = 3
51692 DO i = 1, imax
51693 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
51694 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
51695 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
51696 END DO
51697 buffer1 = 0.0_dp
51698 imax = 5*3*15
51699 kmax = 6
51700 DO i = 1, imax
51701 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
51702 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
51703 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
51704 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
51705 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
51706 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
51707 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
51708 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
51709 END DO
51710 imax = 5*3*5
51711 kmax = 15
51712 i = 0
51713 DO i1 = 1, 5
51714 DO i2 = 1, 3
51715 DO i3 = 1, 5
51716 i = i + 1
51717 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
51718 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
51719 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
51720 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
51721 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
51722 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
51723 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
51724 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
51725 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
51726 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
51727 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
51728 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
51729 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
51730 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
51731 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
51732 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
51733 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
51734 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
51735 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
51736 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
51737 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
51738 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
51739 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
51740 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
51741 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
51742 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
51743 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
51744 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
51745 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
51746 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
51747 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
51748 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
51749 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
51750 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
51751 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
51752 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
51753 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
51754 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
51755 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
51756 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
51757 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
51758 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
51759 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
51760 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
51761 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
51762 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
51763 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
51764 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
51765 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
51766 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
51767 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
51768 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
51769 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
51770 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
51771 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
51772 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
51773 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
51774 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
51775 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
51776 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
51777 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
51778 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
51779 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
51780 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
51781 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
51782 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
51783 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
51784 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
51785 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
51786 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
51787 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
51788 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
51789 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
51790 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
51791 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
51792 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
51793 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
51794 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
51795 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
51796 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
51797 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
51798 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
51799 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
51800 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
51801 END DO
51802 END DO
51803 END DO
51804 s_offset_d1 = s_offset_d1 + 9
51805 END DO
51806 s_offset_c1 = s_offset_c1 + 5
51807 END DO
51808 s_offset_b1 = s_offset_b1 + 3
51809 END DO
51810 s_offset_a1 = s_offset_a1 + 5
51811 END DO
51812 END SUBROUTINE contract_dpdg
51813#endif
51814#if __MAX_CONTR > 3 || __MAX_CONTR == 3
51815! **************************************************************************************************
51816!> \brief ...
51817!> \param work ...
51818!> \param nl_a ...
51819!> \param nl_b ...
51820!> \param nl_c ...
51821!> \param nl_d ...
51822!> \param sphi_a ...
51823!> \param sphi_b ...
51824!> \param sphi_c ...
51825!> \param sphi_d ...
51826!> \param primitives ...
51827!> \param buffer1 ...
51828!> \param buffer2 ...
51829! **************************************************************************************************
51830 SUBROUTINE contract_dpfs(work, &
51831 nl_a, nl_b, nl_c, nl_d, &
51832 sphi_a, sphi_b, sphi_c, sphi_d, &
51833 primitives, &
51834 buffer1, buffer2)
51835 REAL(dp), DIMENSION(6*3*10*1), INTENT(IN) :: work
51836 INTEGER :: nl_a, nl_b, nl_c, nl_d
51837 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
51838 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
51839 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
51840 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
51841 REAL(dp), &
51842 DIMENSION(5*nl_a, 3*nl_b, 7*nl_c, 1*nl_d) :: primitives
51843 REAL(dp), DIMENSION(6*3*10*1) :: buffer1, buffer2
51844
51845 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
51846 kmax, s_offset_a1, s_offset_b1, &
51847 s_offset_c1, s_offset_d1
51848
51849 s_offset_a1 = 0
51850 DO ia = 1, nl_a
51851 s_offset_b1 = 0
51852 DO ib = 1, nl_b
51853 s_offset_c1 = 0
51854 DO ic = 1, nl_c
51855 s_offset_d1 = 0
51856 DO id = 1, nl_d
51857 buffer1 = 0.0_dp
51858 imax = 3*10*1
51859 kmax = 6
51860 DO i = 1, imax
51861 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
51862 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
51863 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
51864 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
51865 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
51866 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
51867 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
51868 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
51869 END DO
51870 buffer2 = 0.0_dp
51871 imax = 5*10*1
51872 kmax = 3
51873 DO i = 1, imax
51874 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
51875 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
51876 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
51877 END DO
51878 buffer1 = 0.0_dp
51879 imax = 5*3*1
51880 kmax = 10
51881 DO i = 1, imax
51882 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
51883 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
51884 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
51885 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
51886 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
51887 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
51888 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
51889 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
51890 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
51891 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
51892 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
51893 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
51894 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
51895 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
51896 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
51897 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
51898 END DO
51899 imax = 5*3*7
51900 kmax = 1
51901 i = 0
51902 DO i1 = 1, 7
51903 DO i2 = 1, 3
51904 DO i3 = 1, 5
51905 i = i + 1
51906 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
51907 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
51908 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
51909 END DO
51910 END DO
51911 END DO
51912 s_offset_d1 = s_offset_d1 + 1
51913 END DO
51914 s_offset_c1 = s_offset_c1 + 7
51915 END DO
51916 s_offset_b1 = s_offset_b1 + 3
51917 END DO
51918 s_offset_a1 = s_offset_a1 + 5
51919 END DO
51920 END SUBROUTINE contract_dpfs
51921#endif
51922#if __MAX_CONTR > 3 || __MAX_CONTR == 3
51923! **************************************************************************************************
51924!> \brief ...
51925!> \param work ...
51926!> \param nl_a ...
51927!> \param nl_b ...
51928!> \param nl_c ...
51929!> \param nl_d ...
51930!> \param sphi_a ...
51931!> \param sphi_b ...
51932!> \param sphi_c ...
51933!> \param sphi_d ...
51934!> \param primitives ...
51935!> \param buffer1 ...
51936!> \param buffer2 ...
51937! **************************************************************************************************
51938 SUBROUTINE contract_dpfp(work, &
51939 nl_a, nl_b, nl_c, nl_d, &
51940 sphi_a, sphi_b, sphi_c, sphi_d, &
51941 primitives, &
51942 buffer1, buffer2)
51943 REAL(dp), DIMENSION(6*3*10*3), INTENT(IN) :: work
51944 INTEGER :: nl_a, nl_b, nl_c, nl_d
51945 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
51946 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
51947 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
51948 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
51949 REAL(dp), &
51950 DIMENSION(5*nl_a, 3*nl_b, 7*nl_c, 3*nl_d) :: primitives
51951 REAL(dp), DIMENSION(6*3*10*3) :: buffer1, buffer2
51952
51953 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
51954 kmax, s_offset_a1, s_offset_b1, &
51955 s_offset_c1, s_offset_d1
51956
51957 s_offset_a1 = 0
51958 DO ia = 1, nl_a
51959 s_offset_b1 = 0
51960 DO ib = 1, nl_b
51961 s_offset_c1 = 0
51962 DO ic = 1, nl_c
51963 s_offset_d1 = 0
51964 DO id = 1, nl_d
51965 buffer1 = 0.0_dp
51966 imax = 3*10*3
51967 kmax = 6
51968 DO i = 1, imax
51969 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
51970 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
51971 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
51972 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
51973 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
51974 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
51975 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
51976 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
51977 END DO
51978 buffer2 = 0.0_dp
51979 imax = 5*10*3
51980 kmax = 3
51981 DO i = 1, imax
51982 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
51983 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
51984 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
51985 END DO
51986 buffer1 = 0.0_dp
51987 imax = 5*3*3
51988 kmax = 10
51989 DO i = 1, imax
51990 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
51991 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
51992 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
51993 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
51994 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
51995 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
51996 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
51997 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
51998 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
51999 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
52000 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
52001 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
52002 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
52003 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
52004 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
52005 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
52006 END DO
52007 imax = 5*3*7
52008 kmax = 3
52009 i = 0
52010 DO i1 = 1, 7
52011 DO i2 = 1, 3
52012 DO i3 = 1, 5
52013 i = i + 1
52014 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
52015 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
52016 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
52017 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
52018 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
52019 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
52020 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
52021 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
52022 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
52023 END DO
52024 END DO
52025 END DO
52026 s_offset_d1 = s_offset_d1 + 3
52027 END DO
52028 s_offset_c1 = s_offset_c1 + 7
52029 END DO
52030 s_offset_b1 = s_offset_b1 + 3
52031 END DO
52032 s_offset_a1 = s_offset_a1 + 5
52033 END DO
52034 END SUBROUTINE contract_dpfp
52035#endif
52036#if __MAX_CONTR > 3 || __MAX_CONTR == 3
52037! **************************************************************************************************
52038!> \brief ...
52039!> \param work ...
52040!> \param nl_a ...
52041!> \param nl_b ...
52042!> \param nl_c ...
52043!> \param nl_d ...
52044!> \param sphi_a ...
52045!> \param sphi_b ...
52046!> \param sphi_c ...
52047!> \param sphi_d ...
52048!> \param primitives ...
52049!> \param buffer1 ...
52050!> \param buffer2 ...
52051! **************************************************************************************************
52052 SUBROUTINE contract_dpfd(work, &
52053 nl_a, nl_b, nl_c, nl_d, &
52054 sphi_a, sphi_b, sphi_c, sphi_d, &
52055 primitives, &
52056 buffer1, buffer2)
52057 REAL(dp), DIMENSION(6*3*10*6), INTENT(IN) :: work
52058 INTEGER :: nl_a, nl_b, nl_c, nl_d
52059 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
52060 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
52061 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
52062 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
52063 REAL(dp), &
52064 DIMENSION(5*nl_a, 3*nl_b, 7*nl_c, 5*nl_d) :: primitives
52065 REAL(dp), DIMENSION(6*3*10*6) :: buffer1, buffer2
52066
52067 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
52068 kmax, s_offset_a1, s_offset_b1, &
52069 s_offset_c1, s_offset_d1
52070
52071 s_offset_a1 = 0
52072 DO ia = 1, nl_a
52073 s_offset_b1 = 0
52074 DO ib = 1, nl_b
52075 s_offset_c1 = 0
52076 DO ic = 1, nl_c
52077 s_offset_d1 = 0
52078 DO id = 1, nl_d
52079 buffer1 = 0.0_dp
52080 imax = 3*10*6
52081 kmax = 6
52082 DO i = 1, imax
52083 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
52084 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
52085 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
52086 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
52087 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
52088 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
52089 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
52090 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
52091 END DO
52092 buffer2 = 0.0_dp
52093 imax = 5*10*6
52094 kmax = 3
52095 DO i = 1, imax
52096 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
52097 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
52098 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
52099 END DO
52100 buffer1 = 0.0_dp
52101 imax = 5*3*6
52102 kmax = 10
52103 DO i = 1, imax
52104 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
52105 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
52106 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
52107 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
52108 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
52109 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
52110 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
52111 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
52112 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
52113 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
52114 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
52115 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
52116 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
52117 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
52118 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
52119 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
52120 END DO
52121 imax = 5*3*7
52122 kmax = 6
52123 i = 0
52124 DO i1 = 1, 7
52125 DO i2 = 1, 3
52126 DO i3 = 1, 5
52127 i = i + 1
52128 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
52129 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
52130 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
52131 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
52132 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
52133 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
52134 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
52135 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
52136 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
52137 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
52138 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
52139 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
52140 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
52141 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
52142 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
52143 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
52144 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
52145 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
52146 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
52147 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
52148 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
52149 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
52150 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
52151 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
52152 END DO
52153 END DO
52154 END DO
52155 s_offset_d1 = s_offset_d1 + 5
52156 END DO
52157 s_offset_c1 = s_offset_c1 + 7
52158 END DO
52159 s_offset_b1 = s_offset_b1 + 3
52160 END DO
52161 s_offset_a1 = s_offset_a1 + 5
52162 END DO
52163 END SUBROUTINE contract_dpfd
52164#endif
52165#if __MAX_CONTR > 3 || __MAX_CONTR == 3
52166! **************************************************************************************************
52167!> \brief ...
52168!> \param work ...
52169!> \param nl_a ...
52170!> \param nl_b ...
52171!> \param nl_c ...
52172!> \param nl_d ...
52173!> \param sphi_a ...
52174!> \param sphi_b ...
52175!> \param sphi_c ...
52176!> \param sphi_d ...
52177!> \param primitives ...
52178!> \param buffer1 ...
52179!> \param buffer2 ...
52180! **************************************************************************************************
52181 SUBROUTINE contract_dpff(work, &
52182 nl_a, nl_b, nl_c, nl_d, &
52183 sphi_a, sphi_b, sphi_c, sphi_d, &
52184 primitives, &
52185 buffer1, buffer2)
52186 REAL(dp), DIMENSION(6*3*10*10), INTENT(IN) :: work
52187 INTEGER :: nl_a, nl_b, nl_c, nl_d
52188 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
52189 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
52190 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
52191 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
52192 REAL(dp), &
52193 DIMENSION(5*nl_a, 3*nl_b, 7*nl_c, 7*nl_d) :: primitives
52194 REAL(dp), DIMENSION(6*3*10*10) :: buffer1, buffer2
52195
52196 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
52197 kmax, s_offset_a1, s_offset_b1, &
52198 s_offset_c1, s_offset_d1
52199
52200 s_offset_a1 = 0
52201 DO ia = 1, nl_a
52202 s_offset_b1 = 0
52203 DO ib = 1, nl_b
52204 s_offset_c1 = 0
52205 DO ic = 1, nl_c
52206 s_offset_d1 = 0
52207 DO id = 1, nl_d
52208 buffer1 = 0.0_dp
52209 imax = 3*10*10
52210 kmax = 6
52211 DO i = 1, imax
52212 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
52213 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
52214 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
52215 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
52216 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
52217 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
52218 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
52219 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
52220 END DO
52221 buffer2 = 0.0_dp
52222 imax = 5*10*10
52223 kmax = 3
52224 DO i = 1, imax
52225 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
52226 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
52227 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
52228 END DO
52229 buffer1 = 0.0_dp
52230 imax = 5*3*10
52231 kmax = 10
52232 DO i = 1, imax
52233 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
52234 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
52235 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
52236 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
52237 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
52238 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
52239 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
52240 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
52241 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
52242 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
52243 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
52244 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
52245 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
52246 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
52247 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
52248 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
52249 END DO
52250 imax = 5*3*7
52251 kmax = 10
52252 i = 0
52253 DO i1 = 1, 7
52254 DO i2 = 1, 3
52255 DO i3 = 1, 5
52256 i = i + 1
52257 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
52258 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
52259 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
52260 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
52261 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
52262 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
52263 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
52264 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
52265 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
52266 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
52267 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
52268 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
52269 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
52270 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
52271 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
52272 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
52273 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
52274 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
52275 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
52276 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
52277 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
52278 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
52279 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
52280 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
52281 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
52282 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
52283 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
52284 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
52285 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
52286 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
52287 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
52288 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
52289 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
52290 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
52291 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
52292 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
52293 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
52294 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
52295 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
52296 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
52297 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
52298 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
52299 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
52300 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
52301 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
52302 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
52303 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
52304 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
52305 END DO
52306 END DO
52307 END DO
52308 s_offset_d1 = s_offset_d1 + 7
52309 END DO
52310 s_offset_c1 = s_offset_c1 + 7
52311 END DO
52312 s_offset_b1 = s_offset_b1 + 3
52313 END DO
52314 s_offset_a1 = s_offset_a1 + 5
52315 END DO
52316 END SUBROUTINE contract_dpff
52317#endif
52318#if __MAX_CONTR > 4 || __MAX_CONTR == 4
52319! **************************************************************************************************
52320!> \brief ...
52321!> \param work ...
52322!> \param nl_a ...
52323!> \param nl_b ...
52324!> \param nl_c ...
52325!> \param nl_d ...
52326!> \param sphi_a ...
52327!> \param sphi_b ...
52328!> \param sphi_c ...
52329!> \param sphi_d ...
52330!> \param primitives ...
52331!> \param buffer1 ...
52332!> \param buffer2 ...
52333! **************************************************************************************************
52334 SUBROUTINE contract_dpfg(work, &
52335 nl_a, nl_b, nl_c, nl_d, &
52336 sphi_a, sphi_b, sphi_c, sphi_d, &
52337 primitives, &
52338 buffer1, buffer2)
52339 REAL(dp), DIMENSION(6*3*10*15), INTENT(IN) :: work
52340 INTEGER :: nl_a, nl_b, nl_c, nl_d
52341 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
52342 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
52343 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
52344 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
52345 REAL(dp), &
52346 DIMENSION(5*nl_a, 3*nl_b, 7*nl_c, 9*nl_d) :: primitives
52347 REAL(dp), DIMENSION(6*3*10*15) :: buffer1, buffer2
52348
52349 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
52350 kmax, s_offset_a1, s_offset_b1, &
52351 s_offset_c1, s_offset_d1
52352
52353 s_offset_a1 = 0
52354 DO ia = 1, nl_a
52355 s_offset_b1 = 0
52356 DO ib = 1, nl_b
52357 s_offset_c1 = 0
52358 DO ic = 1, nl_c
52359 s_offset_d1 = 0
52360 DO id = 1, nl_d
52361 buffer1 = 0.0_dp
52362 imax = 3*10*15
52363 kmax = 6
52364 DO i = 1, imax
52365 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
52366 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
52367 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
52368 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
52369 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
52370 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
52371 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
52372 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
52373 END DO
52374 buffer2 = 0.0_dp
52375 imax = 5*10*15
52376 kmax = 3
52377 DO i = 1, imax
52378 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
52379 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
52380 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
52381 END DO
52382 buffer1 = 0.0_dp
52383 imax = 5*3*15
52384 kmax = 10
52385 DO i = 1, imax
52386 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
52387 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
52388 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
52389 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
52390 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
52391 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
52392 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
52393 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
52394 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
52395 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
52396 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
52397 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
52398 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
52399 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
52400 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
52401 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
52402 END DO
52403 imax = 5*3*7
52404 kmax = 15
52405 i = 0
52406 DO i1 = 1, 7
52407 DO i2 = 1, 3
52408 DO i3 = 1, 5
52409 i = i + 1
52410 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
52411 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
52412 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
52413 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
52414 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
52415 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
52416 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
52417 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
52418 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
52419 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
52420 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
52421 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
52422 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
52423 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
52424 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
52425 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
52426 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
52427 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
52428 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
52429 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
52430 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
52431 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
52432 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
52433 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
52434 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
52435 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
52436 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
52437 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
52438 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
52439 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
52440 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
52441 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
52442 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
52443 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
52444 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
52445 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
52446 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
52447 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
52448 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
52449 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
52450 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
52451 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
52452 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
52453 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
52454 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
52455 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
52456 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
52457 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
52458 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
52459 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
52460 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
52461 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
52462 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
52463 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
52464 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
52465 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
52466 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
52467 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
52468 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
52469 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
52470 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
52471 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
52472 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
52473 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
52474 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
52475 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
52476 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
52477 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
52478 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
52479 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
52480 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
52481 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
52482 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
52483 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
52484 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
52485 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
52486 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
52487 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
52488 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
52489 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
52490 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
52491 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
52492 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
52493 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
52494 END DO
52495 END DO
52496 END DO
52497 s_offset_d1 = s_offset_d1 + 9
52498 END DO
52499 s_offset_c1 = s_offset_c1 + 7
52500 END DO
52501 s_offset_b1 = s_offset_b1 + 3
52502 END DO
52503 s_offset_a1 = s_offset_a1 + 5
52504 END DO
52505 END SUBROUTINE contract_dpfg
52506#endif
52507#if __MAX_CONTR > 4 || __MAX_CONTR == 4
52508! **************************************************************************************************
52509!> \brief ...
52510!> \param work ...
52511!> \param nl_a ...
52512!> \param nl_b ...
52513!> \param nl_c ...
52514!> \param nl_d ...
52515!> \param sphi_a ...
52516!> \param sphi_b ...
52517!> \param sphi_c ...
52518!> \param sphi_d ...
52519!> \param primitives ...
52520!> \param buffer1 ...
52521!> \param buffer2 ...
52522! **************************************************************************************************
52523 SUBROUTINE contract_dpgs(work, &
52524 nl_a, nl_b, nl_c, nl_d, &
52525 sphi_a, sphi_b, sphi_c, sphi_d, &
52526 primitives, &
52527 buffer1, buffer2)
52528 REAL(dp), DIMENSION(6*3*15*1), INTENT(IN) :: work
52529 INTEGER :: nl_a, nl_b, nl_c, nl_d
52530 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
52531 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
52532 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
52533 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
52534 REAL(dp), &
52535 DIMENSION(5*nl_a, 3*nl_b, 9*nl_c, 1*nl_d) :: primitives
52536 REAL(dp), DIMENSION(6*3*15*1) :: buffer1, buffer2
52537
52538 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
52539 kmax, s_offset_a1, s_offset_b1, &
52540 s_offset_c1, s_offset_d1
52541
52542 s_offset_a1 = 0
52543 DO ia = 1, nl_a
52544 s_offset_b1 = 0
52545 DO ib = 1, nl_b
52546 s_offset_c1 = 0
52547 DO ic = 1, nl_c
52548 s_offset_d1 = 0
52549 DO id = 1, nl_d
52550 buffer1 = 0.0_dp
52551 imax = 3*15*1
52552 kmax = 6
52553 DO i = 1, imax
52554 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
52555 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
52556 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
52557 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
52558 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
52559 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
52560 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
52561 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
52562 END DO
52563 buffer2 = 0.0_dp
52564 imax = 5*15*1
52565 kmax = 3
52566 DO i = 1, imax
52567 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
52568 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
52569 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
52570 END DO
52571 buffer1 = 0.0_dp
52572 imax = 5*3*1
52573 kmax = 15
52574 DO i = 1, imax
52575 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
52576 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
52577 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
52578 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
52579 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
52580 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
52581 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
52582 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
52583 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
52584 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
52585 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
52586 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
52587 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
52588 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
52589 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
52590 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
52591 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
52592 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
52593 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
52594 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
52595 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
52596 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
52597 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
52598 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
52599 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
52600 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
52601 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
52602 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
52603 END DO
52604 imax = 5*3*9
52605 kmax = 1
52606 i = 0
52607 DO i1 = 1, 9
52608 DO i2 = 1, 3
52609 DO i3 = 1, 5
52610 i = i + 1
52611 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
52612 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
52613 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
52614 END DO
52615 END DO
52616 END DO
52617 s_offset_d1 = s_offset_d1 + 1
52618 END DO
52619 s_offset_c1 = s_offset_c1 + 9
52620 END DO
52621 s_offset_b1 = s_offset_b1 + 3
52622 END DO
52623 s_offset_a1 = s_offset_a1 + 5
52624 END DO
52625 END SUBROUTINE contract_dpgs
52626#endif
52627#if __MAX_CONTR > 4 || __MAX_CONTR == 4
52628! **************************************************************************************************
52629!> \brief ...
52630!> \param work ...
52631!> \param nl_a ...
52632!> \param nl_b ...
52633!> \param nl_c ...
52634!> \param nl_d ...
52635!> \param sphi_a ...
52636!> \param sphi_b ...
52637!> \param sphi_c ...
52638!> \param sphi_d ...
52639!> \param primitives ...
52640!> \param buffer1 ...
52641!> \param buffer2 ...
52642! **************************************************************************************************
52643 SUBROUTINE contract_dpgp(work, &
52644 nl_a, nl_b, nl_c, nl_d, &
52645 sphi_a, sphi_b, sphi_c, sphi_d, &
52646 primitives, &
52647 buffer1, buffer2)
52648 REAL(dp), DIMENSION(6*3*15*3), INTENT(IN) :: work
52649 INTEGER :: nl_a, nl_b, nl_c, nl_d
52650 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
52651 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
52652 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
52653 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
52654 REAL(dp), &
52655 DIMENSION(5*nl_a, 3*nl_b, 9*nl_c, 3*nl_d) :: primitives
52656 REAL(dp), DIMENSION(6*3*15*3) :: buffer1, buffer2
52657
52658 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
52659 kmax, s_offset_a1, s_offset_b1, &
52660 s_offset_c1, s_offset_d1
52661
52662 s_offset_a1 = 0
52663 DO ia = 1, nl_a
52664 s_offset_b1 = 0
52665 DO ib = 1, nl_b
52666 s_offset_c1 = 0
52667 DO ic = 1, nl_c
52668 s_offset_d1 = 0
52669 DO id = 1, nl_d
52670 buffer1 = 0.0_dp
52671 imax = 3*15*3
52672 kmax = 6
52673 DO i = 1, imax
52674 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
52675 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
52676 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
52677 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
52678 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
52679 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
52680 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
52681 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
52682 END DO
52683 buffer2 = 0.0_dp
52684 imax = 5*15*3
52685 kmax = 3
52686 DO i = 1, imax
52687 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
52688 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
52689 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
52690 END DO
52691 buffer1 = 0.0_dp
52692 imax = 5*3*3
52693 kmax = 15
52694 DO i = 1, imax
52695 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
52696 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
52697 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
52698 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
52699 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
52700 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
52701 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
52702 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
52703 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
52704 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
52705 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
52706 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
52707 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
52708 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
52709 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
52710 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
52711 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
52712 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
52713 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
52714 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
52715 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
52716 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
52717 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
52718 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
52719 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
52720 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
52721 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
52722 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
52723 END DO
52724 imax = 5*3*9
52725 kmax = 3
52726 i = 0
52727 DO i1 = 1, 9
52728 DO i2 = 1, 3
52729 DO i3 = 1, 5
52730 i = i + 1
52731 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
52732 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
52733 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
52734 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
52735 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
52736 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
52737 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
52738 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
52739 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
52740 END DO
52741 END DO
52742 END DO
52743 s_offset_d1 = s_offset_d1 + 3
52744 END DO
52745 s_offset_c1 = s_offset_c1 + 9
52746 END DO
52747 s_offset_b1 = s_offset_b1 + 3
52748 END DO
52749 s_offset_a1 = s_offset_a1 + 5
52750 END DO
52751 END SUBROUTINE contract_dpgp
52752#endif
52753#if __MAX_CONTR > 4 || __MAX_CONTR == 4
52754! **************************************************************************************************
52755!> \brief ...
52756!> \param work ...
52757!> \param nl_a ...
52758!> \param nl_b ...
52759!> \param nl_c ...
52760!> \param nl_d ...
52761!> \param sphi_a ...
52762!> \param sphi_b ...
52763!> \param sphi_c ...
52764!> \param sphi_d ...
52765!> \param primitives ...
52766!> \param buffer1 ...
52767!> \param buffer2 ...
52768! **************************************************************************************************
52769 SUBROUTINE contract_dpgd(work, &
52770 nl_a, nl_b, nl_c, nl_d, &
52771 sphi_a, sphi_b, sphi_c, sphi_d, &
52772 primitives, &
52773 buffer1, buffer2)
52774 REAL(dp), DIMENSION(6*3*15*6), INTENT(IN) :: work
52775 INTEGER :: nl_a, nl_b, nl_c, nl_d
52776 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
52777 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
52778 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
52779 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
52780 REAL(dp), &
52781 DIMENSION(5*nl_a, 3*nl_b, 9*nl_c, 5*nl_d) :: primitives
52782 REAL(dp), DIMENSION(6*3*15*6) :: buffer1, buffer2
52783
52784 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
52785 kmax, s_offset_a1, s_offset_b1, &
52786 s_offset_c1, s_offset_d1
52787
52788 s_offset_a1 = 0
52789 DO ia = 1, nl_a
52790 s_offset_b1 = 0
52791 DO ib = 1, nl_b
52792 s_offset_c1 = 0
52793 DO ic = 1, nl_c
52794 s_offset_d1 = 0
52795 DO id = 1, nl_d
52796 buffer1 = 0.0_dp
52797 imax = 3*15*6
52798 kmax = 6
52799 DO i = 1, imax
52800 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
52801 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
52802 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
52803 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
52804 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
52805 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
52806 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
52807 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
52808 END DO
52809 buffer2 = 0.0_dp
52810 imax = 5*15*6
52811 kmax = 3
52812 DO i = 1, imax
52813 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
52814 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
52815 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
52816 END DO
52817 buffer1 = 0.0_dp
52818 imax = 5*3*6
52819 kmax = 15
52820 DO i = 1, imax
52821 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
52822 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
52823 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
52824 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
52825 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
52826 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
52827 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
52828 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
52829 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
52830 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
52831 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
52832 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
52833 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
52834 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
52835 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
52836 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
52837 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
52838 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
52839 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
52840 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
52841 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
52842 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
52843 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
52844 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
52845 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
52846 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
52847 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
52848 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
52849 END DO
52850 imax = 5*3*9
52851 kmax = 6
52852 i = 0
52853 DO i1 = 1, 9
52854 DO i2 = 1, 3
52855 DO i3 = 1, 5
52856 i = i + 1
52857 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
52858 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
52859 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
52860 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
52861 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
52862 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
52863 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
52864 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
52865 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
52866 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
52867 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
52868 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
52869 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
52870 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
52871 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
52872 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
52873 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
52874 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
52875 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
52876 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
52877 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
52878 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
52879 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
52880 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
52881 END DO
52882 END DO
52883 END DO
52884 s_offset_d1 = s_offset_d1 + 5
52885 END DO
52886 s_offset_c1 = s_offset_c1 + 9
52887 END DO
52888 s_offset_b1 = s_offset_b1 + 3
52889 END DO
52890 s_offset_a1 = s_offset_a1 + 5
52891 END DO
52892 END SUBROUTINE contract_dpgd
52893#endif
52894#if __MAX_CONTR > 4 || __MAX_CONTR == 4
52895! **************************************************************************************************
52896!> \brief ...
52897!> \param work ...
52898!> \param nl_a ...
52899!> \param nl_b ...
52900!> \param nl_c ...
52901!> \param nl_d ...
52902!> \param sphi_a ...
52903!> \param sphi_b ...
52904!> \param sphi_c ...
52905!> \param sphi_d ...
52906!> \param primitives ...
52907!> \param buffer1 ...
52908!> \param buffer2 ...
52909! **************************************************************************************************
52910 SUBROUTINE contract_dpgf(work, &
52911 nl_a, nl_b, nl_c, nl_d, &
52912 sphi_a, sphi_b, sphi_c, sphi_d, &
52913 primitives, &
52914 buffer1, buffer2)
52915 REAL(dp), DIMENSION(6*3*15*10), INTENT(IN) :: work
52916 INTEGER :: nl_a, nl_b, nl_c, nl_d
52917 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
52918 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
52919 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
52920 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
52921 REAL(dp), &
52922 DIMENSION(5*nl_a, 3*nl_b, 9*nl_c, 7*nl_d) :: primitives
52923 REAL(dp), DIMENSION(6*3*15*10) :: buffer1, buffer2
52924
52925 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
52926 kmax, s_offset_a1, s_offset_b1, &
52927 s_offset_c1, s_offset_d1
52928
52929 s_offset_a1 = 0
52930 DO ia = 1, nl_a
52931 s_offset_b1 = 0
52932 DO ib = 1, nl_b
52933 s_offset_c1 = 0
52934 DO ic = 1, nl_c
52935 s_offset_d1 = 0
52936 DO id = 1, nl_d
52937 buffer1 = 0.0_dp
52938 imax = 3*15*10
52939 kmax = 6
52940 DO i = 1, imax
52941 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
52942 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
52943 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
52944 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
52945 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
52946 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
52947 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
52948 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
52949 END DO
52950 buffer2 = 0.0_dp
52951 imax = 5*15*10
52952 kmax = 3
52953 DO i = 1, imax
52954 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
52955 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
52956 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
52957 END DO
52958 buffer1 = 0.0_dp
52959 imax = 5*3*10
52960 kmax = 15
52961 DO i = 1, imax
52962 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
52963 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
52964 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
52965 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
52966 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
52967 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
52968 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
52969 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
52970 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
52971 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
52972 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
52973 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
52974 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
52975 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
52976 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
52977 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
52978 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
52979 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
52980 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
52981 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
52982 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
52983 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
52984 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
52985 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
52986 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
52987 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
52988 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
52989 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
52990 END DO
52991 imax = 5*3*9
52992 kmax = 10
52993 i = 0
52994 DO i1 = 1, 9
52995 DO i2 = 1, 3
52996 DO i3 = 1, 5
52997 i = i + 1
52998 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
52999 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
53000 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
53001 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
53002 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
53003 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
53004 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
53005 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
53006 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
53007 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
53008 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
53009 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
53010 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
53011 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
53012 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
53013 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
53014 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
53015 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
53016 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
53017 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
53018 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
53019 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
53020 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
53021 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
53022 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
53023 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
53024 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
53025 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
53026 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
53027 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
53028 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
53029 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
53030 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
53031 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
53032 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
53033 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
53034 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
53035 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
53036 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
53037 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
53038 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
53039 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
53040 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
53041 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
53042 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
53043 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
53044 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
53045 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
53046 END DO
53047 END DO
53048 END DO
53049 s_offset_d1 = s_offset_d1 + 7
53050 END DO
53051 s_offset_c1 = s_offset_c1 + 9
53052 END DO
53053 s_offset_b1 = s_offset_b1 + 3
53054 END DO
53055 s_offset_a1 = s_offset_a1 + 5
53056 END DO
53057 END SUBROUTINE contract_dpgf
53058#endif
53059#if __MAX_CONTR > 4 || __MAX_CONTR == 4
53060! **************************************************************************************************
53061!> \brief ...
53062!> \param work ...
53063!> \param nl_a ...
53064!> \param nl_b ...
53065!> \param nl_c ...
53066!> \param nl_d ...
53067!> \param sphi_a ...
53068!> \param sphi_b ...
53069!> \param sphi_c ...
53070!> \param sphi_d ...
53071!> \param primitives ...
53072!> \param buffer1 ...
53073!> \param buffer2 ...
53074! **************************************************************************************************
53075 SUBROUTINE contract_dpgg(work, &
53076 nl_a, nl_b, nl_c, nl_d, &
53077 sphi_a, sphi_b, sphi_c, sphi_d, &
53078 primitives, &
53079 buffer1, buffer2)
53080 REAL(dp), DIMENSION(6*3*15*15), INTENT(IN) :: work
53081 INTEGER :: nl_a, nl_b, nl_c, nl_d
53082 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
53083 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
53084 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
53085 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
53086 REAL(dp), &
53087 DIMENSION(5*nl_a, 3*nl_b, 9*nl_c, 9*nl_d) :: primitives
53088 REAL(dp), DIMENSION(6*3*15*15) :: buffer1, buffer2
53089
53090 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
53091 kmax, s_offset_a1, s_offset_b1, &
53092 s_offset_c1, s_offset_d1
53093
53094 s_offset_a1 = 0
53095 DO ia = 1, nl_a
53096 s_offset_b1 = 0
53097 DO ib = 1, nl_b
53098 s_offset_c1 = 0
53099 DO ic = 1, nl_c
53100 s_offset_d1 = 0
53101 DO id = 1, nl_d
53102 buffer1 = 0.0_dp
53103 imax = 3*15*15
53104 kmax = 6
53105 DO i = 1, imax
53106 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
53107 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
53108 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
53109 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
53110 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
53111 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
53112 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
53113 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
53114 END DO
53115 buffer2 = 0.0_dp
53116 imax = 5*15*15
53117 kmax = 3
53118 DO i = 1, imax
53119 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
53120 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
53121 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
53122 END DO
53123 buffer1 = 0.0_dp
53124 imax = 5*3*15
53125 kmax = 15
53126 DO i = 1, imax
53127 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
53128 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
53129 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
53130 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
53131 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
53132 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
53133 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
53134 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
53135 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
53136 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
53137 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
53138 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
53139 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
53140 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
53141 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
53142 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
53143 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
53144 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
53145 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
53146 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
53147 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
53148 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
53149 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
53150 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
53151 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
53152 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
53153 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
53154 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
53155 END DO
53156 imax = 5*3*9
53157 kmax = 15
53158 i = 0
53159 DO i1 = 1, 9
53160 DO i2 = 1, 3
53161 DO i3 = 1, 5
53162 i = i + 1
53163 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
53164 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
53165 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
53166 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
53167 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
53168 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
53169 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
53170 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
53171 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
53172 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
53173 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
53174 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
53175 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
53176 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
53177 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
53178 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
53179 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
53180 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
53181 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
53182 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
53183 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
53184 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
53185 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
53186 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
53187 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
53188 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
53189 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
53190 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
53191 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
53192 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
53193 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
53194 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
53195 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
53196 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
53197 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
53198 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
53199 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
53200 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
53201 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
53202 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
53203 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
53204 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
53205 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
53206 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
53207 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
53208 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
53209 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
53210 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
53211 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
53212 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
53213 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
53214 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
53215 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
53216 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
53217 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
53218 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
53219 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
53220 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
53221 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
53222 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
53223 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
53224 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
53225 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
53226 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
53227 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
53228 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
53229 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
53230 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
53231 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
53232 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
53233 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
53234 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
53235 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
53236 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
53237 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
53238 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
53239 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
53240 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
53241 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
53242 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
53243 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
53244 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
53245 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
53246 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
53247 END DO
53248 END DO
53249 END DO
53250 s_offset_d1 = s_offset_d1 + 9
53251 END DO
53252 s_offset_c1 = s_offset_c1 + 9
53253 END DO
53254 s_offset_b1 = s_offset_b1 + 3
53255 END DO
53256 s_offset_a1 = s_offset_a1 + 5
53257 END DO
53258 END SUBROUTINE contract_dpgg
53259#endif
53260#if __MAX_CONTR > 2 || __MAX_CONTR == 2
53261! **************************************************************************************************
53262!> \brief ...
53263!> \param work ...
53264!> \param nl_a ...
53265!> \param nl_b ...
53266!> \param nl_c ...
53267!> \param nl_d ...
53268!> \param sphi_a ...
53269!> \param sphi_b ...
53270!> \param sphi_c ...
53271!> \param sphi_d ...
53272!> \param primitives ...
53273!> \param buffer1 ...
53274!> \param buffer2 ...
53275! **************************************************************************************************
53276 SUBROUTINE contract_ddss(work, &
53277 nl_a, nl_b, nl_c, nl_d, &
53278 sphi_a, sphi_b, sphi_c, sphi_d, &
53279 primitives, &
53280 buffer1, buffer2)
53281 REAL(dp), DIMENSION(6*6*1*1), INTENT(IN) :: work
53282 INTEGER :: nl_a, nl_b, nl_c, nl_d
53283 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
53284 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
53285 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
53286 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
53287 REAL(dp), &
53288 DIMENSION(5*nl_a, 5*nl_b, 1*nl_c, 1*nl_d) :: primitives
53289 REAL(dp), DIMENSION(6*6*1*1) :: buffer1, buffer2
53290
53291 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
53292 kmax, s_offset_a1, s_offset_b1, &
53293 s_offset_c1, s_offset_d1
53294
53295 s_offset_a1 = 0
53296 DO ia = 1, nl_a
53297 s_offset_b1 = 0
53298 DO ib = 1, nl_b
53299 s_offset_c1 = 0
53300 DO ic = 1, nl_c
53301 s_offset_d1 = 0
53302 DO id = 1, nl_d
53303 buffer1 = 0.0_dp
53304 imax = 6*1*1
53305 kmax = 6
53306 DO i = 1, imax
53307 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
53308 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
53309 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
53310 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
53311 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
53312 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
53313 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
53314 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
53315 END DO
53316 buffer2 = 0.0_dp
53317 imax = 5*1*1
53318 kmax = 6
53319 DO i = 1, imax
53320 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
53321 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
53322 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
53323 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
53324 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
53325 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
53326 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
53327 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
53328 END DO
53329 buffer1 = 0.0_dp
53330 imax = 5*5*1
53331 kmax = 1
53332 DO i = 1, imax
53333 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
53334 END DO
53335 imax = 5*5*1
53336 kmax = 1
53337 i = 0
53338 DO i1 = 1, 1
53339 DO i2 = 1, 5
53340 DO i3 = 1, 5
53341 i = i + 1
53342 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
53343 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
53344 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
53345 END DO
53346 END DO
53347 END DO
53348 s_offset_d1 = s_offset_d1 + 1
53349 END DO
53350 s_offset_c1 = s_offset_c1 + 1
53351 END DO
53352 s_offset_b1 = s_offset_b1 + 5
53353 END DO
53354 s_offset_a1 = s_offset_a1 + 5
53355 END DO
53356 END SUBROUTINE contract_ddss
53357#endif
53358#if __MAX_CONTR > 2 || __MAX_CONTR == 2
53359! **************************************************************************************************
53360!> \brief ...
53361!> \param work ...
53362!> \param nl_a ...
53363!> \param nl_b ...
53364!> \param nl_c ...
53365!> \param nl_d ...
53366!> \param sphi_a ...
53367!> \param sphi_b ...
53368!> \param sphi_c ...
53369!> \param sphi_d ...
53370!> \param primitives ...
53371!> \param buffer1 ...
53372!> \param buffer2 ...
53373! **************************************************************************************************
53374 SUBROUTINE contract_ddsp(work, &
53375 nl_a, nl_b, nl_c, nl_d, &
53376 sphi_a, sphi_b, sphi_c, sphi_d, &
53377 primitives, &
53378 buffer1, buffer2)
53379 REAL(dp), DIMENSION(6*6*1*3), INTENT(IN) :: work
53380 INTEGER :: nl_a, nl_b, nl_c, nl_d
53381 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
53382 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
53383 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
53384 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
53385 REAL(dp), &
53386 DIMENSION(5*nl_a, 5*nl_b, 1*nl_c, 3*nl_d) :: primitives
53387 REAL(dp), DIMENSION(6*6*1*3) :: buffer1, buffer2
53388
53389 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
53390 kmax, s_offset_a1, s_offset_b1, &
53391 s_offset_c1, s_offset_d1
53392
53393 s_offset_a1 = 0
53394 DO ia = 1, nl_a
53395 s_offset_b1 = 0
53396 DO ib = 1, nl_b
53397 s_offset_c1 = 0
53398 DO ic = 1, nl_c
53399 s_offset_d1 = 0
53400 DO id = 1, nl_d
53401 buffer1 = 0.0_dp
53402 imax = 6*1*3
53403 kmax = 6
53404 DO i = 1, imax
53405 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
53406 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
53407 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
53408 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
53409 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
53410 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
53411 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
53412 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
53413 END DO
53414 buffer2 = 0.0_dp
53415 imax = 5*1*3
53416 kmax = 6
53417 DO i = 1, imax
53418 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
53419 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
53420 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
53421 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
53422 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
53423 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
53424 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
53425 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
53426 END DO
53427 buffer1 = 0.0_dp
53428 imax = 5*5*3
53429 kmax = 1
53430 DO i = 1, imax
53431 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
53432 END DO
53433 imax = 5*5*1
53434 kmax = 3
53435 i = 0
53436 DO i1 = 1, 1
53437 DO i2 = 1, 5
53438 DO i3 = 1, 5
53439 i = i + 1
53440 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
53441 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
53442 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
53443 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
53444 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
53445 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
53446 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
53447 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
53448 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
53449 END DO
53450 END DO
53451 END DO
53452 s_offset_d1 = s_offset_d1 + 3
53453 END DO
53454 s_offset_c1 = s_offset_c1 + 1
53455 END DO
53456 s_offset_b1 = s_offset_b1 + 5
53457 END DO
53458 s_offset_a1 = s_offset_a1 + 5
53459 END DO
53460 END SUBROUTINE contract_ddsp
53461#endif
53462#if __MAX_CONTR > 2 || __MAX_CONTR == 2
53463! **************************************************************************************************
53464!> \brief ...
53465!> \param work ...
53466!> \param nl_a ...
53467!> \param nl_b ...
53468!> \param nl_c ...
53469!> \param nl_d ...
53470!> \param sphi_a ...
53471!> \param sphi_b ...
53472!> \param sphi_c ...
53473!> \param sphi_d ...
53474!> \param primitives ...
53475!> \param buffer1 ...
53476!> \param buffer2 ...
53477! **************************************************************************************************
53478 SUBROUTINE contract_ddsd(work, &
53479 nl_a, nl_b, nl_c, nl_d, &
53480 sphi_a, sphi_b, sphi_c, sphi_d, &
53481 primitives, &
53482 buffer1, buffer2)
53483 REAL(dp), DIMENSION(6*6*1*6), INTENT(IN) :: work
53484 INTEGER :: nl_a, nl_b, nl_c, nl_d
53485 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
53486 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
53487 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
53488 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
53489 REAL(dp), &
53490 DIMENSION(5*nl_a, 5*nl_b, 1*nl_c, 5*nl_d) :: primitives
53491 REAL(dp), DIMENSION(6*6*1*6) :: buffer1, buffer2
53492
53493 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
53494 kmax, s_offset_a1, s_offset_b1, &
53495 s_offset_c1, s_offset_d1
53496
53497 s_offset_a1 = 0
53498 DO ia = 1, nl_a
53499 s_offset_b1 = 0
53500 DO ib = 1, nl_b
53501 s_offset_c1 = 0
53502 DO ic = 1, nl_c
53503 s_offset_d1 = 0
53504 DO id = 1, nl_d
53505 buffer1 = 0.0_dp
53506 imax = 6*1*6
53507 kmax = 6
53508 DO i = 1, imax
53509 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
53510 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
53511 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
53512 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
53513 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
53514 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
53515 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
53516 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
53517 END DO
53518 buffer2 = 0.0_dp
53519 imax = 5*1*6
53520 kmax = 6
53521 DO i = 1, imax
53522 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
53523 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
53524 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
53525 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
53526 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
53527 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
53528 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
53529 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
53530 END DO
53531 buffer1 = 0.0_dp
53532 imax = 5*5*6
53533 kmax = 1
53534 DO i = 1, imax
53535 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
53536 END DO
53537 imax = 5*5*1
53538 kmax = 6
53539 i = 0
53540 DO i1 = 1, 1
53541 DO i2 = 1, 5
53542 DO i3 = 1, 5
53543 i = i + 1
53544 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
53545 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
53546 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
53547 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
53548 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
53549 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
53550 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
53551 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
53552 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
53553 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
53554 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
53555 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
53556 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
53557 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
53558 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
53559 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
53560 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
53561 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
53562 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
53563 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
53564 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
53565 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
53566 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
53567 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
53568 END DO
53569 END DO
53570 END DO
53571 s_offset_d1 = s_offset_d1 + 5
53572 END DO
53573 s_offset_c1 = s_offset_c1 + 1
53574 END DO
53575 s_offset_b1 = s_offset_b1 + 5
53576 END DO
53577 s_offset_a1 = s_offset_a1 + 5
53578 END DO
53579 END SUBROUTINE contract_ddsd
53580#endif
53581#if __MAX_CONTR > 3 || __MAX_CONTR == 3
53582! **************************************************************************************************
53583!> \brief ...
53584!> \param work ...
53585!> \param nl_a ...
53586!> \param nl_b ...
53587!> \param nl_c ...
53588!> \param nl_d ...
53589!> \param sphi_a ...
53590!> \param sphi_b ...
53591!> \param sphi_c ...
53592!> \param sphi_d ...
53593!> \param primitives ...
53594!> \param buffer1 ...
53595!> \param buffer2 ...
53596! **************************************************************************************************
53597 SUBROUTINE contract_ddsf(work, &
53598 nl_a, nl_b, nl_c, nl_d, &
53599 sphi_a, sphi_b, sphi_c, sphi_d, &
53600 primitives, &
53601 buffer1, buffer2)
53602 REAL(dp), DIMENSION(6*6*1*10), INTENT(IN) :: work
53603 INTEGER :: nl_a, nl_b, nl_c, nl_d
53604 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
53605 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
53606 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
53607 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
53608 REAL(dp), &
53609 DIMENSION(5*nl_a, 5*nl_b, 1*nl_c, 7*nl_d) :: primitives
53610 REAL(dp), DIMENSION(6*6*1*10) :: buffer1, buffer2
53611
53612 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
53613 kmax, s_offset_a1, s_offset_b1, &
53614 s_offset_c1, s_offset_d1
53615
53616 s_offset_a1 = 0
53617 DO ia = 1, nl_a
53618 s_offset_b1 = 0
53619 DO ib = 1, nl_b
53620 s_offset_c1 = 0
53621 DO ic = 1, nl_c
53622 s_offset_d1 = 0
53623 DO id = 1, nl_d
53624 buffer1 = 0.0_dp
53625 imax = 6*1*10
53626 kmax = 6
53627 DO i = 1, imax
53628 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
53629 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
53630 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
53631 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
53632 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
53633 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
53634 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
53635 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
53636 END DO
53637 buffer2 = 0.0_dp
53638 imax = 5*1*10
53639 kmax = 6
53640 DO i = 1, imax
53641 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
53642 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
53643 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
53644 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
53645 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
53646 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
53647 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
53648 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
53649 END DO
53650 buffer1 = 0.0_dp
53651 imax = 5*5*10
53652 kmax = 1
53653 DO i = 1, imax
53654 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
53655 END DO
53656 imax = 5*5*1
53657 kmax = 10
53658 i = 0
53659 DO i1 = 1, 1
53660 DO i2 = 1, 5
53661 DO i3 = 1, 5
53662 i = i + 1
53663 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
53664 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
53665 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
53666 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
53667 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
53668 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
53669 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
53670 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
53671 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
53672 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
53673 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
53674 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
53675 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
53676 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
53677 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
53678 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
53679 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
53680 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
53681 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
53682 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
53683 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
53684 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
53685 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
53686 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
53687 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
53688 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
53689 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
53690 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
53691 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
53692 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
53693 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
53694 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
53695 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
53696 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
53697 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
53698 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
53699 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
53700 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
53701 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
53702 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
53703 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
53704 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
53705 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
53706 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
53707 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
53708 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
53709 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
53710 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
53711 END DO
53712 END DO
53713 END DO
53714 s_offset_d1 = s_offset_d1 + 7
53715 END DO
53716 s_offset_c1 = s_offset_c1 + 1
53717 END DO
53718 s_offset_b1 = s_offset_b1 + 5
53719 END DO
53720 s_offset_a1 = s_offset_a1 + 5
53721 END DO
53722 END SUBROUTINE contract_ddsf
53723#endif
53724#if __MAX_CONTR > 4 || __MAX_CONTR == 4
53725! **************************************************************************************************
53726!> \brief ...
53727!> \param work ...
53728!> \param nl_a ...
53729!> \param nl_b ...
53730!> \param nl_c ...
53731!> \param nl_d ...
53732!> \param sphi_a ...
53733!> \param sphi_b ...
53734!> \param sphi_c ...
53735!> \param sphi_d ...
53736!> \param primitives ...
53737!> \param buffer1 ...
53738!> \param buffer2 ...
53739! **************************************************************************************************
53740 SUBROUTINE contract_ddsg(work, &
53741 nl_a, nl_b, nl_c, nl_d, &
53742 sphi_a, sphi_b, sphi_c, sphi_d, &
53743 primitives, &
53744 buffer1, buffer2)
53745 REAL(dp), DIMENSION(6*6*1*15), INTENT(IN) :: work
53746 INTEGER :: nl_a, nl_b, nl_c, nl_d
53747 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
53748 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
53749 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
53750 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
53751 REAL(dp), &
53752 DIMENSION(5*nl_a, 5*nl_b, 1*nl_c, 9*nl_d) :: primitives
53753 REAL(dp), DIMENSION(6*6*1*15) :: buffer1, buffer2
53754
53755 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
53756 kmax, s_offset_a1, s_offset_b1, &
53757 s_offset_c1, s_offset_d1
53758
53759 s_offset_a1 = 0
53760 DO ia = 1, nl_a
53761 s_offset_b1 = 0
53762 DO ib = 1, nl_b
53763 s_offset_c1 = 0
53764 DO ic = 1, nl_c
53765 s_offset_d1 = 0
53766 DO id = 1, nl_d
53767 buffer1 = 0.0_dp
53768 imax = 6*1*15
53769 kmax = 6
53770 DO i = 1, imax
53771 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
53772 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
53773 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
53774 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
53775 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
53776 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
53777 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
53778 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
53779 END DO
53780 buffer2 = 0.0_dp
53781 imax = 5*1*15
53782 kmax = 6
53783 DO i = 1, imax
53784 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
53785 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
53786 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
53787 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
53788 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
53789 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
53790 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
53791 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
53792 END DO
53793 buffer1 = 0.0_dp
53794 imax = 5*5*15
53795 kmax = 1
53796 DO i = 1, imax
53797 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
53798 END DO
53799 imax = 5*5*1
53800 kmax = 15
53801 i = 0
53802 DO i1 = 1, 1
53803 DO i2 = 1, 5
53804 DO i3 = 1, 5
53805 i = i + 1
53806 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
53807 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
53808 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
53809 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
53810 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
53811 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
53812 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
53813 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
53814 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
53815 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
53816 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
53817 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
53818 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
53819 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
53820 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
53821 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
53822 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
53823 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
53824 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
53825 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
53826 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
53827 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
53828 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
53829 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
53830 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
53831 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
53832 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
53833 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
53834 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
53835 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
53836 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
53837 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
53838 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
53839 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
53840 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
53841 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
53842 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
53843 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
53844 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
53845 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
53846 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
53847 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
53848 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
53849 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
53850 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
53851 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
53852 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
53853 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
53854 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
53855 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
53856 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
53857 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
53858 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
53859 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
53860 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
53861 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
53862 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
53863 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
53864 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
53865 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
53866 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
53867 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
53868 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
53869 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
53870 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
53871 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
53872 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
53873 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
53874 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
53875 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
53876 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
53877 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
53878 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
53879 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
53880 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
53881 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
53882 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
53883 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
53884 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
53885 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
53886 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
53887 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
53888 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
53889 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
53890 END DO
53891 END DO
53892 END DO
53893 s_offset_d1 = s_offset_d1 + 9
53894 END DO
53895 s_offset_c1 = s_offset_c1 + 1
53896 END DO
53897 s_offset_b1 = s_offset_b1 + 5
53898 END DO
53899 s_offset_a1 = s_offset_a1 + 5
53900 END DO
53901 END SUBROUTINE contract_ddsg
53902#endif
53903#if __MAX_CONTR > 2 || __MAX_CONTR == 2
53904! **************************************************************************************************
53905!> \brief ...
53906!> \param work ...
53907!> \param nl_a ...
53908!> \param nl_b ...
53909!> \param nl_c ...
53910!> \param nl_d ...
53911!> \param sphi_a ...
53912!> \param sphi_b ...
53913!> \param sphi_c ...
53914!> \param sphi_d ...
53915!> \param primitives ...
53916!> \param buffer1 ...
53917!> \param buffer2 ...
53918! **************************************************************************************************
53919 SUBROUTINE contract_ddps(work, &
53920 nl_a, nl_b, nl_c, nl_d, &
53921 sphi_a, sphi_b, sphi_c, sphi_d, &
53922 primitives, &
53923 buffer1, buffer2)
53924 REAL(dp), DIMENSION(6*6*3*1), INTENT(IN) :: work
53925 INTEGER :: nl_a, nl_b, nl_c, nl_d
53926 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
53927 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
53928 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
53929 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
53930 REAL(dp), &
53931 DIMENSION(5*nl_a, 5*nl_b, 3*nl_c, 1*nl_d) :: primitives
53932 REAL(dp), DIMENSION(6*6*3*1) :: buffer1, buffer2
53933
53934 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
53935 kmax, s_offset_a1, s_offset_b1, &
53936 s_offset_c1, s_offset_d1
53937
53938 s_offset_a1 = 0
53939 DO ia = 1, nl_a
53940 s_offset_b1 = 0
53941 DO ib = 1, nl_b
53942 s_offset_c1 = 0
53943 DO ic = 1, nl_c
53944 s_offset_d1 = 0
53945 DO id = 1, nl_d
53946 buffer1 = 0.0_dp
53947 imax = 6*3*1
53948 kmax = 6
53949 DO i = 1, imax
53950 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
53951 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
53952 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
53953 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
53954 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
53955 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
53956 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
53957 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
53958 END DO
53959 buffer2 = 0.0_dp
53960 imax = 5*3*1
53961 kmax = 6
53962 DO i = 1, imax
53963 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
53964 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
53965 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
53966 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
53967 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
53968 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
53969 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
53970 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
53971 END DO
53972 buffer1 = 0.0_dp
53973 imax = 5*5*1
53974 kmax = 3
53975 DO i = 1, imax
53976 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
53977 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
53978 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
53979 END DO
53980 imax = 5*5*3
53981 kmax = 1
53982 i = 0
53983 DO i1 = 1, 3
53984 DO i2 = 1, 5
53985 DO i3 = 1, 5
53986 i = i + 1
53987 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
53988 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
53989 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
53990 END DO
53991 END DO
53992 END DO
53993 s_offset_d1 = s_offset_d1 + 1
53994 END DO
53995 s_offset_c1 = s_offset_c1 + 3
53996 END DO
53997 s_offset_b1 = s_offset_b1 + 5
53998 END DO
53999 s_offset_a1 = s_offset_a1 + 5
54000 END DO
54001 END SUBROUTINE contract_ddps
54002#endif
54003#if __MAX_CONTR > 2 || __MAX_CONTR == 2
54004! **************************************************************************************************
54005!> \brief ...
54006!> \param work ...
54007!> \param nl_a ...
54008!> \param nl_b ...
54009!> \param nl_c ...
54010!> \param nl_d ...
54011!> \param sphi_a ...
54012!> \param sphi_b ...
54013!> \param sphi_c ...
54014!> \param sphi_d ...
54015!> \param primitives ...
54016!> \param buffer1 ...
54017!> \param buffer2 ...
54018! **************************************************************************************************
54019 SUBROUTINE contract_ddpp(work, &
54020 nl_a, nl_b, nl_c, nl_d, &
54021 sphi_a, sphi_b, sphi_c, sphi_d, &
54022 primitives, &
54023 buffer1, buffer2)
54024 REAL(dp), DIMENSION(6*6*3*3), INTENT(IN) :: work
54025 INTEGER :: nl_a, nl_b, nl_c, nl_d
54026 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
54027 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
54028 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
54029 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
54030 REAL(dp), &
54031 DIMENSION(5*nl_a, 5*nl_b, 3*nl_c, 3*nl_d) :: primitives
54032 REAL(dp), DIMENSION(6*6*3*3) :: buffer1, buffer2
54033
54034 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
54035 kmax, s_offset_a1, s_offset_b1, &
54036 s_offset_c1, s_offset_d1
54037
54038 s_offset_a1 = 0
54039 DO ia = 1, nl_a
54040 s_offset_b1 = 0
54041 DO ib = 1, nl_b
54042 s_offset_c1 = 0
54043 DO ic = 1, nl_c
54044 s_offset_d1 = 0
54045 DO id = 1, nl_d
54046 buffer1 = 0.0_dp
54047 imax = 6*3*3
54048 kmax = 6
54049 DO i = 1, imax
54050 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
54051 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
54052 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
54053 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
54054 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
54055 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
54056 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
54057 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
54058 END DO
54059 buffer2 = 0.0_dp
54060 imax = 5*3*3
54061 kmax = 6
54062 DO i = 1, imax
54063 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
54064 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
54065 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
54066 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
54067 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
54068 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
54069 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
54070 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
54071 END DO
54072 buffer1 = 0.0_dp
54073 imax = 5*5*3
54074 kmax = 3
54075 DO i = 1, imax
54076 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
54077 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
54078 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
54079 END DO
54080 imax = 5*5*3
54081 kmax = 3
54082 i = 0
54083 DO i1 = 1, 3
54084 DO i2 = 1, 5
54085 DO i3 = 1, 5
54086 i = i + 1
54087 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
54088 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
54089 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
54090 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
54091 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
54092 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
54093 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
54094 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
54095 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
54096 END DO
54097 END DO
54098 END DO
54099 s_offset_d1 = s_offset_d1 + 3
54100 END DO
54101 s_offset_c1 = s_offset_c1 + 3
54102 END DO
54103 s_offset_b1 = s_offset_b1 + 5
54104 END DO
54105 s_offset_a1 = s_offset_a1 + 5
54106 END DO
54107 END SUBROUTINE contract_ddpp
54108#endif
54109#if __MAX_CONTR > 2 || __MAX_CONTR == 2
54110! **************************************************************************************************
54111!> \brief ...
54112!> \param work ...
54113!> \param nl_a ...
54114!> \param nl_b ...
54115!> \param nl_c ...
54116!> \param nl_d ...
54117!> \param sphi_a ...
54118!> \param sphi_b ...
54119!> \param sphi_c ...
54120!> \param sphi_d ...
54121!> \param primitives ...
54122!> \param buffer1 ...
54123!> \param buffer2 ...
54124! **************************************************************************************************
54125 SUBROUTINE contract_ddpd(work, &
54126 nl_a, nl_b, nl_c, nl_d, &
54127 sphi_a, sphi_b, sphi_c, sphi_d, &
54128 primitives, &
54129 buffer1, buffer2)
54130 REAL(dp), DIMENSION(6*6*3*6), INTENT(IN) :: work
54131 INTEGER :: nl_a, nl_b, nl_c, nl_d
54132 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
54133 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
54134 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
54135 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
54136 REAL(dp), &
54137 DIMENSION(5*nl_a, 5*nl_b, 3*nl_c, 5*nl_d) :: primitives
54138 REAL(dp), DIMENSION(6*6*3*6) :: buffer1, buffer2
54139
54140 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
54141 kmax, s_offset_a1, s_offset_b1, &
54142 s_offset_c1, s_offset_d1
54143
54144 s_offset_a1 = 0
54145 DO ia = 1, nl_a
54146 s_offset_b1 = 0
54147 DO ib = 1, nl_b
54148 s_offset_c1 = 0
54149 DO ic = 1, nl_c
54150 s_offset_d1 = 0
54151 DO id = 1, nl_d
54152 buffer1 = 0.0_dp
54153 imax = 6*3*6
54154 kmax = 6
54155 DO i = 1, imax
54156 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
54157 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
54158 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
54159 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
54160 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
54161 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
54162 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
54163 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
54164 END DO
54165 buffer2 = 0.0_dp
54166 imax = 5*3*6
54167 kmax = 6
54168 DO i = 1, imax
54169 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
54170 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
54171 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
54172 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
54173 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
54174 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
54175 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
54176 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
54177 END DO
54178 buffer1 = 0.0_dp
54179 imax = 5*5*6
54180 kmax = 3
54181 DO i = 1, imax
54182 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
54183 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
54184 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
54185 END DO
54186 imax = 5*5*3
54187 kmax = 6
54188 i = 0
54189 DO i1 = 1, 3
54190 DO i2 = 1, 5
54191 DO i3 = 1, 5
54192 i = i + 1
54193 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
54194 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
54195 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
54196 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
54197 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
54198 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
54199 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
54200 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
54201 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
54202 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
54203 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
54204 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
54205 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
54206 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
54207 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
54208 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
54209 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
54210 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
54211 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
54212 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
54213 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
54214 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
54215 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
54216 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
54217 END DO
54218 END DO
54219 END DO
54220 s_offset_d1 = s_offset_d1 + 5
54221 END DO
54222 s_offset_c1 = s_offset_c1 + 3
54223 END DO
54224 s_offset_b1 = s_offset_b1 + 5
54225 END DO
54226 s_offset_a1 = s_offset_a1 + 5
54227 END DO
54228 END SUBROUTINE contract_ddpd
54229#endif
54230#if __MAX_CONTR > 3 || __MAX_CONTR == 3
54231! **************************************************************************************************
54232!> \brief ...
54233!> \param work ...
54234!> \param nl_a ...
54235!> \param nl_b ...
54236!> \param nl_c ...
54237!> \param nl_d ...
54238!> \param sphi_a ...
54239!> \param sphi_b ...
54240!> \param sphi_c ...
54241!> \param sphi_d ...
54242!> \param primitives ...
54243!> \param buffer1 ...
54244!> \param buffer2 ...
54245! **************************************************************************************************
54246 SUBROUTINE contract_ddpf(work, &
54247 nl_a, nl_b, nl_c, nl_d, &
54248 sphi_a, sphi_b, sphi_c, sphi_d, &
54249 primitives, &
54250 buffer1, buffer2)
54251 REAL(dp), DIMENSION(6*6*3*10), INTENT(IN) :: work
54252 INTEGER :: nl_a, nl_b, nl_c, nl_d
54253 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
54254 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
54255 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
54256 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
54257 REAL(dp), &
54258 DIMENSION(5*nl_a, 5*nl_b, 3*nl_c, 7*nl_d) :: primitives
54259 REAL(dp), DIMENSION(6*6*3*10) :: buffer1, buffer2
54260
54261 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
54262 kmax, s_offset_a1, s_offset_b1, &
54263 s_offset_c1, s_offset_d1
54264
54265 s_offset_a1 = 0
54266 DO ia = 1, nl_a
54267 s_offset_b1 = 0
54268 DO ib = 1, nl_b
54269 s_offset_c1 = 0
54270 DO ic = 1, nl_c
54271 s_offset_d1 = 0
54272 DO id = 1, nl_d
54273 buffer1 = 0.0_dp
54274 imax = 6*3*10
54275 kmax = 6
54276 DO i = 1, imax
54277 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
54278 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
54279 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
54280 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
54281 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
54282 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
54283 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
54284 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
54285 END DO
54286 buffer2 = 0.0_dp
54287 imax = 5*3*10
54288 kmax = 6
54289 DO i = 1, imax
54290 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
54291 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
54292 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
54293 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
54294 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
54295 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
54296 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
54297 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
54298 END DO
54299 buffer1 = 0.0_dp
54300 imax = 5*5*10
54301 kmax = 3
54302 DO i = 1, imax
54303 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
54304 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
54305 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
54306 END DO
54307 imax = 5*5*3
54308 kmax = 10
54309 i = 0
54310 DO i1 = 1, 3
54311 DO i2 = 1, 5
54312 DO i3 = 1, 5
54313 i = i + 1
54314 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
54315 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
54316 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
54317 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
54318 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
54319 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
54320 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
54321 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
54322 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
54323 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
54324 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
54325 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
54326 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
54327 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
54328 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
54329 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
54330 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
54331 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
54332 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
54333 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
54334 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
54335 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
54336 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
54337 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
54338 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
54339 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
54340 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
54341 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
54342 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
54343 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
54344 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
54345 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
54346 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
54347 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
54348 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
54349 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
54350 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
54351 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
54352 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
54353 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
54354 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
54355 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
54356 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
54357 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
54358 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
54359 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
54360 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
54361 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
54362 END DO
54363 END DO
54364 END DO
54365 s_offset_d1 = s_offset_d1 + 7
54366 END DO
54367 s_offset_c1 = s_offset_c1 + 3
54368 END DO
54369 s_offset_b1 = s_offset_b1 + 5
54370 END DO
54371 s_offset_a1 = s_offset_a1 + 5
54372 END DO
54373 END SUBROUTINE contract_ddpf
54374#endif
54375#if __MAX_CONTR > 4 || __MAX_CONTR == 4
54376! **************************************************************************************************
54377!> \brief ...
54378!> \param work ...
54379!> \param nl_a ...
54380!> \param nl_b ...
54381!> \param nl_c ...
54382!> \param nl_d ...
54383!> \param sphi_a ...
54384!> \param sphi_b ...
54385!> \param sphi_c ...
54386!> \param sphi_d ...
54387!> \param primitives ...
54388!> \param buffer1 ...
54389!> \param buffer2 ...
54390! **************************************************************************************************
54391 SUBROUTINE contract_ddpg(work, &
54392 nl_a, nl_b, nl_c, nl_d, &
54393 sphi_a, sphi_b, sphi_c, sphi_d, &
54394 primitives, &
54395 buffer1, buffer2)
54396 REAL(dp), DIMENSION(6*6*3*15), INTENT(IN) :: work
54397 INTEGER :: nl_a, nl_b, nl_c, nl_d
54398 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
54399 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
54400 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
54401 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
54402 REAL(dp), &
54403 DIMENSION(5*nl_a, 5*nl_b, 3*nl_c, 9*nl_d) :: primitives
54404 REAL(dp), DIMENSION(6*6*3*15) :: buffer1, buffer2
54405
54406 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
54407 kmax, s_offset_a1, s_offset_b1, &
54408 s_offset_c1, s_offset_d1
54409
54410 s_offset_a1 = 0
54411 DO ia = 1, nl_a
54412 s_offset_b1 = 0
54413 DO ib = 1, nl_b
54414 s_offset_c1 = 0
54415 DO ic = 1, nl_c
54416 s_offset_d1 = 0
54417 DO id = 1, nl_d
54418 buffer1 = 0.0_dp
54419 imax = 6*3*15
54420 kmax = 6
54421 DO i = 1, imax
54422 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
54423 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
54424 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
54425 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
54426 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
54427 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
54428 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
54429 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
54430 END DO
54431 buffer2 = 0.0_dp
54432 imax = 5*3*15
54433 kmax = 6
54434 DO i = 1, imax
54435 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
54436 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
54437 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
54438 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
54439 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
54440 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
54441 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
54442 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
54443 END DO
54444 buffer1 = 0.0_dp
54445 imax = 5*5*15
54446 kmax = 3
54447 DO i = 1, imax
54448 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
54449 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
54450 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
54451 END DO
54452 imax = 5*5*3
54453 kmax = 15
54454 i = 0
54455 DO i1 = 1, 3
54456 DO i2 = 1, 5
54457 DO i3 = 1, 5
54458 i = i + 1
54459 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
54460 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
54461 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
54462 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
54463 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
54464 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
54465 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
54466 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
54467 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
54468 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
54469 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
54470 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
54471 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
54472 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
54473 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
54474 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
54475 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
54476 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
54477 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
54478 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
54479 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
54480 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
54481 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
54482 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
54483 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
54484 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
54485 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
54486 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
54487 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
54488 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
54489 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
54490 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
54491 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
54492 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
54493 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
54494 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
54495 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
54496 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
54497 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
54498 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
54499 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
54500 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
54501 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
54502 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
54503 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
54504 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
54505 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
54506 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
54507 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
54508 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
54509 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
54510 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
54511 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
54512 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
54513 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
54514 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
54515 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
54516 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
54517 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
54518 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
54519 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
54520 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
54521 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
54522 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
54523 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
54524 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
54525 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
54526 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
54527 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
54528 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
54529 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
54530 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
54531 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
54532 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
54533 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
54534 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
54535 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
54536 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
54537 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
54538 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
54539 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
54540 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
54541 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
54542 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
54543 END DO
54544 END DO
54545 END DO
54546 s_offset_d1 = s_offset_d1 + 9
54547 END DO
54548 s_offset_c1 = s_offset_c1 + 3
54549 END DO
54550 s_offset_b1 = s_offset_b1 + 5
54551 END DO
54552 s_offset_a1 = s_offset_a1 + 5
54553 END DO
54554 END SUBROUTINE contract_ddpg
54555#endif
54556#if __MAX_CONTR > 2 || __MAX_CONTR == 2
54557! **************************************************************************************************
54558!> \brief ...
54559!> \param work ...
54560!> \param nl_a ...
54561!> \param nl_b ...
54562!> \param nl_c ...
54563!> \param nl_d ...
54564!> \param sphi_a ...
54565!> \param sphi_b ...
54566!> \param sphi_c ...
54567!> \param sphi_d ...
54568!> \param primitives ...
54569!> \param buffer1 ...
54570!> \param buffer2 ...
54571! **************************************************************************************************
54572 SUBROUTINE contract_ddds(work, &
54573 nl_a, nl_b, nl_c, nl_d, &
54574 sphi_a, sphi_b, sphi_c, sphi_d, &
54575 primitives, &
54576 buffer1, buffer2)
54577 REAL(dp), DIMENSION(6*6*6*1), INTENT(IN) :: work
54578 INTEGER :: nl_a, nl_b, nl_c, nl_d
54579 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
54580 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
54581 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
54582 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
54583 REAL(dp), &
54584 DIMENSION(5*nl_a, 5*nl_b, 5*nl_c, 1*nl_d) :: primitives
54585 REAL(dp), DIMENSION(6*6*6*1) :: buffer1, buffer2
54586
54587 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
54588 kmax, s_offset_a1, s_offset_b1, &
54589 s_offset_c1, s_offset_d1
54590
54591 s_offset_a1 = 0
54592 DO ia = 1, nl_a
54593 s_offset_b1 = 0
54594 DO ib = 1, nl_b
54595 s_offset_c1 = 0
54596 DO ic = 1, nl_c
54597 s_offset_d1 = 0
54598 DO id = 1, nl_d
54599 buffer1 = 0.0_dp
54600 imax = 6*6*1
54601 kmax = 6
54602 DO i = 1, imax
54603 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
54604 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
54605 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
54606 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
54607 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
54608 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
54609 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
54610 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
54611 END DO
54612 buffer2 = 0.0_dp
54613 imax = 5*6*1
54614 kmax = 6
54615 DO i = 1, imax
54616 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
54617 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
54618 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
54619 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
54620 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
54621 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
54622 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
54623 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
54624 END DO
54625 buffer1 = 0.0_dp
54626 imax = 5*5*1
54627 kmax = 6
54628 DO i = 1, imax
54629 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
54630 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
54631 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
54632 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
54633 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
54634 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
54635 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
54636 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
54637 END DO
54638 imax = 5*5*5
54639 kmax = 1
54640 i = 0
54641 DO i1 = 1, 5
54642 DO i2 = 1, 5
54643 DO i3 = 1, 5
54644 i = i + 1
54645 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
54646 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
54647 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
54648 END DO
54649 END DO
54650 END DO
54651 s_offset_d1 = s_offset_d1 + 1
54652 END DO
54653 s_offset_c1 = s_offset_c1 + 5
54654 END DO
54655 s_offset_b1 = s_offset_b1 + 5
54656 END DO
54657 s_offset_a1 = s_offset_a1 + 5
54658 END DO
54659 END SUBROUTINE contract_ddds
54660#endif
54661#if __MAX_CONTR > 2 || __MAX_CONTR == 2
54662! **************************************************************************************************
54663!> \brief ...
54664!> \param work ...
54665!> \param nl_a ...
54666!> \param nl_b ...
54667!> \param nl_c ...
54668!> \param nl_d ...
54669!> \param sphi_a ...
54670!> \param sphi_b ...
54671!> \param sphi_c ...
54672!> \param sphi_d ...
54673!> \param primitives ...
54674!> \param buffer1 ...
54675!> \param buffer2 ...
54676! **************************************************************************************************
54677 SUBROUTINE contract_dddp(work, &
54678 nl_a, nl_b, nl_c, nl_d, &
54679 sphi_a, sphi_b, sphi_c, sphi_d, &
54680 primitives, &
54681 buffer1, buffer2)
54682 REAL(dp), DIMENSION(6*6*6*3), INTENT(IN) :: work
54683 INTEGER :: nl_a, nl_b, nl_c, nl_d
54684 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
54685 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
54686 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
54687 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
54688 REAL(dp), &
54689 DIMENSION(5*nl_a, 5*nl_b, 5*nl_c, 3*nl_d) :: primitives
54690 REAL(dp), DIMENSION(6*6*6*3) :: buffer1, buffer2
54691
54692 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
54693 kmax, s_offset_a1, s_offset_b1, &
54694 s_offset_c1, s_offset_d1
54695
54696 s_offset_a1 = 0
54697 DO ia = 1, nl_a
54698 s_offset_b1 = 0
54699 DO ib = 1, nl_b
54700 s_offset_c1 = 0
54701 DO ic = 1, nl_c
54702 s_offset_d1 = 0
54703 DO id = 1, nl_d
54704 buffer1 = 0.0_dp
54705 imax = 6*6*3
54706 kmax = 6
54707 DO i = 1, imax
54708 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
54709 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
54710 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
54711 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
54712 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
54713 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
54714 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
54715 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
54716 END DO
54717 buffer2 = 0.0_dp
54718 imax = 5*6*3
54719 kmax = 6
54720 DO i = 1, imax
54721 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
54722 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
54723 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
54724 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
54725 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
54726 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
54727 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
54728 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
54729 END DO
54730 buffer1 = 0.0_dp
54731 imax = 5*5*3
54732 kmax = 6
54733 DO i = 1, imax
54734 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
54735 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
54736 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
54737 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
54738 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
54739 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
54740 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
54741 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
54742 END DO
54743 imax = 5*5*5
54744 kmax = 3
54745 i = 0
54746 DO i1 = 1, 5
54747 DO i2 = 1, 5
54748 DO i3 = 1, 5
54749 i = i + 1
54750 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
54751 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
54752 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
54753 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
54754 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
54755 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
54756 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
54757 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
54758 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
54759 END DO
54760 END DO
54761 END DO
54762 s_offset_d1 = s_offset_d1 + 3
54763 END DO
54764 s_offset_c1 = s_offset_c1 + 5
54765 END DO
54766 s_offset_b1 = s_offset_b1 + 5
54767 END DO
54768 s_offset_a1 = s_offset_a1 + 5
54769 END DO
54770 END SUBROUTINE contract_dddp
54771#endif
54772#if __MAX_CONTR > 2 || __MAX_CONTR == 2
54773! **************************************************************************************************
54774!> \brief ...
54775!> \param work ...
54776!> \param nl_a ...
54777!> \param nl_b ...
54778!> \param nl_c ...
54779!> \param nl_d ...
54780!> \param sphi_a ...
54781!> \param sphi_b ...
54782!> \param sphi_c ...
54783!> \param sphi_d ...
54784!> \param primitives ...
54785!> \param buffer1 ...
54786!> \param buffer2 ...
54787! **************************************************************************************************
54788 SUBROUTINE contract_dddd(work, &
54789 nl_a, nl_b, nl_c, nl_d, &
54790 sphi_a, sphi_b, sphi_c, sphi_d, &
54791 primitives, &
54792 buffer1, buffer2)
54793 REAL(dp), DIMENSION(6*6*6*6), INTENT(IN) :: work
54794 INTEGER :: nl_a, nl_b, nl_c, nl_d
54795 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
54796 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
54797 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
54798 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
54799 REAL(dp), &
54800 DIMENSION(5*nl_a, 5*nl_b, 5*nl_c, 5*nl_d) :: primitives
54801 REAL(dp), DIMENSION(6*6*6*6) :: buffer1, buffer2
54802
54803 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
54804 kmax, s_offset_a1, s_offset_b1, &
54805 s_offset_c1, s_offset_d1
54806
54807 s_offset_a1 = 0
54808 DO ia = 1, nl_a
54809 s_offset_b1 = 0
54810 DO ib = 1, nl_b
54811 s_offset_c1 = 0
54812 DO ic = 1, nl_c
54813 s_offset_d1 = 0
54814 DO id = 1, nl_d
54815 buffer1 = 0.0_dp
54816 imax = 6*6*6
54817 kmax = 6
54818 DO i = 1, imax
54819 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
54820 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
54821 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
54822 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
54823 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
54824 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
54825 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
54826 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
54827 END DO
54828 buffer2 = 0.0_dp
54829 imax = 5*6*6
54830 kmax = 6
54831 DO i = 1, imax
54832 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
54833 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
54834 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
54835 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
54836 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
54837 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
54838 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
54839 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
54840 END DO
54841 buffer1 = 0.0_dp
54842 imax = 5*5*6
54843 kmax = 6
54844 DO i = 1, imax
54845 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
54846 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
54847 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
54848 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
54849 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
54850 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
54851 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
54852 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
54853 END DO
54854 imax = 5*5*5
54855 kmax = 6
54856 i = 0
54857 DO i1 = 1, 5
54858 DO i2 = 1, 5
54859 DO i3 = 1, 5
54860 i = i + 1
54861 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
54862 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
54863 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
54864 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
54865 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
54866 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
54867 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
54868 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
54869 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
54870 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
54871 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
54872 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
54873 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
54874 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
54875 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
54876 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
54877 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
54878 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
54879 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
54880 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
54881 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
54882 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
54883 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
54884 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
54885 END DO
54886 END DO
54887 END DO
54888 s_offset_d1 = s_offset_d1 + 5
54889 END DO
54890 s_offset_c1 = s_offset_c1 + 5
54891 END DO
54892 s_offset_b1 = s_offset_b1 + 5
54893 END DO
54894 s_offset_a1 = s_offset_a1 + 5
54895 END DO
54896 END SUBROUTINE contract_dddd
54897#endif
54898#if __MAX_CONTR > 3 || __MAX_CONTR == 3
54899! **************************************************************************************************
54900!> \brief ...
54901!> \param work ...
54902!> \param nl_a ...
54903!> \param nl_b ...
54904!> \param nl_c ...
54905!> \param nl_d ...
54906!> \param sphi_a ...
54907!> \param sphi_b ...
54908!> \param sphi_c ...
54909!> \param sphi_d ...
54910!> \param primitives ...
54911!> \param buffer1 ...
54912!> \param buffer2 ...
54913! **************************************************************************************************
54914 SUBROUTINE contract_dddf(work, &
54915 nl_a, nl_b, nl_c, nl_d, &
54916 sphi_a, sphi_b, sphi_c, sphi_d, &
54917 primitives, &
54918 buffer1, buffer2)
54919 REAL(dp), DIMENSION(6*6*6*10), INTENT(IN) :: work
54920 INTEGER :: nl_a, nl_b, nl_c, nl_d
54921 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
54922 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
54923 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
54924 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
54925 REAL(dp), &
54926 DIMENSION(5*nl_a, 5*nl_b, 5*nl_c, 7*nl_d) :: primitives
54927 REAL(dp), DIMENSION(6*6*6*10) :: buffer1, buffer2
54928
54929 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
54930 kmax, s_offset_a1, s_offset_b1, &
54931 s_offset_c1, s_offset_d1
54932
54933 s_offset_a1 = 0
54934 DO ia = 1, nl_a
54935 s_offset_b1 = 0
54936 DO ib = 1, nl_b
54937 s_offset_c1 = 0
54938 DO ic = 1, nl_c
54939 s_offset_d1 = 0
54940 DO id = 1, nl_d
54941 buffer1 = 0.0_dp
54942 imax = 6*6*10
54943 kmax = 6
54944 DO i = 1, imax
54945 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
54946 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
54947 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
54948 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
54949 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
54950 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
54951 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
54952 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
54953 END DO
54954 buffer2 = 0.0_dp
54955 imax = 5*6*10
54956 kmax = 6
54957 DO i = 1, imax
54958 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
54959 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
54960 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
54961 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
54962 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
54963 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
54964 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
54965 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
54966 END DO
54967 buffer1 = 0.0_dp
54968 imax = 5*5*10
54969 kmax = 6
54970 DO i = 1, imax
54971 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
54972 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
54973 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
54974 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
54975 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
54976 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
54977 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
54978 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
54979 END DO
54980 imax = 5*5*5
54981 kmax = 10
54982 i = 0
54983 DO i1 = 1, 5
54984 DO i2 = 1, 5
54985 DO i3 = 1, 5
54986 i = i + 1
54987 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
54988 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
54989 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
54990 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
54991 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
54992 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
54993 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
54994 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
54995 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
54996 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
54997 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
54998 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
54999 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
55000 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
55001 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
55002 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
55003 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
55004 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
55005 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
55006 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
55007 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
55008 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
55009 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
55010 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
55011 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
55012 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
55013 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
55014 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
55015 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
55016 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
55017 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
55018 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
55019 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
55020 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
55021 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
55022 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
55023 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
55024 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
55025 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
55026 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
55027 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
55028 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
55029 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
55030 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
55031 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
55032 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
55033 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
55034 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
55035 END DO
55036 END DO
55037 END DO
55038 s_offset_d1 = s_offset_d1 + 7
55039 END DO
55040 s_offset_c1 = s_offset_c1 + 5
55041 END DO
55042 s_offset_b1 = s_offset_b1 + 5
55043 END DO
55044 s_offset_a1 = s_offset_a1 + 5
55045 END DO
55046 END SUBROUTINE contract_dddf
55047#endif
55048#if __MAX_CONTR > 4 || __MAX_CONTR == 4
55049! **************************************************************************************************
55050!> \brief ...
55051!> \param work ...
55052!> \param nl_a ...
55053!> \param nl_b ...
55054!> \param nl_c ...
55055!> \param nl_d ...
55056!> \param sphi_a ...
55057!> \param sphi_b ...
55058!> \param sphi_c ...
55059!> \param sphi_d ...
55060!> \param primitives ...
55061!> \param buffer1 ...
55062!> \param buffer2 ...
55063! **************************************************************************************************
55064 SUBROUTINE contract_dddg(work, &
55065 nl_a, nl_b, nl_c, nl_d, &
55066 sphi_a, sphi_b, sphi_c, sphi_d, &
55067 primitives, &
55068 buffer1, buffer2)
55069 REAL(dp), DIMENSION(6*6*6*15), INTENT(IN) :: work
55070 INTEGER :: nl_a, nl_b, nl_c, nl_d
55071 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
55072 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
55073 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
55074 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
55075 REAL(dp), &
55076 DIMENSION(5*nl_a, 5*nl_b, 5*nl_c, 9*nl_d) :: primitives
55077 REAL(dp), DIMENSION(6*6*6*15) :: buffer1, buffer2
55078
55079 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
55080 kmax, s_offset_a1, s_offset_b1, &
55081 s_offset_c1, s_offset_d1
55082
55083 s_offset_a1 = 0
55084 DO ia = 1, nl_a
55085 s_offset_b1 = 0
55086 DO ib = 1, nl_b
55087 s_offset_c1 = 0
55088 DO ic = 1, nl_c
55089 s_offset_d1 = 0
55090 DO id = 1, nl_d
55091 buffer1 = 0.0_dp
55092 imax = 6*6*15
55093 kmax = 6
55094 DO i = 1, imax
55095 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
55096 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
55097 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
55098 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
55099 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
55100 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
55101 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
55102 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
55103 END DO
55104 buffer2 = 0.0_dp
55105 imax = 5*6*15
55106 kmax = 6
55107 DO i = 1, imax
55108 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
55109 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
55110 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
55111 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
55112 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
55113 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
55114 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
55115 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
55116 END DO
55117 buffer1 = 0.0_dp
55118 imax = 5*5*15
55119 kmax = 6
55120 DO i = 1, imax
55121 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
55122 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
55123 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
55124 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
55125 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
55126 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
55127 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
55128 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
55129 END DO
55130 imax = 5*5*5
55131 kmax = 15
55132 i = 0
55133 DO i1 = 1, 5
55134 DO i2 = 1, 5
55135 DO i3 = 1, 5
55136 i = i + 1
55137 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
55138 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
55139 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
55140 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
55141 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
55142 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
55143 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
55144 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
55145 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
55146 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
55147 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
55148 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
55149 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
55150 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
55151 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
55152 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
55153 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
55154 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
55155 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
55156 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
55157 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
55158 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
55159 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
55160 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
55161 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
55162 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
55163 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
55164 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
55165 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
55166 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
55167 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
55168 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
55169 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
55170 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
55171 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
55172 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
55173 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
55174 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
55175 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
55176 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
55177 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
55178 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
55179 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
55180 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
55181 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
55182 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
55183 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
55184 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
55185 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
55186 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
55187 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
55188 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
55189 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
55190 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
55191 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
55192 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
55193 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
55194 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
55195 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
55196 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
55197 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
55198 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
55199 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
55200 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
55201 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
55202 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
55203 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
55204 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
55205 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
55206 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
55207 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
55208 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
55209 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
55210 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
55211 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
55212 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
55213 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
55214 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
55215 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
55216 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
55217 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
55218 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
55219 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
55220 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
55221 END DO
55222 END DO
55223 END DO
55224 s_offset_d1 = s_offset_d1 + 9
55225 END DO
55226 s_offset_c1 = s_offset_c1 + 5
55227 END DO
55228 s_offset_b1 = s_offset_b1 + 5
55229 END DO
55230 s_offset_a1 = s_offset_a1 + 5
55231 END DO
55232 END SUBROUTINE contract_dddg
55233#endif
55234#if __MAX_CONTR > 3 || __MAX_CONTR == 3
55235! **************************************************************************************************
55236!> \brief ...
55237!> \param work ...
55238!> \param nl_a ...
55239!> \param nl_b ...
55240!> \param nl_c ...
55241!> \param nl_d ...
55242!> \param sphi_a ...
55243!> \param sphi_b ...
55244!> \param sphi_c ...
55245!> \param sphi_d ...
55246!> \param primitives ...
55247!> \param buffer1 ...
55248!> \param buffer2 ...
55249! **************************************************************************************************
55250 SUBROUTINE contract_ddfs(work, &
55251 nl_a, nl_b, nl_c, nl_d, &
55252 sphi_a, sphi_b, sphi_c, sphi_d, &
55253 primitives, &
55254 buffer1, buffer2)
55255 REAL(dp), DIMENSION(6*6*10*1), INTENT(IN) :: work
55256 INTEGER :: nl_a, nl_b, nl_c, nl_d
55257 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
55258 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
55259 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
55260 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
55261 REAL(dp), &
55262 DIMENSION(5*nl_a, 5*nl_b, 7*nl_c, 1*nl_d) :: primitives
55263 REAL(dp), DIMENSION(6*6*10*1) :: buffer1, buffer2
55264
55265 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
55266 kmax, s_offset_a1, s_offset_b1, &
55267 s_offset_c1, s_offset_d1
55268
55269 s_offset_a1 = 0
55270 DO ia = 1, nl_a
55271 s_offset_b1 = 0
55272 DO ib = 1, nl_b
55273 s_offset_c1 = 0
55274 DO ic = 1, nl_c
55275 s_offset_d1 = 0
55276 DO id = 1, nl_d
55277 buffer1 = 0.0_dp
55278 imax = 6*10*1
55279 kmax = 6
55280 DO i = 1, imax
55281 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
55282 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
55283 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
55284 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
55285 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
55286 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
55287 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
55288 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
55289 END DO
55290 buffer2 = 0.0_dp
55291 imax = 5*10*1
55292 kmax = 6
55293 DO i = 1, imax
55294 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
55295 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
55296 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
55297 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
55298 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
55299 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
55300 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
55301 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
55302 END DO
55303 buffer1 = 0.0_dp
55304 imax = 5*5*1
55305 kmax = 10
55306 DO i = 1, imax
55307 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
55308 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
55309 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
55310 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
55311 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
55312 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
55313 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
55314 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
55315 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
55316 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
55317 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
55318 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
55319 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
55320 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
55321 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
55322 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
55323 END DO
55324 imax = 5*5*7
55325 kmax = 1
55326 i = 0
55327 DO i1 = 1, 7
55328 DO i2 = 1, 5
55329 DO i3 = 1, 5
55330 i = i + 1
55331 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
55332 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
55333 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
55334 END DO
55335 END DO
55336 END DO
55337 s_offset_d1 = s_offset_d1 + 1
55338 END DO
55339 s_offset_c1 = s_offset_c1 + 7
55340 END DO
55341 s_offset_b1 = s_offset_b1 + 5
55342 END DO
55343 s_offset_a1 = s_offset_a1 + 5
55344 END DO
55345 END SUBROUTINE contract_ddfs
55346#endif
55347#if __MAX_CONTR > 3 || __MAX_CONTR == 3
55348! **************************************************************************************************
55349!> \brief ...
55350!> \param work ...
55351!> \param nl_a ...
55352!> \param nl_b ...
55353!> \param nl_c ...
55354!> \param nl_d ...
55355!> \param sphi_a ...
55356!> \param sphi_b ...
55357!> \param sphi_c ...
55358!> \param sphi_d ...
55359!> \param primitives ...
55360!> \param buffer1 ...
55361!> \param buffer2 ...
55362! **************************************************************************************************
55363 SUBROUTINE contract_ddfp(work, &
55364 nl_a, nl_b, nl_c, nl_d, &
55365 sphi_a, sphi_b, sphi_c, sphi_d, &
55366 primitives, &
55367 buffer1, buffer2)
55368 REAL(dp), DIMENSION(6*6*10*3), INTENT(IN) :: work
55369 INTEGER :: nl_a, nl_b, nl_c, nl_d
55370 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
55371 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
55372 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
55373 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
55374 REAL(dp), &
55375 DIMENSION(5*nl_a, 5*nl_b, 7*nl_c, 3*nl_d) :: primitives
55376 REAL(dp), DIMENSION(6*6*10*3) :: buffer1, buffer2
55377
55378 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
55379 kmax, s_offset_a1, s_offset_b1, &
55380 s_offset_c1, s_offset_d1
55381
55382 s_offset_a1 = 0
55383 DO ia = 1, nl_a
55384 s_offset_b1 = 0
55385 DO ib = 1, nl_b
55386 s_offset_c1 = 0
55387 DO ic = 1, nl_c
55388 s_offset_d1 = 0
55389 DO id = 1, nl_d
55390 buffer1 = 0.0_dp
55391 imax = 6*10*3
55392 kmax = 6
55393 DO i = 1, imax
55394 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
55395 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
55396 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
55397 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
55398 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
55399 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
55400 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
55401 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
55402 END DO
55403 buffer2 = 0.0_dp
55404 imax = 5*10*3
55405 kmax = 6
55406 DO i = 1, imax
55407 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
55408 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
55409 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
55410 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
55411 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
55412 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
55413 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
55414 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
55415 END DO
55416 buffer1 = 0.0_dp
55417 imax = 5*5*3
55418 kmax = 10
55419 DO i = 1, imax
55420 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
55421 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
55422 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
55423 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
55424 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
55425 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
55426 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
55427 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
55428 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
55429 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
55430 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
55431 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
55432 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
55433 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
55434 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
55435 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
55436 END DO
55437 imax = 5*5*7
55438 kmax = 3
55439 i = 0
55440 DO i1 = 1, 7
55441 DO i2 = 1, 5
55442 DO i3 = 1, 5
55443 i = i + 1
55444 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
55445 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
55446 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
55447 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
55448 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
55449 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
55450 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
55451 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
55452 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
55453 END DO
55454 END DO
55455 END DO
55456 s_offset_d1 = s_offset_d1 + 3
55457 END DO
55458 s_offset_c1 = s_offset_c1 + 7
55459 END DO
55460 s_offset_b1 = s_offset_b1 + 5
55461 END DO
55462 s_offset_a1 = s_offset_a1 + 5
55463 END DO
55464 END SUBROUTINE contract_ddfp
55465#endif
55466#if __MAX_CONTR > 3 || __MAX_CONTR == 3
55467! **************************************************************************************************
55468!> \brief ...
55469!> \param work ...
55470!> \param nl_a ...
55471!> \param nl_b ...
55472!> \param nl_c ...
55473!> \param nl_d ...
55474!> \param sphi_a ...
55475!> \param sphi_b ...
55476!> \param sphi_c ...
55477!> \param sphi_d ...
55478!> \param primitives ...
55479!> \param buffer1 ...
55480!> \param buffer2 ...
55481! **************************************************************************************************
55482 SUBROUTINE contract_ddfd(work, &
55483 nl_a, nl_b, nl_c, nl_d, &
55484 sphi_a, sphi_b, sphi_c, sphi_d, &
55485 primitives, &
55486 buffer1, buffer2)
55487 REAL(dp), DIMENSION(6*6*10*6), INTENT(IN) :: work
55488 INTEGER :: nl_a, nl_b, nl_c, nl_d
55489 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
55490 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
55491 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
55492 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
55493 REAL(dp), &
55494 DIMENSION(5*nl_a, 5*nl_b, 7*nl_c, 5*nl_d) :: primitives
55495 REAL(dp), DIMENSION(6*6*10*6) :: buffer1, buffer2
55496
55497 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
55498 kmax, s_offset_a1, s_offset_b1, &
55499 s_offset_c1, s_offset_d1
55500
55501 s_offset_a1 = 0
55502 DO ia = 1, nl_a
55503 s_offset_b1 = 0
55504 DO ib = 1, nl_b
55505 s_offset_c1 = 0
55506 DO ic = 1, nl_c
55507 s_offset_d1 = 0
55508 DO id = 1, nl_d
55509 buffer1 = 0.0_dp
55510 imax = 6*10*6
55511 kmax = 6
55512 DO i = 1, imax
55513 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
55514 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
55515 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
55516 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
55517 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
55518 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
55519 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
55520 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
55521 END DO
55522 buffer2 = 0.0_dp
55523 imax = 5*10*6
55524 kmax = 6
55525 DO i = 1, imax
55526 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
55527 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
55528 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
55529 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
55530 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
55531 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
55532 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
55533 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
55534 END DO
55535 buffer1 = 0.0_dp
55536 imax = 5*5*6
55537 kmax = 10
55538 DO i = 1, imax
55539 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
55540 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
55541 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
55542 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
55543 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
55544 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
55545 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
55546 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
55547 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
55548 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
55549 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
55550 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
55551 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
55552 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
55553 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
55554 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
55555 END DO
55556 imax = 5*5*7
55557 kmax = 6
55558 i = 0
55559 DO i1 = 1, 7
55560 DO i2 = 1, 5
55561 DO i3 = 1, 5
55562 i = i + 1
55563 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
55564 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
55565 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
55566 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
55567 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
55568 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
55569 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
55570 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
55571 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
55572 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
55573 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
55574 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
55575 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
55576 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
55577 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
55578 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
55579 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
55580 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
55581 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
55582 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
55583 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
55584 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
55585 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
55586 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
55587 END DO
55588 END DO
55589 END DO
55590 s_offset_d1 = s_offset_d1 + 5
55591 END DO
55592 s_offset_c1 = s_offset_c1 + 7
55593 END DO
55594 s_offset_b1 = s_offset_b1 + 5
55595 END DO
55596 s_offset_a1 = s_offset_a1 + 5
55597 END DO
55598 END SUBROUTINE contract_ddfd
55599#endif
55600#if __MAX_CONTR > 3 || __MAX_CONTR == 3
55601! **************************************************************************************************
55602!> \brief ...
55603!> \param work ...
55604!> \param nl_a ...
55605!> \param nl_b ...
55606!> \param nl_c ...
55607!> \param nl_d ...
55608!> \param sphi_a ...
55609!> \param sphi_b ...
55610!> \param sphi_c ...
55611!> \param sphi_d ...
55612!> \param primitives ...
55613!> \param buffer1 ...
55614!> \param buffer2 ...
55615! **************************************************************************************************
55616 SUBROUTINE contract_ddff(work, &
55617 nl_a, nl_b, nl_c, nl_d, &
55618 sphi_a, sphi_b, sphi_c, sphi_d, &
55619 primitives, &
55620 buffer1, buffer2)
55621 REAL(dp), DIMENSION(6*6*10*10), INTENT(IN) :: work
55622 INTEGER :: nl_a, nl_b, nl_c, nl_d
55623 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
55624 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
55625 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
55626 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
55627 REAL(dp), &
55628 DIMENSION(5*nl_a, 5*nl_b, 7*nl_c, 7*nl_d) :: primitives
55629 REAL(dp), DIMENSION(6*6*10*10) :: buffer1, buffer2
55630
55631 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
55632 kmax, s_offset_a1, s_offset_b1, &
55633 s_offset_c1, s_offset_d1
55634
55635 s_offset_a1 = 0
55636 DO ia = 1, nl_a
55637 s_offset_b1 = 0
55638 DO ib = 1, nl_b
55639 s_offset_c1 = 0
55640 DO ic = 1, nl_c
55641 s_offset_d1 = 0
55642 DO id = 1, nl_d
55643 buffer1 = 0.0_dp
55644 imax = 6*10*10
55645 kmax = 6
55646 DO i = 1, imax
55647 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
55648 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
55649 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
55650 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
55651 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
55652 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
55653 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
55654 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
55655 END DO
55656 buffer2 = 0.0_dp
55657 imax = 5*10*10
55658 kmax = 6
55659 DO i = 1, imax
55660 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
55661 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
55662 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
55663 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
55664 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
55665 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
55666 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
55667 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
55668 END DO
55669 buffer1 = 0.0_dp
55670 imax = 5*5*10
55671 kmax = 10
55672 DO i = 1, imax
55673 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
55674 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
55675 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
55676 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
55677 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
55678 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
55679 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
55680 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
55681 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
55682 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
55683 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
55684 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
55685 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
55686 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
55687 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
55688 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
55689 END DO
55690 imax = 5*5*7
55691 kmax = 10
55692 i = 0
55693 DO i1 = 1, 7
55694 DO i2 = 1, 5
55695 DO i3 = 1, 5
55696 i = i + 1
55697 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
55698 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
55699 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
55700 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
55701 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
55702 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
55703 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
55704 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
55705 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
55706 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
55707 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
55708 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
55709 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
55710 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
55711 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
55712 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
55713 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
55714 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
55715 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
55716 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
55717 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
55718 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
55719 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
55720 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
55721 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
55722 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
55723 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
55724 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
55725 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
55726 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
55727 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
55728 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
55729 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
55730 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
55731 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
55732 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
55733 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
55734 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
55735 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
55736 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
55737 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
55738 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
55739 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
55740 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
55741 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
55742 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
55743 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
55744 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
55745 END DO
55746 END DO
55747 END DO
55748 s_offset_d1 = s_offset_d1 + 7
55749 END DO
55750 s_offset_c1 = s_offset_c1 + 7
55751 END DO
55752 s_offset_b1 = s_offset_b1 + 5
55753 END DO
55754 s_offset_a1 = s_offset_a1 + 5
55755 END DO
55756 END SUBROUTINE contract_ddff
55757#endif
55758#if __MAX_CONTR > 4 || __MAX_CONTR == 4
55759! **************************************************************************************************
55760!> \brief ...
55761!> \param work ...
55762!> \param nl_a ...
55763!> \param nl_b ...
55764!> \param nl_c ...
55765!> \param nl_d ...
55766!> \param sphi_a ...
55767!> \param sphi_b ...
55768!> \param sphi_c ...
55769!> \param sphi_d ...
55770!> \param primitives ...
55771!> \param buffer1 ...
55772!> \param buffer2 ...
55773! **************************************************************************************************
55774 SUBROUTINE contract_ddfg(work, &
55775 nl_a, nl_b, nl_c, nl_d, &
55776 sphi_a, sphi_b, sphi_c, sphi_d, &
55777 primitives, &
55778 buffer1, buffer2)
55779 REAL(dp), DIMENSION(6*6*10*15), INTENT(IN) :: work
55780 INTEGER :: nl_a, nl_b, nl_c, nl_d
55781 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
55782 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
55783 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
55784 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
55785 REAL(dp), &
55786 DIMENSION(5*nl_a, 5*nl_b, 7*nl_c, 9*nl_d) :: primitives
55787 REAL(dp), DIMENSION(6*6*10*15) :: buffer1, buffer2
55788
55789 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
55790 kmax, s_offset_a1, s_offset_b1, &
55791 s_offset_c1, s_offset_d1
55792
55793 s_offset_a1 = 0
55794 DO ia = 1, nl_a
55795 s_offset_b1 = 0
55796 DO ib = 1, nl_b
55797 s_offset_c1 = 0
55798 DO ic = 1, nl_c
55799 s_offset_d1 = 0
55800 DO id = 1, nl_d
55801 buffer1 = 0.0_dp
55802 imax = 6*10*15
55803 kmax = 6
55804 DO i = 1, imax
55805 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
55806 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
55807 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
55808 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
55809 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
55810 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
55811 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
55812 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
55813 END DO
55814 buffer2 = 0.0_dp
55815 imax = 5*10*15
55816 kmax = 6
55817 DO i = 1, imax
55818 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
55819 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
55820 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
55821 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
55822 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
55823 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
55824 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
55825 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
55826 END DO
55827 buffer1 = 0.0_dp
55828 imax = 5*5*15
55829 kmax = 10
55830 DO i = 1, imax
55831 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
55832 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
55833 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
55834 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
55835 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
55836 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
55837 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
55838 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
55839 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
55840 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
55841 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
55842 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
55843 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
55844 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
55845 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
55846 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
55847 END DO
55848 imax = 5*5*7
55849 kmax = 15
55850 i = 0
55851 DO i1 = 1, 7
55852 DO i2 = 1, 5
55853 DO i3 = 1, 5
55854 i = i + 1
55855 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
55856 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
55857 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
55858 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
55859 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
55860 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
55861 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
55862 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
55863 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
55864 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
55865 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
55866 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
55867 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
55868 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
55869 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
55870 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
55871 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
55872 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
55873 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
55874 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
55875 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
55876 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
55877 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
55878 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
55879 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
55880 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
55881 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
55882 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
55883 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
55884 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
55885 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
55886 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
55887 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
55888 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
55889 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
55890 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
55891 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
55892 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
55893 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
55894 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
55895 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
55896 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
55897 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
55898 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
55899 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
55900 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
55901 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
55902 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
55903 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
55904 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
55905 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
55906 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
55907 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
55908 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
55909 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
55910 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
55911 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
55912 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
55913 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
55914 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
55915 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
55916 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
55917 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
55918 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
55919 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
55920 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
55921 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
55922 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
55923 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
55924 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
55925 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
55926 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
55927 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
55928 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
55929 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
55930 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
55931 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
55932 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
55933 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
55934 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
55935 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
55936 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
55937 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
55938 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
55939 END DO
55940 END DO
55941 END DO
55942 s_offset_d1 = s_offset_d1 + 9
55943 END DO
55944 s_offset_c1 = s_offset_c1 + 7
55945 END DO
55946 s_offset_b1 = s_offset_b1 + 5
55947 END DO
55948 s_offset_a1 = s_offset_a1 + 5
55949 END DO
55950 END SUBROUTINE contract_ddfg
55951#endif
55952#if __MAX_CONTR > 4 || __MAX_CONTR == 4
55953! **************************************************************************************************
55954!> \brief ...
55955!> \param work ...
55956!> \param nl_a ...
55957!> \param nl_b ...
55958!> \param nl_c ...
55959!> \param nl_d ...
55960!> \param sphi_a ...
55961!> \param sphi_b ...
55962!> \param sphi_c ...
55963!> \param sphi_d ...
55964!> \param primitives ...
55965!> \param buffer1 ...
55966!> \param buffer2 ...
55967! **************************************************************************************************
55968 SUBROUTINE contract_ddgs(work, &
55969 nl_a, nl_b, nl_c, nl_d, &
55970 sphi_a, sphi_b, sphi_c, sphi_d, &
55971 primitives, &
55972 buffer1, buffer2)
55973 REAL(dp), DIMENSION(6*6*15*1), INTENT(IN) :: work
55974 INTEGER :: nl_a, nl_b, nl_c, nl_d
55975 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
55976 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
55977 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
55978 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
55979 REAL(dp), &
55980 DIMENSION(5*nl_a, 5*nl_b, 9*nl_c, 1*nl_d) :: primitives
55981 REAL(dp), DIMENSION(6*6*15*1) :: buffer1, buffer2
55982
55983 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
55984 kmax, s_offset_a1, s_offset_b1, &
55985 s_offset_c1, s_offset_d1
55986
55987 s_offset_a1 = 0
55988 DO ia = 1, nl_a
55989 s_offset_b1 = 0
55990 DO ib = 1, nl_b
55991 s_offset_c1 = 0
55992 DO ic = 1, nl_c
55993 s_offset_d1 = 0
55994 DO id = 1, nl_d
55995 buffer1 = 0.0_dp
55996 imax = 6*15*1
55997 kmax = 6
55998 DO i = 1, imax
55999 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
56000 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
56001 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
56002 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
56003 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
56004 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
56005 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
56006 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
56007 END DO
56008 buffer2 = 0.0_dp
56009 imax = 5*15*1
56010 kmax = 6
56011 DO i = 1, imax
56012 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
56013 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
56014 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
56015 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
56016 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
56017 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
56018 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
56019 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
56020 END DO
56021 buffer1 = 0.0_dp
56022 imax = 5*5*1
56023 kmax = 15
56024 DO i = 1, imax
56025 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
56026 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
56027 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
56028 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
56029 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
56030 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
56031 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
56032 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
56033 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
56034 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
56035 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
56036 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
56037 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
56038 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
56039 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
56040 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
56041 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
56042 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
56043 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
56044 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
56045 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
56046 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
56047 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
56048 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
56049 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
56050 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
56051 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
56052 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
56053 END DO
56054 imax = 5*5*9
56055 kmax = 1
56056 i = 0
56057 DO i1 = 1, 9
56058 DO i2 = 1, 5
56059 DO i3 = 1, 5
56060 i = i + 1
56061 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
56062 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
56063 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
56064 END DO
56065 END DO
56066 END DO
56067 s_offset_d1 = s_offset_d1 + 1
56068 END DO
56069 s_offset_c1 = s_offset_c1 + 9
56070 END DO
56071 s_offset_b1 = s_offset_b1 + 5
56072 END DO
56073 s_offset_a1 = s_offset_a1 + 5
56074 END DO
56075 END SUBROUTINE contract_ddgs
56076#endif
56077#if __MAX_CONTR > 4 || __MAX_CONTR == 4
56078! **************************************************************************************************
56079!> \brief ...
56080!> \param work ...
56081!> \param nl_a ...
56082!> \param nl_b ...
56083!> \param nl_c ...
56084!> \param nl_d ...
56085!> \param sphi_a ...
56086!> \param sphi_b ...
56087!> \param sphi_c ...
56088!> \param sphi_d ...
56089!> \param primitives ...
56090!> \param buffer1 ...
56091!> \param buffer2 ...
56092! **************************************************************************************************
56093 SUBROUTINE contract_ddgp(work, &
56094 nl_a, nl_b, nl_c, nl_d, &
56095 sphi_a, sphi_b, sphi_c, sphi_d, &
56096 primitives, &
56097 buffer1, buffer2)
56098 REAL(dp), DIMENSION(6*6*15*3), INTENT(IN) :: work
56099 INTEGER :: nl_a, nl_b, nl_c, nl_d
56100 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
56101 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
56102 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
56103 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
56104 REAL(dp), &
56105 DIMENSION(5*nl_a, 5*nl_b, 9*nl_c, 3*nl_d) :: primitives
56106 REAL(dp), DIMENSION(6*6*15*3) :: buffer1, buffer2
56107
56108 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
56109 kmax, s_offset_a1, s_offset_b1, &
56110 s_offset_c1, s_offset_d1
56111
56112 s_offset_a1 = 0
56113 DO ia = 1, nl_a
56114 s_offset_b1 = 0
56115 DO ib = 1, nl_b
56116 s_offset_c1 = 0
56117 DO ic = 1, nl_c
56118 s_offset_d1 = 0
56119 DO id = 1, nl_d
56120 buffer1 = 0.0_dp
56121 imax = 6*15*3
56122 kmax = 6
56123 DO i = 1, imax
56124 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
56125 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
56126 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
56127 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
56128 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
56129 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
56130 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
56131 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
56132 END DO
56133 buffer2 = 0.0_dp
56134 imax = 5*15*3
56135 kmax = 6
56136 DO i = 1, imax
56137 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
56138 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
56139 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
56140 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
56141 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
56142 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
56143 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
56144 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
56145 END DO
56146 buffer1 = 0.0_dp
56147 imax = 5*5*3
56148 kmax = 15
56149 DO i = 1, imax
56150 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
56151 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
56152 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
56153 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
56154 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
56155 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
56156 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
56157 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
56158 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
56159 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
56160 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
56161 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
56162 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
56163 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
56164 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
56165 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
56166 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
56167 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
56168 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
56169 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
56170 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
56171 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
56172 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
56173 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
56174 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
56175 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
56176 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
56177 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
56178 END DO
56179 imax = 5*5*9
56180 kmax = 3
56181 i = 0
56182 DO i1 = 1, 9
56183 DO i2 = 1, 5
56184 DO i3 = 1, 5
56185 i = i + 1
56186 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
56187 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
56188 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
56189 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
56190 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
56191 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
56192 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
56193 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
56194 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
56195 END DO
56196 END DO
56197 END DO
56198 s_offset_d1 = s_offset_d1 + 3
56199 END DO
56200 s_offset_c1 = s_offset_c1 + 9
56201 END DO
56202 s_offset_b1 = s_offset_b1 + 5
56203 END DO
56204 s_offset_a1 = s_offset_a1 + 5
56205 END DO
56206 END SUBROUTINE contract_ddgp
56207#endif
56208#if __MAX_CONTR > 4 || __MAX_CONTR == 4
56209! **************************************************************************************************
56210!> \brief ...
56211!> \param work ...
56212!> \param nl_a ...
56213!> \param nl_b ...
56214!> \param nl_c ...
56215!> \param nl_d ...
56216!> \param sphi_a ...
56217!> \param sphi_b ...
56218!> \param sphi_c ...
56219!> \param sphi_d ...
56220!> \param primitives ...
56221!> \param buffer1 ...
56222!> \param buffer2 ...
56223! **************************************************************************************************
56224 SUBROUTINE contract_ddgd(work, &
56225 nl_a, nl_b, nl_c, nl_d, &
56226 sphi_a, sphi_b, sphi_c, sphi_d, &
56227 primitives, &
56228 buffer1, buffer2)
56229 REAL(dp), DIMENSION(6*6*15*6), INTENT(IN) :: work
56230 INTEGER :: nl_a, nl_b, nl_c, nl_d
56231 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
56232 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
56233 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
56234 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
56235 REAL(dp), &
56236 DIMENSION(5*nl_a, 5*nl_b, 9*nl_c, 5*nl_d) :: primitives
56237 REAL(dp), DIMENSION(6*6*15*6) :: buffer1, buffer2
56238
56239 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
56240 kmax, s_offset_a1, s_offset_b1, &
56241 s_offset_c1, s_offset_d1
56242
56243 s_offset_a1 = 0
56244 DO ia = 1, nl_a
56245 s_offset_b1 = 0
56246 DO ib = 1, nl_b
56247 s_offset_c1 = 0
56248 DO ic = 1, nl_c
56249 s_offset_d1 = 0
56250 DO id = 1, nl_d
56251 buffer1 = 0.0_dp
56252 imax = 6*15*6
56253 kmax = 6
56254 DO i = 1, imax
56255 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
56256 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
56257 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
56258 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
56259 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
56260 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
56261 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
56262 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
56263 END DO
56264 buffer2 = 0.0_dp
56265 imax = 5*15*6
56266 kmax = 6
56267 DO i = 1, imax
56268 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
56269 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
56270 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
56271 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
56272 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
56273 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
56274 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
56275 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
56276 END DO
56277 buffer1 = 0.0_dp
56278 imax = 5*5*6
56279 kmax = 15
56280 DO i = 1, imax
56281 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
56282 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
56283 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
56284 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
56285 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
56286 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
56287 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
56288 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
56289 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
56290 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
56291 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
56292 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
56293 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
56294 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
56295 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
56296 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
56297 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
56298 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
56299 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
56300 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
56301 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
56302 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
56303 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
56304 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
56305 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
56306 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
56307 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
56308 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
56309 END DO
56310 imax = 5*5*9
56311 kmax = 6
56312 i = 0
56313 DO i1 = 1, 9
56314 DO i2 = 1, 5
56315 DO i3 = 1, 5
56316 i = i + 1
56317 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
56318 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
56319 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
56320 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
56321 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
56322 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
56323 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
56324 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
56325 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
56326 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
56327 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
56328 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
56329 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
56330 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
56331 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
56332 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
56333 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
56334 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
56335 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
56336 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
56337 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
56338 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
56339 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
56340 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
56341 END DO
56342 END DO
56343 END DO
56344 s_offset_d1 = s_offset_d1 + 5
56345 END DO
56346 s_offset_c1 = s_offset_c1 + 9
56347 END DO
56348 s_offset_b1 = s_offset_b1 + 5
56349 END DO
56350 s_offset_a1 = s_offset_a1 + 5
56351 END DO
56352 END SUBROUTINE contract_ddgd
56353#endif
56354#if __MAX_CONTR > 4 || __MAX_CONTR == 4
56355! **************************************************************************************************
56356!> \brief ...
56357!> \param work ...
56358!> \param nl_a ...
56359!> \param nl_b ...
56360!> \param nl_c ...
56361!> \param nl_d ...
56362!> \param sphi_a ...
56363!> \param sphi_b ...
56364!> \param sphi_c ...
56365!> \param sphi_d ...
56366!> \param primitives ...
56367!> \param buffer1 ...
56368!> \param buffer2 ...
56369! **************************************************************************************************
56370 SUBROUTINE contract_ddgf(work, &
56371 nl_a, nl_b, nl_c, nl_d, &
56372 sphi_a, sphi_b, sphi_c, sphi_d, &
56373 primitives, &
56374 buffer1, buffer2)
56375 REAL(dp), DIMENSION(6*6*15*10), INTENT(IN) :: work
56376 INTEGER :: nl_a, nl_b, nl_c, nl_d
56377 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
56378 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
56379 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
56380 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
56381 REAL(dp), &
56382 DIMENSION(5*nl_a, 5*nl_b, 9*nl_c, 7*nl_d) :: primitives
56383 REAL(dp), DIMENSION(6*6*15*10) :: buffer1, buffer2
56384
56385 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
56386 kmax, s_offset_a1, s_offset_b1, &
56387 s_offset_c1, s_offset_d1
56388
56389 s_offset_a1 = 0
56390 DO ia = 1, nl_a
56391 s_offset_b1 = 0
56392 DO ib = 1, nl_b
56393 s_offset_c1 = 0
56394 DO ic = 1, nl_c
56395 s_offset_d1 = 0
56396 DO id = 1, nl_d
56397 buffer1 = 0.0_dp
56398 imax = 6*15*10
56399 kmax = 6
56400 DO i = 1, imax
56401 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
56402 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
56403 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
56404 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
56405 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
56406 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
56407 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
56408 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
56409 END DO
56410 buffer2 = 0.0_dp
56411 imax = 5*15*10
56412 kmax = 6
56413 DO i = 1, imax
56414 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
56415 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
56416 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
56417 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
56418 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
56419 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
56420 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
56421 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
56422 END DO
56423 buffer1 = 0.0_dp
56424 imax = 5*5*10
56425 kmax = 15
56426 DO i = 1, imax
56427 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
56428 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
56429 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
56430 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
56431 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
56432 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
56433 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
56434 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
56435 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
56436 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
56437 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
56438 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
56439 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
56440 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
56441 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
56442 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
56443 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
56444 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
56445 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
56446 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
56447 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
56448 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
56449 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
56450 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
56451 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
56452 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
56453 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
56454 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
56455 END DO
56456 imax = 5*5*9
56457 kmax = 10
56458 i = 0
56459 DO i1 = 1, 9
56460 DO i2 = 1, 5
56461 DO i3 = 1, 5
56462 i = i + 1
56463 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
56464 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
56465 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
56466 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
56467 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
56468 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
56469 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
56470 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
56471 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
56472 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
56473 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
56474 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
56475 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
56476 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
56477 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
56478 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
56479 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
56480 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
56481 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
56482 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
56483 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
56484 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
56485 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
56486 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
56487 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
56488 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
56489 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
56490 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
56491 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
56492 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
56493 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
56494 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
56495 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
56496 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
56497 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
56498 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
56499 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
56500 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
56501 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
56502 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
56503 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
56504 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
56505 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
56506 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
56507 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
56508 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
56509 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
56510 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
56511 END DO
56512 END DO
56513 END DO
56514 s_offset_d1 = s_offset_d1 + 7
56515 END DO
56516 s_offset_c1 = s_offset_c1 + 9
56517 END DO
56518 s_offset_b1 = s_offset_b1 + 5
56519 END DO
56520 s_offset_a1 = s_offset_a1 + 5
56521 END DO
56522 END SUBROUTINE contract_ddgf
56523#endif
56524#if __MAX_CONTR > 4 || __MAX_CONTR == 4
56525! **************************************************************************************************
56526!> \brief ...
56527!> \param work ...
56528!> \param nl_a ...
56529!> \param nl_b ...
56530!> \param nl_c ...
56531!> \param nl_d ...
56532!> \param sphi_a ...
56533!> \param sphi_b ...
56534!> \param sphi_c ...
56535!> \param sphi_d ...
56536!> \param primitives ...
56537!> \param buffer1 ...
56538!> \param buffer2 ...
56539! **************************************************************************************************
56540 SUBROUTINE contract_ddgg(work, &
56541 nl_a, nl_b, nl_c, nl_d, &
56542 sphi_a, sphi_b, sphi_c, sphi_d, &
56543 primitives, &
56544 buffer1, buffer2)
56545 REAL(dp), DIMENSION(6*6*15*15), INTENT(IN) :: work
56546 INTEGER :: nl_a, nl_b, nl_c, nl_d
56547 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
56548 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
56549 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
56550 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
56551 REAL(dp), &
56552 DIMENSION(5*nl_a, 5*nl_b, 9*nl_c, 9*nl_d) :: primitives
56553 REAL(dp), DIMENSION(6*6*15*15) :: buffer1, buffer2
56554
56555 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
56556 kmax, s_offset_a1, s_offset_b1, &
56557 s_offset_c1, s_offset_d1
56558
56559 s_offset_a1 = 0
56560 DO ia = 1, nl_a
56561 s_offset_b1 = 0
56562 DO ib = 1, nl_b
56563 s_offset_c1 = 0
56564 DO ic = 1, nl_c
56565 s_offset_d1 = 0
56566 DO id = 1, nl_d
56567 buffer1 = 0.0_dp
56568 imax = 6*15*15
56569 kmax = 6
56570 DO i = 1, imax
56571 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
56572 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
56573 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
56574 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
56575 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
56576 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
56577 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
56578 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
56579 END DO
56580 buffer2 = 0.0_dp
56581 imax = 5*15*15
56582 kmax = 6
56583 DO i = 1, imax
56584 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
56585 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
56586 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
56587 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
56588 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
56589 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
56590 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
56591 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
56592 END DO
56593 buffer1 = 0.0_dp
56594 imax = 5*5*15
56595 kmax = 15
56596 DO i = 1, imax
56597 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
56598 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
56599 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
56600 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
56601 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
56602 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
56603 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
56604 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
56605 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
56606 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
56607 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
56608 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
56609 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
56610 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
56611 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
56612 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
56613 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
56614 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
56615 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
56616 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
56617 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
56618 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
56619 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
56620 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
56621 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
56622 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
56623 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
56624 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
56625 END DO
56626 imax = 5*5*9
56627 kmax = 15
56628 i = 0
56629 DO i1 = 1, 9
56630 DO i2 = 1, 5
56631 DO i3 = 1, 5
56632 i = i + 1
56633 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
56634 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
56635 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
56636 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
56637 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
56638 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
56639 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
56640 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
56641 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
56642 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
56643 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
56644 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
56645 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
56646 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
56647 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
56648 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
56649 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
56650 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
56651 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
56652 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
56653 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
56654 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
56655 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
56656 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
56657 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
56658 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
56659 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
56660 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
56661 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
56662 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
56663 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
56664 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
56665 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
56666 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
56667 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
56668 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
56669 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
56670 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
56671 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
56672 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
56673 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
56674 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
56675 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
56676 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
56677 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
56678 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
56679 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
56680 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
56681 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
56682 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
56683 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
56684 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
56685 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
56686 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
56687 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
56688 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
56689 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
56690 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
56691 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
56692 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
56693 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
56694 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
56695 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
56696 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
56697 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
56698 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
56699 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
56700 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
56701 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
56702 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
56703 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
56704 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
56705 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
56706 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
56707 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
56708 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
56709 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
56710 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
56711 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
56712 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
56713 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
56714 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
56715 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
56716 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
56717 END DO
56718 END DO
56719 END DO
56720 s_offset_d1 = s_offset_d1 + 9
56721 END DO
56722 s_offset_c1 = s_offset_c1 + 9
56723 END DO
56724 s_offset_b1 = s_offset_b1 + 5
56725 END DO
56726 s_offset_a1 = s_offset_a1 + 5
56727 END DO
56728 END SUBROUTINE contract_ddgg
56729#endif
56730#if __MAX_CONTR > 3 || __MAX_CONTR == 3
56731! **************************************************************************************************
56732!> \brief ...
56733!> \param work ...
56734!> \param nl_a ...
56735!> \param nl_b ...
56736!> \param nl_c ...
56737!> \param nl_d ...
56738!> \param sphi_a ...
56739!> \param sphi_b ...
56740!> \param sphi_c ...
56741!> \param sphi_d ...
56742!> \param primitives ...
56743!> \param buffer1 ...
56744!> \param buffer2 ...
56745! **************************************************************************************************
56746 SUBROUTINE contract_dfss(work, &
56747 nl_a, nl_b, nl_c, nl_d, &
56748 sphi_a, sphi_b, sphi_c, sphi_d, &
56749 primitives, &
56750 buffer1, buffer2)
56751 REAL(dp), DIMENSION(6*10*1*1), INTENT(IN) :: work
56752 INTEGER :: nl_a, nl_b, nl_c, nl_d
56753 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
56754 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
56755 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
56756 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
56757 REAL(dp), &
56758 DIMENSION(5*nl_a, 7*nl_b, 1*nl_c, 1*nl_d) :: primitives
56759 REAL(dp), DIMENSION(6*10*1*1) :: buffer1, buffer2
56760
56761 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
56762 kmax, s_offset_a1, s_offset_b1, &
56763 s_offset_c1, s_offset_d1
56764
56765 s_offset_a1 = 0
56766 DO ia = 1, nl_a
56767 s_offset_b1 = 0
56768 DO ib = 1, nl_b
56769 s_offset_c1 = 0
56770 DO ic = 1, nl_c
56771 s_offset_d1 = 0
56772 DO id = 1, nl_d
56773 buffer1 = 0.0_dp
56774 imax = 10*1*1
56775 kmax = 6
56776 DO i = 1, imax
56777 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
56778 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
56779 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
56780 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
56781 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
56782 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
56783 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
56784 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
56785 END DO
56786 buffer2 = 0.0_dp
56787 imax = 5*1*1
56788 kmax = 10
56789 DO i = 1, imax
56790 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
56791 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
56792 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
56793 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
56794 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
56795 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
56796 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
56797 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
56798 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
56799 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
56800 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
56801 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
56802 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
56803 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
56804 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
56805 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
56806 END DO
56807 buffer1 = 0.0_dp
56808 imax = 5*7*1
56809 kmax = 1
56810 DO i = 1, imax
56811 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
56812 END DO
56813 imax = 5*7*1
56814 kmax = 1
56815 i = 0
56816 DO i1 = 1, 1
56817 DO i2 = 1, 7
56818 DO i3 = 1, 5
56819 i = i + 1
56820 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
56821 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
56822 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
56823 END DO
56824 END DO
56825 END DO
56826 s_offset_d1 = s_offset_d1 + 1
56827 END DO
56828 s_offset_c1 = s_offset_c1 + 1
56829 END DO
56830 s_offset_b1 = s_offset_b1 + 7
56831 END DO
56832 s_offset_a1 = s_offset_a1 + 5
56833 END DO
56834 END SUBROUTINE contract_dfss
56835#endif
56836#if __MAX_CONTR > 3 || __MAX_CONTR == 3
56837! **************************************************************************************************
56838!> \brief ...
56839!> \param work ...
56840!> \param nl_a ...
56841!> \param nl_b ...
56842!> \param nl_c ...
56843!> \param nl_d ...
56844!> \param sphi_a ...
56845!> \param sphi_b ...
56846!> \param sphi_c ...
56847!> \param sphi_d ...
56848!> \param primitives ...
56849!> \param buffer1 ...
56850!> \param buffer2 ...
56851! **************************************************************************************************
56852 SUBROUTINE contract_dfsp(work, &
56853 nl_a, nl_b, nl_c, nl_d, &
56854 sphi_a, sphi_b, sphi_c, sphi_d, &
56855 primitives, &
56856 buffer1, buffer2)
56857 REAL(dp), DIMENSION(6*10*1*3), INTENT(IN) :: work
56858 INTEGER :: nl_a, nl_b, nl_c, nl_d
56859 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
56860 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
56861 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
56862 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
56863 REAL(dp), &
56864 DIMENSION(5*nl_a, 7*nl_b, 1*nl_c, 3*nl_d) :: primitives
56865 REAL(dp), DIMENSION(6*10*1*3) :: buffer1, buffer2
56866
56867 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
56868 kmax, s_offset_a1, s_offset_b1, &
56869 s_offset_c1, s_offset_d1
56870
56871 s_offset_a1 = 0
56872 DO ia = 1, nl_a
56873 s_offset_b1 = 0
56874 DO ib = 1, nl_b
56875 s_offset_c1 = 0
56876 DO ic = 1, nl_c
56877 s_offset_d1 = 0
56878 DO id = 1, nl_d
56879 buffer1 = 0.0_dp
56880 imax = 10*1*3
56881 kmax = 6
56882 DO i = 1, imax
56883 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
56884 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
56885 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
56886 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
56887 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
56888 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
56889 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
56890 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
56891 END DO
56892 buffer2 = 0.0_dp
56893 imax = 5*1*3
56894 kmax = 10
56895 DO i = 1, imax
56896 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
56897 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
56898 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
56899 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
56900 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
56901 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
56902 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
56903 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
56904 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
56905 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
56906 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
56907 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
56908 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
56909 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
56910 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
56911 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
56912 END DO
56913 buffer1 = 0.0_dp
56914 imax = 5*7*3
56915 kmax = 1
56916 DO i = 1, imax
56917 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
56918 END DO
56919 imax = 5*7*1
56920 kmax = 3
56921 i = 0
56922 DO i1 = 1, 1
56923 DO i2 = 1, 7
56924 DO i3 = 1, 5
56925 i = i + 1
56926 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
56927 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
56928 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
56929 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
56930 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
56931 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
56932 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
56933 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
56934 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
56935 END DO
56936 END DO
56937 END DO
56938 s_offset_d1 = s_offset_d1 + 3
56939 END DO
56940 s_offset_c1 = s_offset_c1 + 1
56941 END DO
56942 s_offset_b1 = s_offset_b1 + 7
56943 END DO
56944 s_offset_a1 = s_offset_a1 + 5
56945 END DO
56946 END SUBROUTINE contract_dfsp
56947#endif
56948#if __MAX_CONTR > 3 || __MAX_CONTR == 3
56949! **************************************************************************************************
56950!> \brief ...
56951!> \param work ...
56952!> \param nl_a ...
56953!> \param nl_b ...
56954!> \param nl_c ...
56955!> \param nl_d ...
56956!> \param sphi_a ...
56957!> \param sphi_b ...
56958!> \param sphi_c ...
56959!> \param sphi_d ...
56960!> \param primitives ...
56961!> \param buffer1 ...
56962!> \param buffer2 ...
56963! **************************************************************************************************
56964 SUBROUTINE contract_dfsd(work, &
56965 nl_a, nl_b, nl_c, nl_d, &
56966 sphi_a, sphi_b, sphi_c, sphi_d, &
56967 primitives, &
56968 buffer1, buffer2)
56969 REAL(dp), DIMENSION(6*10*1*6), INTENT(IN) :: work
56970 INTEGER :: nl_a, nl_b, nl_c, nl_d
56971 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
56972 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
56973 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
56974 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
56975 REAL(dp), &
56976 DIMENSION(5*nl_a, 7*nl_b, 1*nl_c, 5*nl_d) :: primitives
56977 REAL(dp), DIMENSION(6*10*1*6) :: buffer1, buffer2
56978
56979 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
56980 kmax, s_offset_a1, s_offset_b1, &
56981 s_offset_c1, s_offset_d1
56982
56983 s_offset_a1 = 0
56984 DO ia = 1, nl_a
56985 s_offset_b1 = 0
56986 DO ib = 1, nl_b
56987 s_offset_c1 = 0
56988 DO ic = 1, nl_c
56989 s_offset_d1 = 0
56990 DO id = 1, nl_d
56991 buffer1 = 0.0_dp
56992 imax = 10*1*6
56993 kmax = 6
56994 DO i = 1, imax
56995 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
56996 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
56997 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
56998 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
56999 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
57000 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
57001 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
57002 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
57003 END DO
57004 buffer2 = 0.0_dp
57005 imax = 5*1*6
57006 kmax = 10
57007 DO i = 1, imax
57008 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
57009 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
57010 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
57011 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
57012 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
57013 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
57014 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
57015 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
57016 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
57017 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
57018 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
57019 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
57020 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
57021 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
57022 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
57023 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
57024 END DO
57025 buffer1 = 0.0_dp
57026 imax = 5*7*6
57027 kmax = 1
57028 DO i = 1, imax
57029 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
57030 END DO
57031 imax = 5*7*1
57032 kmax = 6
57033 i = 0
57034 DO i1 = 1, 1
57035 DO i2 = 1, 7
57036 DO i3 = 1, 5
57037 i = i + 1
57038 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
57039 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
57040 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
57041 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
57042 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
57043 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
57044 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
57045 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
57046 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
57047 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
57048 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
57049 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
57050 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
57051 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
57052 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
57053 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
57054 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
57055 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
57056 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
57057 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
57058 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
57059 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
57060 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
57061 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
57062 END DO
57063 END DO
57064 END DO
57065 s_offset_d1 = s_offset_d1 + 5
57066 END DO
57067 s_offset_c1 = s_offset_c1 + 1
57068 END DO
57069 s_offset_b1 = s_offset_b1 + 7
57070 END DO
57071 s_offset_a1 = s_offset_a1 + 5
57072 END DO
57073 END SUBROUTINE contract_dfsd
57074#endif
57075#if __MAX_CONTR > 3 || __MAX_CONTR == 3
57076! **************************************************************************************************
57077!> \brief ...
57078!> \param work ...
57079!> \param nl_a ...
57080!> \param nl_b ...
57081!> \param nl_c ...
57082!> \param nl_d ...
57083!> \param sphi_a ...
57084!> \param sphi_b ...
57085!> \param sphi_c ...
57086!> \param sphi_d ...
57087!> \param primitives ...
57088!> \param buffer1 ...
57089!> \param buffer2 ...
57090! **************************************************************************************************
57091 SUBROUTINE contract_dfsf(work, &
57092 nl_a, nl_b, nl_c, nl_d, &
57093 sphi_a, sphi_b, sphi_c, sphi_d, &
57094 primitives, &
57095 buffer1, buffer2)
57096 REAL(dp), DIMENSION(6*10*1*10), INTENT(IN) :: work
57097 INTEGER :: nl_a, nl_b, nl_c, nl_d
57098 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
57099 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
57100 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
57101 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
57102 REAL(dp), &
57103 DIMENSION(5*nl_a, 7*nl_b, 1*nl_c, 7*nl_d) :: primitives
57104 REAL(dp), DIMENSION(6*10*1*10) :: buffer1, buffer2
57105
57106 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
57107 kmax, s_offset_a1, s_offset_b1, &
57108 s_offset_c1, s_offset_d1
57109
57110 s_offset_a1 = 0
57111 DO ia = 1, nl_a
57112 s_offset_b1 = 0
57113 DO ib = 1, nl_b
57114 s_offset_c1 = 0
57115 DO ic = 1, nl_c
57116 s_offset_d1 = 0
57117 DO id = 1, nl_d
57118 buffer1 = 0.0_dp
57119 imax = 10*1*10
57120 kmax = 6
57121 DO i = 1, imax
57122 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
57123 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
57124 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
57125 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
57126 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
57127 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
57128 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
57129 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
57130 END DO
57131 buffer2 = 0.0_dp
57132 imax = 5*1*10
57133 kmax = 10
57134 DO i = 1, imax
57135 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
57136 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
57137 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
57138 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
57139 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
57140 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
57141 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
57142 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
57143 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
57144 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
57145 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
57146 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
57147 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
57148 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
57149 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
57150 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
57151 END DO
57152 buffer1 = 0.0_dp
57153 imax = 5*7*10
57154 kmax = 1
57155 DO i = 1, imax
57156 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
57157 END DO
57158 imax = 5*7*1
57159 kmax = 10
57160 i = 0
57161 DO i1 = 1, 1
57162 DO i2 = 1, 7
57163 DO i3 = 1, 5
57164 i = i + 1
57165 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
57166 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
57167 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
57168 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
57169 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
57170 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
57171 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
57172 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
57173 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
57174 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
57175 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
57176 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
57177 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
57178 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
57179 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
57180 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
57181 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
57182 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
57183 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
57184 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
57185 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
57186 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
57187 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
57188 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
57189 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
57190 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
57191 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
57192 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
57193 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
57194 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
57195 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
57196 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
57197 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
57198 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
57199 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
57200 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
57201 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
57202 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
57203 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
57204 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
57205 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
57206 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
57207 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
57208 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
57209 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
57210 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
57211 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
57212 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
57213 END DO
57214 END DO
57215 END DO
57216 s_offset_d1 = s_offset_d1 + 7
57217 END DO
57218 s_offset_c1 = s_offset_c1 + 1
57219 END DO
57220 s_offset_b1 = s_offset_b1 + 7
57221 END DO
57222 s_offset_a1 = s_offset_a1 + 5
57223 END DO
57224 END SUBROUTINE contract_dfsf
57225#endif
57226#if __MAX_CONTR > 4 || __MAX_CONTR == 4
57227! **************************************************************************************************
57228!> \brief ...
57229!> \param work ...
57230!> \param nl_a ...
57231!> \param nl_b ...
57232!> \param nl_c ...
57233!> \param nl_d ...
57234!> \param sphi_a ...
57235!> \param sphi_b ...
57236!> \param sphi_c ...
57237!> \param sphi_d ...
57238!> \param primitives ...
57239!> \param buffer1 ...
57240!> \param buffer2 ...
57241! **************************************************************************************************
57242 SUBROUTINE contract_dfsg(work, &
57243 nl_a, nl_b, nl_c, nl_d, &
57244 sphi_a, sphi_b, sphi_c, sphi_d, &
57245 primitives, &
57246 buffer1, buffer2)
57247 REAL(dp), DIMENSION(6*10*1*15), INTENT(IN) :: work
57248 INTEGER :: nl_a, nl_b, nl_c, nl_d
57249 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
57250 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
57251 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
57252 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
57253 REAL(dp), &
57254 DIMENSION(5*nl_a, 7*nl_b, 1*nl_c, 9*nl_d) :: primitives
57255 REAL(dp), DIMENSION(6*10*1*15) :: buffer1, buffer2
57256
57257 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
57258 kmax, s_offset_a1, s_offset_b1, &
57259 s_offset_c1, s_offset_d1
57260
57261 s_offset_a1 = 0
57262 DO ia = 1, nl_a
57263 s_offset_b1 = 0
57264 DO ib = 1, nl_b
57265 s_offset_c1 = 0
57266 DO ic = 1, nl_c
57267 s_offset_d1 = 0
57268 DO id = 1, nl_d
57269 buffer1 = 0.0_dp
57270 imax = 10*1*15
57271 kmax = 6
57272 DO i = 1, imax
57273 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
57274 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
57275 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
57276 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
57277 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
57278 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
57279 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
57280 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
57281 END DO
57282 buffer2 = 0.0_dp
57283 imax = 5*1*15
57284 kmax = 10
57285 DO i = 1, imax
57286 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
57287 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
57288 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
57289 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
57290 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
57291 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
57292 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
57293 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
57294 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
57295 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
57296 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
57297 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
57298 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
57299 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
57300 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
57301 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
57302 END DO
57303 buffer1 = 0.0_dp
57304 imax = 5*7*15
57305 kmax = 1
57306 DO i = 1, imax
57307 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
57308 END DO
57309 imax = 5*7*1
57310 kmax = 15
57311 i = 0
57312 DO i1 = 1, 1
57313 DO i2 = 1, 7
57314 DO i3 = 1, 5
57315 i = i + 1
57316 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
57317 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
57318 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
57319 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
57320 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
57321 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
57322 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
57323 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
57324 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
57325 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
57326 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
57327 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
57328 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
57329 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
57330 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
57331 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
57332 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
57333 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
57334 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
57335 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
57336 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
57337 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
57338 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
57339 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
57340 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
57341 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
57342 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
57343 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
57344 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
57345 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
57346 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
57347 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
57348 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
57349 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
57350 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
57351 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
57352 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
57353 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
57354 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
57355 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
57356 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
57357 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
57358 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
57359 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
57360 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
57361 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
57362 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
57363 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
57364 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
57365 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
57366 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
57367 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
57368 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
57369 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
57370 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
57371 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
57372 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
57373 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
57374 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
57375 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
57376 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
57377 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
57378 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
57379 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
57380 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
57381 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
57382 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
57383 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
57384 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
57385 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
57386 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
57387 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
57388 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
57389 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
57390 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
57391 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
57392 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
57393 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
57394 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
57395 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
57396 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
57397 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
57398 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
57399 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
57400 END DO
57401 END DO
57402 END DO
57403 s_offset_d1 = s_offset_d1 + 9
57404 END DO
57405 s_offset_c1 = s_offset_c1 + 1
57406 END DO
57407 s_offset_b1 = s_offset_b1 + 7
57408 END DO
57409 s_offset_a1 = s_offset_a1 + 5
57410 END DO
57411 END SUBROUTINE contract_dfsg
57412#endif
57413#if __MAX_CONTR > 3 || __MAX_CONTR == 3
57414! **************************************************************************************************
57415!> \brief ...
57416!> \param work ...
57417!> \param nl_a ...
57418!> \param nl_b ...
57419!> \param nl_c ...
57420!> \param nl_d ...
57421!> \param sphi_a ...
57422!> \param sphi_b ...
57423!> \param sphi_c ...
57424!> \param sphi_d ...
57425!> \param primitives ...
57426!> \param buffer1 ...
57427!> \param buffer2 ...
57428! **************************************************************************************************
57429 SUBROUTINE contract_dfps(work, &
57430 nl_a, nl_b, nl_c, nl_d, &
57431 sphi_a, sphi_b, sphi_c, sphi_d, &
57432 primitives, &
57433 buffer1, buffer2)
57434 REAL(dp), DIMENSION(6*10*3*1), INTENT(IN) :: work
57435 INTEGER :: nl_a, nl_b, nl_c, nl_d
57436 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
57437 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
57438 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
57439 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
57440 REAL(dp), &
57441 DIMENSION(5*nl_a, 7*nl_b, 3*nl_c, 1*nl_d) :: primitives
57442 REAL(dp), DIMENSION(6*10*3*1) :: buffer1, buffer2
57443
57444 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
57445 kmax, s_offset_a1, s_offset_b1, &
57446 s_offset_c1, s_offset_d1
57447
57448 s_offset_a1 = 0
57449 DO ia = 1, nl_a
57450 s_offset_b1 = 0
57451 DO ib = 1, nl_b
57452 s_offset_c1 = 0
57453 DO ic = 1, nl_c
57454 s_offset_d1 = 0
57455 DO id = 1, nl_d
57456 buffer1 = 0.0_dp
57457 imax = 10*3*1
57458 kmax = 6
57459 DO i = 1, imax
57460 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
57461 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
57462 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
57463 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
57464 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
57465 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
57466 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
57467 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
57468 END DO
57469 buffer2 = 0.0_dp
57470 imax = 5*3*1
57471 kmax = 10
57472 DO i = 1, imax
57473 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
57474 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
57475 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
57476 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
57477 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
57478 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
57479 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
57480 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
57481 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
57482 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
57483 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
57484 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
57485 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
57486 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
57487 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
57488 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
57489 END DO
57490 buffer1 = 0.0_dp
57491 imax = 5*7*1
57492 kmax = 3
57493 DO i = 1, imax
57494 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
57495 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
57496 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
57497 END DO
57498 imax = 5*7*3
57499 kmax = 1
57500 i = 0
57501 DO i1 = 1, 3
57502 DO i2 = 1, 7
57503 DO i3 = 1, 5
57504 i = i + 1
57505 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
57506 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
57507 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
57508 END DO
57509 END DO
57510 END DO
57511 s_offset_d1 = s_offset_d1 + 1
57512 END DO
57513 s_offset_c1 = s_offset_c1 + 3
57514 END DO
57515 s_offset_b1 = s_offset_b1 + 7
57516 END DO
57517 s_offset_a1 = s_offset_a1 + 5
57518 END DO
57519 END SUBROUTINE contract_dfps
57520#endif
57521#if __MAX_CONTR > 3 || __MAX_CONTR == 3
57522! **************************************************************************************************
57523!> \brief ...
57524!> \param work ...
57525!> \param nl_a ...
57526!> \param nl_b ...
57527!> \param nl_c ...
57528!> \param nl_d ...
57529!> \param sphi_a ...
57530!> \param sphi_b ...
57531!> \param sphi_c ...
57532!> \param sphi_d ...
57533!> \param primitives ...
57534!> \param buffer1 ...
57535!> \param buffer2 ...
57536! **************************************************************************************************
57537 SUBROUTINE contract_dfpp(work, &
57538 nl_a, nl_b, nl_c, nl_d, &
57539 sphi_a, sphi_b, sphi_c, sphi_d, &
57540 primitives, &
57541 buffer1, buffer2)
57542 REAL(dp), DIMENSION(6*10*3*3), INTENT(IN) :: work
57543 INTEGER :: nl_a, nl_b, nl_c, nl_d
57544 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
57545 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
57546 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
57547 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
57548 REAL(dp), &
57549 DIMENSION(5*nl_a, 7*nl_b, 3*nl_c, 3*nl_d) :: primitives
57550 REAL(dp), DIMENSION(6*10*3*3) :: buffer1, buffer2
57551
57552 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
57553 kmax, s_offset_a1, s_offset_b1, &
57554 s_offset_c1, s_offset_d1
57555
57556 s_offset_a1 = 0
57557 DO ia = 1, nl_a
57558 s_offset_b1 = 0
57559 DO ib = 1, nl_b
57560 s_offset_c1 = 0
57561 DO ic = 1, nl_c
57562 s_offset_d1 = 0
57563 DO id = 1, nl_d
57564 buffer1 = 0.0_dp
57565 imax = 10*3*3
57566 kmax = 6
57567 DO i = 1, imax
57568 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
57569 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
57570 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
57571 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
57572 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
57573 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
57574 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
57575 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
57576 END DO
57577 buffer2 = 0.0_dp
57578 imax = 5*3*3
57579 kmax = 10
57580 DO i = 1, imax
57581 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
57582 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
57583 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
57584 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
57585 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
57586 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
57587 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
57588 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
57589 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
57590 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
57591 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
57592 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
57593 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
57594 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
57595 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
57596 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
57597 END DO
57598 buffer1 = 0.0_dp
57599 imax = 5*7*3
57600 kmax = 3
57601 DO i = 1, imax
57602 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
57603 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
57604 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
57605 END DO
57606 imax = 5*7*3
57607 kmax = 3
57608 i = 0
57609 DO i1 = 1, 3
57610 DO i2 = 1, 7
57611 DO i3 = 1, 5
57612 i = i + 1
57613 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
57614 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
57615 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
57616 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
57617 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
57618 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
57619 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
57620 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
57621 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
57622 END DO
57623 END DO
57624 END DO
57625 s_offset_d1 = s_offset_d1 + 3
57626 END DO
57627 s_offset_c1 = s_offset_c1 + 3
57628 END DO
57629 s_offset_b1 = s_offset_b1 + 7
57630 END DO
57631 s_offset_a1 = s_offset_a1 + 5
57632 END DO
57633 END SUBROUTINE contract_dfpp
57634#endif
57635#if __MAX_CONTR > 3 || __MAX_CONTR == 3
57636! **************************************************************************************************
57637!> \brief ...
57638!> \param work ...
57639!> \param nl_a ...
57640!> \param nl_b ...
57641!> \param nl_c ...
57642!> \param nl_d ...
57643!> \param sphi_a ...
57644!> \param sphi_b ...
57645!> \param sphi_c ...
57646!> \param sphi_d ...
57647!> \param primitives ...
57648!> \param buffer1 ...
57649!> \param buffer2 ...
57650! **************************************************************************************************
57651 SUBROUTINE contract_dfpd(work, &
57652 nl_a, nl_b, nl_c, nl_d, &
57653 sphi_a, sphi_b, sphi_c, sphi_d, &
57654 primitives, &
57655 buffer1, buffer2)
57656 REAL(dp), DIMENSION(6*10*3*6), INTENT(IN) :: work
57657 INTEGER :: nl_a, nl_b, nl_c, nl_d
57658 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
57659 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
57660 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
57661 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
57662 REAL(dp), &
57663 DIMENSION(5*nl_a, 7*nl_b, 3*nl_c, 5*nl_d) :: primitives
57664 REAL(dp), DIMENSION(6*10*3*6) :: buffer1, buffer2
57665
57666 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
57667 kmax, s_offset_a1, s_offset_b1, &
57668 s_offset_c1, s_offset_d1
57669
57670 s_offset_a1 = 0
57671 DO ia = 1, nl_a
57672 s_offset_b1 = 0
57673 DO ib = 1, nl_b
57674 s_offset_c1 = 0
57675 DO ic = 1, nl_c
57676 s_offset_d1 = 0
57677 DO id = 1, nl_d
57678 buffer1 = 0.0_dp
57679 imax = 10*3*6
57680 kmax = 6
57681 DO i = 1, imax
57682 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
57683 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
57684 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
57685 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
57686 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
57687 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
57688 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
57689 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
57690 END DO
57691 buffer2 = 0.0_dp
57692 imax = 5*3*6
57693 kmax = 10
57694 DO i = 1, imax
57695 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
57696 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
57697 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
57698 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
57699 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
57700 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
57701 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
57702 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
57703 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
57704 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
57705 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
57706 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
57707 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
57708 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
57709 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
57710 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
57711 END DO
57712 buffer1 = 0.0_dp
57713 imax = 5*7*6
57714 kmax = 3
57715 DO i = 1, imax
57716 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
57717 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
57718 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
57719 END DO
57720 imax = 5*7*3
57721 kmax = 6
57722 i = 0
57723 DO i1 = 1, 3
57724 DO i2 = 1, 7
57725 DO i3 = 1, 5
57726 i = i + 1
57727 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
57728 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
57729 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
57730 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
57731 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
57732 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
57733 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
57734 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
57735 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
57736 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
57737 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
57738 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
57739 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
57740 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
57741 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
57742 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
57743 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
57744 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
57745 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
57746 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
57747 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
57748 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
57749 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
57750 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
57751 END DO
57752 END DO
57753 END DO
57754 s_offset_d1 = s_offset_d1 + 5
57755 END DO
57756 s_offset_c1 = s_offset_c1 + 3
57757 END DO
57758 s_offset_b1 = s_offset_b1 + 7
57759 END DO
57760 s_offset_a1 = s_offset_a1 + 5
57761 END DO
57762 END SUBROUTINE contract_dfpd
57763#endif
57764#if __MAX_CONTR > 3 || __MAX_CONTR == 3
57765! **************************************************************************************************
57766!> \brief ...
57767!> \param work ...
57768!> \param nl_a ...
57769!> \param nl_b ...
57770!> \param nl_c ...
57771!> \param nl_d ...
57772!> \param sphi_a ...
57773!> \param sphi_b ...
57774!> \param sphi_c ...
57775!> \param sphi_d ...
57776!> \param primitives ...
57777!> \param buffer1 ...
57778!> \param buffer2 ...
57779! **************************************************************************************************
57780 SUBROUTINE contract_dfpf(work, &
57781 nl_a, nl_b, nl_c, nl_d, &
57782 sphi_a, sphi_b, sphi_c, sphi_d, &
57783 primitives, &
57784 buffer1, buffer2)
57785 REAL(dp), DIMENSION(6*10*3*10), INTENT(IN) :: work
57786 INTEGER :: nl_a, nl_b, nl_c, nl_d
57787 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
57788 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
57789 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
57790 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
57791 REAL(dp), &
57792 DIMENSION(5*nl_a, 7*nl_b, 3*nl_c, 7*nl_d) :: primitives
57793 REAL(dp), DIMENSION(6*10*3*10) :: buffer1, buffer2
57794
57795 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
57796 kmax, s_offset_a1, s_offset_b1, &
57797 s_offset_c1, s_offset_d1
57798
57799 s_offset_a1 = 0
57800 DO ia = 1, nl_a
57801 s_offset_b1 = 0
57802 DO ib = 1, nl_b
57803 s_offset_c1 = 0
57804 DO ic = 1, nl_c
57805 s_offset_d1 = 0
57806 DO id = 1, nl_d
57807 buffer1 = 0.0_dp
57808 imax = 10*3*10
57809 kmax = 6
57810 DO i = 1, imax
57811 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
57812 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
57813 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
57814 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
57815 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
57816 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
57817 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
57818 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
57819 END DO
57820 buffer2 = 0.0_dp
57821 imax = 5*3*10
57822 kmax = 10
57823 DO i = 1, imax
57824 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
57825 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
57826 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
57827 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
57828 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
57829 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
57830 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
57831 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
57832 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
57833 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
57834 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
57835 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
57836 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
57837 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
57838 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
57839 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
57840 END DO
57841 buffer1 = 0.0_dp
57842 imax = 5*7*10
57843 kmax = 3
57844 DO i = 1, imax
57845 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
57846 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
57847 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
57848 END DO
57849 imax = 5*7*3
57850 kmax = 10
57851 i = 0
57852 DO i1 = 1, 3
57853 DO i2 = 1, 7
57854 DO i3 = 1, 5
57855 i = i + 1
57856 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
57857 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
57858 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
57859 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
57860 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
57861 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
57862 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
57863 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
57864 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
57865 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
57866 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
57867 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
57868 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
57869 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
57870 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
57871 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
57872 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
57873 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
57874 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
57875 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
57876 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
57877 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
57878 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
57879 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
57880 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
57881 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
57882 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
57883 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
57884 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
57885 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
57886 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
57887 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
57888 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
57889 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
57890 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
57891 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
57892 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
57893 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
57894 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
57895 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
57896 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
57897 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
57898 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
57899 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
57900 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
57901 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
57902 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
57903 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
57904 END DO
57905 END DO
57906 END DO
57907 s_offset_d1 = s_offset_d1 + 7
57908 END DO
57909 s_offset_c1 = s_offset_c1 + 3
57910 END DO
57911 s_offset_b1 = s_offset_b1 + 7
57912 END DO
57913 s_offset_a1 = s_offset_a1 + 5
57914 END DO
57915 END SUBROUTINE contract_dfpf
57916#endif
57917#if __MAX_CONTR > 4 || __MAX_CONTR == 4
57918! **************************************************************************************************
57919!> \brief ...
57920!> \param work ...
57921!> \param nl_a ...
57922!> \param nl_b ...
57923!> \param nl_c ...
57924!> \param nl_d ...
57925!> \param sphi_a ...
57926!> \param sphi_b ...
57927!> \param sphi_c ...
57928!> \param sphi_d ...
57929!> \param primitives ...
57930!> \param buffer1 ...
57931!> \param buffer2 ...
57932! **************************************************************************************************
57933 SUBROUTINE contract_dfpg(work, &
57934 nl_a, nl_b, nl_c, nl_d, &
57935 sphi_a, sphi_b, sphi_c, sphi_d, &
57936 primitives, &
57937 buffer1, buffer2)
57938 REAL(dp), DIMENSION(6*10*3*15), INTENT(IN) :: work
57939 INTEGER :: nl_a, nl_b, nl_c, nl_d
57940 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
57941 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
57942 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
57943 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
57944 REAL(dp), &
57945 DIMENSION(5*nl_a, 7*nl_b, 3*nl_c, 9*nl_d) :: primitives
57946 REAL(dp), DIMENSION(6*10*3*15) :: buffer1, buffer2
57947
57948 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
57949 kmax, s_offset_a1, s_offset_b1, &
57950 s_offset_c1, s_offset_d1
57951
57952 s_offset_a1 = 0
57953 DO ia = 1, nl_a
57954 s_offset_b1 = 0
57955 DO ib = 1, nl_b
57956 s_offset_c1 = 0
57957 DO ic = 1, nl_c
57958 s_offset_d1 = 0
57959 DO id = 1, nl_d
57960 buffer1 = 0.0_dp
57961 imax = 10*3*15
57962 kmax = 6
57963 DO i = 1, imax
57964 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
57965 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
57966 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
57967 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
57968 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
57969 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
57970 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
57971 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
57972 END DO
57973 buffer2 = 0.0_dp
57974 imax = 5*3*15
57975 kmax = 10
57976 DO i = 1, imax
57977 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
57978 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
57979 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
57980 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
57981 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
57982 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
57983 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
57984 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
57985 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
57986 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
57987 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
57988 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
57989 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
57990 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
57991 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
57992 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
57993 END DO
57994 buffer1 = 0.0_dp
57995 imax = 5*7*15
57996 kmax = 3
57997 DO i = 1, imax
57998 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
57999 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
58000 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
58001 END DO
58002 imax = 5*7*3
58003 kmax = 15
58004 i = 0
58005 DO i1 = 1, 3
58006 DO i2 = 1, 7
58007 DO i3 = 1, 5
58008 i = i + 1
58009 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
58010 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
58011 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
58012 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
58013 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
58014 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
58015 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
58016 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
58017 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
58018 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
58019 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
58020 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
58021 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
58022 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
58023 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
58024 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
58025 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
58026 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
58027 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
58028 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
58029 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
58030 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
58031 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
58032 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
58033 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
58034 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
58035 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
58036 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
58037 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
58038 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
58039 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
58040 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
58041 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
58042 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
58043 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
58044 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
58045 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
58046 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
58047 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
58048 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
58049 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
58050 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
58051 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
58052 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
58053 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
58054 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
58055 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
58056 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
58057 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
58058 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
58059 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
58060 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
58061 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
58062 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
58063 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
58064 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
58065 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
58066 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
58067 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
58068 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
58069 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
58070 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
58071 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
58072 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
58073 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
58074 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
58075 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
58076 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
58077 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
58078 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
58079 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
58080 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
58081 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
58082 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
58083 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
58084 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
58085 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
58086 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
58087 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
58088 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
58089 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
58090 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
58091 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
58092 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
58093 END DO
58094 END DO
58095 END DO
58096 s_offset_d1 = s_offset_d1 + 9
58097 END DO
58098 s_offset_c1 = s_offset_c1 + 3
58099 END DO
58100 s_offset_b1 = s_offset_b1 + 7
58101 END DO
58102 s_offset_a1 = s_offset_a1 + 5
58103 END DO
58104 END SUBROUTINE contract_dfpg
58105#endif
58106#if __MAX_CONTR > 3 || __MAX_CONTR == 3
58107! **************************************************************************************************
58108!> \brief ...
58109!> \param work ...
58110!> \param nl_a ...
58111!> \param nl_b ...
58112!> \param nl_c ...
58113!> \param nl_d ...
58114!> \param sphi_a ...
58115!> \param sphi_b ...
58116!> \param sphi_c ...
58117!> \param sphi_d ...
58118!> \param primitives ...
58119!> \param buffer1 ...
58120!> \param buffer2 ...
58121! **************************************************************************************************
58122 SUBROUTINE contract_dfds(work, &
58123 nl_a, nl_b, nl_c, nl_d, &
58124 sphi_a, sphi_b, sphi_c, sphi_d, &
58125 primitives, &
58126 buffer1, buffer2)
58127 REAL(dp), DIMENSION(6*10*6*1), INTENT(IN) :: work
58128 INTEGER :: nl_a, nl_b, nl_c, nl_d
58129 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
58130 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
58131 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
58132 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
58133 REAL(dp), &
58134 DIMENSION(5*nl_a, 7*nl_b, 5*nl_c, 1*nl_d) :: primitives
58135 REAL(dp), DIMENSION(6*10*6*1) :: buffer1, buffer2
58136
58137 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
58138 kmax, s_offset_a1, s_offset_b1, &
58139 s_offset_c1, s_offset_d1
58140
58141 s_offset_a1 = 0
58142 DO ia = 1, nl_a
58143 s_offset_b1 = 0
58144 DO ib = 1, nl_b
58145 s_offset_c1 = 0
58146 DO ic = 1, nl_c
58147 s_offset_d1 = 0
58148 DO id = 1, nl_d
58149 buffer1 = 0.0_dp
58150 imax = 10*6*1
58151 kmax = 6
58152 DO i = 1, imax
58153 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
58154 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
58155 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
58156 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
58157 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
58158 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
58159 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
58160 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
58161 END DO
58162 buffer2 = 0.0_dp
58163 imax = 5*6*1
58164 kmax = 10
58165 DO i = 1, imax
58166 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
58167 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
58168 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
58169 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
58170 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
58171 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
58172 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
58173 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
58174 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
58175 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
58176 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
58177 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
58178 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
58179 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
58180 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
58181 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
58182 END DO
58183 buffer1 = 0.0_dp
58184 imax = 5*7*1
58185 kmax = 6
58186 DO i = 1, imax
58187 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
58188 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
58189 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
58190 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
58191 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
58192 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
58193 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
58194 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
58195 END DO
58196 imax = 5*7*5
58197 kmax = 1
58198 i = 0
58199 DO i1 = 1, 5
58200 DO i2 = 1, 7
58201 DO i3 = 1, 5
58202 i = i + 1
58203 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
58204 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
58205 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
58206 END DO
58207 END DO
58208 END DO
58209 s_offset_d1 = s_offset_d1 + 1
58210 END DO
58211 s_offset_c1 = s_offset_c1 + 5
58212 END DO
58213 s_offset_b1 = s_offset_b1 + 7
58214 END DO
58215 s_offset_a1 = s_offset_a1 + 5
58216 END DO
58217 END SUBROUTINE contract_dfds
58218#endif
58219#if __MAX_CONTR > 3 || __MAX_CONTR == 3
58220! **************************************************************************************************
58221!> \brief ...
58222!> \param work ...
58223!> \param nl_a ...
58224!> \param nl_b ...
58225!> \param nl_c ...
58226!> \param nl_d ...
58227!> \param sphi_a ...
58228!> \param sphi_b ...
58229!> \param sphi_c ...
58230!> \param sphi_d ...
58231!> \param primitives ...
58232!> \param buffer1 ...
58233!> \param buffer2 ...
58234! **************************************************************************************************
58235 SUBROUTINE contract_dfdp(work, &
58236 nl_a, nl_b, nl_c, nl_d, &
58237 sphi_a, sphi_b, sphi_c, sphi_d, &
58238 primitives, &
58239 buffer1, buffer2)
58240 REAL(dp), DIMENSION(6*10*6*3), INTENT(IN) :: work
58241 INTEGER :: nl_a, nl_b, nl_c, nl_d
58242 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
58243 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
58244 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
58245 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
58246 REAL(dp), &
58247 DIMENSION(5*nl_a, 7*nl_b, 5*nl_c, 3*nl_d) :: primitives
58248 REAL(dp), DIMENSION(6*10*6*3) :: buffer1, buffer2
58249
58250 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
58251 kmax, s_offset_a1, s_offset_b1, &
58252 s_offset_c1, s_offset_d1
58253
58254 s_offset_a1 = 0
58255 DO ia = 1, nl_a
58256 s_offset_b1 = 0
58257 DO ib = 1, nl_b
58258 s_offset_c1 = 0
58259 DO ic = 1, nl_c
58260 s_offset_d1 = 0
58261 DO id = 1, nl_d
58262 buffer1 = 0.0_dp
58263 imax = 10*6*3
58264 kmax = 6
58265 DO i = 1, imax
58266 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
58267 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
58268 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
58269 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
58270 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
58271 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
58272 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
58273 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
58274 END DO
58275 buffer2 = 0.0_dp
58276 imax = 5*6*3
58277 kmax = 10
58278 DO i = 1, imax
58279 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
58280 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
58281 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
58282 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
58283 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
58284 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
58285 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
58286 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
58287 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
58288 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
58289 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
58290 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
58291 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
58292 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
58293 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
58294 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
58295 END DO
58296 buffer1 = 0.0_dp
58297 imax = 5*7*3
58298 kmax = 6
58299 DO i = 1, imax
58300 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
58301 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
58302 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
58303 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
58304 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
58305 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
58306 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
58307 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
58308 END DO
58309 imax = 5*7*5
58310 kmax = 3
58311 i = 0
58312 DO i1 = 1, 5
58313 DO i2 = 1, 7
58314 DO i3 = 1, 5
58315 i = i + 1
58316 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
58317 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
58318 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
58319 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
58320 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
58321 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
58322 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
58323 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
58324 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
58325 END DO
58326 END DO
58327 END DO
58328 s_offset_d1 = s_offset_d1 + 3
58329 END DO
58330 s_offset_c1 = s_offset_c1 + 5
58331 END DO
58332 s_offset_b1 = s_offset_b1 + 7
58333 END DO
58334 s_offset_a1 = s_offset_a1 + 5
58335 END DO
58336 END SUBROUTINE contract_dfdp
58337#endif
58338#if __MAX_CONTR > 3 || __MAX_CONTR == 3
58339! **************************************************************************************************
58340!> \brief ...
58341!> \param work ...
58342!> \param nl_a ...
58343!> \param nl_b ...
58344!> \param nl_c ...
58345!> \param nl_d ...
58346!> \param sphi_a ...
58347!> \param sphi_b ...
58348!> \param sphi_c ...
58349!> \param sphi_d ...
58350!> \param primitives ...
58351!> \param buffer1 ...
58352!> \param buffer2 ...
58353! **************************************************************************************************
58354 SUBROUTINE contract_dfdd(work, &
58355 nl_a, nl_b, nl_c, nl_d, &
58356 sphi_a, sphi_b, sphi_c, sphi_d, &
58357 primitives, &
58358 buffer1, buffer2)
58359 REAL(dp), DIMENSION(6*10*6*6), INTENT(IN) :: work
58360 INTEGER :: nl_a, nl_b, nl_c, nl_d
58361 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
58362 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
58363 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
58364 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
58365 REAL(dp), &
58366 DIMENSION(5*nl_a, 7*nl_b, 5*nl_c, 5*nl_d) :: primitives
58367 REAL(dp), DIMENSION(6*10*6*6) :: buffer1, buffer2
58368
58369 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
58370 kmax, s_offset_a1, s_offset_b1, &
58371 s_offset_c1, s_offset_d1
58372
58373 s_offset_a1 = 0
58374 DO ia = 1, nl_a
58375 s_offset_b1 = 0
58376 DO ib = 1, nl_b
58377 s_offset_c1 = 0
58378 DO ic = 1, nl_c
58379 s_offset_d1 = 0
58380 DO id = 1, nl_d
58381 buffer1 = 0.0_dp
58382 imax = 10*6*6
58383 kmax = 6
58384 DO i = 1, imax
58385 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
58386 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
58387 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
58388 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
58389 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
58390 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
58391 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
58392 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
58393 END DO
58394 buffer2 = 0.0_dp
58395 imax = 5*6*6
58396 kmax = 10
58397 DO i = 1, imax
58398 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
58399 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
58400 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
58401 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
58402 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
58403 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
58404 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
58405 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
58406 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
58407 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
58408 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
58409 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
58410 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
58411 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
58412 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
58413 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
58414 END DO
58415 buffer1 = 0.0_dp
58416 imax = 5*7*6
58417 kmax = 6
58418 DO i = 1, imax
58419 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
58420 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
58421 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
58422 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
58423 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
58424 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
58425 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
58426 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
58427 END DO
58428 imax = 5*7*5
58429 kmax = 6
58430 i = 0
58431 DO i1 = 1, 5
58432 DO i2 = 1, 7
58433 DO i3 = 1, 5
58434 i = i + 1
58435 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
58436 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
58437 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
58438 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
58439 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
58440 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
58441 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
58442 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
58443 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
58444 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
58445 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
58446 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
58447 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
58448 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
58449 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
58450 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
58451 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
58452 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
58453 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
58454 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
58455 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
58456 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
58457 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
58458 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
58459 END DO
58460 END DO
58461 END DO
58462 s_offset_d1 = s_offset_d1 + 5
58463 END DO
58464 s_offset_c1 = s_offset_c1 + 5
58465 END DO
58466 s_offset_b1 = s_offset_b1 + 7
58467 END DO
58468 s_offset_a1 = s_offset_a1 + 5
58469 END DO
58470 END SUBROUTINE contract_dfdd
58471#endif
58472#if __MAX_CONTR > 3 || __MAX_CONTR == 3
58473! **************************************************************************************************
58474!> \brief ...
58475!> \param work ...
58476!> \param nl_a ...
58477!> \param nl_b ...
58478!> \param nl_c ...
58479!> \param nl_d ...
58480!> \param sphi_a ...
58481!> \param sphi_b ...
58482!> \param sphi_c ...
58483!> \param sphi_d ...
58484!> \param primitives ...
58485!> \param buffer1 ...
58486!> \param buffer2 ...
58487! **************************************************************************************************
58488 SUBROUTINE contract_dfdf(work, &
58489 nl_a, nl_b, nl_c, nl_d, &
58490 sphi_a, sphi_b, sphi_c, sphi_d, &
58491 primitives, &
58492 buffer1, buffer2)
58493 REAL(dp), DIMENSION(6*10*6*10), INTENT(IN) :: work
58494 INTEGER :: nl_a, nl_b, nl_c, nl_d
58495 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
58496 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
58497 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
58498 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
58499 REAL(dp), &
58500 DIMENSION(5*nl_a, 7*nl_b, 5*nl_c, 7*nl_d) :: primitives
58501 REAL(dp), DIMENSION(6*10*6*10) :: buffer1, buffer2
58502
58503 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
58504 kmax, s_offset_a1, s_offset_b1, &
58505 s_offset_c1, s_offset_d1
58506
58507 s_offset_a1 = 0
58508 DO ia = 1, nl_a
58509 s_offset_b1 = 0
58510 DO ib = 1, nl_b
58511 s_offset_c1 = 0
58512 DO ic = 1, nl_c
58513 s_offset_d1 = 0
58514 DO id = 1, nl_d
58515 buffer1 = 0.0_dp
58516 imax = 10*6*10
58517 kmax = 6
58518 DO i = 1, imax
58519 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
58520 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
58521 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
58522 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
58523 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
58524 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
58525 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
58526 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
58527 END DO
58528 buffer2 = 0.0_dp
58529 imax = 5*6*10
58530 kmax = 10
58531 DO i = 1, imax
58532 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
58533 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
58534 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
58535 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
58536 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
58537 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
58538 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
58539 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
58540 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
58541 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
58542 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
58543 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
58544 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
58545 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
58546 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
58547 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
58548 END DO
58549 buffer1 = 0.0_dp
58550 imax = 5*7*10
58551 kmax = 6
58552 DO i = 1, imax
58553 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
58554 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
58555 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
58556 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
58557 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
58558 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
58559 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
58560 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
58561 END DO
58562 imax = 5*7*5
58563 kmax = 10
58564 i = 0
58565 DO i1 = 1, 5
58566 DO i2 = 1, 7
58567 DO i3 = 1, 5
58568 i = i + 1
58569 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
58570 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
58571 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
58572 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
58573 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
58574 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
58575 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
58576 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
58577 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
58578 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
58579 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
58580 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
58581 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
58582 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
58583 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
58584 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
58585 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
58586 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
58587 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
58588 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
58589 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
58590 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
58591 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
58592 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
58593 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
58594 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
58595 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
58596 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
58597 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
58598 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
58599 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
58600 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
58601 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
58602 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
58603 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
58604 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
58605 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
58606 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
58607 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
58608 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
58609 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
58610 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
58611 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
58612 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
58613 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
58614 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
58615 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
58616 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
58617 END DO
58618 END DO
58619 END DO
58620 s_offset_d1 = s_offset_d1 + 7
58621 END DO
58622 s_offset_c1 = s_offset_c1 + 5
58623 END DO
58624 s_offset_b1 = s_offset_b1 + 7
58625 END DO
58626 s_offset_a1 = s_offset_a1 + 5
58627 END DO
58628 END SUBROUTINE contract_dfdf
58629#endif
58630#if __MAX_CONTR > 4 || __MAX_CONTR == 4
58631! **************************************************************************************************
58632!> \brief ...
58633!> \param work ...
58634!> \param nl_a ...
58635!> \param nl_b ...
58636!> \param nl_c ...
58637!> \param nl_d ...
58638!> \param sphi_a ...
58639!> \param sphi_b ...
58640!> \param sphi_c ...
58641!> \param sphi_d ...
58642!> \param primitives ...
58643!> \param buffer1 ...
58644!> \param buffer2 ...
58645! **************************************************************************************************
58646 SUBROUTINE contract_dfdg(work, &
58647 nl_a, nl_b, nl_c, nl_d, &
58648 sphi_a, sphi_b, sphi_c, sphi_d, &
58649 primitives, &
58650 buffer1, buffer2)
58651 REAL(dp), DIMENSION(6*10*6*15), INTENT(IN) :: work
58652 INTEGER :: nl_a, nl_b, nl_c, nl_d
58653 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
58654 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
58655 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
58656 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
58657 REAL(dp), &
58658 DIMENSION(5*nl_a, 7*nl_b, 5*nl_c, 9*nl_d) :: primitives
58659 REAL(dp), DIMENSION(6*10*6*15) :: buffer1, buffer2
58660
58661 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
58662 kmax, s_offset_a1, s_offset_b1, &
58663 s_offset_c1, s_offset_d1
58664
58665 s_offset_a1 = 0
58666 DO ia = 1, nl_a
58667 s_offset_b1 = 0
58668 DO ib = 1, nl_b
58669 s_offset_c1 = 0
58670 DO ic = 1, nl_c
58671 s_offset_d1 = 0
58672 DO id = 1, nl_d
58673 buffer1 = 0.0_dp
58674 imax = 10*6*15
58675 kmax = 6
58676 DO i = 1, imax
58677 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
58678 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
58679 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
58680 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
58681 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
58682 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
58683 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
58684 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
58685 END DO
58686 buffer2 = 0.0_dp
58687 imax = 5*6*15
58688 kmax = 10
58689 DO i = 1, imax
58690 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
58691 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
58692 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
58693 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
58694 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
58695 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
58696 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
58697 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
58698 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
58699 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
58700 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
58701 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
58702 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
58703 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
58704 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
58705 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
58706 END DO
58707 buffer1 = 0.0_dp
58708 imax = 5*7*15
58709 kmax = 6
58710 DO i = 1, imax
58711 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
58712 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
58713 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
58714 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
58715 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
58716 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
58717 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
58718 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
58719 END DO
58720 imax = 5*7*5
58721 kmax = 15
58722 i = 0
58723 DO i1 = 1, 5
58724 DO i2 = 1, 7
58725 DO i3 = 1, 5
58726 i = i + 1
58727 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
58728 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
58729 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
58730 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
58731 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
58732 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
58733 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
58734 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
58735 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
58736 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
58737 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
58738 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
58739 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
58740 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
58741 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
58742 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
58743 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
58744 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
58745 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
58746 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
58747 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
58748 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
58749 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
58750 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
58751 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
58752 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
58753 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
58754 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
58755 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
58756 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
58757 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
58758 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
58759 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
58760 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
58761 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
58762 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
58763 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
58764 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
58765 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
58766 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
58767 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
58768 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
58769 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
58770 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
58771 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
58772 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
58773 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
58774 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
58775 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
58776 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
58777 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
58778 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
58779 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
58780 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
58781 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
58782 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
58783 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
58784 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
58785 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
58786 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
58787 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
58788 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
58789 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
58790 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
58791 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
58792 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
58793 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
58794 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
58795 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
58796 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
58797 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
58798 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
58799 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
58800 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
58801 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
58802 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
58803 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
58804 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
58805 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
58806 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
58807 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
58808 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
58809 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
58810 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
58811 END DO
58812 END DO
58813 END DO
58814 s_offset_d1 = s_offset_d1 + 9
58815 END DO
58816 s_offset_c1 = s_offset_c1 + 5
58817 END DO
58818 s_offset_b1 = s_offset_b1 + 7
58819 END DO
58820 s_offset_a1 = s_offset_a1 + 5
58821 END DO
58822 END SUBROUTINE contract_dfdg
58823#endif
58824#if __MAX_CONTR > 3 || __MAX_CONTR == 3
58825! **************************************************************************************************
58826!> \brief ...
58827!> \param work ...
58828!> \param nl_a ...
58829!> \param nl_b ...
58830!> \param nl_c ...
58831!> \param nl_d ...
58832!> \param sphi_a ...
58833!> \param sphi_b ...
58834!> \param sphi_c ...
58835!> \param sphi_d ...
58836!> \param primitives ...
58837!> \param buffer1 ...
58838!> \param buffer2 ...
58839! **************************************************************************************************
58840 SUBROUTINE contract_dffs(work, &
58841 nl_a, nl_b, nl_c, nl_d, &
58842 sphi_a, sphi_b, sphi_c, sphi_d, &
58843 primitives, &
58844 buffer1, buffer2)
58845 REAL(dp), DIMENSION(6*10*10*1), INTENT(IN) :: work
58846 INTEGER :: nl_a, nl_b, nl_c, nl_d
58847 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
58848 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
58849 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
58850 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
58851 REAL(dp), &
58852 DIMENSION(5*nl_a, 7*nl_b, 7*nl_c, 1*nl_d) :: primitives
58853 REAL(dp), DIMENSION(6*10*10*1) :: buffer1, buffer2
58854
58855 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
58856 kmax, s_offset_a1, s_offset_b1, &
58857 s_offset_c1, s_offset_d1
58858
58859 s_offset_a1 = 0
58860 DO ia = 1, nl_a
58861 s_offset_b1 = 0
58862 DO ib = 1, nl_b
58863 s_offset_c1 = 0
58864 DO ic = 1, nl_c
58865 s_offset_d1 = 0
58866 DO id = 1, nl_d
58867 buffer1 = 0.0_dp
58868 imax = 10*10*1
58869 kmax = 6
58870 DO i = 1, imax
58871 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
58872 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
58873 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
58874 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
58875 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
58876 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
58877 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
58878 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
58879 END DO
58880 buffer2 = 0.0_dp
58881 imax = 5*10*1
58882 kmax = 10
58883 DO i = 1, imax
58884 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
58885 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
58886 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
58887 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
58888 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
58889 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
58890 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
58891 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
58892 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
58893 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
58894 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
58895 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
58896 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
58897 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
58898 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
58899 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
58900 END DO
58901 buffer1 = 0.0_dp
58902 imax = 5*7*1
58903 kmax = 10
58904 DO i = 1, imax
58905 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
58906 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
58907 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
58908 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
58909 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
58910 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
58911 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
58912 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
58913 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
58914 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
58915 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
58916 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
58917 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
58918 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
58919 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
58920 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
58921 END DO
58922 imax = 5*7*7
58923 kmax = 1
58924 i = 0
58925 DO i1 = 1, 7
58926 DO i2 = 1, 7
58927 DO i3 = 1, 5
58928 i = i + 1
58929 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
58930 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
58931 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
58932 END DO
58933 END DO
58934 END DO
58935 s_offset_d1 = s_offset_d1 + 1
58936 END DO
58937 s_offset_c1 = s_offset_c1 + 7
58938 END DO
58939 s_offset_b1 = s_offset_b1 + 7
58940 END DO
58941 s_offset_a1 = s_offset_a1 + 5
58942 END DO
58943 END SUBROUTINE contract_dffs
58944#endif
58945#if __MAX_CONTR > 3 || __MAX_CONTR == 3
58946! **************************************************************************************************
58947!> \brief ...
58948!> \param work ...
58949!> \param nl_a ...
58950!> \param nl_b ...
58951!> \param nl_c ...
58952!> \param nl_d ...
58953!> \param sphi_a ...
58954!> \param sphi_b ...
58955!> \param sphi_c ...
58956!> \param sphi_d ...
58957!> \param primitives ...
58958!> \param buffer1 ...
58959!> \param buffer2 ...
58960! **************************************************************************************************
58961 SUBROUTINE contract_dffp(work, &
58962 nl_a, nl_b, nl_c, nl_d, &
58963 sphi_a, sphi_b, sphi_c, sphi_d, &
58964 primitives, &
58965 buffer1, buffer2)
58966 REAL(dp), DIMENSION(6*10*10*3), INTENT(IN) :: work
58967 INTEGER :: nl_a, nl_b, nl_c, nl_d
58968 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
58969 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
58970 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
58971 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
58972 REAL(dp), &
58973 DIMENSION(5*nl_a, 7*nl_b, 7*nl_c, 3*nl_d) :: primitives
58974 REAL(dp), DIMENSION(6*10*10*3) :: buffer1, buffer2
58975
58976 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
58977 kmax, s_offset_a1, s_offset_b1, &
58978 s_offset_c1, s_offset_d1
58979
58980 s_offset_a1 = 0
58981 DO ia = 1, nl_a
58982 s_offset_b1 = 0
58983 DO ib = 1, nl_b
58984 s_offset_c1 = 0
58985 DO ic = 1, nl_c
58986 s_offset_d1 = 0
58987 DO id = 1, nl_d
58988 buffer1 = 0.0_dp
58989 imax = 10*10*3
58990 kmax = 6
58991 DO i = 1, imax
58992 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
58993 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
58994 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
58995 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
58996 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
58997 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
58998 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
58999 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
59000 END DO
59001 buffer2 = 0.0_dp
59002 imax = 5*10*3
59003 kmax = 10
59004 DO i = 1, imax
59005 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
59006 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
59007 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
59008 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
59009 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
59010 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
59011 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
59012 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
59013 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
59014 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
59015 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
59016 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
59017 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
59018 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
59019 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
59020 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
59021 END DO
59022 buffer1 = 0.0_dp
59023 imax = 5*7*3
59024 kmax = 10
59025 DO i = 1, imax
59026 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
59027 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
59028 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
59029 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
59030 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
59031 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
59032 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
59033 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
59034 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
59035 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
59036 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
59037 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
59038 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
59039 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
59040 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
59041 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
59042 END DO
59043 imax = 5*7*7
59044 kmax = 3
59045 i = 0
59046 DO i1 = 1, 7
59047 DO i2 = 1, 7
59048 DO i3 = 1, 5
59049 i = i + 1
59050 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
59051 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
59052 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
59053 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
59054 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
59055 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
59056 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
59057 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
59058 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
59059 END DO
59060 END DO
59061 END DO
59062 s_offset_d1 = s_offset_d1 + 3
59063 END DO
59064 s_offset_c1 = s_offset_c1 + 7
59065 END DO
59066 s_offset_b1 = s_offset_b1 + 7
59067 END DO
59068 s_offset_a1 = s_offset_a1 + 5
59069 END DO
59070 END SUBROUTINE contract_dffp
59071#endif
59072#if __MAX_CONTR > 3 || __MAX_CONTR == 3
59073! **************************************************************************************************
59074!> \brief ...
59075!> \param work ...
59076!> \param nl_a ...
59077!> \param nl_b ...
59078!> \param nl_c ...
59079!> \param nl_d ...
59080!> \param sphi_a ...
59081!> \param sphi_b ...
59082!> \param sphi_c ...
59083!> \param sphi_d ...
59084!> \param primitives ...
59085!> \param buffer1 ...
59086!> \param buffer2 ...
59087! **************************************************************************************************
59088 SUBROUTINE contract_dffd(work, &
59089 nl_a, nl_b, nl_c, nl_d, &
59090 sphi_a, sphi_b, sphi_c, sphi_d, &
59091 primitives, &
59092 buffer1, buffer2)
59093 REAL(dp), DIMENSION(6*10*10*6), INTENT(IN) :: work
59094 INTEGER :: nl_a, nl_b, nl_c, nl_d
59095 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
59096 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
59097 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
59098 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
59099 REAL(dp), &
59100 DIMENSION(5*nl_a, 7*nl_b, 7*nl_c, 5*nl_d) :: primitives
59101 REAL(dp), DIMENSION(6*10*10*6) :: buffer1, buffer2
59102
59103 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
59104 kmax, s_offset_a1, s_offset_b1, &
59105 s_offset_c1, s_offset_d1
59106
59107 s_offset_a1 = 0
59108 DO ia = 1, nl_a
59109 s_offset_b1 = 0
59110 DO ib = 1, nl_b
59111 s_offset_c1 = 0
59112 DO ic = 1, nl_c
59113 s_offset_d1 = 0
59114 DO id = 1, nl_d
59115 buffer1 = 0.0_dp
59116 imax = 10*10*6
59117 kmax = 6
59118 DO i = 1, imax
59119 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
59120 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
59121 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
59122 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
59123 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
59124 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
59125 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
59126 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
59127 END DO
59128 buffer2 = 0.0_dp
59129 imax = 5*10*6
59130 kmax = 10
59131 DO i = 1, imax
59132 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
59133 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
59134 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
59135 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
59136 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
59137 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
59138 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
59139 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
59140 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
59141 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
59142 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
59143 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
59144 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
59145 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
59146 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
59147 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
59148 END DO
59149 buffer1 = 0.0_dp
59150 imax = 5*7*6
59151 kmax = 10
59152 DO i = 1, imax
59153 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
59154 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
59155 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
59156 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
59157 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
59158 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
59159 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
59160 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
59161 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
59162 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
59163 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
59164 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
59165 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
59166 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
59167 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
59168 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
59169 END DO
59170 imax = 5*7*7
59171 kmax = 6
59172 i = 0
59173 DO i1 = 1, 7
59174 DO i2 = 1, 7
59175 DO i3 = 1, 5
59176 i = i + 1
59177 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
59178 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
59179 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
59180 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
59181 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
59182 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
59183 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
59184 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
59185 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
59186 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
59187 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
59188 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
59189 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
59190 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
59191 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
59192 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
59193 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
59194 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
59195 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
59196 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
59197 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
59198 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
59199 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
59200 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
59201 END DO
59202 END DO
59203 END DO
59204 s_offset_d1 = s_offset_d1 + 5
59205 END DO
59206 s_offset_c1 = s_offset_c1 + 7
59207 END DO
59208 s_offset_b1 = s_offset_b1 + 7
59209 END DO
59210 s_offset_a1 = s_offset_a1 + 5
59211 END DO
59212 END SUBROUTINE contract_dffd
59213#endif
59214#if __MAX_CONTR > 3 || __MAX_CONTR == 3
59215! **************************************************************************************************
59216!> \brief ...
59217!> \param work ...
59218!> \param nl_a ...
59219!> \param nl_b ...
59220!> \param nl_c ...
59221!> \param nl_d ...
59222!> \param sphi_a ...
59223!> \param sphi_b ...
59224!> \param sphi_c ...
59225!> \param sphi_d ...
59226!> \param primitives ...
59227!> \param buffer1 ...
59228!> \param buffer2 ...
59229! **************************************************************************************************
59230 SUBROUTINE contract_dfff(work, &
59231 nl_a, nl_b, nl_c, nl_d, &
59232 sphi_a, sphi_b, sphi_c, sphi_d, &
59233 primitives, &
59234 buffer1, buffer2)
59235 REAL(dp), DIMENSION(6*10*10*10), INTENT(IN) :: work
59236 INTEGER :: nl_a, nl_b, nl_c, nl_d
59237 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
59238 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
59239 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
59240 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
59241 REAL(dp), &
59242 DIMENSION(5*nl_a, 7*nl_b, 7*nl_c, 7*nl_d) :: primitives
59243 REAL(dp), DIMENSION(6*10*10*10) :: buffer1, buffer2
59244
59245 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
59246 kmax, s_offset_a1, s_offset_b1, &
59247 s_offset_c1, s_offset_d1
59248
59249 s_offset_a1 = 0
59250 DO ia = 1, nl_a
59251 s_offset_b1 = 0
59252 DO ib = 1, nl_b
59253 s_offset_c1 = 0
59254 DO ic = 1, nl_c
59255 s_offset_d1 = 0
59256 DO id = 1, nl_d
59257 buffer1 = 0.0_dp
59258 imax = 10*10*10
59259 kmax = 6
59260 DO i = 1, imax
59261 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
59262 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
59263 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
59264 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
59265 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
59266 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
59267 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
59268 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
59269 END DO
59270 buffer2 = 0.0_dp
59271 imax = 5*10*10
59272 kmax = 10
59273 DO i = 1, imax
59274 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
59275 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
59276 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
59277 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
59278 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
59279 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
59280 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
59281 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
59282 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
59283 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
59284 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
59285 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
59286 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
59287 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
59288 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
59289 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
59290 END DO
59291 buffer1 = 0.0_dp
59292 imax = 5*7*10
59293 kmax = 10
59294 DO i = 1, imax
59295 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
59296 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
59297 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
59298 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
59299 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
59300 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
59301 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
59302 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
59303 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
59304 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
59305 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
59306 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
59307 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
59308 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
59309 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
59310 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
59311 END DO
59312 imax = 5*7*7
59313 kmax = 10
59314 i = 0
59315 DO i1 = 1, 7
59316 DO i2 = 1, 7
59317 DO i3 = 1, 5
59318 i = i + 1
59319 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
59320 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
59321 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
59322 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
59323 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
59324 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
59325 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
59326 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
59327 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
59328 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
59329 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
59330 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
59331 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
59332 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
59333 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
59334 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
59335 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
59336 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
59337 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
59338 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
59339 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
59340 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
59341 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
59342 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
59343 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
59344 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
59345 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
59346 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
59347 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
59348 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
59349 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
59350 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
59351 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
59352 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
59353 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
59354 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
59355 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
59356 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
59357 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
59358 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
59359 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
59360 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
59361 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
59362 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
59363 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
59364 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
59365 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
59366 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
59367 END DO
59368 END DO
59369 END DO
59370 s_offset_d1 = s_offset_d1 + 7
59371 END DO
59372 s_offset_c1 = s_offset_c1 + 7
59373 END DO
59374 s_offset_b1 = s_offset_b1 + 7
59375 END DO
59376 s_offset_a1 = s_offset_a1 + 5
59377 END DO
59378 END SUBROUTINE contract_dfff
59379#endif
59380#if __MAX_CONTR > 4 || __MAX_CONTR == 4
59381! **************************************************************************************************
59382!> \brief ...
59383!> \param work ...
59384!> \param nl_a ...
59385!> \param nl_b ...
59386!> \param nl_c ...
59387!> \param nl_d ...
59388!> \param sphi_a ...
59389!> \param sphi_b ...
59390!> \param sphi_c ...
59391!> \param sphi_d ...
59392!> \param primitives ...
59393!> \param buffer1 ...
59394!> \param buffer2 ...
59395! **************************************************************************************************
59396 SUBROUTINE contract_dffg(work, &
59397 nl_a, nl_b, nl_c, nl_d, &
59398 sphi_a, sphi_b, sphi_c, sphi_d, &
59399 primitives, &
59400 buffer1, buffer2)
59401 REAL(dp), DIMENSION(6*10*10*15), INTENT(IN) :: work
59402 INTEGER :: nl_a, nl_b, nl_c, nl_d
59403 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
59404 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
59405 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
59406 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
59407 REAL(dp), &
59408 DIMENSION(5*nl_a, 7*nl_b, 7*nl_c, 9*nl_d) :: primitives
59409 REAL(dp), DIMENSION(6*10*10*15) :: buffer1, buffer2
59410
59411 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
59412 kmax, s_offset_a1, s_offset_b1, &
59413 s_offset_c1, s_offset_d1
59414
59415 s_offset_a1 = 0
59416 DO ia = 1, nl_a
59417 s_offset_b1 = 0
59418 DO ib = 1, nl_b
59419 s_offset_c1 = 0
59420 DO ic = 1, nl_c
59421 s_offset_d1 = 0
59422 DO id = 1, nl_d
59423 buffer1 = 0.0_dp
59424 imax = 10*10*15
59425 kmax = 6
59426 DO i = 1, imax
59427 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
59428 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
59429 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
59430 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
59431 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
59432 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
59433 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
59434 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
59435 END DO
59436 buffer2 = 0.0_dp
59437 imax = 5*10*15
59438 kmax = 10
59439 DO i = 1, imax
59440 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
59441 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
59442 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
59443 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
59444 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
59445 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
59446 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
59447 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
59448 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
59449 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
59450 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
59451 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
59452 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
59453 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
59454 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
59455 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
59456 END DO
59457 buffer1 = 0.0_dp
59458 imax = 5*7*15
59459 kmax = 10
59460 DO i = 1, imax
59461 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
59462 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
59463 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
59464 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
59465 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
59466 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
59467 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
59468 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
59469 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
59470 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
59471 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
59472 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
59473 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
59474 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
59475 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
59476 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
59477 END DO
59478 imax = 5*7*7
59479 kmax = 15
59480 i = 0
59481 DO i1 = 1, 7
59482 DO i2 = 1, 7
59483 DO i3 = 1, 5
59484 i = i + 1
59485 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
59486 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
59487 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
59488 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
59489 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
59490 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
59491 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
59492 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
59493 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
59494 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
59495 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
59496 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
59497 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
59498 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
59499 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
59500 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
59501 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
59502 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
59503 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
59504 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
59505 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
59506 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
59507 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
59508 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
59509 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
59510 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
59511 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
59512 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
59513 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
59514 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
59515 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
59516 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
59517 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
59518 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
59519 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
59520 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
59521 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
59522 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
59523 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
59524 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
59525 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
59526 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
59527 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
59528 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
59529 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
59530 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
59531 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
59532 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
59533 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
59534 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
59535 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
59536 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
59537 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
59538 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
59539 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
59540 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
59541 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
59542 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
59543 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
59544 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
59545 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
59546 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
59547 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
59548 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
59549 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
59550 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
59551 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
59552 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
59553 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
59554 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
59555 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
59556 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
59557 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
59558 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
59559 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
59560 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
59561 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
59562 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
59563 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
59564 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
59565 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
59566 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
59567 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
59568 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
59569 END DO
59570 END DO
59571 END DO
59572 s_offset_d1 = s_offset_d1 + 9
59573 END DO
59574 s_offset_c1 = s_offset_c1 + 7
59575 END DO
59576 s_offset_b1 = s_offset_b1 + 7
59577 END DO
59578 s_offset_a1 = s_offset_a1 + 5
59579 END DO
59580 END SUBROUTINE contract_dffg
59581#endif
59582#if __MAX_CONTR > 4 || __MAX_CONTR == 4
59583! **************************************************************************************************
59584!> \brief ...
59585!> \param work ...
59586!> \param nl_a ...
59587!> \param nl_b ...
59588!> \param nl_c ...
59589!> \param nl_d ...
59590!> \param sphi_a ...
59591!> \param sphi_b ...
59592!> \param sphi_c ...
59593!> \param sphi_d ...
59594!> \param primitives ...
59595!> \param buffer1 ...
59596!> \param buffer2 ...
59597! **************************************************************************************************
59598 SUBROUTINE contract_dfgs(work, &
59599 nl_a, nl_b, nl_c, nl_d, &
59600 sphi_a, sphi_b, sphi_c, sphi_d, &
59601 primitives, &
59602 buffer1, buffer2)
59603 REAL(dp), DIMENSION(6*10*15*1), INTENT(IN) :: work
59604 INTEGER :: nl_a, nl_b, nl_c, nl_d
59605 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
59606 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
59607 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
59608 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
59609 REAL(dp), &
59610 DIMENSION(5*nl_a, 7*nl_b, 9*nl_c, 1*nl_d) :: primitives
59611 REAL(dp), DIMENSION(6*10*15*1) :: buffer1, buffer2
59612
59613 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
59614 kmax, s_offset_a1, s_offset_b1, &
59615 s_offset_c1, s_offset_d1
59616
59617 s_offset_a1 = 0
59618 DO ia = 1, nl_a
59619 s_offset_b1 = 0
59620 DO ib = 1, nl_b
59621 s_offset_c1 = 0
59622 DO ic = 1, nl_c
59623 s_offset_d1 = 0
59624 DO id = 1, nl_d
59625 buffer1 = 0.0_dp
59626 imax = 10*15*1
59627 kmax = 6
59628 DO i = 1, imax
59629 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
59630 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
59631 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
59632 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
59633 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
59634 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
59635 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
59636 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
59637 END DO
59638 buffer2 = 0.0_dp
59639 imax = 5*15*1
59640 kmax = 10
59641 DO i = 1, imax
59642 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
59643 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
59644 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
59645 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
59646 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
59647 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
59648 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
59649 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
59650 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
59651 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
59652 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
59653 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
59654 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
59655 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
59656 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
59657 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
59658 END DO
59659 buffer1 = 0.0_dp
59660 imax = 5*7*1
59661 kmax = 15
59662 DO i = 1, imax
59663 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
59664 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
59665 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
59666 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
59667 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
59668 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
59669 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
59670 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
59671 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
59672 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
59673 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
59674 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
59675 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
59676 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
59677 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
59678 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
59679 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
59680 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
59681 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
59682 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
59683 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
59684 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
59685 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
59686 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
59687 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
59688 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
59689 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
59690 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
59691 END DO
59692 imax = 5*7*9
59693 kmax = 1
59694 i = 0
59695 DO i1 = 1, 9
59696 DO i2 = 1, 7
59697 DO i3 = 1, 5
59698 i = i + 1
59699 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
59700 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
59701 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
59702 END DO
59703 END DO
59704 END DO
59705 s_offset_d1 = s_offset_d1 + 1
59706 END DO
59707 s_offset_c1 = s_offset_c1 + 9
59708 END DO
59709 s_offset_b1 = s_offset_b1 + 7
59710 END DO
59711 s_offset_a1 = s_offset_a1 + 5
59712 END DO
59713 END SUBROUTINE contract_dfgs
59714#endif
59715#if __MAX_CONTR > 4 || __MAX_CONTR == 4
59716! **************************************************************************************************
59717!> \brief ...
59718!> \param work ...
59719!> \param nl_a ...
59720!> \param nl_b ...
59721!> \param nl_c ...
59722!> \param nl_d ...
59723!> \param sphi_a ...
59724!> \param sphi_b ...
59725!> \param sphi_c ...
59726!> \param sphi_d ...
59727!> \param primitives ...
59728!> \param buffer1 ...
59729!> \param buffer2 ...
59730! **************************************************************************************************
59731 SUBROUTINE contract_dfgp(work, &
59732 nl_a, nl_b, nl_c, nl_d, &
59733 sphi_a, sphi_b, sphi_c, sphi_d, &
59734 primitives, &
59735 buffer1, buffer2)
59736 REAL(dp), DIMENSION(6*10*15*3), INTENT(IN) :: work
59737 INTEGER :: nl_a, nl_b, nl_c, nl_d
59738 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
59739 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
59740 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
59741 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
59742 REAL(dp), &
59743 DIMENSION(5*nl_a, 7*nl_b, 9*nl_c, 3*nl_d) :: primitives
59744 REAL(dp), DIMENSION(6*10*15*3) :: buffer1, buffer2
59745
59746 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
59747 kmax, s_offset_a1, s_offset_b1, &
59748 s_offset_c1, s_offset_d1
59749
59750 s_offset_a1 = 0
59751 DO ia = 1, nl_a
59752 s_offset_b1 = 0
59753 DO ib = 1, nl_b
59754 s_offset_c1 = 0
59755 DO ic = 1, nl_c
59756 s_offset_d1 = 0
59757 DO id = 1, nl_d
59758 buffer1 = 0.0_dp
59759 imax = 10*15*3
59760 kmax = 6
59761 DO i = 1, imax
59762 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
59763 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
59764 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
59765 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
59766 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
59767 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
59768 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
59769 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
59770 END DO
59771 buffer2 = 0.0_dp
59772 imax = 5*15*3
59773 kmax = 10
59774 DO i = 1, imax
59775 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
59776 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
59777 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
59778 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
59779 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
59780 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
59781 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
59782 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
59783 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
59784 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
59785 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
59786 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
59787 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
59788 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
59789 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
59790 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
59791 END DO
59792 buffer1 = 0.0_dp
59793 imax = 5*7*3
59794 kmax = 15
59795 DO i = 1, imax
59796 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
59797 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
59798 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
59799 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
59800 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
59801 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
59802 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
59803 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
59804 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
59805 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
59806 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
59807 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
59808 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
59809 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
59810 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
59811 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
59812 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
59813 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
59814 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
59815 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
59816 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
59817 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
59818 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
59819 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
59820 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
59821 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
59822 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
59823 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
59824 END DO
59825 imax = 5*7*9
59826 kmax = 3
59827 i = 0
59828 DO i1 = 1, 9
59829 DO i2 = 1, 7
59830 DO i3 = 1, 5
59831 i = i + 1
59832 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
59833 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
59834 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
59835 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
59836 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
59837 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
59838 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
59839 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
59840 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
59841 END DO
59842 END DO
59843 END DO
59844 s_offset_d1 = s_offset_d1 + 3
59845 END DO
59846 s_offset_c1 = s_offset_c1 + 9
59847 END DO
59848 s_offset_b1 = s_offset_b1 + 7
59849 END DO
59850 s_offset_a1 = s_offset_a1 + 5
59851 END DO
59852 END SUBROUTINE contract_dfgp
59853#endif
59854#if __MAX_CONTR > 4 || __MAX_CONTR == 4
59855! **************************************************************************************************
59856!> \brief ...
59857!> \param work ...
59858!> \param nl_a ...
59859!> \param nl_b ...
59860!> \param nl_c ...
59861!> \param nl_d ...
59862!> \param sphi_a ...
59863!> \param sphi_b ...
59864!> \param sphi_c ...
59865!> \param sphi_d ...
59866!> \param primitives ...
59867!> \param buffer1 ...
59868!> \param buffer2 ...
59869! **************************************************************************************************
59870 SUBROUTINE contract_dfgd(work, &
59871 nl_a, nl_b, nl_c, nl_d, &
59872 sphi_a, sphi_b, sphi_c, sphi_d, &
59873 primitives, &
59874 buffer1, buffer2)
59875 REAL(dp), DIMENSION(6*10*15*6), INTENT(IN) :: work
59876 INTEGER :: nl_a, nl_b, nl_c, nl_d
59877 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
59878 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
59879 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
59880 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
59881 REAL(dp), &
59882 DIMENSION(5*nl_a, 7*nl_b, 9*nl_c, 5*nl_d) :: primitives
59883 REAL(dp), DIMENSION(6*10*15*6) :: buffer1, buffer2
59884
59885 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
59886 kmax, s_offset_a1, s_offset_b1, &
59887 s_offset_c1, s_offset_d1
59888
59889 s_offset_a1 = 0
59890 DO ia = 1, nl_a
59891 s_offset_b1 = 0
59892 DO ib = 1, nl_b
59893 s_offset_c1 = 0
59894 DO ic = 1, nl_c
59895 s_offset_d1 = 0
59896 DO id = 1, nl_d
59897 buffer1 = 0.0_dp
59898 imax = 10*15*6
59899 kmax = 6
59900 DO i = 1, imax
59901 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
59902 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
59903 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
59904 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
59905 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
59906 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
59907 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
59908 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
59909 END DO
59910 buffer2 = 0.0_dp
59911 imax = 5*15*6
59912 kmax = 10
59913 DO i = 1, imax
59914 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
59915 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
59916 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
59917 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
59918 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
59919 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
59920 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
59921 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
59922 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
59923 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
59924 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
59925 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
59926 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
59927 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
59928 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
59929 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
59930 END DO
59931 buffer1 = 0.0_dp
59932 imax = 5*7*6
59933 kmax = 15
59934 DO i = 1, imax
59935 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
59936 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
59937 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
59938 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
59939 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
59940 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
59941 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
59942 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
59943 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
59944 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
59945 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
59946 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
59947 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
59948 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
59949 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
59950 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
59951 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
59952 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
59953 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
59954 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
59955 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
59956 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
59957 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
59958 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
59959 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
59960 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
59961 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
59962 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
59963 END DO
59964 imax = 5*7*9
59965 kmax = 6
59966 i = 0
59967 DO i1 = 1, 9
59968 DO i2 = 1, 7
59969 DO i3 = 1, 5
59970 i = i + 1
59971 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
59972 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
59973 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
59974 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
59975 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
59976 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
59977 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
59978 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
59979 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
59980 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
59981 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
59982 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
59983 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
59984 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
59985 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
59986 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
59987 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
59988 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
59989 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
59990 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
59991 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
59992 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
59993 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
59994 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
59995 END DO
59996 END DO
59997 END DO
59998 s_offset_d1 = s_offset_d1 + 5
59999 END DO
60000 s_offset_c1 = s_offset_c1 + 9
60001 END DO
60002 s_offset_b1 = s_offset_b1 + 7
60003 END DO
60004 s_offset_a1 = s_offset_a1 + 5
60005 END DO
60006 END SUBROUTINE contract_dfgd
60007#endif
60008#if __MAX_CONTR > 4 || __MAX_CONTR == 4
60009! **************************************************************************************************
60010!> \brief ...
60011!> \param work ...
60012!> \param nl_a ...
60013!> \param nl_b ...
60014!> \param nl_c ...
60015!> \param nl_d ...
60016!> \param sphi_a ...
60017!> \param sphi_b ...
60018!> \param sphi_c ...
60019!> \param sphi_d ...
60020!> \param primitives ...
60021!> \param buffer1 ...
60022!> \param buffer2 ...
60023! **************************************************************************************************
60024 SUBROUTINE contract_dfgf(work, &
60025 nl_a, nl_b, nl_c, nl_d, &
60026 sphi_a, sphi_b, sphi_c, sphi_d, &
60027 primitives, &
60028 buffer1, buffer2)
60029 REAL(dp), DIMENSION(6*10*15*10), INTENT(IN) :: work
60030 INTEGER :: nl_a, nl_b, nl_c, nl_d
60031 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
60032 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
60033 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
60034 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
60035 REAL(dp), &
60036 DIMENSION(5*nl_a, 7*nl_b, 9*nl_c, 7*nl_d) :: primitives
60037 REAL(dp), DIMENSION(6*10*15*10) :: buffer1, buffer2
60038
60039 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
60040 kmax, s_offset_a1, s_offset_b1, &
60041 s_offset_c1, s_offset_d1
60042
60043 s_offset_a1 = 0
60044 DO ia = 1, nl_a
60045 s_offset_b1 = 0
60046 DO ib = 1, nl_b
60047 s_offset_c1 = 0
60048 DO ic = 1, nl_c
60049 s_offset_d1 = 0
60050 DO id = 1, nl_d
60051 buffer1 = 0.0_dp
60052 imax = 10*15*10
60053 kmax = 6
60054 DO i = 1, imax
60055 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
60056 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
60057 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
60058 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
60059 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
60060 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
60061 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
60062 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
60063 END DO
60064 buffer2 = 0.0_dp
60065 imax = 5*15*10
60066 kmax = 10
60067 DO i = 1, imax
60068 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
60069 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
60070 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
60071 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
60072 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
60073 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
60074 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
60075 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
60076 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
60077 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
60078 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
60079 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
60080 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
60081 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
60082 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
60083 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
60084 END DO
60085 buffer1 = 0.0_dp
60086 imax = 5*7*10
60087 kmax = 15
60088 DO i = 1, imax
60089 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
60090 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
60091 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
60092 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
60093 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
60094 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
60095 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
60096 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
60097 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
60098 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
60099 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
60100 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
60101 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
60102 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
60103 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
60104 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
60105 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
60106 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
60107 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
60108 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
60109 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
60110 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
60111 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
60112 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
60113 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
60114 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
60115 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
60116 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
60117 END DO
60118 imax = 5*7*9
60119 kmax = 10
60120 i = 0
60121 DO i1 = 1, 9
60122 DO i2 = 1, 7
60123 DO i3 = 1, 5
60124 i = i + 1
60125 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
60126 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
60127 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
60128 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
60129 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
60130 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
60131 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
60132 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
60133 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
60134 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
60135 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
60136 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
60137 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
60138 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
60139 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
60140 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
60141 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
60142 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
60143 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
60144 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
60145 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
60146 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
60147 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
60148 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
60149 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
60150 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
60151 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
60152 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
60153 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
60154 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
60155 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
60156 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
60157 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
60158 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
60159 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
60160 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
60161 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
60162 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
60163 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
60164 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
60165 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
60166 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
60167 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
60168 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
60169 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
60170 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
60171 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
60172 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
60173 END DO
60174 END DO
60175 END DO
60176 s_offset_d1 = s_offset_d1 + 7
60177 END DO
60178 s_offset_c1 = s_offset_c1 + 9
60179 END DO
60180 s_offset_b1 = s_offset_b1 + 7
60181 END DO
60182 s_offset_a1 = s_offset_a1 + 5
60183 END DO
60184 END SUBROUTINE contract_dfgf
60185#endif
60186#if __MAX_CONTR > 4 || __MAX_CONTR == 4
60187! **************************************************************************************************
60188!> \brief ...
60189!> \param work ...
60190!> \param nl_a ...
60191!> \param nl_b ...
60192!> \param nl_c ...
60193!> \param nl_d ...
60194!> \param sphi_a ...
60195!> \param sphi_b ...
60196!> \param sphi_c ...
60197!> \param sphi_d ...
60198!> \param primitives ...
60199!> \param buffer1 ...
60200!> \param buffer2 ...
60201! **************************************************************************************************
60202 SUBROUTINE contract_dfgg(work, &
60203 nl_a, nl_b, nl_c, nl_d, &
60204 sphi_a, sphi_b, sphi_c, sphi_d, &
60205 primitives, &
60206 buffer1, buffer2)
60207 REAL(dp), DIMENSION(6*10*15*15), INTENT(IN) :: work
60208 INTEGER :: nl_a, nl_b, nl_c, nl_d
60209 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
60210 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
60211 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
60212 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
60213 REAL(dp), &
60214 DIMENSION(5*nl_a, 7*nl_b, 9*nl_c, 9*nl_d) :: primitives
60215 REAL(dp), DIMENSION(6*10*15*15) :: buffer1, buffer2
60216
60217 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
60218 kmax, s_offset_a1, s_offset_b1, &
60219 s_offset_c1, s_offset_d1
60220
60221 s_offset_a1 = 0
60222 DO ia = 1, nl_a
60223 s_offset_b1 = 0
60224 DO ib = 1, nl_b
60225 s_offset_c1 = 0
60226 DO ic = 1, nl_c
60227 s_offset_d1 = 0
60228 DO id = 1, nl_d
60229 buffer1 = 0.0_dp
60230 imax = 10*15*15
60231 kmax = 6
60232 DO i = 1, imax
60233 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
60234 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
60235 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
60236 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
60237 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
60238 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
60239 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
60240 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
60241 END DO
60242 buffer2 = 0.0_dp
60243 imax = 5*15*15
60244 kmax = 10
60245 DO i = 1, imax
60246 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
60247 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
60248 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
60249 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
60250 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
60251 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
60252 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
60253 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
60254 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
60255 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
60256 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
60257 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
60258 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
60259 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
60260 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
60261 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
60262 END DO
60263 buffer1 = 0.0_dp
60264 imax = 5*7*15
60265 kmax = 15
60266 DO i = 1, imax
60267 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
60268 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
60269 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
60270 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
60271 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
60272 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
60273 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
60274 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
60275 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
60276 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
60277 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
60278 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
60279 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
60280 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
60281 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
60282 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
60283 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
60284 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
60285 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
60286 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
60287 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
60288 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
60289 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
60290 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
60291 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
60292 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
60293 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
60294 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
60295 END DO
60296 imax = 5*7*9
60297 kmax = 15
60298 i = 0
60299 DO i1 = 1, 9
60300 DO i2 = 1, 7
60301 DO i3 = 1, 5
60302 i = i + 1
60303 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
60304 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
60305 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
60306 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
60307 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
60308 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
60309 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
60310 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
60311 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
60312 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
60313 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
60314 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
60315 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
60316 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
60317 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
60318 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
60319 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
60320 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
60321 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
60322 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
60323 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
60324 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
60325 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
60326 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
60327 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
60328 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
60329 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
60330 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
60331 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
60332 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
60333 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
60334 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
60335 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
60336 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
60337 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
60338 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
60339 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
60340 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
60341 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
60342 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
60343 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
60344 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
60345 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
60346 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
60347 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
60348 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
60349 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
60350 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
60351 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
60352 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
60353 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
60354 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
60355 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
60356 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
60357 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
60358 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
60359 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
60360 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
60361 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
60362 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
60363 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
60364 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
60365 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
60366 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
60367 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
60368 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
60369 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
60370 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
60371 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
60372 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
60373 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
60374 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
60375 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
60376 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
60377 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
60378 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
60379 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
60380 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
60381 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
60382 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
60383 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
60384 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
60385 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
60386 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
60387 END DO
60388 END DO
60389 END DO
60390 s_offset_d1 = s_offset_d1 + 9
60391 END DO
60392 s_offset_c1 = s_offset_c1 + 9
60393 END DO
60394 s_offset_b1 = s_offset_b1 + 7
60395 END DO
60396 s_offset_a1 = s_offset_a1 + 5
60397 END DO
60398 END SUBROUTINE contract_dfgg
60399#endif
60400#if __MAX_CONTR > 4 || __MAX_CONTR == 4
60401! **************************************************************************************************
60402!> \brief ...
60403!> \param work ...
60404!> \param nl_a ...
60405!> \param nl_b ...
60406!> \param nl_c ...
60407!> \param nl_d ...
60408!> \param sphi_a ...
60409!> \param sphi_b ...
60410!> \param sphi_c ...
60411!> \param sphi_d ...
60412!> \param primitives ...
60413!> \param buffer1 ...
60414!> \param buffer2 ...
60415! **************************************************************************************************
60416 SUBROUTINE contract_dgss(work, &
60417 nl_a, nl_b, nl_c, nl_d, &
60418 sphi_a, sphi_b, sphi_c, sphi_d, &
60419 primitives, &
60420 buffer1, buffer2)
60421 REAL(dp), DIMENSION(6*15*1*1), INTENT(IN) :: work
60422 INTEGER :: nl_a, nl_b, nl_c, nl_d
60423 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
60424 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
60425 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
60426 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
60427 REAL(dp), &
60428 DIMENSION(5*nl_a, 9*nl_b, 1*nl_c, 1*nl_d) :: primitives
60429 REAL(dp), DIMENSION(6*15*1*1) :: buffer1, buffer2
60430
60431 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
60432 kmax, s_offset_a1, s_offset_b1, &
60433 s_offset_c1, s_offset_d1
60434
60435 s_offset_a1 = 0
60436 DO ia = 1, nl_a
60437 s_offset_b1 = 0
60438 DO ib = 1, nl_b
60439 s_offset_c1 = 0
60440 DO ic = 1, nl_c
60441 s_offset_d1 = 0
60442 DO id = 1, nl_d
60443 buffer1 = 0.0_dp
60444 imax = 15*1*1
60445 kmax = 6
60446 DO i = 1, imax
60447 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
60448 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
60449 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
60450 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
60451 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
60452 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
60453 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
60454 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
60455 END DO
60456 buffer2 = 0.0_dp
60457 imax = 5*1*1
60458 kmax = 15
60459 DO i = 1, imax
60460 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
60461 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
60462 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
60463 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
60464 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
60465 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
60466 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
60467 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
60468 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
60469 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
60470 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
60471 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
60472 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
60473 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
60474 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
60475 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
60476 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
60477 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
60478 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
60479 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
60480 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
60481 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
60482 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
60483 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
60484 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
60485 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
60486 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
60487 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
60488 END DO
60489 buffer1 = 0.0_dp
60490 imax = 5*9*1
60491 kmax = 1
60492 DO i = 1, imax
60493 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
60494 END DO
60495 imax = 5*9*1
60496 kmax = 1
60497 i = 0
60498 DO i1 = 1, 1
60499 DO i2 = 1, 9
60500 DO i3 = 1, 5
60501 i = i + 1
60502 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
60503 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
60504 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
60505 END DO
60506 END DO
60507 END DO
60508 s_offset_d1 = s_offset_d1 + 1
60509 END DO
60510 s_offset_c1 = s_offset_c1 + 1
60511 END DO
60512 s_offset_b1 = s_offset_b1 + 9
60513 END DO
60514 s_offset_a1 = s_offset_a1 + 5
60515 END DO
60516 END SUBROUTINE contract_dgss
60517#endif
60518#if __MAX_CONTR > 4 || __MAX_CONTR == 4
60519! **************************************************************************************************
60520!> \brief ...
60521!> \param work ...
60522!> \param nl_a ...
60523!> \param nl_b ...
60524!> \param nl_c ...
60525!> \param nl_d ...
60526!> \param sphi_a ...
60527!> \param sphi_b ...
60528!> \param sphi_c ...
60529!> \param sphi_d ...
60530!> \param primitives ...
60531!> \param buffer1 ...
60532!> \param buffer2 ...
60533! **************************************************************************************************
60534 SUBROUTINE contract_dgsp(work, &
60535 nl_a, nl_b, nl_c, nl_d, &
60536 sphi_a, sphi_b, sphi_c, sphi_d, &
60537 primitives, &
60538 buffer1, buffer2)
60539 REAL(dp), DIMENSION(6*15*1*3), INTENT(IN) :: work
60540 INTEGER :: nl_a, nl_b, nl_c, nl_d
60541 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
60542 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
60543 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
60544 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
60545 REAL(dp), &
60546 DIMENSION(5*nl_a, 9*nl_b, 1*nl_c, 3*nl_d) :: primitives
60547 REAL(dp), DIMENSION(6*15*1*3) :: buffer1, buffer2
60548
60549 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
60550 kmax, s_offset_a1, s_offset_b1, &
60551 s_offset_c1, s_offset_d1
60552
60553 s_offset_a1 = 0
60554 DO ia = 1, nl_a
60555 s_offset_b1 = 0
60556 DO ib = 1, nl_b
60557 s_offset_c1 = 0
60558 DO ic = 1, nl_c
60559 s_offset_d1 = 0
60560 DO id = 1, nl_d
60561 buffer1 = 0.0_dp
60562 imax = 15*1*3
60563 kmax = 6
60564 DO i = 1, imax
60565 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
60566 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
60567 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
60568 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
60569 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
60570 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
60571 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
60572 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
60573 END DO
60574 buffer2 = 0.0_dp
60575 imax = 5*1*3
60576 kmax = 15
60577 DO i = 1, imax
60578 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
60579 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
60580 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
60581 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
60582 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
60583 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
60584 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
60585 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
60586 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
60587 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
60588 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
60589 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
60590 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
60591 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
60592 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
60593 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
60594 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
60595 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
60596 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
60597 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
60598 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
60599 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
60600 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
60601 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
60602 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
60603 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
60604 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
60605 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
60606 END DO
60607 buffer1 = 0.0_dp
60608 imax = 5*9*3
60609 kmax = 1
60610 DO i = 1, imax
60611 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
60612 END DO
60613 imax = 5*9*1
60614 kmax = 3
60615 i = 0
60616 DO i1 = 1, 1
60617 DO i2 = 1, 9
60618 DO i3 = 1, 5
60619 i = i + 1
60620 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
60621 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
60622 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
60623 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
60624 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
60625 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
60626 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
60627 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
60628 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
60629 END DO
60630 END DO
60631 END DO
60632 s_offset_d1 = s_offset_d1 + 3
60633 END DO
60634 s_offset_c1 = s_offset_c1 + 1
60635 END DO
60636 s_offset_b1 = s_offset_b1 + 9
60637 END DO
60638 s_offset_a1 = s_offset_a1 + 5
60639 END DO
60640 END SUBROUTINE contract_dgsp
60641#endif
60642#if __MAX_CONTR > 4 || __MAX_CONTR == 4
60643! **************************************************************************************************
60644!> \brief ...
60645!> \param work ...
60646!> \param nl_a ...
60647!> \param nl_b ...
60648!> \param nl_c ...
60649!> \param nl_d ...
60650!> \param sphi_a ...
60651!> \param sphi_b ...
60652!> \param sphi_c ...
60653!> \param sphi_d ...
60654!> \param primitives ...
60655!> \param buffer1 ...
60656!> \param buffer2 ...
60657! **************************************************************************************************
60658 SUBROUTINE contract_dgsd(work, &
60659 nl_a, nl_b, nl_c, nl_d, &
60660 sphi_a, sphi_b, sphi_c, sphi_d, &
60661 primitives, &
60662 buffer1, buffer2)
60663 REAL(dp), DIMENSION(6*15*1*6), INTENT(IN) :: work
60664 INTEGER :: nl_a, nl_b, nl_c, nl_d
60665 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
60666 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
60667 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
60668 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
60669 REAL(dp), &
60670 DIMENSION(5*nl_a, 9*nl_b, 1*nl_c, 5*nl_d) :: primitives
60671 REAL(dp), DIMENSION(6*15*1*6) :: buffer1, buffer2
60672
60673 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
60674 kmax, s_offset_a1, s_offset_b1, &
60675 s_offset_c1, s_offset_d1
60676
60677 s_offset_a1 = 0
60678 DO ia = 1, nl_a
60679 s_offset_b1 = 0
60680 DO ib = 1, nl_b
60681 s_offset_c1 = 0
60682 DO ic = 1, nl_c
60683 s_offset_d1 = 0
60684 DO id = 1, nl_d
60685 buffer1 = 0.0_dp
60686 imax = 15*1*6
60687 kmax = 6
60688 DO i = 1, imax
60689 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
60690 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
60691 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
60692 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
60693 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
60694 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
60695 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
60696 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
60697 END DO
60698 buffer2 = 0.0_dp
60699 imax = 5*1*6
60700 kmax = 15
60701 DO i = 1, imax
60702 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
60703 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
60704 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
60705 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
60706 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
60707 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
60708 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
60709 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
60710 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
60711 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
60712 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
60713 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
60714 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
60715 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
60716 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
60717 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
60718 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
60719 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
60720 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
60721 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
60722 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
60723 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
60724 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
60725 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
60726 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
60727 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
60728 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
60729 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
60730 END DO
60731 buffer1 = 0.0_dp
60732 imax = 5*9*6
60733 kmax = 1
60734 DO i = 1, imax
60735 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
60736 END DO
60737 imax = 5*9*1
60738 kmax = 6
60739 i = 0
60740 DO i1 = 1, 1
60741 DO i2 = 1, 9
60742 DO i3 = 1, 5
60743 i = i + 1
60744 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
60745 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
60746 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
60747 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
60748 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
60749 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
60750 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
60751 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
60752 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
60753 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
60754 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
60755 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
60756 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
60757 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
60758 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
60759 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
60760 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
60761 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
60762 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
60763 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
60764 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
60765 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
60766 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
60767 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
60768 END DO
60769 END DO
60770 END DO
60771 s_offset_d1 = s_offset_d1 + 5
60772 END DO
60773 s_offset_c1 = s_offset_c1 + 1
60774 END DO
60775 s_offset_b1 = s_offset_b1 + 9
60776 END DO
60777 s_offset_a1 = s_offset_a1 + 5
60778 END DO
60779 END SUBROUTINE contract_dgsd
60780#endif
60781#if __MAX_CONTR > 4 || __MAX_CONTR == 4
60782! **************************************************************************************************
60783!> \brief ...
60784!> \param work ...
60785!> \param nl_a ...
60786!> \param nl_b ...
60787!> \param nl_c ...
60788!> \param nl_d ...
60789!> \param sphi_a ...
60790!> \param sphi_b ...
60791!> \param sphi_c ...
60792!> \param sphi_d ...
60793!> \param primitives ...
60794!> \param buffer1 ...
60795!> \param buffer2 ...
60796! **************************************************************************************************
60797 SUBROUTINE contract_dgsf(work, &
60798 nl_a, nl_b, nl_c, nl_d, &
60799 sphi_a, sphi_b, sphi_c, sphi_d, &
60800 primitives, &
60801 buffer1, buffer2)
60802 REAL(dp), DIMENSION(6*15*1*10), INTENT(IN) :: work
60803 INTEGER :: nl_a, nl_b, nl_c, nl_d
60804 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
60805 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
60806 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
60807 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
60808 REAL(dp), &
60809 DIMENSION(5*nl_a, 9*nl_b, 1*nl_c, 7*nl_d) :: primitives
60810 REAL(dp), DIMENSION(6*15*1*10) :: buffer1, buffer2
60811
60812 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
60813 kmax, s_offset_a1, s_offset_b1, &
60814 s_offset_c1, s_offset_d1
60815
60816 s_offset_a1 = 0
60817 DO ia = 1, nl_a
60818 s_offset_b1 = 0
60819 DO ib = 1, nl_b
60820 s_offset_c1 = 0
60821 DO ic = 1, nl_c
60822 s_offset_d1 = 0
60823 DO id = 1, nl_d
60824 buffer1 = 0.0_dp
60825 imax = 15*1*10
60826 kmax = 6
60827 DO i = 1, imax
60828 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
60829 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
60830 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
60831 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
60832 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
60833 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
60834 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
60835 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
60836 END DO
60837 buffer2 = 0.0_dp
60838 imax = 5*1*10
60839 kmax = 15
60840 DO i = 1, imax
60841 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
60842 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
60843 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
60844 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
60845 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
60846 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
60847 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
60848 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
60849 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
60850 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
60851 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
60852 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
60853 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
60854 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
60855 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
60856 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
60857 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
60858 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
60859 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
60860 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
60861 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
60862 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
60863 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
60864 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
60865 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
60866 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
60867 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
60868 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
60869 END DO
60870 buffer1 = 0.0_dp
60871 imax = 5*9*10
60872 kmax = 1
60873 DO i = 1, imax
60874 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
60875 END DO
60876 imax = 5*9*1
60877 kmax = 10
60878 i = 0
60879 DO i1 = 1, 1
60880 DO i2 = 1, 9
60881 DO i3 = 1, 5
60882 i = i + 1
60883 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
60884 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
60885 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
60886 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
60887 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
60888 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
60889 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
60890 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
60891 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
60892 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
60893 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
60894 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
60895 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
60896 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
60897 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
60898 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
60899 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
60900 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
60901 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
60902 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
60903 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
60904 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
60905 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
60906 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
60907 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
60908 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
60909 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
60910 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
60911 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
60912 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
60913 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
60914 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
60915 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
60916 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
60917 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
60918 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
60919 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
60920 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
60921 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
60922 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
60923 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
60924 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
60925 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
60926 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
60927 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
60928 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
60929 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
60930 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
60931 END DO
60932 END DO
60933 END DO
60934 s_offset_d1 = s_offset_d1 + 7
60935 END DO
60936 s_offset_c1 = s_offset_c1 + 1
60937 END DO
60938 s_offset_b1 = s_offset_b1 + 9
60939 END DO
60940 s_offset_a1 = s_offset_a1 + 5
60941 END DO
60942 END SUBROUTINE contract_dgsf
60943#endif
60944#if __MAX_CONTR > 4 || __MAX_CONTR == 4
60945! **************************************************************************************************
60946!> \brief ...
60947!> \param work ...
60948!> \param nl_a ...
60949!> \param nl_b ...
60950!> \param nl_c ...
60951!> \param nl_d ...
60952!> \param sphi_a ...
60953!> \param sphi_b ...
60954!> \param sphi_c ...
60955!> \param sphi_d ...
60956!> \param primitives ...
60957!> \param buffer1 ...
60958!> \param buffer2 ...
60959! **************************************************************************************************
60960 SUBROUTINE contract_dgsg(work, &
60961 nl_a, nl_b, nl_c, nl_d, &
60962 sphi_a, sphi_b, sphi_c, sphi_d, &
60963 primitives, &
60964 buffer1, buffer2)
60965 REAL(dp), DIMENSION(6*15*1*15), INTENT(IN) :: work
60966 INTEGER :: nl_a, nl_b, nl_c, nl_d
60967 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
60968 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
60969 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
60970 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
60971 REAL(dp), &
60972 DIMENSION(5*nl_a, 9*nl_b, 1*nl_c, 9*nl_d) :: primitives
60973 REAL(dp), DIMENSION(6*15*1*15) :: buffer1, buffer2
60974
60975 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
60976 kmax, s_offset_a1, s_offset_b1, &
60977 s_offset_c1, s_offset_d1
60978
60979 s_offset_a1 = 0
60980 DO ia = 1, nl_a
60981 s_offset_b1 = 0
60982 DO ib = 1, nl_b
60983 s_offset_c1 = 0
60984 DO ic = 1, nl_c
60985 s_offset_d1 = 0
60986 DO id = 1, nl_d
60987 buffer1 = 0.0_dp
60988 imax = 15*1*15
60989 kmax = 6
60990 DO i = 1, imax
60991 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
60992 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
60993 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
60994 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
60995 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
60996 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
60997 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
60998 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
60999 END DO
61000 buffer2 = 0.0_dp
61001 imax = 5*1*15
61002 kmax = 15
61003 DO i = 1, imax
61004 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
61005 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
61006 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
61007 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
61008 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
61009 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
61010 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
61011 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
61012 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
61013 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
61014 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
61015 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
61016 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
61017 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
61018 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
61019 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
61020 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
61021 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
61022 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
61023 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
61024 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
61025 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
61026 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
61027 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
61028 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
61029 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
61030 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
61031 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
61032 END DO
61033 buffer1 = 0.0_dp
61034 imax = 5*9*15
61035 kmax = 1
61036 DO i = 1, imax
61037 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
61038 END DO
61039 imax = 5*9*1
61040 kmax = 15
61041 i = 0
61042 DO i1 = 1, 1
61043 DO i2 = 1, 9
61044 DO i3 = 1, 5
61045 i = i + 1
61046 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
61047 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
61048 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
61049 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
61050 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
61051 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
61052 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
61053 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
61054 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
61055 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
61056 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
61057 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
61058 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
61059 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
61060 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
61061 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
61062 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
61063 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
61064 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
61065 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
61066 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
61067 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
61068 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
61069 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
61070 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
61071 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
61072 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
61073 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
61074 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
61075 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
61076 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
61077 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
61078 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
61079 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
61080 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
61081 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
61082 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
61083 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
61084 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
61085 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
61086 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
61087 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
61088 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
61089 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
61090 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
61091 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
61092 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
61093 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
61094 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
61095 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
61096 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
61097 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
61098 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
61099 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
61100 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
61101 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
61102 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
61103 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
61104 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
61105 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
61106 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
61107 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
61108 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
61109 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
61110 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
61111 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
61112 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
61113 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
61114 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
61115 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
61116 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
61117 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
61118 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
61119 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
61120 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
61121 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
61122 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
61123 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
61124 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
61125 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
61126 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
61127 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
61128 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
61129 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
61130 END DO
61131 END DO
61132 END DO
61133 s_offset_d1 = s_offset_d1 + 9
61134 END DO
61135 s_offset_c1 = s_offset_c1 + 1
61136 END DO
61137 s_offset_b1 = s_offset_b1 + 9
61138 END DO
61139 s_offset_a1 = s_offset_a1 + 5
61140 END DO
61141 END SUBROUTINE contract_dgsg
61142#endif
61143#if __MAX_CONTR > 4 || __MAX_CONTR == 4
61144! **************************************************************************************************
61145!> \brief ...
61146!> \param work ...
61147!> \param nl_a ...
61148!> \param nl_b ...
61149!> \param nl_c ...
61150!> \param nl_d ...
61151!> \param sphi_a ...
61152!> \param sphi_b ...
61153!> \param sphi_c ...
61154!> \param sphi_d ...
61155!> \param primitives ...
61156!> \param buffer1 ...
61157!> \param buffer2 ...
61158! **************************************************************************************************
61159 SUBROUTINE contract_dgps(work, &
61160 nl_a, nl_b, nl_c, nl_d, &
61161 sphi_a, sphi_b, sphi_c, sphi_d, &
61162 primitives, &
61163 buffer1, buffer2)
61164 REAL(dp), DIMENSION(6*15*3*1), INTENT(IN) :: work
61165 INTEGER :: nl_a, nl_b, nl_c, nl_d
61166 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
61167 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
61168 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
61169 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
61170 REAL(dp), &
61171 DIMENSION(5*nl_a, 9*nl_b, 3*nl_c, 1*nl_d) :: primitives
61172 REAL(dp), DIMENSION(6*15*3*1) :: buffer1, buffer2
61173
61174 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
61175 kmax, s_offset_a1, s_offset_b1, &
61176 s_offset_c1, s_offset_d1
61177
61178 s_offset_a1 = 0
61179 DO ia = 1, nl_a
61180 s_offset_b1 = 0
61181 DO ib = 1, nl_b
61182 s_offset_c1 = 0
61183 DO ic = 1, nl_c
61184 s_offset_d1 = 0
61185 DO id = 1, nl_d
61186 buffer1 = 0.0_dp
61187 imax = 15*3*1
61188 kmax = 6
61189 DO i = 1, imax
61190 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
61191 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
61192 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
61193 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
61194 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
61195 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
61196 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
61197 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
61198 END DO
61199 buffer2 = 0.0_dp
61200 imax = 5*3*1
61201 kmax = 15
61202 DO i = 1, imax
61203 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
61204 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
61205 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
61206 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
61207 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
61208 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
61209 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
61210 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
61211 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
61212 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
61213 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
61214 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
61215 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
61216 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
61217 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
61218 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
61219 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
61220 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
61221 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
61222 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
61223 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
61224 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
61225 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
61226 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
61227 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
61228 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
61229 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
61230 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
61231 END DO
61232 buffer1 = 0.0_dp
61233 imax = 5*9*1
61234 kmax = 3
61235 DO i = 1, imax
61236 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
61237 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
61238 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
61239 END DO
61240 imax = 5*9*3
61241 kmax = 1
61242 i = 0
61243 DO i1 = 1, 3
61244 DO i2 = 1, 9
61245 DO i3 = 1, 5
61246 i = i + 1
61247 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
61248 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
61249 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
61250 END DO
61251 END DO
61252 END DO
61253 s_offset_d1 = s_offset_d1 + 1
61254 END DO
61255 s_offset_c1 = s_offset_c1 + 3
61256 END DO
61257 s_offset_b1 = s_offset_b1 + 9
61258 END DO
61259 s_offset_a1 = s_offset_a1 + 5
61260 END DO
61261 END SUBROUTINE contract_dgps
61262#endif
61263#if __MAX_CONTR > 4 || __MAX_CONTR == 4
61264! **************************************************************************************************
61265!> \brief ...
61266!> \param work ...
61267!> \param nl_a ...
61268!> \param nl_b ...
61269!> \param nl_c ...
61270!> \param nl_d ...
61271!> \param sphi_a ...
61272!> \param sphi_b ...
61273!> \param sphi_c ...
61274!> \param sphi_d ...
61275!> \param primitives ...
61276!> \param buffer1 ...
61277!> \param buffer2 ...
61278! **************************************************************************************************
61279 SUBROUTINE contract_dgpp(work, &
61280 nl_a, nl_b, nl_c, nl_d, &
61281 sphi_a, sphi_b, sphi_c, sphi_d, &
61282 primitives, &
61283 buffer1, buffer2)
61284 REAL(dp), DIMENSION(6*15*3*3), INTENT(IN) :: work
61285 INTEGER :: nl_a, nl_b, nl_c, nl_d
61286 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
61287 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
61288 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
61289 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
61290 REAL(dp), &
61291 DIMENSION(5*nl_a, 9*nl_b, 3*nl_c, 3*nl_d) :: primitives
61292 REAL(dp), DIMENSION(6*15*3*3) :: buffer1, buffer2
61293
61294 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
61295 kmax, s_offset_a1, s_offset_b1, &
61296 s_offset_c1, s_offset_d1
61297
61298 s_offset_a1 = 0
61299 DO ia = 1, nl_a
61300 s_offset_b1 = 0
61301 DO ib = 1, nl_b
61302 s_offset_c1 = 0
61303 DO ic = 1, nl_c
61304 s_offset_d1 = 0
61305 DO id = 1, nl_d
61306 buffer1 = 0.0_dp
61307 imax = 15*3*3
61308 kmax = 6
61309 DO i = 1, imax
61310 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
61311 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
61312 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
61313 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
61314 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
61315 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
61316 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
61317 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
61318 END DO
61319 buffer2 = 0.0_dp
61320 imax = 5*3*3
61321 kmax = 15
61322 DO i = 1, imax
61323 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
61324 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
61325 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
61326 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
61327 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
61328 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
61329 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
61330 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
61331 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
61332 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
61333 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
61334 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
61335 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
61336 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
61337 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
61338 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
61339 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
61340 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
61341 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
61342 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
61343 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
61344 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
61345 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
61346 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
61347 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
61348 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
61349 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
61350 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
61351 END DO
61352 buffer1 = 0.0_dp
61353 imax = 5*9*3
61354 kmax = 3
61355 DO i = 1, imax
61356 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
61357 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
61358 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
61359 END DO
61360 imax = 5*9*3
61361 kmax = 3
61362 i = 0
61363 DO i1 = 1, 3
61364 DO i2 = 1, 9
61365 DO i3 = 1, 5
61366 i = i + 1
61367 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
61368 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
61369 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
61370 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
61371 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
61372 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
61373 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
61374 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
61375 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
61376 END DO
61377 END DO
61378 END DO
61379 s_offset_d1 = s_offset_d1 + 3
61380 END DO
61381 s_offset_c1 = s_offset_c1 + 3
61382 END DO
61383 s_offset_b1 = s_offset_b1 + 9
61384 END DO
61385 s_offset_a1 = s_offset_a1 + 5
61386 END DO
61387 END SUBROUTINE contract_dgpp
61388#endif
61389#if __MAX_CONTR > 4 || __MAX_CONTR == 4
61390! **************************************************************************************************
61391!> \brief ...
61392!> \param work ...
61393!> \param nl_a ...
61394!> \param nl_b ...
61395!> \param nl_c ...
61396!> \param nl_d ...
61397!> \param sphi_a ...
61398!> \param sphi_b ...
61399!> \param sphi_c ...
61400!> \param sphi_d ...
61401!> \param primitives ...
61402!> \param buffer1 ...
61403!> \param buffer2 ...
61404! **************************************************************************************************
61405 SUBROUTINE contract_dgpd(work, &
61406 nl_a, nl_b, nl_c, nl_d, &
61407 sphi_a, sphi_b, sphi_c, sphi_d, &
61408 primitives, &
61409 buffer1, buffer2)
61410 REAL(dp), DIMENSION(6*15*3*6), INTENT(IN) :: work
61411 INTEGER :: nl_a, nl_b, nl_c, nl_d
61412 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
61413 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
61414 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
61415 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
61416 REAL(dp), &
61417 DIMENSION(5*nl_a, 9*nl_b, 3*nl_c, 5*nl_d) :: primitives
61418 REAL(dp), DIMENSION(6*15*3*6) :: buffer1, buffer2
61419
61420 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
61421 kmax, s_offset_a1, s_offset_b1, &
61422 s_offset_c1, s_offset_d1
61423
61424 s_offset_a1 = 0
61425 DO ia = 1, nl_a
61426 s_offset_b1 = 0
61427 DO ib = 1, nl_b
61428 s_offset_c1 = 0
61429 DO ic = 1, nl_c
61430 s_offset_d1 = 0
61431 DO id = 1, nl_d
61432 buffer1 = 0.0_dp
61433 imax = 15*3*6
61434 kmax = 6
61435 DO i = 1, imax
61436 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
61437 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
61438 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
61439 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
61440 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
61441 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
61442 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
61443 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
61444 END DO
61445 buffer2 = 0.0_dp
61446 imax = 5*3*6
61447 kmax = 15
61448 DO i = 1, imax
61449 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
61450 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
61451 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
61452 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
61453 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
61454 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
61455 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
61456 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
61457 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
61458 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
61459 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
61460 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
61461 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
61462 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
61463 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
61464 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
61465 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
61466 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
61467 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
61468 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
61469 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
61470 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
61471 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
61472 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
61473 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
61474 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
61475 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
61476 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
61477 END DO
61478 buffer1 = 0.0_dp
61479 imax = 5*9*6
61480 kmax = 3
61481 DO i = 1, imax
61482 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
61483 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
61484 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
61485 END DO
61486 imax = 5*9*3
61487 kmax = 6
61488 i = 0
61489 DO i1 = 1, 3
61490 DO i2 = 1, 9
61491 DO i3 = 1, 5
61492 i = i + 1
61493 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
61494 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
61495 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
61496 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
61497 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
61498 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
61499 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
61500 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
61501 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
61502 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
61503 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
61504 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
61505 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
61506 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
61507 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
61508 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
61509 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
61510 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
61511 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
61512 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
61513 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
61514 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
61515 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
61516 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
61517 END DO
61518 END DO
61519 END DO
61520 s_offset_d1 = s_offset_d1 + 5
61521 END DO
61522 s_offset_c1 = s_offset_c1 + 3
61523 END DO
61524 s_offset_b1 = s_offset_b1 + 9
61525 END DO
61526 s_offset_a1 = s_offset_a1 + 5
61527 END DO
61528 END SUBROUTINE contract_dgpd
61529#endif
61530#if __MAX_CONTR > 4 || __MAX_CONTR == 4
61531! **************************************************************************************************
61532!> \brief ...
61533!> \param work ...
61534!> \param nl_a ...
61535!> \param nl_b ...
61536!> \param nl_c ...
61537!> \param nl_d ...
61538!> \param sphi_a ...
61539!> \param sphi_b ...
61540!> \param sphi_c ...
61541!> \param sphi_d ...
61542!> \param primitives ...
61543!> \param buffer1 ...
61544!> \param buffer2 ...
61545! **************************************************************************************************
61546 SUBROUTINE contract_dgpf(work, &
61547 nl_a, nl_b, nl_c, nl_d, &
61548 sphi_a, sphi_b, sphi_c, sphi_d, &
61549 primitives, &
61550 buffer1, buffer2)
61551 REAL(dp), DIMENSION(6*15*3*10), INTENT(IN) :: work
61552 INTEGER :: nl_a, nl_b, nl_c, nl_d
61553 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
61554 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
61555 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
61556 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
61557 REAL(dp), &
61558 DIMENSION(5*nl_a, 9*nl_b, 3*nl_c, 7*nl_d) :: primitives
61559 REAL(dp), DIMENSION(6*15*3*10) :: buffer1, buffer2
61560
61561 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
61562 kmax, s_offset_a1, s_offset_b1, &
61563 s_offset_c1, s_offset_d1
61564
61565 s_offset_a1 = 0
61566 DO ia = 1, nl_a
61567 s_offset_b1 = 0
61568 DO ib = 1, nl_b
61569 s_offset_c1 = 0
61570 DO ic = 1, nl_c
61571 s_offset_d1 = 0
61572 DO id = 1, nl_d
61573 buffer1 = 0.0_dp
61574 imax = 15*3*10
61575 kmax = 6
61576 DO i = 1, imax
61577 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
61578 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
61579 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
61580 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
61581 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
61582 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
61583 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
61584 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
61585 END DO
61586 buffer2 = 0.0_dp
61587 imax = 5*3*10
61588 kmax = 15
61589 DO i = 1, imax
61590 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
61591 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
61592 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
61593 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
61594 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
61595 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
61596 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
61597 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
61598 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
61599 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
61600 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
61601 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
61602 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
61603 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
61604 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
61605 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
61606 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
61607 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
61608 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
61609 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
61610 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
61611 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
61612 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
61613 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
61614 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
61615 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
61616 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
61617 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
61618 END DO
61619 buffer1 = 0.0_dp
61620 imax = 5*9*10
61621 kmax = 3
61622 DO i = 1, imax
61623 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
61624 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
61625 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
61626 END DO
61627 imax = 5*9*3
61628 kmax = 10
61629 i = 0
61630 DO i1 = 1, 3
61631 DO i2 = 1, 9
61632 DO i3 = 1, 5
61633 i = i + 1
61634 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
61635 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
61636 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
61637 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
61638 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
61639 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
61640 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
61641 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
61642 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
61643 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
61644 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
61645 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
61646 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
61647 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
61648 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
61649 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
61650 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
61651 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
61652 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
61653 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
61654 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
61655 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
61656 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
61657 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
61658 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
61659 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
61660 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
61661 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
61662 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
61663 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
61664 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
61665 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
61666 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
61667 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
61668 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
61669 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
61670 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
61671 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
61672 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
61673 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
61674 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
61675 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
61676 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
61677 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
61678 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
61679 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
61680 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
61681 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
61682 END DO
61683 END DO
61684 END DO
61685 s_offset_d1 = s_offset_d1 + 7
61686 END DO
61687 s_offset_c1 = s_offset_c1 + 3
61688 END DO
61689 s_offset_b1 = s_offset_b1 + 9
61690 END DO
61691 s_offset_a1 = s_offset_a1 + 5
61692 END DO
61693 END SUBROUTINE contract_dgpf
61694#endif
61695#if __MAX_CONTR > 4 || __MAX_CONTR == 4
61696! **************************************************************************************************
61697!> \brief ...
61698!> \param work ...
61699!> \param nl_a ...
61700!> \param nl_b ...
61701!> \param nl_c ...
61702!> \param nl_d ...
61703!> \param sphi_a ...
61704!> \param sphi_b ...
61705!> \param sphi_c ...
61706!> \param sphi_d ...
61707!> \param primitives ...
61708!> \param buffer1 ...
61709!> \param buffer2 ...
61710! **************************************************************************************************
61711 SUBROUTINE contract_dgpg(work, &
61712 nl_a, nl_b, nl_c, nl_d, &
61713 sphi_a, sphi_b, sphi_c, sphi_d, &
61714 primitives, &
61715 buffer1, buffer2)
61716 REAL(dp), DIMENSION(6*15*3*15), INTENT(IN) :: work
61717 INTEGER :: nl_a, nl_b, nl_c, nl_d
61718 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
61719 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
61720 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
61721 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
61722 REAL(dp), &
61723 DIMENSION(5*nl_a, 9*nl_b, 3*nl_c, 9*nl_d) :: primitives
61724 REAL(dp), DIMENSION(6*15*3*15) :: buffer1, buffer2
61725
61726 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
61727 kmax, s_offset_a1, s_offset_b1, &
61728 s_offset_c1, s_offset_d1
61729
61730 s_offset_a1 = 0
61731 DO ia = 1, nl_a
61732 s_offset_b1 = 0
61733 DO ib = 1, nl_b
61734 s_offset_c1 = 0
61735 DO ic = 1, nl_c
61736 s_offset_d1 = 0
61737 DO id = 1, nl_d
61738 buffer1 = 0.0_dp
61739 imax = 15*3*15
61740 kmax = 6
61741 DO i = 1, imax
61742 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
61743 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
61744 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
61745 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
61746 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
61747 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
61748 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
61749 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
61750 END DO
61751 buffer2 = 0.0_dp
61752 imax = 5*3*15
61753 kmax = 15
61754 DO i = 1, imax
61755 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
61756 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
61757 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
61758 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
61759 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
61760 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
61761 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
61762 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
61763 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
61764 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
61765 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
61766 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
61767 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
61768 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
61769 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
61770 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
61771 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
61772 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
61773 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
61774 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
61775 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
61776 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
61777 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
61778 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
61779 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
61780 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
61781 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
61782 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
61783 END DO
61784 buffer1 = 0.0_dp
61785 imax = 5*9*15
61786 kmax = 3
61787 DO i = 1, imax
61788 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
61789 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
61790 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
61791 END DO
61792 imax = 5*9*3
61793 kmax = 15
61794 i = 0
61795 DO i1 = 1, 3
61796 DO i2 = 1, 9
61797 DO i3 = 1, 5
61798 i = i + 1
61799 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
61800 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
61801 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
61802 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
61803 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
61804 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
61805 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
61806 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
61807 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
61808 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
61809 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
61810 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
61811 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
61812 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
61813 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
61814 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
61815 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
61816 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
61817 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
61818 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
61819 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
61820 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
61821 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
61822 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
61823 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
61824 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
61825 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
61826 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
61827 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
61828 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
61829 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
61830 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
61831 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
61832 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
61833 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
61834 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
61835 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
61836 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
61837 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
61838 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
61839 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
61840 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
61841 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
61842 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
61843 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
61844 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
61845 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
61846 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
61847 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
61848 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
61849 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
61850 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
61851 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
61852 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
61853 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
61854 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
61855 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
61856 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
61857 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
61858 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
61859 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
61860 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
61861 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
61862 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
61863 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
61864 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
61865 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
61866 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
61867 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
61868 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
61869 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
61870 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
61871 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
61872 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
61873 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
61874 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
61875 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
61876 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
61877 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
61878 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
61879 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
61880 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
61881 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
61882 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
61883 END DO
61884 END DO
61885 END DO
61886 s_offset_d1 = s_offset_d1 + 9
61887 END DO
61888 s_offset_c1 = s_offset_c1 + 3
61889 END DO
61890 s_offset_b1 = s_offset_b1 + 9
61891 END DO
61892 s_offset_a1 = s_offset_a1 + 5
61893 END DO
61894 END SUBROUTINE contract_dgpg
61895#endif
61896#if __MAX_CONTR > 4 || __MAX_CONTR == 4
61897! **************************************************************************************************
61898!> \brief ...
61899!> \param work ...
61900!> \param nl_a ...
61901!> \param nl_b ...
61902!> \param nl_c ...
61903!> \param nl_d ...
61904!> \param sphi_a ...
61905!> \param sphi_b ...
61906!> \param sphi_c ...
61907!> \param sphi_d ...
61908!> \param primitives ...
61909!> \param buffer1 ...
61910!> \param buffer2 ...
61911! **************************************************************************************************
61912 SUBROUTINE contract_dgds(work, &
61913 nl_a, nl_b, nl_c, nl_d, &
61914 sphi_a, sphi_b, sphi_c, sphi_d, &
61915 primitives, &
61916 buffer1, buffer2)
61917 REAL(dp), DIMENSION(6*15*6*1), INTENT(IN) :: work
61918 INTEGER :: nl_a, nl_b, nl_c, nl_d
61919 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
61920 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
61921 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
61922 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
61923 REAL(dp), &
61924 DIMENSION(5*nl_a, 9*nl_b, 5*nl_c, 1*nl_d) :: primitives
61925 REAL(dp), DIMENSION(6*15*6*1) :: buffer1, buffer2
61926
61927 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
61928 kmax, s_offset_a1, s_offset_b1, &
61929 s_offset_c1, s_offset_d1
61930
61931 s_offset_a1 = 0
61932 DO ia = 1, nl_a
61933 s_offset_b1 = 0
61934 DO ib = 1, nl_b
61935 s_offset_c1 = 0
61936 DO ic = 1, nl_c
61937 s_offset_d1 = 0
61938 DO id = 1, nl_d
61939 buffer1 = 0.0_dp
61940 imax = 15*6*1
61941 kmax = 6
61942 DO i = 1, imax
61943 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
61944 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
61945 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
61946 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
61947 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
61948 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
61949 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
61950 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
61951 END DO
61952 buffer2 = 0.0_dp
61953 imax = 5*6*1
61954 kmax = 15
61955 DO i = 1, imax
61956 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
61957 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
61958 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
61959 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
61960 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
61961 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
61962 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
61963 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
61964 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
61965 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
61966 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
61967 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
61968 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
61969 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
61970 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
61971 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
61972 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
61973 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
61974 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
61975 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
61976 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
61977 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
61978 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
61979 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
61980 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
61981 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
61982 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
61983 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
61984 END DO
61985 buffer1 = 0.0_dp
61986 imax = 5*9*1
61987 kmax = 6
61988 DO i = 1, imax
61989 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
61990 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
61991 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
61992 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
61993 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
61994 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
61995 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
61996 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
61997 END DO
61998 imax = 5*9*5
61999 kmax = 1
62000 i = 0
62001 DO i1 = 1, 5
62002 DO i2 = 1, 9
62003 DO i3 = 1, 5
62004 i = i + 1
62005 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
62006 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
62007 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
62008 END DO
62009 END DO
62010 END DO
62011 s_offset_d1 = s_offset_d1 + 1
62012 END DO
62013 s_offset_c1 = s_offset_c1 + 5
62014 END DO
62015 s_offset_b1 = s_offset_b1 + 9
62016 END DO
62017 s_offset_a1 = s_offset_a1 + 5
62018 END DO
62019 END SUBROUTINE contract_dgds
62020#endif
62021#if __MAX_CONTR > 4 || __MAX_CONTR == 4
62022! **************************************************************************************************
62023!> \brief ...
62024!> \param work ...
62025!> \param nl_a ...
62026!> \param nl_b ...
62027!> \param nl_c ...
62028!> \param nl_d ...
62029!> \param sphi_a ...
62030!> \param sphi_b ...
62031!> \param sphi_c ...
62032!> \param sphi_d ...
62033!> \param primitives ...
62034!> \param buffer1 ...
62035!> \param buffer2 ...
62036! **************************************************************************************************
62037 SUBROUTINE contract_dgdp(work, &
62038 nl_a, nl_b, nl_c, nl_d, &
62039 sphi_a, sphi_b, sphi_c, sphi_d, &
62040 primitives, &
62041 buffer1, buffer2)
62042 REAL(dp), DIMENSION(6*15*6*3), INTENT(IN) :: work
62043 INTEGER :: nl_a, nl_b, nl_c, nl_d
62044 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
62045 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
62046 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
62047 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
62048 REAL(dp), &
62049 DIMENSION(5*nl_a, 9*nl_b, 5*nl_c, 3*nl_d) :: primitives
62050 REAL(dp), DIMENSION(6*15*6*3) :: buffer1, buffer2
62051
62052 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
62053 kmax, s_offset_a1, s_offset_b1, &
62054 s_offset_c1, s_offset_d1
62055
62056 s_offset_a1 = 0
62057 DO ia = 1, nl_a
62058 s_offset_b1 = 0
62059 DO ib = 1, nl_b
62060 s_offset_c1 = 0
62061 DO ic = 1, nl_c
62062 s_offset_d1 = 0
62063 DO id = 1, nl_d
62064 buffer1 = 0.0_dp
62065 imax = 15*6*3
62066 kmax = 6
62067 DO i = 1, imax
62068 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
62069 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
62070 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
62071 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
62072 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
62073 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
62074 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
62075 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
62076 END DO
62077 buffer2 = 0.0_dp
62078 imax = 5*6*3
62079 kmax = 15
62080 DO i = 1, imax
62081 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
62082 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
62083 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
62084 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
62085 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
62086 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
62087 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
62088 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
62089 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
62090 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
62091 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
62092 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
62093 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
62094 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
62095 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
62096 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
62097 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
62098 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
62099 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
62100 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
62101 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
62102 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
62103 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
62104 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
62105 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
62106 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
62107 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
62108 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
62109 END DO
62110 buffer1 = 0.0_dp
62111 imax = 5*9*3
62112 kmax = 6
62113 DO i = 1, imax
62114 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
62115 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
62116 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
62117 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
62118 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
62119 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
62120 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
62121 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
62122 END DO
62123 imax = 5*9*5
62124 kmax = 3
62125 i = 0
62126 DO i1 = 1, 5
62127 DO i2 = 1, 9
62128 DO i3 = 1, 5
62129 i = i + 1
62130 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
62131 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
62132 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
62133 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
62134 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
62135 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
62136 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
62137 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
62138 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
62139 END DO
62140 END DO
62141 END DO
62142 s_offset_d1 = s_offset_d1 + 3
62143 END DO
62144 s_offset_c1 = s_offset_c1 + 5
62145 END DO
62146 s_offset_b1 = s_offset_b1 + 9
62147 END DO
62148 s_offset_a1 = s_offset_a1 + 5
62149 END DO
62150 END SUBROUTINE contract_dgdp
62151#endif
62152#if __MAX_CONTR > 4 || __MAX_CONTR == 4
62153! **************************************************************************************************
62154!> \brief ...
62155!> \param work ...
62156!> \param nl_a ...
62157!> \param nl_b ...
62158!> \param nl_c ...
62159!> \param nl_d ...
62160!> \param sphi_a ...
62161!> \param sphi_b ...
62162!> \param sphi_c ...
62163!> \param sphi_d ...
62164!> \param primitives ...
62165!> \param buffer1 ...
62166!> \param buffer2 ...
62167! **************************************************************************************************
62168 SUBROUTINE contract_dgdd(work, &
62169 nl_a, nl_b, nl_c, nl_d, &
62170 sphi_a, sphi_b, sphi_c, sphi_d, &
62171 primitives, &
62172 buffer1, buffer2)
62173 REAL(dp), DIMENSION(6*15*6*6), INTENT(IN) :: work
62174 INTEGER :: nl_a, nl_b, nl_c, nl_d
62175 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
62176 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
62177 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
62178 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
62179 REAL(dp), &
62180 DIMENSION(5*nl_a, 9*nl_b, 5*nl_c, 5*nl_d) :: primitives
62181 REAL(dp), DIMENSION(6*15*6*6) :: buffer1, buffer2
62182
62183 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
62184 kmax, s_offset_a1, s_offset_b1, &
62185 s_offset_c1, s_offset_d1
62186
62187 s_offset_a1 = 0
62188 DO ia = 1, nl_a
62189 s_offset_b1 = 0
62190 DO ib = 1, nl_b
62191 s_offset_c1 = 0
62192 DO ic = 1, nl_c
62193 s_offset_d1 = 0
62194 DO id = 1, nl_d
62195 buffer1 = 0.0_dp
62196 imax = 15*6*6
62197 kmax = 6
62198 DO i = 1, imax
62199 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
62200 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
62201 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
62202 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
62203 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
62204 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
62205 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
62206 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
62207 END DO
62208 buffer2 = 0.0_dp
62209 imax = 5*6*6
62210 kmax = 15
62211 DO i = 1, imax
62212 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
62213 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
62214 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
62215 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
62216 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
62217 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
62218 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
62219 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
62220 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
62221 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
62222 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
62223 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
62224 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
62225 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
62226 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
62227 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
62228 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
62229 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
62230 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
62231 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
62232 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
62233 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
62234 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
62235 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
62236 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
62237 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
62238 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
62239 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
62240 END DO
62241 buffer1 = 0.0_dp
62242 imax = 5*9*6
62243 kmax = 6
62244 DO i = 1, imax
62245 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
62246 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
62247 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
62248 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
62249 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
62250 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
62251 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
62252 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
62253 END DO
62254 imax = 5*9*5
62255 kmax = 6
62256 i = 0
62257 DO i1 = 1, 5
62258 DO i2 = 1, 9
62259 DO i3 = 1, 5
62260 i = i + 1
62261 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
62262 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
62263 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
62264 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
62265 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
62266 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
62267 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
62268 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
62269 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
62270 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
62271 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
62272 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
62273 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
62274 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
62275 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
62276 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
62277 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
62278 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
62279 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
62280 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
62281 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
62282 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
62283 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
62284 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
62285 END DO
62286 END DO
62287 END DO
62288 s_offset_d1 = s_offset_d1 + 5
62289 END DO
62290 s_offset_c1 = s_offset_c1 + 5
62291 END DO
62292 s_offset_b1 = s_offset_b1 + 9
62293 END DO
62294 s_offset_a1 = s_offset_a1 + 5
62295 END DO
62296 END SUBROUTINE contract_dgdd
62297#endif
62298#if __MAX_CONTR > 4 || __MAX_CONTR == 4
62299! **************************************************************************************************
62300!> \brief ...
62301!> \param work ...
62302!> \param nl_a ...
62303!> \param nl_b ...
62304!> \param nl_c ...
62305!> \param nl_d ...
62306!> \param sphi_a ...
62307!> \param sphi_b ...
62308!> \param sphi_c ...
62309!> \param sphi_d ...
62310!> \param primitives ...
62311!> \param buffer1 ...
62312!> \param buffer2 ...
62313! **************************************************************************************************
62314 SUBROUTINE contract_dgdf(work, &
62315 nl_a, nl_b, nl_c, nl_d, &
62316 sphi_a, sphi_b, sphi_c, sphi_d, &
62317 primitives, &
62318 buffer1, buffer2)
62319 REAL(dp), DIMENSION(6*15*6*10), INTENT(IN) :: work
62320 INTEGER :: nl_a, nl_b, nl_c, nl_d
62321 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
62322 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
62323 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
62324 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
62325 REAL(dp), &
62326 DIMENSION(5*nl_a, 9*nl_b, 5*nl_c, 7*nl_d) :: primitives
62327 REAL(dp), DIMENSION(6*15*6*10) :: buffer1, buffer2
62328
62329 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
62330 kmax, s_offset_a1, s_offset_b1, &
62331 s_offset_c1, s_offset_d1
62332
62333 s_offset_a1 = 0
62334 DO ia = 1, nl_a
62335 s_offset_b1 = 0
62336 DO ib = 1, nl_b
62337 s_offset_c1 = 0
62338 DO ic = 1, nl_c
62339 s_offset_d1 = 0
62340 DO id = 1, nl_d
62341 buffer1 = 0.0_dp
62342 imax = 15*6*10
62343 kmax = 6
62344 DO i = 1, imax
62345 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
62346 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
62347 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
62348 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
62349 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
62350 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
62351 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
62352 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
62353 END DO
62354 buffer2 = 0.0_dp
62355 imax = 5*6*10
62356 kmax = 15
62357 DO i = 1, imax
62358 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
62359 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
62360 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
62361 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
62362 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
62363 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
62364 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
62365 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
62366 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
62367 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
62368 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
62369 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
62370 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
62371 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
62372 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
62373 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
62374 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
62375 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
62376 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
62377 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
62378 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
62379 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
62380 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
62381 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
62382 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
62383 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
62384 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
62385 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
62386 END DO
62387 buffer1 = 0.0_dp
62388 imax = 5*9*10
62389 kmax = 6
62390 DO i = 1, imax
62391 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
62392 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
62393 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
62394 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
62395 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
62396 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
62397 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
62398 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
62399 END DO
62400 imax = 5*9*5
62401 kmax = 10
62402 i = 0
62403 DO i1 = 1, 5
62404 DO i2 = 1, 9
62405 DO i3 = 1, 5
62406 i = i + 1
62407 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
62408 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
62409 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
62410 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
62411 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
62412 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
62413 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
62414 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
62415 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
62416 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
62417 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
62418 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
62419 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
62420 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
62421 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
62422 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
62423 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
62424 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
62425 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
62426 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
62427 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
62428 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
62429 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
62430 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
62431 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
62432 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
62433 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
62434 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
62435 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
62436 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
62437 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
62438 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
62439 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
62440 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
62441 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
62442 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
62443 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
62444 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
62445 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
62446 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
62447 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
62448 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
62449 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
62450 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
62451 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
62452 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
62453 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
62454 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
62455 END DO
62456 END DO
62457 END DO
62458 s_offset_d1 = s_offset_d1 + 7
62459 END DO
62460 s_offset_c1 = s_offset_c1 + 5
62461 END DO
62462 s_offset_b1 = s_offset_b1 + 9
62463 END DO
62464 s_offset_a1 = s_offset_a1 + 5
62465 END DO
62466 END SUBROUTINE contract_dgdf
62467#endif
62468#if __MAX_CONTR > 4 || __MAX_CONTR == 4
62469! **************************************************************************************************
62470!> \brief ...
62471!> \param work ...
62472!> \param nl_a ...
62473!> \param nl_b ...
62474!> \param nl_c ...
62475!> \param nl_d ...
62476!> \param sphi_a ...
62477!> \param sphi_b ...
62478!> \param sphi_c ...
62479!> \param sphi_d ...
62480!> \param primitives ...
62481!> \param buffer1 ...
62482!> \param buffer2 ...
62483! **************************************************************************************************
62484 SUBROUTINE contract_dgdg(work, &
62485 nl_a, nl_b, nl_c, nl_d, &
62486 sphi_a, sphi_b, sphi_c, sphi_d, &
62487 primitives, &
62488 buffer1, buffer2)
62489 REAL(dp), DIMENSION(6*15*6*15), INTENT(IN) :: work
62490 INTEGER :: nl_a, nl_b, nl_c, nl_d
62491 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
62492 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
62493 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
62494 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
62495 REAL(dp), &
62496 DIMENSION(5*nl_a, 9*nl_b, 5*nl_c, 9*nl_d) :: primitives
62497 REAL(dp), DIMENSION(6*15*6*15) :: buffer1, buffer2
62498
62499 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
62500 kmax, s_offset_a1, s_offset_b1, &
62501 s_offset_c1, s_offset_d1
62502
62503 s_offset_a1 = 0
62504 DO ia = 1, nl_a
62505 s_offset_b1 = 0
62506 DO ib = 1, nl_b
62507 s_offset_c1 = 0
62508 DO ic = 1, nl_c
62509 s_offset_d1 = 0
62510 DO id = 1, nl_d
62511 buffer1 = 0.0_dp
62512 imax = 15*6*15
62513 kmax = 6
62514 DO i = 1, imax
62515 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
62516 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
62517 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
62518 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
62519 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
62520 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
62521 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
62522 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
62523 END DO
62524 buffer2 = 0.0_dp
62525 imax = 5*6*15
62526 kmax = 15
62527 DO i = 1, imax
62528 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
62529 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
62530 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
62531 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
62532 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
62533 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
62534 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
62535 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
62536 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
62537 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
62538 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
62539 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
62540 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
62541 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
62542 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
62543 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
62544 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
62545 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
62546 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
62547 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
62548 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
62549 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
62550 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
62551 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
62552 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
62553 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
62554 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
62555 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
62556 END DO
62557 buffer1 = 0.0_dp
62558 imax = 5*9*15
62559 kmax = 6
62560 DO i = 1, imax
62561 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
62562 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
62563 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
62564 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
62565 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
62566 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
62567 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
62568 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
62569 END DO
62570 imax = 5*9*5
62571 kmax = 15
62572 i = 0
62573 DO i1 = 1, 5
62574 DO i2 = 1, 9
62575 DO i3 = 1, 5
62576 i = i + 1
62577 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
62578 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
62579 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
62580 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
62581 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
62582 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
62583 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
62584 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
62585 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
62586 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
62587 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
62588 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
62589 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
62590 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
62591 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
62592 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
62593 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
62594 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
62595 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
62596 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
62597 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
62598 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
62599 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
62600 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
62601 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
62602 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
62603 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
62604 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
62605 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
62606 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
62607 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
62608 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
62609 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
62610 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
62611 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
62612 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
62613 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
62614 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
62615 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
62616 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
62617 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
62618 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
62619 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
62620 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
62621 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
62622 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
62623 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
62624 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
62625 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
62626 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
62627 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
62628 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
62629 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
62630 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
62631 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
62632 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
62633 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
62634 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
62635 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
62636 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
62637 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
62638 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
62639 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
62640 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
62641 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
62642 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
62643 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
62644 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
62645 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
62646 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
62647 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
62648 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
62649 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
62650 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
62651 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
62652 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
62653 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
62654 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
62655 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
62656 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
62657 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
62658 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
62659 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
62660 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
62661 END DO
62662 END DO
62663 END DO
62664 s_offset_d1 = s_offset_d1 + 9
62665 END DO
62666 s_offset_c1 = s_offset_c1 + 5
62667 END DO
62668 s_offset_b1 = s_offset_b1 + 9
62669 END DO
62670 s_offset_a1 = s_offset_a1 + 5
62671 END DO
62672 END SUBROUTINE contract_dgdg
62673#endif
62674#if __MAX_CONTR > 4 || __MAX_CONTR == 4
62675! **************************************************************************************************
62676!> \brief ...
62677!> \param work ...
62678!> \param nl_a ...
62679!> \param nl_b ...
62680!> \param nl_c ...
62681!> \param nl_d ...
62682!> \param sphi_a ...
62683!> \param sphi_b ...
62684!> \param sphi_c ...
62685!> \param sphi_d ...
62686!> \param primitives ...
62687!> \param buffer1 ...
62688!> \param buffer2 ...
62689! **************************************************************************************************
62690 SUBROUTINE contract_dgfs(work, &
62691 nl_a, nl_b, nl_c, nl_d, &
62692 sphi_a, sphi_b, sphi_c, sphi_d, &
62693 primitives, &
62694 buffer1, buffer2)
62695 REAL(dp), DIMENSION(6*15*10*1), INTENT(IN) :: work
62696 INTEGER :: nl_a, nl_b, nl_c, nl_d
62697 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
62698 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
62699 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
62700 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
62701 REAL(dp), &
62702 DIMENSION(5*nl_a, 9*nl_b, 7*nl_c, 1*nl_d) :: primitives
62703 REAL(dp), DIMENSION(6*15*10*1) :: buffer1, buffer2
62704
62705 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
62706 kmax, s_offset_a1, s_offset_b1, &
62707 s_offset_c1, s_offset_d1
62708
62709 s_offset_a1 = 0
62710 DO ia = 1, nl_a
62711 s_offset_b1 = 0
62712 DO ib = 1, nl_b
62713 s_offset_c1 = 0
62714 DO ic = 1, nl_c
62715 s_offset_d1 = 0
62716 DO id = 1, nl_d
62717 buffer1 = 0.0_dp
62718 imax = 15*10*1
62719 kmax = 6
62720 DO i = 1, imax
62721 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
62722 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
62723 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
62724 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
62725 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
62726 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
62727 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
62728 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
62729 END DO
62730 buffer2 = 0.0_dp
62731 imax = 5*10*1
62732 kmax = 15
62733 DO i = 1, imax
62734 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
62735 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
62736 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
62737 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
62738 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
62739 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
62740 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
62741 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
62742 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
62743 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
62744 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
62745 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
62746 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
62747 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
62748 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
62749 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
62750 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
62751 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
62752 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
62753 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
62754 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
62755 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
62756 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
62757 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
62758 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
62759 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
62760 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
62761 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
62762 END DO
62763 buffer1 = 0.0_dp
62764 imax = 5*9*1
62765 kmax = 10
62766 DO i = 1, imax
62767 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
62768 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
62769 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
62770 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
62771 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
62772 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
62773 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
62774 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
62775 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
62776 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
62777 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
62778 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
62779 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
62780 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
62781 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
62782 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
62783 END DO
62784 imax = 5*9*7
62785 kmax = 1
62786 i = 0
62787 DO i1 = 1, 7
62788 DO i2 = 1, 9
62789 DO i3 = 1, 5
62790 i = i + 1
62791 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
62792 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
62793 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
62794 END DO
62795 END DO
62796 END DO
62797 s_offset_d1 = s_offset_d1 + 1
62798 END DO
62799 s_offset_c1 = s_offset_c1 + 7
62800 END DO
62801 s_offset_b1 = s_offset_b1 + 9
62802 END DO
62803 s_offset_a1 = s_offset_a1 + 5
62804 END DO
62805 END SUBROUTINE contract_dgfs
62806#endif
62807#if __MAX_CONTR > 4 || __MAX_CONTR == 4
62808! **************************************************************************************************
62809!> \brief ...
62810!> \param work ...
62811!> \param nl_a ...
62812!> \param nl_b ...
62813!> \param nl_c ...
62814!> \param nl_d ...
62815!> \param sphi_a ...
62816!> \param sphi_b ...
62817!> \param sphi_c ...
62818!> \param sphi_d ...
62819!> \param primitives ...
62820!> \param buffer1 ...
62821!> \param buffer2 ...
62822! **************************************************************************************************
62823 SUBROUTINE contract_dgfp(work, &
62824 nl_a, nl_b, nl_c, nl_d, &
62825 sphi_a, sphi_b, sphi_c, sphi_d, &
62826 primitives, &
62827 buffer1, buffer2)
62828 REAL(dp), DIMENSION(6*15*10*3), INTENT(IN) :: work
62829 INTEGER :: nl_a, nl_b, nl_c, nl_d
62830 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
62831 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
62832 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
62833 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
62834 REAL(dp), &
62835 DIMENSION(5*nl_a, 9*nl_b, 7*nl_c, 3*nl_d) :: primitives
62836 REAL(dp), DIMENSION(6*15*10*3) :: buffer1, buffer2
62837
62838 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
62839 kmax, s_offset_a1, s_offset_b1, &
62840 s_offset_c1, s_offset_d1
62841
62842 s_offset_a1 = 0
62843 DO ia = 1, nl_a
62844 s_offset_b1 = 0
62845 DO ib = 1, nl_b
62846 s_offset_c1 = 0
62847 DO ic = 1, nl_c
62848 s_offset_d1 = 0
62849 DO id = 1, nl_d
62850 buffer1 = 0.0_dp
62851 imax = 15*10*3
62852 kmax = 6
62853 DO i = 1, imax
62854 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
62855 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
62856 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
62857 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
62858 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
62859 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
62860 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
62861 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
62862 END DO
62863 buffer2 = 0.0_dp
62864 imax = 5*10*3
62865 kmax = 15
62866 DO i = 1, imax
62867 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
62868 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
62869 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
62870 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
62871 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
62872 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
62873 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
62874 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
62875 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
62876 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
62877 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
62878 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
62879 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
62880 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
62881 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
62882 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
62883 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
62884 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
62885 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
62886 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
62887 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
62888 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
62889 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
62890 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
62891 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
62892 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
62893 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
62894 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
62895 END DO
62896 buffer1 = 0.0_dp
62897 imax = 5*9*3
62898 kmax = 10
62899 DO i = 1, imax
62900 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
62901 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
62902 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
62903 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
62904 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
62905 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
62906 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
62907 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
62908 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
62909 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
62910 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
62911 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
62912 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
62913 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
62914 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
62915 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
62916 END DO
62917 imax = 5*9*7
62918 kmax = 3
62919 i = 0
62920 DO i1 = 1, 7
62921 DO i2 = 1, 9
62922 DO i3 = 1, 5
62923 i = i + 1
62924 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
62925 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
62926 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
62927 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
62928 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
62929 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
62930 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
62931 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
62932 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
62933 END DO
62934 END DO
62935 END DO
62936 s_offset_d1 = s_offset_d1 + 3
62937 END DO
62938 s_offset_c1 = s_offset_c1 + 7
62939 END DO
62940 s_offset_b1 = s_offset_b1 + 9
62941 END DO
62942 s_offset_a1 = s_offset_a1 + 5
62943 END DO
62944 END SUBROUTINE contract_dgfp
62945#endif
62946#if __MAX_CONTR > 4 || __MAX_CONTR == 4
62947! **************************************************************************************************
62948!> \brief ...
62949!> \param work ...
62950!> \param nl_a ...
62951!> \param nl_b ...
62952!> \param nl_c ...
62953!> \param nl_d ...
62954!> \param sphi_a ...
62955!> \param sphi_b ...
62956!> \param sphi_c ...
62957!> \param sphi_d ...
62958!> \param primitives ...
62959!> \param buffer1 ...
62960!> \param buffer2 ...
62961! **************************************************************************************************
62962 SUBROUTINE contract_dgfd(work, &
62963 nl_a, nl_b, nl_c, nl_d, &
62964 sphi_a, sphi_b, sphi_c, sphi_d, &
62965 primitives, &
62966 buffer1, buffer2)
62967 REAL(dp), DIMENSION(6*15*10*6), INTENT(IN) :: work
62968 INTEGER :: nl_a, nl_b, nl_c, nl_d
62969 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
62970 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
62971 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
62972 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
62973 REAL(dp), &
62974 DIMENSION(5*nl_a, 9*nl_b, 7*nl_c, 5*nl_d) :: primitives
62975 REAL(dp), DIMENSION(6*15*10*6) :: buffer1, buffer2
62976
62977 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
62978 kmax, s_offset_a1, s_offset_b1, &
62979 s_offset_c1, s_offset_d1
62980
62981 s_offset_a1 = 0
62982 DO ia = 1, nl_a
62983 s_offset_b1 = 0
62984 DO ib = 1, nl_b
62985 s_offset_c1 = 0
62986 DO ic = 1, nl_c
62987 s_offset_d1 = 0
62988 DO id = 1, nl_d
62989 buffer1 = 0.0_dp
62990 imax = 15*10*6
62991 kmax = 6
62992 DO i = 1, imax
62993 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
62994 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
62995 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
62996 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
62997 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
62998 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
62999 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
63000 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
63001 END DO
63002 buffer2 = 0.0_dp
63003 imax = 5*10*6
63004 kmax = 15
63005 DO i = 1, imax
63006 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
63007 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
63008 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
63009 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
63010 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
63011 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
63012 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
63013 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
63014 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
63015 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
63016 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
63017 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
63018 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
63019 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
63020 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
63021 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
63022 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
63023 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
63024 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
63025 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
63026 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
63027 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
63028 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
63029 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
63030 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
63031 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
63032 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
63033 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
63034 END DO
63035 buffer1 = 0.0_dp
63036 imax = 5*9*6
63037 kmax = 10
63038 DO i = 1, imax
63039 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
63040 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
63041 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
63042 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
63043 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
63044 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
63045 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
63046 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
63047 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
63048 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
63049 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
63050 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
63051 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
63052 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
63053 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
63054 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
63055 END DO
63056 imax = 5*9*7
63057 kmax = 6
63058 i = 0
63059 DO i1 = 1, 7
63060 DO i2 = 1, 9
63061 DO i3 = 1, 5
63062 i = i + 1
63063 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
63064 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
63065 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
63066 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
63067 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
63068 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
63069 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
63070 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
63071 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
63072 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
63073 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
63074 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
63075 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
63076 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
63077 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
63078 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
63079 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
63080 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
63081 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
63082 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
63083 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
63084 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
63085 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
63086 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
63087 END DO
63088 END DO
63089 END DO
63090 s_offset_d1 = s_offset_d1 + 5
63091 END DO
63092 s_offset_c1 = s_offset_c1 + 7
63093 END DO
63094 s_offset_b1 = s_offset_b1 + 9
63095 END DO
63096 s_offset_a1 = s_offset_a1 + 5
63097 END DO
63098 END SUBROUTINE contract_dgfd
63099#endif
63100#if __MAX_CONTR > 4 || __MAX_CONTR == 4
63101! **************************************************************************************************
63102!> \brief ...
63103!> \param work ...
63104!> \param nl_a ...
63105!> \param nl_b ...
63106!> \param nl_c ...
63107!> \param nl_d ...
63108!> \param sphi_a ...
63109!> \param sphi_b ...
63110!> \param sphi_c ...
63111!> \param sphi_d ...
63112!> \param primitives ...
63113!> \param buffer1 ...
63114!> \param buffer2 ...
63115! **************************************************************************************************
63116 SUBROUTINE contract_dgff(work, &
63117 nl_a, nl_b, nl_c, nl_d, &
63118 sphi_a, sphi_b, sphi_c, sphi_d, &
63119 primitives, &
63120 buffer1, buffer2)
63121 REAL(dp), DIMENSION(6*15*10*10), INTENT(IN) :: work
63122 INTEGER :: nl_a, nl_b, nl_c, nl_d
63123 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
63124 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
63125 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
63126 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
63127 REAL(dp), &
63128 DIMENSION(5*nl_a, 9*nl_b, 7*nl_c, 7*nl_d) :: primitives
63129 REAL(dp), DIMENSION(6*15*10*10) :: buffer1, buffer2
63130
63131 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
63132 kmax, s_offset_a1, s_offset_b1, &
63133 s_offset_c1, s_offset_d1
63134
63135 s_offset_a1 = 0
63136 DO ia = 1, nl_a
63137 s_offset_b1 = 0
63138 DO ib = 1, nl_b
63139 s_offset_c1 = 0
63140 DO ic = 1, nl_c
63141 s_offset_d1 = 0
63142 DO id = 1, nl_d
63143 buffer1 = 0.0_dp
63144 imax = 15*10*10
63145 kmax = 6
63146 DO i = 1, imax
63147 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
63148 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
63149 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
63150 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
63151 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
63152 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
63153 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
63154 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
63155 END DO
63156 buffer2 = 0.0_dp
63157 imax = 5*10*10
63158 kmax = 15
63159 DO i = 1, imax
63160 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
63161 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
63162 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
63163 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
63164 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
63165 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
63166 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
63167 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
63168 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
63169 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
63170 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
63171 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
63172 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
63173 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
63174 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
63175 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
63176 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
63177 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
63178 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
63179 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
63180 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
63181 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
63182 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
63183 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
63184 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
63185 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
63186 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
63187 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
63188 END DO
63189 buffer1 = 0.0_dp
63190 imax = 5*9*10
63191 kmax = 10
63192 DO i = 1, imax
63193 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
63194 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
63195 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
63196 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
63197 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
63198 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
63199 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
63200 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
63201 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
63202 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
63203 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
63204 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
63205 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
63206 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
63207 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
63208 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
63209 END DO
63210 imax = 5*9*7
63211 kmax = 10
63212 i = 0
63213 DO i1 = 1, 7
63214 DO i2 = 1, 9
63215 DO i3 = 1, 5
63216 i = i + 1
63217 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
63218 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
63219 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
63220 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
63221 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
63222 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
63223 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
63224 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
63225 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
63226 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
63227 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
63228 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
63229 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
63230 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
63231 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
63232 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
63233 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
63234 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
63235 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
63236 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
63237 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
63238 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
63239 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
63240 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
63241 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
63242 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
63243 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
63244 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
63245 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
63246 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
63247 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
63248 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
63249 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
63250 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
63251 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
63252 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
63253 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
63254 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
63255 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
63256 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
63257 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
63258 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
63259 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
63260 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
63261 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
63262 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
63263 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
63264 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
63265 END DO
63266 END DO
63267 END DO
63268 s_offset_d1 = s_offset_d1 + 7
63269 END DO
63270 s_offset_c1 = s_offset_c1 + 7
63271 END DO
63272 s_offset_b1 = s_offset_b1 + 9
63273 END DO
63274 s_offset_a1 = s_offset_a1 + 5
63275 END DO
63276 END SUBROUTINE contract_dgff
63277#endif
63278#if __MAX_CONTR > 4 || __MAX_CONTR == 4
63279! **************************************************************************************************
63280!> \brief ...
63281!> \param work ...
63282!> \param nl_a ...
63283!> \param nl_b ...
63284!> \param nl_c ...
63285!> \param nl_d ...
63286!> \param sphi_a ...
63287!> \param sphi_b ...
63288!> \param sphi_c ...
63289!> \param sphi_d ...
63290!> \param primitives ...
63291!> \param buffer1 ...
63292!> \param buffer2 ...
63293! **************************************************************************************************
63294 SUBROUTINE contract_dgfg(work, &
63295 nl_a, nl_b, nl_c, nl_d, &
63296 sphi_a, sphi_b, sphi_c, sphi_d, &
63297 primitives, &
63298 buffer1, buffer2)
63299 REAL(dp), DIMENSION(6*15*10*15), INTENT(IN) :: work
63300 INTEGER :: nl_a, nl_b, nl_c, nl_d
63301 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
63302 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
63303 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
63304 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
63305 REAL(dp), &
63306 DIMENSION(5*nl_a, 9*nl_b, 7*nl_c, 9*nl_d) :: primitives
63307 REAL(dp), DIMENSION(6*15*10*15) :: buffer1, buffer2
63308
63309 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
63310 kmax, s_offset_a1, s_offset_b1, &
63311 s_offset_c1, s_offset_d1
63312
63313 s_offset_a1 = 0
63314 DO ia = 1, nl_a
63315 s_offset_b1 = 0
63316 DO ib = 1, nl_b
63317 s_offset_c1 = 0
63318 DO ic = 1, nl_c
63319 s_offset_d1 = 0
63320 DO id = 1, nl_d
63321 buffer1 = 0.0_dp
63322 imax = 15*10*15
63323 kmax = 6
63324 DO i = 1, imax
63325 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
63326 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
63327 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
63328 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
63329 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
63330 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
63331 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
63332 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
63333 END DO
63334 buffer2 = 0.0_dp
63335 imax = 5*10*15
63336 kmax = 15
63337 DO i = 1, imax
63338 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
63339 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
63340 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
63341 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
63342 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
63343 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
63344 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
63345 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
63346 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
63347 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
63348 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
63349 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
63350 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
63351 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
63352 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
63353 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
63354 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
63355 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
63356 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
63357 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
63358 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
63359 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
63360 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
63361 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
63362 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
63363 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
63364 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
63365 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
63366 END DO
63367 buffer1 = 0.0_dp
63368 imax = 5*9*15
63369 kmax = 10
63370 DO i = 1, imax
63371 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
63372 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
63373 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
63374 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
63375 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
63376 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
63377 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
63378 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
63379 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
63380 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
63381 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
63382 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
63383 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
63384 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
63385 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
63386 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
63387 END DO
63388 imax = 5*9*7
63389 kmax = 15
63390 i = 0
63391 DO i1 = 1, 7
63392 DO i2 = 1, 9
63393 DO i3 = 1, 5
63394 i = i + 1
63395 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
63396 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
63397 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
63398 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
63399 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
63400 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
63401 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
63402 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
63403 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
63404 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
63405 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
63406 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
63407 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
63408 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
63409 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
63410 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
63411 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
63412 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
63413 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
63414 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
63415 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
63416 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
63417 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
63418 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
63419 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
63420 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
63421 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
63422 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
63423 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
63424 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
63425 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
63426 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
63427 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
63428 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
63429 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
63430 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
63431 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
63432 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
63433 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
63434 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
63435 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
63436 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
63437 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
63438 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
63439 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
63440 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
63441 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
63442 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
63443 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
63444 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
63445 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
63446 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
63447 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
63448 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
63449 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
63450 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
63451 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
63452 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
63453 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
63454 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
63455 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
63456 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
63457 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
63458 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
63459 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
63460 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
63461 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
63462 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
63463 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
63464 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
63465 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
63466 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
63467 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
63468 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
63469 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
63470 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
63471 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
63472 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
63473 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
63474 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
63475 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
63476 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
63477 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
63478 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
63479 END DO
63480 END DO
63481 END DO
63482 s_offset_d1 = s_offset_d1 + 9
63483 END DO
63484 s_offset_c1 = s_offset_c1 + 7
63485 END DO
63486 s_offset_b1 = s_offset_b1 + 9
63487 END DO
63488 s_offset_a1 = s_offset_a1 + 5
63489 END DO
63490 END SUBROUTINE contract_dgfg
63491#endif
63492#if __MAX_CONTR > 4 || __MAX_CONTR == 4
63493! **************************************************************************************************
63494!> \brief ...
63495!> \param work ...
63496!> \param nl_a ...
63497!> \param nl_b ...
63498!> \param nl_c ...
63499!> \param nl_d ...
63500!> \param sphi_a ...
63501!> \param sphi_b ...
63502!> \param sphi_c ...
63503!> \param sphi_d ...
63504!> \param primitives ...
63505!> \param buffer1 ...
63506!> \param buffer2 ...
63507! **************************************************************************************************
63508 SUBROUTINE contract_dggs(work, &
63509 nl_a, nl_b, nl_c, nl_d, &
63510 sphi_a, sphi_b, sphi_c, sphi_d, &
63511 primitives, &
63512 buffer1, buffer2)
63513 REAL(dp), DIMENSION(6*15*15*1), INTENT(IN) :: work
63514 INTEGER :: nl_a, nl_b, nl_c, nl_d
63515 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
63516 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
63517 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
63518 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
63519 REAL(dp), &
63520 DIMENSION(5*nl_a, 9*nl_b, 9*nl_c, 1*nl_d) :: primitives
63521 REAL(dp), DIMENSION(6*15*15*1) :: buffer1, buffer2
63522
63523 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
63524 kmax, s_offset_a1, s_offset_b1, &
63525 s_offset_c1, s_offset_d1
63526
63527 s_offset_a1 = 0
63528 DO ia = 1, nl_a
63529 s_offset_b1 = 0
63530 DO ib = 1, nl_b
63531 s_offset_c1 = 0
63532 DO ic = 1, nl_c
63533 s_offset_d1 = 0
63534 DO id = 1, nl_d
63535 buffer1 = 0.0_dp
63536 imax = 15*15*1
63537 kmax = 6
63538 DO i = 1, imax
63539 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
63540 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
63541 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
63542 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
63543 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
63544 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
63545 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
63546 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
63547 END DO
63548 buffer2 = 0.0_dp
63549 imax = 5*15*1
63550 kmax = 15
63551 DO i = 1, imax
63552 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
63553 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
63554 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
63555 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
63556 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
63557 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
63558 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
63559 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
63560 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
63561 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
63562 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
63563 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
63564 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
63565 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
63566 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
63567 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
63568 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
63569 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
63570 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
63571 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
63572 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
63573 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
63574 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
63575 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
63576 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
63577 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
63578 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
63579 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
63580 END DO
63581 buffer1 = 0.0_dp
63582 imax = 5*9*1
63583 kmax = 15
63584 DO i = 1, imax
63585 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
63586 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
63587 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
63588 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
63589 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
63590 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
63591 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
63592 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
63593 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
63594 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
63595 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
63596 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
63597 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
63598 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
63599 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
63600 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
63601 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
63602 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
63603 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
63604 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
63605 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
63606 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
63607 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
63608 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
63609 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
63610 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
63611 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
63612 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
63613 END DO
63614 imax = 5*9*9
63615 kmax = 1
63616 i = 0
63617 DO i1 = 1, 9
63618 DO i2 = 1, 9
63619 DO i3 = 1, 5
63620 i = i + 1
63621 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
63622 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
63623 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
63624 END DO
63625 END DO
63626 END DO
63627 s_offset_d1 = s_offset_d1 + 1
63628 END DO
63629 s_offset_c1 = s_offset_c1 + 9
63630 END DO
63631 s_offset_b1 = s_offset_b1 + 9
63632 END DO
63633 s_offset_a1 = s_offset_a1 + 5
63634 END DO
63635 END SUBROUTINE contract_dggs
63636#endif
63637#if __MAX_CONTR > 4 || __MAX_CONTR == 4
63638! **************************************************************************************************
63639!> \brief ...
63640!> \param work ...
63641!> \param nl_a ...
63642!> \param nl_b ...
63643!> \param nl_c ...
63644!> \param nl_d ...
63645!> \param sphi_a ...
63646!> \param sphi_b ...
63647!> \param sphi_c ...
63648!> \param sphi_d ...
63649!> \param primitives ...
63650!> \param buffer1 ...
63651!> \param buffer2 ...
63652! **************************************************************************************************
63653 SUBROUTINE contract_dggp(work, &
63654 nl_a, nl_b, nl_c, nl_d, &
63655 sphi_a, sphi_b, sphi_c, sphi_d, &
63656 primitives, &
63657 buffer1, buffer2)
63658 REAL(dp), DIMENSION(6*15*15*3), INTENT(IN) :: work
63659 INTEGER :: nl_a, nl_b, nl_c, nl_d
63660 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
63661 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
63662 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
63663 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
63664 REAL(dp), &
63665 DIMENSION(5*nl_a, 9*nl_b, 9*nl_c, 3*nl_d) :: primitives
63666 REAL(dp), DIMENSION(6*15*15*3) :: buffer1, buffer2
63667
63668 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
63669 kmax, s_offset_a1, s_offset_b1, &
63670 s_offset_c1, s_offset_d1
63671
63672 s_offset_a1 = 0
63673 DO ia = 1, nl_a
63674 s_offset_b1 = 0
63675 DO ib = 1, nl_b
63676 s_offset_c1 = 0
63677 DO ic = 1, nl_c
63678 s_offset_d1 = 0
63679 DO id = 1, nl_d
63680 buffer1 = 0.0_dp
63681 imax = 15*15*3
63682 kmax = 6
63683 DO i = 1, imax
63684 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
63685 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
63686 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
63687 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
63688 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
63689 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
63690 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
63691 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
63692 END DO
63693 buffer2 = 0.0_dp
63694 imax = 5*15*3
63695 kmax = 15
63696 DO i = 1, imax
63697 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
63698 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
63699 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
63700 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
63701 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
63702 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
63703 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
63704 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
63705 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
63706 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
63707 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
63708 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
63709 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
63710 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
63711 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
63712 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
63713 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
63714 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
63715 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
63716 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
63717 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
63718 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
63719 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
63720 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
63721 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
63722 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
63723 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
63724 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
63725 END DO
63726 buffer1 = 0.0_dp
63727 imax = 5*9*3
63728 kmax = 15
63729 DO i = 1, imax
63730 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
63731 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
63732 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
63733 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
63734 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
63735 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
63736 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
63737 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
63738 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
63739 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
63740 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
63741 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
63742 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
63743 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
63744 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
63745 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
63746 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
63747 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
63748 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
63749 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
63750 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
63751 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
63752 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
63753 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
63754 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
63755 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
63756 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
63757 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
63758 END DO
63759 imax = 5*9*9
63760 kmax = 3
63761 i = 0
63762 DO i1 = 1, 9
63763 DO i2 = 1, 9
63764 DO i3 = 1, 5
63765 i = i + 1
63766 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
63767 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
63768 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
63769 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
63770 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
63771 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
63772 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
63773 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
63774 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
63775 END DO
63776 END DO
63777 END DO
63778 s_offset_d1 = s_offset_d1 + 3
63779 END DO
63780 s_offset_c1 = s_offset_c1 + 9
63781 END DO
63782 s_offset_b1 = s_offset_b1 + 9
63783 END DO
63784 s_offset_a1 = s_offset_a1 + 5
63785 END DO
63786 END SUBROUTINE contract_dggp
63787#endif
63788#if __MAX_CONTR > 4 || __MAX_CONTR == 4
63789! **************************************************************************************************
63790!> \brief ...
63791!> \param work ...
63792!> \param nl_a ...
63793!> \param nl_b ...
63794!> \param nl_c ...
63795!> \param nl_d ...
63796!> \param sphi_a ...
63797!> \param sphi_b ...
63798!> \param sphi_c ...
63799!> \param sphi_d ...
63800!> \param primitives ...
63801!> \param buffer1 ...
63802!> \param buffer2 ...
63803! **************************************************************************************************
63804 SUBROUTINE contract_dggd(work, &
63805 nl_a, nl_b, nl_c, nl_d, &
63806 sphi_a, sphi_b, sphi_c, sphi_d, &
63807 primitives, &
63808 buffer1, buffer2)
63809 REAL(dp), DIMENSION(6*15*15*6), INTENT(IN) :: work
63810 INTEGER :: nl_a, nl_b, nl_c, nl_d
63811 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
63812 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
63813 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
63814 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
63815 REAL(dp), &
63816 DIMENSION(5*nl_a, 9*nl_b, 9*nl_c, 5*nl_d) :: primitives
63817 REAL(dp), DIMENSION(6*15*15*6) :: buffer1, buffer2
63818
63819 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
63820 kmax, s_offset_a1, s_offset_b1, &
63821 s_offset_c1, s_offset_d1
63822
63823 s_offset_a1 = 0
63824 DO ia = 1, nl_a
63825 s_offset_b1 = 0
63826 DO ib = 1, nl_b
63827 s_offset_c1 = 0
63828 DO ic = 1, nl_c
63829 s_offset_d1 = 0
63830 DO id = 1, nl_d
63831 buffer1 = 0.0_dp
63832 imax = 15*15*6
63833 kmax = 6
63834 DO i = 1, imax
63835 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
63836 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
63837 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
63838 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
63839 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
63840 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
63841 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
63842 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
63843 END DO
63844 buffer2 = 0.0_dp
63845 imax = 5*15*6
63846 kmax = 15
63847 DO i = 1, imax
63848 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
63849 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
63850 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
63851 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
63852 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
63853 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
63854 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
63855 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
63856 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
63857 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
63858 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
63859 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
63860 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
63861 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
63862 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
63863 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
63864 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
63865 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
63866 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
63867 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
63868 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
63869 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
63870 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
63871 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
63872 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
63873 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
63874 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
63875 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
63876 END DO
63877 buffer1 = 0.0_dp
63878 imax = 5*9*6
63879 kmax = 15
63880 DO i = 1, imax
63881 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
63882 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
63883 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
63884 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
63885 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
63886 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
63887 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
63888 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
63889 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
63890 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
63891 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
63892 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
63893 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
63894 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
63895 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
63896 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
63897 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
63898 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
63899 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
63900 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
63901 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
63902 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
63903 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
63904 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
63905 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
63906 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
63907 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
63908 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
63909 END DO
63910 imax = 5*9*9
63911 kmax = 6
63912 i = 0
63913 DO i1 = 1, 9
63914 DO i2 = 1, 9
63915 DO i3 = 1, 5
63916 i = i + 1
63917 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
63918 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
63919 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
63920 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
63921 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
63922 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
63923 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
63924 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
63925 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
63926 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
63927 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
63928 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
63929 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
63930 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
63931 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
63932 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
63933 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
63934 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
63935 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
63936 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
63937 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
63938 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
63939 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
63940 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
63941 END DO
63942 END DO
63943 END DO
63944 s_offset_d1 = s_offset_d1 + 5
63945 END DO
63946 s_offset_c1 = s_offset_c1 + 9
63947 END DO
63948 s_offset_b1 = s_offset_b1 + 9
63949 END DO
63950 s_offset_a1 = s_offset_a1 + 5
63951 END DO
63952 END SUBROUTINE contract_dggd
63953#endif
63954#if __MAX_CONTR > 4 || __MAX_CONTR == 4
63955! **************************************************************************************************
63956!> \brief ...
63957!> \param work ...
63958!> \param nl_a ...
63959!> \param nl_b ...
63960!> \param nl_c ...
63961!> \param nl_d ...
63962!> \param sphi_a ...
63963!> \param sphi_b ...
63964!> \param sphi_c ...
63965!> \param sphi_d ...
63966!> \param primitives ...
63967!> \param buffer1 ...
63968!> \param buffer2 ...
63969! **************************************************************************************************
63970 SUBROUTINE contract_dggf(work, &
63971 nl_a, nl_b, nl_c, nl_d, &
63972 sphi_a, sphi_b, sphi_c, sphi_d, &
63973 primitives, &
63974 buffer1, buffer2)
63975 REAL(dp), DIMENSION(6*15*15*10), INTENT(IN) :: work
63976 INTEGER :: nl_a, nl_b, nl_c, nl_d
63977 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
63978 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
63979 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
63980 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
63981 REAL(dp), &
63982 DIMENSION(5*nl_a, 9*nl_b, 9*nl_c, 7*nl_d) :: primitives
63983 REAL(dp), DIMENSION(6*15*15*10) :: buffer1, buffer2
63984
63985 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
63986 kmax, s_offset_a1, s_offset_b1, &
63987 s_offset_c1, s_offset_d1
63988
63989 s_offset_a1 = 0
63990 DO ia = 1, nl_a
63991 s_offset_b1 = 0
63992 DO ib = 1, nl_b
63993 s_offset_c1 = 0
63994 DO ic = 1, nl_c
63995 s_offset_d1 = 0
63996 DO id = 1, nl_d
63997 buffer1 = 0.0_dp
63998 imax = 15*15*10
63999 kmax = 6
64000 DO i = 1, imax
64001 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
64002 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
64003 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
64004 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
64005 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
64006 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
64007 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
64008 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
64009 END DO
64010 buffer2 = 0.0_dp
64011 imax = 5*15*10
64012 kmax = 15
64013 DO i = 1, imax
64014 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
64015 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
64016 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
64017 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
64018 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
64019 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
64020 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
64021 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
64022 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
64023 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
64024 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
64025 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
64026 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
64027 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
64028 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
64029 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
64030 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
64031 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
64032 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
64033 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
64034 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
64035 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
64036 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
64037 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
64038 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
64039 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
64040 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
64041 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
64042 END DO
64043 buffer1 = 0.0_dp
64044 imax = 5*9*10
64045 kmax = 15
64046 DO i = 1, imax
64047 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
64048 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
64049 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
64050 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
64051 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
64052 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
64053 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
64054 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
64055 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
64056 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
64057 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
64058 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
64059 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
64060 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
64061 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
64062 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
64063 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
64064 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
64065 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
64066 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
64067 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
64068 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
64069 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
64070 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
64071 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
64072 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
64073 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
64074 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
64075 END DO
64076 imax = 5*9*9
64077 kmax = 10
64078 i = 0
64079 DO i1 = 1, 9
64080 DO i2 = 1, 9
64081 DO i3 = 1, 5
64082 i = i + 1
64083 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
64084 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
64085 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
64086 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
64087 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
64088 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
64089 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
64090 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
64091 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
64092 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
64093 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
64094 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
64095 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
64096 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
64097 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
64098 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
64099 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
64100 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
64101 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
64102 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
64103 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
64104 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
64105 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
64106 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
64107 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
64108 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
64109 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
64110 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
64111 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
64112 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
64113 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
64114 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
64115 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
64116 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
64117 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
64118 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
64119 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
64120 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
64121 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
64122 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
64123 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
64124 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
64125 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
64126 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
64127 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
64128 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
64129 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
64130 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
64131 END DO
64132 END DO
64133 END DO
64134 s_offset_d1 = s_offset_d1 + 7
64135 END DO
64136 s_offset_c1 = s_offset_c1 + 9
64137 END DO
64138 s_offset_b1 = s_offset_b1 + 9
64139 END DO
64140 s_offset_a1 = s_offset_a1 + 5
64141 END DO
64142 END SUBROUTINE contract_dggf
64143#endif
64144#if __MAX_CONTR > 4 || __MAX_CONTR == 4
64145! **************************************************************************************************
64146!> \brief ...
64147!> \param work ...
64148!> \param nl_a ...
64149!> \param nl_b ...
64150!> \param nl_c ...
64151!> \param nl_d ...
64152!> \param sphi_a ...
64153!> \param sphi_b ...
64154!> \param sphi_c ...
64155!> \param sphi_d ...
64156!> \param primitives ...
64157!> \param buffer1 ...
64158!> \param buffer2 ...
64159! **************************************************************************************************
64160 SUBROUTINE contract_dggg(work, &
64161 nl_a, nl_b, nl_c, nl_d, &
64162 sphi_a, sphi_b, sphi_c, sphi_d, &
64163 primitives, &
64164 buffer1, buffer2)
64165 REAL(dp), DIMENSION(6*15*15*15), INTENT(IN) :: work
64166 INTEGER :: nl_a, nl_b, nl_c, nl_d
64167 REAL(dp), DIMENSION(6, 5*nl_a), INTENT(IN) :: sphi_a
64168 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
64169 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
64170 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
64171 REAL(dp), &
64172 DIMENSION(5*nl_a, 9*nl_b, 9*nl_c, 9*nl_d) :: primitives
64173 REAL(dp), DIMENSION(6*15*15*15) :: buffer1, buffer2
64174
64175 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
64176 kmax, s_offset_a1, s_offset_b1, &
64177 s_offset_c1, s_offset_d1
64178
64179 s_offset_a1 = 0
64180 DO ia = 1, nl_a
64181 s_offset_b1 = 0
64182 DO ib = 1, nl_b
64183 s_offset_c1 = 0
64184 DO ic = 1, nl_c
64185 s_offset_d1 = 0
64186 DO id = 1, nl_d
64187 buffer1 = 0.0_dp
64188 imax = 15*15*15
64189 kmax = 6
64190 DO i = 1, imax
64191 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
64192 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
64193 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
64194 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
64195 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
64196 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
64197 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
64198 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
64199 END DO
64200 buffer2 = 0.0_dp
64201 imax = 5*15*15
64202 kmax = 15
64203 DO i = 1, imax
64204 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
64205 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
64206 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
64207 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
64208 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
64209 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
64210 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
64211 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
64212 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
64213 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
64214 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
64215 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
64216 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
64217 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
64218 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
64219 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
64220 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
64221 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
64222 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
64223 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
64224 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
64225 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
64226 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
64227 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
64228 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
64229 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
64230 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
64231 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
64232 END DO
64233 buffer1 = 0.0_dp
64234 imax = 5*9*15
64235 kmax = 15
64236 DO i = 1, imax
64237 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
64238 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
64239 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
64240 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
64241 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
64242 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
64243 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
64244 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
64245 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
64246 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
64247 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
64248 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
64249 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
64250 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
64251 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
64252 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
64253 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
64254 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
64255 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
64256 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
64257 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
64258 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
64259 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
64260 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
64261 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
64262 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
64263 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
64264 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
64265 END DO
64266 imax = 5*9*9
64267 kmax = 15
64268 i = 0
64269 DO i1 = 1, 9
64270 DO i2 = 1, 9
64271 DO i3 = 1, 5
64272 i = i + 1
64273 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
64274 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
64275 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
64276 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
64277 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
64278 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
64279 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
64280 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
64281 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
64282 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
64283 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
64284 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
64285 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
64286 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
64287 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
64288 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
64289 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
64290 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
64291 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
64292 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
64293 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
64294 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
64295 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
64296 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
64297 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
64298 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
64299 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
64300 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
64301 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
64302 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
64303 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
64304 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
64305 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
64306 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
64307 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
64308 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
64309 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
64310 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
64311 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
64312 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
64313 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
64314 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
64315 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
64316 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
64317 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
64318 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
64319 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
64320 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
64321 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
64322 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
64323 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
64324 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
64325 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
64326 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
64327 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
64328 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
64329 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
64330 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
64331 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
64332 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
64333 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
64334 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
64335 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
64336 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
64337 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
64338 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
64339 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
64340 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
64341 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
64342 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
64343 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
64344 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
64345 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
64346 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
64347 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
64348 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
64349 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
64350 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
64351 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
64352 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
64353 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
64354 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
64355 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
64356 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
64357 END DO
64358 END DO
64359 END DO
64360 s_offset_d1 = s_offset_d1 + 9
64361 END DO
64362 s_offset_c1 = s_offset_c1 + 9
64363 END DO
64364 s_offset_b1 = s_offset_b1 + 9
64365 END DO
64366 s_offset_a1 = s_offset_a1 + 5
64367 END DO
64368 END SUBROUTINE contract_dggg
64369#endif
64370#if __MAX_CONTR > 3 || __MAX_CONTR == 3
64371! **************************************************************************************************
64372!> \brief ...
64373!> \param work ...
64374!> \param nl_a ...
64375!> \param nl_b ...
64376!> \param nl_c ...
64377!> \param nl_d ...
64378!> \param sphi_a ...
64379!> \param sphi_b ...
64380!> \param sphi_c ...
64381!> \param sphi_d ...
64382!> \param primitives ...
64383!> \param buffer1 ...
64384!> \param buffer2 ...
64385! **************************************************************************************************
64386 SUBROUTINE contract_fsss(work, &
64387 nl_a, nl_b, nl_c, nl_d, &
64388 sphi_a, sphi_b, sphi_c, sphi_d, &
64389 primitives, &
64390 buffer1, buffer2)
64391 REAL(dp), DIMENSION(10*1*1*1), INTENT(IN) :: work
64392 INTEGER :: nl_a, nl_b, nl_c, nl_d
64393 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
64394 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
64395 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
64396 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
64397 REAL(dp), &
64398 DIMENSION(7*nl_a, 1*nl_b, 1*nl_c, 1*nl_d) :: primitives
64399 REAL(dp), DIMENSION(10*1*1*1) :: buffer1, buffer2
64400
64401 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
64402 kmax, s_offset_a1, s_offset_b1, &
64403 s_offset_c1, s_offset_d1
64404
64405 s_offset_a1 = 0
64406 DO ia = 1, nl_a
64407 s_offset_b1 = 0
64408 DO ib = 1, nl_b
64409 s_offset_c1 = 0
64410 DO ic = 1, nl_c
64411 s_offset_d1 = 0
64412 DO id = 1, nl_d
64413 buffer1 = 0.0_dp
64414 imax = 1*1*1
64415 kmax = 10
64416 DO i = 1, imax
64417 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
64418 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
64419 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
64420 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
64421 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
64422 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
64423 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
64424 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
64425 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
64426 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
64427 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
64428 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
64429 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
64430 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
64431 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
64432 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
64433 END DO
64434 buffer2 = 0.0_dp
64435 imax = 7*1*1
64436 kmax = 1
64437 DO i = 1, imax
64438 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
64439 END DO
64440 buffer1 = 0.0_dp
64441 imax = 7*1*1
64442 kmax = 1
64443 DO i = 1, imax
64444 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
64445 END DO
64446 imax = 7*1*1
64447 kmax = 1
64448 i = 0
64449 DO i1 = 1, 1
64450 DO i2 = 1, 1
64451 DO i3 = 1, 7
64452 i = i + 1
64453 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
64454 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
64455 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
64456 END DO
64457 END DO
64458 END DO
64459 s_offset_d1 = s_offset_d1 + 1
64460 END DO
64461 s_offset_c1 = s_offset_c1 + 1
64462 END DO
64463 s_offset_b1 = s_offset_b1 + 1
64464 END DO
64465 s_offset_a1 = s_offset_a1 + 7
64466 END DO
64467 END SUBROUTINE contract_fsss
64468#endif
64469#if __MAX_CONTR > 3 || __MAX_CONTR == 3
64470! **************************************************************************************************
64471!> \brief ...
64472!> \param work ...
64473!> \param nl_a ...
64474!> \param nl_b ...
64475!> \param nl_c ...
64476!> \param nl_d ...
64477!> \param sphi_a ...
64478!> \param sphi_b ...
64479!> \param sphi_c ...
64480!> \param sphi_d ...
64481!> \param primitives ...
64482!> \param buffer1 ...
64483!> \param buffer2 ...
64484! **************************************************************************************************
64485 SUBROUTINE contract_fssp(work, &
64486 nl_a, nl_b, nl_c, nl_d, &
64487 sphi_a, sphi_b, sphi_c, sphi_d, &
64488 primitives, &
64489 buffer1, buffer2)
64490 REAL(dp), DIMENSION(10*1*1*3), INTENT(IN) :: work
64491 INTEGER :: nl_a, nl_b, nl_c, nl_d
64492 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
64493 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
64494 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
64495 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
64496 REAL(dp), &
64497 DIMENSION(7*nl_a, 1*nl_b, 1*nl_c, 3*nl_d) :: primitives
64498 REAL(dp), DIMENSION(10*1*1*3) :: buffer1, buffer2
64499
64500 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
64501 kmax, s_offset_a1, s_offset_b1, &
64502 s_offset_c1, s_offset_d1
64503
64504 s_offset_a1 = 0
64505 DO ia = 1, nl_a
64506 s_offset_b1 = 0
64507 DO ib = 1, nl_b
64508 s_offset_c1 = 0
64509 DO ic = 1, nl_c
64510 s_offset_d1 = 0
64511 DO id = 1, nl_d
64512 buffer1 = 0.0_dp
64513 imax = 1*1*3
64514 kmax = 10
64515 DO i = 1, imax
64516 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
64517 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
64518 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
64519 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
64520 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
64521 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
64522 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
64523 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
64524 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
64525 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
64526 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
64527 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
64528 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
64529 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
64530 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
64531 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
64532 END DO
64533 buffer2 = 0.0_dp
64534 imax = 7*1*3
64535 kmax = 1
64536 DO i = 1, imax
64537 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
64538 END DO
64539 buffer1 = 0.0_dp
64540 imax = 7*1*3
64541 kmax = 1
64542 DO i = 1, imax
64543 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
64544 END DO
64545 imax = 7*1*1
64546 kmax = 3
64547 i = 0
64548 DO i1 = 1, 1
64549 DO i2 = 1, 1
64550 DO i3 = 1, 7
64551 i = i + 1
64552 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
64553 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
64554 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
64555 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
64556 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
64557 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
64558 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
64559 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
64560 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
64561 END DO
64562 END DO
64563 END DO
64564 s_offset_d1 = s_offset_d1 + 3
64565 END DO
64566 s_offset_c1 = s_offset_c1 + 1
64567 END DO
64568 s_offset_b1 = s_offset_b1 + 1
64569 END DO
64570 s_offset_a1 = s_offset_a1 + 7
64571 END DO
64572 END SUBROUTINE contract_fssp
64573#endif
64574#if __MAX_CONTR > 3 || __MAX_CONTR == 3
64575! **************************************************************************************************
64576!> \brief ...
64577!> \param work ...
64578!> \param nl_a ...
64579!> \param nl_b ...
64580!> \param nl_c ...
64581!> \param nl_d ...
64582!> \param sphi_a ...
64583!> \param sphi_b ...
64584!> \param sphi_c ...
64585!> \param sphi_d ...
64586!> \param primitives ...
64587!> \param buffer1 ...
64588!> \param buffer2 ...
64589! **************************************************************************************************
64590 SUBROUTINE contract_fssd(work, &
64591 nl_a, nl_b, nl_c, nl_d, &
64592 sphi_a, sphi_b, sphi_c, sphi_d, &
64593 primitives, &
64594 buffer1, buffer2)
64595 REAL(dp), DIMENSION(10*1*1*6), INTENT(IN) :: work
64596 INTEGER :: nl_a, nl_b, nl_c, nl_d
64597 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
64598 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
64599 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
64600 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
64601 REAL(dp), &
64602 DIMENSION(7*nl_a, 1*nl_b, 1*nl_c, 5*nl_d) :: primitives
64603 REAL(dp), DIMENSION(10*1*1*6) :: buffer1, buffer2
64604
64605 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
64606 kmax, s_offset_a1, s_offset_b1, &
64607 s_offset_c1, s_offset_d1
64608
64609 s_offset_a1 = 0
64610 DO ia = 1, nl_a
64611 s_offset_b1 = 0
64612 DO ib = 1, nl_b
64613 s_offset_c1 = 0
64614 DO ic = 1, nl_c
64615 s_offset_d1 = 0
64616 DO id = 1, nl_d
64617 buffer1 = 0.0_dp
64618 imax = 1*1*6
64619 kmax = 10
64620 DO i = 1, imax
64621 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
64622 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
64623 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
64624 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
64625 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
64626 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
64627 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
64628 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
64629 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
64630 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
64631 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
64632 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
64633 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
64634 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
64635 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
64636 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
64637 END DO
64638 buffer2 = 0.0_dp
64639 imax = 7*1*6
64640 kmax = 1
64641 DO i = 1, imax
64642 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
64643 END DO
64644 buffer1 = 0.0_dp
64645 imax = 7*1*6
64646 kmax = 1
64647 DO i = 1, imax
64648 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
64649 END DO
64650 imax = 7*1*1
64651 kmax = 6
64652 i = 0
64653 DO i1 = 1, 1
64654 DO i2 = 1, 1
64655 DO i3 = 1, 7
64656 i = i + 1
64657 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
64658 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
64659 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
64660 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
64661 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
64662 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
64663 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
64664 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
64665 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
64666 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
64667 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
64668 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
64669 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
64670 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
64671 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
64672 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
64673 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
64674 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
64675 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
64676 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
64677 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
64678 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
64679 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
64680 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
64681 END DO
64682 END DO
64683 END DO
64684 s_offset_d1 = s_offset_d1 + 5
64685 END DO
64686 s_offset_c1 = s_offset_c1 + 1
64687 END DO
64688 s_offset_b1 = s_offset_b1 + 1
64689 END DO
64690 s_offset_a1 = s_offset_a1 + 7
64691 END DO
64692 END SUBROUTINE contract_fssd
64693#endif
64694#if __MAX_CONTR > 3 || __MAX_CONTR == 3
64695! **************************************************************************************************
64696!> \brief ...
64697!> \param work ...
64698!> \param nl_a ...
64699!> \param nl_b ...
64700!> \param nl_c ...
64701!> \param nl_d ...
64702!> \param sphi_a ...
64703!> \param sphi_b ...
64704!> \param sphi_c ...
64705!> \param sphi_d ...
64706!> \param primitives ...
64707!> \param buffer1 ...
64708!> \param buffer2 ...
64709! **************************************************************************************************
64710 SUBROUTINE contract_fssf(work, &
64711 nl_a, nl_b, nl_c, nl_d, &
64712 sphi_a, sphi_b, sphi_c, sphi_d, &
64713 primitives, &
64714 buffer1, buffer2)
64715 REAL(dp), DIMENSION(10*1*1*10), INTENT(IN) :: work
64716 INTEGER :: nl_a, nl_b, nl_c, nl_d
64717 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
64718 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
64719 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
64720 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
64721 REAL(dp), &
64722 DIMENSION(7*nl_a, 1*nl_b, 1*nl_c, 7*nl_d) :: primitives
64723 REAL(dp), DIMENSION(10*1*1*10) :: buffer1, buffer2
64724
64725 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
64726 kmax, s_offset_a1, s_offset_b1, &
64727 s_offset_c1, s_offset_d1
64728
64729 s_offset_a1 = 0
64730 DO ia = 1, nl_a
64731 s_offset_b1 = 0
64732 DO ib = 1, nl_b
64733 s_offset_c1 = 0
64734 DO ic = 1, nl_c
64735 s_offset_d1 = 0
64736 DO id = 1, nl_d
64737 buffer1 = 0.0_dp
64738 imax = 1*1*10
64739 kmax = 10
64740 DO i = 1, imax
64741 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
64742 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
64743 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
64744 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
64745 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
64746 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
64747 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
64748 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
64749 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
64750 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
64751 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
64752 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
64753 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
64754 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
64755 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
64756 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
64757 END DO
64758 buffer2 = 0.0_dp
64759 imax = 7*1*10
64760 kmax = 1
64761 DO i = 1, imax
64762 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
64763 END DO
64764 buffer1 = 0.0_dp
64765 imax = 7*1*10
64766 kmax = 1
64767 DO i = 1, imax
64768 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
64769 END DO
64770 imax = 7*1*1
64771 kmax = 10
64772 i = 0
64773 DO i1 = 1, 1
64774 DO i2 = 1, 1
64775 DO i3 = 1, 7
64776 i = i + 1
64777 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
64778 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
64779 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
64780 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
64781 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
64782 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
64783 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
64784 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
64785 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
64786 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
64787 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
64788 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
64789 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
64790 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
64791 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
64792 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
64793 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
64794 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
64795 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
64796 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
64797 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
64798 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
64799 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
64800 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
64801 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
64802 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
64803 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
64804 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
64805 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
64806 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
64807 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
64808 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
64809 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
64810 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
64811 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
64812 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
64813 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
64814 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
64815 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
64816 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
64817 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
64818 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
64819 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
64820 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
64821 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
64822 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
64823 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
64824 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
64825 END DO
64826 END DO
64827 END DO
64828 s_offset_d1 = s_offset_d1 + 7
64829 END DO
64830 s_offset_c1 = s_offset_c1 + 1
64831 END DO
64832 s_offset_b1 = s_offset_b1 + 1
64833 END DO
64834 s_offset_a1 = s_offset_a1 + 7
64835 END DO
64836 END SUBROUTINE contract_fssf
64837#endif
64838#if __MAX_CONTR > 4 || __MAX_CONTR == 4
64839! **************************************************************************************************
64840!> \brief ...
64841!> \param work ...
64842!> \param nl_a ...
64843!> \param nl_b ...
64844!> \param nl_c ...
64845!> \param nl_d ...
64846!> \param sphi_a ...
64847!> \param sphi_b ...
64848!> \param sphi_c ...
64849!> \param sphi_d ...
64850!> \param primitives ...
64851!> \param buffer1 ...
64852!> \param buffer2 ...
64853! **************************************************************************************************
64854 SUBROUTINE contract_fssg(work, &
64855 nl_a, nl_b, nl_c, nl_d, &
64856 sphi_a, sphi_b, sphi_c, sphi_d, &
64857 primitives, &
64858 buffer1, buffer2)
64859 REAL(dp), DIMENSION(10*1*1*15), INTENT(IN) :: work
64860 INTEGER :: nl_a, nl_b, nl_c, nl_d
64861 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
64862 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
64863 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
64864 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
64865 REAL(dp), &
64866 DIMENSION(7*nl_a, 1*nl_b, 1*nl_c, 9*nl_d) :: primitives
64867 REAL(dp), DIMENSION(10*1*1*15) :: buffer1, buffer2
64868
64869 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
64870 kmax, s_offset_a1, s_offset_b1, &
64871 s_offset_c1, s_offset_d1
64872
64873 s_offset_a1 = 0
64874 DO ia = 1, nl_a
64875 s_offset_b1 = 0
64876 DO ib = 1, nl_b
64877 s_offset_c1 = 0
64878 DO ic = 1, nl_c
64879 s_offset_d1 = 0
64880 DO id = 1, nl_d
64881 buffer1 = 0.0_dp
64882 imax = 1*1*15
64883 kmax = 10
64884 DO i = 1, imax
64885 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
64886 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
64887 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
64888 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
64889 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
64890 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
64891 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
64892 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
64893 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
64894 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
64895 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
64896 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
64897 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
64898 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
64899 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
64900 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
64901 END DO
64902 buffer2 = 0.0_dp
64903 imax = 7*1*15
64904 kmax = 1
64905 DO i = 1, imax
64906 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
64907 END DO
64908 buffer1 = 0.0_dp
64909 imax = 7*1*15
64910 kmax = 1
64911 DO i = 1, imax
64912 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
64913 END DO
64914 imax = 7*1*1
64915 kmax = 15
64916 i = 0
64917 DO i1 = 1, 1
64918 DO i2 = 1, 1
64919 DO i3 = 1, 7
64920 i = i + 1
64921 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
64922 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
64923 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
64924 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
64925 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
64926 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
64927 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
64928 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
64929 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
64930 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
64931 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
64932 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
64933 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
64934 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
64935 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
64936 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
64937 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
64938 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
64939 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
64940 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
64941 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
64942 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
64943 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
64944 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
64945 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
64946 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
64947 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
64948 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
64949 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
64950 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
64951 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
64952 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
64953 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
64954 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
64955 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
64956 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
64957 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
64958 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
64959 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
64960 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
64961 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
64962 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
64963 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
64964 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
64965 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
64966 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
64967 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
64968 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
64969 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
64970 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
64971 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
64972 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
64973 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
64974 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
64975 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
64976 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
64977 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
64978 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
64979 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
64980 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
64981 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
64982 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
64983 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
64984 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
64985 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
64986 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
64987 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
64988 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
64989 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
64990 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
64991 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
64992 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
64993 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
64994 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
64995 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
64996 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
64997 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
64998 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
64999 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
65000 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
65001 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
65002 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
65003 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
65004 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
65005 END DO
65006 END DO
65007 END DO
65008 s_offset_d1 = s_offset_d1 + 9
65009 END DO
65010 s_offset_c1 = s_offset_c1 + 1
65011 END DO
65012 s_offset_b1 = s_offset_b1 + 1
65013 END DO
65014 s_offset_a1 = s_offset_a1 + 7
65015 END DO
65016 END SUBROUTINE contract_fssg
65017#endif
65018#if __MAX_CONTR > 3 || __MAX_CONTR == 3
65019! **************************************************************************************************
65020!> \brief ...
65021!> \param work ...
65022!> \param nl_a ...
65023!> \param nl_b ...
65024!> \param nl_c ...
65025!> \param nl_d ...
65026!> \param sphi_a ...
65027!> \param sphi_b ...
65028!> \param sphi_c ...
65029!> \param sphi_d ...
65030!> \param primitives ...
65031!> \param buffer1 ...
65032!> \param buffer2 ...
65033! **************************************************************************************************
65034 SUBROUTINE contract_fsps(work, &
65035 nl_a, nl_b, nl_c, nl_d, &
65036 sphi_a, sphi_b, sphi_c, sphi_d, &
65037 primitives, &
65038 buffer1, buffer2)
65039 REAL(dp), DIMENSION(10*1*3*1), INTENT(IN) :: work
65040 INTEGER :: nl_a, nl_b, nl_c, nl_d
65041 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
65042 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
65043 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
65044 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
65045 REAL(dp), &
65046 DIMENSION(7*nl_a, 1*nl_b, 3*nl_c, 1*nl_d) :: primitives
65047 REAL(dp), DIMENSION(10*1*3*1) :: buffer1, buffer2
65048
65049 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
65050 kmax, s_offset_a1, s_offset_b1, &
65051 s_offset_c1, s_offset_d1
65052
65053 s_offset_a1 = 0
65054 DO ia = 1, nl_a
65055 s_offset_b1 = 0
65056 DO ib = 1, nl_b
65057 s_offset_c1 = 0
65058 DO ic = 1, nl_c
65059 s_offset_d1 = 0
65060 DO id = 1, nl_d
65061 buffer1 = 0.0_dp
65062 imax = 1*3*1
65063 kmax = 10
65064 DO i = 1, imax
65065 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
65066 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
65067 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
65068 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
65069 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
65070 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
65071 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
65072 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
65073 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
65074 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
65075 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
65076 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
65077 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
65078 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
65079 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
65080 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
65081 END DO
65082 buffer2 = 0.0_dp
65083 imax = 7*3*1
65084 kmax = 1
65085 DO i = 1, imax
65086 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
65087 END DO
65088 buffer1 = 0.0_dp
65089 imax = 7*1*1
65090 kmax = 3
65091 DO i = 1, imax
65092 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
65093 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
65094 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
65095 END DO
65096 imax = 7*1*3
65097 kmax = 1
65098 i = 0
65099 DO i1 = 1, 3
65100 DO i2 = 1, 1
65101 DO i3 = 1, 7
65102 i = i + 1
65103 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
65104 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
65105 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
65106 END DO
65107 END DO
65108 END DO
65109 s_offset_d1 = s_offset_d1 + 1
65110 END DO
65111 s_offset_c1 = s_offset_c1 + 3
65112 END DO
65113 s_offset_b1 = s_offset_b1 + 1
65114 END DO
65115 s_offset_a1 = s_offset_a1 + 7
65116 END DO
65117 END SUBROUTINE contract_fsps
65118#endif
65119#if __MAX_CONTR > 3 || __MAX_CONTR == 3
65120! **************************************************************************************************
65121!> \brief ...
65122!> \param work ...
65123!> \param nl_a ...
65124!> \param nl_b ...
65125!> \param nl_c ...
65126!> \param nl_d ...
65127!> \param sphi_a ...
65128!> \param sphi_b ...
65129!> \param sphi_c ...
65130!> \param sphi_d ...
65131!> \param primitives ...
65132!> \param buffer1 ...
65133!> \param buffer2 ...
65134! **************************************************************************************************
65135 SUBROUTINE contract_fspp(work, &
65136 nl_a, nl_b, nl_c, nl_d, &
65137 sphi_a, sphi_b, sphi_c, sphi_d, &
65138 primitives, &
65139 buffer1, buffer2)
65140 REAL(dp), DIMENSION(10*1*3*3), INTENT(IN) :: work
65141 INTEGER :: nl_a, nl_b, nl_c, nl_d
65142 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
65143 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
65144 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
65145 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
65146 REAL(dp), &
65147 DIMENSION(7*nl_a, 1*nl_b, 3*nl_c, 3*nl_d) :: primitives
65148 REAL(dp), DIMENSION(10*1*3*3) :: buffer1, buffer2
65149
65150 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
65151 kmax, s_offset_a1, s_offset_b1, &
65152 s_offset_c1, s_offset_d1
65153
65154 s_offset_a1 = 0
65155 DO ia = 1, nl_a
65156 s_offset_b1 = 0
65157 DO ib = 1, nl_b
65158 s_offset_c1 = 0
65159 DO ic = 1, nl_c
65160 s_offset_d1 = 0
65161 DO id = 1, nl_d
65162 buffer1 = 0.0_dp
65163 imax = 1*3*3
65164 kmax = 10
65165 DO i = 1, imax
65166 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
65167 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
65168 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
65169 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
65170 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
65171 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
65172 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
65173 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
65174 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
65175 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
65176 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
65177 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
65178 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
65179 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
65180 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
65181 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
65182 END DO
65183 buffer2 = 0.0_dp
65184 imax = 7*3*3
65185 kmax = 1
65186 DO i = 1, imax
65187 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
65188 END DO
65189 buffer1 = 0.0_dp
65190 imax = 7*1*3
65191 kmax = 3
65192 DO i = 1, imax
65193 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
65194 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
65195 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
65196 END DO
65197 imax = 7*1*3
65198 kmax = 3
65199 i = 0
65200 DO i1 = 1, 3
65201 DO i2 = 1, 1
65202 DO i3 = 1, 7
65203 i = i + 1
65204 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
65205 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
65206 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
65207 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
65208 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
65209 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
65210 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
65211 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
65212 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
65213 END DO
65214 END DO
65215 END DO
65216 s_offset_d1 = s_offset_d1 + 3
65217 END DO
65218 s_offset_c1 = s_offset_c1 + 3
65219 END DO
65220 s_offset_b1 = s_offset_b1 + 1
65221 END DO
65222 s_offset_a1 = s_offset_a1 + 7
65223 END DO
65224 END SUBROUTINE contract_fspp
65225#endif
65226#if __MAX_CONTR > 3 || __MAX_CONTR == 3
65227! **************************************************************************************************
65228!> \brief ...
65229!> \param work ...
65230!> \param nl_a ...
65231!> \param nl_b ...
65232!> \param nl_c ...
65233!> \param nl_d ...
65234!> \param sphi_a ...
65235!> \param sphi_b ...
65236!> \param sphi_c ...
65237!> \param sphi_d ...
65238!> \param primitives ...
65239!> \param buffer1 ...
65240!> \param buffer2 ...
65241! **************************************************************************************************
65242 SUBROUTINE contract_fspd(work, &
65243 nl_a, nl_b, nl_c, nl_d, &
65244 sphi_a, sphi_b, sphi_c, sphi_d, &
65245 primitives, &
65246 buffer1, buffer2)
65247 REAL(dp), DIMENSION(10*1*3*6), INTENT(IN) :: work
65248 INTEGER :: nl_a, nl_b, nl_c, nl_d
65249 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
65250 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
65251 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
65252 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
65253 REAL(dp), &
65254 DIMENSION(7*nl_a, 1*nl_b, 3*nl_c, 5*nl_d) :: primitives
65255 REAL(dp), DIMENSION(10*1*3*6) :: buffer1, buffer2
65256
65257 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
65258 kmax, s_offset_a1, s_offset_b1, &
65259 s_offset_c1, s_offset_d1
65260
65261 s_offset_a1 = 0
65262 DO ia = 1, nl_a
65263 s_offset_b1 = 0
65264 DO ib = 1, nl_b
65265 s_offset_c1 = 0
65266 DO ic = 1, nl_c
65267 s_offset_d1 = 0
65268 DO id = 1, nl_d
65269 buffer1 = 0.0_dp
65270 imax = 1*3*6
65271 kmax = 10
65272 DO i = 1, imax
65273 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
65274 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
65275 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
65276 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
65277 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
65278 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
65279 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
65280 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
65281 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
65282 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
65283 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
65284 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
65285 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
65286 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
65287 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
65288 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
65289 END DO
65290 buffer2 = 0.0_dp
65291 imax = 7*3*6
65292 kmax = 1
65293 DO i = 1, imax
65294 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
65295 END DO
65296 buffer1 = 0.0_dp
65297 imax = 7*1*6
65298 kmax = 3
65299 DO i = 1, imax
65300 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
65301 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
65302 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
65303 END DO
65304 imax = 7*1*3
65305 kmax = 6
65306 i = 0
65307 DO i1 = 1, 3
65308 DO i2 = 1, 1
65309 DO i3 = 1, 7
65310 i = i + 1
65311 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
65312 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
65313 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
65314 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
65315 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
65316 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
65317 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
65318 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
65319 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
65320 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
65321 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
65322 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
65323 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
65324 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
65325 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
65326 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
65327 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
65328 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
65329 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
65330 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
65331 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
65332 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
65333 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
65334 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
65335 END DO
65336 END DO
65337 END DO
65338 s_offset_d1 = s_offset_d1 + 5
65339 END DO
65340 s_offset_c1 = s_offset_c1 + 3
65341 END DO
65342 s_offset_b1 = s_offset_b1 + 1
65343 END DO
65344 s_offset_a1 = s_offset_a1 + 7
65345 END DO
65346 END SUBROUTINE contract_fspd
65347#endif
65348#if __MAX_CONTR > 3 || __MAX_CONTR == 3
65349! **************************************************************************************************
65350!> \brief ...
65351!> \param work ...
65352!> \param nl_a ...
65353!> \param nl_b ...
65354!> \param nl_c ...
65355!> \param nl_d ...
65356!> \param sphi_a ...
65357!> \param sphi_b ...
65358!> \param sphi_c ...
65359!> \param sphi_d ...
65360!> \param primitives ...
65361!> \param buffer1 ...
65362!> \param buffer2 ...
65363! **************************************************************************************************
65364 SUBROUTINE contract_fspf(work, &
65365 nl_a, nl_b, nl_c, nl_d, &
65366 sphi_a, sphi_b, sphi_c, sphi_d, &
65367 primitives, &
65368 buffer1, buffer2)
65369 REAL(dp), DIMENSION(10*1*3*10), INTENT(IN) :: work
65370 INTEGER :: nl_a, nl_b, nl_c, nl_d
65371 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
65372 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
65373 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
65374 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
65375 REAL(dp), &
65376 DIMENSION(7*nl_a, 1*nl_b, 3*nl_c, 7*nl_d) :: primitives
65377 REAL(dp), DIMENSION(10*1*3*10) :: buffer1, buffer2
65378
65379 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
65380 kmax, s_offset_a1, s_offset_b1, &
65381 s_offset_c1, s_offset_d1
65382
65383 s_offset_a1 = 0
65384 DO ia = 1, nl_a
65385 s_offset_b1 = 0
65386 DO ib = 1, nl_b
65387 s_offset_c1 = 0
65388 DO ic = 1, nl_c
65389 s_offset_d1 = 0
65390 DO id = 1, nl_d
65391 buffer1 = 0.0_dp
65392 imax = 1*3*10
65393 kmax = 10
65394 DO i = 1, imax
65395 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
65396 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
65397 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
65398 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
65399 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
65400 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
65401 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
65402 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
65403 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
65404 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
65405 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
65406 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
65407 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
65408 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
65409 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
65410 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
65411 END DO
65412 buffer2 = 0.0_dp
65413 imax = 7*3*10
65414 kmax = 1
65415 DO i = 1, imax
65416 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
65417 END DO
65418 buffer1 = 0.0_dp
65419 imax = 7*1*10
65420 kmax = 3
65421 DO i = 1, imax
65422 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
65423 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
65424 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
65425 END DO
65426 imax = 7*1*3
65427 kmax = 10
65428 i = 0
65429 DO i1 = 1, 3
65430 DO i2 = 1, 1
65431 DO i3 = 1, 7
65432 i = i + 1
65433 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
65434 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
65435 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
65436 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
65437 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
65438 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
65439 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
65440 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
65441 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
65442 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
65443 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
65444 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
65445 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
65446 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
65447 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
65448 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
65449 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
65450 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
65451 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
65452 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
65453 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
65454 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
65455 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
65456 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
65457 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
65458 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
65459 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
65460 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
65461 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
65462 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
65463 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
65464 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
65465 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
65466 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
65467 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
65468 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
65469 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
65470 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
65471 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
65472 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
65473 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
65474 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
65475 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
65476 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
65477 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
65478 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
65479 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
65480 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
65481 END DO
65482 END DO
65483 END DO
65484 s_offset_d1 = s_offset_d1 + 7
65485 END DO
65486 s_offset_c1 = s_offset_c1 + 3
65487 END DO
65488 s_offset_b1 = s_offset_b1 + 1
65489 END DO
65490 s_offset_a1 = s_offset_a1 + 7
65491 END DO
65492 END SUBROUTINE contract_fspf
65493#endif
65494#if __MAX_CONTR > 4 || __MAX_CONTR == 4
65495! **************************************************************************************************
65496!> \brief ...
65497!> \param work ...
65498!> \param nl_a ...
65499!> \param nl_b ...
65500!> \param nl_c ...
65501!> \param nl_d ...
65502!> \param sphi_a ...
65503!> \param sphi_b ...
65504!> \param sphi_c ...
65505!> \param sphi_d ...
65506!> \param primitives ...
65507!> \param buffer1 ...
65508!> \param buffer2 ...
65509! **************************************************************************************************
65510 SUBROUTINE contract_fspg(work, &
65511 nl_a, nl_b, nl_c, nl_d, &
65512 sphi_a, sphi_b, sphi_c, sphi_d, &
65513 primitives, &
65514 buffer1, buffer2)
65515 REAL(dp), DIMENSION(10*1*3*15), INTENT(IN) :: work
65516 INTEGER :: nl_a, nl_b, nl_c, nl_d
65517 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
65518 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
65519 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
65520 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
65521 REAL(dp), &
65522 DIMENSION(7*nl_a, 1*nl_b, 3*nl_c, 9*nl_d) :: primitives
65523 REAL(dp), DIMENSION(10*1*3*15) :: buffer1, buffer2
65524
65525 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
65526 kmax, s_offset_a1, s_offset_b1, &
65527 s_offset_c1, s_offset_d1
65528
65529 s_offset_a1 = 0
65530 DO ia = 1, nl_a
65531 s_offset_b1 = 0
65532 DO ib = 1, nl_b
65533 s_offset_c1 = 0
65534 DO ic = 1, nl_c
65535 s_offset_d1 = 0
65536 DO id = 1, nl_d
65537 buffer1 = 0.0_dp
65538 imax = 1*3*15
65539 kmax = 10
65540 DO i = 1, imax
65541 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
65542 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
65543 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
65544 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
65545 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
65546 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
65547 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
65548 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
65549 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
65550 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
65551 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
65552 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
65553 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
65554 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
65555 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
65556 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
65557 END DO
65558 buffer2 = 0.0_dp
65559 imax = 7*3*15
65560 kmax = 1
65561 DO i = 1, imax
65562 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
65563 END DO
65564 buffer1 = 0.0_dp
65565 imax = 7*1*15
65566 kmax = 3
65567 DO i = 1, imax
65568 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
65569 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
65570 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
65571 END DO
65572 imax = 7*1*3
65573 kmax = 15
65574 i = 0
65575 DO i1 = 1, 3
65576 DO i2 = 1, 1
65577 DO i3 = 1, 7
65578 i = i + 1
65579 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
65580 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
65581 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
65582 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
65583 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
65584 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
65585 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
65586 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
65587 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
65588 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
65589 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
65590 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
65591 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
65592 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
65593 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
65594 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
65595 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
65596 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
65597 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
65598 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
65599 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
65600 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
65601 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
65602 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
65603 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
65604 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
65605 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
65606 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
65607 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
65608 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
65609 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
65610 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
65611 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
65612 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
65613 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
65614 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
65615 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
65616 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
65617 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
65618 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
65619 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
65620 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
65621 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
65622 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
65623 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
65624 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
65625 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
65626 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
65627 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
65628 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
65629 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
65630 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
65631 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
65632 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
65633 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
65634 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
65635 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
65636 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
65637 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
65638 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
65639 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
65640 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
65641 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
65642 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
65643 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
65644 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
65645 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
65646 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
65647 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
65648 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
65649 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
65650 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
65651 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
65652 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
65653 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
65654 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
65655 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
65656 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
65657 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
65658 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
65659 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
65660 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
65661 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
65662 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
65663 END DO
65664 END DO
65665 END DO
65666 s_offset_d1 = s_offset_d1 + 9
65667 END DO
65668 s_offset_c1 = s_offset_c1 + 3
65669 END DO
65670 s_offset_b1 = s_offset_b1 + 1
65671 END DO
65672 s_offset_a1 = s_offset_a1 + 7
65673 END DO
65674 END SUBROUTINE contract_fspg
65675#endif
65676#if __MAX_CONTR > 3 || __MAX_CONTR == 3
65677! **************************************************************************************************
65678!> \brief ...
65679!> \param work ...
65680!> \param nl_a ...
65681!> \param nl_b ...
65682!> \param nl_c ...
65683!> \param nl_d ...
65684!> \param sphi_a ...
65685!> \param sphi_b ...
65686!> \param sphi_c ...
65687!> \param sphi_d ...
65688!> \param primitives ...
65689!> \param buffer1 ...
65690!> \param buffer2 ...
65691! **************************************************************************************************
65692 SUBROUTINE contract_fsds(work, &
65693 nl_a, nl_b, nl_c, nl_d, &
65694 sphi_a, sphi_b, sphi_c, sphi_d, &
65695 primitives, &
65696 buffer1, buffer2)
65697 REAL(dp), DIMENSION(10*1*6*1), INTENT(IN) :: work
65698 INTEGER :: nl_a, nl_b, nl_c, nl_d
65699 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
65700 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
65701 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
65702 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
65703 REAL(dp), &
65704 DIMENSION(7*nl_a, 1*nl_b, 5*nl_c, 1*nl_d) :: primitives
65705 REAL(dp), DIMENSION(10*1*6*1) :: buffer1, buffer2
65706
65707 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
65708 kmax, s_offset_a1, s_offset_b1, &
65709 s_offset_c1, s_offset_d1
65710
65711 s_offset_a1 = 0
65712 DO ia = 1, nl_a
65713 s_offset_b1 = 0
65714 DO ib = 1, nl_b
65715 s_offset_c1 = 0
65716 DO ic = 1, nl_c
65717 s_offset_d1 = 0
65718 DO id = 1, nl_d
65719 buffer1 = 0.0_dp
65720 imax = 1*6*1
65721 kmax = 10
65722 DO i = 1, imax
65723 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
65724 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
65725 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
65726 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
65727 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
65728 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
65729 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
65730 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
65731 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
65732 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
65733 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
65734 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
65735 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
65736 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
65737 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
65738 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
65739 END DO
65740 buffer2 = 0.0_dp
65741 imax = 7*6*1
65742 kmax = 1
65743 DO i = 1, imax
65744 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
65745 END DO
65746 buffer1 = 0.0_dp
65747 imax = 7*1*1
65748 kmax = 6
65749 DO i = 1, imax
65750 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
65751 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
65752 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
65753 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
65754 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
65755 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
65756 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
65757 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
65758 END DO
65759 imax = 7*1*5
65760 kmax = 1
65761 i = 0
65762 DO i1 = 1, 5
65763 DO i2 = 1, 1
65764 DO i3 = 1, 7
65765 i = i + 1
65766 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
65767 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
65768 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
65769 END DO
65770 END DO
65771 END DO
65772 s_offset_d1 = s_offset_d1 + 1
65773 END DO
65774 s_offset_c1 = s_offset_c1 + 5
65775 END DO
65776 s_offset_b1 = s_offset_b1 + 1
65777 END DO
65778 s_offset_a1 = s_offset_a1 + 7
65779 END DO
65780 END SUBROUTINE contract_fsds
65781#endif
65782#if __MAX_CONTR > 3 || __MAX_CONTR == 3
65783! **************************************************************************************************
65784!> \brief ...
65785!> \param work ...
65786!> \param nl_a ...
65787!> \param nl_b ...
65788!> \param nl_c ...
65789!> \param nl_d ...
65790!> \param sphi_a ...
65791!> \param sphi_b ...
65792!> \param sphi_c ...
65793!> \param sphi_d ...
65794!> \param primitives ...
65795!> \param buffer1 ...
65796!> \param buffer2 ...
65797! **************************************************************************************************
65798 SUBROUTINE contract_fsdp(work, &
65799 nl_a, nl_b, nl_c, nl_d, &
65800 sphi_a, sphi_b, sphi_c, sphi_d, &
65801 primitives, &
65802 buffer1, buffer2)
65803 REAL(dp), DIMENSION(10*1*6*3), INTENT(IN) :: work
65804 INTEGER :: nl_a, nl_b, nl_c, nl_d
65805 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
65806 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
65807 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
65808 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
65809 REAL(dp), &
65810 DIMENSION(7*nl_a, 1*nl_b, 5*nl_c, 3*nl_d) :: primitives
65811 REAL(dp), DIMENSION(10*1*6*3) :: buffer1, buffer2
65812
65813 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
65814 kmax, s_offset_a1, s_offset_b1, &
65815 s_offset_c1, s_offset_d1
65816
65817 s_offset_a1 = 0
65818 DO ia = 1, nl_a
65819 s_offset_b1 = 0
65820 DO ib = 1, nl_b
65821 s_offset_c1 = 0
65822 DO ic = 1, nl_c
65823 s_offset_d1 = 0
65824 DO id = 1, nl_d
65825 buffer1 = 0.0_dp
65826 imax = 1*6*3
65827 kmax = 10
65828 DO i = 1, imax
65829 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
65830 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
65831 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
65832 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
65833 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
65834 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
65835 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
65836 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
65837 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
65838 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
65839 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
65840 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
65841 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
65842 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
65843 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
65844 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
65845 END DO
65846 buffer2 = 0.0_dp
65847 imax = 7*6*3
65848 kmax = 1
65849 DO i = 1, imax
65850 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
65851 END DO
65852 buffer1 = 0.0_dp
65853 imax = 7*1*3
65854 kmax = 6
65855 DO i = 1, imax
65856 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
65857 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
65858 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
65859 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
65860 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
65861 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
65862 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
65863 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
65864 END DO
65865 imax = 7*1*5
65866 kmax = 3
65867 i = 0
65868 DO i1 = 1, 5
65869 DO i2 = 1, 1
65870 DO i3 = 1, 7
65871 i = i + 1
65872 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
65873 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
65874 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
65875 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
65876 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
65877 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
65878 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
65879 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
65880 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
65881 END DO
65882 END DO
65883 END DO
65884 s_offset_d1 = s_offset_d1 + 3
65885 END DO
65886 s_offset_c1 = s_offset_c1 + 5
65887 END DO
65888 s_offset_b1 = s_offset_b1 + 1
65889 END DO
65890 s_offset_a1 = s_offset_a1 + 7
65891 END DO
65892 END SUBROUTINE contract_fsdp
65893#endif
65894#if __MAX_CONTR > 3 || __MAX_CONTR == 3
65895! **************************************************************************************************
65896!> \brief ...
65897!> \param work ...
65898!> \param nl_a ...
65899!> \param nl_b ...
65900!> \param nl_c ...
65901!> \param nl_d ...
65902!> \param sphi_a ...
65903!> \param sphi_b ...
65904!> \param sphi_c ...
65905!> \param sphi_d ...
65906!> \param primitives ...
65907!> \param buffer1 ...
65908!> \param buffer2 ...
65909! **************************************************************************************************
65910 SUBROUTINE contract_fsdd(work, &
65911 nl_a, nl_b, nl_c, nl_d, &
65912 sphi_a, sphi_b, sphi_c, sphi_d, &
65913 primitives, &
65914 buffer1, buffer2)
65915 REAL(dp), DIMENSION(10*1*6*6), INTENT(IN) :: work
65916 INTEGER :: nl_a, nl_b, nl_c, nl_d
65917 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
65918 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
65919 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
65920 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
65921 REAL(dp), &
65922 DIMENSION(7*nl_a, 1*nl_b, 5*nl_c, 5*nl_d) :: primitives
65923 REAL(dp), DIMENSION(10*1*6*6) :: buffer1, buffer2
65924
65925 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
65926 kmax, s_offset_a1, s_offset_b1, &
65927 s_offset_c1, s_offset_d1
65928
65929 s_offset_a1 = 0
65930 DO ia = 1, nl_a
65931 s_offset_b1 = 0
65932 DO ib = 1, nl_b
65933 s_offset_c1 = 0
65934 DO ic = 1, nl_c
65935 s_offset_d1 = 0
65936 DO id = 1, nl_d
65937 buffer1 = 0.0_dp
65938 imax = 1*6*6
65939 kmax = 10
65940 DO i = 1, imax
65941 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
65942 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
65943 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
65944 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
65945 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
65946 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
65947 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
65948 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
65949 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
65950 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
65951 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
65952 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
65953 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
65954 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
65955 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
65956 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
65957 END DO
65958 buffer2 = 0.0_dp
65959 imax = 7*6*6
65960 kmax = 1
65961 DO i = 1, imax
65962 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
65963 END DO
65964 buffer1 = 0.0_dp
65965 imax = 7*1*6
65966 kmax = 6
65967 DO i = 1, imax
65968 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
65969 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
65970 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
65971 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
65972 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
65973 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
65974 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
65975 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
65976 END DO
65977 imax = 7*1*5
65978 kmax = 6
65979 i = 0
65980 DO i1 = 1, 5
65981 DO i2 = 1, 1
65982 DO i3 = 1, 7
65983 i = i + 1
65984 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
65985 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
65986 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
65987 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
65988 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
65989 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
65990 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
65991 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
65992 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
65993 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
65994 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
65995 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
65996 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
65997 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
65998 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
65999 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
66000 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
66001 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
66002 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
66003 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
66004 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
66005 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
66006 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
66007 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
66008 END DO
66009 END DO
66010 END DO
66011 s_offset_d1 = s_offset_d1 + 5
66012 END DO
66013 s_offset_c1 = s_offset_c1 + 5
66014 END DO
66015 s_offset_b1 = s_offset_b1 + 1
66016 END DO
66017 s_offset_a1 = s_offset_a1 + 7
66018 END DO
66019 END SUBROUTINE contract_fsdd
66020#endif
66021#if __MAX_CONTR > 3 || __MAX_CONTR == 3
66022! **************************************************************************************************
66023!> \brief ...
66024!> \param work ...
66025!> \param nl_a ...
66026!> \param nl_b ...
66027!> \param nl_c ...
66028!> \param nl_d ...
66029!> \param sphi_a ...
66030!> \param sphi_b ...
66031!> \param sphi_c ...
66032!> \param sphi_d ...
66033!> \param primitives ...
66034!> \param buffer1 ...
66035!> \param buffer2 ...
66036! **************************************************************************************************
66037 SUBROUTINE contract_fsdf(work, &
66038 nl_a, nl_b, nl_c, nl_d, &
66039 sphi_a, sphi_b, sphi_c, sphi_d, &
66040 primitives, &
66041 buffer1, buffer2)
66042 REAL(dp), DIMENSION(10*1*6*10), INTENT(IN) :: work
66043 INTEGER :: nl_a, nl_b, nl_c, nl_d
66044 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
66045 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
66046 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
66047 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
66048 REAL(dp), &
66049 DIMENSION(7*nl_a, 1*nl_b, 5*nl_c, 7*nl_d) :: primitives
66050 REAL(dp), DIMENSION(10*1*6*10) :: buffer1, buffer2
66051
66052 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
66053 kmax, s_offset_a1, s_offset_b1, &
66054 s_offset_c1, s_offset_d1
66055
66056 s_offset_a1 = 0
66057 DO ia = 1, nl_a
66058 s_offset_b1 = 0
66059 DO ib = 1, nl_b
66060 s_offset_c1 = 0
66061 DO ic = 1, nl_c
66062 s_offset_d1 = 0
66063 DO id = 1, nl_d
66064 buffer1 = 0.0_dp
66065 imax = 1*6*10
66066 kmax = 10
66067 DO i = 1, imax
66068 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
66069 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
66070 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
66071 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
66072 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
66073 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
66074 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
66075 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
66076 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
66077 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
66078 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
66079 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
66080 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
66081 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
66082 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
66083 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
66084 END DO
66085 buffer2 = 0.0_dp
66086 imax = 7*6*10
66087 kmax = 1
66088 DO i = 1, imax
66089 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
66090 END DO
66091 buffer1 = 0.0_dp
66092 imax = 7*1*10
66093 kmax = 6
66094 DO i = 1, imax
66095 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
66096 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
66097 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
66098 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
66099 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
66100 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
66101 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
66102 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
66103 END DO
66104 imax = 7*1*5
66105 kmax = 10
66106 i = 0
66107 DO i1 = 1, 5
66108 DO i2 = 1, 1
66109 DO i3 = 1, 7
66110 i = i + 1
66111 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
66112 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
66113 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
66114 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
66115 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
66116 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
66117 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
66118 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
66119 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
66120 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
66121 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
66122 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
66123 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
66124 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
66125 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
66126 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
66127 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
66128 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
66129 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
66130 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
66131 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
66132 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
66133 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
66134 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
66135 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
66136 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
66137 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
66138 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
66139 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
66140 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
66141 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
66142 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
66143 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
66144 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
66145 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
66146 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
66147 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
66148 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
66149 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
66150 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
66151 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
66152 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
66153 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
66154 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
66155 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
66156 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
66157 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
66158 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
66159 END DO
66160 END DO
66161 END DO
66162 s_offset_d1 = s_offset_d1 + 7
66163 END DO
66164 s_offset_c1 = s_offset_c1 + 5
66165 END DO
66166 s_offset_b1 = s_offset_b1 + 1
66167 END DO
66168 s_offset_a1 = s_offset_a1 + 7
66169 END DO
66170 END SUBROUTINE contract_fsdf
66171#endif
66172#if __MAX_CONTR > 4 || __MAX_CONTR == 4
66173! **************************************************************************************************
66174!> \brief ...
66175!> \param work ...
66176!> \param nl_a ...
66177!> \param nl_b ...
66178!> \param nl_c ...
66179!> \param nl_d ...
66180!> \param sphi_a ...
66181!> \param sphi_b ...
66182!> \param sphi_c ...
66183!> \param sphi_d ...
66184!> \param primitives ...
66185!> \param buffer1 ...
66186!> \param buffer2 ...
66187! **************************************************************************************************
66188 SUBROUTINE contract_fsdg(work, &
66189 nl_a, nl_b, nl_c, nl_d, &
66190 sphi_a, sphi_b, sphi_c, sphi_d, &
66191 primitives, &
66192 buffer1, buffer2)
66193 REAL(dp), DIMENSION(10*1*6*15), INTENT(IN) :: work
66194 INTEGER :: nl_a, nl_b, nl_c, nl_d
66195 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
66196 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
66197 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
66198 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
66199 REAL(dp), &
66200 DIMENSION(7*nl_a, 1*nl_b, 5*nl_c, 9*nl_d) :: primitives
66201 REAL(dp), DIMENSION(10*1*6*15) :: buffer1, buffer2
66202
66203 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
66204 kmax, s_offset_a1, s_offset_b1, &
66205 s_offset_c1, s_offset_d1
66206
66207 s_offset_a1 = 0
66208 DO ia = 1, nl_a
66209 s_offset_b1 = 0
66210 DO ib = 1, nl_b
66211 s_offset_c1 = 0
66212 DO ic = 1, nl_c
66213 s_offset_d1 = 0
66214 DO id = 1, nl_d
66215 buffer1 = 0.0_dp
66216 imax = 1*6*15
66217 kmax = 10
66218 DO i = 1, imax
66219 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
66220 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
66221 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
66222 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
66223 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
66224 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
66225 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
66226 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
66227 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
66228 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
66229 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
66230 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
66231 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
66232 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
66233 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
66234 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
66235 END DO
66236 buffer2 = 0.0_dp
66237 imax = 7*6*15
66238 kmax = 1
66239 DO i = 1, imax
66240 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
66241 END DO
66242 buffer1 = 0.0_dp
66243 imax = 7*1*15
66244 kmax = 6
66245 DO i = 1, imax
66246 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
66247 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
66248 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
66249 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
66250 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
66251 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
66252 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
66253 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
66254 END DO
66255 imax = 7*1*5
66256 kmax = 15
66257 i = 0
66258 DO i1 = 1, 5
66259 DO i2 = 1, 1
66260 DO i3 = 1, 7
66261 i = i + 1
66262 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
66263 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
66264 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
66265 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
66266 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
66267 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
66268 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
66269 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
66270 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
66271 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
66272 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
66273 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
66274 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
66275 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
66276 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
66277 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
66278 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
66279 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
66280 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
66281 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
66282 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
66283 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
66284 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
66285 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
66286 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
66287 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
66288 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
66289 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
66290 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
66291 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
66292 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
66293 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
66294 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
66295 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
66296 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
66297 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
66298 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
66299 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
66300 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
66301 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
66302 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
66303 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
66304 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
66305 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
66306 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
66307 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
66308 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
66309 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
66310 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
66311 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
66312 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
66313 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
66314 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
66315 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
66316 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
66317 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
66318 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
66319 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
66320 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
66321 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
66322 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
66323 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
66324 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
66325 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
66326 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
66327 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
66328 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
66329 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
66330 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
66331 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
66332 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
66333 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
66334 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
66335 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
66336 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
66337 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
66338 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
66339 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
66340 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
66341 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
66342 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
66343 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
66344 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
66345 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
66346 END DO
66347 END DO
66348 END DO
66349 s_offset_d1 = s_offset_d1 + 9
66350 END DO
66351 s_offset_c1 = s_offset_c1 + 5
66352 END DO
66353 s_offset_b1 = s_offset_b1 + 1
66354 END DO
66355 s_offset_a1 = s_offset_a1 + 7
66356 END DO
66357 END SUBROUTINE contract_fsdg
66358#endif
66359#if __MAX_CONTR > 3 || __MAX_CONTR == 3
66360! **************************************************************************************************
66361!> \brief ...
66362!> \param work ...
66363!> \param nl_a ...
66364!> \param nl_b ...
66365!> \param nl_c ...
66366!> \param nl_d ...
66367!> \param sphi_a ...
66368!> \param sphi_b ...
66369!> \param sphi_c ...
66370!> \param sphi_d ...
66371!> \param primitives ...
66372!> \param buffer1 ...
66373!> \param buffer2 ...
66374! **************************************************************************************************
66375 SUBROUTINE contract_fsfs(work, &
66376 nl_a, nl_b, nl_c, nl_d, &
66377 sphi_a, sphi_b, sphi_c, sphi_d, &
66378 primitives, &
66379 buffer1, buffer2)
66380 REAL(dp), DIMENSION(10*1*10*1), INTENT(IN) :: work
66381 INTEGER :: nl_a, nl_b, nl_c, nl_d
66382 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
66383 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
66384 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
66385 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
66386 REAL(dp), &
66387 DIMENSION(7*nl_a, 1*nl_b, 7*nl_c, 1*nl_d) :: primitives
66388 REAL(dp), DIMENSION(10*1*10*1) :: buffer1, buffer2
66389
66390 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
66391 kmax, s_offset_a1, s_offset_b1, &
66392 s_offset_c1, s_offset_d1
66393
66394 s_offset_a1 = 0
66395 DO ia = 1, nl_a
66396 s_offset_b1 = 0
66397 DO ib = 1, nl_b
66398 s_offset_c1 = 0
66399 DO ic = 1, nl_c
66400 s_offset_d1 = 0
66401 DO id = 1, nl_d
66402 buffer1 = 0.0_dp
66403 imax = 1*10*1
66404 kmax = 10
66405 DO i = 1, imax
66406 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
66407 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
66408 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
66409 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
66410 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
66411 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
66412 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
66413 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
66414 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
66415 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
66416 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
66417 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
66418 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
66419 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
66420 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
66421 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
66422 END DO
66423 buffer2 = 0.0_dp
66424 imax = 7*10*1
66425 kmax = 1
66426 DO i = 1, imax
66427 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
66428 END DO
66429 buffer1 = 0.0_dp
66430 imax = 7*1*1
66431 kmax = 10
66432 DO i = 1, imax
66433 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
66434 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
66435 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
66436 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
66437 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
66438 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
66439 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
66440 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
66441 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
66442 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
66443 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
66444 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
66445 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
66446 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
66447 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
66448 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
66449 END DO
66450 imax = 7*1*7
66451 kmax = 1
66452 i = 0
66453 DO i1 = 1, 7
66454 DO i2 = 1, 1
66455 DO i3 = 1, 7
66456 i = i + 1
66457 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
66458 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
66459 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
66460 END DO
66461 END DO
66462 END DO
66463 s_offset_d1 = s_offset_d1 + 1
66464 END DO
66465 s_offset_c1 = s_offset_c1 + 7
66466 END DO
66467 s_offset_b1 = s_offset_b1 + 1
66468 END DO
66469 s_offset_a1 = s_offset_a1 + 7
66470 END DO
66471 END SUBROUTINE contract_fsfs
66472#endif
66473#if __MAX_CONTR > 3 || __MAX_CONTR == 3
66474! **************************************************************************************************
66475!> \brief ...
66476!> \param work ...
66477!> \param nl_a ...
66478!> \param nl_b ...
66479!> \param nl_c ...
66480!> \param nl_d ...
66481!> \param sphi_a ...
66482!> \param sphi_b ...
66483!> \param sphi_c ...
66484!> \param sphi_d ...
66485!> \param primitives ...
66486!> \param buffer1 ...
66487!> \param buffer2 ...
66488! **************************************************************************************************
66489 SUBROUTINE contract_fsfp(work, &
66490 nl_a, nl_b, nl_c, nl_d, &
66491 sphi_a, sphi_b, sphi_c, sphi_d, &
66492 primitives, &
66493 buffer1, buffer2)
66494 REAL(dp), DIMENSION(10*1*10*3), INTENT(IN) :: work
66495 INTEGER :: nl_a, nl_b, nl_c, nl_d
66496 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
66497 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
66498 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
66499 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
66500 REAL(dp), &
66501 DIMENSION(7*nl_a, 1*nl_b, 7*nl_c, 3*nl_d) :: primitives
66502 REAL(dp), DIMENSION(10*1*10*3) :: buffer1, buffer2
66503
66504 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
66505 kmax, s_offset_a1, s_offset_b1, &
66506 s_offset_c1, s_offset_d1
66507
66508 s_offset_a1 = 0
66509 DO ia = 1, nl_a
66510 s_offset_b1 = 0
66511 DO ib = 1, nl_b
66512 s_offset_c1 = 0
66513 DO ic = 1, nl_c
66514 s_offset_d1 = 0
66515 DO id = 1, nl_d
66516 buffer1 = 0.0_dp
66517 imax = 1*10*3
66518 kmax = 10
66519 DO i = 1, imax
66520 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
66521 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
66522 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
66523 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
66524 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
66525 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
66526 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
66527 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
66528 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
66529 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
66530 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
66531 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
66532 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
66533 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
66534 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
66535 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
66536 END DO
66537 buffer2 = 0.0_dp
66538 imax = 7*10*3
66539 kmax = 1
66540 DO i = 1, imax
66541 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
66542 END DO
66543 buffer1 = 0.0_dp
66544 imax = 7*1*3
66545 kmax = 10
66546 DO i = 1, imax
66547 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
66548 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
66549 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
66550 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
66551 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
66552 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
66553 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
66554 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
66555 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
66556 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
66557 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
66558 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
66559 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
66560 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
66561 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
66562 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
66563 END DO
66564 imax = 7*1*7
66565 kmax = 3
66566 i = 0
66567 DO i1 = 1, 7
66568 DO i2 = 1, 1
66569 DO i3 = 1, 7
66570 i = i + 1
66571 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
66572 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
66573 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
66574 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
66575 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
66576 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
66577 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
66578 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
66579 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
66580 END DO
66581 END DO
66582 END DO
66583 s_offset_d1 = s_offset_d1 + 3
66584 END DO
66585 s_offset_c1 = s_offset_c1 + 7
66586 END DO
66587 s_offset_b1 = s_offset_b1 + 1
66588 END DO
66589 s_offset_a1 = s_offset_a1 + 7
66590 END DO
66591 END SUBROUTINE contract_fsfp
66592#endif
66593#if __MAX_CONTR > 3 || __MAX_CONTR == 3
66594! **************************************************************************************************
66595!> \brief ...
66596!> \param work ...
66597!> \param nl_a ...
66598!> \param nl_b ...
66599!> \param nl_c ...
66600!> \param nl_d ...
66601!> \param sphi_a ...
66602!> \param sphi_b ...
66603!> \param sphi_c ...
66604!> \param sphi_d ...
66605!> \param primitives ...
66606!> \param buffer1 ...
66607!> \param buffer2 ...
66608! **************************************************************************************************
66609 SUBROUTINE contract_fsfd(work, &
66610 nl_a, nl_b, nl_c, nl_d, &
66611 sphi_a, sphi_b, sphi_c, sphi_d, &
66612 primitives, &
66613 buffer1, buffer2)
66614 REAL(dp), DIMENSION(10*1*10*6), INTENT(IN) :: work
66615 INTEGER :: nl_a, nl_b, nl_c, nl_d
66616 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
66617 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
66618 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
66619 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
66620 REAL(dp), &
66621 DIMENSION(7*nl_a, 1*nl_b, 7*nl_c, 5*nl_d) :: primitives
66622 REAL(dp), DIMENSION(10*1*10*6) :: buffer1, buffer2
66623
66624 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
66625 kmax, s_offset_a1, s_offset_b1, &
66626 s_offset_c1, s_offset_d1
66627
66628 s_offset_a1 = 0
66629 DO ia = 1, nl_a
66630 s_offset_b1 = 0
66631 DO ib = 1, nl_b
66632 s_offset_c1 = 0
66633 DO ic = 1, nl_c
66634 s_offset_d1 = 0
66635 DO id = 1, nl_d
66636 buffer1 = 0.0_dp
66637 imax = 1*10*6
66638 kmax = 10
66639 DO i = 1, imax
66640 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
66641 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
66642 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
66643 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
66644 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
66645 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
66646 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
66647 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
66648 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
66649 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
66650 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
66651 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
66652 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
66653 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
66654 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
66655 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
66656 END DO
66657 buffer2 = 0.0_dp
66658 imax = 7*10*6
66659 kmax = 1
66660 DO i = 1, imax
66661 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
66662 END DO
66663 buffer1 = 0.0_dp
66664 imax = 7*1*6
66665 kmax = 10
66666 DO i = 1, imax
66667 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
66668 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
66669 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
66670 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
66671 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
66672 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
66673 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
66674 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
66675 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
66676 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
66677 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
66678 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
66679 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
66680 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
66681 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
66682 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
66683 END DO
66684 imax = 7*1*7
66685 kmax = 6
66686 i = 0
66687 DO i1 = 1, 7
66688 DO i2 = 1, 1
66689 DO i3 = 1, 7
66690 i = i + 1
66691 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
66692 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
66693 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
66694 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
66695 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
66696 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
66697 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
66698 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
66699 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
66700 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
66701 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
66702 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
66703 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
66704 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
66705 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
66706 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
66707 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
66708 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
66709 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
66710 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
66711 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
66712 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
66713 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
66714 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
66715 END DO
66716 END DO
66717 END DO
66718 s_offset_d1 = s_offset_d1 + 5
66719 END DO
66720 s_offset_c1 = s_offset_c1 + 7
66721 END DO
66722 s_offset_b1 = s_offset_b1 + 1
66723 END DO
66724 s_offset_a1 = s_offset_a1 + 7
66725 END DO
66726 END SUBROUTINE contract_fsfd
66727#endif
66728#if __MAX_CONTR > 3 || __MAX_CONTR == 3
66729! **************************************************************************************************
66730!> \brief ...
66731!> \param work ...
66732!> \param nl_a ...
66733!> \param nl_b ...
66734!> \param nl_c ...
66735!> \param nl_d ...
66736!> \param sphi_a ...
66737!> \param sphi_b ...
66738!> \param sphi_c ...
66739!> \param sphi_d ...
66740!> \param primitives ...
66741!> \param buffer1 ...
66742!> \param buffer2 ...
66743! **************************************************************************************************
66744 SUBROUTINE contract_fsff(work, &
66745 nl_a, nl_b, nl_c, nl_d, &
66746 sphi_a, sphi_b, sphi_c, sphi_d, &
66747 primitives, &
66748 buffer1, buffer2)
66749 REAL(dp), DIMENSION(10*1*10*10), INTENT(IN) :: work
66750 INTEGER :: nl_a, nl_b, nl_c, nl_d
66751 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
66752 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
66753 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
66754 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
66755 REAL(dp), &
66756 DIMENSION(7*nl_a, 1*nl_b, 7*nl_c, 7*nl_d) :: primitives
66757 REAL(dp), DIMENSION(10*1*10*10) :: buffer1, buffer2
66758
66759 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
66760 kmax, s_offset_a1, s_offset_b1, &
66761 s_offset_c1, s_offset_d1
66762
66763 s_offset_a1 = 0
66764 DO ia = 1, nl_a
66765 s_offset_b1 = 0
66766 DO ib = 1, nl_b
66767 s_offset_c1 = 0
66768 DO ic = 1, nl_c
66769 s_offset_d1 = 0
66770 DO id = 1, nl_d
66771 buffer1 = 0.0_dp
66772 imax = 1*10*10
66773 kmax = 10
66774 DO i = 1, imax
66775 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
66776 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
66777 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
66778 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
66779 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
66780 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
66781 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
66782 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
66783 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
66784 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
66785 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
66786 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
66787 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
66788 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
66789 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
66790 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
66791 END DO
66792 buffer2 = 0.0_dp
66793 imax = 7*10*10
66794 kmax = 1
66795 DO i = 1, imax
66796 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
66797 END DO
66798 buffer1 = 0.0_dp
66799 imax = 7*1*10
66800 kmax = 10
66801 DO i = 1, imax
66802 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
66803 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
66804 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
66805 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
66806 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
66807 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
66808 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
66809 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
66810 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
66811 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
66812 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
66813 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
66814 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
66815 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
66816 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
66817 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
66818 END DO
66819 imax = 7*1*7
66820 kmax = 10
66821 i = 0
66822 DO i1 = 1, 7
66823 DO i2 = 1, 1
66824 DO i3 = 1, 7
66825 i = i + 1
66826 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
66827 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
66828 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
66829 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
66830 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
66831 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
66832 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
66833 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
66834 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
66835 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
66836 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
66837 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
66838 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
66839 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
66840 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
66841 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
66842 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
66843 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
66844 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
66845 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
66846 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
66847 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
66848 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
66849 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
66850 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
66851 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
66852 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
66853 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
66854 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
66855 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
66856 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
66857 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
66858 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
66859 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
66860 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
66861 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
66862 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
66863 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
66864 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
66865 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
66866 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
66867 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
66868 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
66869 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
66870 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
66871 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
66872 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
66873 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
66874 END DO
66875 END DO
66876 END DO
66877 s_offset_d1 = s_offset_d1 + 7
66878 END DO
66879 s_offset_c1 = s_offset_c1 + 7
66880 END DO
66881 s_offset_b1 = s_offset_b1 + 1
66882 END DO
66883 s_offset_a1 = s_offset_a1 + 7
66884 END DO
66885 END SUBROUTINE contract_fsff
66886#endif
66887#if __MAX_CONTR > 4 || __MAX_CONTR == 4
66888! **************************************************************************************************
66889!> \brief ...
66890!> \param work ...
66891!> \param nl_a ...
66892!> \param nl_b ...
66893!> \param nl_c ...
66894!> \param nl_d ...
66895!> \param sphi_a ...
66896!> \param sphi_b ...
66897!> \param sphi_c ...
66898!> \param sphi_d ...
66899!> \param primitives ...
66900!> \param buffer1 ...
66901!> \param buffer2 ...
66902! **************************************************************************************************
66903 SUBROUTINE contract_fsfg(work, &
66904 nl_a, nl_b, nl_c, nl_d, &
66905 sphi_a, sphi_b, sphi_c, sphi_d, &
66906 primitives, &
66907 buffer1, buffer2)
66908 REAL(dp), DIMENSION(10*1*10*15), INTENT(IN) :: work
66909 INTEGER :: nl_a, nl_b, nl_c, nl_d
66910 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
66911 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
66912 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
66913 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
66914 REAL(dp), &
66915 DIMENSION(7*nl_a, 1*nl_b, 7*nl_c, 9*nl_d) :: primitives
66916 REAL(dp), DIMENSION(10*1*10*15) :: buffer1, buffer2
66917
66918 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
66919 kmax, s_offset_a1, s_offset_b1, &
66920 s_offset_c1, s_offset_d1
66921
66922 s_offset_a1 = 0
66923 DO ia = 1, nl_a
66924 s_offset_b1 = 0
66925 DO ib = 1, nl_b
66926 s_offset_c1 = 0
66927 DO ic = 1, nl_c
66928 s_offset_d1 = 0
66929 DO id = 1, nl_d
66930 buffer1 = 0.0_dp
66931 imax = 1*10*15
66932 kmax = 10
66933 DO i = 1, imax
66934 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
66935 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
66936 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
66937 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
66938 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
66939 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
66940 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
66941 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
66942 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
66943 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
66944 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
66945 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
66946 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
66947 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
66948 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
66949 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
66950 END DO
66951 buffer2 = 0.0_dp
66952 imax = 7*10*15
66953 kmax = 1
66954 DO i = 1, imax
66955 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
66956 END DO
66957 buffer1 = 0.0_dp
66958 imax = 7*1*15
66959 kmax = 10
66960 DO i = 1, imax
66961 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
66962 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
66963 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
66964 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
66965 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
66966 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
66967 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
66968 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
66969 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
66970 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
66971 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
66972 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
66973 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
66974 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
66975 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
66976 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
66977 END DO
66978 imax = 7*1*7
66979 kmax = 15
66980 i = 0
66981 DO i1 = 1, 7
66982 DO i2 = 1, 1
66983 DO i3 = 1, 7
66984 i = i + 1
66985 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
66986 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
66987 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
66988 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
66989 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
66990 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
66991 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
66992 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
66993 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
66994 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
66995 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
66996 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
66997 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
66998 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
66999 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
67000 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
67001 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
67002 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
67003 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
67004 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
67005 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
67006 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
67007 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
67008 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
67009 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
67010 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
67011 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
67012 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
67013 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
67014 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
67015 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
67016 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
67017 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
67018 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
67019 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
67020 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
67021 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
67022 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
67023 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
67024 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
67025 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
67026 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
67027 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
67028 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
67029 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
67030 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
67031 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
67032 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
67033 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
67034 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
67035 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
67036 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
67037 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
67038 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
67039 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
67040 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
67041 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
67042 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
67043 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
67044 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
67045 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
67046 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
67047 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
67048 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
67049 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
67050 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
67051 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
67052 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
67053 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
67054 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
67055 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
67056 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
67057 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
67058 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
67059 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
67060 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
67061 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
67062 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
67063 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
67064 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
67065 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
67066 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
67067 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
67068 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
67069 END DO
67070 END DO
67071 END DO
67072 s_offset_d1 = s_offset_d1 + 9
67073 END DO
67074 s_offset_c1 = s_offset_c1 + 7
67075 END DO
67076 s_offset_b1 = s_offset_b1 + 1
67077 END DO
67078 s_offset_a1 = s_offset_a1 + 7
67079 END DO
67080 END SUBROUTINE contract_fsfg
67081#endif
67082#if __MAX_CONTR > 4 || __MAX_CONTR == 4
67083! **************************************************************************************************
67084!> \brief ...
67085!> \param work ...
67086!> \param nl_a ...
67087!> \param nl_b ...
67088!> \param nl_c ...
67089!> \param nl_d ...
67090!> \param sphi_a ...
67091!> \param sphi_b ...
67092!> \param sphi_c ...
67093!> \param sphi_d ...
67094!> \param primitives ...
67095!> \param buffer1 ...
67096!> \param buffer2 ...
67097! **************************************************************************************************
67098 SUBROUTINE contract_fsgs(work, &
67099 nl_a, nl_b, nl_c, nl_d, &
67100 sphi_a, sphi_b, sphi_c, sphi_d, &
67101 primitives, &
67102 buffer1, buffer2)
67103 REAL(dp), DIMENSION(10*1*15*1), INTENT(IN) :: work
67104 INTEGER :: nl_a, nl_b, nl_c, nl_d
67105 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
67106 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
67107 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
67108 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
67109 REAL(dp), &
67110 DIMENSION(7*nl_a, 1*nl_b, 9*nl_c, 1*nl_d) :: primitives
67111 REAL(dp), DIMENSION(10*1*15*1) :: buffer1, buffer2
67112
67113 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
67114 kmax, s_offset_a1, s_offset_b1, &
67115 s_offset_c1, s_offset_d1
67116
67117 s_offset_a1 = 0
67118 DO ia = 1, nl_a
67119 s_offset_b1 = 0
67120 DO ib = 1, nl_b
67121 s_offset_c1 = 0
67122 DO ic = 1, nl_c
67123 s_offset_d1 = 0
67124 DO id = 1, nl_d
67125 buffer1 = 0.0_dp
67126 imax = 1*15*1
67127 kmax = 10
67128 DO i = 1, imax
67129 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
67130 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
67131 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
67132 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
67133 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
67134 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
67135 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
67136 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
67137 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
67138 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
67139 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
67140 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
67141 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
67142 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
67143 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
67144 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
67145 END DO
67146 buffer2 = 0.0_dp
67147 imax = 7*15*1
67148 kmax = 1
67149 DO i = 1, imax
67150 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
67151 END DO
67152 buffer1 = 0.0_dp
67153 imax = 7*1*1
67154 kmax = 15
67155 DO i = 1, imax
67156 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
67157 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
67158 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
67159 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
67160 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
67161 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
67162 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
67163 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
67164 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
67165 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
67166 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
67167 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
67168 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
67169 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
67170 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
67171 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
67172 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
67173 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
67174 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
67175 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
67176 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
67177 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
67178 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
67179 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
67180 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
67181 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
67182 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
67183 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
67184 END DO
67185 imax = 7*1*9
67186 kmax = 1
67187 i = 0
67188 DO i1 = 1, 9
67189 DO i2 = 1, 1
67190 DO i3 = 1, 7
67191 i = i + 1
67192 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
67193 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
67194 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
67195 END DO
67196 END DO
67197 END DO
67198 s_offset_d1 = s_offset_d1 + 1
67199 END DO
67200 s_offset_c1 = s_offset_c1 + 9
67201 END DO
67202 s_offset_b1 = s_offset_b1 + 1
67203 END DO
67204 s_offset_a1 = s_offset_a1 + 7
67205 END DO
67206 END SUBROUTINE contract_fsgs
67207#endif
67208#if __MAX_CONTR > 4 || __MAX_CONTR == 4
67209! **************************************************************************************************
67210!> \brief ...
67211!> \param work ...
67212!> \param nl_a ...
67213!> \param nl_b ...
67214!> \param nl_c ...
67215!> \param nl_d ...
67216!> \param sphi_a ...
67217!> \param sphi_b ...
67218!> \param sphi_c ...
67219!> \param sphi_d ...
67220!> \param primitives ...
67221!> \param buffer1 ...
67222!> \param buffer2 ...
67223! **************************************************************************************************
67224 SUBROUTINE contract_fsgp(work, &
67225 nl_a, nl_b, nl_c, nl_d, &
67226 sphi_a, sphi_b, sphi_c, sphi_d, &
67227 primitives, &
67228 buffer1, buffer2)
67229 REAL(dp), DIMENSION(10*1*15*3), INTENT(IN) :: work
67230 INTEGER :: nl_a, nl_b, nl_c, nl_d
67231 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
67232 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
67233 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
67234 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
67235 REAL(dp), &
67236 DIMENSION(7*nl_a, 1*nl_b, 9*nl_c, 3*nl_d) :: primitives
67237 REAL(dp), DIMENSION(10*1*15*3) :: buffer1, buffer2
67238
67239 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
67240 kmax, s_offset_a1, s_offset_b1, &
67241 s_offset_c1, s_offset_d1
67242
67243 s_offset_a1 = 0
67244 DO ia = 1, nl_a
67245 s_offset_b1 = 0
67246 DO ib = 1, nl_b
67247 s_offset_c1 = 0
67248 DO ic = 1, nl_c
67249 s_offset_d1 = 0
67250 DO id = 1, nl_d
67251 buffer1 = 0.0_dp
67252 imax = 1*15*3
67253 kmax = 10
67254 DO i = 1, imax
67255 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
67256 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
67257 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
67258 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
67259 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
67260 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
67261 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
67262 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
67263 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
67264 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
67265 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
67266 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
67267 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
67268 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
67269 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
67270 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
67271 END DO
67272 buffer2 = 0.0_dp
67273 imax = 7*15*3
67274 kmax = 1
67275 DO i = 1, imax
67276 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
67277 END DO
67278 buffer1 = 0.0_dp
67279 imax = 7*1*3
67280 kmax = 15
67281 DO i = 1, imax
67282 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
67283 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
67284 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
67285 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
67286 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
67287 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
67288 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
67289 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
67290 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
67291 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
67292 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
67293 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
67294 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
67295 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
67296 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
67297 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
67298 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
67299 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
67300 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
67301 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
67302 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
67303 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
67304 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
67305 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
67306 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
67307 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
67308 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
67309 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
67310 END DO
67311 imax = 7*1*9
67312 kmax = 3
67313 i = 0
67314 DO i1 = 1, 9
67315 DO i2 = 1, 1
67316 DO i3 = 1, 7
67317 i = i + 1
67318 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
67319 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
67320 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
67321 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
67322 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
67323 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
67324 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
67325 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
67326 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
67327 END DO
67328 END DO
67329 END DO
67330 s_offset_d1 = s_offset_d1 + 3
67331 END DO
67332 s_offset_c1 = s_offset_c1 + 9
67333 END DO
67334 s_offset_b1 = s_offset_b1 + 1
67335 END DO
67336 s_offset_a1 = s_offset_a1 + 7
67337 END DO
67338 END SUBROUTINE contract_fsgp
67339#endif
67340#if __MAX_CONTR > 4 || __MAX_CONTR == 4
67341! **************************************************************************************************
67342!> \brief ...
67343!> \param work ...
67344!> \param nl_a ...
67345!> \param nl_b ...
67346!> \param nl_c ...
67347!> \param nl_d ...
67348!> \param sphi_a ...
67349!> \param sphi_b ...
67350!> \param sphi_c ...
67351!> \param sphi_d ...
67352!> \param primitives ...
67353!> \param buffer1 ...
67354!> \param buffer2 ...
67355! **************************************************************************************************
67356 SUBROUTINE contract_fsgd(work, &
67357 nl_a, nl_b, nl_c, nl_d, &
67358 sphi_a, sphi_b, sphi_c, sphi_d, &
67359 primitives, &
67360 buffer1, buffer2)
67361 REAL(dp), DIMENSION(10*1*15*6), INTENT(IN) :: work
67362 INTEGER :: nl_a, nl_b, nl_c, nl_d
67363 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
67364 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
67365 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
67366 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
67367 REAL(dp), &
67368 DIMENSION(7*nl_a, 1*nl_b, 9*nl_c, 5*nl_d) :: primitives
67369 REAL(dp), DIMENSION(10*1*15*6) :: buffer1, buffer2
67370
67371 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
67372 kmax, s_offset_a1, s_offset_b1, &
67373 s_offset_c1, s_offset_d1
67374
67375 s_offset_a1 = 0
67376 DO ia = 1, nl_a
67377 s_offset_b1 = 0
67378 DO ib = 1, nl_b
67379 s_offset_c1 = 0
67380 DO ic = 1, nl_c
67381 s_offset_d1 = 0
67382 DO id = 1, nl_d
67383 buffer1 = 0.0_dp
67384 imax = 1*15*6
67385 kmax = 10
67386 DO i = 1, imax
67387 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
67388 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
67389 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
67390 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
67391 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
67392 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
67393 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
67394 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
67395 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
67396 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
67397 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
67398 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
67399 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
67400 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
67401 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
67402 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
67403 END DO
67404 buffer2 = 0.0_dp
67405 imax = 7*15*6
67406 kmax = 1
67407 DO i = 1, imax
67408 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
67409 END DO
67410 buffer1 = 0.0_dp
67411 imax = 7*1*6
67412 kmax = 15
67413 DO i = 1, imax
67414 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
67415 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
67416 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
67417 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
67418 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
67419 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
67420 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
67421 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
67422 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
67423 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
67424 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
67425 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
67426 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
67427 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
67428 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
67429 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
67430 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
67431 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
67432 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
67433 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
67434 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
67435 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
67436 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
67437 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
67438 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
67439 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
67440 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
67441 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
67442 END DO
67443 imax = 7*1*9
67444 kmax = 6
67445 i = 0
67446 DO i1 = 1, 9
67447 DO i2 = 1, 1
67448 DO i3 = 1, 7
67449 i = i + 1
67450 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
67451 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
67452 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
67453 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
67454 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
67455 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
67456 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
67457 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
67458 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
67459 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
67460 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
67461 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
67462 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
67463 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
67464 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
67465 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
67466 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
67467 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
67468 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
67469 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
67470 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
67471 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
67472 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
67473 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
67474 END DO
67475 END DO
67476 END DO
67477 s_offset_d1 = s_offset_d1 + 5
67478 END DO
67479 s_offset_c1 = s_offset_c1 + 9
67480 END DO
67481 s_offset_b1 = s_offset_b1 + 1
67482 END DO
67483 s_offset_a1 = s_offset_a1 + 7
67484 END DO
67485 END SUBROUTINE contract_fsgd
67486#endif
67487#if __MAX_CONTR > 4 || __MAX_CONTR == 4
67488! **************************************************************************************************
67489!> \brief ...
67490!> \param work ...
67491!> \param nl_a ...
67492!> \param nl_b ...
67493!> \param nl_c ...
67494!> \param nl_d ...
67495!> \param sphi_a ...
67496!> \param sphi_b ...
67497!> \param sphi_c ...
67498!> \param sphi_d ...
67499!> \param primitives ...
67500!> \param buffer1 ...
67501!> \param buffer2 ...
67502! **************************************************************************************************
67503 SUBROUTINE contract_fsgf(work, &
67504 nl_a, nl_b, nl_c, nl_d, &
67505 sphi_a, sphi_b, sphi_c, sphi_d, &
67506 primitives, &
67507 buffer1, buffer2)
67508 REAL(dp), DIMENSION(10*1*15*10), INTENT(IN) :: work
67509 INTEGER :: nl_a, nl_b, nl_c, nl_d
67510 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
67511 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
67512 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
67513 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
67514 REAL(dp), &
67515 DIMENSION(7*nl_a, 1*nl_b, 9*nl_c, 7*nl_d) :: primitives
67516 REAL(dp), DIMENSION(10*1*15*10) :: buffer1, buffer2
67517
67518 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
67519 kmax, s_offset_a1, s_offset_b1, &
67520 s_offset_c1, s_offset_d1
67521
67522 s_offset_a1 = 0
67523 DO ia = 1, nl_a
67524 s_offset_b1 = 0
67525 DO ib = 1, nl_b
67526 s_offset_c1 = 0
67527 DO ic = 1, nl_c
67528 s_offset_d1 = 0
67529 DO id = 1, nl_d
67530 buffer1 = 0.0_dp
67531 imax = 1*15*10
67532 kmax = 10
67533 DO i = 1, imax
67534 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
67535 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
67536 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
67537 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
67538 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
67539 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
67540 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
67541 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
67542 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
67543 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
67544 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
67545 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
67546 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
67547 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
67548 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
67549 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
67550 END DO
67551 buffer2 = 0.0_dp
67552 imax = 7*15*10
67553 kmax = 1
67554 DO i = 1, imax
67555 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
67556 END DO
67557 buffer1 = 0.0_dp
67558 imax = 7*1*10
67559 kmax = 15
67560 DO i = 1, imax
67561 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
67562 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
67563 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
67564 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
67565 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
67566 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
67567 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
67568 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
67569 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
67570 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
67571 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
67572 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
67573 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
67574 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
67575 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
67576 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
67577 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
67578 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
67579 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
67580 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
67581 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
67582 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
67583 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
67584 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
67585 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
67586 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
67587 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
67588 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
67589 END DO
67590 imax = 7*1*9
67591 kmax = 10
67592 i = 0
67593 DO i1 = 1, 9
67594 DO i2 = 1, 1
67595 DO i3 = 1, 7
67596 i = i + 1
67597 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
67598 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
67599 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
67600 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
67601 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
67602 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
67603 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
67604 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
67605 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
67606 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
67607 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
67608 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
67609 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
67610 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
67611 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
67612 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
67613 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
67614 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
67615 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
67616 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
67617 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
67618 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
67619 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
67620 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
67621 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
67622 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
67623 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
67624 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
67625 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
67626 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
67627 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
67628 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
67629 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
67630 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
67631 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
67632 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
67633 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
67634 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
67635 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
67636 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
67637 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
67638 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
67639 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
67640 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
67641 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
67642 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
67643 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
67644 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
67645 END DO
67646 END DO
67647 END DO
67648 s_offset_d1 = s_offset_d1 + 7
67649 END DO
67650 s_offset_c1 = s_offset_c1 + 9
67651 END DO
67652 s_offset_b1 = s_offset_b1 + 1
67653 END DO
67654 s_offset_a1 = s_offset_a1 + 7
67655 END DO
67656 END SUBROUTINE contract_fsgf
67657#endif
67658#if __MAX_CONTR > 4 || __MAX_CONTR == 4
67659! **************************************************************************************************
67660!> \brief ...
67661!> \param work ...
67662!> \param nl_a ...
67663!> \param nl_b ...
67664!> \param nl_c ...
67665!> \param nl_d ...
67666!> \param sphi_a ...
67667!> \param sphi_b ...
67668!> \param sphi_c ...
67669!> \param sphi_d ...
67670!> \param primitives ...
67671!> \param buffer1 ...
67672!> \param buffer2 ...
67673! **************************************************************************************************
67674 SUBROUTINE contract_fsgg(work, &
67675 nl_a, nl_b, nl_c, nl_d, &
67676 sphi_a, sphi_b, sphi_c, sphi_d, &
67677 primitives, &
67678 buffer1, buffer2)
67679 REAL(dp), DIMENSION(10*1*15*15), INTENT(IN) :: work
67680 INTEGER :: nl_a, nl_b, nl_c, nl_d
67681 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
67682 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
67683 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
67684 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
67685 REAL(dp), &
67686 DIMENSION(7*nl_a, 1*nl_b, 9*nl_c, 9*nl_d) :: primitives
67687 REAL(dp), DIMENSION(10*1*15*15) :: buffer1, buffer2
67688
67689 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
67690 kmax, s_offset_a1, s_offset_b1, &
67691 s_offset_c1, s_offset_d1
67692
67693 s_offset_a1 = 0
67694 DO ia = 1, nl_a
67695 s_offset_b1 = 0
67696 DO ib = 1, nl_b
67697 s_offset_c1 = 0
67698 DO ic = 1, nl_c
67699 s_offset_d1 = 0
67700 DO id = 1, nl_d
67701 buffer1 = 0.0_dp
67702 imax = 1*15*15
67703 kmax = 10
67704 DO i = 1, imax
67705 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
67706 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
67707 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
67708 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
67709 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
67710 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
67711 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
67712 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
67713 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
67714 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
67715 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
67716 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
67717 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
67718 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
67719 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
67720 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
67721 END DO
67722 buffer2 = 0.0_dp
67723 imax = 7*15*15
67724 kmax = 1
67725 DO i = 1, imax
67726 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
67727 END DO
67728 buffer1 = 0.0_dp
67729 imax = 7*1*15
67730 kmax = 15
67731 DO i = 1, imax
67732 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
67733 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
67734 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
67735 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
67736 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
67737 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
67738 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
67739 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
67740 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
67741 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
67742 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
67743 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
67744 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
67745 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
67746 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
67747 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
67748 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
67749 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
67750 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
67751 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
67752 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
67753 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
67754 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
67755 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
67756 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
67757 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
67758 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
67759 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
67760 END DO
67761 imax = 7*1*9
67762 kmax = 15
67763 i = 0
67764 DO i1 = 1, 9
67765 DO i2 = 1, 1
67766 DO i3 = 1, 7
67767 i = i + 1
67768 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
67769 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
67770 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
67771 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
67772 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
67773 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
67774 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
67775 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
67776 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
67777 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
67778 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
67779 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
67780 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
67781 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
67782 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
67783 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
67784 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
67785 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
67786 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
67787 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
67788 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
67789 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
67790 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
67791 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
67792 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
67793 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
67794 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
67795 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
67796 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
67797 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
67798 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
67799 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
67800 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
67801 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
67802 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
67803 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
67804 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
67805 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
67806 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
67807 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
67808 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
67809 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
67810 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
67811 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
67812 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
67813 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
67814 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
67815 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
67816 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
67817 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
67818 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
67819 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
67820 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
67821 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
67822 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
67823 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
67824 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
67825 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
67826 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
67827 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
67828 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
67829 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
67830 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
67831 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
67832 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
67833 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
67834 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
67835 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
67836 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
67837 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
67838 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
67839 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
67840 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
67841 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
67842 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
67843 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
67844 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
67845 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
67846 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
67847 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
67848 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
67849 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
67850 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
67851 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
67852 END DO
67853 END DO
67854 END DO
67855 s_offset_d1 = s_offset_d1 + 9
67856 END DO
67857 s_offset_c1 = s_offset_c1 + 9
67858 END DO
67859 s_offset_b1 = s_offset_b1 + 1
67860 END DO
67861 s_offset_a1 = s_offset_a1 + 7
67862 END DO
67863 END SUBROUTINE contract_fsgg
67864#endif
67865#if __MAX_CONTR > 3 || __MAX_CONTR == 3
67866! **************************************************************************************************
67867!> \brief ...
67868!> \param work ...
67869!> \param nl_a ...
67870!> \param nl_b ...
67871!> \param nl_c ...
67872!> \param nl_d ...
67873!> \param sphi_a ...
67874!> \param sphi_b ...
67875!> \param sphi_c ...
67876!> \param sphi_d ...
67877!> \param primitives ...
67878!> \param buffer1 ...
67879!> \param buffer2 ...
67880! **************************************************************************************************
67881 SUBROUTINE contract_fpss(work, &
67882 nl_a, nl_b, nl_c, nl_d, &
67883 sphi_a, sphi_b, sphi_c, sphi_d, &
67884 primitives, &
67885 buffer1, buffer2)
67886 REAL(dp), DIMENSION(10*3*1*1), INTENT(IN) :: work
67887 INTEGER :: nl_a, nl_b, nl_c, nl_d
67888 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
67889 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
67890 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
67891 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
67892 REAL(dp), &
67893 DIMENSION(7*nl_a, 3*nl_b, 1*nl_c, 1*nl_d) :: primitives
67894 REAL(dp), DIMENSION(10*3*1*1) :: buffer1, buffer2
67895
67896 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
67897 kmax, s_offset_a1, s_offset_b1, &
67898 s_offset_c1, s_offset_d1
67899
67900 s_offset_a1 = 0
67901 DO ia = 1, nl_a
67902 s_offset_b1 = 0
67903 DO ib = 1, nl_b
67904 s_offset_c1 = 0
67905 DO ic = 1, nl_c
67906 s_offset_d1 = 0
67907 DO id = 1, nl_d
67908 buffer1 = 0.0_dp
67909 imax = 3*1*1
67910 kmax = 10
67911 DO i = 1, imax
67912 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
67913 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
67914 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
67915 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
67916 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
67917 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
67918 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
67919 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
67920 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
67921 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
67922 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
67923 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
67924 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
67925 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
67926 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
67927 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
67928 END DO
67929 buffer2 = 0.0_dp
67930 imax = 7*1*1
67931 kmax = 3
67932 DO i = 1, imax
67933 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
67934 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
67935 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
67936 END DO
67937 buffer1 = 0.0_dp
67938 imax = 7*3*1
67939 kmax = 1
67940 DO i = 1, imax
67941 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
67942 END DO
67943 imax = 7*3*1
67944 kmax = 1
67945 i = 0
67946 DO i1 = 1, 1
67947 DO i2 = 1, 3
67948 DO i3 = 1, 7
67949 i = i + 1
67950 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
67951 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
67952 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
67953 END DO
67954 END DO
67955 END DO
67956 s_offset_d1 = s_offset_d1 + 1
67957 END DO
67958 s_offset_c1 = s_offset_c1 + 1
67959 END DO
67960 s_offset_b1 = s_offset_b1 + 3
67961 END DO
67962 s_offset_a1 = s_offset_a1 + 7
67963 END DO
67964 END SUBROUTINE contract_fpss
67965#endif
67966#if __MAX_CONTR > 3 || __MAX_CONTR == 3
67967! **************************************************************************************************
67968!> \brief ...
67969!> \param work ...
67970!> \param nl_a ...
67971!> \param nl_b ...
67972!> \param nl_c ...
67973!> \param nl_d ...
67974!> \param sphi_a ...
67975!> \param sphi_b ...
67976!> \param sphi_c ...
67977!> \param sphi_d ...
67978!> \param primitives ...
67979!> \param buffer1 ...
67980!> \param buffer2 ...
67981! **************************************************************************************************
67982 SUBROUTINE contract_fpsp(work, &
67983 nl_a, nl_b, nl_c, nl_d, &
67984 sphi_a, sphi_b, sphi_c, sphi_d, &
67985 primitives, &
67986 buffer1, buffer2)
67987 REAL(dp), DIMENSION(10*3*1*3), INTENT(IN) :: work
67988 INTEGER :: nl_a, nl_b, nl_c, nl_d
67989 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
67990 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
67991 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
67992 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
67993 REAL(dp), &
67994 DIMENSION(7*nl_a, 3*nl_b, 1*nl_c, 3*nl_d) :: primitives
67995 REAL(dp), DIMENSION(10*3*1*3) :: buffer1, buffer2
67996
67997 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
67998 kmax, s_offset_a1, s_offset_b1, &
67999 s_offset_c1, s_offset_d1
68000
68001 s_offset_a1 = 0
68002 DO ia = 1, nl_a
68003 s_offset_b1 = 0
68004 DO ib = 1, nl_b
68005 s_offset_c1 = 0
68006 DO ic = 1, nl_c
68007 s_offset_d1 = 0
68008 DO id = 1, nl_d
68009 buffer1 = 0.0_dp
68010 imax = 3*1*3
68011 kmax = 10
68012 DO i = 1, imax
68013 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
68014 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
68015 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
68016 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
68017 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
68018 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
68019 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
68020 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
68021 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
68022 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
68023 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
68024 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
68025 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
68026 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
68027 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
68028 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
68029 END DO
68030 buffer2 = 0.0_dp
68031 imax = 7*1*3
68032 kmax = 3
68033 DO i = 1, imax
68034 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
68035 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
68036 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
68037 END DO
68038 buffer1 = 0.0_dp
68039 imax = 7*3*3
68040 kmax = 1
68041 DO i = 1, imax
68042 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
68043 END DO
68044 imax = 7*3*1
68045 kmax = 3
68046 i = 0
68047 DO i1 = 1, 1
68048 DO i2 = 1, 3
68049 DO i3 = 1, 7
68050 i = i + 1
68051 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
68052 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
68053 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
68054 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
68055 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
68056 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
68057 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
68058 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
68059 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
68060 END DO
68061 END DO
68062 END DO
68063 s_offset_d1 = s_offset_d1 + 3
68064 END DO
68065 s_offset_c1 = s_offset_c1 + 1
68066 END DO
68067 s_offset_b1 = s_offset_b1 + 3
68068 END DO
68069 s_offset_a1 = s_offset_a1 + 7
68070 END DO
68071 END SUBROUTINE contract_fpsp
68072#endif
68073#if __MAX_CONTR > 3 || __MAX_CONTR == 3
68074! **************************************************************************************************
68075!> \brief ...
68076!> \param work ...
68077!> \param nl_a ...
68078!> \param nl_b ...
68079!> \param nl_c ...
68080!> \param nl_d ...
68081!> \param sphi_a ...
68082!> \param sphi_b ...
68083!> \param sphi_c ...
68084!> \param sphi_d ...
68085!> \param primitives ...
68086!> \param buffer1 ...
68087!> \param buffer2 ...
68088! **************************************************************************************************
68089 SUBROUTINE contract_fpsd(work, &
68090 nl_a, nl_b, nl_c, nl_d, &
68091 sphi_a, sphi_b, sphi_c, sphi_d, &
68092 primitives, &
68093 buffer1, buffer2)
68094 REAL(dp), DIMENSION(10*3*1*6), INTENT(IN) :: work
68095 INTEGER :: nl_a, nl_b, nl_c, nl_d
68096 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
68097 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
68098 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
68099 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
68100 REAL(dp), &
68101 DIMENSION(7*nl_a, 3*nl_b, 1*nl_c, 5*nl_d) :: primitives
68102 REAL(dp), DIMENSION(10*3*1*6) :: buffer1, buffer2
68103
68104 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
68105 kmax, s_offset_a1, s_offset_b1, &
68106 s_offset_c1, s_offset_d1
68107
68108 s_offset_a1 = 0
68109 DO ia = 1, nl_a
68110 s_offset_b1 = 0
68111 DO ib = 1, nl_b
68112 s_offset_c1 = 0
68113 DO ic = 1, nl_c
68114 s_offset_d1 = 0
68115 DO id = 1, nl_d
68116 buffer1 = 0.0_dp
68117 imax = 3*1*6
68118 kmax = 10
68119 DO i = 1, imax
68120 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
68121 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
68122 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
68123 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
68124 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
68125 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
68126 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
68127 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
68128 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
68129 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
68130 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
68131 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
68132 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
68133 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
68134 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
68135 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
68136 END DO
68137 buffer2 = 0.0_dp
68138 imax = 7*1*6
68139 kmax = 3
68140 DO i = 1, imax
68141 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
68142 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
68143 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
68144 END DO
68145 buffer1 = 0.0_dp
68146 imax = 7*3*6
68147 kmax = 1
68148 DO i = 1, imax
68149 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
68150 END DO
68151 imax = 7*3*1
68152 kmax = 6
68153 i = 0
68154 DO i1 = 1, 1
68155 DO i2 = 1, 3
68156 DO i3 = 1, 7
68157 i = i + 1
68158 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
68159 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
68160 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
68161 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
68162 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
68163 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
68164 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
68165 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
68166 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
68167 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
68168 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
68169 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
68170 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
68171 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
68172 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
68173 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
68174 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
68175 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
68176 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
68177 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
68178 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
68179 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
68180 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
68181 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
68182 END DO
68183 END DO
68184 END DO
68185 s_offset_d1 = s_offset_d1 + 5
68186 END DO
68187 s_offset_c1 = s_offset_c1 + 1
68188 END DO
68189 s_offset_b1 = s_offset_b1 + 3
68190 END DO
68191 s_offset_a1 = s_offset_a1 + 7
68192 END DO
68193 END SUBROUTINE contract_fpsd
68194#endif
68195#if __MAX_CONTR > 3 || __MAX_CONTR == 3
68196! **************************************************************************************************
68197!> \brief ...
68198!> \param work ...
68199!> \param nl_a ...
68200!> \param nl_b ...
68201!> \param nl_c ...
68202!> \param nl_d ...
68203!> \param sphi_a ...
68204!> \param sphi_b ...
68205!> \param sphi_c ...
68206!> \param sphi_d ...
68207!> \param primitives ...
68208!> \param buffer1 ...
68209!> \param buffer2 ...
68210! **************************************************************************************************
68211 SUBROUTINE contract_fpsf(work, &
68212 nl_a, nl_b, nl_c, nl_d, &
68213 sphi_a, sphi_b, sphi_c, sphi_d, &
68214 primitives, &
68215 buffer1, buffer2)
68216 REAL(dp), DIMENSION(10*3*1*10), INTENT(IN) :: work
68217 INTEGER :: nl_a, nl_b, nl_c, nl_d
68218 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
68219 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
68220 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
68221 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
68222 REAL(dp), &
68223 DIMENSION(7*nl_a, 3*nl_b, 1*nl_c, 7*nl_d) :: primitives
68224 REAL(dp), DIMENSION(10*3*1*10) :: buffer1, buffer2
68225
68226 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
68227 kmax, s_offset_a1, s_offset_b1, &
68228 s_offset_c1, s_offset_d1
68229
68230 s_offset_a1 = 0
68231 DO ia = 1, nl_a
68232 s_offset_b1 = 0
68233 DO ib = 1, nl_b
68234 s_offset_c1 = 0
68235 DO ic = 1, nl_c
68236 s_offset_d1 = 0
68237 DO id = 1, nl_d
68238 buffer1 = 0.0_dp
68239 imax = 3*1*10
68240 kmax = 10
68241 DO i = 1, imax
68242 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
68243 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
68244 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
68245 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
68246 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
68247 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
68248 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
68249 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
68250 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
68251 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
68252 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
68253 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
68254 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
68255 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
68256 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
68257 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
68258 END DO
68259 buffer2 = 0.0_dp
68260 imax = 7*1*10
68261 kmax = 3
68262 DO i = 1, imax
68263 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
68264 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
68265 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
68266 END DO
68267 buffer1 = 0.0_dp
68268 imax = 7*3*10
68269 kmax = 1
68270 DO i = 1, imax
68271 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
68272 END DO
68273 imax = 7*3*1
68274 kmax = 10
68275 i = 0
68276 DO i1 = 1, 1
68277 DO i2 = 1, 3
68278 DO i3 = 1, 7
68279 i = i + 1
68280 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
68281 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
68282 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
68283 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
68284 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
68285 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
68286 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
68287 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
68288 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
68289 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
68290 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
68291 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
68292 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
68293 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
68294 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
68295 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
68296 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
68297 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
68298 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
68299 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
68300 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
68301 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
68302 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
68303 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
68304 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
68305 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
68306 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
68307 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
68308 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
68309 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
68310 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
68311 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
68312 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
68313 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
68314 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
68315 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
68316 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
68317 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
68318 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
68319 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
68320 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
68321 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
68322 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
68323 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
68324 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
68325 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
68326 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
68327 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
68328 END DO
68329 END DO
68330 END DO
68331 s_offset_d1 = s_offset_d1 + 7
68332 END DO
68333 s_offset_c1 = s_offset_c1 + 1
68334 END DO
68335 s_offset_b1 = s_offset_b1 + 3
68336 END DO
68337 s_offset_a1 = s_offset_a1 + 7
68338 END DO
68339 END SUBROUTINE contract_fpsf
68340#endif
68341#if __MAX_CONTR > 4 || __MAX_CONTR == 4
68342! **************************************************************************************************
68343!> \brief ...
68344!> \param work ...
68345!> \param nl_a ...
68346!> \param nl_b ...
68347!> \param nl_c ...
68348!> \param nl_d ...
68349!> \param sphi_a ...
68350!> \param sphi_b ...
68351!> \param sphi_c ...
68352!> \param sphi_d ...
68353!> \param primitives ...
68354!> \param buffer1 ...
68355!> \param buffer2 ...
68356! **************************************************************************************************
68357 SUBROUTINE contract_fpsg(work, &
68358 nl_a, nl_b, nl_c, nl_d, &
68359 sphi_a, sphi_b, sphi_c, sphi_d, &
68360 primitives, &
68361 buffer1, buffer2)
68362 REAL(dp), DIMENSION(10*3*1*15), INTENT(IN) :: work
68363 INTEGER :: nl_a, nl_b, nl_c, nl_d
68364 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
68365 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
68366 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
68367 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
68368 REAL(dp), &
68369 DIMENSION(7*nl_a, 3*nl_b, 1*nl_c, 9*nl_d) :: primitives
68370 REAL(dp), DIMENSION(10*3*1*15) :: buffer1, buffer2
68371
68372 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
68373 kmax, s_offset_a1, s_offset_b1, &
68374 s_offset_c1, s_offset_d1
68375
68376 s_offset_a1 = 0
68377 DO ia = 1, nl_a
68378 s_offset_b1 = 0
68379 DO ib = 1, nl_b
68380 s_offset_c1 = 0
68381 DO ic = 1, nl_c
68382 s_offset_d1 = 0
68383 DO id = 1, nl_d
68384 buffer1 = 0.0_dp
68385 imax = 3*1*15
68386 kmax = 10
68387 DO i = 1, imax
68388 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
68389 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
68390 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
68391 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
68392 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
68393 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
68394 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
68395 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
68396 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
68397 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
68398 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
68399 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
68400 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
68401 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
68402 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
68403 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
68404 END DO
68405 buffer2 = 0.0_dp
68406 imax = 7*1*15
68407 kmax = 3
68408 DO i = 1, imax
68409 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
68410 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
68411 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
68412 END DO
68413 buffer1 = 0.0_dp
68414 imax = 7*3*15
68415 kmax = 1
68416 DO i = 1, imax
68417 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
68418 END DO
68419 imax = 7*3*1
68420 kmax = 15
68421 i = 0
68422 DO i1 = 1, 1
68423 DO i2 = 1, 3
68424 DO i3 = 1, 7
68425 i = i + 1
68426 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
68427 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
68428 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
68429 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
68430 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
68431 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
68432 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
68433 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
68434 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
68435 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
68436 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
68437 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
68438 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
68439 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
68440 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
68441 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
68442 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
68443 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
68444 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
68445 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
68446 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
68447 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
68448 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
68449 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
68450 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
68451 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
68452 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
68453 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
68454 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
68455 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
68456 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
68457 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
68458 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
68459 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
68460 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
68461 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
68462 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
68463 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
68464 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
68465 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
68466 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
68467 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
68468 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
68469 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
68470 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
68471 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
68472 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
68473 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
68474 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
68475 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
68476 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
68477 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
68478 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
68479 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
68480 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
68481 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
68482 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
68483 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
68484 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
68485 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
68486 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
68487 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
68488 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
68489 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
68490 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
68491 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
68492 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
68493 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
68494 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
68495 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
68496 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
68497 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
68498 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
68499 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
68500 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
68501 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
68502 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
68503 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
68504 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
68505 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
68506 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
68507 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
68508 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
68509 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
68510 END DO
68511 END DO
68512 END DO
68513 s_offset_d1 = s_offset_d1 + 9
68514 END DO
68515 s_offset_c1 = s_offset_c1 + 1
68516 END DO
68517 s_offset_b1 = s_offset_b1 + 3
68518 END DO
68519 s_offset_a1 = s_offset_a1 + 7
68520 END DO
68521 END SUBROUTINE contract_fpsg
68522#endif
68523#if __MAX_CONTR > 3 || __MAX_CONTR == 3
68524! **************************************************************************************************
68525!> \brief ...
68526!> \param work ...
68527!> \param nl_a ...
68528!> \param nl_b ...
68529!> \param nl_c ...
68530!> \param nl_d ...
68531!> \param sphi_a ...
68532!> \param sphi_b ...
68533!> \param sphi_c ...
68534!> \param sphi_d ...
68535!> \param primitives ...
68536!> \param buffer1 ...
68537!> \param buffer2 ...
68538! **************************************************************************************************
68539 SUBROUTINE contract_fpps(work, &
68540 nl_a, nl_b, nl_c, nl_d, &
68541 sphi_a, sphi_b, sphi_c, sphi_d, &
68542 primitives, &
68543 buffer1, buffer2)
68544 REAL(dp), DIMENSION(10*3*3*1), INTENT(IN) :: work
68545 INTEGER :: nl_a, nl_b, nl_c, nl_d
68546 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
68547 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
68548 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
68549 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
68550 REAL(dp), &
68551 DIMENSION(7*nl_a, 3*nl_b, 3*nl_c, 1*nl_d) :: primitives
68552 REAL(dp), DIMENSION(10*3*3*1) :: buffer1, buffer2
68553
68554 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
68555 kmax, s_offset_a1, s_offset_b1, &
68556 s_offset_c1, s_offset_d1
68557
68558 s_offset_a1 = 0
68559 DO ia = 1, nl_a
68560 s_offset_b1 = 0
68561 DO ib = 1, nl_b
68562 s_offset_c1 = 0
68563 DO ic = 1, nl_c
68564 s_offset_d1 = 0
68565 DO id = 1, nl_d
68566 buffer1 = 0.0_dp
68567 imax = 3*3*1
68568 kmax = 10
68569 DO i = 1, imax
68570 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
68571 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
68572 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
68573 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
68574 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
68575 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
68576 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
68577 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
68578 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
68579 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
68580 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
68581 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
68582 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
68583 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
68584 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
68585 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
68586 END DO
68587 buffer2 = 0.0_dp
68588 imax = 7*3*1
68589 kmax = 3
68590 DO i = 1, imax
68591 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
68592 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
68593 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
68594 END DO
68595 buffer1 = 0.0_dp
68596 imax = 7*3*1
68597 kmax = 3
68598 DO i = 1, imax
68599 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
68600 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
68601 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
68602 END DO
68603 imax = 7*3*3
68604 kmax = 1
68605 i = 0
68606 DO i1 = 1, 3
68607 DO i2 = 1, 3
68608 DO i3 = 1, 7
68609 i = i + 1
68610 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
68611 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
68612 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
68613 END DO
68614 END DO
68615 END DO
68616 s_offset_d1 = s_offset_d1 + 1
68617 END DO
68618 s_offset_c1 = s_offset_c1 + 3
68619 END DO
68620 s_offset_b1 = s_offset_b1 + 3
68621 END DO
68622 s_offset_a1 = s_offset_a1 + 7
68623 END DO
68624 END SUBROUTINE contract_fpps
68625#endif
68626#if __MAX_CONTR > 3 || __MAX_CONTR == 3
68627! **************************************************************************************************
68628!> \brief ...
68629!> \param work ...
68630!> \param nl_a ...
68631!> \param nl_b ...
68632!> \param nl_c ...
68633!> \param nl_d ...
68634!> \param sphi_a ...
68635!> \param sphi_b ...
68636!> \param sphi_c ...
68637!> \param sphi_d ...
68638!> \param primitives ...
68639!> \param buffer1 ...
68640!> \param buffer2 ...
68641! **************************************************************************************************
68642 SUBROUTINE contract_fppp(work, &
68643 nl_a, nl_b, nl_c, nl_d, &
68644 sphi_a, sphi_b, sphi_c, sphi_d, &
68645 primitives, &
68646 buffer1, buffer2)
68647 REAL(dp), DIMENSION(10*3*3*3), INTENT(IN) :: work
68648 INTEGER :: nl_a, nl_b, nl_c, nl_d
68649 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
68650 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
68651 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
68652 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
68653 REAL(dp), &
68654 DIMENSION(7*nl_a, 3*nl_b, 3*nl_c, 3*nl_d) :: primitives
68655 REAL(dp), DIMENSION(10*3*3*3) :: buffer1, buffer2
68656
68657 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
68658 kmax, s_offset_a1, s_offset_b1, &
68659 s_offset_c1, s_offset_d1
68660
68661 s_offset_a1 = 0
68662 DO ia = 1, nl_a
68663 s_offset_b1 = 0
68664 DO ib = 1, nl_b
68665 s_offset_c1 = 0
68666 DO ic = 1, nl_c
68667 s_offset_d1 = 0
68668 DO id = 1, nl_d
68669 buffer1 = 0.0_dp
68670 imax = 3*3*3
68671 kmax = 10
68672 DO i = 1, imax
68673 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
68674 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
68675 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
68676 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
68677 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
68678 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
68679 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
68680 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
68681 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
68682 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
68683 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
68684 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
68685 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
68686 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
68687 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
68688 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
68689 END DO
68690 buffer2 = 0.0_dp
68691 imax = 7*3*3
68692 kmax = 3
68693 DO i = 1, imax
68694 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
68695 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
68696 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
68697 END DO
68698 buffer1 = 0.0_dp
68699 imax = 7*3*3
68700 kmax = 3
68701 DO i = 1, imax
68702 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
68703 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
68704 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
68705 END DO
68706 imax = 7*3*3
68707 kmax = 3
68708 i = 0
68709 DO i1 = 1, 3
68710 DO i2 = 1, 3
68711 DO i3 = 1, 7
68712 i = i + 1
68713 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
68714 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
68715 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
68716 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
68717 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
68718 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
68719 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
68720 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
68721 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
68722 END DO
68723 END DO
68724 END DO
68725 s_offset_d1 = s_offset_d1 + 3
68726 END DO
68727 s_offset_c1 = s_offset_c1 + 3
68728 END DO
68729 s_offset_b1 = s_offset_b1 + 3
68730 END DO
68731 s_offset_a1 = s_offset_a1 + 7
68732 END DO
68733 END SUBROUTINE contract_fppp
68734#endif
68735#if __MAX_CONTR > 3 || __MAX_CONTR == 3
68736! **************************************************************************************************
68737!> \brief ...
68738!> \param work ...
68739!> \param nl_a ...
68740!> \param nl_b ...
68741!> \param nl_c ...
68742!> \param nl_d ...
68743!> \param sphi_a ...
68744!> \param sphi_b ...
68745!> \param sphi_c ...
68746!> \param sphi_d ...
68747!> \param primitives ...
68748!> \param buffer1 ...
68749!> \param buffer2 ...
68750! **************************************************************************************************
68751 SUBROUTINE contract_fppd(work, &
68752 nl_a, nl_b, nl_c, nl_d, &
68753 sphi_a, sphi_b, sphi_c, sphi_d, &
68754 primitives, &
68755 buffer1, buffer2)
68756 REAL(dp), DIMENSION(10*3*3*6), INTENT(IN) :: work
68757 INTEGER :: nl_a, nl_b, nl_c, nl_d
68758 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
68759 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
68760 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
68761 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
68762 REAL(dp), &
68763 DIMENSION(7*nl_a, 3*nl_b, 3*nl_c, 5*nl_d) :: primitives
68764 REAL(dp), DIMENSION(10*3*3*6) :: buffer1, buffer2
68765
68766 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
68767 kmax, s_offset_a1, s_offset_b1, &
68768 s_offset_c1, s_offset_d1
68769
68770 s_offset_a1 = 0
68771 DO ia = 1, nl_a
68772 s_offset_b1 = 0
68773 DO ib = 1, nl_b
68774 s_offset_c1 = 0
68775 DO ic = 1, nl_c
68776 s_offset_d1 = 0
68777 DO id = 1, nl_d
68778 buffer1 = 0.0_dp
68779 imax = 3*3*6
68780 kmax = 10
68781 DO i = 1, imax
68782 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
68783 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
68784 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
68785 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
68786 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
68787 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
68788 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
68789 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
68790 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
68791 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
68792 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
68793 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
68794 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
68795 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
68796 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
68797 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
68798 END DO
68799 buffer2 = 0.0_dp
68800 imax = 7*3*6
68801 kmax = 3
68802 DO i = 1, imax
68803 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
68804 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
68805 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
68806 END DO
68807 buffer1 = 0.0_dp
68808 imax = 7*3*6
68809 kmax = 3
68810 DO i = 1, imax
68811 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
68812 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
68813 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
68814 END DO
68815 imax = 7*3*3
68816 kmax = 6
68817 i = 0
68818 DO i1 = 1, 3
68819 DO i2 = 1, 3
68820 DO i3 = 1, 7
68821 i = i + 1
68822 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
68823 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
68824 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
68825 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
68826 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
68827 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
68828 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
68829 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
68830 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
68831 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
68832 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
68833 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
68834 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
68835 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
68836 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
68837 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
68838 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
68839 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
68840 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
68841 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
68842 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
68843 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
68844 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
68845 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
68846 END DO
68847 END DO
68848 END DO
68849 s_offset_d1 = s_offset_d1 + 5
68850 END DO
68851 s_offset_c1 = s_offset_c1 + 3
68852 END DO
68853 s_offset_b1 = s_offset_b1 + 3
68854 END DO
68855 s_offset_a1 = s_offset_a1 + 7
68856 END DO
68857 END SUBROUTINE contract_fppd
68858#endif
68859#if __MAX_CONTR > 3 || __MAX_CONTR == 3
68860! **************************************************************************************************
68861!> \brief ...
68862!> \param work ...
68863!> \param nl_a ...
68864!> \param nl_b ...
68865!> \param nl_c ...
68866!> \param nl_d ...
68867!> \param sphi_a ...
68868!> \param sphi_b ...
68869!> \param sphi_c ...
68870!> \param sphi_d ...
68871!> \param primitives ...
68872!> \param buffer1 ...
68873!> \param buffer2 ...
68874! **************************************************************************************************
68875 SUBROUTINE contract_fppf(work, &
68876 nl_a, nl_b, nl_c, nl_d, &
68877 sphi_a, sphi_b, sphi_c, sphi_d, &
68878 primitives, &
68879 buffer1, buffer2)
68880 REAL(dp), DIMENSION(10*3*3*10), INTENT(IN) :: work
68881 INTEGER :: nl_a, nl_b, nl_c, nl_d
68882 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
68883 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
68884 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
68885 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
68886 REAL(dp), &
68887 DIMENSION(7*nl_a, 3*nl_b, 3*nl_c, 7*nl_d) :: primitives
68888 REAL(dp), DIMENSION(10*3*3*10) :: buffer1, buffer2
68889
68890 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
68891 kmax, s_offset_a1, s_offset_b1, &
68892 s_offset_c1, s_offset_d1
68893
68894 s_offset_a1 = 0
68895 DO ia = 1, nl_a
68896 s_offset_b1 = 0
68897 DO ib = 1, nl_b
68898 s_offset_c1 = 0
68899 DO ic = 1, nl_c
68900 s_offset_d1 = 0
68901 DO id = 1, nl_d
68902 buffer1 = 0.0_dp
68903 imax = 3*3*10
68904 kmax = 10
68905 DO i = 1, imax
68906 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
68907 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
68908 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
68909 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
68910 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
68911 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
68912 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
68913 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
68914 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
68915 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
68916 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
68917 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
68918 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
68919 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
68920 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
68921 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
68922 END DO
68923 buffer2 = 0.0_dp
68924 imax = 7*3*10
68925 kmax = 3
68926 DO i = 1, imax
68927 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
68928 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
68929 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
68930 END DO
68931 buffer1 = 0.0_dp
68932 imax = 7*3*10
68933 kmax = 3
68934 DO i = 1, imax
68935 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
68936 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
68937 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
68938 END DO
68939 imax = 7*3*3
68940 kmax = 10
68941 i = 0
68942 DO i1 = 1, 3
68943 DO i2 = 1, 3
68944 DO i3 = 1, 7
68945 i = i + 1
68946 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
68947 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
68948 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
68949 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
68950 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
68951 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
68952 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
68953 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
68954 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
68955 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
68956 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
68957 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
68958 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
68959 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
68960 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
68961 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
68962 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
68963 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
68964 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
68965 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
68966 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
68967 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
68968 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
68969 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
68970 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
68971 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
68972 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
68973 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
68974 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
68975 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
68976 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
68977 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
68978 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
68979 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
68980 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
68981 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
68982 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
68983 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
68984 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
68985 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
68986 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
68987 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
68988 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
68989 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
68990 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
68991 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
68992 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
68993 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
68994 END DO
68995 END DO
68996 END DO
68997 s_offset_d1 = s_offset_d1 + 7
68998 END DO
68999 s_offset_c1 = s_offset_c1 + 3
69000 END DO
69001 s_offset_b1 = s_offset_b1 + 3
69002 END DO
69003 s_offset_a1 = s_offset_a1 + 7
69004 END DO
69005 END SUBROUTINE contract_fppf
69006#endif
69007#if __MAX_CONTR > 4 || __MAX_CONTR == 4
69008! **************************************************************************************************
69009!> \brief ...
69010!> \param work ...
69011!> \param nl_a ...
69012!> \param nl_b ...
69013!> \param nl_c ...
69014!> \param nl_d ...
69015!> \param sphi_a ...
69016!> \param sphi_b ...
69017!> \param sphi_c ...
69018!> \param sphi_d ...
69019!> \param primitives ...
69020!> \param buffer1 ...
69021!> \param buffer2 ...
69022! **************************************************************************************************
69023 SUBROUTINE contract_fppg(work, &
69024 nl_a, nl_b, nl_c, nl_d, &
69025 sphi_a, sphi_b, sphi_c, sphi_d, &
69026 primitives, &
69027 buffer1, buffer2)
69028 REAL(dp), DIMENSION(10*3*3*15), INTENT(IN) :: work
69029 INTEGER :: nl_a, nl_b, nl_c, nl_d
69030 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
69031 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
69032 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
69033 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
69034 REAL(dp), &
69035 DIMENSION(7*nl_a, 3*nl_b, 3*nl_c, 9*nl_d) :: primitives
69036 REAL(dp), DIMENSION(10*3*3*15) :: buffer1, buffer2
69037
69038 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
69039 kmax, s_offset_a1, s_offset_b1, &
69040 s_offset_c1, s_offset_d1
69041
69042 s_offset_a1 = 0
69043 DO ia = 1, nl_a
69044 s_offset_b1 = 0
69045 DO ib = 1, nl_b
69046 s_offset_c1 = 0
69047 DO ic = 1, nl_c
69048 s_offset_d1 = 0
69049 DO id = 1, nl_d
69050 buffer1 = 0.0_dp
69051 imax = 3*3*15
69052 kmax = 10
69053 DO i = 1, imax
69054 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
69055 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
69056 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
69057 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
69058 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
69059 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
69060 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
69061 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
69062 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
69063 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
69064 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
69065 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
69066 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
69067 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
69068 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
69069 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
69070 END DO
69071 buffer2 = 0.0_dp
69072 imax = 7*3*15
69073 kmax = 3
69074 DO i = 1, imax
69075 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
69076 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
69077 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
69078 END DO
69079 buffer1 = 0.0_dp
69080 imax = 7*3*15
69081 kmax = 3
69082 DO i = 1, imax
69083 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
69084 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
69085 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
69086 END DO
69087 imax = 7*3*3
69088 kmax = 15
69089 i = 0
69090 DO i1 = 1, 3
69091 DO i2 = 1, 3
69092 DO i3 = 1, 7
69093 i = i + 1
69094 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
69095 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
69096 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
69097 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
69098 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
69099 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
69100 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
69101 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
69102 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
69103 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
69104 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
69105 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
69106 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
69107 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
69108 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
69109 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
69110 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
69111 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
69112 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
69113 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
69114 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
69115 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
69116 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
69117 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
69118 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
69119 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
69120 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
69121 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
69122 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
69123 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
69124 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
69125 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
69126 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
69127 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
69128 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
69129 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
69130 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
69131 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
69132 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
69133 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
69134 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
69135 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
69136 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
69137 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
69138 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
69139 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
69140 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
69141 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
69142 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
69143 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
69144 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
69145 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
69146 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
69147 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
69148 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
69149 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
69150 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
69151 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
69152 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
69153 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
69154 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
69155 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
69156 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
69157 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
69158 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
69159 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
69160 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
69161 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
69162 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
69163 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
69164 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
69165 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
69166 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
69167 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
69168 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
69169 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
69170 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
69171 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
69172 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
69173 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
69174 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
69175 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
69176 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
69177 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
69178 END DO
69179 END DO
69180 END DO
69181 s_offset_d1 = s_offset_d1 + 9
69182 END DO
69183 s_offset_c1 = s_offset_c1 + 3
69184 END DO
69185 s_offset_b1 = s_offset_b1 + 3
69186 END DO
69187 s_offset_a1 = s_offset_a1 + 7
69188 END DO
69189 END SUBROUTINE contract_fppg
69190#endif
69191#if __MAX_CONTR > 3 || __MAX_CONTR == 3
69192! **************************************************************************************************
69193!> \brief ...
69194!> \param work ...
69195!> \param nl_a ...
69196!> \param nl_b ...
69197!> \param nl_c ...
69198!> \param nl_d ...
69199!> \param sphi_a ...
69200!> \param sphi_b ...
69201!> \param sphi_c ...
69202!> \param sphi_d ...
69203!> \param primitives ...
69204!> \param buffer1 ...
69205!> \param buffer2 ...
69206! **************************************************************************************************
69207 SUBROUTINE contract_fpds(work, &
69208 nl_a, nl_b, nl_c, nl_d, &
69209 sphi_a, sphi_b, sphi_c, sphi_d, &
69210 primitives, &
69211 buffer1, buffer2)
69212 REAL(dp), DIMENSION(10*3*6*1), INTENT(IN) :: work
69213 INTEGER :: nl_a, nl_b, nl_c, nl_d
69214 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
69215 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
69216 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
69217 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
69218 REAL(dp), &
69219 DIMENSION(7*nl_a, 3*nl_b, 5*nl_c, 1*nl_d) :: primitives
69220 REAL(dp), DIMENSION(10*3*6*1) :: buffer1, buffer2
69221
69222 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
69223 kmax, s_offset_a1, s_offset_b1, &
69224 s_offset_c1, s_offset_d1
69225
69226 s_offset_a1 = 0
69227 DO ia = 1, nl_a
69228 s_offset_b1 = 0
69229 DO ib = 1, nl_b
69230 s_offset_c1 = 0
69231 DO ic = 1, nl_c
69232 s_offset_d1 = 0
69233 DO id = 1, nl_d
69234 buffer1 = 0.0_dp
69235 imax = 3*6*1
69236 kmax = 10
69237 DO i = 1, imax
69238 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
69239 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
69240 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
69241 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
69242 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
69243 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
69244 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
69245 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
69246 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
69247 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
69248 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
69249 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
69250 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
69251 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
69252 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
69253 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
69254 END DO
69255 buffer2 = 0.0_dp
69256 imax = 7*6*1
69257 kmax = 3
69258 DO i = 1, imax
69259 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
69260 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
69261 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
69262 END DO
69263 buffer1 = 0.0_dp
69264 imax = 7*3*1
69265 kmax = 6
69266 DO i = 1, imax
69267 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
69268 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
69269 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
69270 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
69271 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
69272 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
69273 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
69274 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
69275 END DO
69276 imax = 7*3*5
69277 kmax = 1
69278 i = 0
69279 DO i1 = 1, 5
69280 DO i2 = 1, 3
69281 DO i3 = 1, 7
69282 i = i + 1
69283 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
69284 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
69285 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
69286 END DO
69287 END DO
69288 END DO
69289 s_offset_d1 = s_offset_d1 + 1
69290 END DO
69291 s_offset_c1 = s_offset_c1 + 5
69292 END DO
69293 s_offset_b1 = s_offset_b1 + 3
69294 END DO
69295 s_offset_a1 = s_offset_a1 + 7
69296 END DO
69297 END SUBROUTINE contract_fpds
69298#endif
69299#if __MAX_CONTR > 3 || __MAX_CONTR == 3
69300! **************************************************************************************************
69301!> \brief ...
69302!> \param work ...
69303!> \param nl_a ...
69304!> \param nl_b ...
69305!> \param nl_c ...
69306!> \param nl_d ...
69307!> \param sphi_a ...
69308!> \param sphi_b ...
69309!> \param sphi_c ...
69310!> \param sphi_d ...
69311!> \param primitives ...
69312!> \param buffer1 ...
69313!> \param buffer2 ...
69314! **************************************************************************************************
69315 SUBROUTINE contract_fpdp(work, &
69316 nl_a, nl_b, nl_c, nl_d, &
69317 sphi_a, sphi_b, sphi_c, sphi_d, &
69318 primitives, &
69319 buffer1, buffer2)
69320 REAL(dp), DIMENSION(10*3*6*3), INTENT(IN) :: work
69321 INTEGER :: nl_a, nl_b, nl_c, nl_d
69322 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
69323 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
69324 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
69325 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
69326 REAL(dp), &
69327 DIMENSION(7*nl_a, 3*nl_b, 5*nl_c, 3*nl_d) :: primitives
69328 REAL(dp), DIMENSION(10*3*6*3) :: buffer1, buffer2
69329
69330 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
69331 kmax, s_offset_a1, s_offset_b1, &
69332 s_offset_c1, s_offset_d1
69333
69334 s_offset_a1 = 0
69335 DO ia = 1, nl_a
69336 s_offset_b1 = 0
69337 DO ib = 1, nl_b
69338 s_offset_c1 = 0
69339 DO ic = 1, nl_c
69340 s_offset_d1 = 0
69341 DO id = 1, nl_d
69342 buffer1 = 0.0_dp
69343 imax = 3*6*3
69344 kmax = 10
69345 DO i = 1, imax
69346 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
69347 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
69348 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
69349 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
69350 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
69351 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
69352 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
69353 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
69354 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
69355 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
69356 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
69357 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
69358 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
69359 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
69360 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
69361 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
69362 END DO
69363 buffer2 = 0.0_dp
69364 imax = 7*6*3
69365 kmax = 3
69366 DO i = 1, imax
69367 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
69368 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
69369 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
69370 END DO
69371 buffer1 = 0.0_dp
69372 imax = 7*3*3
69373 kmax = 6
69374 DO i = 1, imax
69375 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
69376 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
69377 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
69378 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
69379 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
69380 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
69381 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
69382 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
69383 END DO
69384 imax = 7*3*5
69385 kmax = 3
69386 i = 0
69387 DO i1 = 1, 5
69388 DO i2 = 1, 3
69389 DO i3 = 1, 7
69390 i = i + 1
69391 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
69392 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
69393 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
69394 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
69395 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
69396 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
69397 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
69398 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
69399 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
69400 END DO
69401 END DO
69402 END DO
69403 s_offset_d1 = s_offset_d1 + 3
69404 END DO
69405 s_offset_c1 = s_offset_c1 + 5
69406 END DO
69407 s_offset_b1 = s_offset_b1 + 3
69408 END DO
69409 s_offset_a1 = s_offset_a1 + 7
69410 END DO
69411 END SUBROUTINE contract_fpdp
69412#endif
69413#if __MAX_CONTR > 3 || __MAX_CONTR == 3
69414! **************************************************************************************************
69415!> \brief ...
69416!> \param work ...
69417!> \param nl_a ...
69418!> \param nl_b ...
69419!> \param nl_c ...
69420!> \param nl_d ...
69421!> \param sphi_a ...
69422!> \param sphi_b ...
69423!> \param sphi_c ...
69424!> \param sphi_d ...
69425!> \param primitives ...
69426!> \param buffer1 ...
69427!> \param buffer2 ...
69428! **************************************************************************************************
69429 SUBROUTINE contract_fpdd(work, &
69430 nl_a, nl_b, nl_c, nl_d, &
69431 sphi_a, sphi_b, sphi_c, sphi_d, &
69432 primitives, &
69433 buffer1, buffer2)
69434 REAL(dp), DIMENSION(10*3*6*6), INTENT(IN) :: work
69435 INTEGER :: nl_a, nl_b, nl_c, nl_d
69436 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
69437 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
69438 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
69439 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
69440 REAL(dp), &
69441 DIMENSION(7*nl_a, 3*nl_b, 5*nl_c, 5*nl_d) :: primitives
69442 REAL(dp), DIMENSION(10*3*6*6) :: buffer1, buffer2
69443
69444 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
69445 kmax, s_offset_a1, s_offset_b1, &
69446 s_offset_c1, s_offset_d1
69447
69448 s_offset_a1 = 0
69449 DO ia = 1, nl_a
69450 s_offset_b1 = 0
69451 DO ib = 1, nl_b
69452 s_offset_c1 = 0
69453 DO ic = 1, nl_c
69454 s_offset_d1 = 0
69455 DO id = 1, nl_d
69456 buffer1 = 0.0_dp
69457 imax = 3*6*6
69458 kmax = 10
69459 DO i = 1, imax
69460 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
69461 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
69462 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
69463 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
69464 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
69465 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
69466 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
69467 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
69468 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
69469 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
69470 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
69471 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
69472 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
69473 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
69474 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
69475 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
69476 END DO
69477 buffer2 = 0.0_dp
69478 imax = 7*6*6
69479 kmax = 3
69480 DO i = 1, imax
69481 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
69482 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
69483 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
69484 END DO
69485 buffer1 = 0.0_dp
69486 imax = 7*3*6
69487 kmax = 6
69488 DO i = 1, imax
69489 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
69490 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
69491 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
69492 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
69493 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
69494 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
69495 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
69496 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
69497 END DO
69498 imax = 7*3*5
69499 kmax = 6
69500 i = 0
69501 DO i1 = 1, 5
69502 DO i2 = 1, 3
69503 DO i3 = 1, 7
69504 i = i + 1
69505 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
69506 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
69507 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
69508 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
69509 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
69510 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
69511 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
69512 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
69513 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
69514 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
69515 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
69516 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
69517 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
69518 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
69519 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
69520 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
69521 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
69522 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
69523 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
69524 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
69525 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
69526 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
69527 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
69528 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
69529 END DO
69530 END DO
69531 END DO
69532 s_offset_d1 = s_offset_d1 + 5
69533 END DO
69534 s_offset_c1 = s_offset_c1 + 5
69535 END DO
69536 s_offset_b1 = s_offset_b1 + 3
69537 END DO
69538 s_offset_a1 = s_offset_a1 + 7
69539 END DO
69540 END SUBROUTINE contract_fpdd
69541#endif
69542#if __MAX_CONTR > 3 || __MAX_CONTR == 3
69543! **************************************************************************************************
69544!> \brief ...
69545!> \param work ...
69546!> \param nl_a ...
69547!> \param nl_b ...
69548!> \param nl_c ...
69549!> \param nl_d ...
69550!> \param sphi_a ...
69551!> \param sphi_b ...
69552!> \param sphi_c ...
69553!> \param sphi_d ...
69554!> \param primitives ...
69555!> \param buffer1 ...
69556!> \param buffer2 ...
69557! **************************************************************************************************
69558 SUBROUTINE contract_fpdf(work, &
69559 nl_a, nl_b, nl_c, nl_d, &
69560 sphi_a, sphi_b, sphi_c, sphi_d, &
69561 primitives, &
69562 buffer1, buffer2)
69563 REAL(dp), DIMENSION(10*3*6*10), INTENT(IN) :: work
69564 INTEGER :: nl_a, nl_b, nl_c, nl_d
69565 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
69566 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
69567 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
69568 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
69569 REAL(dp), &
69570 DIMENSION(7*nl_a, 3*nl_b, 5*nl_c, 7*nl_d) :: primitives
69571 REAL(dp), DIMENSION(10*3*6*10) :: buffer1, buffer2
69572
69573 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
69574 kmax, s_offset_a1, s_offset_b1, &
69575 s_offset_c1, s_offset_d1
69576
69577 s_offset_a1 = 0
69578 DO ia = 1, nl_a
69579 s_offset_b1 = 0
69580 DO ib = 1, nl_b
69581 s_offset_c1 = 0
69582 DO ic = 1, nl_c
69583 s_offset_d1 = 0
69584 DO id = 1, nl_d
69585 buffer1 = 0.0_dp
69586 imax = 3*6*10
69587 kmax = 10
69588 DO i = 1, imax
69589 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
69590 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
69591 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
69592 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
69593 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
69594 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
69595 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
69596 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
69597 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
69598 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
69599 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
69600 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
69601 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
69602 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
69603 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
69604 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
69605 END DO
69606 buffer2 = 0.0_dp
69607 imax = 7*6*10
69608 kmax = 3
69609 DO i = 1, imax
69610 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
69611 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
69612 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
69613 END DO
69614 buffer1 = 0.0_dp
69615 imax = 7*3*10
69616 kmax = 6
69617 DO i = 1, imax
69618 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
69619 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
69620 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
69621 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
69622 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
69623 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
69624 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
69625 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
69626 END DO
69627 imax = 7*3*5
69628 kmax = 10
69629 i = 0
69630 DO i1 = 1, 5
69631 DO i2 = 1, 3
69632 DO i3 = 1, 7
69633 i = i + 1
69634 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
69635 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
69636 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
69637 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
69638 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
69639 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
69640 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
69641 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
69642 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
69643 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
69644 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
69645 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
69646 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
69647 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
69648 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
69649 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
69650 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
69651 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
69652 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
69653 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
69654 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
69655 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
69656 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
69657 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
69658 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
69659 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
69660 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
69661 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
69662 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
69663 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
69664 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
69665 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
69666 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
69667 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
69668 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
69669 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
69670 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
69671 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
69672 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
69673 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
69674 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
69675 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
69676 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
69677 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
69678 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
69679 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
69680 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
69681 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
69682 END DO
69683 END DO
69684 END DO
69685 s_offset_d1 = s_offset_d1 + 7
69686 END DO
69687 s_offset_c1 = s_offset_c1 + 5
69688 END DO
69689 s_offset_b1 = s_offset_b1 + 3
69690 END DO
69691 s_offset_a1 = s_offset_a1 + 7
69692 END DO
69693 END SUBROUTINE contract_fpdf
69694#endif
69695#if __MAX_CONTR > 4 || __MAX_CONTR == 4
69696! **************************************************************************************************
69697!> \brief ...
69698!> \param work ...
69699!> \param nl_a ...
69700!> \param nl_b ...
69701!> \param nl_c ...
69702!> \param nl_d ...
69703!> \param sphi_a ...
69704!> \param sphi_b ...
69705!> \param sphi_c ...
69706!> \param sphi_d ...
69707!> \param primitives ...
69708!> \param buffer1 ...
69709!> \param buffer2 ...
69710! **************************************************************************************************
69711 SUBROUTINE contract_fpdg(work, &
69712 nl_a, nl_b, nl_c, nl_d, &
69713 sphi_a, sphi_b, sphi_c, sphi_d, &
69714 primitives, &
69715 buffer1, buffer2)
69716 REAL(dp), DIMENSION(10*3*6*15), INTENT(IN) :: work
69717 INTEGER :: nl_a, nl_b, nl_c, nl_d
69718 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
69719 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
69720 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
69721 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
69722 REAL(dp), &
69723 DIMENSION(7*nl_a, 3*nl_b, 5*nl_c, 9*nl_d) :: primitives
69724 REAL(dp), DIMENSION(10*3*6*15) :: buffer1, buffer2
69725
69726 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
69727 kmax, s_offset_a1, s_offset_b1, &
69728 s_offset_c1, s_offset_d1
69729
69730 s_offset_a1 = 0
69731 DO ia = 1, nl_a
69732 s_offset_b1 = 0
69733 DO ib = 1, nl_b
69734 s_offset_c1 = 0
69735 DO ic = 1, nl_c
69736 s_offset_d1 = 0
69737 DO id = 1, nl_d
69738 buffer1 = 0.0_dp
69739 imax = 3*6*15
69740 kmax = 10
69741 DO i = 1, imax
69742 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
69743 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
69744 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
69745 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
69746 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
69747 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
69748 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
69749 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
69750 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
69751 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
69752 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
69753 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
69754 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
69755 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
69756 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
69757 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
69758 END DO
69759 buffer2 = 0.0_dp
69760 imax = 7*6*15
69761 kmax = 3
69762 DO i = 1, imax
69763 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
69764 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
69765 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
69766 END DO
69767 buffer1 = 0.0_dp
69768 imax = 7*3*15
69769 kmax = 6
69770 DO i = 1, imax
69771 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
69772 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
69773 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
69774 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
69775 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
69776 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
69777 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
69778 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
69779 END DO
69780 imax = 7*3*5
69781 kmax = 15
69782 i = 0
69783 DO i1 = 1, 5
69784 DO i2 = 1, 3
69785 DO i3 = 1, 7
69786 i = i + 1
69787 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
69788 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
69789 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
69790 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
69791 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
69792 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
69793 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
69794 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
69795 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
69796 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
69797 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
69798 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
69799 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
69800 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
69801 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
69802 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
69803 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
69804 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
69805 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
69806 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
69807 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
69808 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
69809 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
69810 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
69811 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
69812 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
69813 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
69814 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
69815 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
69816 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
69817 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
69818 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
69819 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
69820 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
69821 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
69822 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
69823 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
69824 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
69825 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
69826 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
69827 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
69828 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
69829 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
69830 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
69831 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
69832 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
69833 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
69834 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
69835 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
69836 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
69837 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
69838 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
69839 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
69840 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
69841 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
69842 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
69843 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
69844 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
69845 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
69846 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
69847 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
69848 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
69849 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
69850 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
69851 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
69852 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
69853 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
69854 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
69855 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
69856 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
69857 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
69858 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
69859 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
69860 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
69861 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
69862 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
69863 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
69864 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
69865 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
69866 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
69867 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
69868 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
69869 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
69870 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
69871 END DO
69872 END DO
69873 END DO
69874 s_offset_d1 = s_offset_d1 + 9
69875 END DO
69876 s_offset_c1 = s_offset_c1 + 5
69877 END DO
69878 s_offset_b1 = s_offset_b1 + 3
69879 END DO
69880 s_offset_a1 = s_offset_a1 + 7
69881 END DO
69882 END SUBROUTINE contract_fpdg
69883#endif
69884#if __MAX_CONTR > 3 || __MAX_CONTR == 3
69885! **************************************************************************************************
69886!> \brief ...
69887!> \param work ...
69888!> \param nl_a ...
69889!> \param nl_b ...
69890!> \param nl_c ...
69891!> \param nl_d ...
69892!> \param sphi_a ...
69893!> \param sphi_b ...
69894!> \param sphi_c ...
69895!> \param sphi_d ...
69896!> \param primitives ...
69897!> \param buffer1 ...
69898!> \param buffer2 ...
69899! **************************************************************************************************
69900 SUBROUTINE contract_fpfs(work, &
69901 nl_a, nl_b, nl_c, nl_d, &
69902 sphi_a, sphi_b, sphi_c, sphi_d, &
69903 primitives, &
69904 buffer1, buffer2)
69905 REAL(dp), DIMENSION(10*3*10*1), INTENT(IN) :: work
69906 INTEGER :: nl_a, nl_b, nl_c, nl_d
69907 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
69908 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
69909 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
69910 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
69911 REAL(dp), &
69912 DIMENSION(7*nl_a, 3*nl_b, 7*nl_c, 1*nl_d) :: primitives
69913 REAL(dp), DIMENSION(10*3*10*1) :: buffer1, buffer2
69914
69915 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
69916 kmax, s_offset_a1, s_offset_b1, &
69917 s_offset_c1, s_offset_d1
69918
69919 s_offset_a1 = 0
69920 DO ia = 1, nl_a
69921 s_offset_b1 = 0
69922 DO ib = 1, nl_b
69923 s_offset_c1 = 0
69924 DO ic = 1, nl_c
69925 s_offset_d1 = 0
69926 DO id = 1, nl_d
69927 buffer1 = 0.0_dp
69928 imax = 3*10*1
69929 kmax = 10
69930 DO i = 1, imax
69931 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
69932 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
69933 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
69934 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
69935 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
69936 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
69937 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
69938 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
69939 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
69940 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
69941 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
69942 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
69943 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
69944 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
69945 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
69946 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
69947 END DO
69948 buffer2 = 0.0_dp
69949 imax = 7*10*1
69950 kmax = 3
69951 DO i = 1, imax
69952 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
69953 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
69954 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
69955 END DO
69956 buffer1 = 0.0_dp
69957 imax = 7*3*1
69958 kmax = 10
69959 DO i = 1, imax
69960 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
69961 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
69962 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
69963 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
69964 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
69965 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
69966 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
69967 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
69968 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
69969 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
69970 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
69971 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
69972 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
69973 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
69974 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
69975 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
69976 END DO
69977 imax = 7*3*7
69978 kmax = 1
69979 i = 0
69980 DO i1 = 1, 7
69981 DO i2 = 1, 3
69982 DO i3 = 1, 7
69983 i = i + 1
69984 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
69985 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
69986 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
69987 END DO
69988 END DO
69989 END DO
69990 s_offset_d1 = s_offset_d1 + 1
69991 END DO
69992 s_offset_c1 = s_offset_c1 + 7
69993 END DO
69994 s_offset_b1 = s_offset_b1 + 3
69995 END DO
69996 s_offset_a1 = s_offset_a1 + 7
69997 END DO
69998 END SUBROUTINE contract_fpfs
69999#endif
70000#if __MAX_CONTR > 3 || __MAX_CONTR == 3
70001! **************************************************************************************************
70002!> \brief ...
70003!> \param work ...
70004!> \param nl_a ...
70005!> \param nl_b ...
70006!> \param nl_c ...
70007!> \param nl_d ...
70008!> \param sphi_a ...
70009!> \param sphi_b ...
70010!> \param sphi_c ...
70011!> \param sphi_d ...
70012!> \param primitives ...
70013!> \param buffer1 ...
70014!> \param buffer2 ...
70015! **************************************************************************************************
70016 SUBROUTINE contract_fpfp(work, &
70017 nl_a, nl_b, nl_c, nl_d, &
70018 sphi_a, sphi_b, sphi_c, sphi_d, &
70019 primitives, &
70020 buffer1, buffer2)
70021 REAL(dp), DIMENSION(10*3*10*3), INTENT(IN) :: work
70022 INTEGER :: nl_a, nl_b, nl_c, nl_d
70023 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
70024 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
70025 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
70026 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
70027 REAL(dp), &
70028 DIMENSION(7*nl_a, 3*nl_b, 7*nl_c, 3*nl_d) :: primitives
70029 REAL(dp), DIMENSION(10*3*10*3) :: buffer1, buffer2
70030
70031 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
70032 kmax, s_offset_a1, s_offset_b1, &
70033 s_offset_c1, s_offset_d1
70034
70035 s_offset_a1 = 0
70036 DO ia = 1, nl_a
70037 s_offset_b1 = 0
70038 DO ib = 1, nl_b
70039 s_offset_c1 = 0
70040 DO ic = 1, nl_c
70041 s_offset_d1 = 0
70042 DO id = 1, nl_d
70043 buffer1 = 0.0_dp
70044 imax = 3*10*3
70045 kmax = 10
70046 DO i = 1, imax
70047 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
70048 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
70049 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
70050 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
70051 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
70052 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
70053 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
70054 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
70055 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
70056 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
70057 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
70058 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
70059 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
70060 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
70061 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
70062 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
70063 END DO
70064 buffer2 = 0.0_dp
70065 imax = 7*10*3
70066 kmax = 3
70067 DO i = 1, imax
70068 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
70069 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
70070 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
70071 END DO
70072 buffer1 = 0.0_dp
70073 imax = 7*3*3
70074 kmax = 10
70075 DO i = 1, imax
70076 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
70077 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
70078 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
70079 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
70080 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
70081 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
70082 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
70083 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
70084 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
70085 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
70086 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
70087 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
70088 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
70089 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
70090 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
70091 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
70092 END DO
70093 imax = 7*3*7
70094 kmax = 3
70095 i = 0
70096 DO i1 = 1, 7
70097 DO i2 = 1, 3
70098 DO i3 = 1, 7
70099 i = i + 1
70100 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
70101 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
70102 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
70103 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
70104 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
70105 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
70106 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
70107 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
70108 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
70109 END DO
70110 END DO
70111 END DO
70112 s_offset_d1 = s_offset_d1 + 3
70113 END DO
70114 s_offset_c1 = s_offset_c1 + 7
70115 END DO
70116 s_offset_b1 = s_offset_b1 + 3
70117 END DO
70118 s_offset_a1 = s_offset_a1 + 7
70119 END DO
70120 END SUBROUTINE contract_fpfp
70121#endif
70122#if __MAX_CONTR > 3 || __MAX_CONTR == 3
70123! **************************************************************************************************
70124!> \brief ...
70125!> \param work ...
70126!> \param nl_a ...
70127!> \param nl_b ...
70128!> \param nl_c ...
70129!> \param nl_d ...
70130!> \param sphi_a ...
70131!> \param sphi_b ...
70132!> \param sphi_c ...
70133!> \param sphi_d ...
70134!> \param primitives ...
70135!> \param buffer1 ...
70136!> \param buffer2 ...
70137! **************************************************************************************************
70138 SUBROUTINE contract_fpfd(work, &
70139 nl_a, nl_b, nl_c, nl_d, &
70140 sphi_a, sphi_b, sphi_c, sphi_d, &
70141 primitives, &
70142 buffer1, buffer2)
70143 REAL(dp), DIMENSION(10*3*10*6), INTENT(IN) :: work
70144 INTEGER :: nl_a, nl_b, nl_c, nl_d
70145 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
70146 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
70147 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
70148 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
70149 REAL(dp), &
70150 DIMENSION(7*nl_a, 3*nl_b, 7*nl_c, 5*nl_d) :: primitives
70151 REAL(dp), DIMENSION(10*3*10*6) :: buffer1, buffer2
70152
70153 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
70154 kmax, s_offset_a1, s_offset_b1, &
70155 s_offset_c1, s_offset_d1
70156
70157 s_offset_a1 = 0
70158 DO ia = 1, nl_a
70159 s_offset_b1 = 0
70160 DO ib = 1, nl_b
70161 s_offset_c1 = 0
70162 DO ic = 1, nl_c
70163 s_offset_d1 = 0
70164 DO id = 1, nl_d
70165 buffer1 = 0.0_dp
70166 imax = 3*10*6
70167 kmax = 10
70168 DO i = 1, imax
70169 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
70170 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
70171 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
70172 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
70173 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
70174 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
70175 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
70176 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
70177 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
70178 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
70179 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
70180 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
70181 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
70182 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
70183 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
70184 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
70185 END DO
70186 buffer2 = 0.0_dp
70187 imax = 7*10*6
70188 kmax = 3
70189 DO i = 1, imax
70190 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
70191 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
70192 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
70193 END DO
70194 buffer1 = 0.0_dp
70195 imax = 7*3*6
70196 kmax = 10
70197 DO i = 1, imax
70198 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
70199 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
70200 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
70201 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
70202 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
70203 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
70204 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
70205 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
70206 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
70207 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
70208 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
70209 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
70210 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
70211 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
70212 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
70213 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
70214 END DO
70215 imax = 7*3*7
70216 kmax = 6
70217 i = 0
70218 DO i1 = 1, 7
70219 DO i2 = 1, 3
70220 DO i3 = 1, 7
70221 i = i + 1
70222 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
70223 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
70224 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
70225 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
70226 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
70227 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
70228 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
70229 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
70230 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
70231 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
70232 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
70233 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
70234 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
70235 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
70236 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
70237 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
70238 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
70239 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
70240 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
70241 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
70242 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
70243 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
70244 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
70245 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
70246 END DO
70247 END DO
70248 END DO
70249 s_offset_d1 = s_offset_d1 + 5
70250 END DO
70251 s_offset_c1 = s_offset_c1 + 7
70252 END DO
70253 s_offset_b1 = s_offset_b1 + 3
70254 END DO
70255 s_offset_a1 = s_offset_a1 + 7
70256 END DO
70257 END SUBROUTINE contract_fpfd
70258#endif
70259#if __MAX_CONTR > 3 || __MAX_CONTR == 3
70260! **************************************************************************************************
70261!> \brief ...
70262!> \param work ...
70263!> \param nl_a ...
70264!> \param nl_b ...
70265!> \param nl_c ...
70266!> \param nl_d ...
70267!> \param sphi_a ...
70268!> \param sphi_b ...
70269!> \param sphi_c ...
70270!> \param sphi_d ...
70271!> \param primitives ...
70272!> \param buffer1 ...
70273!> \param buffer2 ...
70274! **************************************************************************************************
70275 SUBROUTINE contract_fpff(work, &
70276 nl_a, nl_b, nl_c, nl_d, &
70277 sphi_a, sphi_b, sphi_c, sphi_d, &
70278 primitives, &
70279 buffer1, buffer2)
70280 REAL(dp), DIMENSION(10*3*10*10), INTENT(IN) :: work
70281 INTEGER :: nl_a, nl_b, nl_c, nl_d
70282 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
70283 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
70284 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
70285 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
70286 REAL(dp), &
70287 DIMENSION(7*nl_a, 3*nl_b, 7*nl_c, 7*nl_d) :: primitives
70288 REAL(dp), DIMENSION(10*3*10*10) :: buffer1, buffer2
70289
70290 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
70291 kmax, s_offset_a1, s_offset_b1, &
70292 s_offset_c1, s_offset_d1
70293
70294 s_offset_a1 = 0
70295 DO ia = 1, nl_a
70296 s_offset_b1 = 0
70297 DO ib = 1, nl_b
70298 s_offset_c1 = 0
70299 DO ic = 1, nl_c
70300 s_offset_d1 = 0
70301 DO id = 1, nl_d
70302 buffer1 = 0.0_dp
70303 imax = 3*10*10
70304 kmax = 10
70305 DO i = 1, imax
70306 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
70307 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
70308 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
70309 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
70310 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
70311 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
70312 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
70313 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
70314 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
70315 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
70316 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
70317 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
70318 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
70319 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
70320 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
70321 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
70322 END DO
70323 buffer2 = 0.0_dp
70324 imax = 7*10*10
70325 kmax = 3
70326 DO i = 1, imax
70327 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
70328 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
70329 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
70330 END DO
70331 buffer1 = 0.0_dp
70332 imax = 7*3*10
70333 kmax = 10
70334 DO i = 1, imax
70335 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
70336 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
70337 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
70338 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
70339 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
70340 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
70341 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
70342 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
70343 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
70344 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
70345 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
70346 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
70347 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
70348 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
70349 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
70350 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
70351 END DO
70352 imax = 7*3*7
70353 kmax = 10
70354 i = 0
70355 DO i1 = 1, 7
70356 DO i2 = 1, 3
70357 DO i3 = 1, 7
70358 i = i + 1
70359 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
70360 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
70361 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
70362 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
70363 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
70364 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
70365 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
70366 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
70367 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
70368 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
70369 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
70370 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
70371 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
70372 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
70373 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
70374 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
70375 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
70376 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
70377 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
70378 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
70379 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
70380 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
70381 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
70382 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
70383 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
70384 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
70385 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
70386 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
70387 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
70388 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
70389 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
70390 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
70391 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
70392 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
70393 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
70394 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
70395 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
70396 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
70397 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
70398 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
70399 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
70400 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
70401 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
70402 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
70403 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
70404 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
70405 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
70406 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
70407 END DO
70408 END DO
70409 END DO
70410 s_offset_d1 = s_offset_d1 + 7
70411 END DO
70412 s_offset_c1 = s_offset_c1 + 7
70413 END DO
70414 s_offset_b1 = s_offset_b1 + 3
70415 END DO
70416 s_offset_a1 = s_offset_a1 + 7
70417 END DO
70418 END SUBROUTINE contract_fpff
70419#endif
70420#if __MAX_CONTR > 4 || __MAX_CONTR == 4
70421! **************************************************************************************************
70422!> \brief ...
70423!> \param work ...
70424!> \param nl_a ...
70425!> \param nl_b ...
70426!> \param nl_c ...
70427!> \param nl_d ...
70428!> \param sphi_a ...
70429!> \param sphi_b ...
70430!> \param sphi_c ...
70431!> \param sphi_d ...
70432!> \param primitives ...
70433!> \param buffer1 ...
70434!> \param buffer2 ...
70435! **************************************************************************************************
70436 SUBROUTINE contract_fpfg(work, &
70437 nl_a, nl_b, nl_c, nl_d, &
70438 sphi_a, sphi_b, sphi_c, sphi_d, &
70439 primitives, &
70440 buffer1, buffer2)
70441 REAL(dp), DIMENSION(10*3*10*15), INTENT(IN) :: work
70442 INTEGER :: nl_a, nl_b, nl_c, nl_d
70443 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
70444 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
70445 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
70446 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
70447 REAL(dp), &
70448 DIMENSION(7*nl_a, 3*nl_b, 7*nl_c, 9*nl_d) :: primitives
70449 REAL(dp), DIMENSION(10*3*10*15) :: buffer1, buffer2
70450
70451 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
70452 kmax, s_offset_a1, s_offset_b1, &
70453 s_offset_c1, s_offset_d1
70454
70455 s_offset_a1 = 0
70456 DO ia = 1, nl_a
70457 s_offset_b1 = 0
70458 DO ib = 1, nl_b
70459 s_offset_c1 = 0
70460 DO ic = 1, nl_c
70461 s_offset_d1 = 0
70462 DO id = 1, nl_d
70463 buffer1 = 0.0_dp
70464 imax = 3*10*15
70465 kmax = 10
70466 DO i = 1, imax
70467 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
70468 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
70469 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
70470 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
70471 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
70472 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
70473 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
70474 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
70475 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
70476 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
70477 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
70478 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
70479 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
70480 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
70481 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
70482 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
70483 END DO
70484 buffer2 = 0.0_dp
70485 imax = 7*10*15
70486 kmax = 3
70487 DO i = 1, imax
70488 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
70489 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
70490 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
70491 END DO
70492 buffer1 = 0.0_dp
70493 imax = 7*3*15
70494 kmax = 10
70495 DO i = 1, imax
70496 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
70497 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
70498 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
70499 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
70500 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
70501 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
70502 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
70503 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
70504 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
70505 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
70506 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
70507 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
70508 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
70509 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
70510 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
70511 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
70512 END DO
70513 imax = 7*3*7
70514 kmax = 15
70515 i = 0
70516 DO i1 = 1, 7
70517 DO i2 = 1, 3
70518 DO i3 = 1, 7
70519 i = i + 1
70520 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
70521 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
70522 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
70523 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
70524 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
70525 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
70526 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
70527 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
70528 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
70529 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
70530 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
70531 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
70532 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
70533 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
70534 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
70535 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
70536 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
70537 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
70538 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
70539 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
70540 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
70541 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
70542 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
70543 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
70544 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
70545 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
70546 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
70547 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
70548 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
70549 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
70550 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
70551 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
70552 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
70553 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
70554 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
70555 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
70556 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
70557 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
70558 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
70559 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
70560 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
70561 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
70562 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
70563 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
70564 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
70565 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
70566 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
70567 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
70568 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
70569 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
70570 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
70571 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
70572 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
70573 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
70574 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
70575 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
70576 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
70577 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
70578 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
70579 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
70580 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
70581 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
70582 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
70583 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
70584 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
70585 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
70586 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
70587 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
70588 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
70589 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
70590 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
70591 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
70592 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
70593 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
70594 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
70595 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
70596 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
70597 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
70598 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
70599 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
70600 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
70601 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
70602 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
70603 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
70604 END DO
70605 END DO
70606 END DO
70607 s_offset_d1 = s_offset_d1 + 9
70608 END DO
70609 s_offset_c1 = s_offset_c1 + 7
70610 END DO
70611 s_offset_b1 = s_offset_b1 + 3
70612 END DO
70613 s_offset_a1 = s_offset_a1 + 7
70614 END DO
70615 END SUBROUTINE contract_fpfg
70616#endif
70617#if __MAX_CONTR > 4 || __MAX_CONTR == 4
70618! **************************************************************************************************
70619!> \brief ...
70620!> \param work ...
70621!> \param nl_a ...
70622!> \param nl_b ...
70623!> \param nl_c ...
70624!> \param nl_d ...
70625!> \param sphi_a ...
70626!> \param sphi_b ...
70627!> \param sphi_c ...
70628!> \param sphi_d ...
70629!> \param primitives ...
70630!> \param buffer1 ...
70631!> \param buffer2 ...
70632! **************************************************************************************************
70633 SUBROUTINE contract_fpgs(work, &
70634 nl_a, nl_b, nl_c, nl_d, &
70635 sphi_a, sphi_b, sphi_c, sphi_d, &
70636 primitives, &
70637 buffer1, buffer2)
70638 REAL(dp), DIMENSION(10*3*15*1), INTENT(IN) :: work
70639 INTEGER :: nl_a, nl_b, nl_c, nl_d
70640 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
70641 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
70642 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
70643 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
70644 REAL(dp), &
70645 DIMENSION(7*nl_a, 3*nl_b, 9*nl_c, 1*nl_d) :: primitives
70646 REAL(dp), DIMENSION(10*3*15*1) :: buffer1, buffer2
70647
70648 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
70649 kmax, s_offset_a1, s_offset_b1, &
70650 s_offset_c1, s_offset_d1
70651
70652 s_offset_a1 = 0
70653 DO ia = 1, nl_a
70654 s_offset_b1 = 0
70655 DO ib = 1, nl_b
70656 s_offset_c1 = 0
70657 DO ic = 1, nl_c
70658 s_offset_d1 = 0
70659 DO id = 1, nl_d
70660 buffer1 = 0.0_dp
70661 imax = 3*15*1
70662 kmax = 10
70663 DO i = 1, imax
70664 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
70665 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
70666 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
70667 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
70668 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
70669 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
70670 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
70671 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
70672 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
70673 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
70674 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
70675 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
70676 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
70677 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
70678 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
70679 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
70680 END DO
70681 buffer2 = 0.0_dp
70682 imax = 7*15*1
70683 kmax = 3
70684 DO i = 1, imax
70685 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
70686 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
70687 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
70688 END DO
70689 buffer1 = 0.0_dp
70690 imax = 7*3*1
70691 kmax = 15
70692 DO i = 1, imax
70693 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
70694 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
70695 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
70696 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
70697 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
70698 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
70699 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
70700 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
70701 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
70702 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
70703 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
70704 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
70705 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
70706 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
70707 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
70708 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
70709 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
70710 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
70711 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
70712 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
70713 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
70714 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
70715 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
70716 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
70717 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
70718 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
70719 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
70720 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
70721 END DO
70722 imax = 7*3*9
70723 kmax = 1
70724 i = 0
70725 DO i1 = 1, 9
70726 DO i2 = 1, 3
70727 DO i3 = 1, 7
70728 i = i + 1
70729 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
70730 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
70731 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
70732 END DO
70733 END DO
70734 END DO
70735 s_offset_d1 = s_offset_d1 + 1
70736 END DO
70737 s_offset_c1 = s_offset_c1 + 9
70738 END DO
70739 s_offset_b1 = s_offset_b1 + 3
70740 END DO
70741 s_offset_a1 = s_offset_a1 + 7
70742 END DO
70743 END SUBROUTINE contract_fpgs
70744#endif
70745#if __MAX_CONTR > 4 || __MAX_CONTR == 4
70746! **************************************************************************************************
70747!> \brief ...
70748!> \param work ...
70749!> \param nl_a ...
70750!> \param nl_b ...
70751!> \param nl_c ...
70752!> \param nl_d ...
70753!> \param sphi_a ...
70754!> \param sphi_b ...
70755!> \param sphi_c ...
70756!> \param sphi_d ...
70757!> \param primitives ...
70758!> \param buffer1 ...
70759!> \param buffer2 ...
70760! **************************************************************************************************
70761 SUBROUTINE contract_fpgp(work, &
70762 nl_a, nl_b, nl_c, nl_d, &
70763 sphi_a, sphi_b, sphi_c, sphi_d, &
70764 primitives, &
70765 buffer1, buffer2)
70766 REAL(dp), DIMENSION(10*3*15*3), INTENT(IN) :: work
70767 INTEGER :: nl_a, nl_b, nl_c, nl_d
70768 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
70769 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
70770 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
70771 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
70772 REAL(dp), &
70773 DIMENSION(7*nl_a, 3*nl_b, 9*nl_c, 3*nl_d) :: primitives
70774 REAL(dp), DIMENSION(10*3*15*3) :: buffer1, buffer2
70775
70776 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
70777 kmax, s_offset_a1, s_offset_b1, &
70778 s_offset_c1, s_offset_d1
70779
70780 s_offset_a1 = 0
70781 DO ia = 1, nl_a
70782 s_offset_b1 = 0
70783 DO ib = 1, nl_b
70784 s_offset_c1 = 0
70785 DO ic = 1, nl_c
70786 s_offset_d1 = 0
70787 DO id = 1, nl_d
70788 buffer1 = 0.0_dp
70789 imax = 3*15*3
70790 kmax = 10
70791 DO i = 1, imax
70792 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
70793 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
70794 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
70795 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
70796 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
70797 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
70798 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
70799 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
70800 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
70801 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
70802 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
70803 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
70804 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
70805 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
70806 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
70807 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
70808 END DO
70809 buffer2 = 0.0_dp
70810 imax = 7*15*3
70811 kmax = 3
70812 DO i = 1, imax
70813 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
70814 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
70815 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
70816 END DO
70817 buffer1 = 0.0_dp
70818 imax = 7*3*3
70819 kmax = 15
70820 DO i = 1, imax
70821 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
70822 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
70823 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
70824 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
70825 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
70826 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
70827 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
70828 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
70829 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
70830 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
70831 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
70832 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
70833 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
70834 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
70835 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
70836 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
70837 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
70838 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
70839 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
70840 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
70841 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
70842 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
70843 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
70844 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
70845 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
70846 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
70847 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
70848 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
70849 END DO
70850 imax = 7*3*9
70851 kmax = 3
70852 i = 0
70853 DO i1 = 1, 9
70854 DO i2 = 1, 3
70855 DO i3 = 1, 7
70856 i = i + 1
70857 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
70858 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
70859 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
70860 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
70861 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
70862 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
70863 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
70864 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
70865 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
70866 END DO
70867 END DO
70868 END DO
70869 s_offset_d1 = s_offset_d1 + 3
70870 END DO
70871 s_offset_c1 = s_offset_c1 + 9
70872 END DO
70873 s_offset_b1 = s_offset_b1 + 3
70874 END DO
70875 s_offset_a1 = s_offset_a1 + 7
70876 END DO
70877 END SUBROUTINE contract_fpgp
70878#endif
70879#if __MAX_CONTR > 4 || __MAX_CONTR == 4
70880! **************************************************************************************************
70881!> \brief ...
70882!> \param work ...
70883!> \param nl_a ...
70884!> \param nl_b ...
70885!> \param nl_c ...
70886!> \param nl_d ...
70887!> \param sphi_a ...
70888!> \param sphi_b ...
70889!> \param sphi_c ...
70890!> \param sphi_d ...
70891!> \param primitives ...
70892!> \param buffer1 ...
70893!> \param buffer2 ...
70894! **************************************************************************************************
70895 SUBROUTINE contract_fpgd(work, &
70896 nl_a, nl_b, nl_c, nl_d, &
70897 sphi_a, sphi_b, sphi_c, sphi_d, &
70898 primitives, &
70899 buffer1, buffer2)
70900 REAL(dp), DIMENSION(10*3*15*6), INTENT(IN) :: work
70901 INTEGER :: nl_a, nl_b, nl_c, nl_d
70902 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
70903 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
70904 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
70905 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
70906 REAL(dp), &
70907 DIMENSION(7*nl_a, 3*nl_b, 9*nl_c, 5*nl_d) :: primitives
70908 REAL(dp), DIMENSION(10*3*15*6) :: buffer1, buffer2
70909
70910 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
70911 kmax, s_offset_a1, s_offset_b1, &
70912 s_offset_c1, s_offset_d1
70913
70914 s_offset_a1 = 0
70915 DO ia = 1, nl_a
70916 s_offset_b1 = 0
70917 DO ib = 1, nl_b
70918 s_offset_c1 = 0
70919 DO ic = 1, nl_c
70920 s_offset_d1 = 0
70921 DO id = 1, nl_d
70922 buffer1 = 0.0_dp
70923 imax = 3*15*6
70924 kmax = 10
70925 DO i = 1, imax
70926 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
70927 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
70928 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
70929 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
70930 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
70931 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
70932 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
70933 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
70934 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
70935 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
70936 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
70937 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
70938 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
70939 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
70940 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
70941 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
70942 END DO
70943 buffer2 = 0.0_dp
70944 imax = 7*15*6
70945 kmax = 3
70946 DO i = 1, imax
70947 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
70948 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
70949 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
70950 END DO
70951 buffer1 = 0.0_dp
70952 imax = 7*3*6
70953 kmax = 15
70954 DO i = 1, imax
70955 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
70956 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
70957 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
70958 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
70959 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
70960 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
70961 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
70962 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
70963 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
70964 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
70965 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
70966 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
70967 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
70968 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
70969 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
70970 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
70971 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
70972 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
70973 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
70974 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
70975 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
70976 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
70977 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
70978 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
70979 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
70980 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
70981 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
70982 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
70983 END DO
70984 imax = 7*3*9
70985 kmax = 6
70986 i = 0
70987 DO i1 = 1, 9
70988 DO i2 = 1, 3
70989 DO i3 = 1, 7
70990 i = i + 1
70991 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
70992 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
70993 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
70994 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
70995 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
70996 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
70997 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
70998 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
70999 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
71000 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
71001 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
71002 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
71003 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
71004 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
71005 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
71006 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
71007 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
71008 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
71009 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
71010 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
71011 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
71012 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
71013 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
71014 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
71015 END DO
71016 END DO
71017 END DO
71018 s_offset_d1 = s_offset_d1 + 5
71019 END DO
71020 s_offset_c1 = s_offset_c1 + 9
71021 END DO
71022 s_offset_b1 = s_offset_b1 + 3
71023 END DO
71024 s_offset_a1 = s_offset_a1 + 7
71025 END DO
71026 END SUBROUTINE contract_fpgd
71027#endif
71028#if __MAX_CONTR > 4 || __MAX_CONTR == 4
71029! **************************************************************************************************
71030!> \brief ...
71031!> \param work ...
71032!> \param nl_a ...
71033!> \param nl_b ...
71034!> \param nl_c ...
71035!> \param nl_d ...
71036!> \param sphi_a ...
71037!> \param sphi_b ...
71038!> \param sphi_c ...
71039!> \param sphi_d ...
71040!> \param primitives ...
71041!> \param buffer1 ...
71042!> \param buffer2 ...
71043! **************************************************************************************************
71044 SUBROUTINE contract_fpgf(work, &
71045 nl_a, nl_b, nl_c, nl_d, &
71046 sphi_a, sphi_b, sphi_c, sphi_d, &
71047 primitives, &
71048 buffer1, buffer2)
71049 REAL(dp), DIMENSION(10*3*15*10), INTENT(IN) :: work
71050 INTEGER :: nl_a, nl_b, nl_c, nl_d
71051 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
71052 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
71053 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
71054 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
71055 REAL(dp), &
71056 DIMENSION(7*nl_a, 3*nl_b, 9*nl_c, 7*nl_d) :: primitives
71057 REAL(dp), DIMENSION(10*3*15*10) :: buffer1, buffer2
71058
71059 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
71060 kmax, s_offset_a1, s_offset_b1, &
71061 s_offset_c1, s_offset_d1
71062
71063 s_offset_a1 = 0
71064 DO ia = 1, nl_a
71065 s_offset_b1 = 0
71066 DO ib = 1, nl_b
71067 s_offset_c1 = 0
71068 DO ic = 1, nl_c
71069 s_offset_d1 = 0
71070 DO id = 1, nl_d
71071 buffer1 = 0.0_dp
71072 imax = 3*15*10
71073 kmax = 10
71074 DO i = 1, imax
71075 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
71076 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
71077 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
71078 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
71079 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
71080 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
71081 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
71082 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
71083 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
71084 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
71085 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
71086 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
71087 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
71088 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
71089 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
71090 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
71091 END DO
71092 buffer2 = 0.0_dp
71093 imax = 7*15*10
71094 kmax = 3
71095 DO i = 1, imax
71096 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
71097 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
71098 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
71099 END DO
71100 buffer1 = 0.0_dp
71101 imax = 7*3*10
71102 kmax = 15
71103 DO i = 1, imax
71104 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
71105 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
71106 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
71107 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
71108 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
71109 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
71110 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
71111 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
71112 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
71113 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
71114 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
71115 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
71116 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
71117 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
71118 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
71119 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
71120 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
71121 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
71122 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
71123 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
71124 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
71125 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
71126 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
71127 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
71128 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
71129 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
71130 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
71131 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
71132 END DO
71133 imax = 7*3*9
71134 kmax = 10
71135 i = 0
71136 DO i1 = 1, 9
71137 DO i2 = 1, 3
71138 DO i3 = 1, 7
71139 i = i + 1
71140 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
71141 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
71142 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
71143 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
71144 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
71145 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
71146 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
71147 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
71148 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
71149 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
71150 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
71151 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
71152 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
71153 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
71154 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
71155 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
71156 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
71157 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
71158 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
71159 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
71160 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
71161 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
71162 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
71163 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
71164 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
71165 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
71166 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
71167 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
71168 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
71169 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
71170 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
71171 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
71172 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
71173 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
71174 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
71175 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
71176 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
71177 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
71178 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
71179 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
71180 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
71181 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
71182 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
71183 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
71184 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
71185 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
71186 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
71187 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
71188 END DO
71189 END DO
71190 END DO
71191 s_offset_d1 = s_offset_d1 + 7
71192 END DO
71193 s_offset_c1 = s_offset_c1 + 9
71194 END DO
71195 s_offset_b1 = s_offset_b1 + 3
71196 END DO
71197 s_offset_a1 = s_offset_a1 + 7
71198 END DO
71199 END SUBROUTINE contract_fpgf
71200#endif
71201#if __MAX_CONTR > 4 || __MAX_CONTR == 4
71202! **************************************************************************************************
71203!> \brief ...
71204!> \param work ...
71205!> \param nl_a ...
71206!> \param nl_b ...
71207!> \param nl_c ...
71208!> \param nl_d ...
71209!> \param sphi_a ...
71210!> \param sphi_b ...
71211!> \param sphi_c ...
71212!> \param sphi_d ...
71213!> \param primitives ...
71214!> \param buffer1 ...
71215!> \param buffer2 ...
71216! **************************************************************************************************
71217 SUBROUTINE contract_fpgg(work, &
71218 nl_a, nl_b, nl_c, nl_d, &
71219 sphi_a, sphi_b, sphi_c, sphi_d, &
71220 primitives, &
71221 buffer1, buffer2)
71222 REAL(dp), DIMENSION(10*3*15*15), INTENT(IN) :: work
71223 INTEGER :: nl_a, nl_b, nl_c, nl_d
71224 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
71225 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
71226 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
71227 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
71228 REAL(dp), &
71229 DIMENSION(7*nl_a, 3*nl_b, 9*nl_c, 9*nl_d) :: primitives
71230 REAL(dp), DIMENSION(10*3*15*15) :: buffer1, buffer2
71231
71232 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
71233 kmax, s_offset_a1, s_offset_b1, &
71234 s_offset_c1, s_offset_d1
71235
71236 s_offset_a1 = 0
71237 DO ia = 1, nl_a
71238 s_offset_b1 = 0
71239 DO ib = 1, nl_b
71240 s_offset_c1 = 0
71241 DO ic = 1, nl_c
71242 s_offset_d1 = 0
71243 DO id = 1, nl_d
71244 buffer1 = 0.0_dp
71245 imax = 3*15*15
71246 kmax = 10
71247 DO i = 1, imax
71248 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
71249 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
71250 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
71251 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
71252 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
71253 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
71254 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
71255 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
71256 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
71257 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
71258 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
71259 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
71260 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
71261 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
71262 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
71263 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
71264 END DO
71265 buffer2 = 0.0_dp
71266 imax = 7*15*15
71267 kmax = 3
71268 DO i = 1, imax
71269 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
71270 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
71271 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
71272 END DO
71273 buffer1 = 0.0_dp
71274 imax = 7*3*15
71275 kmax = 15
71276 DO i = 1, imax
71277 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
71278 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
71279 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
71280 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
71281 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
71282 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
71283 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
71284 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
71285 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
71286 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
71287 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
71288 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
71289 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
71290 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
71291 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
71292 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
71293 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
71294 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
71295 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
71296 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
71297 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
71298 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
71299 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
71300 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
71301 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
71302 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
71303 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
71304 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
71305 END DO
71306 imax = 7*3*9
71307 kmax = 15
71308 i = 0
71309 DO i1 = 1, 9
71310 DO i2 = 1, 3
71311 DO i3 = 1, 7
71312 i = i + 1
71313 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
71314 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
71315 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
71316 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
71317 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
71318 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
71319 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
71320 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
71321 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
71322 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
71323 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
71324 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
71325 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
71326 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
71327 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
71328 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
71329 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
71330 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
71331 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
71332 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
71333 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
71334 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
71335 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
71336 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
71337 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
71338 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
71339 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
71340 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
71341 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
71342 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
71343 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
71344 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
71345 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
71346 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
71347 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
71348 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
71349 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
71350 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
71351 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
71352 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
71353 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
71354 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
71355 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
71356 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
71357 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
71358 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
71359 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
71360 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
71361 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
71362 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
71363 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
71364 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
71365 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
71366 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
71367 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
71368 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
71369 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
71370 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
71371 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
71372 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
71373 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
71374 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
71375 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
71376 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
71377 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
71378 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
71379 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
71380 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
71381 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
71382 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
71383 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
71384 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
71385 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
71386 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
71387 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
71388 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
71389 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
71390 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
71391 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
71392 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
71393 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
71394 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
71395 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
71396 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
71397 END DO
71398 END DO
71399 END DO
71400 s_offset_d1 = s_offset_d1 + 9
71401 END DO
71402 s_offset_c1 = s_offset_c1 + 9
71403 END DO
71404 s_offset_b1 = s_offset_b1 + 3
71405 END DO
71406 s_offset_a1 = s_offset_a1 + 7
71407 END DO
71408 END SUBROUTINE contract_fpgg
71409#endif
71410#if __MAX_CONTR > 3 || __MAX_CONTR == 3
71411! **************************************************************************************************
71412!> \brief ...
71413!> \param work ...
71414!> \param nl_a ...
71415!> \param nl_b ...
71416!> \param nl_c ...
71417!> \param nl_d ...
71418!> \param sphi_a ...
71419!> \param sphi_b ...
71420!> \param sphi_c ...
71421!> \param sphi_d ...
71422!> \param primitives ...
71423!> \param buffer1 ...
71424!> \param buffer2 ...
71425! **************************************************************************************************
71426 SUBROUTINE contract_fdss(work, &
71427 nl_a, nl_b, nl_c, nl_d, &
71428 sphi_a, sphi_b, sphi_c, sphi_d, &
71429 primitives, &
71430 buffer1, buffer2)
71431 REAL(dp), DIMENSION(10*6*1*1), INTENT(IN) :: work
71432 INTEGER :: nl_a, nl_b, nl_c, nl_d
71433 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
71434 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
71435 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
71436 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
71437 REAL(dp), &
71438 DIMENSION(7*nl_a, 5*nl_b, 1*nl_c, 1*nl_d) :: primitives
71439 REAL(dp), DIMENSION(10*6*1*1) :: buffer1, buffer2
71440
71441 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
71442 kmax, s_offset_a1, s_offset_b1, &
71443 s_offset_c1, s_offset_d1
71444
71445 s_offset_a1 = 0
71446 DO ia = 1, nl_a
71447 s_offset_b1 = 0
71448 DO ib = 1, nl_b
71449 s_offset_c1 = 0
71450 DO ic = 1, nl_c
71451 s_offset_d1 = 0
71452 DO id = 1, nl_d
71453 buffer1 = 0.0_dp
71454 imax = 6*1*1
71455 kmax = 10
71456 DO i = 1, imax
71457 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
71458 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
71459 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
71460 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
71461 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
71462 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
71463 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
71464 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
71465 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
71466 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
71467 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
71468 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
71469 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
71470 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
71471 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
71472 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
71473 END DO
71474 buffer2 = 0.0_dp
71475 imax = 7*1*1
71476 kmax = 6
71477 DO i = 1, imax
71478 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
71479 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
71480 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
71481 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
71482 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
71483 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
71484 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
71485 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
71486 END DO
71487 buffer1 = 0.0_dp
71488 imax = 7*5*1
71489 kmax = 1
71490 DO i = 1, imax
71491 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
71492 END DO
71493 imax = 7*5*1
71494 kmax = 1
71495 i = 0
71496 DO i1 = 1, 1
71497 DO i2 = 1, 5
71498 DO i3 = 1, 7
71499 i = i + 1
71500 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
71501 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
71502 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
71503 END DO
71504 END DO
71505 END DO
71506 s_offset_d1 = s_offset_d1 + 1
71507 END DO
71508 s_offset_c1 = s_offset_c1 + 1
71509 END DO
71510 s_offset_b1 = s_offset_b1 + 5
71511 END DO
71512 s_offset_a1 = s_offset_a1 + 7
71513 END DO
71514 END SUBROUTINE contract_fdss
71515#endif
71516#if __MAX_CONTR > 3 || __MAX_CONTR == 3
71517! **************************************************************************************************
71518!> \brief ...
71519!> \param work ...
71520!> \param nl_a ...
71521!> \param nl_b ...
71522!> \param nl_c ...
71523!> \param nl_d ...
71524!> \param sphi_a ...
71525!> \param sphi_b ...
71526!> \param sphi_c ...
71527!> \param sphi_d ...
71528!> \param primitives ...
71529!> \param buffer1 ...
71530!> \param buffer2 ...
71531! **************************************************************************************************
71532 SUBROUTINE contract_fdsp(work, &
71533 nl_a, nl_b, nl_c, nl_d, &
71534 sphi_a, sphi_b, sphi_c, sphi_d, &
71535 primitives, &
71536 buffer1, buffer2)
71537 REAL(dp), DIMENSION(10*6*1*3), INTENT(IN) :: work
71538 INTEGER :: nl_a, nl_b, nl_c, nl_d
71539 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
71540 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
71541 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
71542 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
71543 REAL(dp), &
71544 DIMENSION(7*nl_a, 5*nl_b, 1*nl_c, 3*nl_d) :: primitives
71545 REAL(dp), DIMENSION(10*6*1*3) :: buffer1, buffer2
71546
71547 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
71548 kmax, s_offset_a1, s_offset_b1, &
71549 s_offset_c1, s_offset_d1
71550
71551 s_offset_a1 = 0
71552 DO ia = 1, nl_a
71553 s_offset_b1 = 0
71554 DO ib = 1, nl_b
71555 s_offset_c1 = 0
71556 DO ic = 1, nl_c
71557 s_offset_d1 = 0
71558 DO id = 1, nl_d
71559 buffer1 = 0.0_dp
71560 imax = 6*1*3
71561 kmax = 10
71562 DO i = 1, imax
71563 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
71564 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
71565 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
71566 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
71567 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
71568 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
71569 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
71570 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
71571 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
71572 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
71573 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
71574 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
71575 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
71576 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
71577 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
71578 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
71579 END DO
71580 buffer2 = 0.0_dp
71581 imax = 7*1*3
71582 kmax = 6
71583 DO i = 1, imax
71584 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
71585 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
71586 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
71587 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
71588 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
71589 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
71590 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
71591 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
71592 END DO
71593 buffer1 = 0.0_dp
71594 imax = 7*5*3
71595 kmax = 1
71596 DO i = 1, imax
71597 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
71598 END DO
71599 imax = 7*5*1
71600 kmax = 3
71601 i = 0
71602 DO i1 = 1, 1
71603 DO i2 = 1, 5
71604 DO i3 = 1, 7
71605 i = i + 1
71606 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
71607 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
71608 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
71609 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
71610 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
71611 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
71612 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
71613 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
71614 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
71615 END DO
71616 END DO
71617 END DO
71618 s_offset_d1 = s_offset_d1 + 3
71619 END DO
71620 s_offset_c1 = s_offset_c1 + 1
71621 END DO
71622 s_offset_b1 = s_offset_b1 + 5
71623 END DO
71624 s_offset_a1 = s_offset_a1 + 7
71625 END DO
71626 END SUBROUTINE contract_fdsp
71627#endif
71628#if __MAX_CONTR > 3 || __MAX_CONTR == 3
71629! **************************************************************************************************
71630!> \brief ...
71631!> \param work ...
71632!> \param nl_a ...
71633!> \param nl_b ...
71634!> \param nl_c ...
71635!> \param nl_d ...
71636!> \param sphi_a ...
71637!> \param sphi_b ...
71638!> \param sphi_c ...
71639!> \param sphi_d ...
71640!> \param primitives ...
71641!> \param buffer1 ...
71642!> \param buffer2 ...
71643! **************************************************************************************************
71644 SUBROUTINE contract_fdsd(work, &
71645 nl_a, nl_b, nl_c, nl_d, &
71646 sphi_a, sphi_b, sphi_c, sphi_d, &
71647 primitives, &
71648 buffer1, buffer2)
71649 REAL(dp), DIMENSION(10*6*1*6), INTENT(IN) :: work
71650 INTEGER :: nl_a, nl_b, nl_c, nl_d
71651 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
71652 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
71653 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
71654 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
71655 REAL(dp), &
71656 DIMENSION(7*nl_a, 5*nl_b, 1*nl_c, 5*nl_d) :: primitives
71657 REAL(dp), DIMENSION(10*6*1*6) :: buffer1, buffer2
71658
71659 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
71660 kmax, s_offset_a1, s_offset_b1, &
71661 s_offset_c1, s_offset_d1
71662
71663 s_offset_a1 = 0
71664 DO ia = 1, nl_a
71665 s_offset_b1 = 0
71666 DO ib = 1, nl_b
71667 s_offset_c1 = 0
71668 DO ic = 1, nl_c
71669 s_offset_d1 = 0
71670 DO id = 1, nl_d
71671 buffer1 = 0.0_dp
71672 imax = 6*1*6
71673 kmax = 10
71674 DO i = 1, imax
71675 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
71676 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
71677 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
71678 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
71679 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
71680 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
71681 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
71682 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
71683 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
71684 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
71685 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
71686 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
71687 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
71688 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
71689 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
71690 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
71691 END DO
71692 buffer2 = 0.0_dp
71693 imax = 7*1*6
71694 kmax = 6
71695 DO i = 1, imax
71696 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
71697 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
71698 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
71699 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
71700 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
71701 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
71702 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
71703 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
71704 END DO
71705 buffer1 = 0.0_dp
71706 imax = 7*5*6
71707 kmax = 1
71708 DO i = 1, imax
71709 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
71710 END DO
71711 imax = 7*5*1
71712 kmax = 6
71713 i = 0
71714 DO i1 = 1, 1
71715 DO i2 = 1, 5
71716 DO i3 = 1, 7
71717 i = i + 1
71718 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
71719 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
71720 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
71721 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
71722 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
71723 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
71724 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
71725 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
71726 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
71727 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
71728 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
71729 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
71730 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
71731 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
71732 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
71733 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
71734 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
71735 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
71736 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
71737 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
71738 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
71739 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
71740 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
71741 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
71742 END DO
71743 END DO
71744 END DO
71745 s_offset_d1 = s_offset_d1 + 5
71746 END DO
71747 s_offset_c1 = s_offset_c1 + 1
71748 END DO
71749 s_offset_b1 = s_offset_b1 + 5
71750 END DO
71751 s_offset_a1 = s_offset_a1 + 7
71752 END DO
71753 END SUBROUTINE contract_fdsd
71754#endif
71755#if __MAX_CONTR > 3 || __MAX_CONTR == 3
71756! **************************************************************************************************
71757!> \brief ...
71758!> \param work ...
71759!> \param nl_a ...
71760!> \param nl_b ...
71761!> \param nl_c ...
71762!> \param nl_d ...
71763!> \param sphi_a ...
71764!> \param sphi_b ...
71765!> \param sphi_c ...
71766!> \param sphi_d ...
71767!> \param primitives ...
71768!> \param buffer1 ...
71769!> \param buffer2 ...
71770! **************************************************************************************************
71771 SUBROUTINE contract_fdsf(work, &
71772 nl_a, nl_b, nl_c, nl_d, &
71773 sphi_a, sphi_b, sphi_c, sphi_d, &
71774 primitives, &
71775 buffer1, buffer2)
71776 REAL(dp), DIMENSION(10*6*1*10), INTENT(IN) :: work
71777 INTEGER :: nl_a, nl_b, nl_c, nl_d
71778 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
71779 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
71780 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
71781 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
71782 REAL(dp), &
71783 DIMENSION(7*nl_a, 5*nl_b, 1*nl_c, 7*nl_d) :: primitives
71784 REAL(dp), DIMENSION(10*6*1*10) :: buffer1, buffer2
71785
71786 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
71787 kmax, s_offset_a1, s_offset_b1, &
71788 s_offset_c1, s_offset_d1
71789
71790 s_offset_a1 = 0
71791 DO ia = 1, nl_a
71792 s_offset_b1 = 0
71793 DO ib = 1, nl_b
71794 s_offset_c1 = 0
71795 DO ic = 1, nl_c
71796 s_offset_d1 = 0
71797 DO id = 1, nl_d
71798 buffer1 = 0.0_dp
71799 imax = 6*1*10
71800 kmax = 10
71801 DO i = 1, imax
71802 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
71803 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
71804 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
71805 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
71806 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
71807 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
71808 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
71809 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
71810 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
71811 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
71812 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
71813 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
71814 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
71815 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
71816 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
71817 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
71818 END DO
71819 buffer2 = 0.0_dp
71820 imax = 7*1*10
71821 kmax = 6
71822 DO i = 1, imax
71823 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
71824 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
71825 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
71826 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
71827 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
71828 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
71829 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
71830 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
71831 END DO
71832 buffer1 = 0.0_dp
71833 imax = 7*5*10
71834 kmax = 1
71835 DO i = 1, imax
71836 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
71837 END DO
71838 imax = 7*5*1
71839 kmax = 10
71840 i = 0
71841 DO i1 = 1, 1
71842 DO i2 = 1, 5
71843 DO i3 = 1, 7
71844 i = i + 1
71845 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
71846 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
71847 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
71848 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
71849 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
71850 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
71851 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
71852 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
71853 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
71854 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
71855 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
71856 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
71857 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
71858 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
71859 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
71860 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
71861 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
71862 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
71863 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
71864 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
71865 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
71866 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
71867 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
71868 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
71869 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
71870 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
71871 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
71872 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
71873 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
71874 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
71875 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
71876 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
71877 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
71878 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
71879 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
71880 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
71881 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
71882 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
71883 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
71884 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
71885 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
71886 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
71887 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
71888 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
71889 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
71890 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
71891 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
71892 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
71893 END DO
71894 END DO
71895 END DO
71896 s_offset_d1 = s_offset_d1 + 7
71897 END DO
71898 s_offset_c1 = s_offset_c1 + 1
71899 END DO
71900 s_offset_b1 = s_offset_b1 + 5
71901 END DO
71902 s_offset_a1 = s_offset_a1 + 7
71903 END DO
71904 END SUBROUTINE contract_fdsf
71905#endif
71906#if __MAX_CONTR > 4 || __MAX_CONTR == 4
71907! **************************************************************************************************
71908!> \brief ...
71909!> \param work ...
71910!> \param nl_a ...
71911!> \param nl_b ...
71912!> \param nl_c ...
71913!> \param nl_d ...
71914!> \param sphi_a ...
71915!> \param sphi_b ...
71916!> \param sphi_c ...
71917!> \param sphi_d ...
71918!> \param primitives ...
71919!> \param buffer1 ...
71920!> \param buffer2 ...
71921! **************************************************************************************************
71922 SUBROUTINE contract_fdsg(work, &
71923 nl_a, nl_b, nl_c, nl_d, &
71924 sphi_a, sphi_b, sphi_c, sphi_d, &
71925 primitives, &
71926 buffer1, buffer2)
71927 REAL(dp), DIMENSION(10*6*1*15), INTENT(IN) :: work
71928 INTEGER :: nl_a, nl_b, nl_c, nl_d
71929 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
71930 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
71931 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
71932 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
71933 REAL(dp), &
71934 DIMENSION(7*nl_a, 5*nl_b, 1*nl_c, 9*nl_d) :: primitives
71935 REAL(dp), DIMENSION(10*6*1*15) :: buffer1, buffer2
71936
71937 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
71938 kmax, s_offset_a1, s_offset_b1, &
71939 s_offset_c1, s_offset_d1
71940
71941 s_offset_a1 = 0
71942 DO ia = 1, nl_a
71943 s_offset_b1 = 0
71944 DO ib = 1, nl_b
71945 s_offset_c1 = 0
71946 DO ic = 1, nl_c
71947 s_offset_d1 = 0
71948 DO id = 1, nl_d
71949 buffer1 = 0.0_dp
71950 imax = 6*1*15
71951 kmax = 10
71952 DO i = 1, imax
71953 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
71954 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
71955 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
71956 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
71957 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
71958 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
71959 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
71960 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
71961 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
71962 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
71963 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
71964 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
71965 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
71966 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
71967 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
71968 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
71969 END DO
71970 buffer2 = 0.0_dp
71971 imax = 7*1*15
71972 kmax = 6
71973 DO i = 1, imax
71974 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
71975 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
71976 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
71977 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
71978 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
71979 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
71980 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
71981 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
71982 END DO
71983 buffer1 = 0.0_dp
71984 imax = 7*5*15
71985 kmax = 1
71986 DO i = 1, imax
71987 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
71988 END DO
71989 imax = 7*5*1
71990 kmax = 15
71991 i = 0
71992 DO i1 = 1, 1
71993 DO i2 = 1, 5
71994 DO i3 = 1, 7
71995 i = i + 1
71996 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
71997 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
71998 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
71999 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
72000 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
72001 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
72002 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
72003 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
72004 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
72005 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
72006 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
72007 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
72008 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
72009 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
72010 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
72011 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
72012 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
72013 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
72014 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
72015 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
72016 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
72017 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
72018 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
72019 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
72020 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
72021 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
72022 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
72023 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
72024 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
72025 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
72026 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
72027 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
72028 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
72029 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
72030 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
72031 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
72032 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
72033 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
72034 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
72035 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
72036 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
72037 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
72038 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
72039 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
72040 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
72041 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
72042 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
72043 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
72044 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
72045 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
72046 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
72047 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
72048 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
72049 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
72050 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
72051 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
72052 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
72053 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
72054 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
72055 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
72056 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
72057 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
72058 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
72059 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
72060 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
72061 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
72062 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
72063 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
72064 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
72065 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
72066 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
72067 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
72068 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
72069 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
72070 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
72071 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
72072 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
72073 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
72074 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
72075 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
72076 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
72077 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
72078 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
72079 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
72080 END DO
72081 END DO
72082 END DO
72083 s_offset_d1 = s_offset_d1 + 9
72084 END DO
72085 s_offset_c1 = s_offset_c1 + 1
72086 END DO
72087 s_offset_b1 = s_offset_b1 + 5
72088 END DO
72089 s_offset_a1 = s_offset_a1 + 7
72090 END DO
72091 END SUBROUTINE contract_fdsg
72092#endif
72093#if __MAX_CONTR > 3 || __MAX_CONTR == 3
72094! **************************************************************************************************
72095!> \brief ...
72096!> \param work ...
72097!> \param nl_a ...
72098!> \param nl_b ...
72099!> \param nl_c ...
72100!> \param nl_d ...
72101!> \param sphi_a ...
72102!> \param sphi_b ...
72103!> \param sphi_c ...
72104!> \param sphi_d ...
72105!> \param primitives ...
72106!> \param buffer1 ...
72107!> \param buffer2 ...
72108! **************************************************************************************************
72109 SUBROUTINE contract_fdps(work, &
72110 nl_a, nl_b, nl_c, nl_d, &
72111 sphi_a, sphi_b, sphi_c, sphi_d, &
72112 primitives, &
72113 buffer1, buffer2)
72114 REAL(dp), DIMENSION(10*6*3*1), INTENT(IN) :: work
72115 INTEGER :: nl_a, nl_b, nl_c, nl_d
72116 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
72117 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
72118 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
72119 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
72120 REAL(dp), &
72121 DIMENSION(7*nl_a, 5*nl_b, 3*nl_c, 1*nl_d) :: primitives
72122 REAL(dp), DIMENSION(10*6*3*1) :: buffer1, buffer2
72123
72124 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
72125 kmax, s_offset_a1, s_offset_b1, &
72126 s_offset_c1, s_offset_d1
72127
72128 s_offset_a1 = 0
72129 DO ia = 1, nl_a
72130 s_offset_b1 = 0
72131 DO ib = 1, nl_b
72132 s_offset_c1 = 0
72133 DO ic = 1, nl_c
72134 s_offset_d1 = 0
72135 DO id = 1, nl_d
72136 buffer1 = 0.0_dp
72137 imax = 6*3*1
72138 kmax = 10
72139 DO i = 1, imax
72140 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
72141 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
72142 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
72143 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
72144 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
72145 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
72146 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
72147 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
72148 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
72149 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
72150 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
72151 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
72152 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
72153 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
72154 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
72155 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
72156 END DO
72157 buffer2 = 0.0_dp
72158 imax = 7*3*1
72159 kmax = 6
72160 DO i = 1, imax
72161 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
72162 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
72163 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
72164 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
72165 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
72166 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
72167 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
72168 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
72169 END DO
72170 buffer1 = 0.0_dp
72171 imax = 7*5*1
72172 kmax = 3
72173 DO i = 1, imax
72174 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
72175 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
72176 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
72177 END DO
72178 imax = 7*5*3
72179 kmax = 1
72180 i = 0
72181 DO i1 = 1, 3
72182 DO i2 = 1, 5
72183 DO i3 = 1, 7
72184 i = i + 1
72185 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
72186 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
72187 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
72188 END DO
72189 END DO
72190 END DO
72191 s_offset_d1 = s_offset_d1 + 1
72192 END DO
72193 s_offset_c1 = s_offset_c1 + 3
72194 END DO
72195 s_offset_b1 = s_offset_b1 + 5
72196 END DO
72197 s_offset_a1 = s_offset_a1 + 7
72198 END DO
72199 END SUBROUTINE contract_fdps
72200#endif
72201#if __MAX_CONTR > 3 || __MAX_CONTR == 3
72202! **************************************************************************************************
72203!> \brief ...
72204!> \param work ...
72205!> \param nl_a ...
72206!> \param nl_b ...
72207!> \param nl_c ...
72208!> \param nl_d ...
72209!> \param sphi_a ...
72210!> \param sphi_b ...
72211!> \param sphi_c ...
72212!> \param sphi_d ...
72213!> \param primitives ...
72214!> \param buffer1 ...
72215!> \param buffer2 ...
72216! **************************************************************************************************
72217 SUBROUTINE contract_fdpp(work, &
72218 nl_a, nl_b, nl_c, nl_d, &
72219 sphi_a, sphi_b, sphi_c, sphi_d, &
72220 primitives, &
72221 buffer1, buffer2)
72222 REAL(dp), DIMENSION(10*6*3*3), INTENT(IN) :: work
72223 INTEGER :: nl_a, nl_b, nl_c, nl_d
72224 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
72225 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
72226 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
72227 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
72228 REAL(dp), &
72229 DIMENSION(7*nl_a, 5*nl_b, 3*nl_c, 3*nl_d) :: primitives
72230 REAL(dp), DIMENSION(10*6*3*3) :: buffer1, buffer2
72231
72232 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
72233 kmax, s_offset_a1, s_offset_b1, &
72234 s_offset_c1, s_offset_d1
72235
72236 s_offset_a1 = 0
72237 DO ia = 1, nl_a
72238 s_offset_b1 = 0
72239 DO ib = 1, nl_b
72240 s_offset_c1 = 0
72241 DO ic = 1, nl_c
72242 s_offset_d1 = 0
72243 DO id = 1, nl_d
72244 buffer1 = 0.0_dp
72245 imax = 6*3*3
72246 kmax = 10
72247 DO i = 1, imax
72248 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
72249 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
72250 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
72251 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
72252 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
72253 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
72254 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
72255 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
72256 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
72257 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
72258 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
72259 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
72260 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
72261 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
72262 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
72263 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
72264 END DO
72265 buffer2 = 0.0_dp
72266 imax = 7*3*3
72267 kmax = 6
72268 DO i = 1, imax
72269 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
72270 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
72271 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
72272 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
72273 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
72274 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
72275 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
72276 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
72277 END DO
72278 buffer1 = 0.0_dp
72279 imax = 7*5*3
72280 kmax = 3
72281 DO i = 1, imax
72282 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
72283 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
72284 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
72285 END DO
72286 imax = 7*5*3
72287 kmax = 3
72288 i = 0
72289 DO i1 = 1, 3
72290 DO i2 = 1, 5
72291 DO i3 = 1, 7
72292 i = i + 1
72293 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
72294 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
72295 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
72296 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
72297 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
72298 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
72299 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
72300 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
72301 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
72302 END DO
72303 END DO
72304 END DO
72305 s_offset_d1 = s_offset_d1 + 3
72306 END DO
72307 s_offset_c1 = s_offset_c1 + 3
72308 END DO
72309 s_offset_b1 = s_offset_b1 + 5
72310 END DO
72311 s_offset_a1 = s_offset_a1 + 7
72312 END DO
72313 END SUBROUTINE contract_fdpp
72314#endif
72315#if __MAX_CONTR > 3 || __MAX_CONTR == 3
72316! **************************************************************************************************
72317!> \brief ...
72318!> \param work ...
72319!> \param nl_a ...
72320!> \param nl_b ...
72321!> \param nl_c ...
72322!> \param nl_d ...
72323!> \param sphi_a ...
72324!> \param sphi_b ...
72325!> \param sphi_c ...
72326!> \param sphi_d ...
72327!> \param primitives ...
72328!> \param buffer1 ...
72329!> \param buffer2 ...
72330! **************************************************************************************************
72331 SUBROUTINE contract_fdpd(work, &
72332 nl_a, nl_b, nl_c, nl_d, &
72333 sphi_a, sphi_b, sphi_c, sphi_d, &
72334 primitives, &
72335 buffer1, buffer2)
72336 REAL(dp), DIMENSION(10*6*3*6), INTENT(IN) :: work
72337 INTEGER :: nl_a, nl_b, nl_c, nl_d
72338 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
72339 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
72340 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
72341 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
72342 REAL(dp), &
72343 DIMENSION(7*nl_a, 5*nl_b, 3*nl_c, 5*nl_d) :: primitives
72344 REAL(dp), DIMENSION(10*6*3*6) :: buffer1, buffer2
72345
72346 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
72347 kmax, s_offset_a1, s_offset_b1, &
72348 s_offset_c1, s_offset_d1
72349
72350 s_offset_a1 = 0
72351 DO ia = 1, nl_a
72352 s_offset_b1 = 0
72353 DO ib = 1, nl_b
72354 s_offset_c1 = 0
72355 DO ic = 1, nl_c
72356 s_offset_d1 = 0
72357 DO id = 1, nl_d
72358 buffer1 = 0.0_dp
72359 imax = 6*3*6
72360 kmax = 10
72361 DO i = 1, imax
72362 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
72363 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
72364 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
72365 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
72366 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
72367 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
72368 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
72369 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
72370 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
72371 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
72372 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
72373 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
72374 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
72375 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
72376 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
72377 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
72378 END DO
72379 buffer2 = 0.0_dp
72380 imax = 7*3*6
72381 kmax = 6
72382 DO i = 1, imax
72383 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
72384 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
72385 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
72386 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
72387 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
72388 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
72389 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
72390 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
72391 END DO
72392 buffer1 = 0.0_dp
72393 imax = 7*5*6
72394 kmax = 3
72395 DO i = 1, imax
72396 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
72397 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
72398 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
72399 END DO
72400 imax = 7*5*3
72401 kmax = 6
72402 i = 0
72403 DO i1 = 1, 3
72404 DO i2 = 1, 5
72405 DO i3 = 1, 7
72406 i = i + 1
72407 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
72408 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
72409 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
72410 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
72411 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
72412 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
72413 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
72414 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
72415 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
72416 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
72417 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
72418 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
72419 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
72420 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
72421 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
72422 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
72423 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
72424 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
72425 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
72426 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
72427 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
72428 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
72429 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
72430 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
72431 END DO
72432 END DO
72433 END DO
72434 s_offset_d1 = s_offset_d1 + 5
72435 END DO
72436 s_offset_c1 = s_offset_c1 + 3
72437 END DO
72438 s_offset_b1 = s_offset_b1 + 5
72439 END DO
72440 s_offset_a1 = s_offset_a1 + 7
72441 END DO
72442 END SUBROUTINE contract_fdpd
72443#endif
72444#if __MAX_CONTR > 3 || __MAX_CONTR == 3
72445! **************************************************************************************************
72446!> \brief ...
72447!> \param work ...
72448!> \param nl_a ...
72449!> \param nl_b ...
72450!> \param nl_c ...
72451!> \param nl_d ...
72452!> \param sphi_a ...
72453!> \param sphi_b ...
72454!> \param sphi_c ...
72455!> \param sphi_d ...
72456!> \param primitives ...
72457!> \param buffer1 ...
72458!> \param buffer2 ...
72459! **************************************************************************************************
72460 SUBROUTINE contract_fdpf(work, &
72461 nl_a, nl_b, nl_c, nl_d, &
72462 sphi_a, sphi_b, sphi_c, sphi_d, &
72463 primitives, &
72464 buffer1, buffer2)
72465 REAL(dp), DIMENSION(10*6*3*10), INTENT(IN) :: work
72466 INTEGER :: nl_a, nl_b, nl_c, nl_d
72467 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
72468 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
72469 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
72470 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
72471 REAL(dp), &
72472 DIMENSION(7*nl_a, 5*nl_b, 3*nl_c, 7*nl_d) :: primitives
72473 REAL(dp), DIMENSION(10*6*3*10) :: buffer1, buffer2
72474
72475 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
72476 kmax, s_offset_a1, s_offset_b1, &
72477 s_offset_c1, s_offset_d1
72478
72479 s_offset_a1 = 0
72480 DO ia = 1, nl_a
72481 s_offset_b1 = 0
72482 DO ib = 1, nl_b
72483 s_offset_c1 = 0
72484 DO ic = 1, nl_c
72485 s_offset_d1 = 0
72486 DO id = 1, nl_d
72487 buffer1 = 0.0_dp
72488 imax = 6*3*10
72489 kmax = 10
72490 DO i = 1, imax
72491 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
72492 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
72493 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
72494 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
72495 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
72496 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
72497 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
72498 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
72499 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
72500 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
72501 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
72502 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
72503 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
72504 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
72505 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
72506 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
72507 END DO
72508 buffer2 = 0.0_dp
72509 imax = 7*3*10
72510 kmax = 6
72511 DO i = 1, imax
72512 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
72513 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
72514 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
72515 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
72516 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
72517 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
72518 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
72519 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
72520 END DO
72521 buffer1 = 0.0_dp
72522 imax = 7*5*10
72523 kmax = 3
72524 DO i = 1, imax
72525 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
72526 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
72527 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
72528 END DO
72529 imax = 7*5*3
72530 kmax = 10
72531 i = 0
72532 DO i1 = 1, 3
72533 DO i2 = 1, 5
72534 DO i3 = 1, 7
72535 i = i + 1
72536 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
72537 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
72538 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
72539 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
72540 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
72541 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
72542 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
72543 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
72544 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
72545 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
72546 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
72547 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
72548 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
72549 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
72550 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
72551 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
72552 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
72553 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
72554 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
72555 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
72556 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
72557 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
72558 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
72559 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
72560 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
72561 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
72562 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
72563 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
72564 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
72565 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
72566 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
72567 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
72568 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
72569 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
72570 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
72571 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
72572 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
72573 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
72574 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
72575 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
72576 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
72577 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
72578 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
72579 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
72580 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
72581 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
72582 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
72583 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
72584 END DO
72585 END DO
72586 END DO
72587 s_offset_d1 = s_offset_d1 + 7
72588 END DO
72589 s_offset_c1 = s_offset_c1 + 3
72590 END DO
72591 s_offset_b1 = s_offset_b1 + 5
72592 END DO
72593 s_offset_a1 = s_offset_a1 + 7
72594 END DO
72595 END SUBROUTINE contract_fdpf
72596#endif
72597#if __MAX_CONTR > 4 || __MAX_CONTR == 4
72598! **************************************************************************************************
72599!> \brief ...
72600!> \param work ...
72601!> \param nl_a ...
72602!> \param nl_b ...
72603!> \param nl_c ...
72604!> \param nl_d ...
72605!> \param sphi_a ...
72606!> \param sphi_b ...
72607!> \param sphi_c ...
72608!> \param sphi_d ...
72609!> \param primitives ...
72610!> \param buffer1 ...
72611!> \param buffer2 ...
72612! **************************************************************************************************
72613 SUBROUTINE contract_fdpg(work, &
72614 nl_a, nl_b, nl_c, nl_d, &
72615 sphi_a, sphi_b, sphi_c, sphi_d, &
72616 primitives, &
72617 buffer1, buffer2)
72618 REAL(dp), DIMENSION(10*6*3*15), INTENT(IN) :: work
72619 INTEGER :: nl_a, nl_b, nl_c, nl_d
72620 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
72621 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
72622 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
72623 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
72624 REAL(dp), &
72625 DIMENSION(7*nl_a, 5*nl_b, 3*nl_c, 9*nl_d) :: primitives
72626 REAL(dp), DIMENSION(10*6*3*15) :: buffer1, buffer2
72627
72628 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
72629 kmax, s_offset_a1, s_offset_b1, &
72630 s_offset_c1, s_offset_d1
72631
72632 s_offset_a1 = 0
72633 DO ia = 1, nl_a
72634 s_offset_b1 = 0
72635 DO ib = 1, nl_b
72636 s_offset_c1 = 0
72637 DO ic = 1, nl_c
72638 s_offset_d1 = 0
72639 DO id = 1, nl_d
72640 buffer1 = 0.0_dp
72641 imax = 6*3*15
72642 kmax = 10
72643 DO i = 1, imax
72644 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
72645 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
72646 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
72647 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
72648 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
72649 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
72650 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
72651 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
72652 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
72653 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
72654 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
72655 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
72656 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
72657 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
72658 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
72659 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
72660 END DO
72661 buffer2 = 0.0_dp
72662 imax = 7*3*15
72663 kmax = 6
72664 DO i = 1, imax
72665 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
72666 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
72667 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
72668 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
72669 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
72670 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
72671 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
72672 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
72673 END DO
72674 buffer1 = 0.0_dp
72675 imax = 7*5*15
72676 kmax = 3
72677 DO i = 1, imax
72678 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
72679 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
72680 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
72681 END DO
72682 imax = 7*5*3
72683 kmax = 15
72684 i = 0
72685 DO i1 = 1, 3
72686 DO i2 = 1, 5
72687 DO i3 = 1, 7
72688 i = i + 1
72689 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
72690 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
72691 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
72692 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
72693 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
72694 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
72695 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
72696 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
72697 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
72698 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
72699 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
72700 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
72701 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
72702 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
72703 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
72704 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
72705 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
72706 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
72707 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
72708 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
72709 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
72710 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
72711 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
72712 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
72713 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
72714 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
72715 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
72716 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
72717 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
72718 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
72719 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
72720 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
72721 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
72722 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
72723 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
72724 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
72725 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
72726 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
72727 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
72728 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
72729 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
72730 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
72731 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
72732 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
72733 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
72734 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
72735 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
72736 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
72737 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
72738 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
72739 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
72740 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
72741 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
72742 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
72743 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
72744 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
72745 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
72746 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
72747 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
72748 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
72749 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
72750 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
72751 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
72752 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
72753 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
72754 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
72755 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
72756 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
72757 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
72758 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
72759 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
72760 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
72761 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
72762 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
72763 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
72764 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
72765 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
72766 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
72767 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
72768 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
72769 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
72770 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
72771 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
72772 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
72773 END DO
72774 END DO
72775 END DO
72776 s_offset_d1 = s_offset_d1 + 9
72777 END DO
72778 s_offset_c1 = s_offset_c1 + 3
72779 END DO
72780 s_offset_b1 = s_offset_b1 + 5
72781 END DO
72782 s_offset_a1 = s_offset_a1 + 7
72783 END DO
72784 END SUBROUTINE contract_fdpg
72785#endif
72786#if __MAX_CONTR > 3 || __MAX_CONTR == 3
72787! **************************************************************************************************
72788!> \brief ...
72789!> \param work ...
72790!> \param nl_a ...
72791!> \param nl_b ...
72792!> \param nl_c ...
72793!> \param nl_d ...
72794!> \param sphi_a ...
72795!> \param sphi_b ...
72796!> \param sphi_c ...
72797!> \param sphi_d ...
72798!> \param primitives ...
72799!> \param buffer1 ...
72800!> \param buffer2 ...
72801! **************************************************************************************************
72802 SUBROUTINE contract_fdds(work, &
72803 nl_a, nl_b, nl_c, nl_d, &
72804 sphi_a, sphi_b, sphi_c, sphi_d, &
72805 primitives, &
72806 buffer1, buffer2)
72807 REAL(dp), DIMENSION(10*6*6*1), INTENT(IN) :: work
72808 INTEGER :: nl_a, nl_b, nl_c, nl_d
72809 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
72810 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
72811 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
72812 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
72813 REAL(dp), &
72814 DIMENSION(7*nl_a, 5*nl_b, 5*nl_c, 1*nl_d) :: primitives
72815 REAL(dp), DIMENSION(10*6*6*1) :: buffer1, buffer2
72816
72817 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
72818 kmax, s_offset_a1, s_offset_b1, &
72819 s_offset_c1, s_offset_d1
72820
72821 s_offset_a1 = 0
72822 DO ia = 1, nl_a
72823 s_offset_b1 = 0
72824 DO ib = 1, nl_b
72825 s_offset_c1 = 0
72826 DO ic = 1, nl_c
72827 s_offset_d1 = 0
72828 DO id = 1, nl_d
72829 buffer1 = 0.0_dp
72830 imax = 6*6*1
72831 kmax = 10
72832 DO i = 1, imax
72833 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
72834 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
72835 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
72836 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
72837 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
72838 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
72839 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
72840 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
72841 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
72842 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
72843 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
72844 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
72845 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
72846 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
72847 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
72848 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
72849 END DO
72850 buffer2 = 0.0_dp
72851 imax = 7*6*1
72852 kmax = 6
72853 DO i = 1, imax
72854 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
72855 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
72856 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
72857 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
72858 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
72859 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
72860 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
72861 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
72862 END DO
72863 buffer1 = 0.0_dp
72864 imax = 7*5*1
72865 kmax = 6
72866 DO i = 1, imax
72867 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
72868 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
72869 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
72870 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
72871 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
72872 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
72873 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
72874 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
72875 END DO
72876 imax = 7*5*5
72877 kmax = 1
72878 i = 0
72879 DO i1 = 1, 5
72880 DO i2 = 1, 5
72881 DO i3 = 1, 7
72882 i = i + 1
72883 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
72884 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
72885 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
72886 END DO
72887 END DO
72888 END DO
72889 s_offset_d1 = s_offset_d1 + 1
72890 END DO
72891 s_offset_c1 = s_offset_c1 + 5
72892 END DO
72893 s_offset_b1 = s_offset_b1 + 5
72894 END DO
72895 s_offset_a1 = s_offset_a1 + 7
72896 END DO
72897 END SUBROUTINE contract_fdds
72898#endif
72899#if __MAX_CONTR > 3 || __MAX_CONTR == 3
72900! **************************************************************************************************
72901!> \brief ...
72902!> \param work ...
72903!> \param nl_a ...
72904!> \param nl_b ...
72905!> \param nl_c ...
72906!> \param nl_d ...
72907!> \param sphi_a ...
72908!> \param sphi_b ...
72909!> \param sphi_c ...
72910!> \param sphi_d ...
72911!> \param primitives ...
72912!> \param buffer1 ...
72913!> \param buffer2 ...
72914! **************************************************************************************************
72915 SUBROUTINE contract_fddp(work, &
72916 nl_a, nl_b, nl_c, nl_d, &
72917 sphi_a, sphi_b, sphi_c, sphi_d, &
72918 primitives, &
72919 buffer1, buffer2)
72920 REAL(dp), DIMENSION(10*6*6*3), INTENT(IN) :: work
72921 INTEGER :: nl_a, nl_b, nl_c, nl_d
72922 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
72923 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
72924 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
72925 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
72926 REAL(dp), &
72927 DIMENSION(7*nl_a, 5*nl_b, 5*nl_c, 3*nl_d) :: primitives
72928 REAL(dp), DIMENSION(10*6*6*3) :: buffer1, buffer2
72929
72930 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
72931 kmax, s_offset_a1, s_offset_b1, &
72932 s_offset_c1, s_offset_d1
72933
72934 s_offset_a1 = 0
72935 DO ia = 1, nl_a
72936 s_offset_b1 = 0
72937 DO ib = 1, nl_b
72938 s_offset_c1 = 0
72939 DO ic = 1, nl_c
72940 s_offset_d1 = 0
72941 DO id = 1, nl_d
72942 buffer1 = 0.0_dp
72943 imax = 6*6*3
72944 kmax = 10
72945 DO i = 1, imax
72946 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
72947 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
72948 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
72949 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
72950 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
72951 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
72952 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
72953 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
72954 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
72955 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
72956 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
72957 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
72958 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
72959 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
72960 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
72961 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
72962 END DO
72963 buffer2 = 0.0_dp
72964 imax = 7*6*3
72965 kmax = 6
72966 DO i = 1, imax
72967 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
72968 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
72969 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
72970 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
72971 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
72972 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
72973 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
72974 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
72975 END DO
72976 buffer1 = 0.0_dp
72977 imax = 7*5*3
72978 kmax = 6
72979 DO i = 1, imax
72980 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
72981 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
72982 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
72983 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
72984 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
72985 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
72986 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
72987 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
72988 END DO
72989 imax = 7*5*5
72990 kmax = 3
72991 i = 0
72992 DO i1 = 1, 5
72993 DO i2 = 1, 5
72994 DO i3 = 1, 7
72995 i = i + 1
72996 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
72997 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
72998 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
72999 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
73000 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
73001 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
73002 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
73003 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
73004 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
73005 END DO
73006 END DO
73007 END DO
73008 s_offset_d1 = s_offset_d1 + 3
73009 END DO
73010 s_offset_c1 = s_offset_c1 + 5
73011 END DO
73012 s_offset_b1 = s_offset_b1 + 5
73013 END DO
73014 s_offset_a1 = s_offset_a1 + 7
73015 END DO
73016 END SUBROUTINE contract_fddp
73017#endif
73018#if __MAX_CONTR > 3 || __MAX_CONTR == 3
73019! **************************************************************************************************
73020!> \brief ...
73021!> \param work ...
73022!> \param nl_a ...
73023!> \param nl_b ...
73024!> \param nl_c ...
73025!> \param nl_d ...
73026!> \param sphi_a ...
73027!> \param sphi_b ...
73028!> \param sphi_c ...
73029!> \param sphi_d ...
73030!> \param primitives ...
73031!> \param buffer1 ...
73032!> \param buffer2 ...
73033! **************************************************************************************************
73034 SUBROUTINE contract_fddd(work, &
73035 nl_a, nl_b, nl_c, nl_d, &
73036 sphi_a, sphi_b, sphi_c, sphi_d, &
73037 primitives, &
73038 buffer1, buffer2)
73039 REAL(dp), DIMENSION(10*6*6*6), INTENT(IN) :: work
73040 INTEGER :: nl_a, nl_b, nl_c, nl_d
73041 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
73042 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
73043 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
73044 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
73045 REAL(dp), &
73046 DIMENSION(7*nl_a, 5*nl_b, 5*nl_c, 5*nl_d) :: primitives
73047 REAL(dp), DIMENSION(10*6*6*6) :: buffer1, buffer2
73048
73049 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
73050 kmax, s_offset_a1, s_offset_b1, &
73051 s_offset_c1, s_offset_d1
73052
73053 s_offset_a1 = 0
73054 DO ia = 1, nl_a
73055 s_offset_b1 = 0
73056 DO ib = 1, nl_b
73057 s_offset_c1 = 0
73058 DO ic = 1, nl_c
73059 s_offset_d1 = 0
73060 DO id = 1, nl_d
73061 buffer1 = 0.0_dp
73062 imax = 6*6*6
73063 kmax = 10
73064 DO i = 1, imax
73065 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
73066 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
73067 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
73068 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
73069 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
73070 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
73071 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
73072 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
73073 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
73074 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
73075 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
73076 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
73077 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
73078 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
73079 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
73080 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
73081 END DO
73082 buffer2 = 0.0_dp
73083 imax = 7*6*6
73084 kmax = 6
73085 DO i = 1, imax
73086 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
73087 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
73088 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
73089 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
73090 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
73091 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
73092 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
73093 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
73094 END DO
73095 buffer1 = 0.0_dp
73096 imax = 7*5*6
73097 kmax = 6
73098 DO i = 1, imax
73099 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
73100 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
73101 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
73102 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
73103 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
73104 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
73105 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
73106 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
73107 END DO
73108 imax = 7*5*5
73109 kmax = 6
73110 i = 0
73111 DO i1 = 1, 5
73112 DO i2 = 1, 5
73113 DO i3 = 1, 7
73114 i = i + 1
73115 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
73116 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
73117 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
73118 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
73119 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
73120 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
73121 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
73122 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
73123 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
73124 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
73125 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
73126 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
73127 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
73128 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
73129 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
73130 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
73131 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
73132 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
73133 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
73134 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
73135 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
73136 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
73137 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
73138 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
73139 END DO
73140 END DO
73141 END DO
73142 s_offset_d1 = s_offset_d1 + 5
73143 END DO
73144 s_offset_c1 = s_offset_c1 + 5
73145 END DO
73146 s_offset_b1 = s_offset_b1 + 5
73147 END DO
73148 s_offset_a1 = s_offset_a1 + 7
73149 END DO
73150 END SUBROUTINE contract_fddd
73151#endif
73152#if __MAX_CONTR > 3 || __MAX_CONTR == 3
73153! **************************************************************************************************
73154!> \brief ...
73155!> \param work ...
73156!> \param nl_a ...
73157!> \param nl_b ...
73158!> \param nl_c ...
73159!> \param nl_d ...
73160!> \param sphi_a ...
73161!> \param sphi_b ...
73162!> \param sphi_c ...
73163!> \param sphi_d ...
73164!> \param primitives ...
73165!> \param buffer1 ...
73166!> \param buffer2 ...
73167! **************************************************************************************************
73168 SUBROUTINE contract_fddf(work, &
73169 nl_a, nl_b, nl_c, nl_d, &
73170 sphi_a, sphi_b, sphi_c, sphi_d, &
73171 primitives, &
73172 buffer1, buffer2)
73173 REAL(dp), DIMENSION(10*6*6*10), INTENT(IN) :: work
73174 INTEGER :: nl_a, nl_b, nl_c, nl_d
73175 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
73176 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
73177 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
73178 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
73179 REAL(dp), &
73180 DIMENSION(7*nl_a, 5*nl_b, 5*nl_c, 7*nl_d) :: primitives
73181 REAL(dp), DIMENSION(10*6*6*10) :: buffer1, buffer2
73182
73183 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
73184 kmax, s_offset_a1, s_offset_b1, &
73185 s_offset_c1, s_offset_d1
73186
73187 s_offset_a1 = 0
73188 DO ia = 1, nl_a
73189 s_offset_b1 = 0
73190 DO ib = 1, nl_b
73191 s_offset_c1 = 0
73192 DO ic = 1, nl_c
73193 s_offset_d1 = 0
73194 DO id = 1, nl_d
73195 buffer1 = 0.0_dp
73196 imax = 6*6*10
73197 kmax = 10
73198 DO i = 1, imax
73199 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
73200 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
73201 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
73202 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
73203 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
73204 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
73205 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
73206 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
73207 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
73208 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
73209 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
73210 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
73211 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
73212 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
73213 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
73214 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
73215 END DO
73216 buffer2 = 0.0_dp
73217 imax = 7*6*10
73218 kmax = 6
73219 DO i = 1, imax
73220 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
73221 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
73222 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
73223 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
73224 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
73225 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
73226 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
73227 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
73228 END DO
73229 buffer1 = 0.0_dp
73230 imax = 7*5*10
73231 kmax = 6
73232 DO i = 1, imax
73233 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
73234 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
73235 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
73236 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
73237 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
73238 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
73239 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
73240 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
73241 END DO
73242 imax = 7*5*5
73243 kmax = 10
73244 i = 0
73245 DO i1 = 1, 5
73246 DO i2 = 1, 5
73247 DO i3 = 1, 7
73248 i = i + 1
73249 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
73250 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
73251 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
73252 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
73253 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
73254 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
73255 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
73256 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
73257 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
73258 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
73259 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
73260 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
73261 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
73262 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
73263 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
73264 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
73265 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
73266 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
73267 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
73268 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
73269 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
73270 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
73271 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
73272 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
73273 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
73274 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
73275 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
73276 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
73277 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
73278 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
73279 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
73280 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
73281 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
73282 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
73283 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
73284 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
73285 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
73286 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
73287 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
73288 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
73289 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
73290 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
73291 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
73292 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
73293 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
73294 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
73295 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
73296 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
73297 END DO
73298 END DO
73299 END DO
73300 s_offset_d1 = s_offset_d1 + 7
73301 END DO
73302 s_offset_c1 = s_offset_c1 + 5
73303 END DO
73304 s_offset_b1 = s_offset_b1 + 5
73305 END DO
73306 s_offset_a1 = s_offset_a1 + 7
73307 END DO
73308 END SUBROUTINE contract_fddf
73309#endif
73310#if __MAX_CONTR > 4 || __MAX_CONTR == 4
73311! **************************************************************************************************
73312!> \brief ...
73313!> \param work ...
73314!> \param nl_a ...
73315!> \param nl_b ...
73316!> \param nl_c ...
73317!> \param nl_d ...
73318!> \param sphi_a ...
73319!> \param sphi_b ...
73320!> \param sphi_c ...
73321!> \param sphi_d ...
73322!> \param primitives ...
73323!> \param buffer1 ...
73324!> \param buffer2 ...
73325! **************************************************************************************************
73326 SUBROUTINE contract_fddg(work, &
73327 nl_a, nl_b, nl_c, nl_d, &
73328 sphi_a, sphi_b, sphi_c, sphi_d, &
73329 primitives, &
73330 buffer1, buffer2)
73331 REAL(dp), DIMENSION(10*6*6*15), INTENT(IN) :: work
73332 INTEGER :: nl_a, nl_b, nl_c, nl_d
73333 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
73334 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
73335 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
73336 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
73337 REAL(dp), &
73338 DIMENSION(7*nl_a, 5*nl_b, 5*nl_c, 9*nl_d) :: primitives
73339 REAL(dp), DIMENSION(10*6*6*15) :: buffer1, buffer2
73340
73341 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
73342 kmax, s_offset_a1, s_offset_b1, &
73343 s_offset_c1, s_offset_d1
73344
73345 s_offset_a1 = 0
73346 DO ia = 1, nl_a
73347 s_offset_b1 = 0
73348 DO ib = 1, nl_b
73349 s_offset_c1 = 0
73350 DO ic = 1, nl_c
73351 s_offset_d1 = 0
73352 DO id = 1, nl_d
73353 buffer1 = 0.0_dp
73354 imax = 6*6*15
73355 kmax = 10
73356 DO i = 1, imax
73357 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
73358 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
73359 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
73360 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
73361 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
73362 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
73363 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
73364 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
73365 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
73366 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
73367 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
73368 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
73369 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
73370 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
73371 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
73372 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
73373 END DO
73374 buffer2 = 0.0_dp
73375 imax = 7*6*15
73376 kmax = 6
73377 DO i = 1, imax
73378 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
73379 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
73380 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
73381 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
73382 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
73383 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
73384 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
73385 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
73386 END DO
73387 buffer1 = 0.0_dp
73388 imax = 7*5*15
73389 kmax = 6
73390 DO i = 1, imax
73391 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
73392 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
73393 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
73394 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
73395 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
73396 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
73397 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
73398 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
73399 END DO
73400 imax = 7*5*5
73401 kmax = 15
73402 i = 0
73403 DO i1 = 1, 5
73404 DO i2 = 1, 5
73405 DO i3 = 1, 7
73406 i = i + 1
73407 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
73408 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
73409 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
73410 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
73411 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
73412 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
73413 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
73414 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
73415 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
73416 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
73417 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
73418 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
73419 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
73420 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
73421 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
73422 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
73423 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
73424 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
73425 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
73426 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
73427 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
73428 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
73429 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
73430 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
73431 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
73432 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
73433 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
73434 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
73435 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
73436 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
73437 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
73438 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
73439 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
73440 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
73441 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
73442 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
73443 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
73444 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
73445 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
73446 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
73447 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
73448 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
73449 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
73450 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
73451 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
73452 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
73453 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
73454 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
73455 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
73456 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
73457 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
73458 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
73459 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
73460 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
73461 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
73462 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
73463 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
73464 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
73465 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
73466 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
73467 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
73468 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
73469 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
73470 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
73471 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
73472 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
73473 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
73474 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
73475 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
73476 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
73477 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
73478 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
73479 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
73480 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
73481 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
73482 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
73483 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
73484 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
73485 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
73486 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
73487 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
73488 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
73489 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
73490 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
73491 END DO
73492 END DO
73493 END DO
73494 s_offset_d1 = s_offset_d1 + 9
73495 END DO
73496 s_offset_c1 = s_offset_c1 + 5
73497 END DO
73498 s_offset_b1 = s_offset_b1 + 5
73499 END DO
73500 s_offset_a1 = s_offset_a1 + 7
73501 END DO
73502 END SUBROUTINE contract_fddg
73503#endif
73504#if __MAX_CONTR > 3 || __MAX_CONTR == 3
73505! **************************************************************************************************
73506!> \brief ...
73507!> \param work ...
73508!> \param nl_a ...
73509!> \param nl_b ...
73510!> \param nl_c ...
73511!> \param nl_d ...
73512!> \param sphi_a ...
73513!> \param sphi_b ...
73514!> \param sphi_c ...
73515!> \param sphi_d ...
73516!> \param primitives ...
73517!> \param buffer1 ...
73518!> \param buffer2 ...
73519! **************************************************************************************************
73520 SUBROUTINE contract_fdfs(work, &
73521 nl_a, nl_b, nl_c, nl_d, &
73522 sphi_a, sphi_b, sphi_c, sphi_d, &
73523 primitives, &
73524 buffer1, buffer2)
73525 REAL(dp), DIMENSION(10*6*10*1), INTENT(IN) :: work
73526 INTEGER :: nl_a, nl_b, nl_c, nl_d
73527 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
73528 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
73529 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
73530 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
73531 REAL(dp), &
73532 DIMENSION(7*nl_a, 5*nl_b, 7*nl_c, 1*nl_d) :: primitives
73533 REAL(dp), DIMENSION(10*6*10*1) :: buffer1, buffer2
73534
73535 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
73536 kmax, s_offset_a1, s_offset_b1, &
73537 s_offset_c1, s_offset_d1
73538
73539 s_offset_a1 = 0
73540 DO ia = 1, nl_a
73541 s_offset_b1 = 0
73542 DO ib = 1, nl_b
73543 s_offset_c1 = 0
73544 DO ic = 1, nl_c
73545 s_offset_d1 = 0
73546 DO id = 1, nl_d
73547 buffer1 = 0.0_dp
73548 imax = 6*10*1
73549 kmax = 10
73550 DO i = 1, imax
73551 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
73552 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
73553 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
73554 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
73555 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
73556 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
73557 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
73558 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
73559 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
73560 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
73561 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
73562 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
73563 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
73564 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
73565 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
73566 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
73567 END DO
73568 buffer2 = 0.0_dp
73569 imax = 7*10*1
73570 kmax = 6
73571 DO i = 1, imax
73572 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
73573 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
73574 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
73575 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
73576 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
73577 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
73578 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
73579 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
73580 END DO
73581 buffer1 = 0.0_dp
73582 imax = 7*5*1
73583 kmax = 10
73584 DO i = 1, imax
73585 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
73586 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
73587 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
73588 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
73589 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
73590 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
73591 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
73592 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
73593 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
73594 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
73595 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
73596 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
73597 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
73598 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
73599 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
73600 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
73601 END DO
73602 imax = 7*5*7
73603 kmax = 1
73604 i = 0
73605 DO i1 = 1, 7
73606 DO i2 = 1, 5
73607 DO i3 = 1, 7
73608 i = i + 1
73609 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
73610 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
73611 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
73612 END DO
73613 END DO
73614 END DO
73615 s_offset_d1 = s_offset_d1 + 1
73616 END DO
73617 s_offset_c1 = s_offset_c1 + 7
73618 END DO
73619 s_offset_b1 = s_offset_b1 + 5
73620 END DO
73621 s_offset_a1 = s_offset_a1 + 7
73622 END DO
73623 END SUBROUTINE contract_fdfs
73624#endif
73625#if __MAX_CONTR > 3 || __MAX_CONTR == 3
73626! **************************************************************************************************
73627!> \brief ...
73628!> \param work ...
73629!> \param nl_a ...
73630!> \param nl_b ...
73631!> \param nl_c ...
73632!> \param nl_d ...
73633!> \param sphi_a ...
73634!> \param sphi_b ...
73635!> \param sphi_c ...
73636!> \param sphi_d ...
73637!> \param primitives ...
73638!> \param buffer1 ...
73639!> \param buffer2 ...
73640! **************************************************************************************************
73641 SUBROUTINE contract_fdfp(work, &
73642 nl_a, nl_b, nl_c, nl_d, &
73643 sphi_a, sphi_b, sphi_c, sphi_d, &
73644 primitives, &
73645 buffer1, buffer2)
73646 REAL(dp), DIMENSION(10*6*10*3), INTENT(IN) :: work
73647 INTEGER :: nl_a, nl_b, nl_c, nl_d
73648 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
73649 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
73650 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
73651 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
73652 REAL(dp), &
73653 DIMENSION(7*nl_a, 5*nl_b, 7*nl_c, 3*nl_d) :: primitives
73654 REAL(dp), DIMENSION(10*6*10*3) :: buffer1, buffer2
73655
73656 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
73657 kmax, s_offset_a1, s_offset_b1, &
73658 s_offset_c1, s_offset_d1
73659
73660 s_offset_a1 = 0
73661 DO ia = 1, nl_a
73662 s_offset_b1 = 0
73663 DO ib = 1, nl_b
73664 s_offset_c1 = 0
73665 DO ic = 1, nl_c
73666 s_offset_d1 = 0
73667 DO id = 1, nl_d
73668 buffer1 = 0.0_dp
73669 imax = 6*10*3
73670 kmax = 10
73671 DO i = 1, imax
73672 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
73673 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
73674 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
73675 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
73676 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
73677 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
73678 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
73679 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
73680 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
73681 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
73682 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
73683 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
73684 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
73685 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
73686 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
73687 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
73688 END DO
73689 buffer2 = 0.0_dp
73690 imax = 7*10*3
73691 kmax = 6
73692 DO i = 1, imax
73693 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
73694 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
73695 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
73696 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
73697 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
73698 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
73699 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
73700 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
73701 END DO
73702 buffer1 = 0.0_dp
73703 imax = 7*5*3
73704 kmax = 10
73705 DO i = 1, imax
73706 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
73707 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
73708 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
73709 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
73710 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
73711 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
73712 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
73713 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
73714 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
73715 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
73716 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
73717 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
73718 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
73719 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
73720 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
73721 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
73722 END DO
73723 imax = 7*5*7
73724 kmax = 3
73725 i = 0
73726 DO i1 = 1, 7
73727 DO i2 = 1, 5
73728 DO i3 = 1, 7
73729 i = i + 1
73730 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
73731 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
73732 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
73733 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
73734 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
73735 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
73736 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
73737 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
73738 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
73739 END DO
73740 END DO
73741 END DO
73742 s_offset_d1 = s_offset_d1 + 3
73743 END DO
73744 s_offset_c1 = s_offset_c1 + 7
73745 END DO
73746 s_offset_b1 = s_offset_b1 + 5
73747 END DO
73748 s_offset_a1 = s_offset_a1 + 7
73749 END DO
73750 END SUBROUTINE contract_fdfp
73751#endif
73752#if __MAX_CONTR > 3 || __MAX_CONTR == 3
73753! **************************************************************************************************
73754!> \brief ...
73755!> \param work ...
73756!> \param nl_a ...
73757!> \param nl_b ...
73758!> \param nl_c ...
73759!> \param nl_d ...
73760!> \param sphi_a ...
73761!> \param sphi_b ...
73762!> \param sphi_c ...
73763!> \param sphi_d ...
73764!> \param primitives ...
73765!> \param buffer1 ...
73766!> \param buffer2 ...
73767! **************************************************************************************************
73768 SUBROUTINE contract_fdfd(work, &
73769 nl_a, nl_b, nl_c, nl_d, &
73770 sphi_a, sphi_b, sphi_c, sphi_d, &
73771 primitives, &
73772 buffer1, buffer2)
73773 REAL(dp), DIMENSION(10*6*10*6), INTENT(IN) :: work
73774 INTEGER :: nl_a, nl_b, nl_c, nl_d
73775 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
73776 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
73777 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
73778 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
73779 REAL(dp), &
73780 DIMENSION(7*nl_a, 5*nl_b, 7*nl_c, 5*nl_d) :: primitives
73781 REAL(dp), DIMENSION(10*6*10*6) :: buffer1, buffer2
73782
73783 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
73784 kmax, s_offset_a1, s_offset_b1, &
73785 s_offset_c1, s_offset_d1
73786
73787 s_offset_a1 = 0
73788 DO ia = 1, nl_a
73789 s_offset_b1 = 0
73790 DO ib = 1, nl_b
73791 s_offset_c1 = 0
73792 DO ic = 1, nl_c
73793 s_offset_d1 = 0
73794 DO id = 1, nl_d
73795 buffer1 = 0.0_dp
73796 imax = 6*10*6
73797 kmax = 10
73798 DO i = 1, imax
73799 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
73800 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
73801 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
73802 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
73803 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
73804 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
73805 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
73806 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
73807 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
73808 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
73809 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
73810 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
73811 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
73812 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
73813 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
73814 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
73815 END DO
73816 buffer2 = 0.0_dp
73817 imax = 7*10*6
73818 kmax = 6
73819 DO i = 1, imax
73820 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
73821 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
73822 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
73823 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
73824 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
73825 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
73826 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
73827 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
73828 END DO
73829 buffer1 = 0.0_dp
73830 imax = 7*5*6
73831 kmax = 10
73832 DO i = 1, imax
73833 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
73834 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
73835 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
73836 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
73837 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
73838 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
73839 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
73840 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
73841 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
73842 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
73843 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
73844 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
73845 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
73846 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
73847 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
73848 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
73849 END DO
73850 imax = 7*5*7
73851 kmax = 6
73852 i = 0
73853 DO i1 = 1, 7
73854 DO i2 = 1, 5
73855 DO i3 = 1, 7
73856 i = i + 1
73857 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
73858 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
73859 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
73860 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
73861 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
73862 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
73863 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
73864 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
73865 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
73866 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
73867 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
73868 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
73869 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
73870 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
73871 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
73872 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
73873 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
73874 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
73875 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
73876 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
73877 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
73878 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
73879 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
73880 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
73881 END DO
73882 END DO
73883 END DO
73884 s_offset_d1 = s_offset_d1 + 5
73885 END DO
73886 s_offset_c1 = s_offset_c1 + 7
73887 END DO
73888 s_offset_b1 = s_offset_b1 + 5
73889 END DO
73890 s_offset_a1 = s_offset_a1 + 7
73891 END DO
73892 END SUBROUTINE contract_fdfd
73893#endif
73894#if __MAX_CONTR > 3 || __MAX_CONTR == 3
73895! **************************************************************************************************
73896!> \brief ...
73897!> \param work ...
73898!> \param nl_a ...
73899!> \param nl_b ...
73900!> \param nl_c ...
73901!> \param nl_d ...
73902!> \param sphi_a ...
73903!> \param sphi_b ...
73904!> \param sphi_c ...
73905!> \param sphi_d ...
73906!> \param primitives ...
73907!> \param buffer1 ...
73908!> \param buffer2 ...
73909! **************************************************************************************************
73910 SUBROUTINE contract_fdff(work, &
73911 nl_a, nl_b, nl_c, nl_d, &
73912 sphi_a, sphi_b, sphi_c, sphi_d, &
73913 primitives, &
73914 buffer1, buffer2)
73915 REAL(dp), DIMENSION(10*6*10*10), INTENT(IN) :: work
73916 INTEGER :: nl_a, nl_b, nl_c, nl_d
73917 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
73918 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
73919 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
73920 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
73921 REAL(dp), &
73922 DIMENSION(7*nl_a, 5*nl_b, 7*nl_c, 7*nl_d) :: primitives
73923 REAL(dp), DIMENSION(10*6*10*10) :: buffer1, buffer2
73924
73925 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
73926 kmax, s_offset_a1, s_offset_b1, &
73927 s_offset_c1, s_offset_d1
73928
73929 s_offset_a1 = 0
73930 DO ia = 1, nl_a
73931 s_offset_b1 = 0
73932 DO ib = 1, nl_b
73933 s_offset_c1 = 0
73934 DO ic = 1, nl_c
73935 s_offset_d1 = 0
73936 DO id = 1, nl_d
73937 buffer1 = 0.0_dp
73938 imax = 6*10*10
73939 kmax = 10
73940 DO i = 1, imax
73941 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
73942 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
73943 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
73944 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
73945 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
73946 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
73947 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
73948 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
73949 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
73950 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
73951 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
73952 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
73953 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
73954 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
73955 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
73956 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
73957 END DO
73958 buffer2 = 0.0_dp
73959 imax = 7*10*10
73960 kmax = 6
73961 DO i = 1, imax
73962 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
73963 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
73964 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
73965 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
73966 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
73967 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
73968 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
73969 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
73970 END DO
73971 buffer1 = 0.0_dp
73972 imax = 7*5*10
73973 kmax = 10
73974 DO i = 1, imax
73975 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
73976 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
73977 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
73978 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
73979 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
73980 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
73981 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
73982 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
73983 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
73984 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
73985 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
73986 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
73987 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
73988 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
73989 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
73990 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
73991 END DO
73992 imax = 7*5*7
73993 kmax = 10
73994 i = 0
73995 DO i1 = 1, 7
73996 DO i2 = 1, 5
73997 DO i3 = 1, 7
73998 i = i + 1
73999 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
74000 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
74001 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
74002 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
74003 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
74004 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
74005 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
74006 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
74007 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
74008 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
74009 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
74010 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
74011 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
74012 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
74013 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
74014 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
74015 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
74016 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
74017 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
74018 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
74019 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
74020 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
74021 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
74022 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
74023 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
74024 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
74025 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
74026 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
74027 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
74028 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
74029 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
74030 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
74031 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
74032 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
74033 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
74034 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
74035 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
74036 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
74037 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
74038 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
74039 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
74040 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
74041 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
74042 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
74043 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
74044 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
74045 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
74046 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
74047 END DO
74048 END DO
74049 END DO
74050 s_offset_d1 = s_offset_d1 + 7
74051 END DO
74052 s_offset_c1 = s_offset_c1 + 7
74053 END DO
74054 s_offset_b1 = s_offset_b1 + 5
74055 END DO
74056 s_offset_a1 = s_offset_a1 + 7
74057 END DO
74058 END SUBROUTINE contract_fdff
74059#endif
74060#if __MAX_CONTR > 4 || __MAX_CONTR == 4
74061! **************************************************************************************************
74062!> \brief ...
74063!> \param work ...
74064!> \param nl_a ...
74065!> \param nl_b ...
74066!> \param nl_c ...
74067!> \param nl_d ...
74068!> \param sphi_a ...
74069!> \param sphi_b ...
74070!> \param sphi_c ...
74071!> \param sphi_d ...
74072!> \param primitives ...
74073!> \param buffer1 ...
74074!> \param buffer2 ...
74075! **************************************************************************************************
74076 SUBROUTINE contract_fdfg(work, &
74077 nl_a, nl_b, nl_c, nl_d, &
74078 sphi_a, sphi_b, sphi_c, sphi_d, &
74079 primitives, &
74080 buffer1, buffer2)
74081 REAL(dp), DIMENSION(10*6*10*15), INTENT(IN) :: work
74082 INTEGER :: nl_a, nl_b, nl_c, nl_d
74083 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
74084 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
74085 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
74086 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
74087 REAL(dp), &
74088 DIMENSION(7*nl_a, 5*nl_b, 7*nl_c, 9*nl_d) :: primitives
74089 REAL(dp), DIMENSION(10*6*10*15) :: buffer1, buffer2
74090
74091 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
74092 kmax, s_offset_a1, s_offset_b1, &
74093 s_offset_c1, s_offset_d1
74094
74095 s_offset_a1 = 0
74096 DO ia = 1, nl_a
74097 s_offset_b1 = 0
74098 DO ib = 1, nl_b
74099 s_offset_c1 = 0
74100 DO ic = 1, nl_c
74101 s_offset_d1 = 0
74102 DO id = 1, nl_d
74103 buffer1 = 0.0_dp
74104 imax = 6*10*15
74105 kmax = 10
74106 DO i = 1, imax
74107 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
74108 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
74109 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
74110 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
74111 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
74112 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
74113 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
74114 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
74115 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
74116 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
74117 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
74118 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
74119 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
74120 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
74121 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
74122 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
74123 END DO
74124 buffer2 = 0.0_dp
74125 imax = 7*10*15
74126 kmax = 6
74127 DO i = 1, imax
74128 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
74129 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
74130 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
74131 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
74132 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
74133 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
74134 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
74135 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
74136 END DO
74137 buffer1 = 0.0_dp
74138 imax = 7*5*15
74139 kmax = 10
74140 DO i = 1, imax
74141 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
74142 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
74143 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
74144 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
74145 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
74146 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
74147 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
74148 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
74149 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
74150 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
74151 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
74152 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
74153 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
74154 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
74155 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
74156 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
74157 END DO
74158 imax = 7*5*7
74159 kmax = 15
74160 i = 0
74161 DO i1 = 1, 7
74162 DO i2 = 1, 5
74163 DO i3 = 1, 7
74164 i = i + 1
74165 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
74166 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
74167 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
74168 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
74169 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
74170 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
74171 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
74172 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
74173 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
74174 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
74175 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
74176 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
74177 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
74178 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
74179 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
74180 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
74181 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
74182 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
74183 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
74184 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
74185 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
74186 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
74187 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
74188 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
74189 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
74190 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
74191 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
74192 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
74193 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
74194 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
74195 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
74196 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
74197 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
74198 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
74199 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
74200 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
74201 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
74202 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
74203 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
74204 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
74205 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
74206 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
74207 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
74208 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
74209 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
74210 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
74211 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
74212 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
74213 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
74214 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
74215 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
74216 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
74217 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
74218 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
74219 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
74220 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
74221 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
74222 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
74223 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
74224 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
74225 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
74226 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
74227 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
74228 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
74229 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
74230 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
74231 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
74232 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
74233 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
74234 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
74235 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
74236 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
74237 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
74238 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
74239 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
74240 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
74241 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
74242 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
74243 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
74244 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
74245 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
74246 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
74247 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
74248 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
74249 END DO
74250 END DO
74251 END DO
74252 s_offset_d1 = s_offset_d1 + 9
74253 END DO
74254 s_offset_c1 = s_offset_c1 + 7
74255 END DO
74256 s_offset_b1 = s_offset_b1 + 5
74257 END DO
74258 s_offset_a1 = s_offset_a1 + 7
74259 END DO
74260 END SUBROUTINE contract_fdfg
74261#endif
74262#if __MAX_CONTR > 4 || __MAX_CONTR == 4
74263! **************************************************************************************************
74264!> \brief ...
74265!> \param work ...
74266!> \param nl_a ...
74267!> \param nl_b ...
74268!> \param nl_c ...
74269!> \param nl_d ...
74270!> \param sphi_a ...
74271!> \param sphi_b ...
74272!> \param sphi_c ...
74273!> \param sphi_d ...
74274!> \param primitives ...
74275!> \param buffer1 ...
74276!> \param buffer2 ...
74277! **************************************************************************************************
74278 SUBROUTINE contract_fdgs(work, &
74279 nl_a, nl_b, nl_c, nl_d, &
74280 sphi_a, sphi_b, sphi_c, sphi_d, &
74281 primitives, &
74282 buffer1, buffer2)
74283 REAL(dp), DIMENSION(10*6*15*1), INTENT(IN) :: work
74284 INTEGER :: nl_a, nl_b, nl_c, nl_d
74285 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
74286 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
74287 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
74288 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
74289 REAL(dp), &
74290 DIMENSION(7*nl_a, 5*nl_b, 9*nl_c, 1*nl_d) :: primitives
74291 REAL(dp), DIMENSION(10*6*15*1) :: buffer1, buffer2
74292
74293 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
74294 kmax, s_offset_a1, s_offset_b1, &
74295 s_offset_c1, s_offset_d1
74296
74297 s_offset_a1 = 0
74298 DO ia = 1, nl_a
74299 s_offset_b1 = 0
74300 DO ib = 1, nl_b
74301 s_offset_c1 = 0
74302 DO ic = 1, nl_c
74303 s_offset_d1 = 0
74304 DO id = 1, nl_d
74305 buffer1 = 0.0_dp
74306 imax = 6*15*1
74307 kmax = 10
74308 DO i = 1, imax
74309 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
74310 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
74311 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
74312 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
74313 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
74314 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
74315 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
74316 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
74317 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
74318 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
74319 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
74320 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
74321 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
74322 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
74323 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
74324 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
74325 END DO
74326 buffer2 = 0.0_dp
74327 imax = 7*15*1
74328 kmax = 6
74329 DO i = 1, imax
74330 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
74331 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
74332 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
74333 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
74334 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
74335 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
74336 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
74337 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
74338 END DO
74339 buffer1 = 0.0_dp
74340 imax = 7*5*1
74341 kmax = 15
74342 DO i = 1, imax
74343 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
74344 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
74345 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
74346 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
74347 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
74348 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
74349 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
74350 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
74351 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
74352 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
74353 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
74354 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
74355 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
74356 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
74357 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
74358 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
74359 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
74360 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
74361 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
74362 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
74363 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
74364 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
74365 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
74366 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
74367 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
74368 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
74369 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
74370 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
74371 END DO
74372 imax = 7*5*9
74373 kmax = 1
74374 i = 0
74375 DO i1 = 1, 9
74376 DO i2 = 1, 5
74377 DO i3 = 1, 7
74378 i = i + 1
74379 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
74380 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
74381 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
74382 END DO
74383 END DO
74384 END DO
74385 s_offset_d1 = s_offset_d1 + 1
74386 END DO
74387 s_offset_c1 = s_offset_c1 + 9
74388 END DO
74389 s_offset_b1 = s_offset_b1 + 5
74390 END DO
74391 s_offset_a1 = s_offset_a1 + 7
74392 END DO
74393 END SUBROUTINE contract_fdgs
74394#endif
74395#if __MAX_CONTR > 4 || __MAX_CONTR == 4
74396! **************************************************************************************************
74397!> \brief ...
74398!> \param work ...
74399!> \param nl_a ...
74400!> \param nl_b ...
74401!> \param nl_c ...
74402!> \param nl_d ...
74403!> \param sphi_a ...
74404!> \param sphi_b ...
74405!> \param sphi_c ...
74406!> \param sphi_d ...
74407!> \param primitives ...
74408!> \param buffer1 ...
74409!> \param buffer2 ...
74410! **************************************************************************************************
74411 SUBROUTINE contract_fdgp(work, &
74412 nl_a, nl_b, nl_c, nl_d, &
74413 sphi_a, sphi_b, sphi_c, sphi_d, &
74414 primitives, &
74415 buffer1, buffer2)
74416 REAL(dp), DIMENSION(10*6*15*3), INTENT(IN) :: work
74417 INTEGER :: nl_a, nl_b, nl_c, nl_d
74418 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
74419 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
74420 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
74421 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
74422 REAL(dp), &
74423 DIMENSION(7*nl_a, 5*nl_b, 9*nl_c, 3*nl_d) :: primitives
74424 REAL(dp), DIMENSION(10*6*15*3) :: buffer1, buffer2
74425
74426 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
74427 kmax, s_offset_a1, s_offset_b1, &
74428 s_offset_c1, s_offset_d1
74429
74430 s_offset_a1 = 0
74431 DO ia = 1, nl_a
74432 s_offset_b1 = 0
74433 DO ib = 1, nl_b
74434 s_offset_c1 = 0
74435 DO ic = 1, nl_c
74436 s_offset_d1 = 0
74437 DO id = 1, nl_d
74438 buffer1 = 0.0_dp
74439 imax = 6*15*3
74440 kmax = 10
74441 DO i = 1, imax
74442 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
74443 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
74444 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
74445 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
74446 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
74447 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
74448 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
74449 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
74450 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
74451 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
74452 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
74453 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
74454 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
74455 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
74456 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
74457 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
74458 END DO
74459 buffer2 = 0.0_dp
74460 imax = 7*15*3
74461 kmax = 6
74462 DO i = 1, imax
74463 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
74464 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
74465 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
74466 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
74467 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
74468 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
74469 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
74470 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
74471 END DO
74472 buffer1 = 0.0_dp
74473 imax = 7*5*3
74474 kmax = 15
74475 DO i = 1, imax
74476 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
74477 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
74478 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
74479 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
74480 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
74481 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
74482 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
74483 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
74484 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
74485 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
74486 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
74487 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
74488 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
74489 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
74490 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
74491 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
74492 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
74493 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
74494 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
74495 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
74496 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
74497 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
74498 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
74499 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
74500 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
74501 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
74502 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
74503 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
74504 END DO
74505 imax = 7*5*9
74506 kmax = 3
74507 i = 0
74508 DO i1 = 1, 9
74509 DO i2 = 1, 5
74510 DO i3 = 1, 7
74511 i = i + 1
74512 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
74513 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
74514 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
74515 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
74516 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
74517 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
74518 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
74519 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
74520 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
74521 END DO
74522 END DO
74523 END DO
74524 s_offset_d1 = s_offset_d1 + 3
74525 END DO
74526 s_offset_c1 = s_offset_c1 + 9
74527 END DO
74528 s_offset_b1 = s_offset_b1 + 5
74529 END DO
74530 s_offset_a1 = s_offset_a1 + 7
74531 END DO
74532 END SUBROUTINE contract_fdgp
74533#endif
74534#if __MAX_CONTR > 4 || __MAX_CONTR == 4
74535! **************************************************************************************************
74536!> \brief ...
74537!> \param work ...
74538!> \param nl_a ...
74539!> \param nl_b ...
74540!> \param nl_c ...
74541!> \param nl_d ...
74542!> \param sphi_a ...
74543!> \param sphi_b ...
74544!> \param sphi_c ...
74545!> \param sphi_d ...
74546!> \param primitives ...
74547!> \param buffer1 ...
74548!> \param buffer2 ...
74549! **************************************************************************************************
74550 SUBROUTINE contract_fdgd(work, &
74551 nl_a, nl_b, nl_c, nl_d, &
74552 sphi_a, sphi_b, sphi_c, sphi_d, &
74553 primitives, &
74554 buffer1, buffer2)
74555 REAL(dp), DIMENSION(10*6*15*6), INTENT(IN) :: work
74556 INTEGER :: nl_a, nl_b, nl_c, nl_d
74557 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
74558 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
74559 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
74560 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
74561 REAL(dp), &
74562 DIMENSION(7*nl_a, 5*nl_b, 9*nl_c, 5*nl_d) :: primitives
74563 REAL(dp), DIMENSION(10*6*15*6) :: buffer1, buffer2
74564
74565 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
74566 kmax, s_offset_a1, s_offset_b1, &
74567 s_offset_c1, s_offset_d1
74568
74569 s_offset_a1 = 0
74570 DO ia = 1, nl_a
74571 s_offset_b1 = 0
74572 DO ib = 1, nl_b
74573 s_offset_c1 = 0
74574 DO ic = 1, nl_c
74575 s_offset_d1 = 0
74576 DO id = 1, nl_d
74577 buffer1 = 0.0_dp
74578 imax = 6*15*6
74579 kmax = 10
74580 DO i = 1, imax
74581 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
74582 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
74583 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
74584 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
74585 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
74586 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
74587 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
74588 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
74589 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
74590 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
74591 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
74592 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
74593 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
74594 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
74595 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
74596 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
74597 END DO
74598 buffer2 = 0.0_dp
74599 imax = 7*15*6
74600 kmax = 6
74601 DO i = 1, imax
74602 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
74603 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
74604 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
74605 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
74606 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
74607 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
74608 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
74609 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
74610 END DO
74611 buffer1 = 0.0_dp
74612 imax = 7*5*6
74613 kmax = 15
74614 DO i = 1, imax
74615 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
74616 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
74617 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
74618 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
74619 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
74620 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
74621 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
74622 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
74623 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
74624 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
74625 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
74626 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
74627 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
74628 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
74629 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
74630 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
74631 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
74632 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
74633 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
74634 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
74635 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
74636 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
74637 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
74638 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
74639 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
74640 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
74641 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
74642 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
74643 END DO
74644 imax = 7*5*9
74645 kmax = 6
74646 i = 0
74647 DO i1 = 1, 9
74648 DO i2 = 1, 5
74649 DO i3 = 1, 7
74650 i = i + 1
74651 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
74652 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
74653 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
74654 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
74655 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
74656 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
74657 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
74658 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
74659 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
74660 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
74661 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
74662 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
74663 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
74664 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
74665 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
74666 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
74667 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
74668 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
74669 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
74670 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
74671 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
74672 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
74673 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
74674 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
74675 END DO
74676 END DO
74677 END DO
74678 s_offset_d1 = s_offset_d1 + 5
74679 END DO
74680 s_offset_c1 = s_offset_c1 + 9
74681 END DO
74682 s_offset_b1 = s_offset_b1 + 5
74683 END DO
74684 s_offset_a1 = s_offset_a1 + 7
74685 END DO
74686 END SUBROUTINE contract_fdgd
74687#endif
74688#if __MAX_CONTR > 4 || __MAX_CONTR == 4
74689! **************************************************************************************************
74690!> \brief ...
74691!> \param work ...
74692!> \param nl_a ...
74693!> \param nl_b ...
74694!> \param nl_c ...
74695!> \param nl_d ...
74696!> \param sphi_a ...
74697!> \param sphi_b ...
74698!> \param sphi_c ...
74699!> \param sphi_d ...
74700!> \param primitives ...
74701!> \param buffer1 ...
74702!> \param buffer2 ...
74703! **************************************************************************************************
74704 SUBROUTINE contract_fdgf(work, &
74705 nl_a, nl_b, nl_c, nl_d, &
74706 sphi_a, sphi_b, sphi_c, sphi_d, &
74707 primitives, &
74708 buffer1, buffer2)
74709 REAL(dp), DIMENSION(10*6*15*10), INTENT(IN) :: work
74710 INTEGER :: nl_a, nl_b, nl_c, nl_d
74711 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
74712 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
74713 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
74714 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
74715 REAL(dp), &
74716 DIMENSION(7*nl_a, 5*nl_b, 9*nl_c, 7*nl_d) :: primitives
74717 REAL(dp), DIMENSION(10*6*15*10) :: buffer1, buffer2
74718
74719 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
74720 kmax, s_offset_a1, s_offset_b1, &
74721 s_offset_c1, s_offset_d1
74722
74723 s_offset_a1 = 0
74724 DO ia = 1, nl_a
74725 s_offset_b1 = 0
74726 DO ib = 1, nl_b
74727 s_offset_c1 = 0
74728 DO ic = 1, nl_c
74729 s_offset_d1 = 0
74730 DO id = 1, nl_d
74731 buffer1 = 0.0_dp
74732 imax = 6*15*10
74733 kmax = 10
74734 DO i = 1, imax
74735 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
74736 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
74737 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
74738 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
74739 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
74740 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
74741 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
74742 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
74743 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
74744 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
74745 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
74746 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
74747 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
74748 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
74749 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
74750 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
74751 END DO
74752 buffer2 = 0.0_dp
74753 imax = 7*15*10
74754 kmax = 6
74755 DO i = 1, imax
74756 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
74757 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
74758 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
74759 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
74760 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
74761 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
74762 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
74763 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
74764 END DO
74765 buffer1 = 0.0_dp
74766 imax = 7*5*10
74767 kmax = 15
74768 DO i = 1, imax
74769 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
74770 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
74771 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
74772 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
74773 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
74774 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
74775 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
74776 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
74777 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
74778 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
74779 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
74780 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
74781 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
74782 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
74783 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
74784 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
74785 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
74786 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
74787 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
74788 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
74789 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
74790 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
74791 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
74792 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
74793 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
74794 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
74795 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
74796 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
74797 END DO
74798 imax = 7*5*9
74799 kmax = 10
74800 i = 0
74801 DO i1 = 1, 9
74802 DO i2 = 1, 5
74803 DO i3 = 1, 7
74804 i = i + 1
74805 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
74806 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
74807 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
74808 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
74809 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
74810 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
74811 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
74812 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
74813 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
74814 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
74815 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
74816 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
74817 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
74818 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
74819 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
74820 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
74821 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
74822 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
74823 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
74824 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
74825 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
74826 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
74827 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
74828 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
74829 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
74830 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
74831 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
74832 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
74833 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
74834 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
74835 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
74836 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
74837 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
74838 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
74839 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
74840 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
74841 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
74842 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
74843 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
74844 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
74845 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
74846 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
74847 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
74848 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
74849 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
74850 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
74851 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
74852 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
74853 END DO
74854 END DO
74855 END DO
74856 s_offset_d1 = s_offset_d1 + 7
74857 END DO
74858 s_offset_c1 = s_offset_c1 + 9
74859 END DO
74860 s_offset_b1 = s_offset_b1 + 5
74861 END DO
74862 s_offset_a1 = s_offset_a1 + 7
74863 END DO
74864 END SUBROUTINE contract_fdgf
74865#endif
74866#if __MAX_CONTR > 4 || __MAX_CONTR == 4
74867! **************************************************************************************************
74868!> \brief ...
74869!> \param work ...
74870!> \param nl_a ...
74871!> \param nl_b ...
74872!> \param nl_c ...
74873!> \param nl_d ...
74874!> \param sphi_a ...
74875!> \param sphi_b ...
74876!> \param sphi_c ...
74877!> \param sphi_d ...
74878!> \param primitives ...
74879!> \param buffer1 ...
74880!> \param buffer2 ...
74881! **************************************************************************************************
74882 SUBROUTINE contract_fdgg(work, &
74883 nl_a, nl_b, nl_c, nl_d, &
74884 sphi_a, sphi_b, sphi_c, sphi_d, &
74885 primitives, &
74886 buffer1, buffer2)
74887 REAL(dp), DIMENSION(10*6*15*15), INTENT(IN) :: work
74888 INTEGER :: nl_a, nl_b, nl_c, nl_d
74889 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
74890 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
74891 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
74892 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
74893 REAL(dp), &
74894 DIMENSION(7*nl_a, 5*nl_b, 9*nl_c, 9*nl_d) :: primitives
74895 REAL(dp), DIMENSION(10*6*15*15) :: buffer1, buffer2
74896
74897 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
74898 kmax, s_offset_a1, s_offset_b1, &
74899 s_offset_c1, s_offset_d1
74900
74901 s_offset_a1 = 0
74902 DO ia = 1, nl_a
74903 s_offset_b1 = 0
74904 DO ib = 1, nl_b
74905 s_offset_c1 = 0
74906 DO ic = 1, nl_c
74907 s_offset_d1 = 0
74908 DO id = 1, nl_d
74909 buffer1 = 0.0_dp
74910 imax = 6*15*15
74911 kmax = 10
74912 DO i = 1, imax
74913 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
74914 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
74915 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
74916 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
74917 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
74918 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
74919 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
74920 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
74921 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
74922 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
74923 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
74924 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
74925 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
74926 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
74927 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
74928 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
74929 END DO
74930 buffer2 = 0.0_dp
74931 imax = 7*15*15
74932 kmax = 6
74933 DO i = 1, imax
74934 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
74935 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
74936 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
74937 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
74938 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
74939 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
74940 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
74941 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
74942 END DO
74943 buffer1 = 0.0_dp
74944 imax = 7*5*15
74945 kmax = 15
74946 DO i = 1, imax
74947 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
74948 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
74949 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
74950 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
74951 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
74952 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
74953 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
74954 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
74955 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
74956 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
74957 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
74958 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
74959 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
74960 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
74961 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
74962 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
74963 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
74964 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
74965 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
74966 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
74967 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
74968 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
74969 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
74970 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
74971 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
74972 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
74973 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
74974 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
74975 END DO
74976 imax = 7*5*9
74977 kmax = 15
74978 i = 0
74979 DO i1 = 1, 9
74980 DO i2 = 1, 5
74981 DO i3 = 1, 7
74982 i = i + 1
74983 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
74984 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
74985 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
74986 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
74987 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
74988 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
74989 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
74990 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
74991 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
74992 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
74993 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
74994 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
74995 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
74996 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
74997 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
74998 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
74999 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
75000 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
75001 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
75002 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
75003 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
75004 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
75005 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
75006 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
75007 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
75008 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
75009 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
75010 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
75011 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
75012 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
75013 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
75014 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
75015 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
75016 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
75017 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
75018 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
75019 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
75020 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
75021 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
75022 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
75023 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
75024 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
75025 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
75026 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
75027 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
75028 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
75029 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
75030 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
75031 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
75032 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
75033 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
75034 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
75035 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
75036 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
75037 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
75038 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
75039 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
75040 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
75041 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
75042 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
75043 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
75044 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
75045 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
75046 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
75047 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
75048 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
75049 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
75050 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
75051 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
75052 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
75053 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
75054 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
75055 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
75056 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
75057 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
75058 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
75059 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
75060 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
75061 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
75062 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
75063 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
75064 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
75065 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
75066 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
75067 END DO
75068 END DO
75069 END DO
75070 s_offset_d1 = s_offset_d1 + 9
75071 END DO
75072 s_offset_c1 = s_offset_c1 + 9
75073 END DO
75074 s_offset_b1 = s_offset_b1 + 5
75075 END DO
75076 s_offset_a1 = s_offset_a1 + 7
75077 END DO
75078 END SUBROUTINE contract_fdgg
75079#endif
75080#if __MAX_CONTR > 3 || __MAX_CONTR == 3
75081! **************************************************************************************************
75082!> \brief ...
75083!> \param work ...
75084!> \param nl_a ...
75085!> \param nl_b ...
75086!> \param nl_c ...
75087!> \param nl_d ...
75088!> \param sphi_a ...
75089!> \param sphi_b ...
75090!> \param sphi_c ...
75091!> \param sphi_d ...
75092!> \param primitives ...
75093!> \param buffer1 ...
75094!> \param buffer2 ...
75095! **************************************************************************************************
75096 SUBROUTINE contract_ffss(work, &
75097 nl_a, nl_b, nl_c, nl_d, &
75098 sphi_a, sphi_b, sphi_c, sphi_d, &
75099 primitives, &
75100 buffer1, buffer2)
75101 REAL(dp), DIMENSION(10*10*1*1), INTENT(IN) :: work
75102 INTEGER :: nl_a, nl_b, nl_c, nl_d
75103 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
75104 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
75105 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
75106 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
75107 REAL(dp), &
75108 DIMENSION(7*nl_a, 7*nl_b, 1*nl_c, 1*nl_d) :: primitives
75109 REAL(dp), DIMENSION(10*10*1*1) :: buffer1, buffer2
75110
75111 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
75112 kmax, s_offset_a1, s_offset_b1, &
75113 s_offset_c1, s_offset_d1
75114
75115 s_offset_a1 = 0
75116 DO ia = 1, nl_a
75117 s_offset_b1 = 0
75118 DO ib = 1, nl_b
75119 s_offset_c1 = 0
75120 DO ic = 1, nl_c
75121 s_offset_d1 = 0
75122 DO id = 1, nl_d
75123 buffer1 = 0.0_dp
75124 imax = 10*1*1
75125 kmax = 10
75126 DO i = 1, imax
75127 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
75128 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
75129 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
75130 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
75131 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
75132 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
75133 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
75134 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
75135 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
75136 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
75137 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
75138 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
75139 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
75140 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
75141 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
75142 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
75143 END DO
75144 buffer2 = 0.0_dp
75145 imax = 7*1*1
75146 kmax = 10
75147 DO i = 1, imax
75148 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
75149 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
75150 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
75151 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
75152 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
75153 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
75154 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
75155 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
75156 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
75157 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
75158 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
75159 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
75160 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
75161 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
75162 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
75163 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
75164 END DO
75165 buffer1 = 0.0_dp
75166 imax = 7*7*1
75167 kmax = 1
75168 DO i = 1, imax
75169 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
75170 END DO
75171 imax = 7*7*1
75172 kmax = 1
75173 i = 0
75174 DO i1 = 1, 1
75175 DO i2 = 1, 7
75176 DO i3 = 1, 7
75177 i = i + 1
75178 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
75179 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
75180 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
75181 END DO
75182 END DO
75183 END DO
75184 s_offset_d1 = s_offset_d1 + 1
75185 END DO
75186 s_offset_c1 = s_offset_c1 + 1
75187 END DO
75188 s_offset_b1 = s_offset_b1 + 7
75189 END DO
75190 s_offset_a1 = s_offset_a1 + 7
75191 END DO
75192 END SUBROUTINE contract_ffss
75193#endif
75194#if __MAX_CONTR > 3 || __MAX_CONTR == 3
75195! **************************************************************************************************
75196!> \brief ...
75197!> \param work ...
75198!> \param nl_a ...
75199!> \param nl_b ...
75200!> \param nl_c ...
75201!> \param nl_d ...
75202!> \param sphi_a ...
75203!> \param sphi_b ...
75204!> \param sphi_c ...
75205!> \param sphi_d ...
75206!> \param primitives ...
75207!> \param buffer1 ...
75208!> \param buffer2 ...
75209! **************************************************************************************************
75210 SUBROUTINE contract_ffsp(work, &
75211 nl_a, nl_b, nl_c, nl_d, &
75212 sphi_a, sphi_b, sphi_c, sphi_d, &
75213 primitives, &
75214 buffer1, buffer2)
75215 REAL(dp), DIMENSION(10*10*1*3), INTENT(IN) :: work
75216 INTEGER :: nl_a, nl_b, nl_c, nl_d
75217 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
75218 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
75219 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
75220 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
75221 REAL(dp), &
75222 DIMENSION(7*nl_a, 7*nl_b, 1*nl_c, 3*nl_d) :: primitives
75223 REAL(dp), DIMENSION(10*10*1*3) :: buffer1, buffer2
75224
75225 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
75226 kmax, s_offset_a1, s_offset_b1, &
75227 s_offset_c1, s_offset_d1
75228
75229 s_offset_a1 = 0
75230 DO ia = 1, nl_a
75231 s_offset_b1 = 0
75232 DO ib = 1, nl_b
75233 s_offset_c1 = 0
75234 DO ic = 1, nl_c
75235 s_offset_d1 = 0
75236 DO id = 1, nl_d
75237 buffer1 = 0.0_dp
75238 imax = 10*1*3
75239 kmax = 10
75240 DO i = 1, imax
75241 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
75242 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
75243 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
75244 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
75245 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
75246 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
75247 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
75248 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
75249 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
75250 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
75251 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
75252 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
75253 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
75254 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
75255 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
75256 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
75257 END DO
75258 buffer2 = 0.0_dp
75259 imax = 7*1*3
75260 kmax = 10
75261 DO i = 1, imax
75262 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
75263 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
75264 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
75265 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
75266 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
75267 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
75268 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
75269 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
75270 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
75271 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
75272 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
75273 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
75274 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
75275 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
75276 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
75277 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
75278 END DO
75279 buffer1 = 0.0_dp
75280 imax = 7*7*3
75281 kmax = 1
75282 DO i = 1, imax
75283 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
75284 END DO
75285 imax = 7*7*1
75286 kmax = 3
75287 i = 0
75288 DO i1 = 1, 1
75289 DO i2 = 1, 7
75290 DO i3 = 1, 7
75291 i = i + 1
75292 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
75293 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
75294 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
75295 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
75296 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
75297 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
75298 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
75299 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
75300 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
75301 END DO
75302 END DO
75303 END DO
75304 s_offset_d1 = s_offset_d1 + 3
75305 END DO
75306 s_offset_c1 = s_offset_c1 + 1
75307 END DO
75308 s_offset_b1 = s_offset_b1 + 7
75309 END DO
75310 s_offset_a1 = s_offset_a1 + 7
75311 END DO
75312 END SUBROUTINE contract_ffsp
75313#endif
75314#if __MAX_CONTR > 3 || __MAX_CONTR == 3
75315! **************************************************************************************************
75316!> \brief ...
75317!> \param work ...
75318!> \param nl_a ...
75319!> \param nl_b ...
75320!> \param nl_c ...
75321!> \param nl_d ...
75322!> \param sphi_a ...
75323!> \param sphi_b ...
75324!> \param sphi_c ...
75325!> \param sphi_d ...
75326!> \param primitives ...
75327!> \param buffer1 ...
75328!> \param buffer2 ...
75329! **************************************************************************************************
75330 SUBROUTINE contract_ffsd(work, &
75331 nl_a, nl_b, nl_c, nl_d, &
75332 sphi_a, sphi_b, sphi_c, sphi_d, &
75333 primitives, &
75334 buffer1, buffer2)
75335 REAL(dp), DIMENSION(10*10*1*6), INTENT(IN) :: work
75336 INTEGER :: nl_a, nl_b, nl_c, nl_d
75337 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
75338 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
75339 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
75340 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
75341 REAL(dp), &
75342 DIMENSION(7*nl_a, 7*nl_b, 1*nl_c, 5*nl_d) :: primitives
75343 REAL(dp), DIMENSION(10*10*1*6) :: buffer1, buffer2
75344
75345 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
75346 kmax, s_offset_a1, s_offset_b1, &
75347 s_offset_c1, s_offset_d1
75348
75349 s_offset_a1 = 0
75350 DO ia = 1, nl_a
75351 s_offset_b1 = 0
75352 DO ib = 1, nl_b
75353 s_offset_c1 = 0
75354 DO ic = 1, nl_c
75355 s_offset_d1 = 0
75356 DO id = 1, nl_d
75357 buffer1 = 0.0_dp
75358 imax = 10*1*6
75359 kmax = 10
75360 DO i = 1, imax
75361 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
75362 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
75363 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
75364 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
75365 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
75366 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
75367 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
75368 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
75369 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
75370 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
75371 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
75372 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
75373 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
75374 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
75375 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
75376 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
75377 END DO
75378 buffer2 = 0.0_dp
75379 imax = 7*1*6
75380 kmax = 10
75381 DO i = 1, imax
75382 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
75383 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
75384 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
75385 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
75386 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
75387 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
75388 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
75389 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
75390 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
75391 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
75392 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
75393 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
75394 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
75395 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
75396 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
75397 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
75398 END DO
75399 buffer1 = 0.0_dp
75400 imax = 7*7*6
75401 kmax = 1
75402 DO i = 1, imax
75403 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
75404 END DO
75405 imax = 7*7*1
75406 kmax = 6
75407 i = 0
75408 DO i1 = 1, 1
75409 DO i2 = 1, 7
75410 DO i3 = 1, 7
75411 i = i + 1
75412 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
75413 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
75414 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
75415 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
75416 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
75417 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
75418 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
75419 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
75420 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
75421 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
75422 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
75423 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
75424 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
75425 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
75426 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
75427 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
75428 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
75429 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
75430 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
75431 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
75432 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
75433 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
75434 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
75435 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
75436 END DO
75437 END DO
75438 END DO
75439 s_offset_d1 = s_offset_d1 + 5
75440 END DO
75441 s_offset_c1 = s_offset_c1 + 1
75442 END DO
75443 s_offset_b1 = s_offset_b1 + 7
75444 END DO
75445 s_offset_a1 = s_offset_a1 + 7
75446 END DO
75447 END SUBROUTINE contract_ffsd
75448#endif
75449#if __MAX_CONTR > 3 || __MAX_CONTR == 3
75450! **************************************************************************************************
75451!> \brief ...
75452!> \param work ...
75453!> \param nl_a ...
75454!> \param nl_b ...
75455!> \param nl_c ...
75456!> \param nl_d ...
75457!> \param sphi_a ...
75458!> \param sphi_b ...
75459!> \param sphi_c ...
75460!> \param sphi_d ...
75461!> \param primitives ...
75462!> \param buffer1 ...
75463!> \param buffer2 ...
75464! **************************************************************************************************
75465 SUBROUTINE contract_ffsf(work, &
75466 nl_a, nl_b, nl_c, nl_d, &
75467 sphi_a, sphi_b, sphi_c, sphi_d, &
75468 primitives, &
75469 buffer1, buffer2)
75470 REAL(dp), DIMENSION(10*10*1*10), INTENT(IN) :: work
75471 INTEGER :: nl_a, nl_b, nl_c, nl_d
75472 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
75473 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
75474 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
75475 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
75476 REAL(dp), &
75477 DIMENSION(7*nl_a, 7*nl_b, 1*nl_c, 7*nl_d) :: primitives
75478 REAL(dp), DIMENSION(10*10*1*10) :: buffer1, buffer2
75479
75480 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
75481 kmax, s_offset_a1, s_offset_b1, &
75482 s_offset_c1, s_offset_d1
75483
75484 s_offset_a1 = 0
75485 DO ia = 1, nl_a
75486 s_offset_b1 = 0
75487 DO ib = 1, nl_b
75488 s_offset_c1 = 0
75489 DO ic = 1, nl_c
75490 s_offset_d1 = 0
75491 DO id = 1, nl_d
75492 buffer1 = 0.0_dp
75493 imax = 10*1*10
75494 kmax = 10
75495 DO i = 1, imax
75496 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
75497 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
75498 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
75499 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
75500 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
75501 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
75502 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
75503 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
75504 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
75505 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
75506 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
75507 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
75508 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
75509 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
75510 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
75511 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
75512 END DO
75513 buffer2 = 0.0_dp
75514 imax = 7*1*10
75515 kmax = 10
75516 DO i = 1, imax
75517 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
75518 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
75519 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
75520 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
75521 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
75522 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
75523 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
75524 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
75525 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
75526 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
75527 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
75528 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
75529 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
75530 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
75531 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
75532 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
75533 END DO
75534 buffer1 = 0.0_dp
75535 imax = 7*7*10
75536 kmax = 1
75537 DO i = 1, imax
75538 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
75539 END DO
75540 imax = 7*7*1
75541 kmax = 10
75542 i = 0
75543 DO i1 = 1, 1
75544 DO i2 = 1, 7
75545 DO i3 = 1, 7
75546 i = i + 1
75547 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
75548 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
75549 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
75550 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
75551 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
75552 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
75553 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
75554 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
75555 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
75556 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
75557 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
75558 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
75559 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
75560 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
75561 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
75562 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
75563 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
75564 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
75565 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
75566 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
75567 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
75568 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
75569 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
75570 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
75571 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
75572 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
75573 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
75574 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
75575 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
75576 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
75577 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
75578 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
75579 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
75580 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
75581 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
75582 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
75583 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
75584 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
75585 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
75586 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
75587 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
75588 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
75589 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
75590 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
75591 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
75592 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
75593 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
75594 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
75595 END DO
75596 END DO
75597 END DO
75598 s_offset_d1 = s_offset_d1 + 7
75599 END DO
75600 s_offset_c1 = s_offset_c1 + 1
75601 END DO
75602 s_offset_b1 = s_offset_b1 + 7
75603 END DO
75604 s_offset_a1 = s_offset_a1 + 7
75605 END DO
75606 END SUBROUTINE contract_ffsf
75607#endif
75608#if __MAX_CONTR > 4 || __MAX_CONTR == 4
75609! **************************************************************************************************
75610!> \brief ...
75611!> \param work ...
75612!> \param nl_a ...
75613!> \param nl_b ...
75614!> \param nl_c ...
75615!> \param nl_d ...
75616!> \param sphi_a ...
75617!> \param sphi_b ...
75618!> \param sphi_c ...
75619!> \param sphi_d ...
75620!> \param primitives ...
75621!> \param buffer1 ...
75622!> \param buffer2 ...
75623! **************************************************************************************************
75624 SUBROUTINE contract_ffsg(work, &
75625 nl_a, nl_b, nl_c, nl_d, &
75626 sphi_a, sphi_b, sphi_c, sphi_d, &
75627 primitives, &
75628 buffer1, buffer2)
75629 REAL(dp), DIMENSION(10*10*1*15), INTENT(IN) :: work
75630 INTEGER :: nl_a, nl_b, nl_c, nl_d
75631 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
75632 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
75633 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
75634 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
75635 REAL(dp), &
75636 DIMENSION(7*nl_a, 7*nl_b, 1*nl_c, 9*nl_d) :: primitives
75637 REAL(dp), DIMENSION(10*10*1*15) :: buffer1, buffer2
75638
75639 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
75640 kmax, s_offset_a1, s_offset_b1, &
75641 s_offset_c1, s_offset_d1
75642
75643 s_offset_a1 = 0
75644 DO ia = 1, nl_a
75645 s_offset_b1 = 0
75646 DO ib = 1, nl_b
75647 s_offset_c1 = 0
75648 DO ic = 1, nl_c
75649 s_offset_d1 = 0
75650 DO id = 1, nl_d
75651 buffer1 = 0.0_dp
75652 imax = 10*1*15
75653 kmax = 10
75654 DO i = 1, imax
75655 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
75656 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
75657 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
75658 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
75659 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
75660 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
75661 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
75662 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
75663 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
75664 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
75665 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
75666 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
75667 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
75668 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
75669 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
75670 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
75671 END DO
75672 buffer2 = 0.0_dp
75673 imax = 7*1*15
75674 kmax = 10
75675 DO i = 1, imax
75676 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
75677 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
75678 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
75679 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
75680 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
75681 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
75682 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
75683 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
75684 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
75685 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
75686 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
75687 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
75688 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
75689 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
75690 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
75691 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
75692 END DO
75693 buffer1 = 0.0_dp
75694 imax = 7*7*15
75695 kmax = 1
75696 DO i = 1, imax
75697 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
75698 END DO
75699 imax = 7*7*1
75700 kmax = 15
75701 i = 0
75702 DO i1 = 1, 1
75703 DO i2 = 1, 7
75704 DO i3 = 1, 7
75705 i = i + 1
75706 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
75707 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
75708 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
75709 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
75710 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
75711 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
75712 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
75713 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
75714 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
75715 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
75716 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
75717 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
75718 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
75719 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
75720 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
75721 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
75722 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
75723 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
75724 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
75725 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
75726 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
75727 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
75728 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
75729 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
75730 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
75731 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
75732 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
75733 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
75734 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
75735 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
75736 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
75737 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
75738 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
75739 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
75740 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
75741 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
75742 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
75743 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
75744 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
75745 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
75746 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
75747 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
75748 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
75749 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
75750 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
75751 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
75752 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
75753 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
75754 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
75755 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
75756 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
75757 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
75758 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
75759 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
75760 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
75761 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
75762 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
75763 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
75764 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
75765 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
75766 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
75767 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
75768 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
75769 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
75770 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
75771 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
75772 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
75773 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
75774 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
75775 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
75776 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
75777 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
75778 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
75779 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
75780 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
75781 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
75782 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
75783 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
75784 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
75785 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
75786 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
75787 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
75788 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
75789 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
75790 END DO
75791 END DO
75792 END DO
75793 s_offset_d1 = s_offset_d1 + 9
75794 END DO
75795 s_offset_c1 = s_offset_c1 + 1
75796 END DO
75797 s_offset_b1 = s_offset_b1 + 7
75798 END DO
75799 s_offset_a1 = s_offset_a1 + 7
75800 END DO
75801 END SUBROUTINE contract_ffsg
75802#endif
75803#if __MAX_CONTR > 3 || __MAX_CONTR == 3
75804! **************************************************************************************************
75805!> \brief ...
75806!> \param work ...
75807!> \param nl_a ...
75808!> \param nl_b ...
75809!> \param nl_c ...
75810!> \param nl_d ...
75811!> \param sphi_a ...
75812!> \param sphi_b ...
75813!> \param sphi_c ...
75814!> \param sphi_d ...
75815!> \param primitives ...
75816!> \param buffer1 ...
75817!> \param buffer2 ...
75818! **************************************************************************************************
75819 SUBROUTINE contract_ffps(work, &
75820 nl_a, nl_b, nl_c, nl_d, &
75821 sphi_a, sphi_b, sphi_c, sphi_d, &
75822 primitives, &
75823 buffer1, buffer2)
75824 REAL(dp), DIMENSION(10*10*3*1), INTENT(IN) :: work
75825 INTEGER :: nl_a, nl_b, nl_c, nl_d
75826 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
75827 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
75828 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
75829 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
75830 REAL(dp), &
75831 DIMENSION(7*nl_a, 7*nl_b, 3*nl_c, 1*nl_d) :: primitives
75832 REAL(dp), DIMENSION(10*10*3*1) :: buffer1, buffer2
75833
75834 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
75835 kmax, s_offset_a1, s_offset_b1, &
75836 s_offset_c1, s_offset_d1
75837
75838 s_offset_a1 = 0
75839 DO ia = 1, nl_a
75840 s_offset_b1 = 0
75841 DO ib = 1, nl_b
75842 s_offset_c1 = 0
75843 DO ic = 1, nl_c
75844 s_offset_d1 = 0
75845 DO id = 1, nl_d
75846 buffer1 = 0.0_dp
75847 imax = 10*3*1
75848 kmax = 10
75849 DO i = 1, imax
75850 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
75851 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
75852 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
75853 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
75854 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
75855 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
75856 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
75857 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
75858 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
75859 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
75860 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
75861 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
75862 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
75863 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
75864 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
75865 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
75866 END DO
75867 buffer2 = 0.0_dp
75868 imax = 7*3*1
75869 kmax = 10
75870 DO i = 1, imax
75871 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
75872 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
75873 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
75874 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
75875 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
75876 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
75877 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
75878 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
75879 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
75880 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
75881 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
75882 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
75883 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
75884 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
75885 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
75886 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
75887 END DO
75888 buffer1 = 0.0_dp
75889 imax = 7*7*1
75890 kmax = 3
75891 DO i = 1, imax
75892 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
75893 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
75894 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
75895 END DO
75896 imax = 7*7*3
75897 kmax = 1
75898 i = 0
75899 DO i1 = 1, 3
75900 DO i2 = 1, 7
75901 DO i3 = 1, 7
75902 i = i + 1
75903 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
75904 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
75905 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
75906 END DO
75907 END DO
75908 END DO
75909 s_offset_d1 = s_offset_d1 + 1
75910 END DO
75911 s_offset_c1 = s_offset_c1 + 3
75912 END DO
75913 s_offset_b1 = s_offset_b1 + 7
75914 END DO
75915 s_offset_a1 = s_offset_a1 + 7
75916 END DO
75917 END SUBROUTINE contract_ffps
75918#endif
75919#if __MAX_CONTR > 3 || __MAX_CONTR == 3
75920! **************************************************************************************************
75921!> \brief ...
75922!> \param work ...
75923!> \param nl_a ...
75924!> \param nl_b ...
75925!> \param nl_c ...
75926!> \param nl_d ...
75927!> \param sphi_a ...
75928!> \param sphi_b ...
75929!> \param sphi_c ...
75930!> \param sphi_d ...
75931!> \param primitives ...
75932!> \param buffer1 ...
75933!> \param buffer2 ...
75934! **************************************************************************************************
75935 SUBROUTINE contract_ffpp(work, &
75936 nl_a, nl_b, nl_c, nl_d, &
75937 sphi_a, sphi_b, sphi_c, sphi_d, &
75938 primitives, &
75939 buffer1, buffer2)
75940 REAL(dp), DIMENSION(10*10*3*3), INTENT(IN) :: work
75941 INTEGER :: nl_a, nl_b, nl_c, nl_d
75942 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
75943 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
75944 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
75945 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
75946 REAL(dp), &
75947 DIMENSION(7*nl_a, 7*nl_b, 3*nl_c, 3*nl_d) :: primitives
75948 REAL(dp), DIMENSION(10*10*3*3) :: buffer1, buffer2
75949
75950 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
75951 kmax, s_offset_a1, s_offset_b1, &
75952 s_offset_c1, s_offset_d1
75953
75954 s_offset_a1 = 0
75955 DO ia = 1, nl_a
75956 s_offset_b1 = 0
75957 DO ib = 1, nl_b
75958 s_offset_c1 = 0
75959 DO ic = 1, nl_c
75960 s_offset_d1 = 0
75961 DO id = 1, nl_d
75962 buffer1 = 0.0_dp
75963 imax = 10*3*3
75964 kmax = 10
75965 DO i = 1, imax
75966 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
75967 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
75968 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
75969 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
75970 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
75971 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
75972 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
75973 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
75974 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
75975 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
75976 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
75977 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
75978 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
75979 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
75980 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
75981 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
75982 END DO
75983 buffer2 = 0.0_dp
75984 imax = 7*3*3
75985 kmax = 10
75986 DO i = 1, imax
75987 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
75988 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
75989 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
75990 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
75991 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
75992 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
75993 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
75994 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
75995 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
75996 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
75997 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
75998 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
75999 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
76000 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
76001 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
76002 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
76003 END DO
76004 buffer1 = 0.0_dp
76005 imax = 7*7*3
76006 kmax = 3
76007 DO i = 1, imax
76008 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
76009 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
76010 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
76011 END DO
76012 imax = 7*7*3
76013 kmax = 3
76014 i = 0
76015 DO i1 = 1, 3
76016 DO i2 = 1, 7
76017 DO i3 = 1, 7
76018 i = i + 1
76019 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
76020 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
76021 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
76022 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
76023 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
76024 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
76025 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
76026 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
76027 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
76028 END DO
76029 END DO
76030 END DO
76031 s_offset_d1 = s_offset_d1 + 3
76032 END DO
76033 s_offset_c1 = s_offset_c1 + 3
76034 END DO
76035 s_offset_b1 = s_offset_b1 + 7
76036 END DO
76037 s_offset_a1 = s_offset_a1 + 7
76038 END DO
76039 END SUBROUTINE contract_ffpp
76040#endif
76041#if __MAX_CONTR > 3 || __MAX_CONTR == 3
76042! **************************************************************************************************
76043!> \brief ...
76044!> \param work ...
76045!> \param nl_a ...
76046!> \param nl_b ...
76047!> \param nl_c ...
76048!> \param nl_d ...
76049!> \param sphi_a ...
76050!> \param sphi_b ...
76051!> \param sphi_c ...
76052!> \param sphi_d ...
76053!> \param primitives ...
76054!> \param buffer1 ...
76055!> \param buffer2 ...
76056! **************************************************************************************************
76057 SUBROUTINE contract_ffpd(work, &
76058 nl_a, nl_b, nl_c, nl_d, &
76059 sphi_a, sphi_b, sphi_c, sphi_d, &
76060 primitives, &
76061 buffer1, buffer2)
76062 REAL(dp), DIMENSION(10*10*3*6), INTENT(IN) :: work
76063 INTEGER :: nl_a, nl_b, nl_c, nl_d
76064 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
76065 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
76066 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
76067 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
76068 REAL(dp), &
76069 DIMENSION(7*nl_a, 7*nl_b, 3*nl_c, 5*nl_d) :: primitives
76070 REAL(dp), DIMENSION(10*10*3*6) :: buffer1, buffer2
76071
76072 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
76073 kmax, s_offset_a1, s_offset_b1, &
76074 s_offset_c1, s_offset_d1
76075
76076 s_offset_a1 = 0
76077 DO ia = 1, nl_a
76078 s_offset_b1 = 0
76079 DO ib = 1, nl_b
76080 s_offset_c1 = 0
76081 DO ic = 1, nl_c
76082 s_offset_d1 = 0
76083 DO id = 1, nl_d
76084 buffer1 = 0.0_dp
76085 imax = 10*3*6
76086 kmax = 10
76087 DO i = 1, imax
76088 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
76089 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
76090 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
76091 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
76092 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
76093 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
76094 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
76095 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
76096 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
76097 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
76098 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
76099 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
76100 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
76101 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
76102 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
76103 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
76104 END DO
76105 buffer2 = 0.0_dp
76106 imax = 7*3*6
76107 kmax = 10
76108 DO i = 1, imax
76109 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
76110 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
76111 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
76112 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
76113 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
76114 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
76115 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
76116 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
76117 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
76118 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
76119 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
76120 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
76121 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
76122 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
76123 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
76124 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
76125 END DO
76126 buffer1 = 0.0_dp
76127 imax = 7*7*6
76128 kmax = 3
76129 DO i = 1, imax
76130 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
76131 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
76132 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
76133 END DO
76134 imax = 7*7*3
76135 kmax = 6
76136 i = 0
76137 DO i1 = 1, 3
76138 DO i2 = 1, 7
76139 DO i3 = 1, 7
76140 i = i + 1
76141 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
76142 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
76143 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
76144 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
76145 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
76146 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
76147 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
76148 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
76149 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
76150 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
76151 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
76152 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
76153 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
76154 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
76155 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
76156 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
76157 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
76158 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
76159 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
76160 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
76161 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
76162 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
76163 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
76164 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
76165 END DO
76166 END DO
76167 END DO
76168 s_offset_d1 = s_offset_d1 + 5
76169 END DO
76170 s_offset_c1 = s_offset_c1 + 3
76171 END DO
76172 s_offset_b1 = s_offset_b1 + 7
76173 END DO
76174 s_offset_a1 = s_offset_a1 + 7
76175 END DO
76176 END SUBROUTINE contract_ffpd
76177#endif
76178#if __MAX_CONTR > 3 || __MAX_CONTR == 3
76179! **************************************************************************************************
76180!> \brief ...
76181!> \param work ...
76182!> \param nl_a ...
76183!> \param nl_b ...
76184!> \param nl_c ...
76185!> \param nl_d ...
76186!> \param sphi_a ...
76187!> \param sphi_b ...
76188!> \param sphi_c ...
76189!> \param sphi_d ...
76190!> \param primitives ...
76191!> \param buffer1 ...
76192!> \param buffer2 ...
76193! **************************************************************************************************
76194 SUBROUTINE contract_ffpf(work, &
76195 nl_a, nl_b, nl_c, nl_d, &
76196 sphi_a, sphi_b, sphi_c, sphi_d, &
76197 primitives, &
76198 buffer1, buffer2)
76199 REAL(dp), DIMENSION(10*10*3*10), INTENT(IN) :: work
76200 INTEGER :: nl_a, nl_b, nl_c, nl_d
76201 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
76202 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
76203 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
76204 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
76205 REAL(dp), &
76206 DIMENSION(7*nl_a, 7*nl_b, 3*nl_c, 7*nl_d) :: primitives
76207 REAL(dp), DIMENSION(10*10*3*10) :: buffer1, buffer2
76208
76209 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
76210 kmax, s_offset_a1, s_offset_b1, &
76211 s_offset_c1, s_offset_d1
76212
76213 s_offset_a1 = 0
76214 DO ia = 1, nl_a
76215 s_offset_b1 = 0
76216 DO ib = 1, nl_b
76217 s_offset_c1 = 0
76218 DO ic = 1, nl_c
76219 s_offset_d1 = 0
76220 DO id = 1, nl_d
76221 buffer1 = 0.0_dp
76222 imax = 10*3*10
76223 kmax = 10
76224 DO i = 1, imax
76225 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
76226 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
76227 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
76228 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
76229 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
76230 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
76231 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
76232 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
76233 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
76234 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
76235 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
76236 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
76237 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
76238 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
76239 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
76240 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
76241 END DO
76242 buffer2 = 0.0_dp
76243 imax = 7*3*10
76244 kmax = 10
76245 DO i = 1, imax
76246 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
76247 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
76248 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
76249 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
76250 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
76251 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
76252 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
76253 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
76254 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
76255 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
76256 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
76257 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
76258 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
76259 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
76260 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
76261 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
76262 END DO
76263 buffer1 = 0.0_dp
76264 imax = 7*7*10
76265 kmax = 3
76266 DO i = 1, imax
76267 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
76268 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
76269 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
76270 END DO
76271 imax = 7*7*3
76272 kmax = 10
76273 i = 0
76274 DO i1 = 1, 3
76275 DO i2 = 1, 7
76276 DO i3 = 1, 7
76277 i = i + 1
76278 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
76279 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
76280 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
76281 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
76282 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
76283 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
76284 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
76285 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
76286 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
76287 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
76288 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
76289 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
76290 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
76291 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
76292 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
76293 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
76294 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
76295 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
76296 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
76297 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
76298 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
76299 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
76300 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
76301 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
76302 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
76303 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
76304 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
76305 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
76306 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
76307 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
76308 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
76309 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
76310 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
76311 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
76312 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
76313 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
76314 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
76315 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
76316 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
76317 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
76318 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
76319 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
76320 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
76321 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
76322 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
76323 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
76324 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
76325 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
76326 END DO
76327 END DO
76328 END DO
76329 s_offset_d1 = s_offset_d1 + 7
76330 END DO
76331 s_offset_c1 = s_offset_c1 + 3
76332 END DO
76333 s_offset_b1 = s_offset_b1 + 7
76334 END DO
76335 s_offset_a1 = s_offset_a1 + 7
76336 END DO
76337 END SUBROUTINE contract_ffpf
76338#endif
76339#if __MAX_CONTR > 4 || __MAX_CONTR == 4
76340! **************************************************************************************************
76341!> \brief ...
76342!> \param work ...
76343!> \param nl_a ...
76344!> \param nl_b ...
76345!> \param nl_c ...
76346!> \param nl_d ...
76347!> \param sphi_a ...
76348!> \param sphi_b ...
76349!> \param sphi_c ...
76350!> \param sphi_d ...
76351!> \param primitives ...
76352!> \param buffer1 ...
76353!> \param buffer2 ...
76354! **************************************************************************************************
76355 SUBROUTINE contract_ffpg(work, &
76356 nl_a, nl_b, nl_c, nl_d, &
76357 sphi_a, sphi_b, sphi_c, sphi_d, &
76358 primitives, &
76359 buffer1, buffer2)
76360 REAL(dp), DIMENSION(10*10*3*15), INTENT(IN) :: work
76361 INTEGER :: nl_a, nl_b, nl_c, nl_d
76362 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
76363 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
76364 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
76365 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
76366 REAL(dp), &
76367 DIMENSION(7*nl_a, 7*nl_b, 3*nl_c, 9*nl_d) :: primitives
76368 REAL(dp), DIMENSION(10*10*3*15) :: buffer1, buffer2
76369
76370 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
76371 kmax, s_offset_a1, s_offset_b1, &
76372 s_offset_c1, s_offset_d1
76373
76374 s_offset_a1 = 0
76375 DO ia = 1, nl_a
76376 s_offset_b1 = 0
76377 DO ib = 1, nl_b
76378 s_offset_c1 = 0
76379 DO ic = 1, nl_c
76380 s_offset_d1 = 0
76381 DO id = 1, nl_d
76382 buffer1 = 0.0_dp
76383 imax = 10*3*15
76384 kmax = 10
76385 DO i = 1, imax
76386 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
76387 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
76388 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
76389 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
76390 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
76391 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
76392 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
76393 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
76394 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
76395 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
76396 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
76397 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
76398 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
76399 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
76400 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
76401 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
76402 END DO
76403 buffer2 = 0.0_dp
76404 imax = 7*3*15
76405 kmax = 10
76406 DO i = 1, imax
76407 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
76408 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
76409 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
76410 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
76411 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
76412 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
76413 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
76414 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
76415 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
76416 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
76417 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
76418 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
76419 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
76420 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
76421 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
76422 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
76423 END DO
76424 buffer1 = 0.0_dp
76425 imax = 7*7*15
76426 kmax = 3
76427 DO i = 1, imax
76428 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
76429 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
76430 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
76431 END DO
76432 imax = 7*7*3
76433 kmax = 15
76434 i = 0
76435 DO i1 = 1, 3
76436 DO i2 = 1, 7
76437 DO i3 = 1, 7
76438 i = i + 1
76439 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
76440 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
76441 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
76442 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
76443 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
76444 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
76445 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
76446 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
76447 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
76448 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
76449 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
76450 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
76451 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
76452 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
76453 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
76454 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
76455 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
76456 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
76457 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
76458 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
76459 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
76460 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
76461 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
76462 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
76463 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
76464 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
76465 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
76466 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
76467 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
76468 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
76469 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
76470 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
76471 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
76472 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
76473 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
76474 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
76475 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
76476 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
76477 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
76478 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
76479 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
76480 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
76481 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
76482 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
76483 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
76484 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
76485 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
76486 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
76487 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
76488 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
76489 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
76490 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
76491 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
76492 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
76493 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
76494 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
76495 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
76496 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
76497 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
76498 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
76499 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
76500 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
76501 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
76502 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
76503 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
76504 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
76505 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
76506 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
76507 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
76508 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
76509 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
76510 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
76511 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
76512 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
76513 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
76514 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
76515 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
76516 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
76517 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
76518 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
76519 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
76520 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
76521 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
76522 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
76523 END DO
76524 END DO
76525 END DO
76526 s_offset_d1 = s_offset_d1 + 9
76527 END DO
76528 s_offset_c1 = s_offset_c1 + 3
76529 END DO
76530 s_offset_b1 = s_offset_b1 + 7
76531 END DO
76532 s_offset_a1 = s_offset_a1 + 7
76533 END DO
76534 END SUBROUTINE contract_ffpg
76535#endif
76536#if __MAX_CONTR > 3 || __MAX_CONTR == 3
76537! **************************************************************************************************
76538!> \brief ...
76539!> \param work ...
76540!> \param nl_a ...
76541!> \param nl_b ...
76542!> \param nl_c ...
76543!> \param nl_d ...
76544!> \param sphi_a ...
76545!> \param sphi_b ...
76546!> \param sphi_c ...
76547!> \param sphi_d ...
76548!> \param primitives ...
76549!> \param buffer1 ...
76550!> \param buffer2 ...
76551! **************************************************************************************************
76552 SUBROUTINE contract_ffds(work, &
76553 nl_a, nl_b, nl_c, nl_d, &
76554 sphi_a, sphi_b, sphi_c, sphi_d, &
76555 primitives, &
76556 buffer1, buffer2)
76557 REAL(dp), DIMENSION(10*10*6*1), INTENT(IN) :: work
76558 INTEGER :: nl_a, nl_b, nl_c, nl_d
76559 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
76560 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
76561 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
76562 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
76563 REAL(dp), &
76564 DIMENSION(7*nl_a, 7*nl_b, 5*nl_c, 1*nl_d) :: primitives
76565 REAL(dp), DIMENSION(10*10*6*1) :: buffer1, buffer2
76566
76567 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
76568 kmax, s_offset_a1, s_offset_b1, &
76569 s_offset_c1, s_offset_d1
76570
76571 s_offset_a1 = 0
76572 DO ia = 1, nl_a
76573 s_offset_b1 = 0
76574 DO ib = 1, nl_b
76575 s_offset_c1 = 0
76576 DO ic = 1, nl_c
76577 s_offset_d1 = 0
76578 DO id = 1, nl_d
76579 buffer1 = 0.0_dp
76580 imax = 10*6*1
76581 kmax = 10
76582 DO i = 1, imax
76583 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
76584 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
76585 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
76586 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
76587 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
76588 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
76589 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
76590 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
76591 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
76592 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
76593 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
76594 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
76595 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
76596 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
76597 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
76598 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
76599 END DO
76600 buffer2 = 0.0_dp
76601 imax = 7*6*1
76602 kmax = 10
76603 DO i = 1, imax
76604 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
76605 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
76606 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
76607 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
76608 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
76609 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
76610 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
76611 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
76612 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
76613 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
76614 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
76615 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
76616 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
76617 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
76618 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
76619 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
76620 END DO
76621 buffer1 = 0.0_dp
76622 imax = 7*7*1
76623 kmax = 6
76624 DO i = 1, imax
76625 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
76626 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
76627 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
76628 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
76629 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
76630 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
76631 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
76632 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
76633 END DO
76634 imax = 7*7*5
76635 kmax = 1
76636 i = 0
76637 DO i1 = 1, 5
76638 DO i2 = 1, 7
76639 DO i3 = 1, 7
76640 i = i + 1
76641 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
76642 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
76643 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
76644 END DO
76645 END DO
76646 END DO
76647 s_offset_d1 = s_offset_d1 + 1
76648 END DO
76649 s_offset_c1 = s_offset_c1 + 5
76650 END DO
76651 s_offset_b1 = s_offset_b1 + 7
76652 END DO
76653 s_offset_a1 = s_offset_a1 + 7
76654 END DO
76655 END SUBROUTINE contract_ffds
76656#endif
76657#if __MAX_CONTR > 3 || __MAX_CONTR == 3
76658! **************************************************************************************************
76659!> \brief ...
76660!> \param work ...
76661!> \param nl_a ...
76662!> \param nl_b ...
76663!> \param nl_c ...
76664!> \param nl_d ...
76665!> \param sphi_a ...
76666!> \param sphi_b ...
76667!> \param sphi_c ...
76668!> \param sphi_d ...
76669!> \param primitives ...
76670!> \param buffer1 ...
76671!> \param buffer2 ...
76672! **************************************************************************************************
76673 SUBROUTINE contract_ffdp(work, &
76674 nl_a, nl_b, nl_c, nl_d, &
76675 sphi_a, sphi_b, sphi_c, sphi_d, &
76676 primitives, &
76677 buffer1, buffer2)
76678 REAL(dp), DIMENSION(10*10*6*3), INTENT(IN) :: work
76679 INTEGER :: nl_a, nl_b, nl_c, nl_d
76680 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
76681 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
76682 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
76683 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
76684 REAL(dp), &
76685 DIMENSION(7*nl_a, 7*nl_b, 5*nl_c, 3*nl_d) :: primitives
76686 REAL(dp), DIMENSION(10*10*6*3) :: buffer1, buffer2
76687
76688 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
76689 kmax, s_offset_a1, s_offset_b1, &
76690 s_offset_c1, s_offset_d1
76691
76692 s_offset_a1 = 0
76693 DO ia = 1, nl_a
76694 s_offset_b1 = 0
76695 DO ib = 1, nl_b
76696 s_offset_c1 = 0
76697 DO ic = 1, nl_c
76698 s_offset_d1 = 0
76699 DO id = 1, nl_d
76700 buffer1 = 0.0_dp
76701 imax = 10*6*3
76702 kmax = 10
76703 DO i = 1, imax
76704 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
76705 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
76706 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
76707 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
76708 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
76709 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
76710 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
76711 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
76712 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
76713 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
76714 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
76715 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
76716 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
76717 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
76718 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
76719 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
76720 END DO
76721 buffer2 = 0.0_dp
76722 imax = 7*6*3
76723 kmax = 10
76724 DO i = 1, imax
76725 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
76726 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
76727 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
76728 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
76729 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
76730 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
76731 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
76732 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
76733 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
76734 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
76735 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
76736 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
76737 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
76738 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
76739 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
76740 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
76741 END DO
76742 buffer1 = 0.0_dp
76743 imax = 7*7*3
76744 kmax = 6
76745 DO i = 1, imax
76746 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
76747 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
76748 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
76749 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
76750 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
76751 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
76752 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
76753 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
76754 END DO
76755 imax = 7*7*5
76756 kmax = 3
76757 i = 0
76758 DO i1 = 1, 5
76759 DO i2 = 1, 7
76760 DO i3 = 1, 7
76761 i = i + 1
76762 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
76763 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
76764 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
76765 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
76766 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
76767 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
76768 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
76769 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
76770 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
76771 END DO
76772 END DO
76773 END DO
76774 s_offset_d1 = s_offset_d1 + 3
76775 END DO
76776 s_offset_c1 = s_offset_c1 + 5
76777 END DO
76778 s_offset_b1 = s_offset_b1 + 7
76779 END DO
76780 s_offset_a1 = s_offset_a1 + 7
76781 END DO
76782 END SUBROUTINE contract_ffdp
76783#endif
76784#if __MAX_CONTR > 3 || __MAX_CONTR == 3
76785! **************************************************************************************************
76786!> \brief ...
76787!> \param work ...
76788!> \param nl_a ...
76789!> \param nl_b ...
76790!> \param nl_c ...
76791!> \param nl_d ...
76792!> \param sphi_a ...
76793!> \param sphi_b ...
76794!> \param sphi_c ...
76795!> \param sphi_d ...
76796!> \param primitives ...
76797!> \param buffer1 ...
76798!> \param buffer2 ...
76799! **************************************************************************************************
76800 SUBROUTINE contract_ffdd(work, &
76801 nl_a, nl_b, nl_c, nl_d, &
76802 sphi_a, sphi_b, sphi_c, sphi_d, &
76803 primitives, &
76804 buffer1, buffer2)
76805 REAL(dp), DIMENSION(10*10*6*6), INTENT(IN) :: work
76806 INTEGER :: nl_a, nl_b, nl_c, nl_d
76807 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
76808 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
76809 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
76810 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
76811 REAL(dp), &
76812 DIMENSION(7*nl_a, 7*nl_b, 5*nl_c, 5*nl_d) :: primitives
76813 REAL(dp), DIMENSION(10*10*6*6) :: buffer1, buffer2
76814
76815 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
76816 kmax, s_offset_a1, s_offset_b1, &
76817 s_offset_c1, s_offset_d1
76818
76819 s_offset_a1 = 0
76820 DO ia = 1, nl_a
76821 s_offset_b1 = 0
76822 DO ib = 1, nl_b
76823 s_offset_c1 = 0
76824 DO ic = 1, nl_c
76825 s_offset_d1 = 0
76826 DO id = 1, nl_d
76827 buffer1 = 0.0_dp
76828 imax = 10*6*6
76829 kmax = 10
76830 DO i = 1, imax
76831 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
76832 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
76833 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
76834 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
76835 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
76836 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
76837 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
76838 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
76839 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
76840 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
76841 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
76842 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
76843 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
76844 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
76845 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
76846 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
76847 END DO
76848 buffer2 = 0.0_dp
76849 imax = 7*6*6
76850 kmax = 10
76851 DO i = 1, imax
76852 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
76853 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
76854 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
76855 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
76856 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
76857 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
76858 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
76859 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
76860 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
76861 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
76862 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
76863 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
76864 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
76865 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
76866 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
76867 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
76868 END DO
76869 buffer1 = 0.0_dp
76870 imax = 7*7*6
76871 kmax = 6
76872 DO i = 1, imax
76873 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
76874 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
76875 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
76876 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
76877 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
76878 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
76879 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
76880 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
76881 END DO
76882 imax = 7*7*5
76883 kmax = 6
76884 i = 0
76885 DO i1 = 1, 5
76886 DO i2 = 1, 7
76887 DO i3 = 1, 7
76888 i = i + 1
76889 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
76890 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
76891 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
76892 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
76893 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
76894 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
76895 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
76896 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
76897 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
76898 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
76899 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
76900 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
76901 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
76902 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
76903 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
76904 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
76905 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
76906 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
76907 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
76908 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
76909 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
76910 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
76911 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
76912 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
76913 END DO
76914 END DO
76915 END DO
76916 s_offset_d1 = s_offset_d1 + 5
76917 END DO
76918 s_offset_c1 = s_offset_c1 + 5
76919 END DO
76920 s_offset_b1 = s_offset_b1 + 7
76921 END DO
76922 s_offset_a1 = s_offset_a1 + 7
76923 END DO
76924 END SUBROUTINE contract_ffdd
76925#endif
76926#if __MAX_CONTR > 3 || __MAX_CONTR == 3
76927! **************************************************************************************************
76928!> \brief ...
76929!> \param work ...
76930!> \param nl_a ...
76931!> \param nl_b ...
76932!> \param nl_c ...
76933!> \param nl_d ...
76934!> \param sphi_a ...
76935!> \param sphi_b ...
76936!> \param sphi_c ...
76937!> \param sphi_d ...
76938!> \param primitives ...
76939!> \param buffer1 ...
76940!> \param buffer2 ...
76941! **************************************************************************************************
76942 SUBROUTINE contract_ffdf(work, &
76943 nl_a, nl_b, nl_c, nl_d, &
76944 sphi_a, sphi_b, sphi_c, sphi_d, &
76945 primitives, &
76946 buffer1, buffer2)
76947 REAL(dp), DIMENSION(10*10*6*10), INTENT(IN) :: work
76948 INTEGER :: nl_a, nl_b, nl_c, nl_d
76949 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
76950 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
76951 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
76952 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
76953 REAL(dp), &
76954 DIMENSION(7*nl_a, 7*nl_b, 5*nl_c, 7*nl_d) :: primitives
76955 REAL(dp), DIMENSION(10*10*6*10) :: buffer1, buffer2
76956
76957 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
76958 kmax, s_offset_a1, s_offset_b1, &
76959 s_offset_c1, s_offset_d1
76960
76961 s_offset_a1 = 0
76962 DO ia = 1, nl_a
76963 s_offset_b1 = 0
76964 DO ib = 1, nl_b
76965 s_offset_c1 = 0
76966 DO ic = 1, nl_c
76967 s_offset_d1 = 0
76968 DO id = 1, nl_d
76969 buffer1 = 0.0_dp
76970 imax = 10*6*10
76971 kmax = 10
76972 DO i = 1, imax
76973 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
76974 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
76975 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
76976 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
76977 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
76978 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
76979 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
76980 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
76981 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
76982 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
76983 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
76984 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
76985 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
76986 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
76987 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
76988 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
76989 END DO
76990 buffer2 = 0.0_dp
76991 imax = 7*6*10
76992 kmax = 10
76993 DO i = 1, imax
76994 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
76995 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
76996 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
76997 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
76998 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
76999 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
77000 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
77001 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
77002 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
77003 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
77004 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
77005 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
77006 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
77007 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
77008 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
77009 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
77010 END DO
77011 buffer1 = 0.0_dp
77012 imax = 7*7*10
77013 kmax = 6
77014 DO i = 1, imax
77015 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
77016 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
77017 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
77018 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
77019 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
77020 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
77021 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
77022 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
77023 END DO
77024 imax = 7*7*5
77025 kmax = 10
77026 i = 0
77027 DO i1 = 1, 5
77028 DO i2 = 1, 7
77029 DO i3 = 1, 7
77030 i = i + 1
77031 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
77032 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
77033 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
77034 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
77035 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
77036 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
77037 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
77038 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
77039 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
77040 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
77041 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
77042 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
77043 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
77044 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
77045 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
77046 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
77047 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
77048 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
77049 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
77050 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
77051 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
77052 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
77053 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
77054 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
77055 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
77056 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
77057 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
77058 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
77059 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
77060 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
77061 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
77062 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
77063 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
77064 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
77065 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
77066 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
77067 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
77068 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
77069 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
77070 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
77071 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
77072 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
77073 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
77074 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
77075 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
77076 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
77077 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
77078 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
77079 END DO
77080 END DO
77081 END DO
77082 s_offset_d1 = s_offset_d1 + 7
77083 END DO
77084 s_offset_c1 = s_offset_c1 + 5
77085 END DO
77086 s_offset_b1 = s_offset_b1 + 7
77087 END DO
77088 s_offset_a1 = s_offset_a1 + 7
77089 END DO
77090 END SUBROUTINE contract_ffdf
77091#endif
77092#if __MAX_CONTR > 4 || __MAX_CONTR == 4
77093! **************************************************************************************************
77094!> \brief ...
77095!> \param work ...
77096!> \param nl_a ...
77097!> \param nl_b ...
77098!> \param nl_c ...
77099!> \param nl_d ...
77100!> \param sphi_a ...
77101!> \param sphi_b ...
77102!> \param sphi_c ...
77103!> \param sphi_d ...
77104!> \param primitives ...
77105!> \param buffer1 ...
77106!> \param buffer2 ...
77107! **************************************************************************************************
77108 SUBROUTINE contract_ffdg(work, &
77109 nl_a, nl_b, nl_c, nl_d, &
77110 sphi_a, sphi_b, sphi_c, sphi_d, &
77111 primitives, &
77112 buffer1, buffer2)
77113 REAL(dp), DIMENSION(10*10*6*15), INTENT(IN) :: work
77114 INTEGER :: nl_a, nl_b, nl_c, nl_d
77115 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
77116 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
77117 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
77118 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
77119 REAL(dp), &
77120 DIMENSION(7*nl_a, 7*nl_b, 5*nl_c, 9*nl_d) :: primitives
77121 REAL(dp), DIMENSION(10*10*6*15) :: buffer1, buffer2
77122
77123 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
77124 kmax, s_offset_a1, s_offset_b1, &
77125 s_offset_c1, s_offset_d1
77126
77127 s_offset_a1 = 0
77128 DO ia = 1, nl_a
77129 s_offset_b1 = 0
77130 DO ib = 1, nl_b
77131 s_offset_c1 = 0
77132 DO ic = 1, nl_c
77133 s_offset_d1 = 0
77134 DO id = 1, nl_d
77135 buffer1 = 0.0_dp
77136 imax = 10*6*15
77137 kmax = 10
77138 DO i = 1, imax
77139 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
77140 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
77141 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
77142 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
77143 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
77144 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
77145 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
77146 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
77147 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
77148 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
77149 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
77150 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
77151 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
77152 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
77153 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
77154 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
77155 END DO
77156 buffer2 = 0.0_dp
77157 imax = 7*6*15
77158 kmax = 10
77159 DO i = 1, imax
77160 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
77161 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
77162 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
77163 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
77164 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
77165 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
77166 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
77167 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
77168 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
77169 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
77170 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
77171 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
77172 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
77173 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
77174 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
77175 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
77176 END DO
77177 buffer1 = 0.0_dp
77178 imax = 7*7*15
77179 kmax = 6
77180 DO i = 1, imax
77181 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
77182 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
77183 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
77184 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
77185 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
77186 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
77187 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
77188 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
77189 END DO
77190 imax = 7*7*5
77191 kmax = 15
77192 i = 0
77193 DO i1 = 1, 5
77194 DO i2 = 1, 7
77195 DO i3 = 1, 7
77196 i = i + 1
77197 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
77198 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
77199 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
77200 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
77201 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
77202 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
77203 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
77204 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
77205 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
77206 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
77207 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
77208 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
77209 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
77210 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
77211 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
77212 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
77213 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
77214 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
77215 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
77216 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
77217 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
77218 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
77219 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
77220 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
77221 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
77222 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
77223 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
77224 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
77225 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
77226 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
77227 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
77228 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
77229 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
77230 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
77231 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
77232 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
77233 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
77234 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
77235 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
77236 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
77237 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
77238 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
77239 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
77240 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
77241 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
77242 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
77243 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
77244 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
77245 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
77246 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
77247 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
77248 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
77249 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
77250 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
77251 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
77252 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
77253 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
77254 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
77255 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
77256 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
77257 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
77258 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
77259 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
77260 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
77261 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
77262 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
77263 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
77264 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
77265 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
77266 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
77267 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
77268 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
77269 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
77270 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
77271 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
77272 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
77273 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
77274 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
77275 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
77276 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
77277 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
77278 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
77279 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
77280 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
77281 END DO
77282 END DO
77283 END DO
77284 s_offset_d1 = s_offset_d1 + 9
77285 END DO
77286 s_offset_c1 = s_offset_c1 + 5
77287 END DO
77288 s_offset_b1 = s_offset_b1 + 7
77289 END DO
77290 s_offset_a1 = s_offset_a1 + 7
77291 END DO
77292 END SUBROUTINE contract_ffdg
77293#endif
77294#if __MAX_CONTR > 3 || __MAX_CONTR == 3
77295! **************************************************************************************************
77296!> \brief ...
77297!> \param work ...
77298!> \param nl_a ...
77299!> \param nl_b ...
77300!> \param nl_c ...
77301!> \param nl_d ...
77302!> \param sphi_a ...
77303!> \param sphi_b ...
77304!> \param sphi_c ...
77305!> \param sphi_d ...
77306!> \param primitives ...
77307!> \param buffer1 ...
77308!> \param buffer2 ...
77309! **************************************************************************************************
77310 SUBROUTINE contract_fffs(work, &
77311 nl_a, nl_b, nl_c, nl_d, &
77312 sphi_a, sphi_b, sphi_c, sphi_d, &
77313 primitives, &
77314 buffer1, buffer2)
77315 REAL(dp), DIMENSION(10*10*10*1), INTENT(IN) :: work
77316 INTEGER :: nl_a, nl_b, nl_c, nl_d
77317 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
77318 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
77319 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
77320 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
77321 REAL(dp), &
77322 DIMENSION(7*nl_a, 7*nl_b, 7*nl_c, 1*nl_d) :: primitives
77323 REAL(dp), DIMENSION(10*10*10*1) :: buffer1, buffer2
77324
77325 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
77326 kmax, s_offset_a1, s_offset_b1, &
77327 s_offset_c1, s_offset_d1
77328
77329 s_offset_a1 = 0
77330 DO ia = 1, nl_a
77331 s_offset_b1 = 0
77332 DO ib = 1, nl_b
77333 s_offset_c1 = 0
77334 DO ic = 1, nl_c
77335 s_offset_d1 = 0
77336 DO id = 1, nl_d
77337 buffer1 = 0.0_dp
77338 imax = 10*10*1
77339 kmax = 10
77340 DO i = 1, imax
77341 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
77342 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
77343 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
77344 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
77345 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
77346 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
77347 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
77348 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
77349 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
77350 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
77351 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
77352 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
77353 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
77354 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
77355 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
77356 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
77357 END DO
77358 buffer2 = 0.0_dp
77359 imax = 7*10*1
77360 kmax = 10
77361 DO i = 1, imax
77362 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
77363 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
77364 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
77365 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
77366 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
77367 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
77368 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
77369 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
77370 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
77371 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
77372 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
77373 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
77374 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
77375 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
77376 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
77377 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
77378 END DO
77379 buffer1 = 0.0_dp
77380 imax = 7*7*1
77381 kmax = 10
77382 DO i = 1, imax
77383 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
77384 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
77385 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
77386 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
77387 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
77388 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
77389 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
77390 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
77391 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
77392 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
77393 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
77394 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
77395 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
77396 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
77397 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
77398 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
77399 END DO
77400 imax = 7*7*7
77401 kmax = 1
77402 i = 0
77403 DO i1 = 1, 7
77404 DO i2 = 1, 7
77405 DO i3 = 1, 7
77406 i = i + 1
77407 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
77408 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
77409 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
77410 END DO
77411 END DO
77412 END DO
77413 s_offset_d1 = s_offset_d1 + 1
77414 END DO
77415 s_offset_c1 = s_offset_c1 + 7
77416 END DO
77417 s_offset_b1 = s_offset_b1 + 7
77418 END DO
77419 s_offset_a1 = s_offset_a1 + 7
77420 END DO
77421 END SUBROUTINE contract_fffs
77422#endif
77423#if __MAX_CONTR > 3 || __MAX_CONTR == 3
77424! **************************************************************************************************
77425!> \brief ...
77426!> \param work ...
77427!> \param nl_a ...
77428!> \param nl_b ...
77429!> \param nl_c ...
77430!> \param nl_d ...
77431!> \param sphi_a ...
77432!> \param sphi_b ...
77433!> \param sphi_c ...
77434!> \param sphi_d ...
77435!> \param primitives ...
77436!> \param buffer1 ...
77437!> \param buffer2 ...
77438! **************************************************************************************************
77439 SUBROUTINE contract_fffp(work, &
77440 nl_a, nl_b, nl_c, nl_d, &
77441 sphi_a, sphi_b, sphi_c, sphi_d, &
77442 primitives, &
77443 buffer1, buffer2)
77444 REAL(dp), DIMENSION(10*10*10*3), INTENT(IN) :: work
77445 INTEGER :: nl_a, nl_b, nl_c, nl_d
77446 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
77447 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
77448 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
77449 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
77450 REAL(dp), &
77451 DIMENSION(7*nl_a, 7*nl_b, 7*nl_c, 3*nl_d) :: primitives
77452 REAL(dp), DIMENSION(10*10*10*3) :: buffer1, buffer2
77453
77454 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
77455 kmax, s_offset_a1, s_offset_b1, &
77456 s_offset_c1, s_offset_d1
77457
77458 s_offset_a1 = 0
77459 DO ia = 1, nl_a
77460 s_offset_b1 = 0
77461 DO ib = 1, nl_b
77462 s_offset_c1 = 0
77463 DO ic = 1, nl_c
77464 s_offset_d1 = 0
77465 DO id = 1, nl_d
77466 buffer1 = 0.0_dp
77467 imax = 10*10*3
77468 kmax = 10
77469 DO i = 1, imax
77470 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
77471 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
77472 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
77473 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
77474 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
77475 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
77476 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
77477 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
77478 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
77479 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
77480 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
77481 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
77482 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
77483 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
77484 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
77485 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
77486 END DO
77487 buffer2 = 0.0_dp
77488 imax = 7*10*3
77489 kmax = 10
77490 DO i = 1, imax
77491 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
77492 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
77493 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
77494 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
77495 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
77496 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
77497 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
77498 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
77499 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
77500 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
77501 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
77502 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
77503 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
77504 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
77505 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
77506 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
77507 END DO
77508 buffer1 = 0.0_dp
77509 imax = 7*7*3
77510 kmax = 10
77511 DO i = 1, imax
77512 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
77513 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
77514 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
77515 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
77516 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
77517 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
77518 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
77519 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
77520 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
77521 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
77522 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
77523 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
77524 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
77525 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
77526 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
77527 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
77528 END DO
77529 imax = 7*7*7
77530 kmax = 3
77531 i = 0
77532 DO i1 = 1, 7
77533 DO i2 = 1, 7
77534 DO i3 = 1, 7
77535 i = i + 1
77536 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
77537 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
77538 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
77539 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
77540 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
77541 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
77542 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
77543 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
77544 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
77545 END DO
77546 END DO
77547 END DO
77548 s_offset_d1 = s_offset_d1 + 3
77549 END DO
77550 s_offset_c1 = s_offset_c1 + 7
77551 END DO
77552 s_offset_b1 = s_offset_b1 + 7
77553 END DO
77554 s_offset_a1 = s_offset_a1 + 7
77555 END DO
77556 END SUBROUTINE contract_fffp
77557#endif
77558#if __MAX_CONTR > 3 || __MAX_CONTR == 3
77559! **************************************************************************************************
77560!> \brief ...
77561!> \param work ...
77562!> \param nl_a ...
77563!> \param nl_b ...
77564!> \param nl_c ...
77565!> \param nl_d ...
77566!> \param sphi_a ...
77567!> \param sphi_b ...
77568!> \param sphi_c ...
77569!> \param sphi_d ...
77570!> \param primitives ...
77571!> \param buffer1 ...
77572!> \param buffer2 ...
77573! **************************************************************************************************
77574 SUBROUTINE contract_fffd(work, &
77575 nl_a, nl_b, nl_c, nl_d, &
77576 sphi_a, sphi_b, sphi_c, sphi_d, &
77577 primitives, &
77578 buffer1, buffer2)
77579 REAL(dp), DIMENSION(10*10*10*6), INTENT(IN) :: work
77580 INTEGER :: nl_a, nl_b, nl_c, nl_d
77581 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
77582 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
77583 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
77584 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
77585 REAL(dp), &
77586 DIMENSION(7*nl_a, 7*nl_b, 7*nl_c, 5*nl_d) :: primitives
77587 REAL(dp), DIMENSION(10*10*10*6) :: buffer1, buffer2
77588
77589 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
77590 kmax, s_offset_a1, s_offset_b1, &
77591 s_offset_c1, s_offset_d1
77592
77593 s_offset_a1 = 0
77594 DO ia = 1, nl_a
77595 s_offset_b1 = 0
77596 DO ib = 1, nl_b
77597 s_offset_c1 = 0
77598 DO ic = 1, nl_c
77599 s_offset_d1 = 0
77600 DO id = 1, nl_d
77601 buffer1 = 0.0_dp
77602 imax = 10*10*6
77603 kmax = 10
77604 DO i = 1, imax
77605 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
77606 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
77607 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
77608 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
77609 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
77610 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
77611 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
77612 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
77613 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
77614 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
77615 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
77616 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
77617 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
77618 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
77619 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
77620 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
77621 END DO
77622 buffer2 = 0.0_dp
77623 imax = 7*10*6
77624 kmax = 10
77625 DO i = 1, imax
77626 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
77627 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
77628 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
77629 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
77630 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
77631 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
77632 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
77633 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
77634 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
77635 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
77636 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
77637 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
77638 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
77639 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
77640 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
77641 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
77642 END DO
77643 buffer1 = 0.0_dp
77644 imax = 7*7*6
77645 kmax = 10
77646 DO i = 1, imax
77647 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
77648 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
77649 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
77650 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
77651 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
77652 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
77653 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
77654 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
77655 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
77656 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
77657 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
77658 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
77659 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
77660 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
77661 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
77662 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
77663 END DO
77664 imax = 7*7*7
77665 kmax = 6
77666 i = 0
77667 DO i1 = 1, 7
77668 DO i2 = 1, 7
77669 DO i3 = 1, 7
77670 i = i + 1
77671 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
77672 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
77673 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
77674 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
77675 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
77676 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
77677 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
77678 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
77679 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
77680 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
77681 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
77682 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
77683 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
77684 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
77685 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
77686 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
77687 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
77688 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
77689 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
77690 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
77691 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
77692 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
77693 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
77694 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
77695 END DO
77696 END DO
77697 END DO
77698 s_offset_d1 = s_offset_d1 + 5
77699 END DO
77700 s_offset_c1 = s_offset_c1 + 7
77701 END DO
77702 s_offset_b1 = s_offset_b1 + 7
77703 END DO
77704 s_offset_a1 = s_offset_a1 + 7
77705 END DO
77706 END SUBROUTINE contract_fffd
77707#endif
77708#if __MAX_CONTR > 3 || __MAX_CONTR == 3
77709! **************************************************************************************************
77710!> \brief ...
77711!> \param work ...
77712!> \param nl_a ...
77713!> \param nl_b ...
77714!> \param nl_c ...
77715!> \param nl_d ...
77716!> \param sphi_a ...
77717!> \param sphi_b ...
77718!> \param sphi_c ...
77719!> \param sphi_d ...
77720!> \param primitives ...
77721!> \param buffer1 ...
77722!> \param buffer2 ...
77723! **************************************************************************************************
77724 SUBROUTINE contract_ffff(work, &
77725 nl_a, nl_b, nl_c, nl_d, &
77726 sphi_a, sphi_b, sphi_c, sphi_d, &
77727 primitives, &
77728 buffer1, buffer2)
77729 REAL(dp), DIMENSION(10*10*10*10), INTENT(IN) :: work
77730 INTEGER :: nl_a, nl_b, nl_c, nl_d
77731 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
77732 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
77733 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
77734 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
77735 REAL(dp), &
77736 DIMENSION(7*nl_a, 7*nl_b, 7*nl_c, 7*nl_d) :: primitives
77737 REAL(dp), DIMENSION(10*10*10*10) :: buffer1, buffer2
77738
77739 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
77740 kmax, s_offset_a1, s_offset_b1, &
77741 s_offset_c1, s_offset_d1
77742
77743 s_offset_a1 = 0
77744 DO ia = 1, nl_a
77745 s_offset_b1 = 0
77746 DO ib = 1, nl_b
77747 s_offset_c1 = 0
77748 DO ic = 1, nl_c
77749 s_offset_d1 = 0
77750 DO id = 1, nl_d
77751 buffer1 = 0.0_dp
77752 imax = 10*10*10
77753 kmax = 10
77754 DO i = 1, imax
77755 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
77756 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
77757 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
77758 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
77759 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
77760 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
77761 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
77762 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
77763 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
77764 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
77765 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
77766 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
77767 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
77768 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
77769 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
77770 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
77771 END DO
77772 buffer2 = 0.0_dp
77773 imax = 7*10*10
77774 kmax = 10
77775 DO i = 1, imax
77776 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
77777 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
77778 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
77779 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
77780 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
77781 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
77782 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
77783 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
77784 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
77785 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
77786 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
77787 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
77788 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
77789 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
77790 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
77791 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
77792 END DO
77793 buffer1 = 0.0_dp
77794 imax = 7*7*10
77795 kmax = 10
77796 DO i = 1, imax
77797 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
77798 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
77799 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
77800 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
77801 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
77802 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
77803 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
77804 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
77805 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
77806 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
77807 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
77808 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
77809 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
77810 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
77811 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
77812 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
77813 END DO
77814 imax = 7*7*7
77815 kmax = 10
77816 i = 0
77817 DO i1 = 1, 7
77818 DO i2 = 1, 7
77819 DO i3 = 1, 7
77820 i = i + 1
77821 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
77822 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
77823 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
77824 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
77825 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
77826 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
77827 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
77828 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
77829 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
77830 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
77831 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
77832 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
77833 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
77834 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
77835 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
77836 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
77837 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
77838 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
77839 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
77840 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
77841 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
77842 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
77843 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
77844 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
77845 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
77846 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
77847 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
77848 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
77849 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
77850 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
77851 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
77852 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
77853 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
77854 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
77855 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
77856 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
77857 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
77858 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
77859 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
77860 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
77861 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
77862 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
77863 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
77864 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
77865 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
77866 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
77867 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
77868 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
77869 END DO
77870 END DO
77871 END DO
77872 s_offset_d1 = s_offset_d1 + 7
77873 END DO
77874 s_offset_c1 = s_offset_c1 + 7
77875 END DO
77876 s_offset_b1 = s_offset_b1 + 7
77877 END DO
77878 s_offset_a1 = s_offset_a1 + 7
77879 END DO
77880 END SUBROUTINE contract_ffff
77881#endif
77882#if __MAX_CONTR > 4 || __MAX_CONTR == 4
77883! **************************************************************************************************
77884!> \brief ...
77885!> \param work ...
77886!> \param nl_a ...
77887!> \param nl_b ...
77888!> \param nl_c ...
77889!> \param nl_d ...
77890!> \param sphi_a ...
77891!> \param sphi_b ...
77892!> \param sphi_c ...
77893!> \param sphi_d ...
77894!> \param primitives ...
77895!> \param buffer1 ...
77896!> \param buffer2 ...
77897! **************************************************************************************************
77898 SUBROUTINE contract_fffg(work, &
77899 nl_a, nl_b, nl_c, nl_d, &
77900 sphi_a, sphi_b, sphi_c, sphi_d, &
77901 primitives, &
77902 buffer1, buffer2)
77903 REAL(dp), DIMENSION(10*10*10*15), INTENT(IN) :: work
77904 INTEGER :: nl_a, nl_b, nl_c, nl_d
77905 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
77906 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
77907 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
77908 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
77909 REAL(dp), &
77910 DIMENSION(7*nl_a, 7*nl_b, 7*nl_c, 9*nl_d) :: primitives
77911 REAL(dp), DIMENSION(10*10*10*15) :: buffer1, buffer2
77912
77913 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
77914 kmax, s_offset_a1, s_offset_b1, &
77915 s_offset_c1, s_offset_d1
77916
77917 s_offset_a1 = 0
77918 DO ia = 1, nl_a
77919 s_offset_b1 = 0
77920 DO ib = 1, nl_b
77921 s_offset_c1 = 0
77922 DO ic = 1, nl_c
77923 s_offset_d1 = 0
77924 DO id = 1, nl_d
77925 buffer1 = 0.0_dp
77926 imax = 10*10*15
77927 kmax = 10
77928 DO i = 1, imax
77929 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
77930 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
77931 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
77932 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
77933 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
77934 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
77935 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
77936 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
77937 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
77938 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
77939 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
77940 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
77941 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
77942 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
77943 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
77944 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
77945 END DO
77946 buffer2 = 0.0_dp
77947 imax = 7*10*15
77948 kmax = 10
77949 DO i = 1, imax
77950 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
77951 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
77952 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
77953 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
77954 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
77955 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
77956 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
77957 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
77958 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
77959 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
77960 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
77961 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
77962 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
77963 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
77964 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
77965 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
77966 END DO
77967 buffer1 = 0.0_dp
77968 imax = 7*7*15
77969 kmax = 10
77970 DO i = 1, imax
77971 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
77972 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
77973 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
77974 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
77975 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
77976 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
77977 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
77978 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
77979 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
77980 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
77981 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
77982 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
77983 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
77984 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
77985 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
77986 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
77987 END DO
77988 imax = 7*7*7
77989 kmax = 15
77990 i = 0
77991 DO i1 = 1, 7
77992 DO i2 = 1, 7
77993 DO i3 = 1, 7
77994 i = i + 1
77995 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
77996 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
77997 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
77998 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
77999 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
78000 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
78001 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
78002 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
78003 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
78004 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
78005 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
78006 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
78007 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
78008 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
78009 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
78010 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
78011 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
78012 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
78013 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
78014 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
78015 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
78016 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
78017 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
78018 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
78019 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
78020 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
78021 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
78022 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
78023 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
78024 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
78025 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
78026 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
78027 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
78028 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
78029 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
78030 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
78031 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
78032 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
78033 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
78034 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
78035 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
78036 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
78037 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
78038 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
78039 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
78040 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
78041 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
78042 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
78043 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
78044 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
78045 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
78046 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
78047 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
78048 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
78049 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
78050 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
78051 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
78052 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
78053 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
78054 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
78055 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
78056 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
78057 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
78058 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
78059 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
78060 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
78061 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
78062 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
78063 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
78064 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
78065 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
78066 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
78067 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
78068 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
78069 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
78070 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
78071 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
78072 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
78073 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
78074 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
78075 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
78076 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
78077 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
78078 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
78079 END DO
78080 END DO
78081 END DO
78082 s_offset_d1 = s_offset_d1 + 9
78083 END DO
78084 s_offset_c1 = s_offset_c1 + 7
78085 END DO
78086 s_offset_b1 = s_offset_b1 + 7
78087 END DO
78088 s_offset_a1 = s_offset_a1 + 7
78089 END DO
78090 END SUBROUTINE contract_fffg
78091#endif
78092#if __MAX_CONTR > 4 || __MAX_CONTR == 4
78093! **************************************************************************************************
78094!> \brief ...
78095!> \param work ...
78096!> \param nl_a ...
78097!> \param nl_b ...
78098!> \param nl_c ...
78099!> \param nl_d ...
78100!> \param sphi_a ...
78101!> \param sphi_b ...
78102!> \param sphi_c ...
78103!> \param sphi_d ...
78104!> \param primitives ...
78105!> \param buffer1 ...
78106!> \param buffer2 ...
78107! **************************************************************************************************
78108 SUBROUTINE contract_ffgs(work, &
78109 nl_a, nl_b, nl_c, nl_d, &
78110 sphi_a, sphi_b, sphi_c, sphi_d, &
78111 primitives, &
78112 buffer1, buffer2)
78113 REAL(dp), DIMENSION(10*10*15*1), INTENT(IN) :: work
78114 INTEGER :: nl_a, nl_b, nl_c, nl_d
78115 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
78116 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
78117 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
78118 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
78119 REAL(dp), &
78120 DIMENSION(7*nl_a, 7*nl_b, 9*nl_c, 1*nl_d) :: primitives
78121 REAL(dp), DIMENSION(10*10*15*1) :: buffer1, buffer2
78122
78123 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
78124 kmax, s_offset_a1, s_offset_b1, &
78125 s_offset_c1, s_offset_d1
78126
78127 s_offset_a1 = 0
78128 DO ia = 1, nl_a
78129 s_offset_b1 = 0
78130 DO ib = 1, nl_b
78131 s_offset_c1 = 0
78132 DO ic = 1, nl_c
78133 s_offset_d1 = 0
78134 DO id = 1, nl_d
78135 buffer1 = 0.0_dp
78136 imax = 10*15*1
78137 kmax = 10
78138 DO i = 1, imax
78139 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
78140 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
78141 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
78142 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
78143 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
78144 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
78145 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
78146 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
78147 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
78148 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
78149 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
78150 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
78151 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
78152 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
78153 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
78154 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
78155 END DO
78156 buffer2 = 0.0_dp
78157 imax = 7*15*1
78158 kmax = 10
78159 DO i = 1, imax
78160 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
78161 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
78162 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
78163 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
78164 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
78165 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
78166 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
78167 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
78168 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
78169 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
78170 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
78171 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
78172 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
78173 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
78174 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
78175 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
78176 END DO
78177 buffer1 = 0.0_dp
78178 imax = 7*7*1
78179 kmax = 15
78180 DO i = 1, imax
78181 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
78182 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
78183 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
78184 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
78185 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
78186 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
78187 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
78188 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
78189 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
78190 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
78191 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
78192 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
78193 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
78194 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
78195 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
78196 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
78197 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
78198 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
78199 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
78200 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
78201 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
78202 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
78203 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
78204 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
78205 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
78206 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
78207 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
78208 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
78209 END DO
78210 imax = 7*7*9
78211 kmax = 1
78212 i = 0
78213 DO i1 = 1, 9
78214 DO i2 = 1, 7
78215 DO i3 = 1, 7
78216 i = i + 1
78217 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
78218 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
78219 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
78220 END DO
78221 END DO
78222 END DO
78223 s_offset_d1 = s_offset_d1 + 1
78224 END DO
78225 s_offset_c1 = s_offset_c1 + 9
78226 END DO
78227 s_offset_b1 = s_offset_b1 + 7
78228 END DO
78229 s_offset_a1 = s_offset_a1 + 7
78230 END DO
78231 END SUBROUTINE contract_ffgs
78232#endif
78233#if __MAX_CONTR > 4 || __MAX_CONTR == 4
78234! **************************************************************************************************
78235!> \brief ...
78236!> \param work ...
78237!> \param nl_a ...
78238!> \param nl_b ...
78239!> \param nl_c ...
78240!> \param nl_d ...
78241!> \param sphi_a ...
78242!> \param sphi_b ...
78243!> \param sphi_c ...
78244!> \param sphi_d ...
78245!> \param primitives ...
78246!> \param buffer1 ...
78247!> \param buffer2 ...
78248! **************************************************************************************************
78249 SUBROUTINE contract_ffgp(work, &
78250 nl_a, nl_b, nl_c, nl_d, &
78251 sphi_a, sphi_b, sphi_c, sphi_d, &
78252 primitives, &
78253 buffer1, buffer2)
78254 REAL(dp), DIMENSION(10*10*15*3), INTENT(IN) :: work
78255 INTEGER :: nl_a, nl_b, nl_c, nl_d
78256 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
78257 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
78258 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
78259 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
78260 REAL(dp), &
78261 DIMENSION(7*nl_a, 7*nl_b, 9*nl_c, 3*nl_d) :: primitives
78262 REAL(dp), DIMENSION(10*10*15*3) :: buffer1, buffer2
78263
78264 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
78265 kmax, s_offset_a1, s_offset_b1, &
78266 s_offset_c1, s_offset_d1
78267
78268 s_offset_a1 = 0
78269 DO ia = 1, nl_a
78270 s_offset_b1 = 0
78271 DO ib = 1, nl_b
78272 s_offset_c1 = 0
78273 DO ic = 1, nl_c
78274 s_offset_d1 = 0
78275 DO id = 1, nl_d
78276 buffer1 = 0.0_dp
78277 imax = 10*15*3
78278 kmax = 10
78279 DO i = 1, imax
78280 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
78281 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
78282 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
78283 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
78284 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
78285 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
78286 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
78287 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
78288 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
78289 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
78290 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
78291 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
78292 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
78293 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
78294 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
78295 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
78296 END DO
78297 buffer2 = 0.0_dp
78298 imax = 7*15*3
78299 kmax = 10
78300 DO i = 1, imax
78301 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
78302 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
78303 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
78304 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
78305 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
78306 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
78307 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
78308 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
78309 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
78310 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
78311 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
78312 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
78313 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
78314 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
78315 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
78316 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
78317 END DO
78318 buffer1 = 0.0_dp
78319 imax = 7*7*3
78320 kmax = 15
78321 DO i = 1, imax
78322 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
78323 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
78324 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
78325 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
78326 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
78327 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
78328 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
78329 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
78330 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
78331 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
78332 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
78333 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
78334 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
78335 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
78336 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
78337 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
78338 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
78339 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
78340 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
78341 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
78342 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
78343 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
78344 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
78345 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
78346 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
78347 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
78348 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
78349 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
78350 END DO
78351 imax = 7*7*9
78352 kmax = 3
78353 i = 0
78354 DO i1 = 1, 9
78355 DO i2 = 1, 7
78356 DO i3 = 1, 7
78357 i = i + 1
78358 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
78359 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
78360 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
78361 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
78362 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
78363 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
78364 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
78365 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
78366 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
78367 END DO
78368 END DO
78369 END DO
78370 s_offset_d1 = s_offset_d1 + 3
78371 END DO
78372 s_offset_c1 = s_offset_c1 + 9
78373 END DO
78374 s_offset_b1 = s_offset_b1 + 7
78375 END DO
78376 s_offset_a1 = s_offset_a1 + 7
78377 END DO
78378 END SUBROUTINE contract_ffgp
78379#endif
78380#if __MAX_CONTR > 4 || __MAX_CONTR == 4
78381! **************************************************************************************************
78382!> \brief ...
78383!> \param work ...
78384!> \param nl_a ...
78385!> \param nl_b ...
78386!> \param nl_c ...
78387!> \param nl_d ...
78388!> \param sphi_a ...
78389!> \param sphi_b ...
78390!> \param sphi_c ...
78391!> \param sphi_d ...
78392!> \param primitives ...
78393!> \param buffer1 ...
78394!> \param buffer2 ...
78395! **************************************************************************************************
78396 SUBROUTINE contract_ffgd(work, &
78397 nl_a, nl_b, nl_c, nl_d, &
78398 sphi_a, sphi_b, sphi_c, sphi_d, &
78399 primitives, &
78400 buffer1, buffer2)
78401 REAL(dp), DIMENSION(10*10*15*6), INTENT(IN) :: work
78402 INTEGER :: nl_a, nl_b, nl_c, nl_d
78403 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
78404 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
78405 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
78406 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
78407 REAL(dp), &
78408 DIMENSION(7*nl_a, 7*nl_b, 9*nl_c, 5*nl_d) :: primitives
78409 REAL(dp), DIMENSION(10*10*15*6) :: buffer1, buffer2
78410
78411 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
78412 kmax, s_offset_a1, s_offset_b1, &
78413 s_offset_c1, s_offset_d1
78414
78415 s_offset_a1 = 0
78416 DO ia = 1, nl_a
78417 s_offset_b1 = 0
78418 DO ib = 1, nl_b
78419 s_offset_c1 = 0
78420 DO ic = 1, nl_c
78421 s_offset_d1 = 0
78422 DO id = 1, nl_d
78423 buffer1 = 0.0_dp
78424 imax = 10*15*6
78425 kmax = 10
78426 DO i = 1, imax
78427 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
78428 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
78429 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
78430 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
78431 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
78432 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
78433 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
78434 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
78435 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
78436 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
78437 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
78438 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
78439 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
78440 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
78441 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
78442 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
78443 END DO
78444 buffer2 = 0.0_dp
78445 imax = 7*15*6
78446 kmax = 10
78447 DO i = 1, imax
78448 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
78449 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
78450 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
78451 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
78452 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
78453 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
78454 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
78455 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
78456 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
78457 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
78458 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
78459 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
78460 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
78461 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
78462 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
78463 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
78464 END DO
78465 buffer1 = 0.0_dp
78466 imax = 7*7*6
78467 kmax = 15
78468 DO i = 1, imax
78469 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
78470 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
78471 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
78472 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
78473 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
78474 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
78475 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
78476 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
78477 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
78478 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
78479 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
78480 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
78481 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
78482 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
78483 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
78484 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
78485 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
78486 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
78487 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
78488 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
78489 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
78490 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
78491 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
78492 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
78493 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
78494 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
78495 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
78496 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
78497 END DO
78498 imax = 7*7*9
78499 kmax = 6
78500 i = 0
78501 DO i1 = 1, 9
78502 DO i2 = 1, 7
78503 DO i3 = 1, 7
78504 i = i + 1
78505 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
78506 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
78507 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
78508 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
78509 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
78510 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
78511 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
78512 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
78513 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
78514 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
78515 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
78516 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
78517 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
78518 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
78519 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
78520 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
78521 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
78522 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
78523 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
78524 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
78525 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
78526 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
78527 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
78528 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
78529 END DO
78530 END DO
78531 END DO
78532 s_offset_d1 = s_offset_d1 + 5
78533 END DO
78534 s_offset_c1 = s_offset_c1 + 9
78535 END DO
78536 s_offset_b1 = s_offset_b1 + 7
78537 END DO
78538 s_offset_a1 = s_offset_a1 + 7
78539 END DO
78540 END SUBROUTINE contract_ffgd
78541#endif
78542#if __MAX_CONTR > 4 || __MAX_CONTR == 4
78543! **************************************************************************************************
78544!> \brief ...
78545!> \param work ...
78546!> \param nl_a ...
78547!> \param nl_b ...
78548!> \param nl_c ...
78549!> \param nl_d ...
78550!> \param sphi_a ...
78551!> \param sphi_b ...
78552!> \param sphi_c ...
78553!> \param sphi_d ...
78554!> \param primitives ...
78555!> \param buffer1 ...
78556!> \param buffer2 ...
78557! **************************************************************************************************
78558 SUBROUTINE contract_ffgf(work, &
78559 nl_a, nl_b, nl_c, nl_d, &
78560 sphi_a, sphi_b, sphi_c, sphi_d, &
78561 primitives, &
78562 buffer1, buffer2)
78563 REAL(dp), DIMENSION(10*10*15*10), INTENT(IN) :: work
78564 INTEGER :: nl_a, nl_b, nl_c, nl_d
78565 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
78566 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
78567 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
78568 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
78569 REAL(dp), &
78570 DIMENSION(7*nl_a, 7*nl_b, 9*nl_c, 7*nl_d) :: primitives
78571 REAL(dp), DIMENSION(10*10*15*10) :: buffer1, buffer2
78572
78573 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
78574 kmax, s_offset_a1, s_offset_b1, &
78575 s_offset_c1, s_offset_d1
78576
78577 s_offset_a1 = 0
78578 DO ia = 1, nl_a
78579 s_offset_b1 = 0
78580 DO ib = 1, nl_b
78581 s_offset_c1 = 0
78582 DO ic = 1, nl_c
78583 s_offset_d1 = 0
78584 DO id = 1, nl_d
78585 buffer1 = 0.0_dp
78586 imax = 10*15*10
78587 kmax = 10
78588 DO i = 1, imax
78589 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
78590 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
78591 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
78592 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
78593 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
78594 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
78595 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
78596 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
78597 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
78598 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
78599 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
78600 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
78601 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
78602 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
78603 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
78604 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
78605 END DO
78606 buffer2 = 0.0_dp
78607 imax = 7*15*10
78608 kmax = 10
78609 DO i = 1, imax
78610 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
78611 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
78612 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
78613 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
78614 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
78615 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
78616 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
78617 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
78618 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
78619 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
78620 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
78621 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
78622 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
78623 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
78624 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
78625 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
78626 END DO
78627 buffer1 = 0.0_dp
78628 imax = 7*7*10
78629 kmax = 15
78630 DO i = 1, imax
78631 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
78632 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
78633 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
78634 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
78635 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
78636 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
78637 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
78638 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
78639 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
78640 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
78641 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
78642 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
78643 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
78644 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
78645 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
78646 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
78647 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
78648 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
78649 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
78650 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
78651 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
78652 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
78653 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
78654 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
78655 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
78656 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
78657 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
78658 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
78659 END DO
78660 imax = 7*7*9
78661 kmax = 10
78662 i = 0
78663 DO i1 = 1, 9
78664 DO i2 = 1, 7
78665 DO i3 = 1, 7
78666 i = i + 1
78667 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
78668 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
78669 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
78670 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
78671 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
78672 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
78673 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
78674 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
78675 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
78676 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
78677 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
78678 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
78679 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
78680 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
78681 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
78682 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
78683 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
78684 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
78685 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
78686 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
78687 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
78688 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
78689 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
78690 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
78691 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
78692 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
78693 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
78694 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
78695 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
78696 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
78697 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
78698 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
78699 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
78700 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
78701 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
78702 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
78703 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
78704 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
78705 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
78706 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
78707 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
78708 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
78709 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
78710 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
78711 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
78712 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
78713 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
78714 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
78715 END DO
78716 END DO
78717 END DO
78718 s_offset_d1 = s_offset_d1 + 7
78719 END DO
78720 s_offset_c1 = s_offset_c1 + 9
78721 END DO
78722 s_offset_b1 = s_offset_b1 + 7
78723 END DO
78724 s_offset_a1 = s_offset_a1 + 7
78725 END DO
78726 END SUBROUTINE contract_ffgf
78727#endif
78728#if __MAX_CONTR > 4 || __MAX_CONTR == 4
78729! **************************************************************************************************
78730!> \brief ...
78731!> \param work ...
78732!> \param nl_a ...
78733!> \param nl_b ...
78734!> \param nl_c ...
78735!> \param nl_d ...
78736!> \param sphi_a ...
78737!> \param sphi_b ...
78738!> \param sphi_c ...
78739!> \param sphi_d ...
78740!> \param primitives ...
78741!> \param buffer1 ...
78742!> \param buffer2 ...
78743! **************************************************************************************************
78744 SUBROUTINE contract_ffgg(work, &
78745 nl_a, nl_b, nl_c, nl_d, &
78746 sphi_a, sphi_b, sphi_c, sphi_d, &
78747 primitives, &
78748 buffer1, buffer2)
78749 REAL(dp), DIMENSION(10*10*15*15), INTENT(IN) :: work
78750 INTEGER :: nl_a, nl_b, nl_c, nl_d
78751 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
78752 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
78753 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
78754 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
78755 REAL(dp), &
78756 DIMENSION(7*nl_a, 7*nl_b, 9*nl_c, 9*nl_d) :: primitives
78757 REAL(dp), DIMENSION(10*10*15*15) :: buffer1, buffer2
78758
78759 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
78760 kmax, s_offset_a1, s_offset_b1, &
78761 s_offset_c1, s_offset_d1
78762
78763 s_offset_a1 = 0
78764 DO ia = 1, nl_a
78765 s_offset_b1 = 0
78766 DO ib = 1, nl_b
78767 s_offset_c1 = 0
78768 DO ic = 1, nl_c
78769 s_offset_d1 = 0
78770 DO id = 1, nl_d
78771 buffer1 = 0.0_dp
78772 imax = 10*15*15
78773 kmax = 10
78774 DO i = 1, imax
78775 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
78776 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
78777 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
78778 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
78779 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
78780 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
78781 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
78782 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
78783 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
78784 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
78785 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
78786 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
78787 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
78788 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
78789 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
78790 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
78791 END DO
78792 buffer2 = 0.0_dp
78793 imax = 7*15*15
78794 kmax = 10
78795 DO i = 1, imax
78796 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
78797 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
78798 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
78799 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
78800 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
78801 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
78802 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
78803 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
78804 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
78805 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
78806 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
78807 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
78808 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
78809 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
78810 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
78811 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
78812 END DO
78813 buffer1 = 0.0_dp
78814 imax = 7*7*15
78815 kmax = 15
78816 DO i = 1, imax
78817 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
78818 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
78819 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
78820 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
78821 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
78822 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
78823 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
78824 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
78825 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
78826 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
78827 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
78828 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
78829 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
78830 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
78831 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
78832 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
78833 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
78834 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
78835 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
78836 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
78837 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
78838 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
78839 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
78840 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
78841 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
78842 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
78843 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
78844 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
78845 END DO
78846 imax = 7*7*9
78847 kmax = 15
78848 i = 0
78849 DO i1 = 1, 9
78850 DO i2 = 1, 7
78851 DO i3 = 1, 7
78852 i = i + 1
78853 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
78854 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
78855 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
78856 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
78857 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
78858 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
78859 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
78860 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
78861 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
78862 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
78863 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
78864 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
78865 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
78866 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
78867 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
78868 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
78869 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
78870 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
78871 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
78872 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
78873 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
78874 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
78875 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
78876 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
78877 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
78878 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
78879 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
78880 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
78881 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
78882 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
78883 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
78884 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
78885 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
78886 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
78887 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
78888 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
78889 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
78890 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
78891 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
78892 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
78893 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
78894 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
78895 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
78896 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
78897 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
78898 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
78899 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
78900 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
78901 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
78902 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
78903 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
78904 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
78905 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
78906 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
78907 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
78908 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
78909 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
78910 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
78911 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
78912 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
78913 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
78914 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
78915 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
78916 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
78917 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
78918 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
78919 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
78920 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
78921 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
78922 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
78923 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
78924 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
78925 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
78926 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
78927 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
78928 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
78929 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
78930 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
78931 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
78932 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
78933 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
78934 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
78935 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
78936 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
78937 END DO
78938 END DO
78939 END DO
78940 s_offset_d1 = s_offset_d1 + 9
78941 END DO
78942 s_offset_c1 = s_offset_c1 + 9
78943 END DO
78944 s_offset_b1 = s_offset_b1 + 7
78945 END DO
78946 s_offset_a1 = s_offset_a1 + 7
78947 END DO
78948 END SUBROUTINE contract_ffgg
78949#endif
78950#if __MAX_CONTR > 4 || __MAX_CONTR == 4
78951! **************************************************************************************************
78952!> \brief ...
78953!> \param work ...
78954!> \param nl_a ...
78955!> \param nl_b ...
78956!> \param nl_c ...
78957!> \param nl_d ...
78958!> \param sphi_a ...
78959!> \param sphi_b ...
78960!> \param sphi_c ...
78961!> \param sphi_d ...
78962!> \param primitives ...
78963!> \param buffer1 ...
78964!> \param buffer2 ...
78965! **************************************************************************************************
78966 SUBROUTINE contract_fgss(work, &
78967 nl_a, nl_b, nl_c, nl_d, &
78968 sphi_a, sphi_b, sphi_c, sphi_d, &
78969 primitives, &
78970 buffer1, buffer2)
78971 REAL(dp), DIMENSION(10*15*1*1), INTENT(IN) :: work
78972 INTEGER :: nl_a, nl_b, nl_c, nl_d
78973 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
78974 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
78975 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
78976 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
78977 REAL(dp), &
78978 DIMENSION(7*nl_a, 9*nl_b, 1*nl_c, 1*nl_d) :: primitives
78979 REAL(dp), DIMENSION(10*15*1*1) :: buffer1, buffer2
78980
78981 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
78982 kmax, s_offset_a1, s_offset_b1, &
78983 s_offset_c1, s_offset_d1
78984
78985 s_offset_a1 = 0
78986 DO ia = 1, nl_a
78987 s_offset_b1 = 0
78988 DO ib = 1, nl_b
78989 s_offset_c1 = 0
78990 DO ic = 1, nl_c
78991 s_offset_d1 = 0
78992 DO id = 1, nl_d
78993 buffer1 = 0.0_dp
78994 imax = 15*1*1
78995 kmax = 10
78996 DO i = 1, imax
78997 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
78998 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
78999 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
79000 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
79001 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
79002 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
79003 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
79004 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
79005 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
79006 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
79007 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
79008 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
79009 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
79010 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
79011 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
79012 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
79013 END DO
79014 buffer2 = 0.0_dp
79015 imax = 7*1*1
79016 kmax = 15
79017 DO i = 1, imax
79018 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
79019 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
79020 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
79021 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
79022 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
79023 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
79024 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
79025 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
79026 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
79027 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
79028 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
79029 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
79030 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
79031 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
79032 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
79033 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
79034 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
79035 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
79036 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
79037 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
79038 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
79039 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
79040 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
79041 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
79042 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
79043 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
79044 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
79045 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
79046 END DO
79047 buffer1 = 0.0_dp
79048 imax = 7*9*1
79049 kmax = 1
79050 DO i = 1, imax
79051 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
79052 END DO
79053 imax = 7*9*1
79054 kmax = 1
79055 i = 0
79056 DO i1 = 1, 1
79057 DO i2 = 1, 9
79058 DO i3 = 1, 7
79059 i = i + 1
79060 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
79061 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
79062 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
79063 END DO
79064 END DO
79065 END DO
79066 s_offset_d1 = s_offset_d1 + 1
79067 END DO
79068 s_offset_c1 = s_offset_c1 + 1
79069 END DO
79070 s_offset_b1 = s_offset_b1 + 9
79071 END DO
79072 s_offset_a1 = s_offset_a1 + 7
79073 END DO
79074 END SUBROUTINE contract_fgss
79075#endif
79076#if __MAX_CONTR > 4 || __MAX_CONTR == 4
79077! **************************************************************************************************
79078!> \brief ...
79079!> \param work ...
79080!> \param nl_a ...
79081!> \param nl_b ...
79082!> \param nl_c ...
79083!> \param nl_d ...
79084!> \param sphi_a ...
79085!> \param sphi_b ...
79086!> \param sphi_c ...
79087!> \param sphi_d ...
79088!> \param primitives ...
79089!> \param buffer1 ...
79090!> \param buffer2 ...
79091! **************************************************************************************************
79092 SUBROUTINE contract_fgsp(work, &
79093 nl_a, nl_b, nl_c, nl_d, &
79094 sphi_a, sphi_b, sphi_c, sphi_d, &
79095 primitives, &
79096 buffer1, buffer2)
79097 REAL(dp), DIMENSION(10*15*1*3), INTENT(IN) :: work
79098 INTEGER :: nl_a, nl_b, nl_c, nl_d
79099 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
79100 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
79101 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
79102 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
79103 REAL(dp), &
79104 DIMENSION(7*nl_a, 9*nl_b, 1*nl_c, 3*nl_d) :: primitives
79105 REAL(dp), DIMENSION(10*15*1*3) :: buffer1, buffer2
79106
79107 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
79108 kmax, s_offset_a1, s_offset_b1, &
79109 s_offset_c1, s_offset_d1
79110
79111 s_offset_a1 = 0
79112 DO ia = 1, nl_a
79113 s_offset_b1 = 0
79114 DO ib = 1, nl_b
79115 s_offset_c1 = 0
79116 DO ic = 1, nl_c
79117 s_offset_d1 = 0
79118 DO id = 1, nl_d
79119 buffer1 = 0.0_dp
79120 imax = 15*1*3
79121 kmax = 10
79122 DO i = 1, imax
79123 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
79124 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
79125 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
79126 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
79127 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
79128 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
79129 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
79130 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
79131 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
79132 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
79133 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
79134 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
79135 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
79136 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
79137 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
79138 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
79139 END DO
79140 buffer2 = 0.0_dp
79141 imax = 7*1*3
79142 kmax = 15
79143 DO i = 1, imax
79144 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
79145 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
79146 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
79147 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
79148 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
79149 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
79150 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
79151 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
79152 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
79153 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
79154 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
79155 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
79156 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
79157 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
79158 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
79159 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
79160 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
79161 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
79162 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
79163 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
79164 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
79165 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
79166 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
79167 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
79168 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
79169 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
79170 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
79171 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
79172 END DO
79173 buffer1 = 0.0_dp
79174 imax = 7*9*3
79175 kmax = 1
79176 DO i = 1, imax
79177 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
79178 END DO
79179 imax = 7*9*1
79180 kmax = 3
79181 i = 0
79182 DO i1 = 1, 1
79183 DO i2 = 1, 9
79184 DO i3 = 1, 7
79185 i = i + 1
79186 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
79187 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
79188 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
79189 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
79190 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
79191 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
79192 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
79193 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
79194 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
79195 END DO
79196 END DO
79197 END DO
79198 s_offset_d1 = s_offset_d1 + 3
79199 END DO
79200 s_offset_c1 = s_offset_c1 + 1
79201 END DO
79202 s_offset_b1 = s_offset_b1 + 9
79203 END DO
79204 s_offset_a1 = s_offset_a1 + 7
79205 END DO
79206 END SUBROUTINE contract_fgsp
79207#endif
79208#if __MAX_CONTR > 4 || __MAX_CONTR == 4
79209! **************************************************************************************************
79210!> \brief ...
79211!> \param work ...
79212!> \param nl_a ...
79213!> \param nl_b ...
79214!> \param nl_c ...
79215!> \param nl_d ...
79216!> \param sphi_a ...
79217!> \param sphi_b ...
79218!> \param sphi_c ...
79219!> \param sphi_d ...
79220!> \param primitives ...
79221!> \param buffer1 ...
79222!> \param buffer2 ...
79223! **************************************************************************************************
79224 SUBROUTINE contract_fgsd(work, &
79225 nl_a, nl_b, nl_c, nl_d, &
79226 sphi_a, sphi_b, sphi_c, sphi_d, &
79227 primitives, &
79228 buffer1, buffer2)
79229 REAL(dp), DIMENSION(10*15*1*6), INTENT(IN) :: work
79230 INTEGER :: nl_a, nl_b, nl_c, nl_d
79231 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
79232 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
79233 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
79234 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
79235 REAL(dp), &
79236 DIMENSION(7*nl_a, 9*nl_b, 1*nl_c, 5*nl_d) :: primitives
79237 REAL(dp), DIMENSION(10*15*1*6) :: buffer1, buffer2
79238
79239 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
79240 kmax, s_offset_a1, s_offset_b1, &
79241 s_offset_c1, s_offset_d1
79242
79243 s_offset_a1 = 0
79244 DO ia = 1, nl_a
79245 s_offset_b1 = 0
79246 DO ib = 1, nl_b
79247 s_offset_c1 = 0
79248 DO ic = 1, nl_c
79249 s_offset_d1 = 0
79250 DO id = 1, nl_d
79251 buffer1 = 0.0_dp
79252 imax = 15*1*6
79253 kmax = 10
79254 DO i = 1, imax
79255 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
79256 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
79257 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
79258 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
79259 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
79260 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
79261 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
79262 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
79263 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
79264 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
79265 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
79266 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
79267 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
79268 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
79269 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
79270 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
79271 END DO
79272 buffer2 = 0.0_dp
79273 imax = 7*1*6
79274 kmax = 15
79275 DO i = 1, imax
79276 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
79277 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
79278 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
79279 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
79280 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
79281 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
79282 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
79283 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
79284 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
79285 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
79286 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
79287 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
79288 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
79289 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
79290 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
79291 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
79292 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
79293 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
79294 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
79295 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
79296 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
79297 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
79298 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
79299 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
79300 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
79301 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
79302 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
79303 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
79304 END DO
79305 buffer1 = 0.0_dp
79306 imax = 7*9*6
79307 kmax = 1
79308 DO i = 1, imax
79309 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
79310 END DO
79311 imax = 7*9*1
79312 kmax = 6
79313 i = 0
79314 DO i1 = 1, 1
79315 DO i2 = 1, 9
79316 DO i3 = 1, 7
79317 i = i + 1
79318 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
79319 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
79320 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
79321 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
79322 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
79323 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
79324 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
79325 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
79326 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
79327 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
79328 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
79329 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
79330 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
79331 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
79332 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
79333 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
79334 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
79335 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
79336 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
79337 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
79338 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
79339 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
79340 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
79341 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
79342 END DO
79343 END DO
79344 END DO
79345 s_offset_d1 = s_offset_d1 + 5
79346 END DO
79347 s_offset_c1 = s_offset_c1 + 1
79348 END DO
79349 s_offset_b1 = s_offset_b1 + 9
79350 END DO
79351 s_offset_a1 = s_offset_a1 + 7
79352 END DO
79353 END SUBROUTINE contract_fgsd
79354#endif
79355#if __MAX_CONTR > 4 || __MAX_CONTR == 4
79356! **************************************************************************************************
79357!> \brief ...
79358!> \param work ...
79359!> \param nl_a ...
79360!> \param nl_b ...
79361!> \param nl_c ...
79362!> \param nl_d ...
79363!> \param sphi_a ...
79364!> \param sphi_b ...
79365!> \param sphi_c ...
79366!> \param sphi_d ...
79367!> \param primitives ...
79368!> \param buffer1 ...
79369!> \param buffer2 ...
79370! **************************************************************************************************
79371 SUBROUTINE contract_fgsf(work, &
79372 nl_a, nl_b, nl_c, nl_d, &
79373 sphi_a, sphi_b, sphi_c, sphi_d, &
79374 primitives, &
79375 buffer1, buffer2)
79376 REAL(dp), DIMENSION(10*15*1*10), INTENT(IN) :: work
79377 INTEGER :: nl_a, nl_b, nl_c, nl_d
79378 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
79379 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
79380 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
79381 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
79382 REAL(dp), &
79383 DIMENSION(7*nl_a, 9*nl_b, 1*nl_c, 7*nl_d) :: primitives
79384 REAL(dp), DIMENSION(10*15*1*10) :: buffer1, buffer2
79385
79386 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
79387 kmax, s_offset_a1, s_offset_b1, &
79388 s_offset_c1, s_offset_d1
79389
79390 s_offset_a1 = 0
79391 DO ia = 1, nl_a
79392 s_offset_b1 = 0
79393 DO ib = 1, nl_b
79394 s_offset_c1 = 0
79395 DO ic = 1, nl_c
79396 s_offset_d1 = 0
79397 DO id = 1, nl_d
79398 buffer1 = 0.0_dp
79399 imax = 15*1*10
79400 kmax = 10
79401 DO i = 1, imax
79402 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
79403 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
79404 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
79405 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
79406 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
79407 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
79408 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
79409 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
79410 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
79411 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
79412 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
79413 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
79414 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
79415 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
79416 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
79417 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
79418 END DO
79419 buffer2 = 0.0_dp
79420 imax = 7*1*10
79421 kmax = 15
79422 DO i = 1, imax
79423 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
79424 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
79425 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
79426 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
79427 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
79428 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
79429 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
79430 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
79431 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
79432 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
79433 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
79434 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
79435 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
79436 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
79437 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
79438 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
79439 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
79440 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
79441 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
79442 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
79443 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
79444 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
79445 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
79446 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
79447 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
79448 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
79449 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
79450 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
79451 END DO
79452 buffer1 = 0.0_dp
79453 imax = 7*9*10
79454 kmax = 1
79455 DO i = 1, imax
79456 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
79457 END DO
79458 imax = 7*9*1
79459 kmax = 10
79460 i = 0
79461 DO i1 = 1, 1
79462 DO i2 = 1, 9
79463 DO i3 = 1, 7
79464 i = i + 1
79465 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
79466 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
79467 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
79468 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
79469 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
79470 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
79471 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
79472 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
79473 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
79474 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
79475 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
79476 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
79477 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
79478 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
79479 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
79480 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
79481 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
79482 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
79483 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
79484 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
79485 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
79486 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
79487 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
79488 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
79489 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
79490 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
79491 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
79492 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
79493 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
79494 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
79495 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
79496 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
79497 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
79498 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
79499 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
79500 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
79501 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
79502 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
79503 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
79504 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
79505 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
79506 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
79507 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
79508 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
79509 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
79510 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
79511 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
79512 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
79513 END DO
79514 END DO
79515 END DO
79516 s_offset_d1 = s_offset_d1 + 7
79517 END DO
79518 s_offset_c1 = s_offset_c1 + 1
79519 END DO
79520 s_offset_b1 = s_offset_b1 + 9
79521 END DO
79522 s_offset_a1 = s_offset_a1 + 7
79523 END DO
79524 END SUBROUTINE contract_fgsf
79525#endif
79526#if __MAX_CONTR > 4 || __MAX_CONTR == 4
79527! **************************************************************************************************
79528!> \brief ...
79529!> \param work ...
79530!> \param nl_a ...
79531!> \param nl_b ...
79532!> \param nl_c ...
79533!> \param nl_d ...
79534!> \param sphi_a ...
79535!> \param sphi_b ...
79536!> \param sphi_c ...
79537!> \param sphi_d ...
79538!> \param primitives ...
79539!> \param buffer1 ...
79540!> \param buffer2 ...
79541! **************************************************************************************************
79542 SUBROUTINE contract_fgsg(work, &
79543 nl_a, nl_b, nl_c, nl_d, &
79544 sphi_a, sphi_b, sphi_c, sphi_d, &
79545 primitives, &
79546 buffer1, buffer2)
79547 REAL(dp), DIMENSION(10*15*1*15), INTENT(IN) :: work
79548 INTEGER :: nl_a, nl_b, nl_c, nl_d
79549 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
79550 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
79551 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
79552 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
79553 REAL(dp), &
79554 DIMENSION(7*nl_a, 9*nl_b, 1*nl_c, 9*nl_d) :: primitives
79555 REAL(dp), DIMENSION(10*15*1*15) :: buffer1, buffer2
79556
79557 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
79558 kmax, s_offset_a1, s_offset_b1, &
79559 s_offset_c1, s_offset_d1
79560
79561 s_offset_a1 = 0
79562 DO ia = 1, nl_a
79563 s_offset_b1 = 0
79564 DO ib = 1, nl_b
79565 s_offset_c1 = 0
79566 DO ic = 1, nl_c
79567 s_offset_d1 = 0
79568 DO id = 1, nl_d
79569 buffer1 = 0.0_dp
79570 imax = 15*1*15
79571 kmax = 10
79572 DO i = 1, imax
79573 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
79574 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
79575 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
79576 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
79577 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
79578 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
79579 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
79580 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
79581 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
79582 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
79583 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
79584 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
79585 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
79586 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
79587 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
79588 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
79589 END DO
79590 buffer2 = 0.0_dp
79591 imax = 7*1*15
79592 kmax = 15
79593 DO i = 1, imax
79594 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
79595 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
79596 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
79597 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
79598 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
79599 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
79600 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
79601 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
79602 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
79603 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
79604 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
79605 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
79606 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
79607 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
79608 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
79609 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
79610 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
79611 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
79612 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
79613 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
79614 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
79615 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
79616 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
79617 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
79618 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
79619 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
79620 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
79621 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
79622 END DO
79623 buffer1 = 0.0_dp
79624 imax = 7*9*15
79625 kmax = 1
79626 DO i = 1, imax
79627 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
79628 END DO
79629 imax = 7*9*1
79630 kmax = 15
79631 i = 0
79632 DO i1 = 1, 1
79633 DO i2 = 1, 9
79634 DO i3 = 1, 7
79635 i = i + 1
79636 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
79637 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
79638 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
79639 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
79640 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
79641 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
79642 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
79643 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
79644 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
79645 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
79646 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
79647 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
79648 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
79649 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
79650 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
79651 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
79652 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
79653 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
79654 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
79655 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
79656 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
79657 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
79658 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
79659 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
79660 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
79661 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
79662 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
79663 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
79664 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
79665 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
79666 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
79667 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
79668 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
79669 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
79670 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
79671 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
79672 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
79673 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
79674 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
79675 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
79676 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
79677 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
79678 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
79679 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
79680 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
79681 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
79682 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
79683 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
79684 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
79685 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
79686 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
79687 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
79688 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
79689 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
79690 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
79691 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
79692 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
79693 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
79694 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
79695 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
79696 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
79697 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
79698 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
79699 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
79700 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
79701 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
79702 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
79703 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
79704 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
79705 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
79706 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
79707 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
79708 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
79709 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
79710 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
79711 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
79712 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
79713 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
79714 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
79715 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
79716 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
79717 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
79718 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
79719 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
79720 END DO
79721 END DO
79722 END DO
79723 s_offset_d1 = s_offset_d1 + 9
79724 END DO
79725 s_offset_c1 = s_offset_c1 + 1
79726 END DO
79727 s_offset_b1 = s_offset_b1 + 9
79728 END DO
79729 s_offset_a1 = s_offset_a1 + 7
79730 END DO
79731 END SUBROUTINE contract_fgsg
79732#endif
79733#if __MAX_CONTR > 4 || __MAX_CONTR == 4
79734! **************************************************************************************************
79735!> \brief ...
79736!> \param work ...
79737!> \param nl_a ...
79738!> \param nl_b ...
79739!> \param nl_c ...
79740!> \param nl_d ...
79741!> \param sphi_a ...
79742!> \param sphi_b ...
79743!> \param sphi_c ...
79744!> \param sphi_d ...
79745!> \param primitives ...
79746!> \param buffer1 ...
79747!> \param buffer2 ...
79748! **************************************************************************************************
79749 SUBROUTINE contract_fgps(work, &
79750 nl_a, nl_b, nl_c, nl_d, &
79751 sphi_a, sphi_b, sphi_c, sphi_d, &
79752 primitives, &
79753 buffer1, buffer2)
79754 REAL(dp), DIMENSION(10*15*3*1), INTENT(IN) :: work
79755 INTEGER :: nl_a, nl_b, nl_c, nl_d
79756 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
79757 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
79758 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
79759 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
79760 REAL(dp), &
79761 DIMENSION(7*nl_a, 9*nl_b, 3*nl_c, 1*nl_d) :: primitives
79762 REAL(dp), DIMENSION(10*15*3*1) :: buffer1, buffer2
79763
79764 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
79765 kmax, s_offset_a1, s_offset_b1, &
79766 s_offset_c1, s_offset_d1
79767
79768 s_offset_a1 = 0
79769 DO ia = 1, nl_a
79770 s_offset_b1 = 0
79771 DO ib = 1, nl_b
79772 s_offset_c1 = 0
79773 DO ic = 1, nl_c
79774 s_offset_d1 = 0
79775 DO id = 1, nl_d
79776 buffer1 = 0.0_dp
79777 imax = 15*3*1
79778 kmax = 10
79779 DO i = 1, imax
79780 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
79781 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
79782 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
79783 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
79784 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
79785 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
79786 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
79787 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
79788 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
79789 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
79790 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
79791 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
79792 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
79793 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
79794 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
79795 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
79796 END DO
79797 buffer2 = 0.0_dp
79798 imax = 7*3*1
79799 kmax = 15
79800 DO i = 1, imax
79801 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
79802 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
79803 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
79804 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
79805 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
79806 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
79807 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
79808 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
79809 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
79810 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
79811 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
79812 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
79813 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
79814 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
79815 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
79816 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
79817 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
79818 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
79819 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
79820 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
79821 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
79822 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
79823 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
79824 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
79825 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
79826 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
79827 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
79828 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
79829 END DO
79830 buffer1 = 0.0_dp
79831 imax = 7*9*1
79832 kmax = 3
79833 DO i = 1, imax
79834 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
79835 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
79836 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
79837 END DO
79838 imax = 7*9*3
79839 kmax = 1
79840 i = 0
79841 DO i1 = 1, 3
79842 DO i2 = 1, 9
79843 DO i3 = 1, 7
79844 i = i + 1
79845 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
79846 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
79847 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
79848 END DO
79849 END DO
79850 END DO
79851 s_offset_d1 = s_offset_d1 + 1
79852 END DO
79853 s_offset_c1 = s_offset_c1 + 3
79854 END DO
79855 s_offset_b1 = s_offset_b1 + 9
79856 END DO
79857 s_offset_a1 = s_offset_a1 + 7
79858 END DO
79859 END SUBROUTINE contract_fgps
79860#endif
79861#if __MAX_CONTR > 4 || __MAX_CONTR == 4
79862! **************************************************************************************************
79863!> \brief ...
79864!> \param work ...
79865!> \param nl_a ...
79866!> \param nl_b ...
79867!> \param nl_c ...
79868!> \param nl_d ...
79869!> \param sphi_a ...
79870!> \param sphi_b ...
79871!> \param sphi_c ...
79872!> \param sphi_d ...
79873!> \param primitives ...
79874!> \param buffer1 ...
79875!> \param buffer2 ...
79876! **************************************************************************************************
79877 SUBROUTINE contract_fgpp(work, &
79878 nl_a, nl_b, nl_c, nl_d, &
79879 sphi_a, sphi_b, sphi_c, sphi_d, &
79880 primitives, &
79881 buffer1, buffer2)
79882 REAL(dp), DIMENSION(10*15*3*3), INTENT(IN) :: work
79883 INTEGER :: nl_a, nl_b, nl_c, nl_d
79884 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
79885 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
79886 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
79887 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
79888 REAL(dp), &
79889 DIMENSION(7*nl_a, 9*nl_b, 3*nl_c, 3*nl_d) :: primitives
79890 REAL(dp), DIMENSION(10*15*3*3) :: buffer1, buffer2
79891
79892 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
79893 kmax, s_offset_a1, s_offset_b1, &
79894 s_offset_c1, s_offset_d1
79895
79896 s_offset_a1 = 0
79897 DO ia = 1, nl_a
79898 s_offset_b1 = 0
79899 DO ib = 1, nl_b
79900 s_offset_c1 = 0
79901 DO ic = 1, nl_c
79902 s_offset_d1 = 0
79903 DO id = 1, nl_d
79904 buffer1 = 0.0_dp
79905 imax = 15*3*3
79906 kmax = 10
79907 DO i = 1, imax
79908 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
79909 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
79910 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
79911 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
79912 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
79913 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
79914 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
79915 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
79916 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
79917 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
79918 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
79919 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
79920 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
79921 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
79922 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
79923 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
79924 END DO
79925 buffer2 = 0.0_dp
79926 imax = 7*3*3
79927 kmax = 15
79928 DO i = 1, imax
79929 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
79930 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
79931 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
79932 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
79933 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
79934 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
79935 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
79936 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
79937 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
79938 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
79939 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
79940 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
79941 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
79942 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
79943 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
79944 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
79945 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
79946 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
79947 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
79948 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
79949 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
79950 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
79951 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
79952 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
79953 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
79954 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
79955 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
79956 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
79957 END DO
79958 buffer1 = 0.0_dp
79959 imax = 7*9*3
79960 kmax = 3
79961 DO i = 1, imax
79962 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
79963 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
79964 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
79965 END DO
79966 imax = 7*9*3
79967 kmax = 3
79968 i = 0
79969 DO i1 = 1, 3
79970 DO i2 = 1, 9
79971 DO i3 = 1, 7
79972 i = i + 1
79973 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
79974 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
79975 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
79976 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
79977 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
79978 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
79979 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
79980 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
79981 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
79982 END DO
79983 END DO
79984 END DO
79985 s_offset_d1 = s_offset_d1 + 3
79986 END DO
79987 s_offset_c1 = s_offset_c1 + 3
79988 END DO
79989 s_offset_b1 = s_offset_b1 + 9
79990 END DO
79991 s_offset_a1 = s_offset_a1 + 7
79992 END DO
79993 END SUBROUTINE contract_fgpp
79994#endif
79995#if __MAX_CONTR > 4 || __MAX_CONTR == 4
79996! **************************************************************************************************
79997!> \brief ...
79998!> \param work ...
79999!> \param nl_a ...
80000!> \param nl_b ...
80001!> \param nl_c ...
80002!> \param nl_d ...
80003!> \param sphi_a ...
80004!> \param sphi_b ...
80005!> \param sphi_c ...
80006!> \param sphi_d ...
80007!> \param primitives ...
80008!> \param buffer1 ...
80009!> \param buffer2 ...
80010! **************************************************************************************************
80011 SUBROUTINE contract_fgpd(work, &
80012 nl_a, nl_b, nl_c, nl_d, &
80013 sphi_a, sphi_b, sphi_c, sphi_d, &
80014 primitives, &
80015 buffer1, buffer2)
80016 REAL(dp), DIMENSION(10*15*3*6), INTENT(IN) :: work
80017 INTEGER :: nl_a, nl_b, nl_c, nl_d
80018 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
80019 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
80020 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
80021 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
80022 REAL(dp), &
80023 DIMENSION(7*nl_a, 9*nl_b, 3*nl_c, 5*nl_d) :: primitives
80024 REAL(dp), DIMENSION(10*15*3*6) :: buffer1, buffer2
80025
80026 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
80027 kmax, s_offset_a1, s_offset_b1, &
80028 s_offset_c1, s_offset_d1
80029
80030 s_offset_a1 = 0
80031 DO ia = 1, nl_a
80032 s_offset_b1 = 0
80033 DO ib = 1, nl_b
80034 s_offset_c1 = 0
80035 DO ic = 1, nl_c
80036 s_offset_d1 = 0
80037 DO id = 1, nl_d
80038 buffer1 = 0.0_dp
80039 imax = 15*3*6
80040 kmax = 10
80041 DO i = 1, imax
80042 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
80043 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
80044 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
80045 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
80046 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
80047 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
80048 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
80049 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
80050 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
80051 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
80052 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
80053 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
80054 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
80055 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
80056 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
80057 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
80058 END DO
80059 buffer2 = 0.0_dp
80060 imax = 7*3*6
80061 kmax = 15
80062 DO i = 1, imax
80063 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
80064 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
80065 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
80066 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
80067 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
80068 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
80069 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
80070 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
80071 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
80072 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
80073 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
80074 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
80075 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
80076 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
80077 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
80078 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
80079 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
80080 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
80081 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
80082 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
80083 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
80084 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
80085 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
80086 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
80087 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
80088 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
80089 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
80090 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
80091 END DO
80092 buffer1 = 0.0_dp
80093 imax = 7*9*6
80094 kmax = 3
80095 DO i = 1, imax
80096 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
80097 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
80098 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
80099 END DO
80100 imax = 7*9*3
80101 kmax = 6
80102 i = 0
80103 DO i1 = 1, 3
80104 DO i2 = 1, 9
80105 DO i3 = 1, 7
80106 i = i + 1
80107 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
80108 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
80109 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
80110 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
80111 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
80112 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
80113 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
80114 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
80115 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
80116 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
80117 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
80118 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
80119 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
80120 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
80121 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
80122 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
80123 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
80124 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
80125 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
80126 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
80127 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
80128 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
80129 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
80130 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
80131 END DO
80132 END DO
80133 END DO
80134 s_offset_d1 = s_offset_d1 + 5
80135 END DO
80136 s_offset_c1 = s_offset_c1 + 3
80137 END DO
80138 s_offset_b1 = s_offset_b1 + 9
80139 END DO
80140 s_offset_a1 = s_offset_a1 + 7
80141 END DO
80142 END SUBROUTINE contract_fgpd
80143#endif
80144#if __MAX_CONTR > 4 || __MAX_CONTR == 4
80145! **************************************************************************************************
80146!> \brief ...
80147!> \param work ...
80148!> \param nl_a ...
80149!> \param nl_b ...
80150!> \param nl_c ...
80151!> \param nl_d ...
80152!> \param sphi_a ...
80153!> \param sphi_b ...
80154!> \param sphi_c ...
80155!> \param sphi_d ...
80156!> \param primitives ...
80157!> \param buffer1 ...
80158!> \param buffer2 ...
80159! **************************************************************************************************
80160 SUBROUTINE contract_fgpf(work, &
80161 nl_a, nl_b, nl_c, nl_d, &
80162 sphi_a, sphi_b, sphi_c, sphi_d, &
80163 primitives, &
80164 buffer1, buffer2)
80165 REAL(dp), DIMENSION(10*15*3*10), INTENT(IN) :: work
80166 INTEGER :: nl_a, nl_b, nl_c, nl_d
80167 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
80168 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
80169 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
80170 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
80171 REAL(dp), &
80172 DIMENSION(7*nl_a, 9*nl_b, 3*nl_c, 7*nl_d) :: primitives
80173 REAL(dp), DIMENSION(10*15*3*10) :: buffer1, buffer2
80174
80175 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
80176 kmax, s_offset_a1, s_offset_b1, &
80177 s_offset_c1, s_offset_d1
80178
80179 s_offset_a1 = 0
80180 DO ia = 1, nl_a
80181 s_offset_b1 = 0
80182 DO ib = 1, nl_b
80183 s_offset_c1 = 0
80184 DO ic = 1, nl_c
80185 s_offset_d1 = 0
80186 DO id = 1, nl_d
80187 buffer1 = 0.0_dp
80188 imax = 15*3*10
80189 kmax = 10
80190 DO i = 1, imax
80191 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
80192 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
80193 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
80194 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
80195 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
80196 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
80197 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
80198 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
80199 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
80200 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
80201 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
80202 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
80203 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
80204 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
80205 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
80206 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
80207 END DO
80208 buffer2 = 0.0_dp
80209 imax = 7*3*10
80210 kmax = 15
80211 DO i = 1, imax
80212 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
80213 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
80214 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
80215 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
80216 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
80217 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
80218 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
80219 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
80220 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
80221 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
80222 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
80223 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
80224 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
80225 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
80226 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
80227 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
80228 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
80229 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
80230 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
80231 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
80232 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
80233 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
80234 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
80235 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
80236 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
80237 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
80238 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
80239 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
80240 END DO
80241 buffer1 = 0.0_dp
80242 imax = 7*9*10
80243 kmax = 3
80244 DO i = 1, imax
80245 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
80246 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
80247 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
80248 END DO
80249 imax = 7*9*3
80250 kmax = 10
80251 i = 0
80252 DO i1 = 1, 3
80253 DO i2 = 1, 9
80254 DO i3 = 1, 7
80255 i = i + 1
80256 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
80257 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
80258 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
80259 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
80260 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
80261 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
80262 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
80263 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
80264 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
80265 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
80266 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
80267 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
80268 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
80269 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
80270 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
80271 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
80272 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
80273 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
80274 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
80275 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
80276 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
80277 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
80278 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
80279 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
80280 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
80281 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
80282 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
80283 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
80284 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
80285 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
80286 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
80287 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
80288 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
80289 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
80290 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
80291 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
80292 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
80293 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
80294 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
80295 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
80296 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
80297 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
80298 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
80299 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
80300 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
80301 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
80302 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
80303 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
80304 END DO
80305 END DO
80306 END DO
80307 s_offset_d1 = s_offset_d1 + 7
80308 END DO
80309 s_offset_c1 = s_offset_c1 + 3
80310 END DO
80311 s_offset_b1 = s_offset_b1 + 9
80312 END DO
80313 s_offset_a1 = s_offset_a1 + 7
80314 END DO
80315 END SUBROUTINE contract_fgpf
80316#endif
80317#if __MAX_CONTR > 4 || __MAX_CONTR == 4
80318! **************************************************************************************************
80319!> \brief ...
80320!> \param work ...
80321!> \param nl_a ...
80322!> \param nl_b ...
80323!> \param nl_c ...
80324!> \param nl_d ...
80325!> \param sphi_a ...
80326!> \param sphi_b ...
80327!> \param sphi_c ...
80328!> \param sphi_d ...
80329!> \param primitives ...
80330!> \param buffer1 ...
80331!> \param buffer2 ...
80332! **************************************************************************************************
80333 SUBROUTINE contract_fgpg(work, &
80334 nl_a, nl_b, nl_c, nl_d, &
80335 sphi_a, sphi_b, sphi_c, sphi_d, &
80336 primitives, &
80337 buffer1, buffer2)
80338 REAL(dp), DIMENSION(10*15*3*15), INTENT(IN) :: work
80339 INTEGER :: nl_a, nl_b, nl_c, nl_d
80340 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
80341 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
80342 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
80343 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
80344 REAL(dp), &
80345 DIMENSION(7*nl_a, 9*nl_b, 3*nl_c, 9*nl_d) :: primitives
80346 REAL(dp), DIMENSION(10*15*3*15) :: buffer1, buffer2
80347
80348 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
80349 kmax, s_offset_a1, s_offset_b1, &
80350 s_offset_c1, s_offset_d1
80351
80352 s_offset_a1 = 0
80353 DO ia = 1, nl_a
80354 s_offset_b1 = 0
80355 DO ib = 1, nl_b
80356 s_offset_c1 = 0
80357 DO ic = 1, nl_c
80358 s_offset_d1 = 0
80359 DO id = 1, nl_d
80360 buffer1 = 0.0_dp
80361 imax = 15*3*15
80362 kmax = 10
80363 DO i = 1, imax
80364 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
80365 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
80366 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
80367 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
80368 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
80369 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
80370 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
80371 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
80372 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
80373 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
80374 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
80375 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
80376 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
80377 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
80378 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
80379 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
80380 END DO
80381 buffer2 = 0.0_dp
80382 imax = 7*3*15
80383 kmax = 15
80384 DO i = 1, imax
80385 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
80386 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
80387 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
80388 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
80389 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
80390 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
80391 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
80392 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
80393 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
80394 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
80395 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
80396 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
80397 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
80398 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
80399 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
80400 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
80401 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
80402 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
80403 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
80404 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
80405 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
80406 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
80407 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
80408 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
80409 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
80410 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
80411 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
80412 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
80413 END DO
80414 buffer1 = 0.0_dp
80415 imax = 7*9*15
80416 kmax = 3
80417 DO i = 1, imax
80418 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
80419 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
80420 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
80421 END DO
80422 imax = 7*9*3
80423 kmax = 15
80424 i = 0
80425 DO i1 = 1, 3
80426 DO i2 = 1, 9
80427 DO i3 = 1, 7
80428 i = i + 1
80429 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
80430 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
80431 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
80432 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
80433 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
80434 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
80435 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
80436 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
80437 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
80438 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
80439 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
80440 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
80441 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
80442 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
80443 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
80444 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
80445 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
80446 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
80447 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
80448 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
80449 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
80450 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
80451 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
80452 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
80453 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
80454 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
80455 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
80456 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
80457 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
80458 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
80459 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
80460 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
80461 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
80462 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
80463 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
80464 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
80465 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
80466 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
80467 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
80468 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
80469 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
80470 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
80471 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
80472 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
80473 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
80474 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
80475 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
80476 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
80477 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
80478 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
80479 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
80480 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
80481 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
80482 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
80483 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
80484 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
80485 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
80486 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
80487 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
80488 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
80489 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
80490 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
80491 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
80492 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
80493 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
80494 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
80495 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
80496 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
80497 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
80498 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
80499 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
80500 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
80501 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
80502 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
80503 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
80504 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
80505 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
80506 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
80507 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
80508 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
80509 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
80510 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
80511 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
80512 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
80513 END DO
80514 END DO
80515 END DO
80516 s_offset_d1 = s_offset_d1 + 9
80517 END DO
80518 s_offset_c1 = s_offset_c1 + 3
80519 END DO
80520 s_offset_b1 = s_offset_b1 + 9
80521 END DO
80522 s_offset_a1 = s_offset_a1 + 7
80523 END DO
80524 END SUBROUTINE contract_fgpg
80525#endif
80526#if __MAX_CONTR > 4 || __MAX_CONTR == 4
80527! **************************************************************************************************
80528!> \brief ...
80529!> \param work ...
80530!> \param nl_a ...
80531!> \param nl_b ...
80532!> \param nl_c ...
80533!> \param nl_d ...
80534!> \param sphi_a ...
80535!> \param sphi_b ...
80536!> \param sphi_c ...
80537!> \param sphi_d ...
80538!> \param primitives ...
80539!> \param buffer1 ...
80540!> \param buffer2 ...
80541! **************************************************************************************************
80542 SUBROUTINE contract_fgds(work, &
80543 nl_a, nl_b, nl_c, nl_d, &
80544 sphi_a, sphi_b, sphi_c, sphi_d, &
80545 primitives, &
80546 buffer1, buffer2)
80547 REAL(dp), DIMENSION(10*15*6*1), INTENT(IN) :: work
80548 INTEGER :: nl_a, nl_b, nl_c, nl_d
80549 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
80550 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
80551 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
80552 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
80553 REAL(dp), &
80554 DIMENSION(7*nl_a, 9*nl_b, 5*nl_c, 1*nl_d) :: primitives
80555 REAL(dp), DIMENSION(10*15*6*1) :: buffer1, buffer2
80556
80557 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
80558 kmax, s_offset_a1, s_offset_b1, &
80559 s_offset_c1, s_offset_d1
80560
80561 s_offset_a1 = 0
80562 DO ia = 1, nl_a
80563 s_offset_b1 = 0
80564 DO ib = 1, nl_b
80565 s_offset_c1 = 0
80566 DO ic = 1, nl_c
80567 s_offset_d1 = 0
80568 DO id = 1, nl_d
80569 buffer1 = 0.0_dp
80570 imax = 15*6*1
80571 kmax = 10
80572 DO i = 1, imax
80573 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
80574 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
80575 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
80576 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
80577 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
80578 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
80579 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
80580 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
80581 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
80582 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
80583 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
80584 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
80585 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
80586 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
80587 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
80588 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
80589 END DO
80590 buffer2 = 0.0_dp
80591 imax = 7*6*1
80592 kmax = 15
80593 DO i = 1, imax
80594 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
80595 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
80596 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
80597 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
80598 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
80599 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
80600 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
80601 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
80602 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
80603 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
80604 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
80605 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
80606 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
80607 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
80608 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
80609 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
80610 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
80611 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
80612 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
80613 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
80614 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
80615 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
80616 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
80617 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
80618 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
80619 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
80620 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
80621 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
80622 END DO
80623 buffer1 = 0.0_dp
80624 imax = 7*9*1
80625 kmax = 6
80626 DO i = 1, imax
80627 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
80628 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
80629 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
80630 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
80631 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
80632 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
80633 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
80634 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
80635 END DO
80636 imax = 7*9*5
80637 kmax = 1
80638 i = 0
80639 DO i1 = 1, 5
80640 DO i2 = 1, 9
80641 DO i3 = 1, 7
80642 i = i + 1
80643 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
80644 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
80645 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
80646 END DO
80647 END DO
80648 END DO
80649 s_offset_d1 = s_offset_d1 + 1
80650 END DO
80651 s_offset_c1 = s_offset_c1 + 5
80652 END DO
80653 s_offset_b1 = s_offset_b1 + 9
80654 END DO
80655 s_offset_a1 = s_offset_a1 + 7
80656 END DO
80657 END SUBROUTINE contract_fgds
80658#endif
80659#if __MAX_CONTR > 4 || __MAX_CONTR == 4
80660! **************************************************************************************************
80661!> \brief ...
80662!> \param work ...
80663!> \param nl_a ...
80664!> \param nl_b ...
80665!> \param nl_c ...
80666!> \param nl_d ...
80667!> \param sphi_a ...
80668!> \param sphi_b ...
80669!> \param sphi_c ...
80670!> \param sphi_d ...
80671!> \param primitives ...
80672!> \param buffer1 ...
80673!> \param buffer2 ...
80674! **************************************************************************************************
80675 SUBROUTINE contract_fgdp(work, &
80676 nl_a, nl_b, nl_c, nl_d, &
80677 sphi_a, sphi_b, sphi_c, sphi_d, &
80678 primitives, &
80679 buffer1, buffer2)
80680 REAL(dp), DIMENSION(10*15*6*3), INTENT(IN) :: work
80681 INTEGER :: nl_a, nl_b, nl_c, nl_d
80682 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
80683 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
80684 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
80685 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
80686 REAL(dp), &
80687 DIMENSION(7*nl_a, 9*nl_b, 5*nl_c, 3*nl_d) :: primitives
80688 REAL(dp), DIMENSION(10*15*6*3) :: buffer1, buffer2
80689
80690 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
80691 kmax, s_offset_a1, s_offset_b1, &
80692 s_offset_c1, s_offset_d1
80693
80694 s_offset_a1 = 0
80695 DO ia = 1, nl_a
80696 s_offset_b1 = 0
80697 DO ib = 1, nl_b
80698 s_offset_c1 = 0
80699 DO ic = 1, nl_c
80700 s_offset_d1 = 0
80701 DO id = 1, nl_d
80702 buffer1 = 0.0_dp
80703 imax = 15*6*3
80704 kmax = 10
80705 DO i = 1, imax
80706 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
80707 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
80708 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
80709 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
80710 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
80711 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
80712 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
80713 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
80714 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
80715 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
80716 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
80717 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
80718 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
80719 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
80720 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
80721 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
80722 END DO
80723 buffer2 = 0.0_dp
80724 imax = 7*6*3
80725 kmax = 15
80726 DO i = 1, imax
80727 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
80728 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
80729 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
80730 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
80731 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
80732 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
80733 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
80734 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
80735 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
80736 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
80737 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
80738 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
80739 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
80740 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
80741 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
80742 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
80743 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
80744 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
80745 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
80746 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
80747 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
80748 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
80749 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
80750 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
80751 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
80752 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
80753 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
80754 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
80755 END DO
80756 buffer1 = 0.0_dp
80757 imax = 7*9*3
80758 kmax = 6
80759 DO i = 1, imax
80760 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
80761 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
80762 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
80763 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
80764 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
80765 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
80766 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
80767 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
80768 END DO
80769 imax = 7*9*5
80770 kmax = 3
80771 i = 0
80772 DO i1 = 1, 5
80773 DO i2 = 1, 9
80774 DO i3 = 1, 7
80775 i = i + 1
80776 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
80777 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
80778 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
80779 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
80780 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
80781 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
80782 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
80783 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
80784 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
80785 END DO
80786 END DO
80787 END DO
80788 s_offset_d1 = s_offset_d1 + 3
80789 END DO
80790 s_offset_c1 = s_offset_c1 + 5
80791 END DO
80792 s_offset_b1 = s_offset_b1 + 9
80793 END DO
80794 s_offset_a1 = s_offset_a1 + 7
80795 END DO
80796 END SUBROUTINE contract_fgdp
80797#endif
80798#if __MAX_CONTR > 4 || __MAX_CONTR == 4
80799! **************************************************************************************************
80800!> \brief ...
80801!> \param work ...
80802!> \param nl_a ...
80803!> \param nl_b ...
80804!> \param nl_c ...
80805!> \param nl_d ...
80806!> \param sphi_a ...
80807!> \param sphi_b ...
80808!> \param sphi_c ...
80809!> \param sphi_d ...
80810!> \param primitives ...
80811!> \param buffer1 ...
80812!> \param buffer2 ...
80813! **************************************************************************************************
80814 SUBROUTINE contract_fgdd(work, &
80815 nl_a, nl_b, nl_c, nl_d, &
80816 sphi_a, sphi_b, sphi_c, sphi_d, &
80817 primitives, &
80818 buffer1, buffer2)
80819 REAL(dp), DIMENSION(10*15*6*6), INTENT(IN) :: work
80820 INTEGER :: nl_a, nl_b, nl_c, nl_d
80821 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
80822 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
80823 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
80824 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
80825 REAL(dp), &
80826 DIMENSION(7*nl_a, 9*nl_b, 5*nl_c, 5*nl_d) :: primitives
80827 REAL(dp), DIMENSION(10*15*6*6) :: buffer1, buffer2
80828
80829 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
80830 kmax, s_offset_a1, s_offset_b1, &
80831 s_offset_c1, s_offset_d1
80832
80833 s_offset_a1 = 0
80834 DO ia = 1, nl_a
80835 s_offset_b1 = 0
80836 DO ib = 1, nl_b
80837 s_offset_c1 = 0
80838 DO ic = 1, nl_c
80839 s_offset_d1 = 0
80840 DO id = 1, nl_d
80841 buffer1 = 0.0_dp
80842 imax = 15*6*6
80843 kmax = 10
80844 DO i = 1, imax
80845 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
80846 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
80847 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
80848 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
80849 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
80850 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
80851 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
80852 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
80853 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
80854 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
80855 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
80856 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
80857 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
80858 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
80859 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
80860 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
80861 END DO
80862 buffer2 = 0.0_dp
80863 imax = 7*6*6
80864 kmax = 15
80865 DO i = 1, imax
80866 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
80867 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
80868 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
80869 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
80870 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
80871 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
80872 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
80873 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
80874 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
80875 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
80876 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
80877 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
80878 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
80879 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
80880 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
80881 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
80882 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
80883 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
80884 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
80885 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
80886 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
80887 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
80888 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
80889 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
80890 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
80891 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
80892 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
80893 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
80894 END DO
80895 buffer1 = 0.0_dp
80896 imax = 7*9*6
80897 kmax = 6
80898 DO i = 1, imax
80899 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
80900 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
80901 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
80902 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
80903 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
80904 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
80905 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
80906 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
80907 END DO
80908 imax = 7*9*5
80909 kmax = 6
80910 i = 0
80911 DO i1 = 1, 5
80912 DO i2 = 1, 9
80913 DO i3 = 1, 7
80914 i = i + 1
80915 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
80916 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
80917 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
80918 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
80919 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
80920 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
80921 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
80922 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
80923 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
80924 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
80925 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
80926 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
80927 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
80928 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
80929 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
80930 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
80931 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
80932 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
80933 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
80934 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
80935 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
80936 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
80937 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
80938 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
80939 END DO
80940 END DO
80941 END DO
80942 s_offset_d1 = s_offset_d1 + 5
80943 END DO
80944 s_offset_c1 = s_offset_c1 + 5
80945 END DO
80946 s_offset_b1 = s_offset_b1 + 9
80947 END DO
80948 s_offset_a1 = s_offset_a1 + 7
80949 END DO
80950 END SUBROUTINE contract_fgdd
80951#endif
80952#if __MAX_CONTR > 4 || __MAX_CONTR == 4
80953! **************************************************************************************************
80954!> \brief ...
80955!> \param work ...
80956!> \param nl_a ...
80957!> \param nl_b ...
80958!> \param nl_c ...
80959!> \param nl_d ...
80960!> \param sphi_a ...
80961!> \param sphi_b ...
80962!> \param sphi_c ...
80963!> \param sphi_d ...
80964!> \param primitives ...
80965!> \param buffer1 ...
80966!> \param buffer2 ...
80967! **************************************************************************************************
80968 SUBROUTINE contract_fgdf(work, &
80969 nl_a, nl_b, nl_c, nl_d, &
80970 sphi_a, sphi_b, sphi_c, sphi_d, &
80971 primitives, &
80972 buffer1, buffer2)
80973 REAL(dp), DIMENSION(10*15*6*10), INTENT(IN) :: work
80974 INTEGER :: nl_a, nl_b, nl_c, nl_d
80975 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
80976 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
80977 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
80978 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
80979 REAL(dp), &
80980 DIMENSION(7*nl_a, 9*nl_b, 5*nl_c, 7*nl_d) :: primitives
80981 REAL(dp), DIMENSION(10*15*6*10) :: buffer1, buffer2
80982
80983 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
80984 kmax, s_offset_a1, s_offset_b1, &
80985 s_offset_c1, s_offset_d1
80986
80987 s_offset_a1 = 0
80988 DO ia = 1, nl_a
80989 s_offset_b1 = 0
80990 DO ib = 1, nl_b
80991 s_offset_c1 = 0
80992 DO ic = 1, nl_c
80993 s_offset_d1 = 0
80994 DO id = 1, nl_d
80995 buffer1 = 0.0_dp
80996 imax = 15*6*10
80997 kmax = 10
80998 DO i = 1, imax
80999 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
81000 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
81001 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
81002 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
81003 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
81004 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
81005 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
81006 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
81007 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
81008 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
81009 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
81010 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
81011 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
81012 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
81013 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
81014 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
81015 END DO
81016 buffer2 = 0.0_dp
81017 imax = 7*6*10
81018 kmax = 15
81019 DO i = 1, imax
81020 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
81021 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
81022 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
81023 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
81024 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
81025 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
81026 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
81027 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
81028 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
81029 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
81030 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
81031 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
81032 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
81033 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
81034 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
81035 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
81036 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
81037 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
81038 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
81039 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
81040 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
81041 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
81042 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
81043 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
81044 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
81045 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
81046 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
81047 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
81048 END DO
81049 buffer1 = 0.0_dp
81050 imax = 7*9*10
81051 kmax = 6
81052 DO i = 1, imax
81053 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
81054 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
81055 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
81056 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
81057 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
81058 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
81059 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
81060 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
81061 END DO
81062 imax = 7*9*5
81063 kmax = 10
81064 i = 0
81065 DO i1 = 1, 5
81066 DO i2 = 1, 9
81067 DO i3 = 1, 7
81068 i = i + 1
81069 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
81070 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
81071 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
81072 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
81073 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
81074 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
81075 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
81076 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
81077 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
81078 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
81079 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
81080 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
81081 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
81082 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
81083 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
81084 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
81085 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
81086 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
81087 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
81088 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
81089 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
81090 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
81091 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
81092 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
81093 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
81094 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
81095 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
81096 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
81097 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
81098 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
81099 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
81100 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
81101 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
81102 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
81103 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
81104 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
81105 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
81106 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
81107 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
81108 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
81109 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
81110 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
81111 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
81112 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
81113 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
81114 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
81115 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
81116 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
81117 END DO
81118 END DO
81119 END DO
81120 s_offset_d1 = s_offset_d1 + 7
81121 END DO
81122 s_offset_c1 = s_offset_c1 + 5
81123 END DO
81124 s_offset_b1 = s_offset_b1 + 9
81125 END DO
81126 s_offset_a1 = s_offset_a1 + 7
81127 END DO
81128 END SUBROUTINE contract_fgdf
81129#endif
81130#if __MAX_CONTR > 4 || __MAX_CONTR == 4
81131! **************************************************************************************************
81132!> \brief ...
81133!> \param work ...
81134!> \param nl_a ...
81135!> \param nl_b ...
81136!> \param nl_c ...
81137!> \param nl_d ...
81138!> \param sphi_a ...
81139!> \param sphi_b ...
81140!> \param sphi_c ...
81141!> \param sphi_d ...
81142!> \param primitives ...
81143!> \param buffer1 ...
81144!> \param buffer2 ...
81145! **************************************************************************************************
81146 SUBROUTINE contract_fgdg(work, &
81147 nl_a, nl_b, nl_c, nl_d, &
81148 sphi_a, sphi_b, sphi_c, sphi_d, &
81149 primitives, &
81150 buffer1, buffer2)
81151 REAL(dp), DIMENSION(10*15*6*15), INTENT(IN) :: work
81152 INTEGER :: nl_a, nl_b, nl_c, nl_d
81153 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
81154 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
81155 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
81156 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
81157 REAL(dp), &
81158 DIMENSION(7*nl_a, 9*nl_b, 5*nl_c, 9*nl_d) :: primitives
81159 REAL(dp), DIMENSION(10*15*6*15) :: buffer1, buffer2
81160
81161 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
81162 kmax, s_offset_a1, s_offset_b1, &
81163 s_offset_c1, s_offset_d1
81164
81165 s_offset_a1 = 0
81166 DO ia = 1, nl_a
81167 s_offset_b1 = 0
81168 DO ib = 1, nl_b
81169 s_offset_c1 = 0
81170 DO ic = 1, nl_c
81171 s_offset_d1 = 0
81172 DO id = 1, nl_d
81173 buffer1 = 0.0_dp
81174 imax = 15*6*15
81175 kmax = 10
81176 DO i = 1, imax
81177 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
81178 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
81179 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
81180 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
81181 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
81182 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
81183 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
81184 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
81185 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
81186 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
81187 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
81188 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
81189 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
81190 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
81191 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
81192 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
81193 END DO
81194 buffer2 = 0.0_dp
81195 imax = 7*6*15
81196 kmax = 15
81197 DO i = 1, imax
81198 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
81199 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
81200 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
81201 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
81202 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
81203 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
81204 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
81205 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
81206 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
81207 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
81208 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
81209 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
81210 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
81211 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
81212 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
81213 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
81214 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
81215 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
81216 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
81217 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
81218 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
81219 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
81220 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
81221 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
81222 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
81223 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
81224 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
81225 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
81226 END DO
81227 buffer1 = 0.0_dp
81228 imax = 7*9*15
81229 kmax = 6
81230 DO i = 1, imax
81231 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
81232 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
81233 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
81234 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
81235 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
81236 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
81237 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
81238 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
81239 END DO
81240 imax = 7*9*5
81241 kmax = 15
81242 i = 0
81243 DO i1 = 1, 5
81244 DO i2 = 1, 9
81245 DO i3 = 1, 7
81246 i = i + 1
81247 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
81248 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
81249 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
81250 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
81251 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
81252 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
81253 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
81254 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
81255 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
81256 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
81257 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
81258 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
81259 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
81260 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
81261 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
81262 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
81263 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
81264 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
81265 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
81266 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
81267 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
81268 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
81269 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
81270 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
81271 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
81272 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
81273 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
81274 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
81275 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
81276 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
81277 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
81278 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
81279 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
81280 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
81281 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
81282 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
81283 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
81284 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
81285 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
81286 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
81287 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
81288 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
81289 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
81290 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
81291 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
81292 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
81293 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
81294 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
81295 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
81296 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
81297 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
81298 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
81299 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
81300 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
81301 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
81302 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
81303 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
81304 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
81305 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
81306 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
81307 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
81308 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
81309 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
81310 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
81311 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
81312 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
81313 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
81314 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
81315 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
81316 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
81317 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
81318 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
81319 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
81320 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
81321 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
81322 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
81323 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
81324 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
81325 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
81326 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
81327 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
81328 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
81329 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
81330 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
81331 END DO
81332 END DO
81333 END DO
81334 s_offset_d1 = s_offset_d1 + 9
81335 END DO
81336 s_offset_c1 = s_offset_c1 + 5
81337 END DO
81338 s_offset_b1 = s_offset_b1 + 9
81339 END DO
81340 s_offset_a1 = s_offset_a1 + 7
81341 END DO
81342 END SUBROUTINE contract_fgdg
81343#endif
81344#if __MAX_CONTR > 4 || __MAX_CONTR == 4
81345! **************************************************************************************************
81346!> \brief ...
81347!> \param work ...
81348!> \param nl_a ...
81349!> \param nl_b ...
81350!> \param nl_c ...
81351!> \param nl_d ...
81352!> \param sphi_a ...
81353!> \param sphi_b ...
81354!> \param sphi_c ...
81355!> \param sphi_d ...
81356!> \param primitives ...
81357!> \param buffer1 ...
81358!> \param buffer2 ...
81359! **************************************************************************************************
81360 SUBROUTINE contract_fgfs(work, &
81361 nl_a, nl_b, nl_c, nl_d, &
81362 sphi_a, sphi_b, sphi_c, sphi_d, &
81363 primitives, &
81364 buffer1, buffer2)
81365 REAL(dp), DIMENSION(10*15*10*1), INTENT(IN) :: work
81366 INTEGER :: nl_a, nl_b, nl_c, nl_d
81367 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
81368 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
81369 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
81370 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
81371 REAL(dp), &
81372 DIMENSION(7*nl_a, 9*nl_b, 7*nl_c, 1*nl_d) :: primitives
81373 REAL(dp), DIMENSION(10*15*10*1) :: buffer1, buffer2
81374
81375 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
81376 kmax, s_offset_a1, s_offset_b1, &
81377 s_offset_c1, s_offset_d1
81378
81379 s_offset_a1 = 0
81380 DO ia = 1, nl_a
81381 s_offset_b1 = 0
81382 DO ib = 1, nl_b
81383 s_offset_c1 = 0
81384 DO ic = 1, nl_c
81385 s_offset_d1 = 0
81386 DO id = 1, nl_d
81387 buffer1 = 0.0_dp
81388 imax = 15*10*1
81389 kmax = 10
81390 DO i = 1, imax
81391 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
81392 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
81393 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
81394 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
81395 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
81396 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
81397 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
81398 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
81399 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
81400 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
81401 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
81402 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
81403 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
81404 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
81405 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
81406 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
81407 END DO
81408 buffer2 = 0.0_dp
81409 imax = 7*10*1
81410 kmax = 15
81411 DO i = 1, imax
81412 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
81413 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
81414 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
81415 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
81416 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
81417 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
81418 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
81419 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
81420 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
81421 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
81422 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
81423 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
81424 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
81425 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
81426 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
81427 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
81428 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
81429 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
81430 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
81431 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
81432 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
81433 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
81434 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
81435 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
81436 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
81437 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
81438 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
81439 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
81440 END DO
81441 buffer1 = 0.0_dp
81442 imax = 7*9*1
81443 kmax = 10
81444 DO i = 1, imax
81445 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
81446 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
81447 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
81448 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
81449 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
81450 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
81451 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
81452 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
81453 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
81454 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
81455 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
81456 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
81457 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
81458 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
81459 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
81460 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
81461 END DO
81462 imax = 7*9*7
81463 kmax = 1
81464 i = 0
81465 DO i1 = 1, 7
81466 DO i2 = 1, 9
81467 DO i3 = 1, 7
81468 i = i + 1
81469 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
81470 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
81471 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
81472 END DO
81473 END DO
81474 END DO
81475 s_offset_d1 = s_offset_d1 + 1
81476 END DO
81477 s_offset_c1 = s_offset_c1 + 7
81478 END DO
81479 s_offset_b1 = s_offset_b1 + 9
81480 END DO
81481 s_offset_a1 = s_offset_a1 + 7
81482 END DO
81483 END SUBROUTINE contract_fgfs
81484#endif
81485#if __MAX_CONTR > 4 || __MAX_CONTR == 4
81486! **************************************************************************************************
81487!> \brief ...
81488!> \param work ...
81489!> \param nl_a ...
81490!> \param nl_b ...
81491!> \param nl_c ...
81492!> \param nl_d ...
81493!> \param sphi_a ...
81494!> \param sphi_b ...
81495!> \param sphi_c ...
81496!> \param sphi_d ...
81497!> \param primitives ...
81498!> \param buffer1 ...
81499!> \param buffer2 ...
81500! **************************************************************************************************
81501 SUBROUTINE contract_fgfp(work, &
81502 nl_a, nl_b, nl_c, nl_d, &
81503 sphi_a, sphi_b, sphi_c, sphi_d, &
81504 primitives, &
81505 buffer1, buffer2)
81506 REAL(dp), DIMENSION(10*15*10*3), INTENT(IN) :: work
81507 INTEGER :: nl_a, nl_b, nl_c, nl_d
81508 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
81509 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
81510 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
81511 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
81512 REAL(dp), &
81513 DIMENSION(7*nl_a, 9*nl_b, 7*nl_c, 3*nl_d) :: primitives
81514 REAL(dp), DIMENSION(10*15*10*3) :: buffer1, buffer2
81515
81516 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
81517 kmax, s_offset_a1, s_offset_b1, &
81518 s_offset_c1, s_offset_d1
81519
81520 s_offset_a1 = 0
81521 DO ia = 1, nl_a
81522 s_offset_b1 = 0
81523 DO ib = 1, nl_b
81524 s_offset_c1 = 0
81525 DO ic = 1, nl_c
81526 s_offset_d1 = 0
81527 DO id = 1, nl_d
81528 buffer1 = 0.0_dp
81529 imax = 15*10*3
81530 kmax = 10
81531 DO i = 1, imax
81532 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
81533 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
81534 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
81535 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
81536 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
81537 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
81538 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
81539 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
81540 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
81541 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
81542 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
81543 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
81544 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
81545 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
81546 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
81547 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
81548 END DO
81549 buffer2 = 0.0_dp
81550 imax = 7*10*3
81551 kmax = 15
81552 DO i = 1, imax
81553 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
81554 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
81555 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
81556 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
81557 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
81558 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
81559 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
81560 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
81561 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
81562 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
81563 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
81564 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
81565 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
81566 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
81567 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
81568 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
81569 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
81570 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
81571 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
81572 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
81573 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
81574 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
81575 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
81576 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
81577 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
81578 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
81579 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
81580 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
81581 END DO
81582 buffer1 = 0.0_dp
81583 imax = 7*9*3
81584 kmax = 10
81585 DO i = 1, imax
81586 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
81587 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
81588 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
81589 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
81590 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
81591 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
81592 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
81593 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
81594 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
81595 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
81596 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
81597 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
81598 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
81599 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
81600 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
81601 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
81602 END DO
81603 imax = 7*9*7
81604 kmax = 3
81605 i = 0
81606 DO i1 = 1, 7
81607 DO i2 = 1, 9
81608 DO i3 = 1, 7
81609 i = i + 1
81610 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
81611 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
81612 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
81613 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
81614 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
81615 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
81616 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
81617 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
81618 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
81619 END DO
81620 END DO
81621 END DO
81622 s_offset_d1 = s_offset_d1 + 3
81623 END DO
81624 s_offset_c1 = s_offset_c1 + 7
81625 END DO
81626 s_offset_b1 = s_offset_b1 + 9
81627 END DO
81628 s_offset_a1 = s_offset_a1 + 7
81629 END DO
81630 END SUBROUTINE contract_fgfp
81631#endif
81632#if __MAX_CONTR > 4 || __MAX_CONTR == 4
81633! **************************************************************************************************
81634!> \brief ...
81635!> \param work ...
81636!> \param nl_a ...
81637!> \param nl_b ...
81638!> \param nl_c ...
81639!> \param nl_d ...
81640!> \param sphi_a ...
81641!> \param sphi_b ...
81642!> \param sphi_c ...
81643!> \param sphi_d ...
81644!> \param primitives ...
81645!> \param buffer1 ...
81646!> \param buffer2 ...
81647! **************************************************************************************************
81648 SUBROUTINE contract_fgfd(work, &
81649 nl_a, nl_b, nl_c, nl_d, &
81650 sphi_a, sphi_b, sphi_c, sphi_d, &
81651 primitives, &
81652 buffer1, buffer2)
81653 REAL(dp), DIMENSION(10*15*10*6), INTENT(IN) :: work
81654 INTEGER :: nl_a, nl_b, nl_c, nl_d
81655 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
81656 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
81657 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
81658 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
81659 REAL(dp), &
81660 DIMENSION(7*nl_a, 9*nl_b, 7*nl_c, 5*nl_d) :: primitives
81661 REAL(dp), DIMENSION(10*15*10*6) :: buffer1, buffer2
81662
81663 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
81664 kmax, s_offset_a1, s_offset_b1, &
81665 s_offset_c1, s_offset_d1
81666
81667 s_offset_a1 = 0
81668 DO ia = 1, nl_a
81669 s_offset_b1 = 0
81670 DO ib = 1, nl_b
81671 s_offset_c1 = 0
81672 DO ic = 1, nl_c
81673 s_offset_d1 = 0
81674 DO id = 1, nl_d
81675 buffer1 = 0.0_dp
81676 imax = 15*10*6
81677 kmax = 10
81678 DO i = 1, imax
81679 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
81680 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
81681 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
81682 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
81683 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
81684 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
81685 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
81686 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
81687 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
81688 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
81689 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
81690 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
81691 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
81692 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
81693 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
81694 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
81695 END DO
81696 buffer2 = 0.0_dp
81697 imax = 7*10*6
81698 kmax = 15
81699 DO i = 1, imax
81700 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
81701 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
81702 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
81703 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
81704 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
81705 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
81706 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
81707 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
81708 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
81709 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
81710 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
81711 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
81712 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
81713 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
81714 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
81715 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
81716 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
81717 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
81718 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
81719 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
81720 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
81721 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
81722 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
81723 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
81724 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
81725 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
81726 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
81727 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
81728 END DO
81729 buffer1 = 0.0_dp
81730 imax = 7*9*6
81731 kmax = 10
81732 DO i = 1, imax
81733 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
81734 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
81735 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
81736 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
81737 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
81738 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
81739 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
81740 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
81741 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
81742 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
81743 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
81744 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
81745 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
81746 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
81747 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
81748 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
81749 END DO
81750 imax = 7*9*7
81751 kmax = 6
81752 i = 0
81753 DO i1 = 1, 7
81754 DO i2 = 1, 9
81755 DO i3 = 1, 7
81756 i = i + 1
81757 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
81758 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
81759 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
81760 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
81761 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
81762 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
81763 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
81764 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
81765 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
81766 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
81767 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
81768 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
81769 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
81770 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
81771 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
81772 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
81773 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
81774 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
81775 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
81776 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
81777 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
81778 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
81779 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
81780 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
81781 END DO
81782 END DO
81783 END DO
81784 s_offset_d1 = s_offset_d1 + 5
81785 END DO
81786 s_offset_c1 = s_offset_c1 + 7
81787 END DO
81788 s_offset_b1 = s_offset_b1 + 9
81789 END DO
81790 s_offset_a1 = s_offset_a1 + 7
81791 END DO
81792 END SUBROUTINE contract_fgfd
81793#endif
81794#if __MAX_CONTR > 4 || __MAX_CONTR == 4
81795! **************************************************************************************************
81796!> \brief ...
81797!> \param work ...
81798!> \param nl_a ...
81799!> \param nl_b ...
81800!> \param nl_c ...
81801!> \param nl_d ...
81802!> \param sphi_a ...
81803!> \param sphi_b ...
81804!> \param sphi_c ...
81805!> \param sphi_d ...
81806!> \param primitives ...
81807!> \param buffer1 ...
81808!> \param buffer2 ...
81809! **************************************************************************************************
81810 SUBROUTINE contract_fgff(work, &
81811 nl_a, nl_b, nl_c, nl_d, &
81812 sphi_a, sphi_b, sphi_c, sphi_d, &
81813 primitives, &
81814 buffer1, buffer2)
81815 REAL(dp), DIMENSION(10*15*10*10), INTENT(IN) :: work
81816 INTEGER :: nl_a, nl_b, nl_c, nl_d
81817 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
81818 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
81819 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
81820 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
81821 REAL(dp), &
81822 DIMENSION(7*nl_a, 9*nl_b, 7*nl_c, 7*nl_d) :: primitives
81823 REAL(dp), DIMENSION(10*15*10*10) :: buffer1, buffer2
81824
81825 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
81826 kmax, s_offset_a1, s_offset_b1, &
81827 s_offset_c1, s_offset_d1
81828
81829 s_offset_a1 = 0
81830 DO ia = 1, nl_a
81831 s_offset_b1 = 0
81832 DO ib = 1, nl_b
81833 s_offset_c1 = 0
81834 DO ic = 1, nl_c
81835 s_offset_d1 = 0
81836 DO id = 1, nl_d
81837 buffer1 = 0.0_dp
81838 imax = 15*10*10
81839 kmax = 10
81840 DO i = 1, imax
81841 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
81842 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
81843 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
81844 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
81845 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
81846 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
81847 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
81848 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
81849 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
81850 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
81851 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
81852 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
81853 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
81854 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
81855 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
81856 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
81857 END DO
81858 buffer2 = 0.0_dp
81859 imax = 7*10*10
81860 kmax = 15
81861 DO i = 1, imax
81862 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
81863 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
81864 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
81865 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
81866 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
81867 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
81868 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
81869 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
81870 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
81871 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
81872 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
81873 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
81874 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
81875 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
81876 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
81877 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
81878 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
81879 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
81880 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
81881 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
81882 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
81883 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
81884 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
81885 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
81886 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
81887 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
81888 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
81889 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
81890 END DO
81891 buffer1 = 0.0_dp
81892 imax = 7*9*10
81893 kmax = 10
81894 DO i = 1, imax
81895 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
81896 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
81897 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
81898 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
81899 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
81900 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
81901 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
81902 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
81903 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
81904 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
81905 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
81906 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
81907 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
81908 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
81909 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
81910 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
81911 END DO
81912 imax = 7*9*7
81913 kmax = 10
81914 i = 0
81915 DO i1 = 1, 7
81916 DO i2 = 1, 9
81917 DO i3 = 1, 7
81918 i = i + 1
81919 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
81920 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
81921 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
81922 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
81923 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
81924 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
81925 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
81926 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
81927 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
81928 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
81929 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
81930 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
81931 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
81932 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
81933 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
81934 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
81935 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
81936 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
81937 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
81938 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
81939 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
81940 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
81941 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
81942 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
81943 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
81944 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
81945 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
81946 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
81947 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
81948 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
81949 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
81950 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
81951 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
81952 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
81953 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
81954 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
81955 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
81956 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
81957 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
81958 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
81959 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
81960 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
81961 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
81962 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
81963 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
81964 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
81965 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
81966 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
81967 END DO
81968 END DO
81969 END DO
81970 s_offset_d1 = s_offset_d1 + 7
81971 END DO
81972 s_offset_c1 = s_offset_c1 + 7
81973 END DO
81974 s_offset_b1 = s_offset_b1 + 9
81975 END DO
81976 s_offset_a1 = s_offset_a1 + 7
81977 END DO
81978 END SUBROUTINE contract_fgff
81979#endif
81980#if __MAX_CONTR > 4 || __MAX_CONTR == 4
81981! **************************************************************************************************
81982!> \brief ...
81983!> \param work ...
81984!> \param nl_a ...
81985!> \param nl_b ...
81986!> \param nl_c ...
81987!> \param nl_d ...
81988!> \param sphi_a ...
81989!> \param sphi_b ...
81990!> \param sphi_c ...
81991!> \param sphi_d ...
81992!> \param primitives ...
81993!> \param buffer1 ...
81994!> \param buffer2 ...
81995! **************************************************************************************************
81996 SUBROUTINE contract_fgfg(work, &
81997 nl_a, nl_b, nl_c, nl_d, &
81998 sphi_a, sphi_b, sphi_c, sphi_d, &
81999 primitives, &
82000 buffer1, buffer2)
82001 REAL(dp), DIMENSION(10*15*10*15), INTENT(IN) :: work
82002 INTEGER :: nl_a, nl_b, nl_c, nl_d
82003 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
82004 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
82005 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
82006 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
82007 REAL(dp), &
82008 DIMENSION(7*nl_a, 9*nl_b, 7*nl_c, 9*nl_d) :: primitives
82009 REAL(dp), DIMENSION(10*15*10*15) :: buffer1, buffer2
82010
82011 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
82012 kmax, s_offset_a1, s_offset_b1, &
82013 s_offset_c1, s_offset_d1
82014
82015 s_offset_a1 = 0
82016 DO ia = 1, nl_a
82017 s_offset_b1 = 0
82018 DO ib = 1, nl_b
82019 s_offset_c1 = 0
82020 DO ic = 1, nl_c
82021 s_offset_d1 = 0
82022 DO id = 1, nl_d
82023 buffer1 = 0.0_dp
82024 imax = 15*10*15
82025 kmax = 10
82026 DO i = 1, imax
82027 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
82028 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
82029 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
82030 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
82031 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
82032 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
82033 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
82034 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
82035 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
82036 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
82037 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
82038 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
82039 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
82040 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
82041 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
82042 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
82043 END DO
82044 buffer2 = 0.0_dp
82045 imax = 7*10*15
82046 kmax = 15
82047 DO i = 1, imax
82048 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
82049 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
82050 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
82051 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
82052 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
82053 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
82054 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
82055 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
82056 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
82057 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
82058 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
82059 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
82060 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
82061 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
82062 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
82063 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
82064 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
82065 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
82066 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
82067 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
82068 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
82069 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
82070 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
82071 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
82072 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
82073 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
82074 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
82075 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
82076 END DO
82077 buffer1 = 0.0_dp
82078 imax = 7*9*15
82079 kmax = 10
82080 DO i = 1, imax
82081 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
82082 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
82083 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
82084 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
82085 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
82086 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
82087 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
82088 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
82089 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
82090 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
82091 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
82092 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
82093 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
82094 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
82095 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
82096 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
82097 END DO
82098 imax = 7*9*7
82099 kmax = 15
82100 i = 0
82101 DO i1 = 1, 7
82102 DO i2 = 1, 9
82103 DO i3 = 1, 7
82104 i = i + 1
82105 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
82106 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
82107 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
82108 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
82109 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
82110 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
82111 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
82112 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
82113 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
82114 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
82115 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
82116 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
82117 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
82118 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
82119 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
82120 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
82121 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
82122 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
82123 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
82124 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
82125 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
82126 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
82127 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
82128 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
82129 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
82130 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
82131 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
82132 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
82133 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
82134 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
82135 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
82136 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
82137 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
82138 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
82139 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
82140 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
82141 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
82142 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
82143 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
82144 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
82145 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
82146 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
82147 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
82148 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
82149 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
82150 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
82151 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
82152 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
82153 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
82154 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
82155 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
82156 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
82157 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
82158 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
82159 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
82160 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
82161 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
82162 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
82163 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
82164 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
82165 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
82166 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
82167 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
82168 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
82169 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
82170 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
82171 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
82172 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
82173 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
82174 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
82175 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
82176 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
82177 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
82178 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
82179 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
82180 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
82181 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
82182 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
82183 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
82184 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
82185 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
82186 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
82187 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
82188 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
82189 END DO
82190 END DO
82191 END DO
82192 s_offset_d1 = s_offset_d1 + 9
82193 END DO
82194 s_offset_c1 = s_offset_c1 + 7
82195 END DO
82196 s_offset_b1 = s_offset_b1 + 9
82197 END DO
82198 s_offset_a1 = s_offset_a1 + 7
82199 END DO
82200 END SUBROUTINE contract_fgfg
82201#endif
82202#if __MAX_CONTR > 4 || __MAX_CONTR == 4
82203! **************************************************************************************************
82204!> \brief ...
82205!> \param work ...
82206!> \param nl_a ...
82207!> \param nl_b ...
82208!> \param nl_c ...
82209!> \param nl_d ...
82210!> \param sphi_a ...
82211!> \param sphi_b ...
82212!> \param sphi_c ...
82213!> \param sphi_d ...
82214!> \param primitives ...
82215!> \param buffer1 ...
82216!> \param buffer2 ...
82217! **************************************************************************************************
82218 SUBROUTINE contract_fggs(work, &
82219 nl_a, nl_b, nl_c, nl_d, &
82220 sphi_a, sphi_b, sphi_c, sphi_d, &
82221 primitives, &
82222 buffer1, buffer2)
82223 REAL(dp), DIMENSION(10*15*15*1), INTENT(IN) :: work
82224 INTEGER :: nl_a, nl_b, nl_c, nl_d
82225 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
82226 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
82227 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
82228 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
82229 REAL(dp), &
82230 DIMENSION(7*nl_a, 9*nl_b, 9*nl_c, 1*nl_d) :: primitives
82231 REAL(dp), DIMENSION(10*15*15*1) :: buffer1, buffer2
82232
82233 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
82234 kmax, s_offset_a1, s_offset_b1, &
82235 s_offset_c1, s_offset_d1
82236
82237 s_offset_a1 = 0
82238 DO ia = 1, nl_a
82239 s_offset_b1 = 0
82240 DO ib = 1, nl_b
82241 s_offset_c1 = 0
82242 DO ic = 1, nl_c
82243 s_offset_d1 = 0
82244 DO id = 1, nl_d
82245 buffer1 = 0.0_dp
82246 imax = 15*15*1
82247 kmax = 10
82248 DO i = 1, imax
82249 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
82250 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
82251 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
82252 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
82253 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
82254 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
82255 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
82256 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
82257 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
82258 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
82259 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
82260 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
82261 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
82262 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
82263 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
82264 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
82265 END DO
82266 buffer2 = 0.0_dp
82267 imax = 7*15*1
82268 kmax = 15
82269 DO i = 1, imax
82270 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
82271 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
82272 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
82273 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
82274 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
82275 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
82276 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
82277 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
82278 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
82279 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
82280 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
82281 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
82282 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
82283 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
82284 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
82285 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
82286 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
82287 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
82288 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
82289 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
82290 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
82291 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
82292 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
82293 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
82294 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
82295 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
82296 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
82297 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
82298 END DO
82299 buffer1 = 0.0_dp
82300 imax = 7*9*1
82301 kmax = 15
82302 DO i = 1, imax
82303 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
82304 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
82305 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
82306 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
82307 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
82308 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
82309 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
82310 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
82311 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
82312 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
82313 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
82314 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
82315 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
82316 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
82317 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
82318 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
82319 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
82320 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
82321 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
82322 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
82323 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
82324 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
82325 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
82326 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
82327 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
82328 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
82329 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
82330 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
82331 END DO
82332 imax = 7*9*9
82333 kmax = 1
82334 i = 0
82335 DO i1 = 1, 9
82336 DO i2 = 1, 9
82337 DO i3 = 1, 7
82338 i = i + 1
82339 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
82340 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
82341 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
82342 END DO
82343 END DO
82344 END DO
82345 s_offset_d1 = s_offset_d1 + 1
82346 END DO
82347 s_offset_c1 = s_offset_c1 + 9
82348 END DO
82349 s_offset_b1 = s_offset_b1 + 9
82350 END DO
82351 s_offset_a1 = s_offset_a1 + 7
82352 END DO
82353 END SUBROUTINE contract_fggs
82354#endif
82355#if __MAX_CONTR > 4 || __MAX_CONTR == 4
82356! **************************************************************************************************
82357!> \brief ...
82358!> \param work ...
82359!> \param nl_a ...
82360!> \param nl_b ...
82361!> \param nl_c ...
82362!> \param nl_d ...
82363!> \param sphi_a ...
82364!> \param sphi_b ...
82365!> \param sphi_c ...
82366!> \param sphi_d ...
82367!> \param primitives ...
82368!> \param buffer1 ...
82369!> \param buffer2 ...
82370! **************************************************************************************************
82371 SUBROUTINE contract_fggp(work, &
82372 nl_a, nl_b, nl_c, nl_d, &
82373 sphi_a, sphi_b, sphi_c, sphi_d, &
82374 primitives, &
82375 buffer1, buffer2)
82376 REAL(dp), DIMENSION(10*15*15*3), INTENT(IN) :: work
82377 INTEGER :: nl_a, nl_b, nl_c, nl_d
82378 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
82379 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
82380 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
82381 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
82382 REAL(dp), &
82383 DIMENSION(7*nl_a, 9*nl_b, 9*nl_c, 3*nl_d) :: primitives
82384 REAL(dp), DIMENSION(10*15*15*3) :: buffer1, buffer2
82385
82386 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
82387 kmax, s_offset_a1, s_offset_b1, &
82388 s_offset_c1, s_offset_d1
82389
82390 s_offset_a1 = 0
82391 DO ia = 1, nl_a
82392 s_offset_b1 = 0
82393 DO ib = 1, nl_b
82394 s_offset_c1 = 0
82395 DO ic = 1, nl_c
82396 s_offset_d1 = 0
82397 DO id = 1, nl_d
82398 buffer1 = 0.0_dp
82399 imax = 15*15*3
82400 kmax = 10
82401 DO i = 1, imax
82402 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
82403 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
82404 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
82405 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
82406 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
82407 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
82408 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
82409 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
82410 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
82411 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
82412 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
82413 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
82414 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
82415 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
82416 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
82417 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
82418 END DO
82419 buffer2 = 0.0_dp
82420 imax = 7*15*3
82421 kmax = 15
82422 DO i = 1, imax
82423 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
82424 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
82425 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
82426 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
82427 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
82428 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
82429 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
82430 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
82431 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
82432 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
82433 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
82434 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
82435 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
82436 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
82437 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
82438 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
82439 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
82440 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
82441 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
82442 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
82443 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
82444 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
82445 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
82446 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
82447 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
82448 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
82449 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
82450 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
82451 END DO
82452 buffer1 = 0.0_dp
82453 imax = 7*9*3
82454 kmax = 15
82455 DO i = 1, imax
82456 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
82457 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
82458 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
82459 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
82460 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
82461 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
82462 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
82463 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
82464 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
82465 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
82466 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
82467 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
82468 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
82469 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
82470 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
82471 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
82472 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
82473 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
82474 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
82475 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
82476 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
82477 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
82478 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
82479 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
82480 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
82481 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
82482 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
82483 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
82484 END DO
82485 imax = 7*9*9
82486 kmax = 3
82487 i = 0
82488 DO i1 = 1, 9
82489 DO i2 = 1, 9
82490 DO i3 = 1, 7
82491 i = i + 1
82492 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
82493 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
82494 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
82495 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
82496 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
82497 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
82498 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
82499 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
82500 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
82501 END DO
82502 END DO
82503 END DO
82504 s_offset_d1 = s_offset_d1 + 3
82505 END DO
82506 s_offset_c1 = s_offset_c1 + 9
82507 END DO
82508 s_offset_b1 = s_offset_b1 + 9
82509 END DO
82510 s_offset_a1 = s_offset_a1 + 7
82511 END DO
82512 END SUBROUTINE contract_fggp
82513#endif
82514#if __MAX_CONTR > 4 || __MAX_CONTR == 4
82515! **************************************************************************************************
82516!> \brief ...
82517!> \param work ...
82518!> \param nl_a ...
82519!> \param nl_b ...
82520!> \param nl_c ...
82521!> \param nl_d ...
82522!> \param sphi_a ...
82523!> \param sphi_b ...
82524!> \param sphi_c ...
82525!> \param sphi_d ...
82526!> \param primitives ...
82527!> \param buffer1 ...
82528!> \param buffer2 ...
82529! **************************************************************************************************
82530 SUBROUTINE contract_fggd(work, &
82531 nl_a, nl_b, nl_c, nl_d, &
82532 sphi_a, sphi_b, sphi_c, sphi_d, &
82533 primitives, &
82534 buffer1, buffer2)
82535 REAL(dp), DIMENSION(10*15*15*6), INTENT(IN) :: work
82536 INTEGER :: nl_a, nl_b, nl_c, nl_d
82537 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
82538 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
82539 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
82540 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
82541 REAL(dp), &
82542 DIMENSION(7*nl_a, 9*nl_b, 9*nl_c, 5*nl_d) :: primitives
82543 REAL(dp), DIMENSION(10*15*15*6) :: buffer1, buffer2
82544
82545 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
82546 kmax, s_offset_a1, s_offset_b1, &
82547 s_offset_c1, s_offset_d1
82548
82549 s_offset_a1 = 0
82550 DO ia = 1, nl_a
82551 s_offset_b1 = 0
82552 DO ib = 1, nl_b
82553 s_offset_c1 = 0
82554 DO ic = 1, nl_c
82555 s_offset_d1 = 0
82556 DO id = 1, nl_d
82557 buffer1 = 0.0_dp
82558 imax = 15*15*6
82559 kmax = 10
82560 DO i = 1, imax
82561 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
82562 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
82563 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
82564 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
82565 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
82566 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
82567 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
82568 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
82569 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
82570 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
82571 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
82572 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
82573 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
82574 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
82575 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
82576 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
82577 END DO
82578 buffer2 = 0.0_dp
82579 imax = 7*15*6
82580 kmax = 15
82581 DO i = 1, imax
82582 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
82583 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
82584 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
82585 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
82586 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
82587 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
82588 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
82589 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
82590 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
82591 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
82592 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
82593 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
82594 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
82595 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
82596 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
82597 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
82598 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
82599 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
82600 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
82601 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
82602 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
82603 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
82604 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
82605 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
82606 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
82607 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
82608 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
82609 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
82610 END DO
82611 buffer1 = 0.0_dp
82612 imax = 7*9*6
82613 kmax = 15
82614 DO i = 1, imax
82615 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
82616 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
82617 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
82618 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
82619 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
82620 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
82621 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
82622 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
82623 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
82624 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
82625 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
82626 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
82627 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
82628 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
82629 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
82630 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
82631 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
82632 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
82633 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
82634 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
82635 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
82636 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
82637 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
82638 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
82639 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
82640 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
82641 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
82642 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
82643 END DO
82644 imax = 7*9*9
82645 kmax = 6
82646 i = 0
82647 DO i1 = 1, 9
82648 DO i2 = 1, 9
82649 DO i3 = 1, 7
82650 i = i + 1
82651 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
82652 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
82653 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
82654 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
82655 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
82656 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
82657 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
82658 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
82659 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
82660 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
82661 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
82662 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
82663 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
82664 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
82665 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
82666 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
82667 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
82668 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
82669 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
82670 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
82671 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
82672 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
82673 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
82674 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
82675 END DO
82676 END DO
82677 END DO
82678 s_offset_d1 = s_offset_d1 + 5
82679 END DO
82680 s_offset_c1 = s_offset_c1 + 9
82681 END DO
82682 s_offset_b1 = s_offset_b1 + 9
82683 END DO
82684 s_offset_a1 = s_offset_a1 + 7
82685 END DO
82686 END SUBROUTINE contract_fggd
82687#endif
82688#if __MAX_CONTR > 4 || __MAX_CONTR == 4
82689! **************************************************************************************************
82690!> \brief ...
82691!> \param work ...
82692!> \param nl_a ...
82693!> \param nl_b ...
82694!> \param nl_c ...
82695!> \param nl_d ...
82696!> \param sphi_a ...
82697!> \param sphi_b ...
82698!> \param sphi_c ...
82699!> \param sphi_d ...
82700!> \param primitives ...
82701!> \param buffer1 ...
82702!> \param buffer2 ...
82703! **************************************************************************************************
82704 SUBROUTINE contract_fggf(work, &
82705 nl_a, nl_b, nl_c, nl_d, &
82706 sphi_a, sphi_b, sphi_c, sphi_d, &
82707 primitives, &
82708 buffer1, buffer2)
82709 REAL(dp), DIMENSION(10*15*15*10), INTENT(IN) :: work
82710 INTEGER :: nl_a, nl_b, nl_c, nl_d
82711 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
82712 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
82713 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
82714 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
82715 REAL(dp), &
82716 DIMENSION(7*nl_a, 9*nl_b, 9*nl_c, 7*nl_d) :: primitives
82717 REAL(dp), DIMENSION(10*15*15*10) :: buffer1, buffer2
82718
82719 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
82720 kmax, s_offset_a1, s_offset_b1, &
82721 s_offset_c1, s_offset_d1
82722
82723 s_offset_a1 = 0
82724 DO ia = 1, nl_a
82725 s_offset_b1 = 0
82726 DO ib = 1, nl_b
82727 s_offset_c1 = 0
82728 DO ic = 1, nl_c
82729 s_offset_d1 = 0
82730 DO id = 1, nl_d
82731 buffer1 = 0.0_dp
82732 imax = 15*15*10
82733 kmax = 10
82734 DO i = 1, imax
82735 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
82736 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
82737 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
82738 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
82739 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
82740 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
82741 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
82742 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
82743 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
82744 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
82745 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
82746 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
82747 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
82748 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
82749 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
82750 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
82751 END DO
82752 buffer2 = 0.0_dp
82753 imax = 7*15*10
82754 kmax = 15
82755 DO i = 1, imax
82756 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
82757 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
82758 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
82759 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
82760 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
82761 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
82762 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
82763 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
82764 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
82765 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
82766 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
82767 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
82768 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
82769 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
82770 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
82771 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
82772 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
82773 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
82774 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
82775 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
82776 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
82777 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
82778 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
82779 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
82780 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
82781 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
82782 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
82783 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
82784 END DO
82785 buffer1 = 0.0_dp
82786 imax = 7*9*10
82787 kmax = 15
82788 DO i = 1, imax
82789 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
82790 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
82791 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
82792 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
82793 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
82794 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
82795 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
82796 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
82797 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
82798 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
82799 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
82800 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
82801 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
82802 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
82803 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
82804 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
82805 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
82806 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
82807 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
82808 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
82809 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
82810 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
82811 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
82812 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
82813 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
82814 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
82815 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
82816 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
82817 END DO
82818 imax = 7*9*9
82819 kmax = 10
82820 i = 0
82821 DO i1 = 1, 9
82822 DO i2 = 1, 9
82823 DO i3 = 1, 7
82824 i = i + 1
82825 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
82826 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
82827 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
82828 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
82829 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
82830 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
82831 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
82832 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
82833 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
82834 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
82835 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
82836 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
82837 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
82838 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
82839 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
82840 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
82841 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
82842 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
82843 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
82844 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
82845 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
82846 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
82847 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
82848 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
82849 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
82850 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
82851 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
82852 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
82853 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
82854 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
82855 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
82856 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
82857 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
82858 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
82859 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
82860 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
82861 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
82862 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
82863 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
82864 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
82865 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
82866 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
82867 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
82868 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
82869 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
82870 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
82871 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
82872 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
82873 END DO
82874 END DO
82875 END DO
82876 s_offset_d1 = s_offset_d1 + 7
82877 END DO
82878 s_offset_c1 = s_offset_c1 + 9
82879 END DO
82880 s_offset_b1 = s_offset_b1 + 9
82881 END DO
82882 s_offset_a1 = s_offset_a1 + 7
82883 END DO
82884 END SUBROUTINE contract_fggf
82885#endif
82886#if __MAX_CONTR > 4 || __MAX_CONTR == 4
82887! **************************************************************************************************
82888!> \brief ...
82889!> \param work ...
82890!> \param nl_a ...
82891!> \param nl_b ...
82892!> \param nl_c ...
82893!> \param nl_d ...
82894!> \param sphi_a ...
82895!> \param sphi_b ...
82896!> \param sphi_c ...
82897!> \param sphi_d ...
82898!> \param primitives ...
82899!> \param buffer1 ...
82900!> \param buffer2 ...
82901! **************************************************************************************************
82902 SUBROUTINE contract_fggg(work, &
82903 nl_a, nl_b, nl_c, nl_d, &
82904 sphi_a, sphi_b, sphi_c, sphi_d, &
82905 primitives, &
82906 buffer1, buffer2)
82907 REAL(dp), DIMENSION(10*15*15*15), INTENT(IN) :: work
82908 INTEGER :: nl_a, nl_b, nl_c, nl_d
82909 REAL(dp), DIMENSION(10, 7*nl_a), INTENT(IN) :: sphi_a
82910 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
82911 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
82912 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
82913 REAL(dp), &
82914 DIMENSION(7*nl_a, 9*nl_b, 9*nl_c, 9*nl_d) :: primitives
82915 REAL(dp), DIMENSION(10*15*15*15) :: buffer1, buffer2
82916
82917 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
82918 kmax, s_offset_a1, s_offset_b1, &
82919 s_offset_c1, s_offset_d1
82920
82921 s_offset_a1 = 0
82922 DO ia = 1, nl_a
82923 s_offset_b1 = 0
82924 DO ib = 1, nl_b
82925 s_offset_c1 = 0
82926 DO ic = 1, nl_c
82927 s_offset_d1 = 0
82928 DO id = 1, nl_d
82929 buffer1 = 0.0_dp
82930 imax = 15*15*15
82931 kmax = 10
82932 DO i = 1, imax
82933 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
82934 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
82935 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
82936 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
82937 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
82938 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
82939 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
82940 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
82941 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
82942 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
82943 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
82944 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
82945 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
82946 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
82947 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
82948 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
82949 END DO
82950 buffer2 = 0.0_dp
82951 imax = 7*15*15
82952 kmax = 15
82953 DO i = 1, imax
82954 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
82955 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
82956 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
82957 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
82958 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
82959 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
82960 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
82961 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
82962 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
82963 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
82964 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
82965 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
82966 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
82967 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
82968 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
82969 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
82970 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
82971 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
82972 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
82973 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
82974 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
82975 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
82976 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
82977 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
82978 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
82979 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
82980 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
82981 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
82982 END DO
82983 buffer1 = 0.0_dp
82984 imax = 7*9*15
82985 kmax = 15
82986 DO i = 1, imax
82987 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
82988 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
82989 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
82990 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
82991 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
82992 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
82993 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
82994 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
82995 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
82996 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
82997 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
82998 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
82999 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
83000 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
83001 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
83002 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
83003 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
83004 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
83005 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
83006 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
83007 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
83008 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
83009 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
83010 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
83011 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
83012 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
83013 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
83014 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
83015 END DO
83016 imax = 7*9*9
83017 kmax = 15
83018 i = 0
83019 DO i1 = 1, 9
83020 DO i2 = 1, 9
83021 DO i3 = 1, 7
83022 i = i + 1
83023 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
83024 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
83025 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
83026 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
83027 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
83028 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
83029 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
83030 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
83031 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
83032 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
83033 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
83034 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
83035 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
83036 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
83037 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
83038 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
83039 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
83040 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
83041 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
83042 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
83043 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
83044 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
83045 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
83046 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
83047 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
83048 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
83049 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
83050 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
83051 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
83052 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
83053 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
83054 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
83055 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
83056 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
83057 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
83058 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
83059 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
83060 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
83061 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
83062 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
83063 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
83064 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
83065 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
83066 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
83067 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
83068 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
83069 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
83070 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
83071 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
83072 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
83073 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
83074 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
83075 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
83076 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
83077 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
83078 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
83079 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
83080 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
83081 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
83082 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
83083 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
83084 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
83085 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
83086 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
83087 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
83088 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
83089 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
83090 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
83091 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
83092 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
83093 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
83094 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
83095 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
83096 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
83097 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
83098 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
83099 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
83100 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
83101 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
83102 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
83103 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
83104 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
83105 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
83106 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
83107 END DO
83108 END DO
83109 END DO
83110 s_offset_d1 = s_offset_d1 + 9
83111 END DO
83112 s_offset_c1 = s_offset_c1 + 9
83113 END DO
83114 s_offset_b1 = s_offset_b1 + 9
83115 END DO
83116 s_offset_a1 = s_offset_a1 + 7
83117 END DO
83118 END SUBROUTINE contract_fggg
83119#endif
83120#if __MAX_CONTR > 4 || __MAX_CONTR == 4
83121! **************************************************************************************************
83122!> \brief ...
83123!> \param work ...
83124!> \param nl_a ...
83125!> \param nl_b ...
83126!> \param nl_c ...
83127!> \param nl_d ...
83128!> \param sphi_a ...
83129!> \param sphi_b ...
83130!> \param sphi_c ...
83131!> \param sphi_d ...
83132!> \param primitives ...
83133!> \param buffer1 ...
83134!> \param buffer2 ...
83135! **************************************************************************************************
83136 SUBROUTINE contract_gsss(work, &
83137 nl_a, nl_b, nl_c, nl_d, &
83138 sphi_a, sphi_b, sphi_c, sphi_d, &
83139 primitives, &
83140 buffer1, buffer2)
83141 REAL(dp), DIMENSION(15*1*1*1), INTENT(IN) :: work
83142 INTEGER :: nl_a, nl_b, nl_c, nl_d
83143 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
83144 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
83145 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
83146 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
83147 REAL(dp), &
83148 DIMENSION(9*nl_a, 1*nl_b, 1*nl_c, 1*nl_d) :: primitives
83149 REAL(dp), DIMENSION(15*1*1*1) :: buffer1, buffer2
83150
83151 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
83152 kmax, s_offset_a1, s_offset_b1, &
83153 s_offset_c1, s_offset_d1
83154
83155 s_offset_a1 = 0
83156 DO ia = 1, nl_a
83157 s_offset_b1 = 0
83158 DO ib = 1, nl_b
83159 s_offset_c1 = 0
83160 DO ic = 1, nl_c
83161 s_offset_d1 = 0
83162 DO id = 1, nl_d
83163 buffer1 = 0.0_dp
83164 imax = 1*1*1
83165 kmax = 15
83166 DO i = 1, imax
83167 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
83168 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
83169 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
83170 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
83171 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
83172 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
83173 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
83174 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
83175 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
83176 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
83177 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
83178 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
83179 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
83180 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
83181 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
83182 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
83183 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
83184 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
83185 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
83186 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
83187 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
83188 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
83189 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
83190 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
83191 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
83192 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
83193 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
83194 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
83195 END DO
83196 buffer2 = 0.0_dp
83197 imax = 9*1*1
83198 kmax = 1
83199 DO i = 1, imax
83200 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
83201 END DO
83202 buffer1 = 0.0_dp
83203 imax = 9*1*1
83204 kmax = 1
83205 DO i = 1, imax
83206 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
83207 END DO
83208 imax = 9*1*1
83209 kmax = 1
83210 i = 0
83211 DO i1 = 1, 1
83212 DO i2 = 1, 1
83213 DO i3 = 1, 9
83214 i = i + 1
83215 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
83216 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
83217 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
83218 END DO
83219 END DO
83220 END DO
83221 s_offset_d1 = s_offset_d1 + 1
83222 END DO
83223 s_offset_c1 = s_offset_c1 + 1
83224 END DO
83225 s_offset_b1 = s_offset_b1 + 1
83226 END DO
83227 s_offset_a1 = s_offset_a1 + 9
83228 END DO
83229 END SUBROUTINE contract_gsss
83230#endif
83231#if __MAX_CONTR > 4 || __MAX_CONTR == 4
83232! **************************************************************************************************
83233!> \brief ...
83234!> \param work ...
83235!> \param nl_a ...
83236!> \param nl_b ...
83237!> \param nl_c ...
83238!> \param nl_d ...
83239!> \param sphi_a ...
83240!> \param sphi_b ...
83241!> \param sphi_c ...
83242!> \param sphi_d ...
83243!> \param primitives ...
83244!> \param buffer1 ...
83245!> \param buffer2 ...
83246! **************************************************************************************************
83247 SUBROUTINE contract_gssp(work, &
83248 nl_a, nl_b, nl_c, nl_d, &
83249 sphi_a, sphi_b, sphi_c, sphi_d, &
83250 primitives, &
83251 buffer1, buffer2)
83252 REAL(dp), DIMENSION(15*1*1*3), INTENT(IN) :: work
83253 INTEGER :: nl_a, nl_b, nl_c, nl_d
83254 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
83255 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
83256 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
83257 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
83258 REAL(dp), &
83259 DIMENSION(9*nl_a, 1*nl_b, 1*nl_c, 3*nl_d) :: primitives
83260 REAL(dp), DIMENSION(15*1*1*3) :: buffer1, buffer2
83261
83262 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
83263 kmax, s_offset_a1, s_offset_b1, &
83264 s_offset_c1, s_offset_d1
83265
83266 s_offset_a1 = 0
83267 DO ia = 1, nl_a
83268 s_offset_b1 = 0
83269 DO ib = 1, nl_b
83270 s_offset_c1 = 0
83271 DO ic = 1, nl_c
83272 s_offset_d1 = 0
83273 DO id = 1, nl_d
83274 buffer1 = 0.0_dp
83275 imax = 1*1*3
83276 kmax = 15
83277 DO i = 1, imax
83278 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
83279 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
83280 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
83281 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
83282 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
83283 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
83284 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
83285 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
83286 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
83287 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
83288 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
83289 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
83290 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
83291 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
83292 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
83293 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
83294 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
83295 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
83296 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
83297 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
83298 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
83299 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
83300 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
83301 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
83302 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
83303 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
83304 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
83305 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
83306 END DO
83307 buffer2 = 0.0_dp
83308 imax = 9*1*3
83309 kmax = 1
83310 DO i = 1, imax
83311 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
83312 END DO
83313 buffer1 = 0.0_dp
83314 imax = 9*1*3
83315 kmax = 1
83316 DO i = 1, imax
83317 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
83318 END DO
83319 imax = 9*1*1
83320 kmax = 3
83321 i = 0
83322 DO i1 = 1, 1
83323 DO i2 = 1, 1
83324 DO i3 = 1, 9
83325 i = i + 1
83326 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
83327 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
83328 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
83329 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
83330 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
83331 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
83332 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
83333 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
83334 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
83335 END DO
83336 END DO
83337 END DO
83338 s_offset_d1 = s_offset_d1 + 3
83339 END DO
83340 s_offset_c1 = s_offset_c1 + 1
83341 END DO
83342 s_offset_b1 = s_offset_b1 + 1
83343 END DO
83344 s_offset_a1 = s_offset_a1 + 9
83345 END DO
83346 END SUBROUTINE contract_gssp
83347#endif
83348#if __MAX_CONTR > 4 || __MAX_CONTR == 4
83349! **************************************************************************************************
83350!> \brief ...
83351!> \param work ...
83352!> \param nl_a ...
83353!> \param nl_b ...
83354!> \param nl_c ...
83355!> \param nl_d ...
83356!> \param sphi_a ...
83357!> \param sphi_b ...
83358!> \param sphi_c ...
83359!> \param sphi_d ...
83360!> \param primitives ...
83361!> \param buffer1 ...
83362!> \param buffer2 ...
83363! **************************************************************************************************
83364 SUBROUTINE contract_gssd(work, &
83365 nl_a, nl_b, nl_c, nl_d, &
83366 sphi_a, sphi_b, sphi_c, sphi_d, &
83367 primitives, &
83368 buffer1, buffer2)
83369 REAL(dp), DIMENSION(15*1*1*6), INTENT(IN) :: work
83370 INTEGER :: nl_a, nl_b, nl_c, nl_d
83371 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
83372 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
83373 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
83374 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
83375 REAL(dp), &
83376 DIMENSION(9*nl_a, 1*nl_b, 1*nl_c, 5*nl_d) :: primitives
83377 REAL(dp), DIMENSION(15*1*1*6) :: buffer1, buffer2
83378
83379 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
83380 kmax, s_offset_a1, s_offset_b1, &
83381 s_offset_c1, s_offset_d1
83382
83383 s_offset_a1 = 0
83384 DO ia = 1, nl_a
83385 s_offset_b1 = 0
83386 DO ib = 1, nl_b
83387 s_offset_c1 = 0
83388 DO ic = 1, nl_c
83389 s_offset_d1 = 0
83390 DO id = 1, nl_d
83391 buffer1 = 0.0_dp
83392 imax = 1*1*6
83393 kmax = 15
83394 DO i = 1, imax
83395 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
83396 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
83397 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
83398 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
83399 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
83400 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
83401 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
83402 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
83403 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
83404 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
83405 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
83406 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
83407 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
83408 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
83409 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
83410 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
83411 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
83412 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
83413 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
83414 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
83415 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
83416 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
83417 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
83418 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
83419 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
83420 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
83421 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
83422 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
83423 END DO
83424 buffer2 = 0.0_dp
83425 imax = 9*1*6
83426 kmax = 1
83427 DO i = 1, imax
83428 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
83429 END DO
83430 buffer1 = 0.0_dp
83431 imax = 9*1*6
83432 kmax = 1
83433 DO i = 1, imax
83434 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
83435 END DO
83436 imax = 9*1*1
83437 kmax = 6
83438 i = 0
83439 DO i1 = 1, 1
83440 DO i2 = 1, 1
83441 DO i3 = 1, 9
83442 i = i + 1
83443 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
83444 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
83445 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
83446 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
83447 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
83448 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
83449 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
83450 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
83451 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
83452 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
83453 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
83454 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
83455 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
83456 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
83457 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
83458 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
83459 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
83460 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
83461 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
83462 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
83463 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
83464 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
83465 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
83466 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
83467 END DO
83468 END DO
83469 END DO
83470 s_offset_d1 = s_offset_d1 + 5
83471 END DO
83472 s_offset_c1 = s_offset_c1 + 1
83473 END DO
83474 s_offset_b1 = s_offset_b1 + 1
83475 END DO
83476 s_offset_a1 = s_offset_a1 + 9
83477 END DO
83478 END SUBROUTINE contract_gssd
83479#endif
83480#if __MAX_CONTR > 4 || __MAX_CONTR == 4
83481! **************************************************************************************************
83482!> \brief ...
83483!> \param work ...
83484!> \param nl_a ...
83485!> \param nl_b ...
83486!> \param nl_c ...
83487!> \param nl_d ...
83488!> \param sphi_a ...
83489!> \param sphi_b ...
83490!> \param sphi_c ...
83491!> \param sphi_d ...
83492!> \param primitives ...
83493!> \param buffer1 ...
83494!> \param buffer2 ...
83495! **************************************************************************************************
83496 SUBROUTINE contract_gssf(work, &
83497 nl_a, nl_b, nl_c, nl_d, &
83498 sphi_a, sphi_b, sphi_c, sphi_d, &
83499 primitives, &
83500 buffer1, buffer2)
83501 REAL(dp), DIMENSION(15*1*1*10), INTENT(IN) :: work
83502 INTEGER :: nl_a, nl_b, nl_c, nl_d
83503 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
83504 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
83505 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
83506 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
83507 REAL(dp), &
83508 DIMENSION(9*nl_a, 1*nl_b, 1*nl_c, 7*nl_d) :: primitives
83509 REAL(dp), DIMENSION(15*1*1*10) :: buffer1, buffer2
83510
83511 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
83512 kmax, s_offset_a1, s_offset_b1, &
83513 s_offset_c1, s_offset_d1
83514
83515 s_offset_a1 = 0
83516 DO ia = 1, nl_a
83517 s_offset_b1 = 0
83518 DO ib = 1, nl_b
83519 s_offset_c1 = 0
83520 DO ic = 1, nl_c
83521 s_offset_d1 = 0
83522 DO id = 1, nl_d
83523 buffer1 = 0.0_dp
83524 imax = 1*1*10
83525 kmax = 15
83526 DO i = 1, imax
83527 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
83528 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
83529 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
83530 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
83531 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
83532 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
83533 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
83534 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
83535 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
83536 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
83537 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
83538 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
83539 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
83540 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
83541 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
83542 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
83543 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
83544 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
83545 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
83546 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
83547 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
83548 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
83549 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
83550 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
83551 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
83552 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
83553 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
83554 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
83555 END DO
83556 buffer2 = 0.0_dp
83557 imax = 9*1*10
83558 kmax = 1
83559 DO i = 1, imax
83560 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
83561 END DO
83562 buffer1 = 0.0_dp
83563 imax = 9*1*10
83564 kmax = 1
83565 DO i = 1, imax
83566 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
83567 END DO
83568 imax = 9*1*1
83569 kmax = 10
83570 i = 0
83571 DO i1 = 1, 1
83572 DO i2 = 1, 1
83573 DO i3 = 1, 9
83574 i = i + 1
83575 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
83576 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
83577 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
83578 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
83579 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
83580 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
83581 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
83582 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
83583 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
83584 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
83585 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
83586 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
83587 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
83588 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
83589 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
83590 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
83591 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
83592 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
83593 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
83594 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
83595 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
83596 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
83597 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
83598 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
83599 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
83600 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
83601 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
83602 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
83603 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
83604 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
83605 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
83606 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
83607 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
83608 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
83609 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
83610 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
83611 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
83612 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
83613 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
83614 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
83615 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
83616 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
83617 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
83618 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
83619 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
83620 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
83621 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
83622 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
83623 END DO
83624 END DO
83625 END DO
83626 s_offset_d1 = s_offset_d1 + 7
83627 END DO
83628 s_offset_c1 = s_offset_c1 + 1
83629 END DO
83630 s_offset_b1 = s_offset_b1 + 1
83631 END DO
83632 s_offset_a1 = s_offset_a1 + 9
83633 END DO
83634 END SUBROUTINE contract_gssf
83635#endif
83636#if __MAX_CONTR > 4 || __MAX_CONTR == 4
83637! **************************************************************************************************
83638!> \brief ...
83639!> \param work ...
83640!> \param nl_a ...
83641!> \param nl_b ...
83642!> \param nl_c ...
83643!> \param nl_d ...
83644!> \param sphi_a ...
83645!> \param sphi_b ...
83646!> \param sphi_c ...
83647!> \param sphi_d ...
83648!> \param primitives ...
83649!> \param buffer1 ...
83650!> \param buffer2 ...
83651! **************************************************************************************************
83652 SUBROUTINE contract_gssg(work, &
83653 nl_a, nl_b, nl_c, nl_d, &
83654 sphi_a, sphi_b, sphi_c, sphi_d, &
83655 primitives, &
83656 buffer1, buffer2)
83657 REAL(dp), DIMENSION(15*1*1*15), INTENT(IN) :: work
83658 INTEGER :: nl_a, nl_b, nl_c, nl_d
83659 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
83660 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
83661 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
83662 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
83663 REAL(dp), &
83664 DIMENSION(9*nl_a, 1*nl_b, 1*nl_c, 9*nl_d) :: primitives
83665 REAL(dp), DIMENSION(15*1*1*15) :: buffer1, buffer2
83666
83667 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
83668 kmax, s_offset_a1, s_offset_b1, &
83669 s_offset_c1, s_offset_d1
83670
83671 s_offset_a1 = 0
83672 DO ia = 1, nl_a
83673 s_offset_b1 = 0
83674 DO ib = 1, nl_b
83675 s_offset_c1 = 0
83676 DO ic = 1, nl_c
83677 s_offset_d1 = 0
83678 DO id = 1, nl_d
83679 buffer1 = 0.0_dp
83680 imax = 1*1*15
83681 kmax = 15
83682 DO i = 1, imax
83683 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
83684 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
83685 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
83686 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
83687 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
83688 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
83689 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
83690 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
83691 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
83692 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
83693 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
83694 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
83695 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
83696 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
83697 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
83698 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
83699 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
83700 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
83701 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
83702 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
83703 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
83704 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
83705 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
83706 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
83707 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
83708 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
83709 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
83710 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
83711 END DO
83712 buffer2 = 0.0_dp
83713 imax = 9*1*15
83714 kmax = 1
83715 DO i = 1, imax
83716 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
83717 END DO
83718 buffer1 = 0.0_dp
83719 imax = 9*1*15
83720 kmax = 1
83721 DO i = 1, imax
83722 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
83723 END DO
83724 imax = 9*1*1
83725 kmax = 15
83726 i = 0
83727 DO i1 = 1, 1
83728 DO i2 = 1, 1
83729 DO i3 = 1, 9
83730 i = i + 1
83731 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
83732 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
83733 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
83734 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
83735 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
83736 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
83737 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
83738 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
83739 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
83740 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
83741 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
83742 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
83743 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
83744 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
83745 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
83746 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
83747 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
83748 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
83749 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
83750 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
83751 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
83752 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
83753 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
83754 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
83755 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
83756 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
83757 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
83758 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
83759 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
83760 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
83761 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
83762 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
83763 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
83764 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
83765 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
83766 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
83767 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
83768 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
83769 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
83770 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
83771 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
83772 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
83773 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
83774 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
83775 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
83776 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
83777 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
83778 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
83779 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
83780 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
83781 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
83782 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
83783 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
83784 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
83785 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
83786 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
83787 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
83788 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
83789 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
83790 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
83791 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
83792 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
83793 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
83794 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
83795 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
83796 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
83797 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
83798 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
83799 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
83800 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
83801 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
83802 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
83803 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
83804 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
83805 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
83806 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
83807 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
83808 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
83809 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
83810 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
83811 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
83812 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
83813 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
83814 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
83815 END DO
83816 END DO
83817 END DO
83818 s_offset_d1 = s_offset_d1 + 9
83819 END DO
83820 s_offset_c1 = s_offset_c1 + 1
83821 END DO
83822 s_offset_b1 = s_offset_b1 + 1
83823 END DO
83824 s_offset_a1 = s_offset_a1 + 9
83825 END DO
83826 END SUBROUTINE contract_gssg
83827#endif
83828#if __MAX_CONTR > 4 || __MAX_CONTR == 4
83829! **************************************************************************************************
83830!> \brief ...
83831!> \param work ...
83832!> \param nl_a ...
83833!> \param nl_b ...
83834!> \param nl_c ...
83835!> \param nl_d ...
83836!> \param sphi_a ...
83837!> \param sphi_b ...
83838!> \param sphi_c ...
83839!> \param sphi_d ...
83840!> \param primitives ...
83841!> \param buffer1 ...
83842!> \param buffer2 ...
83843! **************************************************************************************************
83844 SUBROUTINE contract_gsps(work, &
83845 nl_a, nl_b, nl_c, nl_d, &
83846 sphi_a, sphi_b, sphi_c, sphi_d, &
83847 primitives, &
83848 buffer1, buffer2)
83849 REAL(dp), DIMENSION(15*1*3*1), INTENT(IN) :: work
83850 INTEGER :: nl_a, nl_b, nl_c, nl_d
83851 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
83852 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
83853 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
83854 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
83855 REAL(dp), &
83856 DIMENSION(9*nl_a, 1*nl_b, 3*nl_c, 1*nl_d) :: primitives
83857 REAL(dp), DIMENSION(15*1*3*1) :: buffer1, buffer2
83858
83859 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
83860 kmax, s_offset_a1, s_offset_b1, &
83861 s_offset_c1, s_offset_d1
83862
83863 s_offset_a1 = 0
83864 DO ia = 1, nl_a
83865 s_offset_b1 = 0
83866 DO ib = 1, nl_b
83867 s_offset_c1 = 0
83868 DO ic = 1, nl_c
83869 s_offset_d1 = 0
83870 DO id = 1, nl_d
83871 buffer1 = 0.0_dp
83872 imax = 1*3*1
83873 kmax = 15
83874 DO i = 1, imax
83875 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
83876 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
83877 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
83878 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
83879 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
83880 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
83881 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
83882 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
83883 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
83884 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
83885 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
83886 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
83887 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
83888 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
83889 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
83890 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
83891 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
83892 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
83893 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
83894 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
83895 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
83896 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
83897 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
83898 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
83899 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
83900 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
83901 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
83902 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
83903 END DO
83904 buffer2 = 0.0_dp
83905 imax = 9*3*1
83906 kmax = 1
83907 DO i = 1, imax
83908 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
83909 END DO
83910 buffer1 = 0.0_dp
83911 imax = 9*1*1
83912 kmax = 3
83913 DO i = 1, imax
83914 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
83915 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
83916 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
83917 END DO
83918 imax = 9*1*3
83919 kmax = 1
83920 i = 0
83921 DO i1 = 1, 3
83922 DO i2 = 1, 1
83923 DO i3 = 1, 9
83924 i = i + 1
83925 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
83926 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
83927 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
83928 END DO
83929 END DO
83930 END DO
83931 s_offset_d1 = s_offset_d1 + 1
83932 END DO
83933 s_offset_c1 = s_offset_c1 + 3
83934 END DO
83935 s_offset_b1 = s_offset_b1 + 1
83936 END DO
83937 s_offset_a1 = s_offset_a1 + 9
83938 END DO
83939 END SUBROUTINE contract_gsps
83940#endif
83941#if __MAX_CONTR > 4 || __MAX_CONTR == 4
83942! **************************************************************************************************
83943!> \brief ...
83944!> \param work ...
83945!> \param nl_a ...
83946!> \param nl_b ...
83947!> \param nl_c ...
83948!> \param nl_d ...
83949!> \param sphi_a ...
83950!> \param sphi_b ...
83951!> \param sphi_c ...
83952!> \param sphi_d ...
83953!> \param primitives ...
83954!> \param buffer1 ...
83955!> \param buffer2 ...
83956! **************************************************************************************************
83957 SUBROUTINE contract_gspp(work, &
83958 nl_a, nl_b, nl_c, nl_d, &
83959 sphi_a, sphi_b, sphi_c, sphi_d, &
83960 primitives, &
83961 buffer1, buffer2)
83962 REAL(dp), DIMENSION(15*1*3*3), INTENT(IN) :: work
83963 INTEGER :: nl_a, nl_b, nl_c, nl_d
83964 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
83965 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
83966 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
83967 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
83968 REAL(dp), &
83969 DIMENSION(9*nl_a, 1*nl_b, 3*nl_c, 3*nl_d) :: primitives
83970 REAL(dp), DIMENSION(15*1*3*3) :: buffer1, buffer2
83971
83972 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
83973 kmax, s_offset_a1, s_offset_b1, &
83974 s_offset_c1, s_offset_d1
83975
83976 s_offset_a1 = 0
83977 DO ia = 1, nl_a
83978 s_offset_b1 = 0
83979 DO ib = 1, nl_b
83980 s_offset_c1 = 0
83981 DO ic = 1, nl_c
83982 s_offset_d1 = 0
83983 DO id = 1, nl_d
83984 buffer1 = 0.0_dp
83985 imax = 1*3*3
83986 kmax = 15
83987 DO i = 1, imax
83988 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
83989 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
83990 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
83991 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
83992 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
83993 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
83994 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
83995 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
83996 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
83997 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
83998 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
83999 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
84000 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
84001 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
84002 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
84003 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
84004 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
84005 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
84006 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
84007 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
84008 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
84009 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
84010 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
84011 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
84012 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
84013 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
84014 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
84015 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
84016 END DO
84017 buffer2 = 0.0_dp
84018 imax = 9*3*3
84019 kmax = 1
84020 DO i = 1, imax
84021 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
84022 END DO
84023 buffer1 = 0.0_dp
84024 imax = 9*1*3
84025 kmax = 3
84026 DO i = 1, imax
84027 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
84028 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
84029 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
84030 END DO
84031 imax = 9*1*3
84032 kmax = 3
84033 i = 0
84034 DO i1 = 1, 3
84035 DO i2 = 1, 1
84036 DO i3 = 1, 9
84037 i = i + 1
84038 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
84039 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
84040 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
84041 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
84042 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
84043 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
84044 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
84045 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
84046 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
84047 END DO
84048 END DO
84049 END DO
84050 s_offset_d1 = s_offset_d1 + 3
84051 END DO
84052 s_offset_c1 = s_offset_c1 + 3
84053 END DO
84054 s_offset_b1 = s_offset_b1 + 1
84055 END DO
84056 s_offset_a1 = s_offset_a1 + 9
84057 END DO
84058 END SUBROUTINE contract_gspp
84059#endif
84060#if __MAX_CONTR > 4 || __MAX_CONTR == 4
84061! **************************************************************************************************
84062!> \brief ...
84063!> \param work ...
84064!> \param nl_a ...
84065!> \param nl_b ...
84066!> \param nl_c ...
84067!> \param nl_d ...
84068!> \param sphi_a ...
84069!> \param sphi_b ...
84070!> \param sphi_c ...
84071!> \param sphi_d ...
84072!> \param primitives ...
84073!> \param buffer1 ...
84074!> \param buffer2 ...
84075! **************************************************************************************************
84076 SUBROUTINE contract_gspd(work, &
84077 nl_a, nl_b, nl_c, nl_d, &
84078 sphi_a, sphi_b, sphi_c, sphi_d, &
84079 primitives, &
84080 buffer1, buffer2)
84081 REAL(dp), DIMENSION(15*1*3*6), INTENT(IN) :: work
84082 INTEGER :: nl_a, nl_b, nl_c, nl_d
84083 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
84084 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
84085 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
84086 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
84087 REAL(dp), &
84088 DIMENSION(9*nl_a, 1*nl_b, 3*nl_c, 5*nl_d) :: primitives
84089 REAL(dp), DIMENSION(15*1*3*6) :: buffer1, buffer2
84090
84091 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
84092 kmax, s_offset_a1, s_offset_b1, &
84093 s_offset_c1, s_offset_d1
84094
84095 s_offset_a1 = 0
84096 DO ia = 1, nl_a
84097 s_offset_b1 = 0
84098 DO ib = 1, nl_b
84099 s_offset_c1 = 0
84100 DO ic = 1, nl_c
84101 s_offset_d1 = 0
84102 DO id = 1, nl_d
84103 buffer1 = 0.0_dp
84104 imax = 1*3*6
84105 kmax = 15
84106 DO i = 1, imax
84107 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
84108 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
84109 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
84110 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
84111 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
84112 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
84113 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
84114 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
84115 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
84116 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
84117 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
84118 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
84119 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
84120 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
84121 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
84122 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
84123 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
84124 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
84125 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
84126 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
84127 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
84128 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
84129 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
84130 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
84131 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
84132 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
84133 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
84134 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
84135 END DO
84136 buffer2 = 0.0_dp
84137 imax = 9*3*6
84138 kmax = 1
84139 DO i = 1, imax
84140 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
84141 END DO
84142 buffer1 = 0.0_dp
84143 imax = 9*1*6
84144 kmax = 3
84145 DO i = 1, imax
84146 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
84147 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
84148 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
84149 END DO
84150 imax = 9*1*3
84151 kmax = 6
84152 i = 0
84153 DO i1 = 1, 3
84154 DO i2 = 1, 1
84155 DO i3 = 1, 9
84156 i = i + 1
84157 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
84158 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
84159 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
84160 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
84161 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
84162 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
84163 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
84164 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
84165 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
84166 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
84167 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
84168 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
84169 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
84170 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
84171 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
84172 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
84173 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
84174 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
84175 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
84176 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
84177 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
84178 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
84179 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
84180 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
84181 END DO
84182 END DO
84183 END DO
84184 s_offset_d1 = s_offset_d1 + 5
84185 END DO
84186 s_offset_c1 = s_offset_c1 + 3
84187 END DO
84188 s_offset_b1 = s_offset_b1 + 1
84189 END DO
84190 s_offset_a1 = s_offset_a1 + 9
84191 END DO
84192 END SUBROUTINE contract_gspd
84193#endif
84194#if __MAX_CONTR > 4 || __MAX_CONTR == 4
84195! **************************************************************************************************
84196!> \brief ...
84197!> \param work ...
84198!> \param nl_a ...
84199!> \param nl_b ...
84200!> \param nl_c ...
84201!> \param nl_d ...
84202!> \param sphi_a ...
84203!> \param sphi_b ...
84204!> \param sphi_c ...
84205!> \param sphi_d ...
84206!> \param primitives ...
84207!> \param buffer1 ...
84208!> \param buffer2 ...
84209! **************************************************************************************************
84210 SUBROUTINE contract_gspf(work, &
84211 nl_a, nl_b, nl_c, nl_d, &
84212 sphi_a, sphi_b, sphi_c, sphi_d, &
84213 primitives, &
84214 buffer1, buffer2)
84215 REAL(dp), DIMENSION(15*1*3*10), INTENT(IN) :: work
84216 INTEGER :: nl_a, nl_b, nl_c, nl_d
84217 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
84218 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
84219 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
84220 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
84221 REAL(dp), &
84222 DIMENSION(9*nl_a, 1*nl_b, 3*nl_c, 7*nl_d) :: primitives
84223 REAL(dp), DIMENSION(15*1*3*10) :: buffer1, buffer2
84224
84225 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
84226 kmax, s_offset_a1, s_offset_b1, &
84227 s_offset_c1, s_offset_d1
84228
84229 s_offset_a1 = 0
84230 DO ia = 1, nl_a
84231 s_offset_b1 = 0
84232 DO ib = 1, nl_b
84233 s_offset_c1 = 0
84234 DO ic = 1, nl_c
84235 s_offset_d1 = 0
84236 DO id = 1, nl_d
84237 buffer1 = 0.0_dp
84238 imax = 1*3*10
84239 kmax = 15
84240 DO i = 1, imax
84241 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
84242 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
84243 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
84244 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
84245 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
84246 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
84247 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
84248 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
84249 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
84250 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
84251 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
84252 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
84253 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
84254 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
84255 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
84256 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
84257 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
84258 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
84259 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
84260 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
84261 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
84262 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
84263 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
84264 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
84265 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
84266 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
84267 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
84268 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
84269 END DO
84270 buffer2 = 0.0_dp
84271 imax = 9*3*10
84272 kmax = 1
84273 DO i = 1, imax
84274 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
84275 END DO
84276 buffer1 = 0.0_dp
84277 imax = 9*1*10
84278 kmax = 3
84279 DO i = 1, imax
84280 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
84281 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
84282 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
84283 END DO
84284 imax = 9*1*3
84285 kmax = 10
84286 i = 0
84287 DO i1 = 1, 3
84288 DO i2 = 1, 1
84289 DO i3 = 1, 9
84290 i = i + 1
84291 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
84292 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
84293 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
84294 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
84295 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
84296 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
84297 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
84298 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
84299 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
84300 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
84301 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
84302 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
84303 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
84304 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
84305 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
84306 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
84307 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
84308 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
84309 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
84310 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
84311 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
84312 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
84313 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
84314 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
84315 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
84316 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
84317 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
84318 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
84319 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
84320 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
84321 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
84322 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
84323 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
84324 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
84325 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
84326 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
84327 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
84328 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
84329 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
84330 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
84331 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
84332 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
84333 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
84334 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
84335 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
84336 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
84337 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
84338 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
84339 END DO
84340 END DO
84341 END DO
84342 s_offset_d1 = s_offset_d1 + 7
84343 END DO
84344 s_offset_c1 = s_offset_c1 + 3
84345 END DO
84346 s_offset_b1 = s_offset_b1 + 1
84347 END DO
84348 s_offset_a1 = s_offset_a1 + 9
84349 END DO
84350 END SUBROUTINE contract_gspf
84351#endif
84352#if __MAX_CONTR > 4 || __MAX_CONTR == 4
84353! **************************************************************************************************
84354!> \brief ...
84355!> \param work ...
84356!> \param nl_a ...
84357!> \param nl_b ...
84358!> \param nl_c ...
84359!> \param nl_d ...
84360!> \param sphi_a ...
84361!> \param sphi_b ...
84362!> \param sphi_c ...
84363!> \param sphi_d ...
84364!> \param primitives ...
84365!> \param buffer1 ...
84366!> \param buffer2 ...
84367! **************************************************************************************************
84368 SUBROUTINE contract_gspg(work, &
84369 nl_a, nl_b, nl_c, nl_d, &
84370 sphi_a, sphi_b, sphi_c, sphi_d, &
84371 primitives, &
84372 buffer1, buffer2)
84373 REAL(dp), DIMENSION(15*1*3*15), INTENT(IN) :: work
84374 INTEGER :: nl_a, nl_b, nl_c, nl_d
84375 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
84376 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
84377 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
84378 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
84379 REAL(dp), &
84380 DIMENSION(9*nl_a, 1*nl_b, 3*nl_c, 9*nl_d) :: primitives
84381 REAL(dp), DIMENSION(15*1*3*15) :: buffer1, buffer2
84382
84383 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
84384 kmax, s_offset_a1, s_offset_b1, &
84385 s_offset_c1, s_offset_d1
84386
84387 s_offset_a1 = 0
84388 DO ia = 1, nl_a
84389 s_offset_b1 = 0
84390 DO ib = 1, nl_b
84391 s_offset_c1 = 0
84392 DO ic = 1, nl_c
84393 s_offset_d1 = 0
84394 DO id = 1, nl_d
84395 buffer1 = 0.0_dp
84396 imax = 1*3*15
84397 kmax = 15
84398 DO i = 1, imax
84399 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
84400 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
84401 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
84402 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
84403 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
84404 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
84405 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
84406 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
84407 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
84408 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
84409 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
84410 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
84411 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
84412 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
84413 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
84414 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
84415 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
84416 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
84417 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
84418 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
84419 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
84420 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
84421 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
84422 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
84423 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
84424 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
84425 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
84426 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
84427 END DO
84428 buffer2 = 0.0_dp
84429 imax = 9*3*15
84430 kmax = 1
84431 DO i = 1, imax
84432 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
84433 END DO
84434 buffer1 = 0.0_dp
84435 imax = 9*1*15
84436 kmax = 3
84437 DO i = 1, imax
84438 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
84439 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
84440 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
84441 END DO
84442 imax = 9*1*3
84443 kmax = 15
84444 i = 0
84445 DO i1 = 1, 3
84446 DO i2 = 1, 1
84447 DO i3 = 1, 9
84448 i = i + 1
84449 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
84450 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
84451 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
84452 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
84453 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
84454 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
84455 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
84456 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
84457 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
84458 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
84459 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
84460 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
84461 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
84462 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
84463 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
84464 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
84465 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
84466 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
84467 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
84468 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
84469 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
84470 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
84471 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
84472 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
84473 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
84474 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
84475 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
84476 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
84477 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
84478 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
84479 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
84480 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
84481 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
84482 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
84483 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
84484 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
84485 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
84486 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
84487 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
84488 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
84489 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
84490 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
84491 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
84492 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
84493 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
84494 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
84495 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
84496 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
84497 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
84498 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
84499 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
84500 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
84501 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
84502 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
84503 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
84504 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
84505 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
84506 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
84507 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
84508 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
84509 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
84510 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
84511 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
84512 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
84513 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
84514 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
84515 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
84516 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
84517 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
84518 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
84519 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
84520 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
84521 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
84522 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
84523 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
84524 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
84525 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
84526 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
84527 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
84528 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
84529 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
84530 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
84531 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
84532 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
84533 END DO
84534 END DO
84535 END DO
84536 s_offset_d1 = s_offset_d1 + 9
84537 END DO
84538 s_offset_c1 = s_offset_c1 + 3
84539 END DO
84540 s_offset_b1 = s_offset_b1 + 1
84541 END DO
84542 s_offset_a1 = s_offset_a1 + 9
84543 END DO
84544 END SUBROUTINE contract_gspg
84545#endif
84546#if __MAX_CONTR > 4 || __MAX_CONTR == 4
84547! **************************************************************************************************
84548!> \brief ...
84549!> \param work ...
84550!> \param nl_a ...
84551!> \param nl_b ...
84552!> \param nl_c ...
84553!> \param nl_d ...
84554!> \param sphi_a ...
84555!> \param sphi_b ...
84556!> \param sphi_c ...
84557!> \param sphi_d ...
84558!> \param primitives ...
84559!> \param buffer1 ...
84560!> \param buffer2 ...
84561! **************************************************************************************************
84562 SUBROUTINE contract_gsds(work, &
84563 nl_a, nl_b, nl_c, nl_d, &
84564 sphi_a, sphi_b, sphi_c, sphi_d, &
84565 primitives, &
84566 buffer1, buffer2)
84567 REAL(dp), DIMENSION(15*1*6*1), INTENT(IN) :: work
84568 INTEGER :: nl_a, nl_b, nl_c, nl_d
84569 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
84570 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
84571 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
84572 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
84573 REAL(dp), &
84574 DIMENSION(9*nl_a, 1*nl_b, 5*nl_c, 1*nl_d) :: primitives
84575 REAL(dp), DIMENSION(15*1*6*1) :: buffer1, buffer2
84576
84577 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
84578 kmax, s_offset_a1, s_offset_b1, &
84579 s_offset_c1, s_offset_d1
84580
84581 s_offset_a1 = 0
84582 DO ia = 1, nl_a
84583 s_offset_b1 = 0
84584 DO ib = 1, nl_b
84585 s_offset_c1 = 0
84586 DO ic = 1, nl_c
84587 s_offset_d1 = 0
84588 DO id = 1, nl_d
84589 buffer1 = 0.0_dp
84590 imax = 1*6*1
84591 kmax = 15
84592 DO i = 1, imax
84593 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
84594 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
84595 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
84596 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
84597 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
84598 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
84599 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
84600 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
84601 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
84602 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
84603 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
84604 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
84605 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
84606 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
84607 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
84608 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
84609 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
84610 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
84611 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
84612 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
84613 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
84614 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
84615 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
84616 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
84617 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
84618 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
84619 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
84620 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
84621 END DO
84622 buffer2 = 0.0_dp
84623 imax = 9*6*1
84624 kmax = 1
84625 DO i = 1, imax
84626 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
84627 END DO
84628 buffer1 = 0.0_dp
84629 imax = 9*1*1
84630 kmax = 6
84631 DO i = 1, imax
84632 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
84633 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
84634 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
84635 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
84636 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
84637 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
84638 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
84639 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
84640 END DO
84641 imax = 9*1*5
84642 kmax = 1
84643 i = 0
84644 DO i1 = 1, 5
84645 DO i2 = 1, 1
84646 DO i3 = 1, 9
84647 i = i + 1
84648 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
84649 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
84650 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
84651 END DO
84652 END DO
84653 END DO
84654 s_offset_d1 = s_offset_d1 + 1
84655 END DO
84656 s_offset_c1 = s_offset_c1 + 5
84657 END DO
84658 s_offset_b1 = s_offset_b1 + 1
84659 END DO
84660 s_offset_a1 = s_offset_a1 + 9
84661 END DO
84662 END SUBROUTINE contract_gsds
84663#endif
84664#if __MAX_CONTR > 4 || __MAX_CONTR == 4
84665! **************************************************************************************************
84666!> \brief ...
84667!> \param work ...
84668!> \param nl_a ...
84669!> \param nl_b ...
84670!> \param nl_c ...
84671!> \param nl_d ...
84672!> \param sphi_a ...
84673!> \param sphi_b ...
84674!> \param sphi_c ...
84675!> \param sphi_d ...
84676!> \param primitives ...
84677!> \param buffer1 ...
84678!> \param buffer2 ...
84679! **************************************************************************************************
84680 SUBROUTINE contract_gsdp(work, &
84681 nl_a, nl_b, nl_c, nl_d, &
84682 sphi_a, sphi_b, sphi_c, sphi_d, &
84683 primitives, &
84684 buffer1, buffer2)
84685 REAL(dp), DIMENSION(15*1*6*3), INTENT(IN) :: work
84686 INTEGER :: nl_a, nl_b, nl_c, nl_d
84687 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
84688 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
84689 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
84690 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
84691 REAL(dp), &
84692 DIMENSION(9*nl_a, 1*nl_b, 5*nl_c, 3*nl_d) :: primitives
84693 REAL(dp), DIMENSION(15*1*6*3) :: buffer1, buffer2
84694
84695 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
84696 kmax, s_offset_a1, s_offset_b1, &
84697 s_offset_c1, s_offset_d1
84698
84699 s_offset_a1 = 0
84700 DO ia = 1, nl_a
84701 s_offset_b1 = 0
84702 DO ib = 1, nl_b
84703 s_offset_c1 = 0
84704 DO ic = 1, nl_c
84705 s_offset_d1 = 0
84706 DO id = 1, nl_d
84707 buffer1 = 0.0_dp
84708 imax = 1*6*3
84709 kmax = 15
84710 DO i = 1, imax
84711 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
84712 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
84713 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
84714 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
84715 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
84716 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
84717 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
84718 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
84719 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
84720 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
84721 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
84722 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
84723 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
84724 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
84725 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
84726 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
84727 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
84728 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
84729 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
84730 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
84731 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
84732 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
84733 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
84734 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
84735 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
84736 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
84737 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
84738 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
84739 END DO
84740 buffer2 = 0.0_dp
84741 imax = 9*6*3
84742 kmax = 1
84743 DO i = 1, imax
84744 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
84745 END DO
84746 buffer1 = 0.0_dp
84747 imax = 9*1*3
84748 kmax = 6
84749 DO i = 1, imax
84750 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
84751 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
84752 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
84753 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
84754 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
84755 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
84756 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
84757 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
84758 END DO
84759 imax = 9*1*5
84760 kmax = 3
84761 i = 0
84762 DO i1 = 1, 5
84763 DO i2 = 1, 1
84764 DO i3 = 1, 9
84765 i = i + 1
84766 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
84767 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
84768 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
84769 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
84770 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
84771 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
84772 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
84773 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
84774 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
84775 END DO
84776 END DO
84777 END DO
84778 s_offset_d1 = s_offset_d1 + 3
84779 END DO
84780 s_offset_c1 = s_offset_c1 + 5
84781 END DO
84782 s_offset_b1 = s_offset_b1 + 1
84783 END DO
84784 s_offset_a1 = s_offset_a1 + 9
84785 END DO
84786 END SUBROUTINE contract_gsdp
84787#endif
84788#if __MAX_CONTR > 4 || __MAX_CONTR == 4
84789! **************************************************************************************************
84790!> \brief ...
84791!> \param work ...
84792!> \param nl_a ...
84793!> \param nl_b ...
84794!> \param nl_c ...
84795!> \param nl_d ...
84796!> \param sphi_a ...
84797!> \param sphi_b ...
84798!> \param sphi_c ...
84799!> \param sphi_d ...
84800!> \param primitives ...
84801!> \param buffer1 ...
84802!> \param buffer2 ...
84803! **************************************************************************************************
84804 SUBROUTINE contract_gsdd(work, &
84805 nl_a, nl_b, nl_c, nl_d, &
84806 sphi_a, sphi_b, sphi_c, sphi_d, &
84807 primitives, &
84808 buffer1, buffer2)
84809 REAL(dp), DIMENSION(15*1*6*6), INTENT(IN) :: work
84810 INTEGER :: nl_a, nl_b, nl_c, nl_d
84811 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
84812 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
84813 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
84814 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
84815 REAL(dp), &
84816 DIMENSION(9*nl_a, 1*nl_b, 5*nl_c, 5*nl_d) :: primitives
84817 REAL(dp), DIMENSION(15*1*6*6) :: buffer1, buffer2
84818
84819 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
84820 kmax, s_offset_a1, s_offset_b1, &
84821 s_offset_c1, s_offset_d1
84822
84823 s_offset_a1 = 0
84824 DO ia = 1, nl_a
84825 s_offset_b1 = 0
84826 DO ib = 1, nl_b
84827 s_offset_c1 = 0
84828 DO ic = 1, nl_c
84829 s_offset_d1 = 0
84830 DO id = 1, nl_d
84831 buffer1 = 0.0_dp
84832 imax = 1*6*6
84833 kmax = 15
84834 DO i = 1, imax
84835 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
84836 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
84837 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
84838 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
84839 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
84840 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
84841 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
84842 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
84843 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
84844 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
84845 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
84846 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
84847 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
84848 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
84849 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
84850 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
84851 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
84852 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
84853 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
84854 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
84855 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
84856 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
84857 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
84858 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
84859 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
84860 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
84861 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
84862 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
84863 END DO
84864 buffer2 = 0.0_dp
84865 imax = 9*6*6
84866 kmax = 1
84867 DO i = 1, imax
84868 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
84869 END DO
84870 buffer1 = 0.0_dp
84871 imax = 9*1*6
84872 kmax = 6
84873 DO i = 1, imax
84874 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
84875 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
84876 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
84877 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
84878 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
84879 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
84880 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
84881 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
84882 END DO
84883 imax = 9*1*5
84884 kmax = 6
84885 i = 0
84886 DO i1 = 1, 5
84887 DO i2 = 1, 1
84888 DO i3 = 1, 9
84889 i = i + 1
84890 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
84891 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
84892 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
84893 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
84894 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
84895 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
84896 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
84897 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
84898 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
84899 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
84900 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
84901 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
84902 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
84903 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
84904 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
84905 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
84906 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
84907 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
84908 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
84909 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
84910 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
84911 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
84912 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
84913 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
84914 END DO
84915 END DO
84916 END DO
84917 s_offset_d1 = s_offset_d1 + 5
84918 END DO
84919 s_offset_c1 = s_offset_c1 + 5
84920 END DO
84921 s_offset_b1 = s_offset_b1 + 1
84922 END DO
84923 s_offset_a1 = s_offset_a1 + 9
84924 END DO
84925 END SUBROUTINE contract_gsdd
84926#endif
84927#if __MAX_CONTR > 4 || __MAX_CONTR == 4
84928! **************************************************************************************************
84929!> \brief ...
84930!> \param work ...
84931!> \param nl_a ...
84932!> \param nl_b ...
84933!> \param nl_c ...
84934!> \param nl_d ...
84935!> \param sphi_a ...
84936!> \param sphi_b ...
84937!> \param sphi_c ...
84938!> \param sphi_d ...
84939!> \param primitives ...
84940!> \param buffer1 ...
84941!> \param buffer2 ...
84942! **************************************************************************************************
84943 SUBROUTINE contract_gsdf(work, &
84944 nl_a, nl_b, nl_c, nl_d, &
84945 sphi_a, sphi_b, sphi_c, sphi_d, &
84946 primitives, &
84947 buffer1, buffer2)
84948 REAL(dp), DIMENSION(15*1*6*10), INTENT(IN) :: work
84949 INTEGER :: nl_a, nl_b, nl_c, nl_d
84950 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
84951 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
84952 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
84953 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
84954 REAL(dp), &
84955 DIMENSION(9*nl_a, 1*nl_b, 5*nl_c, 7*nl_d) :: primitives
84956 REAL(dp), DIMENSION(15*1*6*10) :: buffer1, buffer2
84957
84958 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
84959 kmax, s_offset_a1, s_offset_b1, &
84960 s_offset_c1, s_offset_d1
84961
84962 s_offset_a1 = 0
84963 DO ia = 1, nl_a
84964 s_offset_b1 = 0
84965 DO ib = 1, nl_b
84966 s_offset_c1 = 0
84967 DO ic = 1, nl_c
84968 s_offset_d1 = 0
84969 DO id = 1, nl_d
84970 buffer1 = 0.0_dp
84971 imax = 1*6*10
84972 kmax = 15
84973 DO i = 1, imax
84974 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
84975 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
84976 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
84977 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
84978 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
84979 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
84980 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
84981 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
84982 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
84983 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
84984 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
84985 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
84986 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
84987 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
84988 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
84989 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
84990 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
84991 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
84992 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
84993 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
84994 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
84995 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
84996 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
84997 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
84998 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
84999 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
85000 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
85001 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
85002 END DO
85003 buffer2 = 0.0_dp
85004 imax = 9*6*10
85005 kmax = 1
85006 DO i = 1, imax
85007 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
85008 END DO
85009 buffer1 = 0.0_dp
85010 imax = 9*1*10
85011 kmax = 6
85012 DO i = 1, imax
85013 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
85014 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
85015 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
85016 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
85017 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
85018 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
85019 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
85020 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
85021 END DO
85022 imax = 9*1*5
85023 kmax = 10
85024 i = 0
85025 DO i1 = 1, 5
85026 DO i2 = 1, 1
85027 DO i3 = 1, 9
85028 i = i + 1
85029 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
85030 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
85031 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
85032 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
85033 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
85034 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
85035 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
85036 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
85037 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
85038 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
85039 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
85040 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
85041 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
85042 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
85043 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
85044 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
85045 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
85046 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
85047 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
85048 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
85049 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
85050 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
85051 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
85052 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
85053 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
85054 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
85055 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
85056 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
85057 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
85058 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
85059 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
85060 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
85061 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
85062 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
85063 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
85064 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
85065 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
85066 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
85067 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
85068 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
85069 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
85070 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
85071 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
85072 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
85073 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
85074 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
85075 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
85076 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
85077 END DO
85078 END DO
85079 END DO
85080 s_offset_d1 = s_offset_d1 + 7
85081 END DO
85082 s_offset_c1 = s_offset_c1 + 5
85083 END DO
85084 s_offset_b1 = s_offset_b1 + 1
85085 END DO
85086 s_offset_a1 = s_offset_a1 + 9
85087 END DO
85088 END SUBROUTINE contract_gsdf
85089#endif
85090#if __MAX_CONTR > 4 || __MAX_CONTR == 4
85091! **************************************************************************************************
85092!> \brief ...
85093!> \param work ...
85094!> \param nl_a ...
85095!> \param nl_b ...
85096!> \param nl_c ...
85097!> \param nl_d ...
85098!> \param sphi_a ...
85099!> \param sphi_b ...
85100!> \param sphi_c ...
85101!> \param sphi_d ...
85102!> \param primitives ...
85103!> \param buffer1 ...
85104!> \param buffer2 ...
85105! **************************************************************************************************
85106 SUBROUTINE contract_gsdg(work, &
85107 nl_a, nl_b, nl_c, nl_d, &
85108 sphi_a, sphi_b, sphi_c, sphi_d, &
85109 primitives, &
85110 buffer1, buffer2)
85111 REAL(dp), DIMENSION(15*1*6*15), INTENT(IN) :: work
85112 INTEGER :: nl_a, nl_b, nl_c, nl_d
85113 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
85114 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
85115 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
85116 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
85117 REAL(dp), &
85118 DIMENSION(9*nl_a, 1*nl_b, 5*nl_c, 9*nl_d) :: primitives
85119 REAL(dp), DIMENSION(15*1*6*15) :: buffer1, buffer2
85120
85121 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
85122 kmax, s_offset_a1, s_offset_b1, &
85123 s_offset_c1, s_offset_d1
85124
85125 s_offset_a1 = 0
85126 DO ia = 1, nl_a
85127 s_offset_b1 = 0
85128 DO ib = 1, nl_b
85129 s_offset_c1 = 0
85130 DO ic = 1, nl_c
85131 s_offset_d1 = 0
85132 DO id = 1, nl_d
85133 buffer1 = 0.0_dp
85134 imax = 1*6*15
85135 kmax = 15
85136 DO i = 1, imax
85137 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
85138 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
85139 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
85140 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
85141 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
85142 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
85143 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
85144 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
85145 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
85146 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
85147 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
85148 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
85149 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
85150 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
85151 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
85152 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
85153 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
85154 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
85155 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
85156 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
85157 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
85158 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
85159 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
85160 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
85161 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
85162 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
85163 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
85164 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
85165 END DO
85166 buffer2 = 0.0_dp
85167 imax = 9*6*15
85168 kmax = 1
85169 DO i = 1, imax
85170 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
85171 END DO
85172 buffer1 = 0.0_dp
85173 imax = 9*1*15
85174 kmax = 6
85175 DO i = 1, imax
85176 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
85177 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
85178 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
85179 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
85180 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
85181 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
85182 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
85183 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
85184 END DO
85185 imax = 9*1*5
85186 kmax = 15
85187 i = 0
85188 DO i1 = 1, 5
85189 DO i2 = 1, 1
85190 DO i3 = 1, 9
85191 i = i + 1
85192 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
85193 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
85194 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
85195 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
85196 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
85197 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
85198 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
85199 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
85200 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
85201 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
85202 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
85203 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
85204 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
85205 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
85206 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
85207 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
85208 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
85209 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
85210 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
85211 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
85212 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
85213 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
85214 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
85215 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
85216 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
85217 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
85218 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
85219 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
85220 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
85221 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
85222 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
85223 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
85224 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
85225 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
85226 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
85227 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
85228 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
85229 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
85230 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
85231 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
85232 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
85233 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
85234 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
85235 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
85236 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
85237 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
85238 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
85239 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
85240 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
85241 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
85242 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
85243 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
85244 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
85245 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
85246 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
85247 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
85248 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
85249 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
85250 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
85251 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
85252 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
85253 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
85254 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
85255 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
85256 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
85257 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
85258 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
85259 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
85260 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
85261 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
85262 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
85263 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
85264 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
85265 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
85266 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
85267 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
85268 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
85269 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
85270 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
85271 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
85272 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
85273 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
85274 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
85275 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
85276 END DO
85277 END DO
85278 END DO
85279 s_offset_d1 = s_offset_d1 + 9
85280 END DO
85281 s_offset_c1 = s_offset_c1 + 5
85282 END DO
85283 s_offset_b1 = s_offset_b1 + 1
85284 END DO
85285 s_offset_a1 = s_offset_a1 + 9
85286 END DO
85287 END SUBROUTINE contract_gsdg
85288#endif
85289#if __MAX_CONTR > 4 || __MAX_CONTR == 4
85290! **************************************************************************************************
85291!> \brief ...
85292!> \param work ...
85293!> \param nl_a ...
85294!> \param nl_b ...
85295!> \param nl_c ...
85296!> \param nl_d ...
85297!> \param sphi_a ...
85298!> \param sphi_b ...
85299!> \param sphi_c ...
85300!> \param sphi_d ...
85301!> \param primitives ...
85302!> \param buffer1 ...
85303!> \param buffer2 ...
85304! **************************************************************************************************
85305 SUBROUTINE contract_gsfs(work, &
85306 nl_a, nl_b, nl_c, nl_d, &
85307 sphi_a, sphi_b, sphi_c, sphi_d, &
85308 primitives, &
85309 buffer1, buffer2)
85310 REAL(dp), DIMENSION(15*1*10*1), INTENT(IN) :: work
85311 INTEGER :: nl_a, nl_b, nl_c, nl_d
85312 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
85313 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
85314 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
85315 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
85316 REAL(dp), &
85317 DIMENSION(9*nl_a, 1*nl_b, 7*nl_c, 1*nl_d) :: primitives
85318 REAL(dp), DIMENSION(15*1*10*1) :: buffer1, buffer2
85319
85320 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
85321 kmax, s_offset_a1, s_offset_b1, &
85322 s_offset_c1, s_offset_d1
85323
85324 s_offset_a1 = 0
85325 DO ia = 1, nl_a
85326 s_offset_b1 = 0
85327 DO ib = 1, nl_b
85328 s_offset_c1 = 0
85329 DO ic = 1, nl_c
85330 s_offset_d1 = 0
85331 DO id = 1, nl_d
85332 buffer1 = 0.0_dp
85333 imax = 1*10*1
85334 kmax = 15
85335 DO i = 1, imax
85336 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
85337 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
85338 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
85339 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
85340 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
85341 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
85342 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
85343 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
85344 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
85345 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
85346 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
85347 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
85348 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
85349 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
85350 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
85351 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
85352 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
85353 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
85354 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
85355 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
85356 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
85357 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
85358 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
85359 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
85360 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
85361 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
85362 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
85363 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
85364 END DO
85365 buffer2 = 0.0_dp
85366 imax = 9*10*1
85367 kmax = 1
85368 DO i = 1, imax
85369 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
85370 END DO
85371 buffer1 = 0.0_dp
85372 imax = 9*1*1
85373 kmax = 10
85374 DO i = 1, imax
85375 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
85376 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
85377 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
85378 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
85379 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
85380 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
85381 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
85382 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
85383 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
85384 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
85385 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
85386 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
85387 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
85388 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
85389 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
85390 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
85391 END DO
85392 imax = 9*1*7
85393 kmax = 1
85394 i = 0
85395 DO i1 = 1, 7
85396 DO i2 = 1, 1
85397 DO i3 = 1, 9
85398 i = i + 1
85399 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
85400 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
85401 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
85402 END DO
85403 END DO
85404 END DO
85405 s_offset_d1 = s_offset_d1 + 1
85406 END DO
85407 s_offset_c1 = s_offset_c1 + 7
85408 END DO
85409 s_offset_b1 = s_offset_b1 + 1
85410 END DO
85411 s_offset_a1 = s_offset_a1 + 9
85412 END DO
85413 END SUBROUTINE contract_gsfs
85414#endif
85415#if __MAX_CONTR > 4 || __MAX_CONTR == 4
85416! **************************************************************************************************
85417!> \brief ...
85418!> \param work ...
85419!> \param nl_a ...
85420!> \param nl_b ...
85421!> \param nl_c ...
85422!> \param nl_d ...
85423!> \param sphi_a ...
85424!> \param sphi_b ...
85425!> \param sphi_c ...
85426!> \param sphi_d ...
85427!> \param primitives ...
85428!> \param buffer1 ...
85429!> \param buffer2 ...
85430! **************************************************************************************************
85431 SUBROUTINE contract_gsfp(work, &
85432 nl_a, nl_b, nl_c, nl_d, &
85433 sphi_a, sphi_b, sphi_c, sphi_d, &
85434 primitives, &
85435 buffer1, buffer2)
85436 REAL(dp), DIMENSION(15*1*10*3), INTENT(IN) :: work
85437 INTEGER :: nl_a, nl_b, nl_c, nl_d
85438 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
85439 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
85440 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
85441 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
85442 REAL(dp), &
85443 DIMENSION(9*nl_a, 1*nl_b, 7*nl_c, 3*nl_d) :: primitives
85444 REAL(dp), DIMENSION(15*1*10*3) :: buffer1, buffer2
85445
85446 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
85447 kmax, s_offset_a1, s_offset_b1, &
85448 s_offset_c1, s_offset_d1
85449
85450 s_offset_a1 = 0
85451 DO ia = 1, nl_a
85452 s_offset_b1 = 0
85453 DO ib = 1, nl_b
85454 s_offset_c1 = 0
85455 DO ic = 1, nl_c
85456 s_offset_d1 = 0
85457 DO id = 1, nl_d
85458 buffer1 = 0.0_dp
85459 imax = 1*10*3
85460 kmax = 15
85461 DO i = 1, imax
85462 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
85463 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
85464 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
85465 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
85466 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
85467 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
85468 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
85469 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
85470 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
85471 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
85472 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
85473 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
85474 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
85475 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
85476 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
85477 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
85478 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
85479 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
85480 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
85481 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
85482 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
85483 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
85484 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
85485 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
85486 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
85487 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
85488 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
85489 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
85490 END DO
85491 buffer2 = 0.0_dp
85492 imax = 9*10*3
85493 kmax = 1
85494 DO i = 1, imax
85495 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
85496 END DO
85497 buffer1 = 0.0_dp
85498 imax = 9*1*3
85499 kmax = 10
85500 DO i = 1, imax
85501 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
85502 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
85503 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
85504 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
85505 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
85506 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
85507 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
85508 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
85509 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
85510 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
85511 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
85512 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
85513 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
85514 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
85515 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
85516 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
85517 END DO
85518 imax = 9*1*7
85519 kmax = 3
85520 i = 0
85521 DO i1 = 1, 7
85522 DO i2 = 1, 1
85523 DO i3 = 1, 9
85524 i = i + 1
85525 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
85526 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
85527 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
85528 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
85529 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
85530 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
85531 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
85532 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
85533 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
85534 END DO
85535 END DO
85536 END DO
85537 s_offset_d1 = s_offset_d1 + 3
85538 END DO
85539 s_offset_c1 = s_offset_c1 + 7
85540 END DO
85541 s_offset_b1 = s_offset_b1 + 1
85542 END DO
85543 s_offset_a1 = s_offset_a1 + 9
85544 END DO
85545 END SUBROUTINE contract_gsfp
85546#endif
85547#if __MAX_CONTR > 4 || __MAX_CONTR == 4
85548! **************************************************************************************************
85549!> \brief ...
85550!> \param work ...
85551!> \param nl_a ...
85552!> \param nl_b ...
85553!> \param nl_c ...
85554!> \param nl_d ...
85555!> \param sphi_a ...
85556!> \param sphi_b ...
85557!> \param sphi_c ...
85558!> \param sphi_d ...
85559!> \param primitives ...
85560!> \param buffer1 ...
85561!> \param buffer2 ...
85562! **************************************************************************************************
85563 SUBROUTINE contract_gsfd(work, &
85564 nl_a, nl_b, nl_c, nl_d, &
85565 sphi_a, sphi_b, sphi_c, sphi_d, &
85566 primitives, &
85567 buffer1, buffer2)
85568 REAL(dp), DIMENSION(15*1*10*6), INTENT(IN) :: work
85569 INTEGER :: nl_a, nl_b, nl_c, nl_d
85570 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
85571 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
85572 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
85573 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
85574 REAL(dp), &
85575 DIMENSION(9*nl_a, 1*nl_b, 7*nl_c, 5*nl_d) :: primitives
85576 REAL(dp), DIMENSION(15*1*10*6) :: buffer1, buffer2
85577
85578 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
85579 kmax, s_offset_a1, s_offset_b1, &
85580 s_offset_c1, s_offset_d1
85581
85582 s_offset_a1 = 0
85583 DO ia = 1, nl_a
85584 s_offset_b1 = 0
85585 DO ib = 1, nl_b
85586 s_offset_c1 = 0
85587 DO ic = 1, nl_c
85588 s_offset_d1 = 0
85589 DO id = 1, nl_d
85590 buffer1 = 0.0_dp
85591 imax = 1*10*6
85592 kmax = 15
85593 DO i = 1, imax
85594 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
85595 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
85596 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
85597 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
85598 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
85599 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
85600 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
85601 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
85602 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
85603 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
85604 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
85605 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
85606 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
85607 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
85608 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
85609 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
85610 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
85611 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
85612 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
85613 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
85614 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
85615 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
85616 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
85617 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
85618 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
85619 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
85620 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
85621 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
85622 END DO
85623 buffer2 = 0.0_dp
85624 imax = 9*10*6
85625 kmax = 1
85626 DO i = 1, imax
85627 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
85628 END DO
85629 buffer1 = 0.0_dp
85630 imax = 9*1*6
85631 kmax = 10
85632 DO i = 1, imax
85633 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
85634 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
85635 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
85636 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
85637 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
85638 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
85639 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
85640 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
85641 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
85642 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
85643 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
85644 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
85645 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
85646 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
85647 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
85648 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
85649 END DO
85650 imax = 9*1*7
85651 kmax = 6
85652 i = 0
85653 DO i1 = 1, 7
85654 DO i2 = 1, 1
85655 DO i3 = 1, 9
85656 i = i + 1
85657 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
85658 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
85659 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
85660 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
85661 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
85662 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
85663 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
85664 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
85665 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
85666 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
85667 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
85668 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
85669 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
85670 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
85671 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
85672 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
85673 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
85674 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
85675 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
85676 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
85677 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
85678 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
85679 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
85680 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
85681 END DO
85682 END DO
85683 END DO
85684 s_offset_d1 = s_offset_d1 + 5
85685 END DO
85686 s_offset_c1 = s_offset_c1 + 7
85687 END DO
85688 s_offset_b1 = s_offset_b1 + 1
85689 END DO
85690 s_offset_a1 = s_offset_a1 + 9
85691 END DO
85692 END SUBROUTINE contract_gsfd
85693#endif
85694#if __MAX_CONTR > 4 || __MAX_CONTR == 4
85695! **************************************************************************************************
85696!> \brief ...
85697!> \param work ...
85698!> \param nl_a ...
85699!> \param nl_b ...
85700!> \param nl_c ...
85701!> \param nl_d ...
85702!> \param sphi_a ...
85703!> \param sphi_b ...
85704!> \param sphi_c ...
85705!> \param sphi_d ...
85706!> \param primitives ...
85707!> \param buffer1 ...
85708!> \param buffer2 ...
85709! **************************************************************************************************
85710 SUBROUTINE contract_gsff(work, &
85711 nl_a, nl_b, nl_c, nl_d, &
85712 sphi_a, sphi_b, sphi_c, sphi_d, &
85713 primitives, &
85714 buffer1, buffer2)
85715 REAL(dp), DIMENSION(15*1*10*10), INTENT(IN) :: work
85716 INTEGER :: nl_a, nl_b, nl_c, nl_d
85717 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
85718 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
85719 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
85720 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
85721 REAL(dp), &
85722 DIMENSION(9*nl_a, 1*nl_b, 7*nl_c, 7*nl_d) :: primitives
85723 REAL(dp), DIMENSION(15*1*10*10) :: buffer1, buffer2
85724
85725 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
85726 kmax, s_offset_a1, s_offset_b1, &
85727 s_offset_c1, s_offset_d1
85728
85729 s_offset_a1 = 0
85730 DO ia = 1, nl_a
85731 s_offset_b1 = 0
85732 DO ib = 1, nl_b
85733 s_offset_c1 = 0
85734 DO ic = 1, nl_c
85735 s_offset_d1 = 0
85736 DO id = 1, nl_d
85737 buffer1 = 0.0_dp
85738 imax = 1*10*10
85739 kmax = 15
85740 DO i = 1, imax
85741 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
85742 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
85743 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
85744 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
85745 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
85746 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
85747 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
85748 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
85749 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
85750 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
85751 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
85752 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
85753 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
85754 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
85755 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
85756 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
85757 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
85758 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
85759 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
85760 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
85761 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
85762 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
85763 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
85764 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
85765 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
85766 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
85767 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
85768 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
85769 END DO
85770 buffer2 = 0.0_dp
85771 imax = 9*10*10
85772 kmax = 1
85773 DO i = 1, imax
85774 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
85775 END DO
85776 buffer1 = 0.0_dp
85777 imax = 9*1*10
85778 kmax = 10
85779 DO i = 1, imax
85780 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
85781 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
85782 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
85783 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
85784 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
85785 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
85786 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
85787 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
85788 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
85789 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
85790 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
85791 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
85792 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
85793 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
85794 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
85795 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
85796 END DO
85797 imax = 9*1*7
85798 kmax = 10
85799 i = 0
85800 DO i1 = 1, 7
85801 DO i2 = 1, 1
85802 DO i3 = 1, 9
85803 i = i + 1
85804 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
85805 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
85806 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
85807 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
85808 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
85809 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
85810 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
85811 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
85812 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
85813 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
85814 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
85815 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
85816 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
85817 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
85818 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
85819 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
85820 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
85821 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
85822 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
85823 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
85824 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
85825 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
85826 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
85827 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
85828 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
85829 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
85830 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
85831 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
85832 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
85833 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
85834 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
85835 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
85836 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
85837 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
85838 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
85839 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
85840 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
85841 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
85842 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
85843 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
85844 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
85845 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
85846 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
85847 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
85848 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
85849 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
85850 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
85851 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
85852 END DO
85853 END DO
85854 END DO
85855 s_offset_d1 = s_offset_d1 + 7
85856 END DO
85857 s_offset_c1 = s_offset_c1 + 7
85858 END DO
85859 s_offset_b1 = s_offset_b1 + 1
85860 END DO
85861 s_offset_a1 = s_offset_a1 + 9
85862 END DO
85863 END SUBROUTINE contract_gsff
85864#endif
85865#if __MAX_CONTR > 4 || __MAX_CONTR == 4
85866! **************************************************************************************************
85867!> \brief ...
85868!> \param work ...
85869!> \param nl_a ...
85870!> \param nl_b ...
85871!> \param nl_c ...
85872!> \param nl_d ...
85873!> \param sphi_a ...
85874!> \param sphi_b ...
85875!> \param sphi_c ...
85876!> \param sphi_d ...
85877!> \param primitives ...
85878!> \param buffer1 ...
85879!> \param buffer2 ...
85880! **************************************************************************************************
85881 SUBROUTINE contract_gsfg(work, &
85882 nl_a, nl_b, nl_c, nl_d, &
85883 sphi_a, sphi_b, sphi_c, sphi_d, &
85884 primitives, &
85885 buffer1, buffer2)
85886 REAL(dp), DIMENSION(15*1*10*15), INTENT(IN) :: work
85887 INTEGER :: nl_a, nl_b, nl_c, nl_d
85888 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
85889 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
85890 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
85891 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
85892 REAL(dp), &
85893 DIMENSION(9*nl_a, 1*nl_b, 7*nl_c, 9*nl_d) :: primitives
85894 REAL(dp), DIMENSION(15*1*10*15) :: buffer1, buffer2
85895
85896 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
85897 kmax, s_offset_a1, s_offset_b1, &
85898 s_offset_c1, s_offset_d1
85899
85900 s_offset_a1 = 0
85901 DO ia = 1, nl_a
85902 s_offset_b1 = 0
85903 DO ib = 1, nl_b
85904 s_offset_c1 = 0
85905 DO ic = 1, nl_c
85906 s_offset_d1 = 0
85907 DO id = 1, nl_d
85908 buffer1 = 0.0_dp
85909 imax = 1*10*15
85910 kmax = 15
85911 DO i = 1, imax
85912 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
85913 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
85914 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
85915 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
85916 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
85917 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
85918 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
85919 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
85920 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
85921 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
85922 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
85923 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
85924 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
85925 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
85926 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
85927 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
85928 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
85929 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
85930 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
85931 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
85932 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
85933 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
85934 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
85935 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
85936 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
85937 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
85938 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
85939 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
85940 END DO
85941 buffer2 = 0.0_dp
85942 imax = 9*10*15
85943 kmax = 1
85944 DO i = 1, imax
85945 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
85946 END DO
85947 buffer1 = 0.0_dp
85948 imax = 9*1*15
85949 kmax = 10
85950 DO i = 1, imax
85951 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
85952 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
85953 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
85954 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
85955 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
85956 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
85957 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
85958 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
85959 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
85960 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
85961 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
85962 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
85963 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
85964 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
85965 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
85966 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
85967 END DO
85968 imax = 9*1*7
85969 kmax = 15
85970 i = 0
85971 DO i1 = 1, 7
85972 DO i2 = 1, 1
85973 DO i3 = 1, 9
85974 i = i + 1
85975 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
85976 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
85977 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
85978 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
85979 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
85980 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
85981 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
85982 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
85983 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
85984 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
85985 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
85986 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
85987 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
85988 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
85989 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
85990 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
85991 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
85992 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
85993 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
85994 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
85995 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
85996 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
85997 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
85998 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
85999 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
86000 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
86001 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
86002 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
86003 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
86004 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
86005 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
86006 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
86007 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
86008 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
86009 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
86010 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
86011 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
86012 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
86013 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
86014 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
86015 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
86016 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
86017 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
86018 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
86019 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
86020 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
86021 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
86022 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
86023 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
86024 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
86025 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
86026 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
86027 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
86028 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
86029 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
86030 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
86031 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
86032 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
86033 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
86034 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
86035 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
86036 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
86037 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
86038 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
86039 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
86040 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
86041 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
86042 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
86043 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
86044 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
86045 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
86046 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
86047 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
86048 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
86049 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
86050 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
86051 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
86052 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
86053 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
86054 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
86055 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
86056 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
86057 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
86058 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
86059 END DO
86060 END DO
86061 END DO
86062 s_offset_d1 = s_offset_d1 + 9
86063 END DO
86064 s_offset_c1 = s_offset_c1 + 7
86065 END DO
86066 s_offset_b1 = s_offset_b1 + 1
86067 END DO
86068 s_offset_a1 = s_offset_a1 + 9
86069 END DO
86070 END SUBROUTINE contract_gsfg
86071#endif
86072#if __MAX_CONTR > 4 || __MAX_CONTR == 4
86073! **************************************************************************************************
86074!> \brief ...
86075!> \param work ...
86076!> \param nl_a ...
86077!> \param nl_b ...
86078!> \param nl_c ...
86079!> \param nl_d ...
86080!> \param sphi_a ...
86081!> \param sphi_b ...
86082!> \param sphi_c ...
86083!> \param sphi_d ...
86084!> \param primitives ...
86085!> \param buffer1 ...
86086!> \param buffer2 ...
86087! **************************************************************************************************
86088 SUBROUTINE contract_gsgs(work, &
86089 nl_a, nl_b, nl_c, nl_d, &
86090 sphi_a, sphi_b, sphi_c, sphi_d, &
86091 primitives, &
86092 buffer1, buffer2)
86093 REAL(dp), DIMENSION(15*1*15*1), INTENT(IN) :: work
86094 INTEGER :: nl_a, nl_b, nl_c, nl_d
86095 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
86096 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
86097 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
86098 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
86099 REAL(dp), &
86100 DIMENSION(9*nl_a, 1*nl_b, 9*nl_c, 1*nl_d) :: primitives
86101 REAL(dp), DIMENSION(15*1*15*1) :: buffer1, buffer2
86102
86103 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
86104 kmax, s_offset_a1, s_offset_b1, &
86105 s_offset_c1, s_offset_d1
86106
86107 s_offset_a1 = 0
86108 DO ia = 1, nl_a
86109 s_offset_b1 = 0
86110 DO ib = 1, nl_b
86111 s_offset_c1 = 0
86112 DO ic = 1, nl_c
86113 s_offset_d1 = 0
86114 DO id = 1, nl_d
86115 buffer1 = 0.0_dp
86116 imax = 1*15*1
86117 kmax = 15
86118 DO i = 1, imax
86119 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
86120 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
86121 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
86122 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
86123 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
86124 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
86125 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
86126 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
86127 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
86128 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
86129 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
86130 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
86131 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
86132 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
86133 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
86134 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
86135 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
86136 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
86137 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
86138 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
86139 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
86140 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
86141 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
86142 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
86143 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
86144 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
86145 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
86146 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
86147 END DO
86148 buffer2 = 0.0_dp
86149 imax = 9*15*1
86150 kmax = 1
86151 DO i = 1, imax
86152 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
86153 END DO
86154 buffer1 = 0.0_dp
86155 imax = 9*1*1
86156 kmax = 15
86157 DO i = 1, imax
86158 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
86159 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
86160 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
86161 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
86162 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
86163 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
86164 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
86165 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
86166 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
86167 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
86168 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
86169 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
86170 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
86171 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
86172 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
86173 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
86174 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
86175 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
86176 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
86177 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
86178 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
86179 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
86180 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
86181 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
86182 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
86183 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
86184 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
86185 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
86186 END DO
86187 imax = 9*1*9
86188 kmax = 1
86189 i = 0
86190 DO i1 = 1, 9
86191 DO i2 = 1, 1
86192 DO i3 = 1, 9
86193 i = i + 1
86194 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
86195 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
86196 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
86197 END DO
86198 END DO
86199 END DO
86200 s_offset_d1 = s_offset_d1 + 1
86201 END DO
86202 s_offset_c1 = s_offset_c1 + 9
86203 END DO
86204 s_offset_b1 = s_offset_b1 + 1
86205 END DO
86206 s_offset_a1 = s_offset_a1 + 9
86207 END DO
86208 END SUBROUTINE contract_gsgs
86209#endif
86210#if __MAX_CONTR > 4 || __MAX_CONTR == 4
86211! **************************************************************************************************
86212!> \brief ...
86213!> \param work ...
86214!> \param nl_a ...
86215!> \param nl_b ...
86216!> \param nl_c ...
86217!> \param nl_d ...
86218!> \param sphi_a ...
86219!> \param sphi_b ...
86220!> \param sphi_c ...
86221!> \param sphi_d ...
86222!> \param primitives ...
86223!> \param buffer1 ...
86224!> \param buffer2 ...
86225! **************************************************************************************************
86226 SUBROUTINE contract_gsgp(work, &
86227 nl_a, nl_b, nl_c, nl_d, &
86228 sphi_a, sphi_b, sphi_c, sphi_d, &
86229 primitives, &
86230 buffer1, buffer2)
86231 REAL(dp), DIMENSION(15*1*15*3), INTENT(IN) :: work
86232 INTEGER :: nl_a, nl_b, nl_c, nl_d
86233 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
86234 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
86235 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
86236 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
86237 REAL(dp), &
86238 DIMENSION(9*nl_a, 1*nl_b, 9*nl_c, 3*nl_d) :: primitives
86239 REAL(dp), DIMENSION(15*1*15*3) :: buffer1, buffer2
86240
86241 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
86242 kmax, s_offset_a1, s_offset_b1, &
86243 s_offset_c1, s_offset_d1
86244
86245 s_offset_a1 = 0
86246 DO ia = 1, nl_a
86247 s_offset_b1 = 0
86248 DO ib = 1, nl_b
86249 s_offset_c1 = 0
86250 DO ic = 1, nl_c
86251 s_offset_d1 = 0
86252 DO id = 1, nl_d
86253 buffer1 = 0.0_dp
86254 imax = 1*15*3
86255 kmax = 15
86256 DO i = 1, imax
86257 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
86258 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
86259 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
86260 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
86261 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
86262 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
86263 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
86264 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
86265 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
86266 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
86267 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
86268 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
86269 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
86270 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
86271 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
86272 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
86273 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
86274 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
86275 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
86276 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
86277 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
86278 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
86279 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
86280 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
86281 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
86282 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
86283 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
86284 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
86285 END DO
86286 buffer2 = 0.0_dp
86287 imax = 9*15*3
86288 kmax = 1
86289 DO i = 1, imax
86290 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
86291 END DO
86292 buffer1 = 0.0_dp
86293 imax = 9*1*3
86294 kmax = 15
86295 DO i = 1, imax
86296 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
86297 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
86298 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
86299 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
86300 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
86301 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
86302 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
86303 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
86304 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
86305 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
86306 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
86307 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
86308 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
86309 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
86310 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
86311 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
86312 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
86313 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
86314 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
86315 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
86316 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
86317 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
86318 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
86319 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
86320 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
86321 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
86322 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
86323 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
86324 END DO
86325 imax = 9*1*9
86326 kmax = 3
86327 i = 0
86328 DO i1 = 1, 9
86329 DO i2 = 1, 1
86330 DO i3 = 1, 9
86331 i = i + 1
86332 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
86333 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
86334 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
86335 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
86336 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
86337 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
86338 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
86339 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
86340 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
86341 END DO
86342 END DO
86343 END DO
86344 s_offset_d1 = s_offset_d1 + 3
86345 END DO
86346 s_offset_c1 = s_offset_c1 + 9
86347 END DO
86348 s_offset_b1 = s_offset_b1 + 1
86349 END DO
86350 s_offset_a1 = s_offset_a1 + 9
86351 END DO
86352 END SUBROUTINE contract_gsgp
86353#endif
86354#if __MAX_CONTR > 4 || __MAX_CONTR == 4
86355! **************************************************************************************************
86356!> \brief ...
86357!> \param work ...
86358!> \param nl_a ...
86359!> \param nl_b ...
86360!> \param nl_c ...
86361!> \param nl_d ...
86362!> \param sphi_a ...
86363!> \param sphi_b ...
86364!> \param sphi_c ...
86365!> \param sphi_d ...
86366!> \param primitives ...
86367!> \param buffer1 ...
86368!> \param buffer2 ...
86369! **************************************************************************************************
86370 SUBROUTINE contract_gsgd(work, &
86371 nl_a, nl_b, nl_c, nl_d, &
86372 sphi_a, sphi_b, sphi_c, sphi_d, &
86373 primitives, &
86374 buffer1, buffer2)
86375 REAL(dp), DIMENSION(15*1*15*6), INTENT(IN) :: work
86376 INTEGER :: nl_a, nl_b, nl_c, nl_d
86377 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
86378 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
86379 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
86380 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
86381 REAL(dp), &
86382 DIMENSION(9*nl_a, 1*nl_b, 9*nl_c, 5*nl_d) :: primitives
86383 REAL(dp), DIMENSION(15*1*15*6) :: buffer1, buffer2
86384
86385 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
86386 kmax, s_offset_a1, s_offset_b1, &
86387 s_offset_c1, s_offset_d1
86388
86389 s_offset_a1 = 0
86390 DO ia = 1, nl_a
86391 s_offset_b1 = 0
86392 DO ib = 1, nl_b
86393 s_offset_c1 = 0
86394 DO ic = 1, nl_c
86395 s_offset_d1 = 0
86396 DO id = 1, nl_d
86397 buffer1 = 0.0_dp
86398 imax = 1*15*6
86399 kmax = 15
86400 DO i = 1, imax
86401 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
86402 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
86403 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
86404 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
86405 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
86406 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
86407 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
86408 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
86409 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
86410 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
86411 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
86412 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
86413 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
86414 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
86415 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
86416 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
86417 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
86418 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
86419 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
86420 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
86421 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
86422 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
86423 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
86424 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
86425 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
86426 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
86427 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
86428 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
86429 END DO
86430 buffer2 = 0.0_dp
86431 imax = 9*15*6
86432 kmax = 1
86433 DO i = 1, imax
86434 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
86435 END DO
86436 buffer1 = 0.0_dp
86437 imax = 9*1*6
86438 kmax = 15
86439 DO i = 1, imax
86440 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
86441 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
86442 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
86443 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
86444 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
86445 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
86446 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
86447 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
86448 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
86449 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
86450 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
86451 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
86452 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
86453 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
86454 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
86455 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
86456 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
86457 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
86458 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
86459 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
86460 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
86461 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
86462 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
86463 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
86464 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
86465 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
86466 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
86467 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
86468 END DO
86469 imax = 9*1*9
86470 kmax = 6
86471 i = 0
86472 DO i1 = 1, 9
86473 DO i2 = 1, 1
86474 DO i3 = 1, 9
86475 i = i + 1
86476 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
86477 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
86478 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
86479 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
86480 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
86481 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
86482 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
86483 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
86484 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
86485 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
86486 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
86487 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
86488 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
86489 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
86490 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
86491 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
86492 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
86493 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
86494 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
86495 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
86496 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
86497 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
86498 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
86499 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
86500 END DO
86501 END DO
86502 END DO
86503 s_offset_d1 = s_offset_d1 + 5
86504 END DO
86505 s_offset_c1 = s_offset_c1 + 9
86506 END DO
86507 s_offset_b1 = s_offset_b1 + 1
86508 END DO
86509 s_offset_a1 = s_offset_a1 + 9
86510 END DO
86511 END SUBROUTINE contract_gsgd
86512#endif
86513#if __MAX_CONTR > 4 || __MAX_CONTR == 4
86514! **************************************************************************************************
86515!> \brief ...
86516!> \param work ...
86517!> \param nl_a ...
86518!> \param nl_b ...
86519!> \param nl_c ...
86520!> \param nl_d ...
86521!> \param sphi_a ...
86522!> \param sphi_b ...
86523!> \param sphi_c ...
86524!> \param sphi_d ...
86525!> \param primitives ...
86526!> \param buffer1 ...
86527!> \param buffer2 ...
86528! **************************************************************************************************
86529 SUBROUTINE contract_gsgf(work, &
86530 nl_a, nl_b, nl_c, nl_d, &
86531 sphi_a, sphi_b, sphi_c, sphi_d, &
86532 primitives, &
86533 buffer1, buffer2)
86534 REAL(dp), DIMENSION(15*1*15*10), INTENT(IN) :: work
86535 INTEGER :: nl_a, nl_b, nl_c, nl_d
86536 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
86537 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
86538 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
86539 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
86540 REAL(dp), &
86541 DIMENSION(9*nl_a, 1*nl_b, 9*nl_c, 7*nl_d) :: primitives
86542 REAL(dp), DIMENSION(15*1*15*10) :: buffer1, buffer2
86543
86544 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
86545 kmax, s_offset_a1, s_offset_b1, &
86546 s_offset_c1, s_offset_d1
86547
86548 s_offset_a1 = 0
86549 DO ia = 1, nl_a
86550 s_offset_b1 = 0
86551 DO ib = 1, nl_b
86552 s_offset_c1 = 0
86553 DO ic = 1, nl_c
86554 s_offset_d1 = 0
86555 DO id = 1, nl_d
86556 buffer1 = 0.0_dp
86557 imax = 1*15*10
86558 kmax = 15
86559 DO i = 1, imax
86560 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
86561 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
86562 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
86563 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
86564 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
86565 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
86566 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
86567 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
86568 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
86569 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
86570 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
86571 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
86572 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
86573 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
86574 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
86575 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
86576 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
86577 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
86578 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
86579 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
86580 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
86581 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
86582 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
86583 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
86584 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
86585 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
86586 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
86587 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
86588 END DO
86589 buffer2 = 0.0_dp
86590 imax = 9*15*10
86591 kmax = 1
86592 DO i = 1, imax
86593 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
86594 END DO
86595 buffer1 = 0.0_dp
86596 imax = 9*1*10
86597 kmax = 15
86598 DO i = 1, imax
86599 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
86600 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
86601 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
86602 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
86603 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
86604 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
86605 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
86606 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
86607 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
86608 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
86609 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
86610 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
86611 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
86612 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
86613 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
86614 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
86615 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
86616 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
86617 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
86618 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
86619 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
86620 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
86621 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
86622 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
86623 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
86624 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
86625 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
86626 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
86627 END DO
86628 imax = 9*1*9
86629 kmax = 10
86630 i = 0
86631 DO i1 = 1, 9
86632 DO i2 = 1, 1
86633 DO i3 = 1, 9
86634 i = i + 1
86635 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
86636 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
86637 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
86638 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
86639 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
86640 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
86641 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
86642 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
86643 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
86644 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
86645 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
86646 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
86647 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
86648 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
86649 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
86650 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
86651 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
86652 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
86653 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
86654 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
86655 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
86656 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
86657 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
86658 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
86659 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
86660 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
86661 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
86662 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
86663 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
86664 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
86665 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
86666 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
86667 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
86668 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
86669 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
86670 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
86671 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
86672 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
86673 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
86674 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
86675 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
86676 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
86677 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
86678 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
86679 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
86680 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
86681 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
86682 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
86683 END DO
86684 END DO
86685 END DO
86686 s_offset_d1 = s_offset_d1 + 7
86687 END DO
86688 s_offset_c1 = s_offset_c1 + 9
86689 END DO
86690 s_offset_b1 = s_offset_b1 + 1
86691 END DO
86692 s_offset_a1 = s_offset_a1 + 9
86693 END DO
86694 END SUBROUTINE contract_gsgf
86695#endif
86696#if __MAX_CONTR > 4 || __MAX_CONTR == 4
86697! **************************************************************************************************
86698!> \brief ...
86699!> \param work ...
86700!> \param nl_a ...
86701!> \param nl_b ...
86702!> \param nl_c ...
86703!> \param nl_d ...
86704!> \param sphi_a ...
86705!> \param sphi_b ...
86706!> \param sphi_c ...
86707!> \param sphi_d ...
86708!> \param primitives ...
86709!> \param buffer1 ...
86710!> \param buffer2 ...
86711! **************************************************************************************************
86712 SUBROUTINE contract_gsgg(work, &
86713 nl_a, nl_b, nl_c, nl_d, &
86714 sphi_a, sphi_b, sphi_c, sphi_d, &
86715 primitives, &
86716 buffer1, buffer2)
86717 REAL(dp), DIMENSION(15*1*15*15), INTENT(IN) :: work
86718 INTEGER :: nl_a, nl_b, nl_c, nl_d
86719 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
86720 REAL(dp), DIMENSION(1, 1*nl_b), INTENT(IN) :: sphi_b
86721 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
86722 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
86723 REAL(dp), &
86724 DIMENSION(9*nl_a, 1*nl_b, 9*nl_c, 9*nl_d) :: primitives
86725 REAL(dp), DIMENSION(15*1*15*15) :: buffer1, buffer2
86726
86727 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
86728 kmax, s_offset_a1, s_offset_b1, &
86729 s_offset_c1, s_offset_d1
86730
86731 s_offset_a1 = 0
86732 DO ia = 1, nl_a
86733 s_offset_b1 = 0
86734 DO ib = 1, nl_b
86735 s_offset_c1 = 0
86736 DO ic = 1, nl_c
86737 s_offset_d1 = 0
86738 DO id = 1, nl_d
86739 buffer1 = 0.0_dp
86740 imax = 1*15*15
86741 kmax = 15
86742 DO i = 1, imax
86743 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
86744 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
86745 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
86746 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
86747 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
86748 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
86749 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
86750 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
86751 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
86752 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
86753 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
86754 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
86755 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
86756 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
86757 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
86758 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
86759 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
86760 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
86761 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
86762 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
86763 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
86764 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
86765 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
86766 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
86767 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
86768 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
86769 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
86770 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
86771 END DO
86772 buffer2 = 0.0_dp
86773 imax = 9*15*15
86774 kmax = 1
86775 DO i = 1, imax
86776 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
86777 END DO
86778 buffer1 = 0.0_dp
86779 imax = 9*1*15
86780 kmax = 15
86781 DO i = 1, imax
86782 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
86783 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
86784 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
86785 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
86786 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
86787 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
86788 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
86789 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
86790 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
86791 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
86792 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
86793 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
86794 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
86795 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
86796 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
86797 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
86798 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
86799 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
86800 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
86801 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
86802 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
86803 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
86804 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
86805 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
86806 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
86807 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
86808 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
86809 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
86810 END DO
86811 imax = 9*1*9
86812 kmax = 15
86813 i = 0
86814 DO i1 = 1, 9
86815 DO i2 = 1, 1
86816 DO i3 = 1, 9
86817 i = i + 1
86818 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
86819 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
86820 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
86821 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
86822 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
86823 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
86824 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
86825 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
86826 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
86827 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
86828 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
86829 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
86830 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
86831 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
86832 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
86833 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
86834 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
86835 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
86836 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
86837 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
86838 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
86839 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
86840 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
86841 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
86842 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
86843 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
86844 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
86845 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
86846 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
86847 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
86848 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
86849 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
86850 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
86851 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
86852 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
86853 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
86854 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
86855 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
86856 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
86857 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
86858 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
86859 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
86860 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
86861 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
86862 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
86863 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
86864 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
86865 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
86866 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
86867 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
86868 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
86869 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
86870 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
86871 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
86872 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
86873 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
86874 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
86875 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
86876 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
86877 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
86878 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
86879 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
86880 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
86881 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
86882 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
86883 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
86884 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
86885 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
86886 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
86887 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
86888 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
86889 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
86890 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
86891 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
86892 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
86893 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
86894 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
86895 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
86896 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
86897 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
86898 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
86899 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
86900 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
86901 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
86902 END DO
86903 END DO
86904 END DO
86905 s_offset_d1 = s_offset_d1 + 9
86906 END DO
86907 s_offset_c1 = s_offset_c1 + 9
86908 END DO
86909 s_offset_b1 = s_offset_b1 + 1
86910 END DO
86911 s_offset_a1 = s_offset_a1 + 9
86912 END DO
86913 END SUBROUTINE contract_gsgg
86914#endif
86915#if __MAX_CONTR > 4 || __MAX_CONTR == 4
86916! **************************************************************************************************
86917!> \brief ...
86918!> \param work ...
86919!> \param nl_a ...
86920!> \param nl_b ...
86921!> \param nl_c ...
86922!> \param nl_d ...
86923!> \param sphi_a ...
86924!> \param sphi_b ...
86925!> \param sphi_c ...
86926!> \param sphi_d ...
86927!> \param primitives ...
86928!> \param buffer1 ...
86929!> \param buffer2 ...
86930! **************************************************************************************************
86931 SUBROUTINE contract_gpss(work, &
86932 nl_a, nl_b, nl_c, nl_d, &
86933 sphi_a, sphi_b, sphi_c, sphi_d, &
86934 primitives, &
86935 buffer1, buffer2)
86936 REAL(dp), DIMENSION(15*3*1*1), INTENT(IN) :: work
86937 INTEGER :: nl_a, nl_b, nl_c, nl_d
86938 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
86939 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
86940 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
86941 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
86942 REAL(dp), &
86943 DIMENSION(9*nl_a, 3*nl_b, 1*nl_c, 1*nl_d) :: primitives
86944 REAL(dp), DIMENSION(15*3*1*1) :: buffer1, buffer2
86945
86946 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
86947 kmax, s_offset_a1, s_offset_b1, &
86948 s_offset_c1, s_offset_d1
86949
86950 s_offset_a1 = 0
86951 DO ia = 1, nl_a
86952 s_offset_b1 = 0
86953 DO ib = 1, nl_b
86954 s_offset_c1 = 0
86955 DO ic = 1, nl_c
86956 s_offset_d1 = 0
86957 DO id = 1, nl_d
86958 buffer1 = 0.0_dp
86959 imax = 3*1*1
86960 kmax = 15
86961 DO i = 1, imax
86962 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
86963 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
86964 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
86965 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
86966 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
86967 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
86968 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
86969 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
86970 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
86971 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
86972 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
86973 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
86974 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
86975 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
86976 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
86977 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
86978 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
86979 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
86980 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
86981 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
86982 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
86983 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
86984 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
86985 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
86986 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
86987 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
86988 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
86989 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
86990 END DO
86991 buffer2 = 0.0_dp
86992 imax = 9*1*1
86993 kmax = 3
86994 DO i = 1, imax
86995 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
86996 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
86997 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
86998 END DO
86999 buffer1 = 0.0_dp
87000 imax = 9*3*1
87001 kmax = 1
87002 DO i = 1, imax
87003 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
87004 END DO
87005 imax = 9*3*1
87006 kmax = 1
87007 i = 0
87008 DO i1 = 1, 1
87009 DO i2 = 1, 3
87010 DO i3 = 1, 9
87011 i = i + 1
87012 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
87013 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
87014 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
87015 END DO
87016 END DO
87017 END DO
87018 s_offset_d1 = s_offset_d1 + 1
87019 END DO
87020 s_offset_c1 = s_offset_c1 + 1
87021 END DO
87022 s_offset_b1 = s_offset_b1 + 3
87023 END DO
87024 s_offset_a1 = s_offset_a1 + 9
87025 END DO
87026 END SUBROUTINE contract_gpss
87027#endif
87028#if __MAX_CONTR > 4 || __MAX_CONTR == 4
87029! **************************************************************************************************
87030!> \brief ...
87031!> \param work ...
87032!> \param nl_a ...
87033!> \param nl_b ...
87034!> \param nl_c ...
87035!> \param nl_d ...
87036!> \param sphi_a ...
87037!> \param sphi_b ...
87038!> \param sphi_c ...
87039!> \param sphi_d ...
87040!> \param primitives ...
87041!> \param buffer1 ...
87042!> \param buffer2 ...
87043! **************************************************************************************************
87044 SUBROUTINE contract_gpsp(work, &
87045 nl_a, nl_b, nl_c, nl_d, &
87046 sphi_a, sphi_b, sphi_c, sphi_d, &
87047 primitives, &
87048 buffer1, buffer2)
87049 REAL(dp), DIMENSION(15*3*1*3), INTENT(IN) :: work
87050 INTEGER :: nl_a, nl_b, nl_c, nl_d
87051 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
87052 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
87053 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
87054 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
87055 REAL(dp), &
87056 DIMENSION(9*nl_a, 3*nl_b, 1*nl_c, 3*nl_d) :: primitives
87057 REAL(dp), DIMENSION(15*3*1*3) :: buffer1, buffer2
87058
87059 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
87060 kmax, s_offset_a1, s_offset_b1, &
87061 s_offset_c1, s_offset_d1
87062
87063 s_offset_a1 = 0
87064 DO ia = 1, nl_a
87065 s_offset_b1 = 0
87066 DO ib = 1, nl_b
87067 s_offset_c1 = 0
87068 DO ic = 1, nl_c
87069 s_offset_d1 = 0
87070 DO id = 1, nl_d
87071 buffer1 = 0.0_dp
87072 imax = 3*1*3
87073 kmax = 15
87074 DO i = 1, imax
87075 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
87076 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
87077 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
87078 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
87079 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
87080 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
87081 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
87082 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
87083 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
87084 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
87085 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
87086 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
87087 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
87088 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
87089 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
87090 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
87091 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
87092 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
87093 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
87094 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
87095 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
87096 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
87097 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
87098 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
87099 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
87100 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
87101 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
87102 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
87103 END DO
87104 buffer2 = 0.0_dp
87105 imax = 9*1*3
87106 kmax = 3
87107 DO i = 1, imax
87108 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
87109 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
87110 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
87111 END DO
87112 buffer1 = 0.0_dp
87113 imax = 9*3*3
87114 kmax = 1
87115 DO i = 1, imax
87116 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
87117 END DO
87118 imax = 9*3*1
87119 kmax = 3
87120 i = 0
87121 DO i1 = 1, 1
87122 DO i2 = 1, 3
87123 DO i3 = 1, 9
87124 i = i + 1
87125 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
87126 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
87127 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
87128 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
87129 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
87130 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
87131 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
87132 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
87133 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
87134 END DO
87135 END DO
87136 END DO
87137 s_offset_d1 = s_offset_d1 + 3
87138 END DO
87139 s_offset_c1 = s_offset_c1 + 1
87140 END DO
87141 s_offset_b1 = s_offset_b1 + 3
87142 END DO
87143 s_offset_a1 = s_offset_a1 + 9
87144 END DO
87145 END SUBROUTINE contract_gpsp
87146#endif
87147#if __MAX_CONTR > 4 || __MAX_CONTR == 4
87148! **************************************************************************************************
87149!> \brief ...
87150!> \param work ...
87151!> \param nl_a ...
87152!> \param nl_b ...
87153!> \param nl_c ...
87154!> \param nl_d ...
87155!> \param sphi_a ...
87156!> \param sphi_b ...
87157!> \param sphi_c ...
87158!> \param sphi_d ...
87159!> \param primitives ...
87160!> \param buffer1 ...
87161!> \param buffer2 ...
87162! **************************************************************************************************
87163 SUBROUTINE contract_gpsd(work, &
87164 nl_a, nl_b, nl_c, nl_d, &
87165 sphi_a, sphi_b, sphi_c, sphi_d, &
87166 primitives, &
87167 buffer1, buffer2)
87168 REAL(dp), DIMENSION(15*3*1*6), INTENT(IN) :: work
87169 INTEGER :: nl_a, nl_b, nl_c, nl_d
87170 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
87171 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
87172 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
87173 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
87174 REAL(dp), &
87175 DIMENSION(9*nl_a, 3*nl_b, 1*nl_c, 5*nl_d) :: primitives
87176 REAL(dp), DIMENSION(15*3*1*6) :: buffer1, buffer2
87177
87178 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
87179 kmax, s_offset_a1, s_offset_b1, &
87180 s_offset_c1, s_offset_d1
87181
87182 s_offset_a1 = 0
87183 DO ia = 1, nl_a
87184 s_offset_b1 = 0
87185 DO ib = 1, nl_b
87186 s_offset_c1 = 0
87187 DO ic = 1, nl_c
87188 s_offset_d1 = 0
87189 DO id = 1, nl_d
87190 buffer1 = 0.0_dp
87191 imax = 3*1*6
87192 kmax = 15
87193 DO i = 1, imax
87194 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
87195 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
87196 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
87197 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
87198 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
87199 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
87200 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
87201 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
87202 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
87203 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
87204 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
87205 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
87206 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
87207 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
87208 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
87209 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
87210 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
87211 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
87212 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
87213 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
87214 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
87215 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
87216 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
87217 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
87218 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
87219 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
87220 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
87221 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
87222 END DO
87223 buffer2 = 0.0_dp
87224 imax = 9*1*6
87225 kmax = 3
87226 DO i = 1, imax
87227 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
87228 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
87229 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
87230 END DO
87231 buffer1 = 0.0_dp
87232 imax = 9*3*6
87233 kmax = 1
87234 DO i = 1, imax
87235 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
87236 END DO
87237 imax = 9*3*1
87238 kmax = 6
87239 i = 0
87240 DO i1 = 1, 1
87241 DO i2 = 1, 3
87242 DO i3 = 1, 9
87243 i = i + 1
87244 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
87245 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
87246 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
87247 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
87248 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
87249 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
87250 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
87251 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
87252 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
87253 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
87254 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
87255 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
87256 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
87257 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
87258 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
87259 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
87260 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
87261 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
87262 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
87263 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
87264 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
87265 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
87266 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
87267 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
87268 END DO
87269 END DO
87270 END DO
87271 s_offset_d1 = s_offset_d1 + 5
87272 END DO
87273 s_offset_c1 = s_offset_c1 + 1
87274 END DO
87275 s_offset_b1 = s_offset_b1 + 3
87276 END DO
87277 s_offset_a1 = s_offset_a1 + 9
87278 END DO
87279 END SUBROUTINE contract_gpsd
87280#endif
87281#if __MAX_CONTR > 4 || __MAX_CONTR == 4
87282! **************************************************************************************************
87283!> \brief ...
87284!> \param work ...
87285!> \param nl_a ...
87286!> \param nl_b ...
87287!> \param nl_c ...
87288!> \param nl_d ...
87289!> \param sphi_a ...
87290!> \param sphi_b ...
87291!> \param sphi_c ...
87292!> \param sphi_d ...
87293!> \param primitives ...
87294!> \param buffer1 ...
87295!> \param buffer2 ...
87296! **************************************************************************************************
87297 SUBROUTINE contract_gpsf(work, &
87298 nl_a, nl_b, nl_c, nl_d, &
87299 sphi_a, sphi_b, sphi_c, sphi_d, &
87300 primitives, &
87301 buffer1, buffer2)
87302 REAL(dp), DIMENSION(15*3*1*10), INTENT(IN) :: work
87303 INTEGER :: nl_a, nl_b, nl_c, nl_d
87304 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
87305 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
87306 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
87307 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
87308 REAL(dp), &
87309 DIMENSION(9*nl_a, 3*nl_b, 1*nl_c, 7*nl_d) :: primitives
87310 REAL(dp), DIMENSION(15*3*1*10) :: buffer1, buffer2
87311
87312 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
87313 kmax, s_offset_a1, s_offset_b1, &
87314 s_offset_c1, s_offset_d1
87315
87316 s_offset_a1 = 0
87317 DO ia = 1, nl_a
87318 s_offset_b1 = 0
87319 DO ib = 1, nl_b
87320 s_offset_c1 = 0
87321 DO ic = 1, nl_c
87322 s_offset_d1 = 0
87323 DO id = 1, nl_d
87324 buffer1 = 0.0_dp
87325 imax = 3*1*10
87326 kmax = 15
87327 DO i = 1, imax
87328 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
87329 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
87330 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
87331 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
87332 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
87333 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
87334 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
87335 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
87336 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
87337 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
87338 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
87339 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
87340 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
87341 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
87342 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
87343 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
87344 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
87345 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
87346 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
87347 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
87348 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
87349 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
87350 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
87351 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
87352 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
87353 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
87354 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
87355 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
87356 END DO
87357 buffer2 = 0.0_dp
87358 imax = 9*1*10
87359 kmax = 3
87360 DO i = 1, imax
87361 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
87362 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
87363 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
87364 END DO
87365 buffer1 = 0.0_dp
87366 imax = 9*3*10
87367 kmax = 1
87368 DO i = 1, imax
87369 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
87370 END DO
87371 imax = 9*3*1
87372 kmax = 10
87373 i = 0
87374 DO i1 = 1, 1
87375 DO i2 = 1, 3
87376 DO i3 = 1, 9
87377 i = i + 1
87378 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
87379 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
87380 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
87381 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
87382 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
87383 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
87384 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
87385 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
87386 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
87387 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
87388 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
87389 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
87390 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
87391 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
87392 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
87393 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
87394 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
87395 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
87396 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
87397 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
87398 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
87399 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
87400 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
87401 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
87402 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
87403 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
87404 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
87405 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
87406 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
87407 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
87408 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
87409 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
87410 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
87411 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
87412 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
87413 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
87414 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
87415 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
87416 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
87417 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
87418 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
87419 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
87420 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
87421 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
87422 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
87423 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
87424 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
87425 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
87426 END DO
87427 END DO
87428 END DO
87429 s_offset_d1 = s_offset_d1 + 7
87430 END DO
87431 s_offset_c1 = s_offset_c1 + 1
87432 END DO
87433 s_offset_b1 = s_offset_b1 + 3
87434 END DO
87435 s_offset_a1 = s_offset_a1 + 9
87436 END DO
87437 END SUBROUTINE contract_gpsf
87438#endif
87439#if __MAX_CONTR > 4 || __MAX_CONTR == 4
87440! **************************************************************************************************
87441!> \brief ...
87442!> \param work ...
87443!> \param nl_a ...
87444!> \param nl_b ...
87445!> \param nl_c ...
87446!> \param nl_d ...
87447!> \param sphi_a ...
87448!> \param sphi_b ...
87449!> \param sphi_c ...
87450!> \param sphi_d ...
87451!> \param primitives ...
87452!> \param buffer1 ...
87453!> \param buffer2 ...
87454! **************************************************************************************************
87455 SUBROUTINE contract_gpsg(work, &
87456 nl_a, nl_b, nl_c, nl_d, &
87457 sphi_a, sphi_b, sphi_c, sphi_d, &
87458 primitives, &
87459 buffer1, buffer2)
87460 REAL(dp), DIMENSION(15*3*1*15), INTENT(IN) :: work
87461 INTEGER :: nl_a, nl_b, nl_c, nl_d
87462 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
87463 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
87464 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
87465 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
87466 REAL(dp), &
87467 DIMENSION(9*nl_a, 3*nl_b, 1*nl_c, 9*nl_d) :: primitives
87468 REAL(dp), DIMENSION(15*3*1*15) :: buffer1, buffer2
87469
87470 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
87471 kmax, s_offset_a1, s_offset_b1, &
87472 s_offset_c1, s_offset_d1
87473
87474 s_offset_a1 = 0
87475 DO ia = 1, nl_a
87476 s_offset_b1 = 0
87477 DO ib = 1, nl_b
87478 s_offset_c1 = 0
87479 DO ic = 1, nl_c
87480 s_offset_d1 = 0
87481 DO id = 1, nl_d
87482 buffer1 = 0.0_dp
87483 imax = 3*1*15
87484 kmax = 15
87485 DO i = 1, imax
87486 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
87487 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
87488 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
87489 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
87490 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
87491 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
87492 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
87493 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
87494 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
87495 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
87496 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
87497 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
87498 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
87499 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
87500 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
87501 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
87502 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
87503 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
87504 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
87505 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
87506 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
87507 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
87508 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
87509 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
87510 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
87511 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
87512 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
87513 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
87514 END DO
87515 buffer2 = 0.0_dp
87516 imax = 9*1*15
87517 kmax = 3
87518 DO i = 1, imax
87519 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
87520 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
87521 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
87522 END DO
87523 buffer1 = 0.0_dp
87524 imax = 9*3*15
87525 kmax = 1
87526 DO i = 1, imax
87527 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
87528 END DO
87529 imax = 9*3*1
87530 kmax = 15
87531 i = 0
87532 DO i1 = 1, 1
87533 DO i2 = 1, 3
87534 DO i3 = 1, 9
87535 i = i + 1
87536 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
87537 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
87538 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
87539 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
87540 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
87541 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
87542 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
87543 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
87544 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
87545 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
87546 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
87547 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
87548 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
87549 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
87550 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
87551 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
87552 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
87553 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
87554 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
87555 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
87556 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
87557 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
87558 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
87559 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
87560 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
87561 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
87562 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
87563 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
87564 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
87565 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
87566 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
87567 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
87568 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
87569 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
87570 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
87571 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
87572 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
87573 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
87574 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
87575 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
87576 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
87577 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
87578 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
87579 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
87580 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
87581 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
87582 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
87583 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
87584 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
87585 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
87586 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
87587 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
87588 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
87589 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
87590 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
87591 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
87592 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
87593 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
87594 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
87595 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
87596 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
87597 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
87598 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
87599 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
87600 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
87601 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
87602 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
87603 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
87604 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
87605 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
87606 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
87607 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
87608 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
87609 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
87610 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
87611 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
87612 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
87613 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
87614 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
87615 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
87616 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
87617 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
87618 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
87619 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
87620 END DO
87621 END DO
87622 END DO
87623 s_offset_d1 = s_offset_d1 + 9
87624 END DO
87625 s_offset_c1 = s_offset_c1 + 1
87626 END DO
87627 s_offset_b1 = s_offset_b1 + 3
87628 END DO
87629 s_offset_a1 = s_offset_a1 + 9
87630 END DO
87631 END SUBROUTINE contract_gpsg
87632#endif
87633#if __MAX_CONTR > 4 || __MAX_CONTR == 4
87634! **************************************************************************************************
87635!> \brief ...
87636!> \param work ...
87637!> \param nl_a ...
87638!> \param nl_b ...
87639!> \param nl_c ...
87640!> \param nl_d ...
87641!> \param sphi_a ...
87642!> \param sphi_b ...
87643!> \param sphi_c ...
87644!> \param sphi_d ...
87645!> \param primitives ...
87646!> \param buffer1 ...
87647!> \param buffer2 ...
87648! **************************************************************************************************
87649 SUBROUTINE contract_gpps(work, &
87650 nl_a, nl_b, nl_c, nl_d, &
87651 sphi_a, sphi_b, sphi_c, sphi_d, &
87652 primitives, &
87653 buffer1, buffer2)
87654 REAL(dp), DIMENSION(15*3*3*1), INTENT(IN) :: work
87655 INTEGER :: nl_a, nl_b, nl_c, nl_d
87656 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
87657 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
87658 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
87659 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
87660 REAL(dp), &
87661 DIMENSION(9*nl_a, 3*nl_b, 3*nl_c, 1*nl_d) :: primitives
87662 REAL(dp), DIMENSION(15*3*3*1) :: buffer1, buffer2
87663
87664 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
87665 kmax, s_offset_a1, s_offset_b1, &
87666 s_offset_c1, s_offset_d1
87667
87668 s_offset_a1 = 0
87669 DO ia = 1, nl_a
87670 s_offset_b1 = 0
87671 DO ib = 1, nl_b
87672 s_offset_c1 = 0
87673 DO ic = 1, nl_c
87674 s_offset_d1 = 0
87675 DO id = 1, nl_d
87676 buffer1 = 0.0_dp
87677 imax = 3*3*1
87678 kmax = 15
87679 DO i = 1, imax
87680 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
87681 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
87682 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
87683 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
87684 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
87685 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
87686 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
87687 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
87688 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
87689 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
87690 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
87691 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
87692 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
87693 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
87694 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
87695 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
87696 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
87697 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
87698 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
87699 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
87700 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
87701 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
87702 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
87703 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
87704 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
87705 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
87706 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
87707 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
87708 END DO
87709 buffer2 = 0.0_dp
87710 imax = 9*3*1
87711 kmax = 3
87712 DO i = 1, imax
87713 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
87714 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
87715 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
87716 END DO
87717 buffer1 = 0.0_dp
87718 imax = 9*3*1
87719 kmax = 3
87720 DO i = 1, imax
87721 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
87722 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
87723 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
87724 END DO
87725 imax = 9*3*3
87726 kmax = 1
87727 i = 0
87728 DO i1 = 1, 3
87729 DO i2 = 1, 3
87730 DO i3 = 1, 9
87731 i = i + 1
87732 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
87733 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
87734 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
87735 END DO
87736 END DO
87737 END DO
87738 s_offset_d1 = s_offset_d1 + 1
87739 END DO
87740 s_offset_c1 = s_offset_c1 + 3
87741 END DO
87742 s_offset_b1 = s_offset_b1 + 3
87743 END DO
87744 s_offset_a1 = s_offset_a1 + 9
87745 END DO
87746 END SUBROUTINE contract_gpps
87747#endif
87748#if __MAX_CONTR > 4 || __MAX_CONTR == 4
87749! **************************************************************************************************
87750!> \brief ...
87751!> \param work ...
87752!> \param nl_a ...
87753!> \param nl_b ...
87754!> \param nl_c ...
87755!> \param nl_d ...
87756!> \param sphi_a ...
87757!> \param sphi_b ...
87758!> \param sphi_c ...
87759!> \param sphi_d ...
87760!> \param primitives ...
87761!> \param buffer1 ...
87762!> \param buffer2 ...
87763! **************************************************************************************************
87764 SUBROUTINE contract_gppp(work, &
87765 nl_a, nl_b, nl_c, nl_d, &
87766 sphi_a, sphi_b, sphi_c, sphi_d, &
87767 primitives, &
87768 buffer1, buffer2)
87769 REAL(dp), DIMENSION(15*3*3*3), INTENT(IN) :: work
87770 INTEGER :: nl_a, nl_b, nl_c, nl_d
87771 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
87772 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
87773 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
87774 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
87775 REAL(dp), &
87776 DIMENSION(9*nl_a, 3*nl_b, 3*nl_c, 3*nl_d) :: primitives
87777 REAL(dp), DIMENSION(15*3*3*3) :: buffer1, buffer2
87778
87779 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
87780 kmax, s_offset_a1, s_offset_b1, &
87781 s_offset_c1, s_offset_d1
87782
87783 s_offset_a1 = 0
87784 DO ia = 1, nl_a
87785 s_offset_b1 = 0
87786 DO ib = 1, nl_b
87787 s_offset_c1 = 0
87788 DO ic = 1, nl_c
87789 s_offset_d1 = 0
87790 DO id = 1, nl_d
87791 buffer1 = 0.0_dp
87792 imax = 3*3*3
87793 kmax = 15
87794 DO i = 1, imax
87795 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
87796 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
87797 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
87798 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
87799 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
87800 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
87801 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
87802 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
87803 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
87804 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
87805 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
87806 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
87807 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
87808 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
87809 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
87810 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
87811 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
87812 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
87813 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
87814 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
87815 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
87816 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
87817 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
87818 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
87819 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
87820 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
87821 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
87822 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
87823 END DO
87824 buffer2 = 0.0_dp
87825 imax = 9*3*3
87826 kmax = 3
87827 DO i = 1, imax
87828 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
87829 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
87830 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
87831 END DO
87832 buffer1 = 0.0_dp
87833 imax = 9*3*3
87834 kmax = 3
87835 DO i = 1, imax
87836 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
87837 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
87838 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
87839 END DO
87840 imax = 9*3*3
87841 kmax = 3
87842 i = 0
87843 DO i1 = 1, 3
87844 DO i2 = 1, 3
87845 DO i3 = 1, 9
87846 i = i + 1
87847 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
87848 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
87849 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
87850 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
87851 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
87852 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
87853 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
87854 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
87855 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
87856 END DO
87857 END DO
87858 END DO
87859 s_offset_d1 = s_offset_d1 + 3
87860 END DO
87861 s_offset_c1 = s_offset_c1 + 3
87862 END DO
87863 s_offset_b1 = s_offset_b1 + 3
87864 END DO
87865 s_offset_a1 = s_offset_a1 + 9
87866 END DO
87867 END SUBROUTINE contract_gppp
87868#endif
87869#if __MAX_CONTR > 4 || __MAX_CONTR == 4
87870! **************************************************************************************************
87871!> \brief ...
87872!> \param work ...
87873!> \param nl_a ...
87874!> \param nl_b ...
87875!> \param nl_c ...
87876!> \param nl_d ...
87877!> \param sphi_a ...
87878!> \param sphi_b ...
87879!> \param sphi_c ...
87880!> \param sphi_d ...
87881!> \param primitives ...
87882!> \param buffer1 ...
87883!> \param buffer2 ...
87884! **************************************************************************************************
87885 SUBROUTINE contract_gppd(work, &
87886 nl_a, nl_b, nl_c, nl_d, &
87887 sphi_a, sphi_b, sphi_c, sphi_d, &
87888 primitives, &
87889 buffer1, buffer2)
87890 REAL(dp), DIMENSION(15*3*3*6), INTENT(IN) :: work
87891 INTEGER :: nl_a, nl_b, nl_c, nl_d
87892 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
87893 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
87894 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
87895 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
87896 REAL(dp), &
87897 DIMENSION(9*nl_a, 3*nl_b, 3*nl_c, 5*nl_d) :: primitives
87898 REAL(dp), DIMENSION(15*3*3*6) :: buffer1, buffer2
87899
87900 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
87901 kmax, s_offset_a1, s_offset_b1, &
87902 s_offset_c1, s_offset_d1
87903
87904 s_offset_a1 = 0
87905 DO ia = 1, nl_a
87906 s_offset_b1 = 0
87907 DO ib = 1, nl_b
87908 s_offset_c1 = 0
87909 DO ic = 1, nl_c
87910 s_offset_d1 = 0
87911 DO id = 1, nl_d
87912 buffer1 = 0.0_dp
87913 imax = 3*3*6
87914 kmax = 15
87915 DO i = 1, imax
87916 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
87917 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
87918 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
87919 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
87920 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
87921 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
87922 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
87923 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
87924 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
87925 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
87926 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
87927 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
87928 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
87929 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
87930 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
87931 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
87932 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
87933 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
87934 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
87935 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
87936 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
87937 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
87938 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
87939 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
87940 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
87941 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
87942 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
87943 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
87944 END DO
87945 buffer2 = 0.0_dp
87946 imax = 9*3*6
87947 kmax = 3
87948 DO i = 1, imax
87949 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
87950 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
87951 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
87952 END DO
87953 buffer1 = 0.0_dp
87954 imax = 9*3*6
87955 kmax = 3
87956 DO i = 1, imax
87957 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
87958 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
87959 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
87960 END DO
87961 imax = 9*3*3
87962 kmax = 6
87963 i = 0
87964 DO i1 = 1, 3
87965 DO i2 = 1, 3
87966 DO i3 = 1, 9
87967 i = i + 1
87968 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
87969 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
87970 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
87971 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
87972 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
87973 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
87974 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
87975 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
87976 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
87977 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
87978 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
87979 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
87980 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
87981 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
87982 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
87983 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
87984 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
87985 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
87986 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
87987 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
87988 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
87989 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
87990 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
87991 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
87992 END DO
87993 END DO
87994 END DO
87995 s_offset_d1 = s_offset_d1 + 5
87996 END DO
87997 s_offset_c1 = s_offset_c1 + 3
87998 END DO
87999 s_offset_b1 = s_offset_b1 + 3
88000 END DO
88001 s_offset_a1 = s_offset_a1 + 9
88002 END DO
88003 END SUBROUTINE contract_gppd
88004#endif
88005#if __MAX_CONTR > 4 || __MAX_CONTR == 4
88006! **************************************************************************************************
88007!> \brief ...
88008!> \param work ...
88009!> \param nl_a ...
88010!> \param nl_b ...
88011!> \param nl_c ...
88012!> \param nl_d ...
88013!> \param sphi_a ...
88014!> \param sphi_b ...
88015!> \param sphi_c ...
88016!> \param sphi_d ...
88017!> \param primitives ...
88018!> \param buffer1 ...
88019!> \param buffer2 ...
88020! **************************************************************************************************
88021 SUBROUTINE contract_gppf(work, &
88022 nl_a, nl_b, nl_c, nl_d, &
88023 sphi_a, sphi_b, sphi_c, sphi_d, &
88024 primitives, &
88025 buffer1, buffer2)
88026 REAL(dp), DIMENSION(15*3*3*10), INTENT(IN) :: work
88027 INTEGER :: nl_a, nl_b, nl_c, nl_d
88028 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
88029 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
88030 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
88031 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
88032 REAL(dp), &
88033 DIMENSION(9*nl_a, 3*nl_b, 3*nl_c, 7*nl_d) :: primitives
88034 REAL(dp), DIMENSION(15*3*3*10) :: buffer1, buffer2
88035
88036 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
88037 kmax, s_offset_a1, s_offset_b1, &
88038 s_offset_c1, s_offset_d1
88039
88040 s_offset_a1 = 0
88041 DO ia = 1, nl_a
88042 s_offset_b1 = 0
88043 DO ib = 1, nl_b
88044 s_offset_c1 = 0
88045 DO ic = 1, nl_c
88046 s_offset_d1 = 0
88047 DO id = 1, nl_d
88048 buffer1 = 0.0_dp
88049 imax = 3*3*10
88050 kmax = 15
88051 DO i = 1, imax
88052 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
88053 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
88054 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
88055 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
88056 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
88057 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
88058 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
88059 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
88060 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
88061 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
88062 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
88063 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
88064 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
88065 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
88066 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
88067 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
88068 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
88069 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
88070 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
88071 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
88072 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
88073 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
88074 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
88075 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
88076 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
88077 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
88078 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
88079 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
88080 END DO
88081 buffer2 = 0.0_dp
88082 imax = 9*3*10
88083 kmax = 3
88084 DO i = 1, imax
88085 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
88086 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
88087 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
88088 END DO
88089 buffer1 = 0.0_dp
88090 imax = 9*3*10
88091 kmax = 3
88092 DO i = 1, imax
88093 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
88094 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
88095 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
88096 END DO
88097 imax = 9*3*3
88098 kmax = 10
88099 i = 0
88100 DO i1 = 1, 3
88101 DO i2 = 1, 3
88102 DO i3 = 1, 9
88103 i = i + 1
88104 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
88105 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
88106 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
88107 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
88108 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
88109 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
88110 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
88111 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
88112 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
88113 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
88114 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
88115 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
88116 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
88117 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
88118 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
88119 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
88120 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
88121 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
88122 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
88123 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
88124 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
88125 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
88126 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
88127 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
88128 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
88129 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
88130 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
88131 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
88132 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
88133 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
88134 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
88135 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
88136 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
88137 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
88138 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
88139 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
88140 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
88141 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
88142 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
88143 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
88144 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
88145 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
88146 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
88147 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
88148 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
88149 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
88150 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
88151 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
88152 END DO
88153 END DO
88154 END DO
88155 s_offset_d1 = s_offset_d1 + 7
88156 END DO
88157 s_offset_c1 = s_offset_c1 + 3
88158 END DO
88159 s_offset_b1 = s_offset_b1 + 3
88160 END DO
88161 s_offset_a1 = s_offset_a1 + 9
88162 END DO
88163 END SUBROUTINE contract_gppf
88164#endif
88165#if __MAX_CONTR > 4 || __MAX_CONTR == 4
88166! **************************************************************************************************
88167!> \brief ...
88168!> \param work ...
88169!> \param nl_a ...
88170!> \param nl_b ...
88171!> \param nl_c ...
88172!> \param nl_d ...
88173!> \param sphi_a ...
88174!> \param sphi_b ...
88175!> \param sphi_c ...
88176!> \param sphi_d ...
88177!> \param primitives ...
88178!> \param buffer1 ...
88179!> \param buffer2 ...
88180! **************************************************************************************************
88181 SUBROUTINE contract_gppg(work, &
88182 nl_a, nl_b, nl_c, nl_d, &
88183 sphi_a, sphi_b, sphi_c, sphi_d, &
88184 primitives, &
88185 buffer1, buffer2)
88186 REAL(dp), DIMENSION(15*3*3*15), INTENT(IN) :: work
88187 INTEGER :: nl_a, nl_b, nl_c, nl_d
88188 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
88189 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
88190 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
88191 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
88192 REAL(dp), &
88193 DIMENSION(9*nl_a, 3*nl_b, 3*nl_c, 9*nl_d) :: primitives
88194 REAL(dp), DIMENSION(15*3*3*15) :: buffer1, buffer2
88195
88196 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
88197 kmax, s_offset_a1, s_offset_b1, &
88198 s_offset_c1, s_offset_d1
88199
88200 s_offset_a1 = 0
88201 DO ia = 1, nl_a
88202 s_offset_b1 = 0
88203 DO ib = 1, nl_b
88204 s_offset_c1 = 0
88205 DO ic = 1, nl_c
88206 s_offset_d1 = 0
88207 DO id = 1, nl_d
88208 buffer1 = 0.0_dp
88209 imax = 3*3*15
88210 kmax = 15
88211 DO i = 1, imax
88212 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
88213 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
88214 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
88215 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
88216 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
88217 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
88218 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
88219 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
88220 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
88221 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
88222 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
88223 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
88224 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
88225 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
88226 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
88227 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
88228 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
88229 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
88230 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
88231 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
88232 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
88233 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
88234 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
88235 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
88236 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
88237 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
88238 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
88239 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
88240 END DO
88241 buffer2 = 0.0_dp
88242 imax = 9*3*15
88243 kmax = 3
88244 DO i = 1, imax
88245 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
88246 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
88247 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
88248 END DO
88249 buffer1 = 0.0_dp
88250 imax = 9*3*15
88251 kmax = 3
88252 DO i = 1, imax
88253 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
88254 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
88255 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
88256 END DO
88257 imax = 9*3*3
88258 kmax = 15
88259 i = 0
88260 DO i1 = 1, 3
88261 DO i2 = 1, 3
88262 DO i3 = 1, 9
88263 i = i + 1
88264 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
88265 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
88266 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
88267 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
88268 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
88269 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
88270 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
88271 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
88272 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
88273 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
88274 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
88275 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
88276 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
88277 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
88278 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
88279 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
88280 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
88281 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
88282 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
88283 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
88284 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
88285 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
88286 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
88287 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
88288 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
88289 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
88290 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
88291 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
88292 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
88293 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
88294 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
88295 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
88296 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
88297 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
88298 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
88299 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
88300 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
88301 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
88302 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
88303 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
88304 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
88305 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
88306 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
88307 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
88308 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
88309 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
88310 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
88311 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
88312 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
88313 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
88314 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
88315 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
88316 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
88317 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
88318 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
88319 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
88320 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
88321 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
88322 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
88323 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
88324 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
88325 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
88326 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
88327 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
88328 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
88329 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
88330 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
88331 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
88332 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
88333 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
88334 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
88335 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
88336 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
88337 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
88338 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
88339 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
88340 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
88341 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
88342 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
88343 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
88344 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
88345 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
88346 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
88347 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
88348 END DO
88349 END DO
88350 END DO
88351 s_offset_d1 = s_offset_d1 + 9
88352 END DO
88353 s_offset_c1 = s_offset_c1 + 3
88354 END DO
88355 s_offset_b1 = s_offset_b1 + 3
88356 END DO
88357 s_offset_a1 = s_offset_a1 + 9
88358 END DO
88359 END SUBROUTINE contract_gppg
88360#endif
88361#if __MAX_CONTR > 4 || __MAX_CONTR == 4
88362! **************************************************************************************************
88363!> \brief ...
88364!> \param work ...
88365!> \param nl_a ...
88366!> \param nl_b ...
88367!> \param nl_c ...
88368!> \param nl_d ...
88369!> \param sphi_a ...
88370!> \param sphi_b ...
88371!> \param sphi_c ...
88372!> \param sphi_d ...
88373!> \param primitives ...
88374!> \param buffer1 ...
88375!> \param buffer2 ...
88376! **************************************************************************************************
88377 SUBROUTINE contract_gpds(work, &
88378 nl_a, nl_b, nl_c, nl_d, &
88379 sphi_a, sphi_b, sphi_c, sphi_d, &
88380 primitives, &
88381 buffer1, buffer2)
88382 REAL(dp), DIMENSION(15*3*6*1), INTENT(IN) :: work
88383 INTEGER :: nl_a, nl_b, nl_c, nl_d
88384 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
88385 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
88386 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
88387 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
88388 REAL(dp), &
88389 DIMENSION(9*nl_a, 3*nl_b, 5*nl_c, 1*nl_d) :: primitives
88390 REAL(dp), DIMENSION(15*3*6*1) :: buffer1, buffer2
88391
88392 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
88393 kmax, s_offset_a1, s_offset_b1, &
88394 s_offset_c1, s_offset_d1
88395
88396 s_offset_a1 = 0
88397 DO ia = 1, nl_a
88398 s_offset_b1 = 0
88399 DO ib = 1, nl_b
88400 s_offset_c1 = 0
88401 DO ic = 1, nl_c
88402 s_offset_d1 = 0
88403 DO id = 1, nl_d
88404 buffer1 = 0.0_dp
88405 imax = 3*6*1
88406 kmax = 15
88407 DO i = 1, imax
88408 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
88409 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
88410 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
88411 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
88412 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
88413 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
88414 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
88415 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
88416 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
88417 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
88418 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
88419 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
88420 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
88421 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
88422 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
88423 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
88424 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
88425 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
88426 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
88427 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
88428 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
88429 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
88430 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
88431 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
88432 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
88433 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
88434 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
88435 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
88436 END DO
88437 buffer2 = 0.0_dp
88438 imax = 9*6*1
88439 kmax = 3
88440 DO i = 1, imax
88441 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
88442 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
88443 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
88444 END DO
88445 buffer1 = 0.0_dp
88446 imax = 9*3*1
88447 kmax = 6
88448 DO i = 1, imax
88449 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
88450 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
88451 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
88452 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
88453 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
88454 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
88455 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
88456 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
88457 END DO
88458 imax = 9*3*5
88459 kmax = 1
88460 i = 0
88461 DO i1 = 1, 5
88462 DO i2 = 1, 3
88463 DO i3 = 1, 9
88464 i = i + 1
88465 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
88466 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
88467 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
88468 END DO
88469 END DO
88470 END DO
88471 s_offset_d1 = s_offset_d1 + 1
88472 END DO
88473 s_offset_c1 = s_offset_c1 + 5
88474 END DO
88475 s_offset_b1 = s_offset_b1 + 3
88476 END DO
88477 s_offset_a1 = s_offset_a1 + 9
88478 END DO
88479 END SUBROUTINE contract_gpds
88480#endif
88481#if __MAX_CONTR > 4 || __MAX_CONTR == 4
88482! **************************************************************************************************
88483!> \brief ...
88484!> \param work ...
88485!> \param nl_a ...
88486!> \param nl_b ...
88487!> \param nl_c ...
88488!> \param nl_d ...
88489!> \param sphi_a ...
88490!> \param sphi_b ...
88491!> \param sphi_c ...
88492!> \param sphi_d ...
88493!> \param primitives ...
88494!> \param buffer1 ...
88495!> \param buffer2 ...
88496! **************************************************************************************************
88497 SUBROUTINE contract_gpdp(work, &
88498 nl_a, nl_b, nl_c, nl_d, &
88499 sphi_a, sphi_b, sphi_c, sphi_d, &
88500 primitives, &
88501 buffer1, buffer2)
88502 REAL(dp), DIMENSION(15*3*6*3), INTENT(IN) :: work
88503 INTEGER :: nl_a, nl_b, nl_c, nl_d
88504 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
88505 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
88506 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
88507 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
88508 REAL(dp), &
88509 DIMENSION(9*nl_a, 3*nl_b, 5*nl_c, 3*nl_d) :: primitives
88510 REAL(dp), DIMENSION(15*3*6*3) :: buffer1, buffer2
88511
88512 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
88513 kmax, s_offset_a1, s_offset_b1, &
88514 s_offset_c1, s_offset_d1
88515
88516 s_offset_a1 = 0
88517 DO ia = 1, nl_a
88518 s_offset_b1 = 0
88519 DO ib = 1, nl_b
88520 s_offset_c1 = 0
88521 DO ic = 1, nl_c
88522 s_offset_d1 = 0
88523 DO id = 1, nl_d
88524 buffer1 = 0.0_dp
88525 imax = 3*6*3
88526 kmax = 15
88527 DO i = 1, imax
88528 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
88529 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
88530 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
88531 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
88532 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
88533 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
88534 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
88535 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
88536 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
88537 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
88538 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
88539 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
88540 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
88541 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
88542 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
88543 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
88544 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
88545 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
88546 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
88547 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
88548 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
88549 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
88550 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
88551 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
88552 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
88553 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
88554 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
88555 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
88556 END DO
88557 buffer2 = 0.0_dp
88558 imax = 9*6*3
88559 kmax = 3
88560 DO i = 1, imax
88561 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
88562 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
88563 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
88564 END DO
88565 buffer1 = 0.0_dp
88566 imax = 9*3*3
88567 kmax = 6
88568 DO i = 1, imax
88569 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
88570 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
88571 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
88572 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
88573 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
88574 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
88575 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
88576 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
88577 END DO
88578 imax = 9*3*5
88579 kmax = 3
88580 i = 0
88581 DO i1 = 1, 5
88582 DO i2 = 1, 3
88583 DO i3 = 1, 9
88584 i = i + 1
88585 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
88586 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
88587 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
88588 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
88589 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
88590 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
88591 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
88592 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
88593 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
88594 END DO
88595 END DO
88596 END DO
88597 s_offset_d1 = s_offset_d1 + 3
88598 END DO
88599 s_offset_c1 = s_offset_c1 + 5
88600 END DO
88601 s_offset_b1 = s_offset_b1 + 3
88602 END DO
88603 s_offset_a1 = s_offset_a1 + 9
88604 END DO
88605 END SUBROUTINE contract_gpdp
88606#endif
88607#if __MAX_CONTR > 4 || __MAX_CONTR == 4
88608! **************************************************************************************************
88609!> \brief ...
88610!> \param work ...
88611!> \param nl_a ...
88612!> \param nl_b ...
88613!> \param nl_c ...
88614!> \param nl_d ...
88615!> \param sphi_a ...
88616!> \param sphi_b ...
88617!> \param sphi_c ...
88618!> \param sphi_d ...
88619!> \param primitives ...
88620!> \param buffer1 ...
88621!> \param buffer2 ...
88622! **************************************************************************************************
88623 SUBROUTINE contract_gpdd(work, &
88624 nl_a, nl_b, nl_c, nl_d, &
88625 sphi_a, sphi_b, sphi_c, sphi_d, &
88626 primitives, &
88627 buffer1, buffer2)
88628 REAL(dp), DIMENSION(15*3*6*6), INTENT(IN) :: work
88629 INTEGER :: nl_a, nl_b, nl_c, nl_d
88630 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
88631 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
88632 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
88633 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
88634 REAL(dp), &
88635 DIMENSION(9*nl_a, 3*nl_b, 5*nl_c, 5*nl_d) :: primitives
88636 REAL(dp), DIMENSION(15*3*6*6) :: buffer1, buffer2
88637
88638 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
88639 kmax, s_offset_a1, s_offset_b1, &
88640 s_offset_c1, s_offset_d1
88641
88642 s_offset_a1 = 0
88643 DO ia = 1, nl_a
88644 s_offset_b1 = 0
88645 DO ib = 1, nl_b
88646 s_offset_c1 = 0
88647 DO ic = 1, nl_c
88648 s_offset_d1 = 0
88649 DO id = 1, nl_d
88650 buffer1 = 0.0_dp
88651 imax = 3*6*6
88652 kmax = 15
88653 DO i = 1, imax
88654 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
88655 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
88656 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
88657 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
88658 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
88659 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
88660 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
88661 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
88662 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
88663 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
88664 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
88665 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
88666 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
88667 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
88668 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
88669 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
88670 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
88671 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
88672 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
88673 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
88674 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
88675 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
88676 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
88677 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
88678 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
88679 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
88680 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
88681 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
88682 END DO
88683 buffer2 = 0.0_dp
88684 imax = 9*6*6
88685 kmax = 3
88686 DO i = 1, imax
88687 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
88688 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
88689 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
88690 END DO
88691 buffer1 = 0.0_dp
88692 imax = 9*3*6
88693 kmax = 6
88694 DO i = 1, imax
88695 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
88696 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
88697 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
88698 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
88699 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
88700 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
88701 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
88702 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
88703 END DO
88704 imax = 9*3*5
88705 kmax = 6
88706 i = 0
88707 DO i1 = 1, 5
88708 DO i2 = 1, 3
88709 DO i3 = 1, 9
88710 i = i + 1
88711 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
88712 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
88713 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
88714 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
88715 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
88716 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
88717 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
88718 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
88719 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
88720 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
88721 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
88722 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
88723 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
88724 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
88725 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
88726 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
88727 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
88728 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
88729 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
88730 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
88731 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
88732 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
88733 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
88734 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
88735 END DO
88736 END DO
88737 END DO
88738 s_offset_d1 = s_offset_d1 + 5
88739 END DO
88740 s_offset_c1 = s_offset_c1 + 5
88741 END DO
88742 s_offset_b1 = s_offset_b1 + 3
88743 END DO
88744 s_offset_a1 = s_offset_a1 + 9
88745 END DO
88746 END SUBROUTINE contract_gpdd
88747#endif
88748#if __MAX_CONTR > 4 || __MAX_CONTR == 4
88749! **************************************************************************************************
88750!> \brief ...
88751!> \param work ...
88752!> \param nl_a ...
88753!> \param nl_b ...
88754!> \param nl_c ...
88755!> \param nl_d ...
88756!> \param sphi_a ...
88757!> \param sphi_b ...
88758!> \param sphi_c ...
88759!> \param sphi_d ...
88760!> \param primitives ...
88761!> \param buffer1 ...
88762!> \param buffer2 ...
88763! **************************************************************************************************
88764 SUBROUTINE contract_gpdf(work, &
88765 nl_a, nl_b, nl_c, nl_d, &
88766 sphi_a, sphi_b, sphi_c, sphi_d, &
88767 primitives, &
88768 buffer1, buffer2)
88769 REAL(dp), DIMENSION(15*3*6*10), INTENT(IN) :: work
88770 INTEGER :: nl_a, nl_b, nl_c, nl_d
88771 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
88772 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
88773 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
88774 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
88775 REAL(dp), &
88776 DIMENSION(9*nl_a, 3*nl_b, 5*nl_c, 7*nl_d) :: primitives
88777 REAL(dp), DIMENSION(15*3*6*10) :: buffer1, buffer2
88778
88779 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
88780 kmax, s_offset_a1, s_offset_b1, &
88781 s_offset_c1, s_offset_d1
88782
88783 s_offset_a1 = 0
88784 DO ia = 1, nl_a
88785 s_offset_b1 = 0
88786 DO ib = 1, nl_b
88787 s_offset_c1 = 0
88788 DO ic = 1, nl_c
88789 s_offset_d1 = 0
88790 DO id = 1, nl_d
88791 buffer1 = 0.0_dp
88792 imax = 3*6*10
88793 kmax = 15
88794 DO i = 1, imax
88795 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
88796 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
88797 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
88798 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
88799 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
88800 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
88801 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
88802 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
88803 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
88804 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
88805 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
88806 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
88807 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
88808 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
88809 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
88810 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
88811 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
88812 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
88813 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
88814 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
88815 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
88816 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
88817 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
88818 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
88819 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
88820 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
88821 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
88822 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
88823 END DO
88824 buffer2 = 0.0_dp
88825 imax = 9*6*10
88826 kmax = 3
88827 DO i = 1, imax
88828 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
88829 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
88830 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
88831 END DO
88832 buffer1 = 0.0_dp
88833 imax = 9*3*10
88834 kmax = 6
88835 DO i = 1, imax
88836 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
88837 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
88838 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
88839 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
88840 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
88841 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
88842 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
88843 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
88844 END DO
88845 imax = 9*3*5
88846 kmax = 10
88847 i = 0
88848 DO i1 = 1, 5
88849 DO i2 = 1, 3
88850 DO i3 = 1, 9
88851 i = i + 1
88852 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
88853 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
88854 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
88855 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
88856 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
88857 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
88858 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
88859 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
88860 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
88861 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
88862 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
88863 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
88864 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
88865 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
88866 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
88867 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
88868 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
88869 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
88870 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
88871 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
88872 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
88873 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
88874 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
88875 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
88876 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
88877 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
88878 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
88879 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
88880 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
88881 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
88882 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
88883 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
88884 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
88885 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
88886 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
88887 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
88888 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
88889 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
88890 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
88891 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
88892 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
88893 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
88894 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
88895 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
88896 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
88897 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
88898 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
88899 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
88900 END DO
88901 END DO
88902 END DO
88903 s_offset_d1 = s_offset_d1 + 7
88904 END DO
88905 s_offset_c1 = s_offset_c1 + 5
88906 END DO
88907 s_offset_b1 = s_offset_b1 + 3
88908 END DO
88909 s_offset_a1 = s_offset_a1 + 9
88910 END DO
88911 END SUBROUTINE contract_gpdf
88912#endif
88913#if __MAX_CONTR > 4 || __MAX_CONTR == 4
88914! **************************************************************************************************
88915!> \brief ...
88916!> \param work ...
88917!> \param nl_a ...
88918!> \param nl_b ...
88919!> \param nl_c ...
88920!> \param nl_d ...
88921!> \param sphi_a ...
88922!> \param sphi_b ...
88923!> \param sphi_c ...
88924!> \param sphi_d ...
88925!> \param primitives ...
88926!> \param buffer1 ...
88927!> \param buffer2 ...
88928! **************************************************************************************************
88929 SUBROUTINE contract_gpdg(work, &
88930 nl_a, nl_b, nl_c, nl_d, &
88931 sphi_a, sphi_b, sphi_c, sphi_d, &
88932 primitives, &
88933 buffer1, buffer2)
88934 REAL(dp), DIMENSION(15*3*6*15), INTENT(IN) :: work
88935 INTEGER :: nl_a, nl_b, nl_c, nl_d
88936 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
88937 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
88938 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
88939 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
88940 REAL(dp), &
88941 DIMENSION(9*nl_a, 3*nl_b, 5*nl_c, 9*nl_d) :: primitives
88942 REAL(dp), DIMENSION(15*3*6*15) :: buffer1, buffer2
88943
88944 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
88945 kmax, s_offset_a1, s_offset_b1, &
88946 s_offset_c1, s_offset_d1
88947
88948 s_offset_a1 = 0
88949 DO ia = 1, nl_a
88950 s_offset_b1 = 0
88951 DO ib = 1, nl_b
88952 s_offset_c1 = 0
88953 DO ic = 1, nl_c
88954 s_offset_d1 = 0
88955 DO id = 1, nl_d
88956 buffer1 = 0.0_dp
88957 imax = 3*6*15
88958 kmax = 15
88959 DO i = 1, imax
88960 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
88961 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
88962 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
88963 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
88964 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
88965 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
88966 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
88967 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
88968 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
88969 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
88970 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
88971 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
88972 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
88973 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
88974 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
88975 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
88976 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
88977 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
88978 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
88979 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
88980 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
88981 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
88982 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
88983 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
88984 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
88985 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
88986 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
88987 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
88988 END DO
88989 buffer2 = 0.0_dp
88990 imax = 9*6*15
88991 kmax = 3
88992 DO i = 1, imax
88993 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
88994 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
88995 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
88996 END DO
88997 buffer1 = 0.0_dp
88998 imax = 9*3*15
88999 kmax = 6
89000 DO i = 1, imax
89001 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
89002 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
89003 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
89004 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
89005 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
89006 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
89007 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
89008 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
89009 END DO
89010 imax = 9*3*5
89011 kmax = 15
89012 i = 0
89013 DO i1 = 1, 5
89014 DO i2 = 1, 3
89015 DO i3 = 1, 9
89016 i = i + 1
89017 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
89018 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
89019 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
89020 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
89021 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
89022 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
89023 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
89024 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
89025 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
89026 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
89027 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
89028 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
89029 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
89030 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
89031 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
89032 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
89033 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
89034 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
89035 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
89036 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
89037 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
89038 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
89039 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
89040 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
89041 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
89042 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
89043 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
89044 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
89045 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
89046 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
89047 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
89048 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
89049 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
89050 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
89051 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
89052 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
89053 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
89054 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
89055 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
89056 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
89057 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
89058 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
89059 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
89060 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
89061 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
89062 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
89063 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
89064 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
89065 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
89066 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
89067 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
89068 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
89069 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
89070 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
89071 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
89072 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
89073 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
89074 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
89075 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
89076 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
89077 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
89078 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
89079 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
89080 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
89081 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
89082 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
89083 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
89084 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
89085 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
89086 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
89087 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
89088 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
89089 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
89090 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
89091 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
89092 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
89093 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
89094 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
89095 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
89096 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
89097 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
89098 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
89099 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
89100 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
89101 END DO
89102 END DO
89103 END DO
89104 s_offset_d1 = s_offset_d1 + 9
89105 END DO
89106 s_offset_c1 = s_offset_c1 + 5
89107 END DO
89108 s_offset_b1 = s_offset_b1 + 3
89109 END DO
89110 s_offset_a1 = s_offset_a1 + 9
89111 END DO
89112 END SUBROUTINE contract_gpdg
89113#endif
89114#if __MAX_CONTR > 4 || __MAX_CONTR == 4
89115! **************************************************************************************************
89116!> \brief ...
89117!> \param work ...
89118!> \param nl_a ...
89119!> \param nl_b ...
89120!> \param nl_c ...
89121!> \param nl_d ...
89122!> \param sphi_a ...
89123!> \param sphi_b ...
89124!> \param sphi_c ...
89125!> \param sphi_d ...
89126!> \param primitives ...
89127!> \param buffer1 ...
89128!> \param buffer2 ...
89129! **************************************************************************************************
89130 SUBROUTINE contract_gpfs(work, &
89131 nl_a, nl_b, nl_c, nl_d, &
89132 sphi_a, sphi_b, sphi_c, sphi_d, &
89133 primitives, &
89134 buffer1, buffer2)
89135 REAL(dp), DIMENSION(15*3*10*1), INTENT(IN) :: work
89136 INTEGER :: nl_a, nl_b, nl_c, nl_d
89137 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
89138 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
89139 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
89140 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
89141 REAL(dp), &
89142 DIMENSION(9*nl_a, 3*nl_b, 7*nl_c, 1*nl_d) :: primitives
89143 REAL(dp), DIMENSION(15*3*10*1) :: buffer1, buffer2
89144
89145 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
89146 kmax, s_offset_a1, s_offset_b1, &
89147 s_offset_c1, s_offset_d1
89148
89149 s_offset_a1 = 0
89150 DO ia = 1, nl_a
89151 s_offset_b1 = 0
89152 DO ib = 1, nl_b
89153 s_offset_c1 = 0
89154 DO ic = 1, nl_c
89155 s_offset_d1 = 0
89156 DO id = 1, nl_d
89157 buffer1 = 0.0_dp
89158 imax = 3*10*1
89159 kmax = 15
89160 DO i = 1, imax
89161 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
89162 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
89163 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
89164 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
89165 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
89166 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
89167 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
89168 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
89169 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
89170 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
89171 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
89172 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
89173 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
89174 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
89175 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
89176 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
89177 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
89178 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
89179 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
89180 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
89181 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
89182 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
89183 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
89184 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
89185 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
89186 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
89187 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
89188 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
89189 END DO
89190 buffer2 = 0.0_dp
89191 imax = 9*10*1
89192 kmax = 3
89193 DO i = 1, imax
89194 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
89195 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
89196 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
89197 END DO
89198 buffer1 = 0.0_dp
89199 imax = 9*3*1
89200 kmax = 10
89201 DO i = 1, imax
89202 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
89203 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
89204 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
89205 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
89206 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
89207 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
89208 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
89209 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
89210 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
89211 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
89212 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
89213 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
89214 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
89215 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
89216 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
89217 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
89218 END DO
89219 imax = 9*3*7
89220 kmax = 1
89221 i = 0
89222 DO i1 = 1, 7
89223 DO i2 = 1, 3
89224 DO i3 = 1, 9
89225 i = i + 1
89226 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
89227 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
89228 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
89229 END DO
89230 END DO
89231 END DO
89232 s_offset_d1 = s_offset_d1 + 1
89233 END DO
89234 s_offset_c1 = s_offset_c1 + 7
89235 END DO
89236 s_offset_b1 = s_offset_b1 + 3
89237 END DO
89238 s_offset_a1 = s_offset_a1 + 9
89239 END DO
89240 END SUBROUTINE contract_gpfs
89241#endif
89242#if __MAX_CONTR > 4 || __MAX_CONTR == 4
89243! **************************************************************************************************
89244!> \brief ...
89245!> \param work ...
89246!> \param nl_a ...
89247!> \param nl_b ...
89248!> \param nl_c ...
89249!> \param nl_d ...
89250!> \param sphi_a ...
89251!> \param sphi_b ...
89252!> \param sphi_c ...
89253!> \param sphi_d ...
89254!> \param primitives ...
89255!> \param buffer1 ...
89256!> \param buffer2 ...
89257! **************************************************************************************************
89258 SUBROUTINE contract_gpfp(work, &
89259 nl_a, nl_b, nl_c, nl_d, &
89260 sphi_a, sphi_b, sphi_c, sphi_d, &
89261 primitives, &
89262 buffer1, buffer2)
89263 REAL(dp), DIMENSION(15*3*10*3), INTENT(IN) :: work
89264 INTEGER :: nl_a, nl_b, nl_c, nl_d
89265 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
89266 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
89267 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
89268 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
89269 REAL(dp), &
89270 DIMENSION(9*nl_a, 3*nl_b, 7*nl_c, 3*nl_d) :: primitives
89271 REAL(dp), DIMENSION(15*3*10*3) :: buffer1, buffer2
89272
89273 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
89274 kmax, s_offset_a1, s_offset_b1, &
89275 s_offset_c1, s_offset_d1
89276
89277 s_offset_a1 = 0
89278 DO ia = 1, nl_a
89279 s_offset_b1 = 0
89280 DO ib = 1, nl_b
89281 s_offset_c1 = 0
89282 DO ic = 1, nl_c
89283 s_offset_d1 = 0
89284 DO id = 1, nl_d
89285 buffer1 = 0.0_dp
89286 imax = 3*10*3
89287 kmax = 15
89288 DO i = 1, imax
89289 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
89290 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
89291 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
89292 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
89293 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
89294 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
89295 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
89296 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
89297 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
89298 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
89299 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
89300 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
89301 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
89302 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
89303 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
89304 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
89305 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
89306 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
89307 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
89308 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
89309 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
89310 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
89311 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
89312 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
89313 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
89314 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
89315 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
89316 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
89317 END DO
89318 buffer2 = 0.0_dp
89319 imax = 9*10*3
89320 kmax = 3
89321 DO i = 1, imax
89322 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
89323 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
89324 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
89325 END DO
89326 buffer1 = 0.0_dp
89327 imax = 9*3*3
89328 kmax = 10
89329 DO i = 1, imax
89330 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
89331 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
89332 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
89333 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
89334 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
89335 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
89336 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
89337 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
89338 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
89339 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
89340 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
89341 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
89342 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
89343 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
89344 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
89345 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
89346 END DO
89347 imax = 9*3*7
89348 kmax = 3
89349 i = 0
89350 DO i1 = 1, 7
89351 DO i2 = 1, 3
89352 DO i3 = 1, 9
89353 i = i + 1
89354 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
89355 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
89356 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
89357 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
89358 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
89359 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
89360 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
89361 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
89362 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
89363 END DO
89364 END DO
89365 END DO
89366 s_offset_d1 = s_offset_d1 + 3
89367 END DO
89368 s_offset_c1 = s_offset_c1 + 7
89369 END DO
89370 s_offset_b1 = s_offset_b1 + 3
89371 END DO
89372 s_offset_a1 = s_offset_a1 + 9
89373 END DO
89374 END SUBROUTINE contract_gpfp
89375#endif
89376#if __MAX_CONTR > 4 || __MAX_CONTR == 4
89377! **************************************************************************************************
89378!> \brief ...
89379!> \param work ...
89380!> \param nl_a ...
89381!> \param nl_b ...
89382!> \param nl_c ...
89383!> \param nl_d ...
89384!> \param sphi_a ...
89385!> \param sphi_b ...
89386!> \param sphi_c ...
89387!> \param sphi_d ...
89388!> \param primitives ...
89389!> \param buffer1 ...
89390!> \param buffer2 ...
89391! **************************************************************************************************
89392 SUBROUTINE contract_gpfd(work, &
89393 nl_a, nl_b, nl_c, nl_d, &
89394 sphi_a, sphi_b, sphi_c, sphi_d, &
89395 primitives, &
89396 buffer1, buffer2)
89397 REAL(dp), DIMENSION(15*3*10*6), INTENT(IN) :: work
89398 INTEGER :: nl_a, nl_b, nl_c, nl_d
89399 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
89400 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
89401 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
89402 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
89403 REAL(dp), &
89404 DIMENSION(9*nl_a, 3*nl_b, 7*nl_c, 5*nl_d) :: primitives
89405 REAL(dp), DIMENSION(15*3*10*6) :: buffer1, buffer2
89406
89407 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
89408 kmax, s_offset_a1, s_offset_b1, &
89409 s_offset_c1, s_offset_d1
89410
89411 s_offset_a1 = 0
89412 DO ia = 1, nl_a
89413 s_offset_b1 = 0
89414 DO ib = 1, nl_b
89415 s_offset_c1 = 0
89416 DO ic = 1, nl_c
89417 s_offset_d1 = 0
89418 DO id = 1, nl_d
89419 buffer1 = 0.0_dp
89420 imax = 3*10*6
89421 kmax = 15
89422 DO i = 1, imax
89423 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
89424 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
89425 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
89426 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
89427 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
89428 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
89429 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
89430 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
89431 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
89432 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
89433 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
89434 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
89435 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
89436 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
89437 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
89438 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
89439 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
89440 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
89441 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
89442 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
89443 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
89444 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
89445 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
89446 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
89447 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
89448 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
89449 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
89450 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
89451 END DO
89452 buffer2 = 0.0_dp
89453 imax = 9*10*6
89454 kmax = 3
89455 DO i = 1, imax
89456 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
89457 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
89458 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
89459 END DO
89460 buffer1 = 0.0_dp
89461 imax = 9*3*6
89462 kmax = 10
89463 DO i = 1, imax
89464 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
89465 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
89466 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
89467 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
89468 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
89469 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
89470 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
89471 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
89472 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
89473 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
89474 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
89475 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
89476 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
89477 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
89478 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
89479 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
89480 END DO
89481 imax = 9*3*7
89482 kmax = 6
89483 i = 0
89484 DO i1 = 1, 7
89485 DO i2 = 1, 3
89486 DO i3 = 1, 9
89487 i = i + 1
89488 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
89489 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
89490 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
89491 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
89492 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
89493 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
89494 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
89495 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
89496 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
89497 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
89498 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
89499 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
89500 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
89501 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
89502 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
89503 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
89504 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
89505 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
89506 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
89507 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
89508 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
89509 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
89510 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
89511 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
89512 END DO
89513 END DO
89514 END DO
89515 s_offset_d1 = s_offset_d1 + 5
89516 END DO
89517 s_offset_c1 = s_offset_c1 + 7
89518 END DO
89519 s_offset_b1 = s_offset_b1 + 3
89520 END DO
89521 s_offset_a1 = s_offset_a1 + 9
89522 END DO
89523 END SUBROUTINE contract_gpfd
89524#endif
89525#if __MAX_CONTR > 4 || __MAX_CONTR == 4
89526! **************************************************************************************************
89527!> \brief ...
89528!> \param work ...
89529!> \param nl_a ...
89530!> \param nl_b ...
89531!> \param nl_c ...
89532!> \param nl_d ...
89533!> \param sphi_a ...
89534!> \param sphi_b ...
89535!> \param sphi_c ...
89536!> \param sphi_d ...
89537!> \param primitives ...
89538!> \param buffer1 ...
89539!> \param buffer2 ...
89540! **************************************************************************************************
89541 SUBROUTINE contract_gpff(work, &
89542 nl_a, nl_b, nl_c, nl_d, &
89543 sphi_a, sphi_b, sphi_c, sphi_d, &
89544 primitives, &
89545 buffer1, buffer2)
89546 REAL(dp), DIMENSION(15*3*10*10), INTENT(IN) :: work
89547 INTEGER :: nl_a, nl_b, nl_c, nl_d
89548 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
89549 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
89550 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
89551 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
89552 REAL(dp), &
89553 DIMENSION(9*nl_a, 3*nl_b, 7*nl_c, 7*nl_d) :: primitives
89554 REAL(dp), DIMENSION(15*3*10*10) :: buffer1, buffer2
89555
89556 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
89557 kmax, s_offset_a1, s_offset_b1, &
89558 s_offset_c1, s_offset_d1
89559
89560 s_offset_a1 = 0
89561 DO ia = 1, nl_a
89562 s_offset_b1 = 0
89563 DO ib = 1, nl_b
89564 s_offset_c1 = 0
89565 DO ic = 1, nl_c
89566 s_offset_d1 = 0
89567 DO id = 1, nl_d
89568 buffer1 = 0.0_dp
89569 imax = 3*10*10
89570 kmax = 15
89571 DO i = 1, imax
89572 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
89573 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
89574 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
89575 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
89576 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
89577 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
89578 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
89579 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
89580 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
89581 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
89582 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
89583 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
89584 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
89585 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
89586 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
89587 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
89588 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
89589 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
89590 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
89591 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
89592 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
89593 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
89594 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
89595 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
89596 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
89597 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
89598 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
89599 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
89600 END DO
89601 buffer2 = 0.0_dp
89602 imax = 9*10*10
89603 kmax = 3
89604 DO i = 1, imax
89605 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
89606 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
89607 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
89608 END DO
89609 buffer1 = 0.0_dp
89610 imax = 9*3*10
89611 kmax = 10
89612 DO i = 1, imax
89613 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
89614 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
89615 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
89616 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
89617 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
89618 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
89619 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
89620 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
89621 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
89622 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
89623 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
89624 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
89625 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
89626 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
89627 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
89628 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
89629 END DO
89630 imax = 9*3*7
89631 kmax = 10
89632 i = 0
89633 DO i1 = 1, 7
89634 DO i2 = 1, 3
89635 DO i3 = 1, 9
89636 i = i + 1
89637 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
89638 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
89639 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
89640 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
89641 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
89642 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
89643 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
89644 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
89645 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
89646 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
89647 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
89648 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
89649 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
89650 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
89651 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
89652 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
89653 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
89654 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
89655 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
89656 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
89657 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
89658 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
89659 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
89660 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
89661 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
89662 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
89663 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
89664 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
89665 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
89666 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
89667 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
89668 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
89669 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
89670 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
89671 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
89672 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
89673 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
89674 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
89675 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
89676 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
89677 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
89678 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
89679 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
89680 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
89681 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
89682 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
89683 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
89684 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
89685 END DO
89686 END DO
89687 END DO
89688 s_offset_d1 = s_offset_d1 + 7
89689 END DO
89690 s_offset_c1 = s_offset_c1 + 7
89691 END DO
89692 s_offset_b1 = s_offset_b1 + 3
89693 END DO
89694 s_offset_a1 = s_offset_a1 + 9
89695 END DO
89696 END SUBROUTINE contract_gpff
89697#endif
89698#if __MAX_CONTR > 4 || __MAX_CONTR == 4
89699! **************************************************************************************************
89700!> \brief ...
89701!> \param work ...
89702!> \param nl_a ...
89703!> \param nl_b ...
89704!> \param nl_c ...
89705!> \param nl_d ...
89706!> \param sphi_a ...
89707!> \param sphi_b ...
89708!> \param sphi_c ...
89709!> \param sphi_d ...
89710!> \param primitives ...
89711!> \param buffer1 ...
89712!> \param buffer2 ...
89713! **************************************************************************************************
89714 SUBROUTINE contract_gpfg(work, &
89715 nl_a, nl_b, nl_c, nl_d, &
89716 sphi_a, sphi_b, sphi_c, sphi_d, &
89717 primitives, &
89718 buffer1, buffer2)
89719 REAL(dp), DIMENSION(15*3*10*15), INTENT(IN) :: work
89720 INTEGER :: nl_a, nl_b, nl_c, nl_d
89721 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
89722 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
89723 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
89724 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
89725 REAL(dp), &
89726 DIMENSION(9*nl_a, 3*nl_b, 7*nl_c, 9*nl_d) :: primitives
89727 REAL(dp), DIMENSION(15*3*10*15) :: buffer1, buffer2
89728
89729 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
89730 kmax, s_offset_a1, s_offset_b1, &
89731 s_offset_c1, s_offset_d1
89732
89733 s_offset_a1 = 0
89734 DO ia = 1, nl_a
89735 s_offset_b1 = 0
89736 DO ib = 1, nl_b
89737 s_offset_c1 = 0
89738 DO ic = 1, nl_c
89739 s_offset_d1 = 0
89740 DO id = 1, nl_d
89741 buffer1 = 0.0_dp
89742 imax = 3*10*15
89743 kmax = 15
89744 DO i = 1, imax
89745 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
89746 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
89747 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
89748 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
89749 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
89750 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
89751 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
89752 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
89753 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
89754 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
89755 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
89756 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
89757 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
89758 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
89759 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
89760 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
89761 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
89762 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
89763 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
89764 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
89765 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
89766 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
89767 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
89768 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
89769 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
89770 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
89771 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
89772 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
89773 END DO
89774 buffer2 = 0.0_dp
89775 imax = 9*10*15
89776 kmax = 3
89777 DO i = 1, imax
89778 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
89779 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
89780 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
89781 END DO
89782 buffer1 = 0.0_dp
89783 imax = 9*3*15
89784 kmax = 10
89785 DO i = 1, imax
89786 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
89787 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
89788 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
89789 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
89790 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
89791 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
89792 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
89793 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
89794 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
89795 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
89796 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
89797 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
89798 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
89799 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
89800 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
89801 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
89802 END DO
89803 imax = 9*3*7
89804 kmax = 15
89805 i = 0
89806 DO i1 = 1, 7
89807 DO i2 = 1, 3
89808 DO i3 = 1, 9
89809 i = i + 1
89810 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
89811 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
89812 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
89813 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
89814 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
89815 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
89816 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
89817 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
89818 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
89819 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
89820 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
89821 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
89822 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
89823 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
89824 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
89825 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
89826 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
89827 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
89828 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
89829 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
89830 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
89831 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
89832 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
89833 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
89834 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
89835 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
89836 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
89837 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
89838 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
89839 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
89840 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
89841 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
89842 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
89843 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
89844 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
89845 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
89846 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
89847 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
89848 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
89849 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
89850 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
89851 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
89852 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
89853 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
89854 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
89855 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
89856 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
89857 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
89858 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
89859 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
89860 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
89861 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
89862 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
89863 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
89864 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
89865 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
89866 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
89867 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
89868 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
89869 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
89870 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
89871 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
89872 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
89873 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
89874 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
89875 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
89876 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
89877 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
89878 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
89879 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
89880 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
89881 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
89882 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
89883 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
89884 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
89885 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
89886 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
89887 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
89888 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
89889 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
89890 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
89891 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
89892 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
89893 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
89894 END DO
89895 END DO
89896 END DO
89897 s_offset_d1 = s_offset_d1 + 9
89898 END DO
89899 s_offset_c1 = s_offset_c1 + 7
89900 END DO
89901 s_offset_b1 = s_offset_b1 + 3
89902 END DO
89903 s_offset_a1 = s_offset_a1 + 9
89904 END DO
89905 END SUBROUTINE contract_gpfg
89906#endif
89907#if __MAX_CONTR > 4 || __MAX_CONTR == 4
89908! **************************************************************************************************
89909!> \brief ...
89910!> \param work ...
89911!> \param nl_a ...
89912!> \param nl_b ...
89913!> \param nl_c ...
89914!> \param nl_d ...
89915!> \param sphi_a ...
89916!> \param sphi_b ...
89917!> \param sphi_c ...
89918!> \param sphi_d ...
89919!> \param primitives ...
89920!> \param buffer1 ...
89921!> \param buffer2 ...
89922! **************************************************************************************************
89923 SUBROUTINE contract_gpgs(work, &
89924 nl_a, nl_b, nl_c, nl_d, &
89925 sphi_a, sphi_b, sphi_c, sphi_d, &
89926 primitives, &
89927 buffer1, buffer2)
89928 REAL(dp), DIMENSION(15*3*15*1), INTENT(IN) :: work
89929 INTEGER :: nl_a, nl_b, nl_c, nl_d
89930 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
89931 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
89932 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
89933 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
89934 REAL(dp), &
89935 DIMENSION(9*nl_a, 3*nl_b, 9*nl_c, 1*nl_d) :: primitives
89936 REAL(dp), DIMENSION(15*3*15*1) :: buffer1, buffer2
89937
89938 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
89939 kmax, s_offset_a1, s_offset_b1, &
89940 s_offset_c1, s_offset_d1
89941
89942 s_offset_a1 = 0
89943 DO ia = 1, nl_a
89944 s_offset_b1 = 0
89945 DO ib = 1, nl_b
89946 s_offset_c1 = 0
89947 DO ic = 1, nl_c
89948 s_offset_d1 = 0
89949 DO id = 1, nl_d
89950 buffer1 = 0.0_dp
89951 imax = 3*15*1
89952 kmax = 15
89953 DO i = 1, imax
89954 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
89955 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
89956 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
89957 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
89958 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
89959 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
89960 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
89961 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
89962 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
89963 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
89964 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
89965 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
89966 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
89967 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
89968 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
89969 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
89970 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
89971 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
89972 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
89973 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
89974 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
89975 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
89976 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
89977 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
89978 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
89979 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
89980 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
89981 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
89982 END DO
89983 buffer2 = 0.0_dp
89984 imax = 9*15*1
89985 kmax = 3
89986 DO i = 1, imax
89987 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
89988 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
89989 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
89990 END DO
89991 buffer1 = 0.0_dp
89992 imax = 9*3*1
89993 kmax = 15
89994 DO i = 1, imax
89995 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
89996 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
89997 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
89998 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
89999 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
90000 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
90001 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
90002 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
90003 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
90004 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
90005 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
90006 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
90007 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
90008 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
90009 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
90010 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
90011 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
90012 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
90013 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
90014 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
90015 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
90016 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
90017 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
90018 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
90019 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
90020 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
90021 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
90022 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
90023 END DO
90024 imax = 9*3*9
90025 kmax = 1
90026 i = 0
90027 DO i1 = 1, 9
90028 DO i2 = 1, 3
90029 DO i3 = 1, 9
90030 i = i + 1
90031 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
90032 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
90033 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
90034 END DO
90035 END DO
90036 END DO
90037 s_offset_d1 = s_offset_d1 + 1
90038 END DO
90039 s_offset_c1 = s_offset_c1 + 9
90040 END DO
90041 s_offset_b1 = s_offset_b1 + 3
90042 END DO
90043 s_offset_a1 = s_offset_a1 + 9
90044 END DO
90045 END SUBROUTINE contract_gpgs
90046#endif
90047#if __MAX_CONTR > 4 || __MAX_CONTR == 4
90048! **************************************************************************************************
90049!> \brief ...
90050!> \param work ...
90051!> \param nl_a ...
90052!> \param nl_b ...
90053!> \param nl_c ...
90054!> \param nl_d ...
90055!> \param sphi_a ...
90056!> \param sphi_b ...
90057!> \param sphi_c ...
90058!> \param sphi_d ...
90059!> \param primitives ...
90060!> \param buffer1 ...
90061!> \param buffer2 ...
90062! **************************************************************************************************
90063 SUBROUTINE contract_gpgp(work, &
90064 nl_a, nl_b, nl_c, nl_d, &
90065 sphi_a, sphi_b, sphi_c, sphi_d, &
90066 primitives, &
90067 buffer1, buffer2)
90068 REAL(dp), DIMENSION(15*3*15*3), INTENT(IN) :: work
90069 INTEGER :: nl_a, nl_b, nl_c, nl_d
90070 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
90071 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
90072 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
90073 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
90074 REAL(dp), &
90075 DIMENSION(9*nl_a, 3*nl_b, 9*nl_c, 3*nl_d) :: primitives
90076 REAL(dp), DIMENSION(15*3*15*3) :: buffer1, buffer2
90077
90078 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
90079 kmax, s_offset_a1, s_offset_b1, &
90080 s_offset_c1, s_offset_d1
90081
90082 s_offset_a1 = 0
90083 DO ia = 1, nl_a
90084 s_offset_b1 = 0
90085 DO ib = 1, nl_b
90086 s_offset_c1 = 0
90087 DO ic = 1, nl_c
90088 s_offset_d1 = 0
90089 DO id = 1, nl_d
90090 buffer1 = 0.0_dp
90091 imax = 3*15*3
90092 kmax = 15
90093 DO i = 1, imax
90094 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
90095 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
90096 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
90097 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
90098 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
90099 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
90100 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
90101 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
90102 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
90103 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
90104 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
90105 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
90106 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
90107 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
90108 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
90109 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
90110 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
90111 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
90112 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
90113 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
90114 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
90115 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
90116 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
90117 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
90118 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
90119 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
90120 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
90121 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
90122 END DO
90123 buffer2 = 0.0_dp
90124 imax = 9*15*3
90125 kmax = 3
90126 DO i = 1, imax
90127 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
90128 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
90129 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
90130 END DO
90131 buffer1 = 0.0_dp
90132 imax = 9*3*3
90133 kmax = 15
90134 DO i = 1, imax
90135 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
90136 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
90137 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
90138 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
90139 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
90140 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
90141 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
90142 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
90143 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
90144 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
90145 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
90146 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
90147 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
90148 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
90149 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
90150 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
90151 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
90152 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
90153 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
90154 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
90155 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
90156 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
90157 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
90158 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
90159 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
90160 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
90161 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
90162 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
90163 END DO
90164 imax = 9*3*9
90165 kmax = 3
90166 i = 0
90167 DO i1 = 1, 9
90168 DO i2 = 1, 3
90169 DO i3 = 1, 9
90170 i = i + 1
90171 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
90172 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
90173 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
90174 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
90175 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
90176 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
90177 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
90178 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
90179 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
90180 END DO
90181 END DO
90182 END DO
90183 s_offset_d1 = s_offset_d1 + 3
90184 END DO
90185 s_offset_c1 = s_offset_c1 + 9
90186 END DO
90187 s_offset_b1 = s_offset_b1 + 3
90188 END DO
90189 s_offset_a1 = s_offset_a1 + 9
90190 END DO
90191 END SUBROUTINE contract_gpgp
90192#endif
90193#if __MAX_CONTR > 4 || __MAX_CONTR == 4
90194! **************************************************************************************************
90195!> \brief ...
90196!> \param work ...
90197!> \param nl_a ...
90198!> \param nl_b ...
90199!> \param nl_c ...
90200!> \param nl_d ...
90201!> \param sphi_a ...
90202!> \param sphi_b ...
90203!> \param sphi_c ...
90204!> \param sphi_d ...
90205!> \param primitives ...
90206!> \param buffer1 ...
90207!> \param buffer2 ...
90208! **************************************************************************************************
90209 SUBROUTINE contract_gpgd(work, &
90210 nl_a, nl_b, nl_c, nl_d, &
90211 sphi_a, sphi_b, sphi_c, sphi_d, &
90212 primitives, &
90213 buffer1, buffer2)
90214 REAL(dp), DIMENSION(15*3*15*6), INTENT(IN) :: work
90215 INTEGER :: nl_a, nl_b, nl_c, nl_d
90216 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
90217 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
90218 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
90219 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
90220 REAL(dp), &
90221 DIMENSION(9*nl_a, 3*nl_b, 9*nl_c, 5*nl_d) :: primitives
90222 REAL(dp), DIMENSION(15*3*15*6) :: buffer1, buffer2
90223
90224 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
90225 kmax, s_offset_a1, s_offset_b1, &
90226 s_offset_c1, s_offset_d1
90227
90228 s_offset_a1 = 0
90229 DO ia = 1, nl_a
90230 s_offset_b1 = 0
90231 DO ib = 1, nl_b
90232 s_offset_c1 = 0
90233 DO ic = 1, nl_c
90234 s_offset_d1 = 0
90235 DO id = 1, nl_d
90236 buffer1 = 0.0_dp
90237 imax = 3*15*6
90238 kmax = 15
90239 DO i = 1, imax
90240 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
90241 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
90242 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
90243 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
90244 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
90245 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
90246 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
90247 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
90248 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
90249 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
90250 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
90251 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
90252 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
90253 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
90254 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
90255 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
90256 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
90257 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
90258 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
90259 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
90260 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
90261 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
90262 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
90263 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
90264 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
90265 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
90266 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
90267 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
90268 END DO
90269 buffer2 = 0.0_dp
90270 imax = 9*15*6
90271 kmax = 3
90272 DO i = 1, imax
90273 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
90274 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
90275 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
90276 END DO
90277 buffer1 = 0.0_dp
90278 imax = 9*3*6
90279 kmax = 15
90280 DO i = 1, imax
90281 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
90282 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
90283 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
90284 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
90285 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
90286 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
90287 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
90288 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
90289 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
90290 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
90291 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
90292 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
90293 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
90294 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
90295 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
90296 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
90297 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
90298 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
90299 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
90300 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
90301 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
90302 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
90303 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
90304 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
90305 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
90306 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
90307 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
90308 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
90309 END DO
90310 imax = 9*3*9
90311 kmax = 6
90312 i = 0
90313 DO i1 = 1, 9
90314 DO i2 = 1, 3
90315 DO i3 = 1, 9
90316 i = i + 1
90317 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
90318 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
90319 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
90320 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
90321 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
90322 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
90323 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
90324 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
90325 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
90326 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
90327 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
90328 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
90329 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
90330 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
90331 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
90332 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
90333 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
90334 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
90335 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
90336 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
90337 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
90338 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
90339 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
90340 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
90341 END DO
90342 END DO
90343 END DO
90344 s_offset_d1 = s_offset_d1 + 5
90345 END DO
90346 s_offset_c1 = s_offset_c1 + 9
90347 END DO
90348 s_offset_b1 = s_offset_b1 + 3
90349 END DO
90350 s_offset_a1 = s_offset_a1 + 9
90351 END DO
90352 END SUBROUTINE contract_gpgd
90353#endif
90354#if __MAX_CONTR > 4 || __MAX_CONTR == 4
90355! **************************************************************************************************
90356!> \brief ...
90357!> \param work ...
90358!> \param nl_a ...
90359!> \param nl_b ...
90360!> \param nl_c ...
90361!> \param nl_d ...
90362!> \param sphi_a ...
90363!> \param sphi_b ...
90364!> \param sphi_c ...
90365!> \param sphi_d ...
90366!> \param primitives ...
90367!> \param buffer1 ...
90368!> \param buffer2 ...
90369! **************************************************************************************************
90370 SUBROUTINE contract_gpgf(work, &
90371 nl_a, nl_b, nl_c, nl_d, &
90372 sphi_a, sphi_b, sphi_c, sphi_d, &
90373 primitives, &
90374 buffer1, buffer2)
90375 REAL(dp), DIMENSION(15*3*15*10), INTENT(IN) :: work
90376 INTEGER :: nl_a, nl_b, nl_c, nl_d
90377 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
90378 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
90379 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
90380 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
90381 REAL(dp), &
90382 DIMENSION(9*nl_a, 3*nl_b, 9*nl_c, 7*nl_d) :: primitives
90383 REAL(dp), DIMENSION(15*3*15*10) :: buffer1, buffer2
90384
90385 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
90386 kmax, s_offset_a1, s_offset_b1, &
90387 s_offset_c1, s_offset_d1
90388
90389 s_offset_a1 = 0
90390 DO ia = 1, nl_a
90391 s_offset_b1 = 0
90392 DO ib = 1, nl_b
90393 s_offset_c1 = 0
90394 DO ic = 1, nl_c
90395 s_offset_d1 = 0
90396 DO id = 1, nl_d
90397 buffer1 = 0.0_dp
90398 imax = 3*15*10
90399 kmax = 15
90400 DO i = 1, imax
90401 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
90402 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
90403 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
90404 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
90405 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
90406 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
90407 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
90408 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
90409 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
90410 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
90411 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
90412 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
90413 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
90414 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
90415 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
90416 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
90417 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
90418 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
90419 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
90420 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
90421 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
90422 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
90423 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
90424 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
90425 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
90426 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
90427 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
90428 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
90429 END DO
90430 buffer2 = 0.0_dp
90431 imax = 9*15*10
90432 kmax = 3
90433 DO i = 1, imax
90434 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
90435 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
90436 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
90437 END DO
90438 buffer1 = 0.0_dp
90439 imax = 9*3*10
90440 kmax = 15
90441 DO i = 1, imax
90442 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
90443 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
90444 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
90445 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
90446 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
90447 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
90448 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
90449 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
90450 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
90451 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
90452 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
90453 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
90454 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
90455 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
90456 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
90457 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
90458 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
90459 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
90460 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
90461 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
90462 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
90463 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
90464 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
90465 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
90466 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
90467 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
90468 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
90469 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
90470 END DO
90471 imax = 9*3*9
90472 kmax = 10
90473 i = 0
90474 DO i1 = 1, 9
90475 DO i2 = 1, 3
90476 DO i3 = 1, 9
90477 i = i + 1
90478 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
90479 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
90480 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
90481 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
90482 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
90483 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
90484 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
90485 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
90486 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
90487 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
90488 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
90489 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
90490 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
90491 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
90492 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
90493 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
90494 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
90495 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
90496 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
90497 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
90498 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
90499 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
90500 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
90501 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
90502 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
90503 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
90504 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
90505 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
90506 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
90507 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
90508 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
90509 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
90510 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
90511 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
90512 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
90513 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
90514 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
90515 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
90516 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
90517 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
90518 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
90519 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
90520 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
90521 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
90522 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
90523 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
90524 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
90525 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
90526 END DO
90527 END DO
90528 END DO
90529 s_offset_d1 = s_offset_d1 + 7
90530 END DO
90531 s_offset_c1 = s_offset_c1 + 9
90532 END DO
90533 s_offset_b1 = s_offset_b1 + 3
90534 END DO
90535 s_offset_a1 = s_offset_a1 + 9
90536 END DO
90537 END SUBROUTINE contract_gpgf
90538#endif
90539#if __MAX_CONTR > 4 || __MAX_CONTR == 4
90540! **************************************************************************************************
90541!> \brief ...
90542!> \param work ...
90543!> \param nl_a ...
90544!> \param nl_b ...
90545!> \param nl_c ...
90546!> \param nl_d ...
90547!> \param sphi_a ...
90548!> \param sphi_b ...
90549!> \param sphi_c ...
90550!> \param sphi_d ...
90551!> \param primitives ...
90552!> \param buffer1 ...
90553!> \param buffer2 ...
90554! **************************************************************************************************
90555 SUBROUTINE contract_gpgg(work, &
90556 nl_a, nl_b, nl_c, nl_d, &
90557 sphi_a, sphi_b, sphi_c, sphi_d, &
90558 primitives, &
90559 buffer1, buffer2)
90560 REAL(dp), DIMENSION(15*3*15*15), INTENT(IN) :: work
90561 INTEGER :: nl_a, nl_b, nl_c, nl_d
90562 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
90563 REAL(dp), DIMENSION(3, 3*nl_b), INTENT(IN) :: sphi_b
90564 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
90565 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
90566 REAL(dp), &
90567 DIMENSION(9*nl_a, 3*nl_b, 9*nl_c, 9*nl_d) :: primitives
90568 REAL(dp), DIMENSION(15*3*15*15) :: buffer1, buffer2
90569
90570 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
90571 kmax, s_offset_a1, s_offset_b1, &
90572 s_offset_c1, s_offset_d1
90573
90574 s_offset_a1 = 0
90575 DO ia = 1, nl_a
90576 s_offset_b1 = 0
90577 DO ib = 1, nl_b
90578 s_offset_c1 = 0
90579 DO ic = 1, nl_c
90580 s_offset_d1 = 0
90581 DO id = 1, nl_d
90582 buffer1 = 0.0_dp
90583 imax = 3*15*15
90584 kmax = 15
90585 DO i = 1, imax
90586 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
90587 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
90588 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
90589 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
90590 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
90591 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
90592 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
90593 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
90594 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
90595 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
90596 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
90597 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
90598 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
90599 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
90600 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
90601 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
90602 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
90603 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
90604 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
90605 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
90606 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
90607 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
90608 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
90609 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
90610 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
90611 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
90612 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
90613 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
90614 END DO
90615 buffer2 = 0.0_dp
90616 imax = 9*15*15
90617 kmax = 3
90618 DO i = 1, imax
90619 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
90620 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
90621 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
90622 END DO
90623 buffer1 = 0.0_dp
90624 imax = 9*3*15
90625 kmax = 15
90626 DO i = 1, imax
90627 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
90628 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
90629 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
90630 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
90631 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
90632 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
90633 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
90634 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
90635 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
90636 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
90637 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
90638 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
90639 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
90640 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
90641 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
90642 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
90643 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
90644 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
90645 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
90646 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
90647 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
90648 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
90649 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
90650 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
90651 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
90652 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
90653 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
90654 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
90655 END DO
90656 imax = 9*3*9
90657 kmax = 15
90658 i = 0
90659 DO i1 = 1, 9
90660 DO i2 = 1, 3
90661 DO i3 = 1, 9
90662 i = i + 1
90663 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
90664 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
90665 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
90666 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
90667 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
90668 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
90669 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
90670 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
90671 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
90672 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
90673 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
90674 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
90675 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
90676 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
90677 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
90678 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
90679 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
90680 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
90681 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
90682 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
90683 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
90684 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
90685 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
90686 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
90687 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
90688 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
90689 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
90690 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
90691 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
90692 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
90693 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
90694 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
90695 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
90696 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
90697 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
90698 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
90699 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
90700 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
90701 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
90702 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
90703 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
90704 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
90705 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
90706 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
90707 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
90708 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
90709 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
90710 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
90711 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
90712 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
90713 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
90714 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
90715 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
90716 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
90717 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
90718 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
90719 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
90720 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
90721 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
90722 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
90723 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
90724 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
90725 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
90726 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
90727 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
90728 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
90729 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
90730 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
90731 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
90732 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
90733 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
90734 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
90735 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
90736 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
90737 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
90738 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
90739 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
90740 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
90741 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
90742 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
90743 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
90744 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
90745 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
90746 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
90747 END DO
90748 END DO
90749 END DO
90750 s_offset_d1 = s_offset_d1 + 9
90751 END DO
90752 s_offset_c1 = s_offset_c1 + 9
90753 END DO
90754 s_offset_b1 = s_offset_b1 + 3
90755 END DO
90756 s_offset_a1 = s_offset_a1 + 9
90757 END DO
90758 END SUBROUTINE contract_gpgg
90759#endif
90760#if __MAX_CONTR > 4 || __MAX_CONTR == 4
90761! **************************************************************************************************
90762!> \brief ...
90763!> \param work ...
90764!> \param nl_a ...
90765!> \param nl_b ...
90766!> \param nl_c ...
90767!> \param nl_d ...
90768!> \param sphi_a ...
90769!> \param sphi_b ...
90770!> \param sphi_c ...
90771!> \param sphi_d ...
90772!> \param primitives ...
90773!> \param buffer1 ...
90774!> \param buffer2 ...
90775! **************************************************************************************************
90776 SUBROUTINE contract_gdss(work, &
90777 nl_a, nl_b, nl_c, nl_d, &
90778 sphi_a, sphi_b, sphi_c, sphi_d, &
90779 primitives, &
90780 buffer1, buffer2)
90781 REAL(dp), DIMENSION(15*6*1*1), INTENT(IN) :: work
90782 INTEGER :: nl_a, nl_b, nl_c, nl_d
90783 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
90784 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
90785 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
90786 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
90787 REAL(dp), &
90788 DIMENSION(9*nl_a, 5*nl_b, 1*nl_c, 1*nl_d) :: primitives
90789 REAL(dp), DIMENSION(15*6*1*1) :: buffer1, buffer2
90790
90791 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
90792 kmax, s_offset_a1, s_offset_b1, &
90793 s_offset_c1, s_offset_d1
90794
90795 s_offset_a1 = 0
90796 DO ia = 1, nl_a
90797 s_offset_b1 = 0
90798 DO ib = 1, nl_b
90799 s_offset_c1 = 0
90800 DO ic = 1, nl_c
90801 s_offset_d1 = 0
90802 DO id = 1, nl_d
90803 buffer1 = 0.0_dp
90804 imax = 6*1*1
90805 kmax = 15
90806 DO i = 1, imax
90807 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
90808 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
90809 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
90810 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
90811 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
90812 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
90813 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
90814 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
90815 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
90816 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
90817 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
90818 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
90819 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
90820 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
90821 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
90822 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
90823 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
90824 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
90825 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
90826 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
90827 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
90828 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
90829 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
90830 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
90831 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
90832 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
90833 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
90834 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
90835 END DO
90836 buffer2 = 0.0_dp
90837 imax = 9*1*1
90838 kmax = 6
90839 DO i = 1, imax
90840 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
90841 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
90842 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
90843 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
90844 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
90845 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
90846 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
90847 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
90848 END DO
90849 buffer1 = 0.0_dp
90850 imax = 9*5*1
90851 kmax = 1
90852 DO i = 1, imax
90853 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
90854 END DO
90855 imax = 9*5*1
90856 kmax = 1
90857 i = 0
90858 DO i1 = 1, 1
90859 DO i2 = 1, 5
90860 DO i3 = 1, 9
90861 i = i + 1
90862 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
90863 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
90864 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
90865 END DO
90866 END DO
90867 END DO
90868 s_offset_d1 = s_offset_d1 + 1
90869 END DO
90870 s_offset_c1 = s_offset_c1 + 1
90871 END DO
90872 s_offset_b1 = s_offset_b1 + 5
90873 END DO
90874 s_offset_a1 = s_offset_a1 + 9
90875 END DO
90876 END SUBROUTINE contract_gdss
90877#endif
90878#if __MAX_CONTR > 4 || __MAX_CONTR == 4
90879! **************************************************************************************************
90880!> \brief ...
90881!> \param work ...
90882!> \param nl_a ...
90883!> \param nl_b ...
90884!> \param nl_c ...
90885!> \param nl_d ...
90886!> \param sphi_a ...
90887!> \param sphi_b ...
90888!> \param sphi_c ...
90889!> \param sphi_d ...
90890!> \param primitives ...
90891!> \param buffer1 ...
90892!> \param buffer2 ...
90893! **************************************************************************************************
90894 SUBROUTINE contract_gdsp(work, &
90895 nl_a, nl_b, nl_c, nl_d, &
90896 sphi_a, sphi_b, sphi_c, sphi_d, &
90897 primitives, &
90898 buffer1, buffer2)
90899 REAL(dp), DIMENSION(15*6*1*3), INTENT(IN) :: work
90900 INTEGER :: nl_a, nl_b, nl_c, nl_d
90901 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
90902 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
90903 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
90904 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
90905 REAL(dp), &
90906 DIMENSION(9*nl_a, 5*nl_b, 1*nl_c, 3*nl_d) :: primitives
90907 REAL(dp), DIMENSION(15*6*1*3) :: buffer1, buffer2
90908
90909 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
90910 kmax, s_offset_a1, s_offset_b1, &
90911 s_offset_c1, s_offset_d1
90912
90913 s_offset_a1 = 0
90914 DO ia = 1, nl_a
90915 s_offset_b1 = 0
90916 DO ib = 1, nl_b
90917 s_offset_c1 = 0
90918 DO ic = 1, nl_c
90919 s_offset_d1 = 0
90920 DO id = 1, nl_d
90921 buffer1 = 0.0_dp
90922 imax = 6*1*3
90923 kmax = 15
90924 DO i = 1, imax
90925 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
90926 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
90927 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
90928 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
90929 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
90930 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
90931 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
90932 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
90933 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
90934 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
90935 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
90936 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
90937 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
90938 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
90939 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
90940 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
90941 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
90942 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
90943 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
90944 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
90945 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
90946 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
90947 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
90948 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
90949 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
90950 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
90951 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
90952 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
90953 END DO
90954 buffer2 = 0.0_dp
90955 imax = 9*1*3
90956 kmax = 6
90957 DO i = 1, imax
90958 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
90959 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
90960 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
90961 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
90962 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
90963 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
90964 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
90965 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
90966 END DO
90967 buffer1 = 0.0_dp
90968 imax = 9*5*3
90969 kmax = 1
90970 DO i = 1, imax
90971 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
90972 END DO
90973 imax = 9*5*1
90974 kmax = 3
90975 i = 0
90976 DO i1 = 1, 1
90977 DO i2 = 1, 5
90978 DO i3 = 1, 9
90979 i = i + 1
90980 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
90981 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
90982 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
90983 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
90984 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
90985 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
90986 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
90987 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
90988 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
90989 END DO
90990 END DO
90991 END DO
90992 s_offset_d1 = s_offset_d1 + 3
90993 END DO
90994 s_offset_c1 = s_offset_c1 + 1
90995 END DO
90996 s_offset_b1 = s_offset_b1 + 5
90997 END DO
90998 s_offset_a1 = s_offset_a1 + 9
90999 END DO
91000 END SUBROUTINE contract_gdsp
91001#endif
91002#if __MAX_CONTR > 4 || __MAX_CONTR == 4
91003! **************************************************************************************************
91004!> \brief ...
91005!> \param work ...
91006!> \param nl_a ...
91007!> \param nl_b ...
91008!> \param nl_c ...
91009!> \param nl_d ...
91010!> \param sphi_a ...
91011!> \param sphi_b ...
91012!> \param sphi_c ...
91013!> \param sphi_d ...
91014!> \param primitives ...
91015!> \param buffer1 ...
91016!> \param buffer2 ...
91017! **************************************************************************************************
91018 SUBROUTINE contract_gdsd(work, &
91019 nl_a, nl_b, nl_c, nl_d, &
91020 sphi_a, sphi_b, sphi_c, sphi_d, &
91021 primitives, &
91022 buffer1, buffer2)
91023 REAL(dp), DIMENSION(15*6*1*6), INTENT(IN) :: work
91024 INTEGER :: nl_a, nl_b, nl_c, nl_d
91025 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
91026 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
91027 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
91028 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
91029 REAL(dp), &
91030 DIMENSION(9*nl_a, 5*nl_b, 1*nl_c, 5*nl_d) :: primitives
91031 REAL(dp), DIMENSION(15*6*1*6) :: buffer1, buffer2
91032
91033 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
91034 kmax, s_offset_a1, s_offset_b1, &
91035 s_offset_c1, s_offset_d1
91036
91037 s_offset_a1 = 0
91038 DO ia = 1, nl_a
91039 s_offset_b1 = 0
91040 DO ib = 1, nl_b
91041 s_offset_c1 = 0
91042 DO ic = 1, nl_c
91043 s_offset_d1 = 0
91044 DO id = 1, nl_d
91045 buffer1 = 0.0_dp
91046 imax = 6*1*6
91047 kmax = 15
91048 DO i = 1, imax
91049 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
91050 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
91051 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
91052 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
91053 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
91054 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
91055 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
91056 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
91057 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
91058 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
91059 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
91060 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
91061 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
91062 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
91063 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
91064 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
91065 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
91066 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
91067 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
91068 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
91069 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
91070 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
91071 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
91072 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
91073 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
91074 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
91075 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
91076 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
91077 END DO
91078 buffer2 = 0.0_dp
91079 imax = 9*1*6
91080 kmax = 6
91081 DO i = 1, imax
91082 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
91083 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
91084 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
91085 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
91086 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
91087 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
91088 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
91089 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
91090 END DO
91091 buffer1 = 0.0_dp
91092 imax = 9*5*6
91093 kmax = 1
91094 DO i = 1, imax
91095 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
91096 END DO
91097 imax = 9*5*1
91098 kmax = 6
91099 i = 0
91100 DO i1 = 1, 1
91101 DO i2 = 1, 5
91102 DO i3 = 1, 9
91103 i = i + 1
91104 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
91105 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
91106 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
91107 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
91108 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
91109 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
91110 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
91111 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
91112 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
91113 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
91114 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
91115 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
91116 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
91117 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
91118 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
91119 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
91120 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
91121 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
91122 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
91123 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
91124 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
91125 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
91126 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
91127 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
91128 END DO
91129 END DO
91130 END DO
91131 s_offset_d1 = s_offset_d1 + 5
91132 END DO
91133 s_offset_c1 = s_offset_c1 + 1
91134 END DO
91135 s_offset_b1 = s_offset_b1 + 5
91136 END DO
91137 s_offset_a1 = s_offset_a1 + 9
91138 END DO
91139 END SUBROUTINE contract_gdsd
91140#endif
91141#if __MAX_CONTR > 4 || __MAX_CONTR == 4
91142! **************************************************************************************************
91143!> \brief ...
91144!> \param work ...
91145!> \param nl_a ...
91146!> \param nl_b ...
91147!> \param nl_c ...
91148!> \param nl_d ...
91149!> \param sphi_a ...
91150!> \param sphi_b ...
91151!> \param sphi_c ...
91152!> \param sphi_d ...
91153!> \param primitives ...
91154!> \param buffer1 ...
91155!> \param buffer2 ...
91156! **************************************************************************************************
91157 SUBROUTINE contract_gdsf(work, &
91158 nl_a, nl_b, nl_c, nl_d, &
91159 sphi_a, sphi_b, sphi_c, sphi_d, &
91160 primitives, &
91161 buffer1, buffer2)
91162 REAL(dp), DIMENSION(15*6*1*10), INTENT(IN) :: work
91163 INTEGER :: nl_a, nl_b, nl_c, nl_d
91164 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
91165 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
91166 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
91167 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
91168 REAL(dp), &
91169 DIMENSION(9*nl_a, 5*nl_b, 1*nl_c, 7*nl_d) :: primitives
91170 REAL(dp), DIMENSION(15*6*1*10) :: buffer1, buffer2
91171
91172 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
91173 kmax, s_offset_a1, s_offset_b1, &
91174 s_offset_c1, s_offset_d1
91175
91176 s_offset_a1 = 0
91177 DO ia = 1, nl_a
91178 s_offset_b1 = 0
91179 DO ib = 1, nl_b
91180 s_offset_c1 = 0
91181 DO ic = 1, nl_c
91182 s_offset_d1 = 0
91183 DO id = 1, nl_d
91184 buffer1 = 0.0_dp
91185 imax = 6*1*10
91186 kmax = 15
91187 DO i = 1, imax
91188 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
91189 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
91190 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
91191 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
91192 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
91193 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
91194 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
91195 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
91196 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
91197 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
91198 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
91199 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
91200 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
91201 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
91202 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
91203 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
91204 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
91205 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
91206 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
91207 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
91208 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
91209 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
91210 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
91211 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
91212 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
91213 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
91214 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
91215 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
91216 END DO
91217 buffer2 = 0.0_dp
91218 imax = 9*1*10
91219 kmax = 6
91220 DO i = 1, imax
91221 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
91222 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
91223 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
91224 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
91225 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
91226 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
91227 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
91228 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
91229 END DO
91230 buffer1 = 0.0_dp
91231 imax = 9*5*10
91232 kmax = 1
91233 DO i = 1, imax
91234 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
91235 END DO
91236 imax = 9*5*1
91237 kmax = 10
91238 i = 0
91239 DO i1 = 1, 1
91240 DO i2 = 1, 5
91241 DO i3 = 1, 9
91242 i = i + 1
91243 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
91244 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
91245 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
91246 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
91247 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
91248 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
91249 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
91250 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
91251 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
91252 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
91253 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
91254 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
91255 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
91256 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
91257 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
91258 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
91259 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
91260 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
91261 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
91262 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
91263 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
91264 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
91265 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
91266 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
91267 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
91268 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
91269 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
91270 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
91271 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
91272 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
91273 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
91274 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
91275 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
91276 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
91277 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
91278 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
91279 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
91280 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
91281 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
91282 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
91283 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
91284 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
91285 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
91286 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
91287 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
91288 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
91289 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
91290 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
91291 END DO
91292 END DO
91293 END DO
91294 s_offset_d1 = s_offset_d1 + 7
91295 END DO
91296 s_offset_c1 = s_offset_c1 + 1
91297 END DO
91298 s_offset_b1 = s_offset_b1 + 5
91299 END DO
91300 s_offset_a1 = s_offset_a1 + 9
91301 END DO
91302 END SUBROUTINE contract_gdsf
91303#endif
91304#if __MAX_CONTR > 4 || __MAX_CONTR == 4
91305! **************************************************************************************************
91306!> \brief ...
91307!> \param work ...
91308!> \param nl_a ...
91309!> \param nl_b ...
91310!> \param nl_c ...
91311!> \param nl_d ...
91312!> \param sphi_a ...
91313!> \param sphi_b ...
91314!> \param sphi_c ...
91315!> \param sphi_d ...
91316!> \param primitives ...
91317!> \param buffer1 ...
91318!> \param buffer2 ...
91319! **************************************************************************************************
91320 SUBROUTINE contract_gdsg(work, &
91321 nl_a, nl_b, nl_c, nl_d, &
91322 sphi_a, sphi_b, sphi_c, sphi_d, &
91323 primitives, &
91324 buffer1, buffer2)
91325 REAL(dp), DIMENSION(15*6*1*15), INTENT(IN) :: work
91326 INTEGER :: nl_a, nl_b, nl_c, nl_d
91327 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
91328 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
91329 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
91330 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
91331 REAL(dp), &
91332 DIMENSION(9*nl_a, 5*nl_b, 1*nl_c, 9*nl_d) :: primitives
91333 REAL(dp), DIMENSION(15*6*1*15) :: buffer1, buffer2
91334
91335 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
91336 kmax, s_offset_a1, s_offset_b1, &
91337 s_offset_c1, s_offset_d1
91338
91339 s_offset_a1 = 0
91340 DO ia = 1, nl_a
91341 s_offset_b1 = 0
91342 DO ib = 1, nl_b
91343 s_offset_c1 = 0
91344 DO ic = 1, nl_c
91345 s_offset_d1 = 0
91346 DO id = 1, nl_d
91347 buffer1 = 0.0_dp
91348 imax = 6*1*15
91349 kmax = 15
91350 DO i = 1, imax
91351 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
91352 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
91353 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
91354 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
91355 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
91356 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
91357 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
91358 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
91359 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
91360 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
91361 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
91362 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
91363 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
91364 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
91365 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
91366 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
91367 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
91368 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
91369 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
91370 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
91371 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
91372 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
91373 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
91374 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
91375 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
91376 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
91377 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
91378 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
91379 END DO
91380 buffer2 = 0.0_dp
91381 imax = 9*1*15
91382 kmax = 6
91383 DO i = 1, imax
91384 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
91385 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
91386 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
91387 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
91388 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
91389 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
91390 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
91391 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
91392 END DO
91393 buffer1 = 0.0_dp
91394 imax = 9*5*15
91395 kmax = 1
91396 DO i = 1, imax
91397 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
91398 END DO
91399 imax = 9*5*1
91400 kmax = 15
91401 i = 0
91402 DO i1 = 1, 1
91403 DO i2 = 1, 5
91404 DO i3 = 1, 9
91405 i = i + 1
91406 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
91407 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
91408 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
91409 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
91410 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
91411 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
91412 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
91413 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
91414 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
91415 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
91416 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
91417 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
91418 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
91419 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
91420 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
91421 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
91422 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
91423 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
91424 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
91425 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
91426 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
91427 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
91428 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
91429 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
91430 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
91431 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
91432 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
91433 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
91434 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
91435 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
91436 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
91437 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
91438 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
91439 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
91440 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
91441 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
91442 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
91443 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
91444 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
91445 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
91446 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
91447 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
91448 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
91449 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
91450 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
91451 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
91452 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
91453 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
91454 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
91455 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
91456 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
91457 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
91458 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
91459 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
91460 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
91461 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
91462 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
91463 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
91464 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
91465 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
91466 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
91467 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
91468 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
91469 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
91470 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
91471 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
91472 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
91473 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
91474 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
91475 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
91476 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
91477 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
91478 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
91479 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
91480 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
91481 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
91482 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
91483 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
91484 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
91485 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
91486 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
91487 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
91488 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
91489 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
91490 END DO
91491 END DO
91492 END DO
91493 s_offset_d1 = s_offset_d1 + 9
91494 END DO
91495 s_offset_c1 = s_offset_c1 + 1
91496 END DO
91497 s_offset_b1 = s_offset_b1 + 5
91498 END DO
91499 s_offset_a1 = s_offset_a1 + 9
91500 END DO
91501 END SUBROUTINE contract_gdsg
91502#endif
91503#if __MAX_CONTR > 4 || __MAX_CONTR == 4
91504! **************************************************************************************************
91505!> \brief ...
91506!> \param work ...
91507!> \param nl_a ...
91508!> \param nl_b ...
91509!> \param nl_c ...
91510!> \param nl_d ...
91511!> \param sphi_a ...
91512!> \param sphi_b ...
91513!> \param sphi_c ...
91514!> \param sphi_d ...
91515!> \param primitives ...
91516!> \param buffer1 ...
91517!> \param buffer2 ...
91518! **************************************************************************************************
91519 SUBROUTINE contract_gdps(work, &
91520 nl_a, nl_b, nl_c, nl_d, &
91521 sphi_a, sphi_b, sphi_c, sphi_d, &
91522 primitives, &
91523 buffer1, buffer2)
91524 REAL(dp), DIMENSION(15*6*3*1), INTENT(IN) :: work
91525 INTEGER :: nl_a, nl_b, nl_c, nl_d
91526 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
91527 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
91528 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
91529 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
91530 REAL(dp), &
91531 DIMENSION(9*nl_a, 5*nl_b, 3*nl_c, 1*nl_d) :: primitives
91532 REAL(dp), DIMENSION(15*6*3*1) :: buffer1, buffer2
91533
91534 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
91535 kmax, s_offset_a1, s_offset_b1, &
91536 s_offset_c1, s_offset_d1
91537
91538 s_offset_a1 = 0
91539 DO ia = 1, nl_a
91540 s_offset_b1 = 0
91541 DO ib = 1, nl_b
91542 s_offset_c1 = 0
91543 DO ic = 1, nl_c
91544 s_offset_d1 = 0
91545 DO id = 1, nl_d
91546 buffer1 = 0.0_dp
91547 imax = 6*3*1
91548 kmax = 15
91549 DO i = 1, imax
91550 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
91551 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
91552 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
91553 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
91554 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
91555 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
91556 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
91557 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
91558 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
91559 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
91560 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
91561 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
91562 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
91563 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
91564 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
91565 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
91566 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
91567 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
91568 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
91569 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
91570 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
91571 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
91572 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
91573 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
91574 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
91575 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
91576 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
91577 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
91578 END DO
91579 buffer2 = 0.0_dp
91580 imax = 9*3*1
91581 kmax = 6
91582 DO i = 1, imax
91583 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
91584 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
91585 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
91586 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
91587 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
91588 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
91589 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
91590 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
91591 END DO
91592 buffer1 = 0.0_dp
91593 imax = 9*5*1
91594 kmax = 3
91595 DO i = 1, imax
91596 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
91597 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
91598 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
91599 END DO
91600 imax = 9*5*3
91601 kmax = 1
91602 i = 0
91603 DO i1 = 1, 3
91604 DO i2 = 1, 5
91605 DO i3 = 1, 9
91606 i = i + 1
91607 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
91608 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
91609 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
91610 END DO
91611 END DO
91612 END DO
91613 s_offset_d1 = s_offset_d1 + 1
91614 END DO
91615 s_offset_c1 = s_offset_c1 + 3
91616 END DO
91617 s_offset_b1 = s_offset_b1 + 5
91618 END DO
91619 s_offset_a1 = s_offset_a1 + 9
91620 END DO
91621 END SUBROUTINE contract_gdps
91622#endif
91623#if __MAX_CONTR > 4 || __MAX_CONTR == 4
91624! **************************************************************************************************
91625!> \brief ...
91626!> \param work ...
91627!> \param nl_a ...
91628!> \param nl_b ...
91629!> \param nl_c ...
91630!> \param nl_d ...
91631!> \param sphi_a ...
91632!> \param sphi_b ...
91633!> \param sphi_c ...
91634!> \param sphi_d ...
91635!> \param primitives ...
91636!> \param buffer1 ...
91637!> \param buffer2 ...
91638! **************************************************************************************************
91639 SUBROUTINE contract_gdpp(work, &
91640 nl_a, nl_b, nl_c, nl_d, &
91641 sphi_a, sphi_b, sphi_c, sphi_d, &
91642 primitives, &
91643 buffer1, buffer2)
91644 REAL(dp), DIMENSION(15*6*3*3), INTENT(IN) :: work
91645 INTEGER :: nl_a, nl_b, nl_c, nl_d
91646 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
91647 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
91648 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
91649 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
91650 REAL(dp), &
91651 DIMENSION(9*nl_a, 5*nl_b, 3*nl_c, 3*nl_d) :: primitives
91652 REAL(dp), DIMENSION(15*6*3*3) :: buffer1, buffer2
91653
91654 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
91655 kmax, s_offset_a1, s_offset_b1, &
91656 s_offset_c1, s_offset_d1
91657
91658 s_offset_a1 = 0
91659 DO ia = 1, nl_a
91660 s_offset_b1 = 0
91661 DO ib = 1, nl_b
91662 s_offset_c1 = 0
91663 DO ic = 1, nl_c
91664 s_offset_d1 = 0
91665 DO id = 1, nl_d
91666 buffer1 = 0.0_dp
91667 imax = 6*3*3
91668 kmax = 15
91669 DO i = 1, imax
91670 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
91671 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
91672 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
91673 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
91674 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
91675 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
91676 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
91677 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
91678 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
91679 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
91680 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
91681 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
91682 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
91683 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
91684 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
91685 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
91686 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
91687 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
91688 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
91689 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
91690 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
91691 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
91692 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
91693 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
91694 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
91695 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
91696 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
91697 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
91698 END DO
91699 buffer2 = 0.0_dp
91700 imax = 9*3*3
91701 kmax = 6
91702 DO i = 1, imax
91703 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
91704 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
91705 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
91706 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
91707 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
91708 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
91709 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
91710 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
91711 END DO
91712 buffer1 = 0.0_dp
91713 imax = 9*5*3
91714 kmax = 3
91715 DO i = 1, imax
91716 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
91717 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
91718 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
91719 END DO
91720 imax = 9*5*3
91721 kmax = 3
91722 i = 0
91723 DO i1 = 1, 3
91724 DO i2 = 1, 5
91725 DO i3 = 1, 9
91726 i = i + 1
91727 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
91728 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
91729 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
91730 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
91731 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
91732 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
91733 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
91734 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
91735 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
91736 END DO
91737 END DO
91738 END DO
91739 s_offset_d1 = s_offset_d1 + 3
91740 END DO
91741 s_offset_c1 = s_offset_c1 + 3
91742 END DO
91743 s_offset_b1 = s_offset_b1 + 5
91744 END DO
91745 s_offset_a1 = s_offset_a1 + 9
91746 END DO
91747 END SUBROUTINE contract_gdpp
91748#endif
91749#if __MAX_CONTR > 4 || __MAX_CONTR == 4
91750! **************************************************************************************************
91751!> \brief ...
91752!> \param work ...
91753!> \param nl_a ...
91754!> \param nl_b ...
91755!> \param nl_c ...
91756!> \param nl_d ...
91757!> \param sphi_a ...
91758!> \param sphi_b ...
91759!> \param sphi_c ...
91760!> \param sphi_d ...
91761!> \param primitives ...
91762!> \param buffer1 ...
91763!> \param buffer2 ...
91764! **************************************************************************************************
91765 SUBROUTINE contract_gdpd(work, &
91766 nl_a, nl_b, nl_c, nl_d, &
91767 sphi_a, sphi_b, sphi_c, sphi_d, &
91768 primitives, &
91769 buffer1, buffer2)
91770 REAL(dp), DIMENSION(15*6*3*6), INTENT(IN) :: work
91771 INTEGER :: nl_a, nl_b, nl_c, nl_d
91772 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
91773 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
91774 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
91775 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
91776 REAL(dp), &
91777 DIMENSION(9*nl_a, 5*nl_b, 3*nl_c, 5*nl_d) :: primitives
91778 REAL(dp), DIMENSION(15*6*3*6) :: buffer1, buffer2
91779
91780 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
91781 kmax, s_offset_a1, s_offset_b1, &
91782 s_offset_c1, s_offset_d1
91783
91784 s_offset_a1 = 0
91785 DO ia = 1, nl_a
91786 s_offset_b1 = 0
91787 DO ib = 1, nl_b
91788 s_offset_c1 = 0
91789 DO ic = 1, nl_c
91790 s_offset_d1 = 0
91791 DO id = 1, nl_d
91792 buffer1 = 0.0_dp
91793 imax = 6*3*6
91794 kmax = 15
91795 DO i = 1, imax
91796 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
91797 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
91798 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
91799 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
91800 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
91801 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
91802 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
91803 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
91804 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
91805 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
91806 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
91807 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
91808 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
91809 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
91810 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
91811 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
91812 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
91813 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
91814 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
91815 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
91816 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
91817 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
91818 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
91819 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
91820 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
91821 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
91822 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
91823 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
91824 END DO
91825 buffer2 = 0.0_dp
91826 imax = 9*3*6
91827 kmax = 6
91828 DO i = 1, imax
91829 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
91830 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
91831 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
91832 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
91833 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
91834 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
91835 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
91836 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
91837 END DO
91838 buffer1 = 0.0_dp
91839 imax = 9*5*6
91840 kmax = 3
91841 DO i = 1, imax
91842 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
91843 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
91844 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
91845 END DO
91846 imax = 9*5*3
91847 kmax = 6
91848 i = 0
91849 DO i1 = 1, 3
91850 DO i2 = 1, 5
91851 DO i3 = 1, 9
91852 i = i + 1
91853 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
91854 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
91855 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
91856 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
91857 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
91858 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
91859 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
91860 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
91861 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
91862 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
91863 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
91864 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
91865 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
91866 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
91867 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
91868 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
91869 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
91870 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
91871 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
91872 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
91873 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
91874 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
91875 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
91876 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
91877 END DO
91878 END DO
91879 END DO
91880 s_offset_d1 = s_offset_d1 + 5
91881 END DO
91882 s_offset_c1 = s_offset_c1 + 3
91883 END DO
91884 s_offset_b1 = s_offset_b1 + 5
91885 END DO
91886 s_offset_a1 = s_offset_a1 + 9
91887 END DO
91888 END SUBROUTINE contract_gdpd
91889#endif
91890#if __MAX_CONTR > 4 || __MAX_CONTR == 4
91891! **************************************************************************************************
91892!> \brief ...
91893!> \param work ...
91894!> \param nl_a ...
91895!> \param nl_b ...
91896!> \param nl_c ...
91897!> \param nl_d ...
91898!> \param sphi_a ...
91899!> \param sphi_b ...
91900!> \param sphi_c ...
91901!> \param sphi_d ...
91902!> \param primitives ...
91903!> \param buffer1 ...
91904!> \param buffer2 ...
91905! **************************************************************************************************
91906 SUBROUTINE contract_gdpf(work, &
91907 nl_a, nl_b, nl_c, nl_d, &
91908 sphi_a, sphi_b, sphi_c, sphi_d, &
91909 primitives, &
91910 buffer1, buffer2)
91911 REAL(dp), DIMENSION(15*6*3*10), INTENT(IN) :: work
91912 INTEGER :: nl_a, nl_b, nl_c, nl_d
91913 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
91914 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
91915 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
91916 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
91917 REAL(dp), &
91918 DIMENSION(9*nl_a, 5*nl_b, 3*nl_c, 7*nl_d) :: primitives
91919 REAL(dp), DIMENSION(15*6*3*10) :: buffer1, buffer2
91920
91921 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
91922 kmax, s_offset_a1, s_offset_b1, &
91923 s_offset_c1, s_offset_d1
91924
91925 s_offset_a1 = 0
91926 DO ia = 1, nl_a
91927 s_offset_b1 = 0
91928 DO ib = 1, nl_b
91929 s_offset_c1 = 0
91930 DO ic = 1, nl_c
91931 s_offset_d1 = 0
91932 DO id = 1, nl_d
91933 buffer1 = 0.0_dp
91934 imax = 6*3*10
91935 kmax = 15
91936 DO i = 1, imax
91937 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
91938 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
91939 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
91940 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
91941 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
91942 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
91943 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
91944 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
91945 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
91946 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
91947 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
91948 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
91949 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
91950 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
91951 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
91952 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
91953 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
91954 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
91955 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
91956 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
91957 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
91958 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
91959 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
91960 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
91961 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
91962 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
91963 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
91964 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
91965 END DO
91966 buffer2 = 0.0_dp
91967 imax = 9*3*10
91968 kmax = 6
91969 DO i = 1, imax
91970 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
91971 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
91972 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
91973 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
91974 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
91975 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
91976 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
91977 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
91978 END DO
91979 buffer1 = 0.0_dp
91980 imax = 9*5*10
91981 kmax = 3
91982 DO i = 1, imax
91983 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
91984 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
91985 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
91986 END DO
91987 imax = 9*5*3
91988 kmax = 10
91989 i = 0
91990 DO i1 = 1, 3
91991 DO i2 = 1, 5
91992 DO i3 = 1, 9
91993 i = i + 1
91994 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
91995 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
91996 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
91997 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
91998 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
91999 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
92000 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
92001 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
92002 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
92003 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
92004 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
92005 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
92006 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
92007 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
92008 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
92009 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
92010 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
92011 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
92012 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
92013 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
92014 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
92015 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
92016 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
92017 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
92018 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
92019 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
92020 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
92021 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
92022 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
92023 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
92024 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
92025 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
92026 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
92027 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
92028 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
92029 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
92030 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
92031 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
92032 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
92033 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
92034 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
92035 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
92036 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
92037 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
92038 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
92039 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
92040 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
92041 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
92042 END DO
92043 END DO
92044 END DO
92045 s_offset_d1 = s_offset_d1 + 7
92046 END DO
92047 s_offset_c1 = s_offset_c1 + 3
92048 END DO
92049 s_offset_b1 = s_offset_b1 + 5
92050 END DO
92051 s_offset_a1 = s_offset_a1 + 9
92052 END DO
92053 END SUBROUTINE contract_gdpf
92054#endif
92055#if __MAX_CONTR > 4 || __MAX_CONTR == 4
92056! **************************************************************************************************
92057!> \brief ...
92058!> \param work ...
92059!> \param nl_a ...
92060!> \param nl_b ...
92061!> \param nl_c ...
92062!> \param nl_d ...
92063!> \param sphi_a ...
92064!> \param sphi_b ...
92065!> \param sphi_c ...
92066!> \param sphi_d ...
92067!> \param primitives ...
92068!> \param buffer1 ...
92069!> \param buffer2 ...
92070! **************************************************************************************************
92071 SUBROUTINE contract_gdpg(work, &
92072 nl_a, nl_b, nl_c, nl_d, &
92073 sphi_a, sphi_b, sphi_c, sphi_d, &
92074 primitives, &
92075 buffer1, buffer2)
92076 REAL(dp), DIMENSION(15*6*3*15), INTENT(IN) :: work
92077 INTEGER :: nl_a, nl_b, nl_c, nl_d
92078 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
92079 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
92080 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
92081 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
92082 REAL(dp), &
92083 DIMENSION(9*nl_a, 5*nl_b, 3*nl_c, 9*nl_d) :: primitives
92084 REAL(dp), DIMENSION(15*6*3*15) :: buffer1, buffer2
92085
92086 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
92087 kmax, s_offset_a1, s_offset_b1, &
92088 s_offset_c1, s_offset_d1
92089
92090 s_offset_a1 = 0
92091 DO ia = 1, nl_a
92092 s_offset_b1 = 0
92093 DO ib = 1, nl_b
92094 s_offset_c1 = 0
92095 DO ic = 1, nl_c
92096 s_offset_d1 = 0
92097 DO id = 1, nl_d
92098 buffer1 = 0.0_dp
92099 imax = 6*3*15
92100 kmax = 15
92101 DO i = 1, imax
92102 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
92103 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
92104 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
92105 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
92106 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
92107 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
92108 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
92109 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
92110 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
92111 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
92112 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
92113 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
92114 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
92115 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
92116 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
92117 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
92118 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
92119 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
92120 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
92121 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
92122 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
92123 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
92124 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
92125 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
92126 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
92127 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
92128 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
92129 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
92130 END DO
92131 buffer2 = 0.0_dp
92132 imax = 9*3*15
92133 kmax = 6
92134 DO i = 1, imax
92135 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
92136 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
92137 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
92138 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
92139 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
92140 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
92141 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
92142 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
92143 END DO
92144 buffer1 = 0.0_dp
92145 imax = 9*5*15
92146 kmax = 3
92147 DO i = 1, imax
92148 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
92149 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
92150 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
92151 END DO
92152 imax = 9*5*3
92153 kmax = 15
92154 i = 0
92155 DO i1 = 1, 3
92156 DO i2 = 1, 5
92157 DO i3 = 1, 9
92158 i = i + 1
92159 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
92160 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
92161 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
92162 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
92163 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
92164 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
92165 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
92166 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
92167 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
92168 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
92169 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
92170 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
92171 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
92172 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
92173 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
92174 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
92175 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
92176 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
92177 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
92178 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
92179 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
92180 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
92181 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
92182 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
92183 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
92184 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
92185 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
92186 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
92187 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
92188 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
92189 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
92190 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
92191 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
92192 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
92193 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
92194 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
92195 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
92196 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
92197 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
92198 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
92199 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
92200 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
92201 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
92202 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
92203 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
92204 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
92205 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
92206 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
92207 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
92208 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
92209 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
92210 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
92211 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
92212 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
92213 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
92214 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
92215 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
92216 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
92217 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
92218 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
92219 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
92220 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
92221 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
92222 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
92223 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
92224 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
92225 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
92226 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
92227 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
92228 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
92229 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
92230 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
92231 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
92232 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
92233 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
92234 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
92235 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
92236 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
92237 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
92238 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
92239 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
92240 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
92241 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
92242 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
92243 END DO
92244 END DO
92245 END DO
92246 s_offset_d1 = s_offset_d1 + 9
92247 END DO
92248 s_offset_c1 = s_offset_c1 + 3
92249 END DO
92250 s_offset_b1 = s_offset_b1 + 5
92251 END DO
92252 s_offset_a1 = s_offset_a1 + 9
92253 END DO
92254 END SUBROUTINE contract_gdpg
92255#endif
92256#if __MAX_CONTR > 4 || __MAX_CONTR == 4
92257! **************************************************************************************************
92258!> \brief ...
92259!> \param work ...
92260!> \param nl_a ...
92261!> \param nl_b ...
92262!> \param nl_c ...
92263!> \param nl_d ...
92264!> \param sphi_a ...
92265!> \param sphi_b ...
92266!> \param sphi_c ...
92267!> \param sphi_d ...
92268!> \param primitives ...
92269!> \param buffer1 ...
92270!> \param buffer2 ...
92271! **************************************************************************************************
92272 SUBROUTINE contract_gdds(work, &
92273 nl_a, nl_b, nl_c, nl_d, &
92274 sphi_a, sphi_b, sphi_c, sphi_d, &
92275 primitives, &
92276 buffer1, buffer2)
92277 REAL(dp), DIMENSION(15*6*6*1), INTENT(IN) :: work
92278 INTEGER :: nl_a, nl_b, nl_c, nl_d
92279 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
92280 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
92281 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
92282 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
92283 REAL(dp), &
92284 DIMENSION(9*nl_a, 5*nl_b, 5*nl_c, 1*nl_d) :: primitives
92285 REAL(dp), DIMENSION(15*6*6*1) :: buffer1, buffer2
92286
92287 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
92288 kmax, s_offset_a1, s_offset_b1, &
92289 s_offset_c1, s_offset_d1
92290
92291 s_offset_a1 = 0
92292 DO ia = 1, nl_a
92293 s_offset_b1 = 0
92294 DO ib = 1, nl_b
92295 s_offset_c1 = 0
92296 DO ic = 1, nl_c
92297 s_offset_d1 = 0
92298 DO id = 1, nl_d
92299 buffer1 = 0.0_dp
92300 imax = 6*6*1
92301 kmax = 15
92302 DO i = 1, imax
92303 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
92304 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
92305 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
92306 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
92307 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
92308 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
92309 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
92310 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
92311 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
92312 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
92313 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
92314 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
92315 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
92316 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
92317 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
92318 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
92319 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
92320 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
92321 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
92322 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
92323 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
92324 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
92325 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
92326 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
92327 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
92328 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
92329 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
92330 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
92331 END DO
92332 buffer2 = 0.0_dp
92333 imax = 9*6*1
92334 kmax = 6
92335 DO i = 1, imax
92336 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
92337 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
92338 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
92339 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
92340 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
92341 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
92342 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
92343 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
92344 END DO
92345 buffer1 = 0.0_dp
92346 imax = 9*5*1
92347 kmax = 6
92348 DO i = 1, imax
92349 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
92350 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
92351 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
92352 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
92353 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
92354 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
92355 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
92356 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
92357 END DO
92358 imax = 9*5*5
92359 kmax = 1
92360 i = 0
92361 DO i1 = 1, 5
92362 DO i2 = 1, 5
92363 DO i3 = 1, 9
92364 i = i + 1
92365 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
92366 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
92367 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
92368 END DO
92369 END DO
92370 END DO
92371 s_offset_d1 = s_offset_d1 + 1
92372 END DO
92373 s_offset_c1 = s_offset_c1 + 5
92374 END DO
92375 s_offset_b1 = s_offset_b1 + 5
92376 END DO
92377 s_offset_a1 = s_offset_a1 + 9
92378 END DO
92379 END SUBROUTINE contract_gdds
92380#endif
92381#if __MAX_CONTR > 4 || __MAX_CONTR == 4
92382! **************************************************************************************************
92383!> \brief ...
92384!> \param work ...
92385!> \param nl_a ...
92386!> \param nl_b ...
92387!> \param nl_c ...
92388!> \param nl_d ...
92389!> \param sphi_a ...
92390!> \param sphi_b ...
92391!> \param sphi_c ...
92392!> \param sphi_d ...
92393!> \param primitives ...
92394!> \param buffer1 ...
92395!> \param buffer2 ...
92396! **************************************************************************************************
92397 SUBROUTINE contract_gddp(work, &
92398 nl_a, nl_b, nl_c, nl_d, &
92399 sphi_a, sphi_b, sphi_c, sphi_d, &
92400 primitives, &
92401 buffer1, buffer2)
92402 REAL(dp), DIMENSION(15*6*6*3), INTENT(IN) :: work
92403 INTEGER :: nl_a, nl_b, nl_c, nl_d
92404 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
92405 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
92406 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
92407 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
92408 REAL(dp), &
92409 DIMENSION(9*nl_a, 5*nl_b, 5*nl_c, 3*nl_d) :: primitives
92410 REAL(dp), DIMENSION(15*6*6*3) :: buffer1, buffer2
92411
92412 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
92413 kmax, s_offset_a1, s_offset_b1, &
92414 s_offset_c1, s_offset_d1
92415
92416 s_offset_a1 = 0
92417 DO ia = 1, nl_a
92418 s_offset_b1 = 0
92419 DO ib = 1, nl_b
92420 s_offset_c1 = 0
92421 DO ic = 1, nl_c
92422 s_offset_d1 = 0
92423 DO id = 1, nl_d
92424 buffer1 = 0.0_dp
92425 imax = 6*6*3
92426 kmax = 15
92427 DO i = 1, imax
92428 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
92429 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
92430 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
92431 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
92432 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
92433 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
92434 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
92435 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
92436 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
92437 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
92438 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
92439 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
92440 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
92441 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
92442 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
92443 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
92444 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
92445 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
92446 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
92447 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
92448 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
92449 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
92450 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
92451 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
92452 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
92453 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
92454 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
92455 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
92456 END DO
92457 buffer2 = 0.0_dp
92458 imax = 9*6*3
92459 kmax = 6
92460 DO i = 1, imax
92461 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
92462 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
92463 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
92464 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
92465 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
92466 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
92467 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
92468 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
92469 END DO
92470 buffer1 = 0.0_dp
92471 imax = 9*5*3
92472 kmax = 6
92473 DO i = 1, imax
92474 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
92475 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
92476 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
92477 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
92478 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
92479 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
92480 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
92481 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
92482 END DO
92483 imax = 9*5*5
92484 kmax = 3
92485 i = 0
92486 DO i1 = 1, 5
92487 DO i2 = 1, 5
92488 DO i3 = 1, 9
92489 i = i + 1
92490 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
92491 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
92492 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
92493 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
92494 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
92495 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
92496 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
92497 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
92498 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
92499 END DO
92500 END DO
92501 END DO
92502 s_offset_d1 = s_offset_d1 + 3
92503 END DO
92504 s_offset_c1 = s_offset_c1 + 5
92505 END DO
92506 s_offset_b1 = s_offset_b1 + 5
92507 END DO
92508 s_offset_a1 = s_offset_a1 + 9
92509 END DO
92510 END SUBROUTINE contract_gddp
92511#endif
92512#if __MAX_CONTR > 4 || __MAX_CONTR == 4
92513! **************************************************************************************************
92514!> \brief ...
92515!> \param work ...
92516!> \param nl_a ...
92517!> \param nl_b ...
92518!> \param nl_c ...
92519!> \param nl_d ...
92520!> \param sphi_a ...
92521!> \param sphi_b ...
92522!> \param sphi_c ...
92523!> \param sphi_d ...
92524!> \param primitives ...
92525!> \param buffer1 ...
92526!> \param buffer2 ...
92527! **************************************************************************************************
92528 SUBROUTINE contract_gddd(work, &
92529 nl_a, nl_b, nl_c, nl_d, &
92530 sphi_a, sphi_b, sphi_c, sphi_d, &
92531 primitives, &
92532 buffer1, buffer2)
92533 REAL(dp), DIMENSION(15*6*6*6), INTENT(IN) :: work
92534 INTEGER :: nl_a, nl_b, nl_c, nl_d
92535 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
92536 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
92537 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
92538 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
92539 REAL(dp), &
92540 DIMENSION(9*nl_a, 5*nl_b, 5*nl_c, 5*nl_d) :: primitives
92541 REAL(dp), DIMENSION(15*6*6*6) :: buffer1, buffer2
92542
92543 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
92544 kmax, s_offset_a1, s_offset_b1, &
92545 s_offset_c1, s_offset_d1
92546
92547 s_offset_a1 = 0
92548 DO ia = 1, nl_a
92549 s_offset_b1 = 0
92550 DO ib = 1, nl_b
92551 s_offset_c1 = 0
92552 DO ic = 1, nl_c
92553 s_offset_d1 = 0
92554 DO id = 1, nl_d
92555 buffer1 = 0.0_dp
92556 imax = 6*6*6
92557 kmax = 15
92558 DO i = 1, imax
92559 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
92560 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
92561 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
92562 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
92563 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
92564 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
92565 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
92566 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
92567 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
92568 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
92569 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
92570 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
92571 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
92572 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
92573 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
92574 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
92575 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
92576 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
92577 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
92578 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
92579 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
92580 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
92581 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
92582 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
92583 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
92584 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
92585 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
92586 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
92587 END DO
92588 buffer2 = 0.0_dp
92589 imax = 9*6*6
92590 kmax = 6
92591 DO i = 1, imax
92592 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
92593 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
92594 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
92595 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
92596 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
92597 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
92598 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
92599 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
92600 END DO
92601 buffer1 = 0.0_dp
92602 imax = 9*5*6
92603 kmax = 6
92604 DO i = 1, imax
92605 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
92606 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
92607 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
92608 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
92609 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
92610 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
92611 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
92612 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
92613 END DO
92614 imax = 9*5*5
92615 kmax = 6
92616 i = 0
92617 DO i1 = 1, 5
92618 DO i2 = 1, 5
92619 DO i3 = 1, 9
92620 i = i + 1
92621 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
92622 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
92623 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
92624 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
92625 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
92626 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
92627 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
92628 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
92629 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
92630 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
92631 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
92632 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
92633 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
92634 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
92635 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
92636 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
92637 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
92638 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
92639 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
92640 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
92641 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
92642 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
92643 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
92644 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
92645 END DO
92646 END DO
92647 END DO
92648 s_offset_d1 = s_offset_d1 + 5
92649 END DO
92650 s_offset_c1 = s_offset_c1 + 5
92651 END DO
92652 s_offset_b1 = s_offset_b1 + 5
92653 END DO
92654 s_offset_a1 = s_offset_a1 + 9
92655 END DO
92656 END SUBROUTINE contract_gddd
92657#endif
92658#if __MAX_CONTR > 4 || __MAX_CONTR == 4
92659! **************************************************************************************************
92660!> \brief ...
92661!> \param work ...
92662!> \param nl_a ...
92663!> \param nl_b ...
92664!> \param nl_c ...
92665!> \param nl_d ...
92666!> \param sphi_a ...
92667!> \param sphi_b ...
92668!> \param sphi_c ...
92669!> \param sphi_d ...
92670!> \param primitives ...
92671!> \param buffer1 ...
92672!> \param buffer2 ...
92673! **************************************************************************************************
92674 SUBROUTINE contract_gddf(work, &
92675 nl_a, nl_b, nl_c, nl_d, &
92676 sphi_a, sphi_b, sphi_c, sphi_d, &
92677 primitives, &
92678 buffer1, buffer2)
92679 REAL(dp), DIMENSION(15*6*6*10), INTENT(IN) :: work
92680 INTEGER :: nl_a, nl_b, nl_c, nl_d
92681 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
92682 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
92683 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
92684 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
92685 REAL(dp), &
92686 DIMENSION(9*nl_a, 5*nl_b, 5*nl_c, 7*nl_d) :: primitives
92687 REAL(dp), DIMENSION(15*6*6*10) :: buffer1, buffer2
92688
92689 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
92690 kmax, s_offset_a1, s_offset_b1, &
92691 s_offset_c1, s_offset_d1
92692
92693 s_offset_a1 = 0
92694 DO ia = 1, nl_a
92695 s_offset_b1 = 0
92696 DO ib = 1, nl_b
92697 s_offset_c1 = 0
92698 DO ic = 1, nl_c
92699 s_offset_d1 = 0
92700 DO id = 1, nl_d
92701 buffer1 = 0.0_dp
92702 imax = 6*6*10
92703 kmax = 15
92704 DO i = 1, imax
92705 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
92706 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
92707 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
92708 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
92709 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
92710 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
92711 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
92712 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
92713 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
92714 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
92715 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
92716 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
92717 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
92718 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
92719 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
92720 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
92721 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
92722 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
92723 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
92724 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
92725 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
92726 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
92727 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
92728 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
92729 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
92730 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
92731 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
92732 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
92733 END DO
92734 buffer2 = 0.0_dp
92735 imax = 9*6*10
92736 kmax = 6
92737 DO i = 1, imax
92738 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
92739 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
92740 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
92741 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
92742 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
92743 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
92744 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
92745 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
92746 END DO
92747 buffer1 = 0.0_dp
92748 imax = 9*5*10
92749 kmax = 6
92750 DO i = 1, imax
92751 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
92752 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
92753 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
92754 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
92755 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
92756 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
92757 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
92758 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
92759 END DO
92760 imax = 9*5*5
92761 kmax = 10
92762 i = 0
92763 DO i1 = 1, 5
92764 DO i2 = 1, 5
92765 DO i3 = 1, 9
92766 i = i + 1
92767 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
92768 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
92769 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
92770 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
92771 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
92772 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
92773 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
92774 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
92775 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
92776 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
92777 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
92778 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
92779 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
92780 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
92781 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
92782 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
92783 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
92784 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
92785 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
92786 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
92787 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
92788 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
92789 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
92790 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
92791 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
92792 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
92793 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
92794 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
92795 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
92796 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
92797 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
92798 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
92799 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
92800 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
92801 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
92802 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
92803 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
92804 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
92805 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
92806 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
92807 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
92808 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
92809 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
92810 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
92811 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
92812 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
92813 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
92814 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
92815 END DO
92816 END DO
92817 END DO
92818 s_offset_d1 = s_offset_d1 + 7
92819 END DO
92820 s_offset_c1 = s_offset_c1 + 5
92821 END DO
92822 s_offset_b1 = s_offset_b1 + 5
92823 END DO
92824 s_offset_a1 = s_offset_a1 + 9
92825 END DO
92826 END SUBROUTINE contract_gddf
92827#endif
92828#if __MAX_CONTR > 4 || __MAX_CONTR == 4
92829! **************************************************************************************************
92830!> \brief ...
92831!> \param work ...
92832!> \param nl_a ...
92833!> \param nl_b ...
92834!> \param nl_c ...
92835!> \param nl_d ...
92836!> \param sphi_a ...
92837!> \param sphi_b ...
92838!> \param sphi_c ...
92839!> \param sphi_d ...
92840!> \param primitives ...
92841!> \param buffer1 ...
92842!> \param buffer2 ...
92843! **************************************************************************************************
92844 SUBROUTINE contract_gddg(work, &
92845 nl_a, nl_b, nl_c, nl_d, &
92846 sphi_a, sphi_b, sphi_c, sphi_d, &
92847 primitives, &
92848 buffer1, buffer2)
92849 REAL(dp), DIMENSION(15*6*6*15), INTENT(IN) :: work
92850 INTEGER :: nl_a, nl_b, nl_c, nl_d
92851 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
92852 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
92853 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
92854 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
92855 REAL(dp), &
92856 DIMENSION(9*nl_a, 5*nl_b, 5*nl_c, 9*nl_d) :: primitives
92857 REAL(dp), DIMENSION(15*6*6*15) :: buffer1, buffer2
92858
92859 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
92860 kmax, s_offset_a1, s_offset_b1, &
92861 s_offset_c1, s_offset_d1
92862
92863 s_offset_a1 = 0
92864 DO ia = 1, nl_a
92865 s_offset_b1 = 0
92866 DO ib = 1, nl_b
92867 s_offset_c1 = 0
92868 DO ic = 1, nl_c
92869 s_offset_d1 = 0
92870 DO id = 1, nl_d
92871 buffer1 = 0.0_dp
92872 imax = 6*6*15
92873 kmax = 15
92874 DO i = 1, imax
92875 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
92876 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
92877 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
92878 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
92879 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
92880 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
92881 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
92882 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
92883 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
92884 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
92885 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
92886 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
92887 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
92888 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
92889 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
92890 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
92891 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
92892 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
92893 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
92894 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
92895 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
92896 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
92897 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
92898 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
92899 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
92900 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
92901 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
92902 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
92903 END DO
92904 buffer2 = 0.0_dp
92905 imax = 9*6*15
92906 kmax = 6
92907 DO i = 1, imax
92908 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
92909 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
92910 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
92911 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
92912 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
92913 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
92914 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
92915 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
92916 END DO
92917 buffer1 = 0.0_dp
92918 imax = 9*5*15
92919 kmax = 6
92920 DO i = 1, imax
92921 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
92922 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
92923 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
92924 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
92925 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
92926 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
92927 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
92928 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
92929 END DO
92930 imax = 9*5*5
92931 kmax = 15
92932 i = 0
92933 DO i1 = 1, 5
92934 DO i2 = 1, 5
92935 DO i3 = 1, 9
92936 i = i + 1
92937 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
92938 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
92939 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
92940 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
92941 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
92942 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
92943 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
92944 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
92945 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
92946 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
92947 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
92948 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
92949 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
92950 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
92951 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
92952 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
92953 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
92954 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
92955 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
92956 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
92957 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
92958 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
92959 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
92960 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
92961 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
92962 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
92963 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
92964 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
92965 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
92966 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
92967 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
92968 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
92969 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
92970 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
92971 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
92972 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
92973 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
92974 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
92975 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
92976 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
92977 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
92978 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
92979 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
92980 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
92981 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
92982 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
92983 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
92984 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
92985 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
92986 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
92987 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
92988 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
92989 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
92990 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
92991 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
92992 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
92993 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
92994 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
92995 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
92996 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
92997 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
92998 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
92999 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
93000 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
93001 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
93002 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
93003 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
93004 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
93005 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
93006 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
93007 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
93008 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
93009 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
93010 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
93011 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
93012 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
93013 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
93014 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
93015 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
93016 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
93017 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
93018 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
93019 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
93020 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
93021 END DO
93022 END DO
93023 END DO
93024 s_offset_d1 = s_offset_d1 + 9
93025 END DO
93026 s_offset_c1 = s_offset_c1 + 5
93027 END DO
93028 s_offset_b1 = s_offset_b1 + 5
93029 END DO
93030 s_offset_a1 = s_offset_a1 + 9
93031 END DO
93032 END SUBROUTINE contract_gddg
93033#endif
93034#if __MAX_CONTR > 4 || __MAX_CONTR == 4
93035! **************************************************************************************************
93036!> \brief ...
93037!> \param work ...
93038!> \param nl_a ...
93039!> \param nl_b ...
93040!> \param nl_c ...
93041!> \param nl_d ...
93042!> \param sphi_a ...
93043!> \param sphi_b ...
93044!> \param sphi_c ...
93045!> \param sphi_d ...
93046!> \param primitives ...
93047!> \param buffer1 ...
93048!> \param buffer2 ...
93049! **************************************************************************************************
93050 SUBROUTINE contract_gdfs(work, &
93051 nl_a, nl_b, nl_c, nl_d, &
93052 sphi_a, sphi_b, sphi_c, sphi_d, &
93053 primitives, &
93054 buffer1, buffer2)
93055 REAL(dp), DIMENSION(15*6*10*1), INTENT(IN) :: work
93056 INTEGER :: nl_a, nl_b, nl_c, nl_d
93057 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
93058 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
93059 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
93060 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
93061 REAL(dp), &
93062 DIMENSION(9*nl_a, 5*nl_b, 7*nl_c, 1*nl_d) :: primitives
93063 REAL(dp), DIMENSION(15*6*10*1) :: buffer1, buffer2
93064
93065 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
93066 kmax, s_offset_a1, s_offset_b1, &
93067 s_offset_c1, s_offset_d1
93068
93069 s_offset_a1 = 0
93070 DO ia = 1, nl_a
93071 s_offset_b1 = 0
93072 DO ib = 1, nl_b
93073 s_offset_c1 = 0
93074 DO ic = 1, nl_c
93075 s_offset_d1 = 0
93076 DO id = 1, nl_d
93077 buffer1 = 0.0_dp
93078 imax = 6*10*1
93079 kmax = 15
93080 DO i = 1, imax
93081 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
93082 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
93083 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
93084 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
93085 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
93086 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
93087 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
93088 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
93089 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
93090 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
93091 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
93092 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
93093 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
93094 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
93095 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
93096 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
93097 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
93098 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
93099 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
93100 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
93101 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
93102 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
93103 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
93104 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
93105 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
93106 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
93107 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
93108 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
93109 END DO
93110 buffer2 = 0.0_dp
93111 imax = 9*10*1
93112 kmax = 6
93113 DO i = 1, imax
93114 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
93115 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
93116 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
93117 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
93118 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
93119 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
93120 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
93121 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
93122 END DO
93123 buffer1 = 0.0_dp
93124 imax = 9*5*1
93125 kmax = 10
93126 DO i = 1, imax
93127 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
93128 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
93129 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
93130 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
93131 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
93132 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
93133 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
93134 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
93135 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
93136 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
93137 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
93138 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
93139 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
93140 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
93141 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
93142 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
93143 END DO
93144 imax = 9*5*7
93145 kmax = 1
93146 i = 0
93147 DO i1 = 1, 7
93148 DO i2 = 1, 5
93149 DO i3 = 1, 9
93150 i = i + 1
93151 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
93152 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
93153 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
93154 END DO
93155 END DO
93156 END DO
93157 s_offset_d1 = s_offset_d1 + 1
93158 END DO
93159 s_offset_c1 = s_offset_c1 + 7
93160 END DO
93161 s_offset_b1 = s_offset_b1 + 5
93162 END DO
93163 s_offset_a1 = s_offset_a1 + 9
93164 END DO
93165 END SUBROUTINE contract_gdfs
93166#endif
93167#if __MAX_CONTR > 4 || __MAX_CONTR == 4
93168! **************************************************************************************************
93169!> \brief ...
93170!> \param work ...
93171!> \param nl_a ...
93172!> \param nl_b ...
93173!> \param nl_c ...
93174!> \param nl_d ...
93175!> \param sphi_a ...
93176!> \param sphi_b ...
93177!> \param sphi_c ...
93178!> \param sphi_d ...
93179!> \param primitives ...
93180!> \param buffer1 ...
93181!> \param buffer2 ...
93182! **************************************************************************************************
93183 SUBROUTINE contract_gdfp(work, &
93184 nl_a, nl_b, nl_c, nl_d, &
93185 sphi_a, sphi_b, sphi_c, sphi_d, &
93186 primitives, &
93187 buffer1, buffer2)
93188 REAL(dp), DIMENSION(15*6*10*3), INTENT(IN) :: work
93189 INTEGER :: nl_a, nl_b, nl_c, nl_d
93190 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
93191 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
93192 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
93193 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
93194 REAL(dp), &
93195 DIMENSION(9*nl_a, 5*nl_b, 7*nl_c, 3*nl_d) :: primitives
93196 REAL(dp), DIMENSION(15*6*10*3) :: buffer1, buffer2
93197
93198 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
93199 kmax, s_offset_a1, s_offset_b1, &
93200 s_offset_c1, s_offset_d1
93201
93202 s_offset_a1 = 0
93203 DO ia = 1, nl_a
93204 s_offset_b1 = 0
93205 DO ib = 1, nl_b
93206 s_offset_c1 = 0
93207 DO ic = 1, nl_c
93208 s_offset_d1 = 0
93209 DO id = 1, nl_d
93210 buffer1 = 0.0_dp
93211 imax = 6*10*3
93212 kmax = 15
93213 DO i = 1, imax
93214 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
93215 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
93216 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
93217 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
93218 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
93219 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
93220 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
93221 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
93222 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
93223 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
93224 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
93225 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
93226 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
93227 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
93228 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
93229 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
93230 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
93231 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
93232 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
93233 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
93234 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
93235 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
93236 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
93237 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
93238 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
93239 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
93240 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
93241 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
93242 END DO
93243 buffer2 = 0.0_dp
93244 imax = 9*10*3
93245 kmax = 6
93246 DO i = 1, imax
93247 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
93248 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
93249 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
93250 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
93251 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
93252 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
93253 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
93254 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
93255 END DO
93256 buffer1 = 0.0_dp
93257 imax = 9*5*3
93258 kmax = 10
93259 DO i = 1, imax
93260 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
93261 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
93262 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
93263 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
93264 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
93265 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
93266 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
93267 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
93268 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
93269 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
93270 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
93271 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
93272 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
93273 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
93274 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
93275 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
93276 END DO
93277 imax = 9*5*7
93278 kmax = 3
93279 i = 0
93280 DO i1 = 1, 7
93281 DO i2 = 1, 5
93282 DO i3 = 1, 9
93283 i = i + 1
93284 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
93285 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
93286 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
93287 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
93288 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
93289 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
93290 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
93291 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
93292 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
93293 END DO
93294 END DO
93295 END DO
93296 s_offset_d1 = s_offset_d1 + 3
93297 END DO
93298 s_offset_c1 = s_offset_c1 + 7
93299 END DO
93300 s_offset_b1 = s_offset_b1 + 5
93301 END DO
93302 s_offset_a1 = s_offset_a1 + 9
93303 END DO
93304 END SUBROUTINE contract_gdfp
93305#endif
93306#if __MAX_CONTR > 4 || __MAX_CONTR == 4
93307! **************************************************************************************************
93308!> \brief ...
93309!> \param work ...
93310!> \param nl_a ...
93311!> \param nl_b ...
93312!> \param nl_c ...
93313!> \param nl_d ...
93314!> \param sphi_a ...
93315!> \param sphi_b ...
93316!> \param sphi_c ...
93317!> \param sphi_d ...
93318!> \param primitives ...
93319!> \param buffer1 ...
93320!> \param buffer2 ...
93321! **************************************************************************************************
93322 SUBROUTINE contract_gdfd(work, &
93323 nl_a, nl_b, nl_c, nl_d, &
93324 sphi_a, sphi_b, sphi_c, sphi_d, &
93325 primitives, &
93326 buffer1, buffer2)
93327 REAL(dp), DIMENSION(15*6*10*6), INTENT(IN) :: work
93328 INTEGER :: nl_a, nl_b, nl_c, nl_d
93329 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
93330 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
93331 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
93332 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
93333 REAL(dp), &
93334 DIMENSION(9*nl_a, 5*nl_b, 7*nl_c, 5*nl_d) :: primitives
93335 REAL(dp), DIMENSION(15*6*10*6) :: buffer1, buffer2
93336
93337 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
93338 kmax, s_offset_a1, s_offset_b1, &
93339 s_offset_c1, s_offset_d1
93340
93341 s_offset_a1 = 0
93342 DO ia = 1, nl_a
93343 s_offset_b1 = 0
93344 DO ib = 1, nl_b
93345 s_offset_c1 = 0
93346 DO ic = 1, nl_c
93347 s_offset_d1 = 0
93348 DO id = 1, nl_d
93349 buffer1 = 0.0_dp
93350 imax = 6*10*6
93351 kmax = 15
93352 DO i = 1, imax
93353 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
93354 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
93355 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
93356 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
93357 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
93358 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
93359 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
93360 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
93361 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
93362 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
93363 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
93364 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
93365 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
93366 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
93367 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
93368 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
93369 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
93370 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
93371 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
93372 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
93373 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
93374 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
93375 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
93376 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
93377 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
93378 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
93379 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
93380 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
93381 END DO
93382 buffer2 = 0.0_dp
93383 imax = 9*10*6
93384 kmax = 6
93385 DO i = 1, imax
93386 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
93387 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
93388 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
93389 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
93390 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
93391 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
93392 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
93393 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
93394 END DO
93395 buffer1 = 0.0_dp
93396 imax = 9*5*6
93397 kmax = 10
93398 DO i = 1, imax
93399 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
93400 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
93401 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
93402 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
93403 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
93404 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
93405 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
93406 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
93407 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
93408 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
93409 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
93410 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
93411 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
93412 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
93413 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
93414 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
93415 END DO
93416 imax = 9*5*7
93417 kmax = 6
93418 i = 0
93419 DO i1 = 1, 7
93420 DO i2 = 1, 5
93421 DO i3 = 1, 9
93422 i = i + 1
93423 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
93424 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
93425 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
93426 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
93427 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
93428 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
93429 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
93430 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
93431 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
93432 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
93433 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
93434 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
93435 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
93436 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
93437 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
93438 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
93439 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
93440 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
93441 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
93442 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
93443 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
93444 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
93445 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
93446 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
93447 END DO
93448 END DO
93449 END DO
93450 s_offset_d1 = s_offset_d1 + 5
93451 END DO
93452 s_offset_c1 = s_offset_c1 + 7
93453 END DO
93454 s_offset_b1 = s_offset_b1 + 5
93455 END DO
93456 s_offset_a1 = s_offset_a1 + 9
93457 END DO
93458 END SUBROUTINE contract_gdfd
93459#endif
93460#if __MAX_CONTR > 4 || __MAX_CONTR == 4
93461! **************************************************************************************************
93462!> \brief ...
93463!> \param work ...
93464!> \param nl_a ...
93465!> \param nl_b ...
93466!> \param nl_c ...
93467!> \param nl_d ...
93468!> \param sphi_a ...
93469!> \param sphi_b ...
93470!> \param sphi_c ...
93471!> \param sphi_d ...
93472!> \param primitives ...
93473!> \param buffer1 ...
93474!> \param buffer2 ...
93475! **************************************************************************************************
93476 SUBROUTINE contract_gdff(work, &
93477 nl_a, nl_b, nl_c, nl_d, &
93478 sphi_a, sphi_b, sphi_c, sphi_d, &
93479 primitives, &
93480 buffer1, buffer2)
93481 REAL(dp), DIMENSION(15*6*10*10), INTENT(IN) :: work
93482 INTEGER :: nl_a, nl_b, nl_c, nl_d
93483 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
93484 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
93485 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
93486 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
93487 REAL(dp), &
93488 DIMENSION(9*nl_a, 5*nl_b, 7*nl_c, 7*nl_d) :: primitives
93489 REAL(dp), DIMENSION(15*6*10*10) :: buffer1, buffer2
93490
93491 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
93492 kmax, s_offset_a1, s_offset_b1, &
93493 s_offset_c1, s_offset_d1
93494
93495 s_offset_a1 = 0
93496 DO ia = 1, nl_a
93497 s_offset_b1 = 0
93498 DO ib = 1, nl_b
93499 s_offset_c1 = 0
93500 DO ic = 1, nl_c
93501 s_offset_d1 = 0
93502 DO id = 1, nl_d
93503 buffer1 = 0.0_dp
93504 imax = 6*10*10
93505 kmax = 15
93506 DO i = 1, imax
93507 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
93508 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
93509 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
93510 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
93511 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
93512 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
93513 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
93514 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
93515 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
93516 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
93517 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
93518 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
93519 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
93520 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
93521 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
93522 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
93523 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
93524 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
93525 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
93526 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
93527 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
93528 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
93529 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
93530 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
93531 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
93532 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
93533 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
93534 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
93535 END DO
93536 buffer2 = 0.0_dp
93537 imax = 9*10*10
93538 kmax = 6
93539 DO i = 1, imax
93540 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
93541 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
93542 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
93543 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
93544 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
93545 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
93546 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
93547 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
93548 END DO
93549 buffer1 = 0.0_dp
93550 imax = 9*5*10
93551 kmax = 10
93552 DO i = 1, imax
93553 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
93554 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
93555 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
93556 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
93557 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
93558 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
93559 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
93560 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
93561 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
93562 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
93563 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
93564 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
93565 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
93566 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
93567 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
93568 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
93569 END DO
93570 imax = 9*5*7
93571 kmax = 10
93572 i = 0
93573 DO i1 = 1, 7
93574 DO i2 = 1, 5
93575 DO i3 = 1, 9
93576 i = i + 1
93577 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
93578 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
93579 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
93580 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
93581 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
93582 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
93583 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
93584 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
93585 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
93586 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
93587 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
93588 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
93589 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
93590 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
93591 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
93592 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
93593 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
93594 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
93595 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
93596 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
93597 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
93598 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
93599 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
93600 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
93601 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
93602 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
93603 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
93604 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
93605 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
93606 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
93607 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
93608 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
93609 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
93610 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
93611 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
93612 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
93613 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
93614 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
93615 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
93616 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
93617 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
93618 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
93619 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
93620 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
93621 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
93622 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
93623 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
93624 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
93625 END DO
93626 END DO
93627 END DO
93628 s_offset_d1 = s_offset_d1 + 7
93629 END DO
93630 s_offset_c1 = s_offset_c1 + 7
93631 END DO
93632 s_offset_b1 = s_offset_b1 + 5
93633 END DO
93634 s_offset_a1 = s_offset_a1 + 9
93635 END DO
93636 END SUBROUTINE contract_gdff
93637#endif
93638#if __MAX_CONTR > 4 || __MAX_CONTR == 4
93639! **************************************************************************************************
93640!> \brief ...
93641!> \param work ...
93642!> \param nl_a ...
93643!> \param nl_b ...
93644!> \param nl_c ...
93645!> \param nl_d ...
93646!> \param sphi_a ...
93647!> \param sphi_b ...
93648!> \param sphi_c ...
93649!> \param sphi_d ...
93650!> \param primitives ...
93651!> \param buffer1 ...
93652!> \param buffer2 ...
93653! **************************************************************************************************
93654 SUBROUTINE contract_gdfg(work, &
93655 nl_a, nl_b, nl_c, nl_d, &
93656 sphi_a, sphi_b, sphi_c, sphi_d, &
93657 primitives, &
93658 buffer1, buffer2)
93659 REAL(dp), DIMENSION(15*6*10*15), INTENT(IN) :: work
93660 INTEGER :: nl_a, nl_b, nl_c, nl_d
93661 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
93662 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
93663 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
93664 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
93665 REAL(dp), &
93666 DIMENSION(9*nl_a, 5*nl_b, 7*nl_c, 9*nl_d) :: primitives
93667 REAL(dp), DIMENSION(15*6*10*15) :: buffer1, buffer2
93668
93669 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
93670 kmax, s_offset_a1, s_offset_b1, &
93671 s_offset_c1, s_offset_d1
93672
93673 s_offset_a1 = 0
93674 DO ia = 1, nl_a
93675 s_offset_b1 = 0
93676 DO ib = 1, nl_b
93677 s_offset_c1 = 0
93678 DO ic = 1, nl_c
93679 s_offset_d1 = 0
93680 DO id = 1, nl_d
93681 buffer1 = 0.0_dp
93682 imax = 6*10*15
93683 kmax = 15
93684 DO i = 1, imax
93685 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
93686 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
93687 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
93688 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
93689 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
93690 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
93691 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
93692 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
93693 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
93694 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
93695 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
93696 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
93697 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
93698 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
93699 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
93700 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
93701 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
93702 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
93703 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
93704 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
93705 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
93706 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
93707 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
93708 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
93709 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
93710 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
93711 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
93712 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
93713 END DO
93714 buffer2 = 0.0_dp
93715 imax = 9*10*15
93716 kmax = 6
93717 DO i = 1, imax
93718 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
93719 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
93720 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
93721 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
93722 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
93723 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
93724 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
93725 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
93726 END DO
93727 buffer1 = 0.0_dp
93728 imax = 9*5*15
93729 kmax = 10
93730 DO i = 1, imax
93731 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
93732 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
93733 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
93734 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
93735 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
93736 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
93737 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
93738 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
93739 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
93740 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
93741 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
93742 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
93743 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
93744 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
93745 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
93746 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
93747 END DO
93748 imax = 9*5*7
93749 kmax = 15
93750 i = 0
93751 DO i1 = 1, 7
93752 DO i2 = 1, 5
93753 DO i3 = 1, 9
93754 i = i + 1
93755 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
93756 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
93757 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
93758 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
93759 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
93760 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
93761 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
93762 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
93763 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
93764 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
93765 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
93766 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
93767 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
93768 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
93769 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
93770 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
93771 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
93772 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
93773 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
93774 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
93775 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
93776 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
93777 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
93778 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
93779 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
93780 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
93781 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
93782 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
93783 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
93784 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
93785 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
93786 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
93787 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
93788 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
93789 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
93790 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
93791 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
93792 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
93793 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
93794 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
93795 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
93796 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
93797 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
93798 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
93799 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
93800 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
93801 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
93802 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
93803 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
93804 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
93805 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
93806 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
93807 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
93808 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
93809 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
93810 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
93811 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
93812 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
93813 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
93814 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
93815 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
93816 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
93817 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
93818 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
93819 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
93820 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
93821 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
93822 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
93823 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
93824 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
93825 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
93826 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
93827 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
93828 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
93829 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
93830 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
93831 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
93832 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
93833 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
93834 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
93835 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
93836 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
93837 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
93838 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
93839 END DO
93840 END DO
93841 END DO
93842 s_offset_d1 = s_offset_d1 + 9
93843 END DO
93844 s_offset_c1 = s_offset_c1 + 7
93845 END DO
93846 s_offset_b1 = s_offset_b1 + 5
93847 END DO
93848 s_offset_a1 = s_offset_a1 + 9
93849 END DO
93850 END SUBROUTINE contract_gdfg
93851#endif
93852#if __MAX_CONTR > 4 || __MAX_CONTR == 4
93853! **************************************************************************************************
93854!> \brief ...
93855!> \param work ...
93856!> \param nl_a ...
93857!> \param nl_b ...
93858!> \param nl_c ...
93859!> \param nl_d ...
93860!> \param sphi_a ...
93861!> \param sphi_b ...
93862!> \param sphi_c ...
93863!> \param sphi_d ...
93864!> \param primitives ...
93865!> \param buffer1 ...
93866!> \param buffer2 ...
93867! **************************************************************************************************
93868 SUBROUTINE contract_gdgs(work, &
93869 nl_a, nl_b, nl_c, nl_d, &
93870 sphi_a, sphi_b, sphi_c, sphi_d, &
93871 primitives, &
93872 buffer1, buffer2)
93873 REAL(dp), DIMENSION(15*6*15*1), INTENT(IN) :: work
93874 INTEGER :: nl_a, nl_b, nl_c, nl_d
93875 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
93876 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
93877 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
93878 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
93879 REAL(dp), &
93880 DIMENSION(9*nl_a, 5*nl_b, 9*nl_c, 1*nl_d) :: primitives
93881 REAL(dp), DIMENSION(15*6*15*1) :: buffer1, buffer2
93882
93883 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
93884 kmax, s_offset_a1, s_offset_b1, &
93885 s_offset_c1, s_offset_d1
93886
93887 s_offset_a1 = 0
93888 DO ia = 1, nl_a
93889 s_offset_b1 = 0
93890 DO ib = 1, nl_b
93891 s_offset_c1 = 0
93892 DO ic = 1, nl_c
93893 s_offset_d1 = 0
93894 DO id = 1, nl_d
93895 buffer1 = 0.0_dp
93896 imax = 6*15*1
93897 kmax = 15
93898 DO i = 1, imax
93899 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
93900 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
93901 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
93902 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
93903 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
93904 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
93905 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
93906 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
93907 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
93908 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
93909 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
93910 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
93911 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
93912 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
93913 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
93914 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
93915 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
93916 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
93917 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
93918 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
93919 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
93920 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
93921 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
93922 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
93923 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
93924 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
93925 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
93926 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
93927 END DO
93928 buffer2 = 0.0_dp
93929 imax = 9*15*1
93930 kmax = 6
93931 DO i = 1, imax
93932 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
93933 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
93934 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
93935 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
93936 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
93937 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
93938 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
93939 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
93940 END DO
93941 buffer1 = 0.0_dp
93942 imax = 9*5*1
93943 kmax = 15
93944 DO i = 1, imax
93945 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
93946 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
93947 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
93948 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
93949 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
93950 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
93951 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
93952 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
93953 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
93954 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
93955 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
93956 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
93957 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
93958 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
93959 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
93960 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
93961 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
93962 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
93963 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
93964 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
93965 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
93966 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
93967 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
93968 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
93969 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
93970 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
93971 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
93972 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
93973 END DO
93974 imax = 9*5*9
93975 kmax = 1
93976 i = 0
93977 DO i1 = 1, 9
93978 DO i2 = 1, 5
93979 DO i3 = 1, 9
93980 i = i + 1
93981 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
93982 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
93983 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
93984 END DO
93985 END DO
93986 END DO
93987 s_offset_d1 = s_offset_d1 + 1
93988 END DO
93989 s_offset_c1 = s_offset_c1 + 9
93990 END DO
93991 s_offset_b1 = s_offset_b1 + 5
93992 END DO
93993 s_offset_a1 = s_offset_a1 + 9
93994 END DO
93995 END SUBROUTINE contract_gdgs
93996#endif
93997#if __MAX_CONTR > 4 || __MAX_CONTR == 4
93998! **************************************************************************************************
93999!> \brief ...
94000!> \param work ...
94001!> \param nl_a ...
94002!> \param nl_b ...
94003!> \param nl_c ...
94004!> \param nl_d ...
94005!> \param sphi_a ...
94006!> \param sphi_b ...
94007!> \param sphi_c ...
94008!> \param sphi_d ...
94009!> \param primitives ...
94010!> \param buffer1 ...
94011!> \param buffer2 ...
94012! **************************************************************************************************
94013 SUBROUTINE contract_gdgp(work, &
94014 nl_a, nl_b, nl_c, nl_d, &
94015 sphi_a, sphi_b, sphi_c, sphi_d, &
94016 primitives, &
94017 buffer1, buffer2)
94018 REAL(dp), DIMENSION(15*6*15*3), INTENT(IN) :: work
94019 INTEGER :: nl_a, nl_b, nl_c, nl_d
94020 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
94021 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
94022 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
94023 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
94024 REAL(dp), &
94025 DIMENSION(9*nl_a, 5*nl_b, 9*nl_c, 3*nl_d) :: primitives
94026 REAL(dp), DIMENSION(15*6*15*3) :: buffer1, buffer2
94027
94028 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
94029 kmax, s_offset_a1, s_offset_b1, &
94030 s_offset_c1, s_offset_d1
94031
94032 s_offset_a1 = 0
94033 DO ia = 1, nl_a
94034 s_offset_b1 = 0
94035 DO ib = 1, nl_b
94036 s_offset_c1 = 0
94037 DO ic = 1, nl_c
94038 s_offset_d1 = 0
94039 DO id = 1, nl_d
94040 buffer1 = 0.0_dp
94041 imax = 6*15*3
94042 kmax = 15
94043 DO i = 1, imax
94044 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
94045 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
94046 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
94047 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
94048 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
94049 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
94050 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
94051 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
94052 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
94053 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
94054 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
94055 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
94056 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
94057 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
94058 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
94059 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
94060 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
94061 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
94062 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
94063 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
94064 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
94065 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
94066 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
94067 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
94068 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
94069 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
94070 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
94071 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
94072 END DO
94073 buffer2 = 0.0_dp
94074 imax = 9*15*3
94075 kmax = 6
94076 DO i = 1, imax
94077 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
94078 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
94079 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
94080 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
94081 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
94082 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
94083 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
94084 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
94085 END DO
94086 buffer1 = 0.0_dp
94087 imax = 9*5*3
94088 kmax = 15
94089 DO i = 1, imax
94090 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
94091 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
94092 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
94093 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
94094 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
94095 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
94096 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
94097 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
94098 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
94099 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
94100 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
94101 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
94102 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
94103 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
94104 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
94105 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
94106 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
94107 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
94108 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
94109 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
94110 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
94111 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
94112 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
94113 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
94114 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
94115 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
94116 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
94117 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
94118 END DO
94119 imax = 9*5*9
94120 kmax = 3
94121 i = 0
94122 DO i1 = 1, 9
94123 DO i2 = 1, 5
94124 DO i3 = 1, 9
94125 i = i + 1
94126 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
94127 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
94128 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
94129 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
94130 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
94131 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
94132 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
94133 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
94134 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
94135 END DO
94136 END DO
94137 END DO
94138 s_offset_d1 = s_offset_d1 + 3
94139 END DO
94140 s_offset_c1 = s_offset_c1 + 9
94141 END DO
94142 s_offset_b1 = s_offset_b1 + 5
94143 END DO
94144 s_offset_a1 = s_offset_a1 + 9
94145 END DO
94146 END SUBROUTINE contract_gdgp
94147#endif
94148#if __MAX_CONTR > 4 || __MAX_CONTR == 4
94149! **************************************************************************************************
94150!> \brief ...
94151!> \param work ...
94152!> \param nl_a ...
94153!> \param nl_b ...
94154!> \param nl_c ...
94155!> \param nl_d ...
94156!> \param sphi_a ...
94157!> \param sphi_b ...
94158!> \param sphi_c ...
94159!> \param sphi_d ...
94160!> \param primitives ...
94161!> \param buffer1 ...
94162!> \param buffer2 ...
94163! **************************************************************************************************
94164 SUBROUTINE contract_gdgd(work, &
94165 nl_a, nl_b, nl_c, nl_d, &
94166 sphi_a, sphi_b, sphi_c, sphi_d, &
94167 primitives, &
94168 buffer1, buffer2)
94169 REAL(dp), DIMENSION(15*6*15*6), INTENT(IN) :: work
94170 INTEGER :: nl_a, nl_b, nl_c, nl_d
94171 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
94172 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
94173 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
94174 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
94175 REAL(dp), &
94176 DIMENSION(9*nl_a, 5*nl_b, 9*nl_c, 5*nl_d) :: primitives
94177 REAL(dp), DIMENSION(15*6*15*6) :: buffer1, buffer2
94178
94179 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
94180 kmax, s_offset_a1, s_offset_b1, &
94181 s_offset_c1, s_offset_d1
94182
94183 s_offset_a1 = 0
94184 DO ia = 1, nl_a
94185 s_offset_b1 = 0
94186 DO ib = 1, nl_b
94187 s_offset_c1 = 0
94188 DO ic = 1, nl_c
94189 s_offset_d1 = 0
94190 DO id = 1, nl_d
94191 buffer1 = 0.0_dp
94192 imax = 6*15*6
94193 kmax = 15
94194 DO i = 1, imax
94195 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
94196 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
94197 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
94198 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
94199 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
94200 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
94201 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
94202 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
94203 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
94204 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
94205 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
94206 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
94207 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
94208 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
94209 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
94210 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
94211 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
94212 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
94213 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
94214 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
94215 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
94216 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
94217 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
94218 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
94219 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
94220 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
94221 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
94222 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
94223 END DO
94224 buffer2 = 0.0_dp
94225 imax = 9*15*6
94226 kmax = 6
94227 DO i = 1, imax
94228 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
94229 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
94230 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
94231 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
94232 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
94233 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
94234 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
94235 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
94236 END DO
94237 buffer1 = 0.0_dp
94238 imax = 9*5*6
94239 kmax = 15
94240 DO i = 1, imax
94241 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
94242 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
94243 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
94244 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
94245 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
94246 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
94247 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
94248 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
94249 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
94250 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
94251 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
94252 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
94253 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
94254 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
94255 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
94256 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
94257 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
94258 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
94259 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
94260 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
94261 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
94262 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
94263 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
94264 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
94265 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
94266 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
94267 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
94268 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
94269 END DO
94270 imax = 9*5*9
94271 kmax = 6
94272 i = 0
94273 DO i1 = 1, 9
94274 DO i2 = 1, 5
94275 DO i3 = 1, 9
94276 i = i + 1
94277 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
94278 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
94279 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
94280 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
94281 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
94282 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
94283 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
94284 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
94285 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
94286 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
94287 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
94288 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
94289 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
94290 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
94291 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
94292 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
94293 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
94294 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
94295 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
94296 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
94297 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
94298 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
94299 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
94300 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
94301 END DO
94302 END DO
94303 END DO
94304 s_offset_d1 = s_offset_d1 + 5
94305 END DO
94306 s_offset_c1 = s_offset_c1 + 9
94307 END DO
94308 s_offset_b1 = s_offset_b1 + 5
94309 END DO
94310 s_offset_a1 = s_offset_a1 + 9
94311 END DO
94312 END SUBROUTINE contract_gdgd
94313#endif
94314#if __MAX_CONTR > 4 || __MAX_CONTR == 4
94315! **************************************************************************************************
94316!> \brief ...
94317!> \param work ...
94318!> \param nl_a ...
94319!> \param nl_b ...
94320!> \param nl_c ...
94321!> \param nl_d ...
94322!> \param sphi_a ...
94323!> \param sphi_b ...
94324!> \param sphi_c ...
94325!> \param sphi_d ...
94326!> \param primitives ...
94327!> \param buffer1 ...
94328!> \param buffer2 ...
94329! **************************************************************************************************
94330 SUBROUTINE contract_gdgf(work, &
94331 nl_a, nl_b, nl_c, nl_d, &
94332 sphi_a, sphi_b, sphi_c, sphi_d, &
94333 primitives, &
94334 buffer1, buffer2)
94335 REAL(dp), DIMENSION(15*6*15*10), INTENT(IN) :: work
94336 INTEGER :: nl_a, nl_b, nl_c, nl_d
94337 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
94338 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
94339 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
94340 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
94341 REAL(dp), &
94342 DIMENSION(9*nl_a, 5*nl_b, 9*nl_c, 7*nl_d) :: primitives
94343 REAL(dp), DIMENSION(15*6*15*10) :: buffer1, buffer2
94344
94345 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
94346 kmax, s_offset_a1, s_offset_b1, &
94347 s_offset_c1, s_offset_d1
94348
94349 s_offset_a1 = 0
94350 DO ia = 1, nl_a
94351 s_offset_b1 = 0
94352 DO ib = 1, nl_b
94353 s_offset_c1 = 0
94354 DO ic = 1, nl_c
94355 s_offset_d1 = 0
94356 DO id = 1, nl_d
94357 buffer1 = 0.0_dp
94358 imax = 6*15*10
94359 kmax = 15
94360 DO i = 1, imax
94361 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
94362 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
94363 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
94364 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
94365 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
94366 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
94367 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
94368 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
94369 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
94370 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
94371 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
94372 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
94373 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
94374 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
94375 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
94376 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
94377 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
94378 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
94379 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
94380 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
94381 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
94382 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
94383 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
94384 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
94385 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
94386 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
94387 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
94388 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
94389 END DO
94390 buffer2 = 0.0_dp
94391 imax = 9*15*10
94392 kmax = 6
94393 DO i = 1, imax
94394 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
94395 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
94396 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
94397 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
94398 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
94399 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
94400 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
94401 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
94402 END DO
94403 buffer1 = 0.0_dp
94404 imax = 9*5*10
94405 kmax = 15
94406 DO i = 1, imax
94407 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
94408 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
94409 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
94410 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
94411 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
94412 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
94413 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
94414 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
94415 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
94416 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
94417 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
94418 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
94419 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
94420 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
94421 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
94422 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
94423 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
94424 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
94425 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
94426 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
94427 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
94428 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
94429 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
94430 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
94431 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
94432 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
94433 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
94434 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
94435 END DO
94436 imax = 9*5*9
94437 kmax = 10
94438 i = 0
94439 DO i1 = 1, 9
94440 DO i2 = 1, 5
94441 DO i3 = 1, 9
94442 i = i + 1
94443 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
94444 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
94445 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
94446 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
94447 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
94448 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
94449 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
94450 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
94451 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
94452 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
94453 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
94454 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
94455 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
94456 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
94457 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
94458 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
94459 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
94460 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
94461 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
94462 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
94463 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
94464 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
94465 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
94466 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
94467 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
94468 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
94469 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
94470 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
94471 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
94472 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
94473 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
94474 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
94475 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
94476 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
94477 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
94478 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
94479 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
94480 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
94481 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
94482 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
94483 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
94484 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
94485 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
94486 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
94487 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
94488 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
94489 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
94490 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
94491 END DO
94492 END DO
94493 END DO
94494 s_offset_d1 = s_offset_d1 + 7
94495 END DO
94496 s_offset_c1 = s_offset_c1 + 9
94497 END DO
94498 s_offset_b1 = s_offset_b1 + 5
94499 END DO
94500 s_offset_a1 = s_offset_a1 + 9
94501 END DO
94502 END SUBROUTINE contract_gdgf
94503#endif
94504#if __MAX_CONTR > 4 || __MAX_CONTR == 4
94505! **************************************************************************************************
94506!> \brief ...
94507!> \param work ...
94508!> \param nl_a ...
94509!> \param nl_b ...
94510!> \param nl_c ...
94511!> \param nl_d ...
94512!> \param sphi_a ...
94513!> \param sphi_b ...
94514!> \param sphi_c ...
94515!> \param sphi_d ...
94516!> \param primitives ...
94517!> \param buffer1 ...
94518!> \param buffer2 ...
94519! **************************************************************************************************
94520 SUBROUTINE contract_gdgg(work, &
94521 nl_a, nl_b, nl_c, nl_d, &
94522 sphi_a, sphi_b, sphi_c, sphi_d, &
94523 primitives, &
94524 buffer1, buffer2)
94525 REAL(dp), DIMENSION(15*6*15*15), INTENT(IN) :: work
94526 INTEGER :: nl_a, nl_b, nl_c, nl_d
94527 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
94528 REAL(dp), DIMENSION(6, 5*nl_b), INTENT(IN) :: sphi_b
94529 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
94530 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
94531 REAL(dp), &
94532 DIMENSION(9*nl_a, 5*nl_b, 9*nl_c, 9*nl_d) :: primitives
94533 REAL(dp), DIMENSION(15*6*15*15) :: buffer1, buffer2
94534
94535 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
94536 kmax, s_offset_a1, s_offset_b1, &
94537 s_offset_c1, s_offset_d1
94538
94539 s_offset_a1 = 0
94540 DO ia = 1, nl_a
94541 s_offset_b1 = 0
94542 DO ib = 1, nl_b
94543 s_offset_c1 = 0
94544 DO ic = 1, nl_c
94545 s_offset_d1 = 0
94546 DO id = 1, nl_d
94547 buffer1 = 0.0_dp
94548 imax = 6*15*15
94549 kmax = 15
94550 DO i = 1, imax
94551 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
94552 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
94553 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
94554 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
94555 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
94556 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
94557 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
94558 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
94559 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
94560 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
94561 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
94562 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
94563 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
94564 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
94565 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
94566 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
94567 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
94568 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
94569 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
94570 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
94571 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
94572 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
94573 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
94574 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
94575 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
94576 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
94577 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
94578 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
94579 END DO
94580 buffer2 = 0.0_dp
94581 imax = 9*15*15
94582 kmax = 6
94583 DO i = 1, imax
94584 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
94585 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
94586 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
94587 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
94588 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
94589 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
94590 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
94591 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
94592 END DO
94593 buffer1 = 0.0_dp
94594 imax = 9*5*15
94595 kmax = 15
94596 DO i = 1, imax
94597 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
94598 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
94599 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
94600 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
94601 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
94602 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
94603 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
94604 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
94605 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
94606 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
94607 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
94608 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
94609 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
94610 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
94611 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
94612 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
94613 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
94614 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
94615 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
94616 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
94617 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
94618 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
94619 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
94620 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
94621 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
94622 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
94623 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
94624 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
94625 END DO
94626 imax = 9*5*9
94627 kmax = 15
94628 i = 0
94629 DO i1 = 1, 9
94630 DO i2 = 1, 5
94631 DO i3 = 1, 9
94632 i = i + 1
94633 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
94634 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
94635 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
94636 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
94637 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
94638 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
94639 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
94640 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
94641 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
94642 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
94643 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
94644 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
94645 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
94646 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
94647 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
94648 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
94649 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
94650 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
94651 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
94652 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
94653 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
94654 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
94655 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
94656 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
94657 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
94658 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
94659 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
94660 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
94661 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
94662 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
94663 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
94664 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
94665 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
94666 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
94667 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
94668 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
94669 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
94670 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
94671 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
94672 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
94673 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
94674 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
94675 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
94676 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
94677 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
94678 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
94679 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
94680 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
94681 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
94682 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
94683 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
94684 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
94685 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
94686 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
94687 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
94688 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
94689 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
94690 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
94691 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
94692 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
94693 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
94694 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
94695 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
94696 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
94697 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
94698 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
94699 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
94700 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
94701 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
94702 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
94703 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
94704 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
94705 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
94706 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
94707 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
94708 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
94709 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
94710 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
94711 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
94712 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
94713 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
94714 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
94715 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
94716 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
94717 END DO
94718 END DO
94719 END DO
94720 s_offset_d1 = s_offset_d1 + 9
94721 END DO
94722 s_offset_c1 = s_offset_c1 + 9
94723 END DO
94724 s_offset_b1 = s_offset_b1 + 5
94725 END DO
94726 s_offset_a1 = s_offset_a1 + 9
94727 END DO
94728 END SUBROUTINE contract_gdgg
94729#endif
94730#if __MAX_CONTR > 4 || __MAX_CONTR == 4
94731! **************************************************************************************************
94732!> \brief ...
94733!> \param work ...
94734!> \param nl_a ...
94735!> \param nl_b ...
94736!> \param nl_c ...
94737!> \param nl_d ...
94738!> \param sphi_a ...
94739!> \param sphi_b ...
94740!> \param sphi_c ...
94741!> \param sphi_d ...
94742!> \param primitives ...
94743!> \param buffer1 ...
94744!> \param buffer2 ...
94745! **************************************************************************************************
94746 SUBROUTINE contract_gfss(work, &
94747 nl_a, nl_b, nl_c, nl_d, &
94748 sphi_a, sphi_b, sphi_c, sphi_d, &
94749 primitives, &
94750 buffer1, buffer2)
94751 REAL(dp), DIMENSION(15*10*1*1), INTENT(IN) :: work
94752 INTEGER :: nl_a, nl_b, nl_c, nl_d
94753 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
94754 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
94755 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
94756 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
94757 REAL(dp), &
94758 DIMENSION(9*nl_a, 7*nl_b, 1*nl_c, 1*nl_d) :: primitives
94759 REAL(dp), DIMENSION(15*10*1*1) :: buffer1, buffer2
94760
94761 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
94762 kmax, s_offset_a1, s_offset_b1, &
94763 s_offset_c1, s_offset_d1
94764
94765 s_offset_a1 = 0
94766 DO ia = 1, nl_a
94767 s_offset_b1 = 0
94768 DO ib = 1, nl_b
94769 s_offset_c1 = 0
94770 DO ic = 1, nl_c
94771 s_offset_d1 = 0
94772 DO id = 1, nl_d
94773 buffer1 = 0.0_dp
94774 imax = 10*1*1
94775 kmax = 15
94776 DO i = 1, imax
94777 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
94778 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
94779 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
94780 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
94781 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
94782 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
94783 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
94784 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
94785 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
94786 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
94787 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
94788 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
94789 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
94790 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
94791 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
94792 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
94793 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
94794 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
94795 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
94796 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
94797 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
94798 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
94799 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
94800 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
94801 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
94802 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
94803 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
94804 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
94805 END DO
94806 buffer2 = 0.0_dp
94807 imax = 9*1*1
94808 kmax = 10
94809 DO i = 1, imax
94810 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
94811 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
94812 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
94813 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
94814 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
94815 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
94816 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
94817 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
94818 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
94819 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
94820 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
94821 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
94822 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
94823 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
94824 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
94825 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
94826 END DO
94827 buffer1 = 0.0_dp
94828 imax = 9*7*1
94829 kmax = 1
94830 DO i = 1, imax
94831 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
94832 END DO
94833 imax = 9*7*1
94834 kmax = 1
94835 i = 0
94836 DO i1 = 1, 1
94837 DO i2 = 1, 7
94838 DO i3 = 1, 9
94839 i = i + 1
94840 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
94841 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
94842 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
94843 END DO
94844 END DO
94845 END DO
94846 s_offset_d1 = s_offset_d1 + 1
94847 END DO
94848 s_offset_c1 = s_offset_c1 + 1
94849 END DO
94850 s_offset_b1 = s_offset_b1 + 7
94851 END DO
94852 s_offset_a1 = s_offset_a1 + 9
94853 END DO
94854 END SUBROUTINE contract_gfss
94855#endif
94856#if __MAX_CONTR > 4 || __MAX_CONTR == 4
94857! **************************************************************************************************
94858!> \brief ...
94859!> \param work ...
94860!> \param nl_a ...
94861!> \param nl_b ...
94862!> \param nl_c ...
94863!> \param nl_d ...
94864!> \param sphi_a ...
94865!> \param sphi_b ...
94866!> \param sphi_c ...
94867!> \param sphi_d ...
94868!> \param primitives ...
94869!> \param buffer1 ...
94870!> \param buffer2 ...
94871! **************************************************************************************************
94872 SUBROUTINE contract_gfsp(work, &
94873 nl_a, nl_b, nl_c, nl_d, &
94874 sphi_a, sphi_b, sphi_c, sphi_d, &
94875 primitives, &
94876 buffer1, buffer2)
94877 REAL(dp), DIMENSION(15*10*1*3), INTENT(IN) :: work
94878 INTEGER :: nl_a, nl_b, nl_c, nl_d
94879 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
94880 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
94881 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
94882 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
94883 REAL(dp), &
94884 DIMENSION(9*nl_a, 7*nl_b, 1*nl_c, 3*nl_d) :: primitives
94885 REAL(dp), DIMENSION(15*10*1*3) :: buffer1, buffer2
94886
94887 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
94888 kmax, s_offset_a1, s_offset_b1, &
94889 s_offset_c1, s_offset_d1
94890
94891 s_offset_a1 = 0
94892 DO ia = 1, nl_a
94893 s_offset_b1 = 0
94894 DO ib = 1, nl_b
94895 s_offset_c1 = 0
94896 DO ic = 1, nl_c
94897 s_offset_d1 = 0
94898 DO id = 1, nl_d
94899 buffer1 = 0.0_dp
94900 imax = 10*1*3
94901 kmax = 15
94902 DO i = 1, imax
94903 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
94904 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
94905 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
94906 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
94907 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
94908 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
94909 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
94910 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
94911 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
94912 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
94913 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
94914 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
94915 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
94916 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
94917 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
94918 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
94919 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
94920 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
94921 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
94922 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
94923 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
94924 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
94925 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
94926 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
94927 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
94928 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
94929 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
94930 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
94931 END DO
94932 buffer2 = 0.0_dp
94933 imax = 9*1*3
94934 kmax = 10
94935 DO i = 1, imax
94936 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
94937 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
94938 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
94939 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
94940 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
94941 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
94942 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
94943 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
94944 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
94945 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
94946 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
94947 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
94948 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
94949 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
94950 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
94951 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
94952 END DO
94953 buffer1 = 0.0_dp
94954 imax = 9*7*3
94955 kmax = 1
94956 DO i = 1, imax
94957 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
94958 END DO
94959 imax = 9*7*1
94960 kmax = 3
94961 i = 0
94962 DO i1 = 1, 1
94963 DO i2 = 1, 7
94964 DO i3 = 1, 9
94965 i = i + 1
94966 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
94967 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
94968 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
94969 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
94970 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
94971 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
94972 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
94973 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
94974 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
94975 END DO
94976 END DO
94977 END DO
94978 s_offset_d1 = s_offset_d1 + 3
94979 END DO
94980 s_offset_c1 = s_offset_c1 + 1
94981 END DO
94982 s_offset_b1 = s_offset_b1 + 7
94983 END DO
94984 s_offset_a1 = s_offset_a1 + 9
94985 END DO
94986 END SUBROUTINE contract_gfsp
94987#endif
94988#if __MAX_CONTR > 4 || __MAX_CONTR == 4
94989! **************************************************************************************************
94990!> \brief ...
94991!> \param work ...
94992!> \param nl_a ...
94993!> \param nl_b ...
94994!> \param nl_c ...
94995!> \param nl_d ...
94996!> \param sphi_a ...
94997!> \param sphi_b ...
94998!> \param sphi_c ...
94999!> \param sphi_d ...
95000!> \param primitives ...
95001!> \param buffer1 ...
95002!> \param buffer2 ...
95003! **************************************************************************************************
95004 SUBROUTINE contract_gfsd(work, &
95005 nl_a, nl_b, nl_c, nl_d, &
95006 sphi_a, sphi_b, sphi_c, sphi_d, &
95007 primitives, &
95008 buffer1, buffer2)
95009 REAL(dp), DIMENSION(15*10*1*6), INTENT(IN) :: work
95010 INTEGER :: nl_a, nl_b, nl_c, nl_d
95011 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
95012 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
95013 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
95014 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
95015 REAL(dp), &
95016 DIMENSION(9*nl_a, 7*nl_b, 1*nl_c, 5*nl_d) :: primitives
95017 REAL(dp), DIMENSION(15*10*1*6) :: buffer1, buffer2
95018
95019 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
95020 kmax, s_offset_a1, s_offset_b1, &
95021 s_offset_c1, s_offset_d1
95022
95023 s_offset_a1 = 0
95024 DO ia = 1, nl_a
95025 s_offset_b1 = 0
95026 DO ib = 1, nl_b
95027 s_offset_c1 = 0
95028 DO ic = 1, nl_c
95029 s_offset_d1 = 0
95030 DO id = 1, nl_d
95031 buffer1 = 0.0_dp
95032 imax = 10*1*6
95033 kmax = 15
95034 DO i = 1, imax
95035 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
95036 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
95037 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
95038 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
95039 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
95040 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
95041 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
95042 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
95043 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
95044 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
95045 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
95046 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
95047 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
95048 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
95049 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
95050 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
95051 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
95052 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
95053 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
95054 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
95055 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
95056 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
95057 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
95058 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
95059 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
95060 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
95061 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
95062 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
95063 END DO
95064 buffer2 = 0.0_dp
95065 imax = 9*1*6
95066 kmax = 10
95067 DO i = 1, imax
95068 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
95069 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
95070 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
95071 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
95072 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
95073 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
95074 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
95075 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
95076 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
95077 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
95078 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
95079 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
95080 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
95081 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
95082 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
95083 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
95084 END DO
95085 buffer1 = 0.0_dp
95086 imax = 9*7*6
95087 kmax = 1
95088 DO i = 1, imax
95089 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
95090 END DO
95091 imax = 9*7*1
95092 kmax = 6
95093 i = 0
95094 DO i1 = 1, 1
95095 DO i2 = 1, 7
95096 DO i3 = 1, 9
95097 i = i + 1
95098 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
95099 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
95100 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
95101 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
95102 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
95103 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
95104 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
95105 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
95106 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
95107 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
95108 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
95109 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
95110 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
95111 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
95112 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
95113 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
95114 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
95115 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
95116 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
95117 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
95118 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
95119 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
95120 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
95121 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
95122 END DO
95123 END DO
95124 END DO
95125 s_offset_d1 = s_offset_d1 + 5
95126 END DO
95127 s_offset_c1 = s_offset_c1 + 1
95128 END DO
95129 s_offset_b1 = s_offset_b1 + 7
95130 END DO
95131 s_offset_a1 = s_offset_a1 + 9
95132 END DO
95133 END SUBROUTINE contract_gfsd
95134#endif
95135#if __MAX_CONTR > 4 || __MAX_CONTR == 4
95136! **************************************************************************************************
95137!> \brief ...
95138!> \param work ...
95139!> \param nl_a ...
95140!> \param nl_b ...
95141!> \param nl_c ...
95142!> \param nl_d ...
95143!> \param sphi_a ...
95144!> \param sphi_b ...
95145!> \param sphi_c ...
95146!> \param sphi_d ...
95147!> \param primitives ...
95148!> \param buffer1 ...
95149!> \param buffer2 ...
95150! **************************************************************************************************
95151 SUBROUTINE contract_gfsf(work, &
95152 nl_a, nl_b, nl_c, nl_d, &
95153 sphi_a, sphi_b, sphi_c, sphi_d, &
95154 primitives, &
95155 buffer1, buffer2)
95156 REAL(dp), DIMENSION(15*10*1*10), INTENT(IN) :: work
95157 INTEGER :: nl_a, nl_b, nl_c, nl_d
95158 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
95159 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
95160 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
95161 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
95162 REAL(dp), &
95163 DIMENSION(9*nl_a, 7*nl_b, 1*nl_c, 7*nl_d) :: primitives
95164 REAL(dp), DIMENSION(15*10*1*10) :: buffer1, buffer2
95165
95166 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
95167 kmax, s_offset_a1, s_offset_b1, &
95168 s_offset_c1, s_offset_d1
95169
95170 s_offset_a1 = 0
95171 DO ia = 1, nl_a
95172 s_offset_b1 = 0
95173 DO ib = 1, nl_b
95174 s_offset_c1 = 0
95175 DO ic = 1, nl_c
95176 s_offset_d1 = 0
95177 DO id = 1, nl_d
95178 buffer1 = 0.0_dp
95179 imax = 10*1*10
95180 kmax = 15
95181 DO i = 1, imax
95182 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
95183 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
95184 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
95185 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
95186 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
95187 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
95188 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
95189 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
95190 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
95191 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
95192 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
95193 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
95194 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
95195 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
95196 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
95197 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
95198 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
95199 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
95200 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
95201 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
95202 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
95203 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
95204 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
95205 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
95206 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
95207 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
95208 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
95209 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
95210 END DO
95211 buffer2 = 0.0_dp
95212 imax = 9*1*10
95213 kmax = 10
95214 DO i = 1, imax
95215 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
95216 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
95217 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
95218 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
95219 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
95220 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
95221 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
95222 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
95223 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
95224 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
95225 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
95226 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
95227 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
95228 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
95229 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
95230 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
95231 END DO
95232 buffer1 = 0.0_dp
95233 imax = 9*7*10
95234 kmax = 1
95235 DO i = 1, imax
95236 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
95237 END DO
95238 imax = 9*7*1
95239 kmax = 10
95240 i = 0
95241 DO i1 = 1, 1
95242 DO i2 = 1, 7
95243 DO i3 = 1, 9
95244 i = i + 1
95245 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
95246 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
95247 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
95248 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
95249 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
95250 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
95251 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
95252 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
95253 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
95254 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
95255 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
95256 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
95257 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
95258 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
95259 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
95260 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
95261 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
95262 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
95263 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
95264 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
95265 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
95266 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
95267 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
95268 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
95269 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
95270 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
95271 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
95272 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
95273 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
95274 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
95275 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
95276 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
95277 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
95278 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
95279 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
95280 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
95281 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
95282 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
95283 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
95284 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
95285 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
95286 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
95287 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
95288 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
95289 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
95290 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
95291 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
95292 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
95293 END DO
95294 END DO
95295 END DO
95296 s_offset_d1 = s_offset_d1 + 7
95297 END DO
95298 s_offset_c1 = s_offset_c1 + 1
95299 END DO
95300 s_offset_b1 = s_offset_b1 + 7
95301 END DO
95302 s_offset_a1 = s_offset_a1 + 9
95303 END DO
95304 END SUBROUTINE contract_gfsf
95305#endif
95306#if __MAX_CONTR > 4 || __MAX_CONTR == 4
95307! **************************************************************************************************
95308!> \brief ...
95309!> \param work ...
95310!> \param nl_a ...
95311!> \param nl_b ...
95312!> \param nl_c ...
95313!> \param nl_d ...
95314!> \param sphi_a ...
95315!> \param sphi_b ...
95316!> \param sphi_c ...
95317!> \param sphi_d ...
95318!> \param primitives ...
95319!> \param buffer1 ...
95320!> \param buffer2 ...
95321! **************************************************************************************************
95322 SUBROUTINE contract_gfsg(work, &
95323 nl_a, nl_b, nl_c, nl_d, &
95324 sphi_a, sphi_b, sphi_c, sphi_d, &
95325 primitives, &
95326 buffer1, buffer2)
95327 REAL(dp), DIMENSION(15*10*1*15), INTENT(IN) :: work
95328 INTEGER :: nl_a, nl_b, nl_c, nl_d
95329 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
95330 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
95331 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
95332 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
95333 REAL(dp), &
95334 DIMENSION(9*nl_a, 7*nl_b, 1*nl_c, 9*nl_d) :: primitives
95335 REAL(dp), DIMENSION(15*10*1*15) :: buffer1, buffer2
95336
95337 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
95338 kmax, s_offset_a1, s_offset_b1, &
95339 s_offset_c1, s_offset_d1
95340
95341 s_offset_a1 = 0
95342 DO ia = 1, nl_a
95343 s_offset_b1 = 0
95344 DO ib = 1, nl_b
95345 s_offset_c1 = 0
95346 DO ic = 1, nl_c
95347 s_offset_d1 = 0
95348 DO id = 1, nl_d
95349 buffer1 = 0.0_dp
95350 imax = 10*1*15
95351 kmax = 15
95352 DO i = 1, imax
95353 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
95354 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
95355 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
95356 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
95357 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
95358 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
95359 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
95360 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
95361 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
95362 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
95363 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
95364 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
95365 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
95366 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
95367 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
95368 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
95369 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
95370 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
95371 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
95372 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
95373 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
95374 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
95375 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
95376 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
95377 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
95378 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
95379 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
95380 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
95381 END DO
95382 buffer2 = 0.0_dp
95383 imax = 9*1*15
95384 kmax = 10
95385 DO i = 1, imax
95386 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
95387 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
95388 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
95389 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
95390 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
95391 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
95392 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
95393 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
95394 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
95395 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
95396 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
95397 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
95398 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
95399 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
95400 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
95401 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
95402 END DO
95403 buffer1 = 0.0_dp
95404 imax = 9*7*15
95405 kmax = 1
95406 DO i = 1, imax
95407 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
95408 END DO
95409 imax = 9*7*1
95410 kmax = 15
95411 i = 0
95412 DO i1 = 1, 1
95413 DO i2 = 1, 7
95414 DO i3 = 1, 9
95415 i = i + 1
95416 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
95417 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
95418 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
95419 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
95420 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
95421 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
95422 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
95423 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
95424 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
95425 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
95426 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
95427 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
95428 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
95429 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
95430 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
95431 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
95432 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
95433 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
95434 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
95435 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
95436 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
95437 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
95438 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
95439 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
95440 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
95441 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
95442 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
95443 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
95444 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
95445 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
95446 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
95447 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
95448 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
95449 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
95450 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
95451 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
95452 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
95453 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
95454 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
95455 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
95456 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
95457 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
95458 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
95459 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
95460 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
95461 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
95462 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
95463 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
95464 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
95465 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
95466 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
95467 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
95468 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
95469 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
95470 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
95471 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
95472 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
95473 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
95474 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
95475 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
95476 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
95477 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
95478 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
95479 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
95480 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
95481 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
95482 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
95483 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
95484 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
95485 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
95486 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
95487 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
95488 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
95489 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
95490 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
95491 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
95492 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
95493 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
95494 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
95495 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
95496 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
95497 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
95498 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
95499 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
95500 END DO
95501 END DO
95502 END DO
95503 s_offset_d1 = s_offset_d1 + 9
95504 END DO
95505 s_offset_c1 = s_offset_c1 + 1
95506 END DO
95507 s_offset_b1 = s_offset_b1 + 7
95508 END DO
95509 s_offset_a1 = s_offset_a1 + 9
95510 END DO
95511 END SUBROUTINE contract_gfsg
95512#endif
95513#if __MAX_CONTR > 4 || __MAX_CONTR == 4
95514! **************************************************************************************************
95515!> \brief ...
95516!> \param work ...
95517!> \param nl_a ...
95518!> \param nl_b ...
95519!> \param nl_c ...
95520!> \param nl_d ...
95521!> \param sphi_a ...
95522!> \param sphi_b ...
95523!> \param sphi_c ...
95524!> \param sphi_d ...
95525!> \param primitives ...
95526!> \param buffer1 ...
95527!> \param buffer2 ...
95528! **************************************************************************************************
95529 SUBROUTINE contract_gfps(work, &
95530 nl_a, nl_b, nl_c, nl_d, &
95531 sphi_a, sphi_b, sphi_c, sphi_d, &
95532 primitives, &
95533 buffer1, buffer2)
95534 REAL(dp), DIMENSION(15*10*3*1), INTENT(IN) :: work
95535 INTEGER :: nl_a, nl_b, nl_c, nl_d
95536 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
95537 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
95538 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
95539 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
95540 REAL(dp), &
95541 DIMENSION(9*nl_a, 7*nl_b, 3*nl_c, 1*nl_d) :: primitives
95542 REAL(dp), DIMENSION(15*10*3*1) :: buffer1, buffer2
95543
95544 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
95545 kmax, s_offset_a1, s_offset_b1, &
95546 s_offset_c1, s_offset_d1
95547
95548 s_offset_a1 = 0
95549 DO ia = 1, nl_a
95550 s_offset_b1 = 0
95551 DO ib = 1, nl_b
95552 s_offset_c1 = 0
95553 DO ic = 1, nl_c
95554 s_offset_d1 = 0
95555 DO id = 1, nl_d
95556 buffer1 = 0.0_dp
95557 imax = 10*3*1
95558 kmax = 15
95559 DO i = 1, imax
95560 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
95561 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
95562 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
95563 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
95564 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
95565 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
95566 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
95567 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
95568 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
95569 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
95570 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
95571 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
95572 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
95573 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
95574 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
95575 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
95576 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
95577 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
95578 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
95579 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
95580 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
95581 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
95582 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
95583 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
95584 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
95585 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
95586 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
95587 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
95588 END DO
95589 buffer2 = 0.0_dp
95590 imax = 9*3*1
95591 kmax = 10
95592 DO i = 1, imax
95593 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
95594 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
95595 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
95596 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
95597 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
95598 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
95599 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
95600 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
95601 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
95602 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
95603 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
95604 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
95605 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
95606 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
95607 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
95608 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
95609 END DO
95610 buffer1 = 0.0_dp
95611 imax = 9*7*1
95612 kmax = 3
95613 DO i = 1, imax
95614 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
95615 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
95616 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
95617 END DO
95618 imax = 9*7*3
95619 kmax = 1
95620 i = 0
95621 DO i1 = 1, 3
95622 DO i2 = 1, 7
95623 DO i3 = 1, 9
95624 i = i + 1
95625 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
95626 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
95627 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
95628 END DO
95629 END DO
95630 END DO
95631 s_offset_d1 = s_offset_d1 + 1
95632 END DO
95633 s_offset_c1 = s_offset_c1 + 3
95634 END DO
95635 s_offset_b1 = s_offset_b1 + 7
95636 END DO
95637 s_offset_a1 = s_offset_a1 + 9
95638 END DO
95639 END SUBROUTINE contract_gfps
95640#endif
95641#if __MAX_CONTR > 4 || __MAX_CONTR == 4
95642! **************************************************************************************************
95643!> \brief ...
95644!> \param work ...
95645!> \param nl_a ...
95646!> \param nl_b ...
95647!> \param nl_c ...
95648!> \param nl_d ...
95649!> \param sphi_a ...
95650!> \param sphi_b ...
95651!> \param sphi_c ...
95652!> \param sphi_d ...
95653!> \param primitives ...
95654!> \param buffer1 ...
95655!> \param buffer2 ...
95656! **************************************************************************************************
95657 SUBROUTINE contract_gfpp(work, &
95658 nl_a, nl_b, nl_c, nl_d, &
95659 sphi_a, sphi_b, sphi_c, sphi_d, &
95660 primitives, &
95661 buffer1, buffer2)
95662 REAL(dp), DIMENSION(15*10*3*3), INTENT(IN) :: work
95663 INTEGER :: nl_a, nl_b, nl_c, nl_d
95664 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
95665 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
95666 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
95667 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
95668 REAL(dp), &
95669 DIMENSION(9*nl_a, 7*nl_b, 3*nl_c, 3*nl_d) :: primitives
95670 REAL(dp), DIMENSION(15*10*3*3) :: buffer1, buffer2
95671
95672 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
95673 kmax, s_offset_a1, s_offset_b1, &
95674 s_offset_c1, s_offset_d1
95675
95676 s_offset_a1 = 0
95677 DO ia = 1, nl_a
95678 s_offset_b1 = 0
95679 DO ib = 1, nl_b
95680 s_offset_c1 = 0
95681 DO ic = 1, nl_c
95682 s_offset_d1 = 0
95683 DO id = 1, nl_d
95684 buffer1 = 0.0_dp
95685 imax = 10*3*3
95686 kmax = 15
95687 DO i = 1, imax
95688 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
95689 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
95690 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
95691 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
95692 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
95693 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
95694 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
95695 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
95696 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
95697 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
95698 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
95699 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
95700 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
95701 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
95702 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
95703 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
95704 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
95705 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
95706 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
95707 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
95708 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
95709 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
95710 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
95711 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
95712 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
95713 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
95714 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
95715 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
95716 END DO
95717 buffer2 = 0.0_dp
95718 imax = 9*3*3
95719 kmax = 10
95720 DO i = 1, imax
95721 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
95722 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
95723 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
95724 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
95725 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
95726 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
95727 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
95728 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
95729 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
95730 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
95731 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
95732 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
95733 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
95734 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
95735 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
95736 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
95737 END DO
95738 buffer1 = 0.0_dp
95739 imax = 9*7*3
95740 kmax = 3
95741 DO i = 1, imax
95742 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
95743 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
95744 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
95745 END DO
95746 imax = 9*7*3
95747 kmax = 3
95748 i = 0
95749 DO i1 = 1, 3
95750 DO i2 = 1, 7
95751 DO i3 = 1, 9
95752 i = i + 1
95753 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
95754 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
95755 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
95756 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
95757 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
95758 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
95759 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
95760 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
95761 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
95762 END DO
95763 END DO
95764 END DO
95765 s_offset_d1 = s_offset_d1 + 3
95766 END DO
95767 s_offset_c1 = s_offset_c1 + 3
95768 END DO
95769 s_offset_b1 = s_offset_b1 + 7
95770 END DO
95771 s_offset_a1 = s_offset_a1 + 9
95772 END DO
95773 END SUBROUTINE contract_gfpp
95774#endif
95775#if __MAX_CONTR > 4 || __MAX_CONTR == 4
95776! **************************************************************************************************
95777!> \brief ...
95778!> \param work ...
95779!> \param nl_a ...
95780!> \param nl_b ...
95781!> \param nl_c ...
95782!> \param nl_d ...
95783!> \param sphi_a ...
95784!> \param sphi_b ...
95785!> \param sphi_c ...
95786!> \param sphi_d ...
95787!> \param primitives ...
95788!> \param buffer1 ...
95789!> \param buffer2 ...
95790! **************************************************************************************************
95791 SUBROUTINE contract_gfpd(work, &
95792 nl_a, nl_b, nl_c, nl_d, &
95793 sphi_a, sphi_b, sphi_c, sphi_d, &
95794 primitives, &
95795 buffer1, buffer2)
95796 REAL(dp), DIMENSION(15*10*3*6), INTENT(IN) :: work
95797 INTEGER :: nl_a, nl_b, nl_c, nl_d
95798 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
95799 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
95800 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
95801 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
95802 REAL(dp), &
95803 DIMENSION(9*nl_a, 7*nl_b, 3*nl_c, 5*nl_d) :: primitives
95804 REAL(dp), DIMENSION(15*10*3*6) :: buffer1, buffer2
95805
95806 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
95807 kmax, s_offset_a1, s_offset_b1, &
95808 s_offset_c1, s_offset_d1
95809
95810 s_offset_a1 = 0
95811 DO ia = 1, nl_a
95812 s_offset_b1 = 0
95813 DO ib = 1, nl_b
95814 s_offset_c1 = 0
95815 DO ic = 1, nl_c
95816 s_offset_d1 = 0
95817 DO id = 1, nl_d
95818 buffer1 = 0.0_dp
95819 imax = 10*3*6
95820 kmax = 15
95821 DO i = 1, imax
95822 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
95823 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
95824 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
95825 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
95826 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
95827 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
95828 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
95829 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
95830 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
95831 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
95832 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
95833 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
95834 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
95835 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
95836 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
95837 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
95838 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
95839 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
95840 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
95841 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
95842 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
95843 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
95844 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
95845 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
95846 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
95847 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
95848 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
95849 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
95850 END DO
95851 buffer2 = 0.0_dp
95852 imax = 9*3*6
95853 kmax = 10
95854 DO i = 1, imax
95855 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
95856 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
95857 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
95858 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
95859 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
95860 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
95861 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
95862 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
95863 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
95864 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
95865 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
95866 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
95867 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
95868 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
95869 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
95870 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
95871 END DO
95872 buffer1 = 0.0_dp
95873 imax = 9*7*6
95874 kmax = 3
95875 DO i = 1, imax
95876 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
95877 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
95878 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
95879 END DO
95880 imax = 9*7*3
95881 kmax = 6
95882 i = 0
95883 DO i1 = 1, 3
95884 DO i2 = 1, 7
95885 DO i3 = 1, 9
95886 i = i + 1
95887 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
95888 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
95889 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
95890 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
95891 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
95892 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
95893 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
95894 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
95895 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
95896 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
95897 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
95898 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
95899 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
95900 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
95901 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
95902 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
95903 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
95904 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
95905 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
95906 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
95907 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
95908 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
95909 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
95910 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
95911 END DO
95912 END DO
95913 END DO
95914 s_offset_d1 = s_offset_d1 + 5
95915 END DO
95916 s_offset_c1 = s_offset_c1 + 3
95917 END DO
95918 s_offset_b1 = s_offset_b1 + 7
95919 END DO
95920 s_offset_a1 = s_offset_a1 + 9
95921 END DO
95922 END SUBROUTINE contract_gfpd
95923#endif
95924#if __MAX_CONTR > 4 || __MAX_CONTR == 4
95925! **************************************************************************************************
95926!> \brief ...
95927!> \param work ...
95928!> \param nl_a ...
95929!> \param nl_b ...
95930!> \param nl_c ...
95931!> \param nl_d ...
95932!> \param sphi_a ...
95933!> \param sphi_b ...
95934!> \param sphi_c ...
95935!> \param sphi_d ...
95936!> \param primitives ...
95937!> \param buffer1 ...
95938!> \param buffer2 ...
95939! **************************************************************************************************
95940 SUBROUTINE contract_gfpf(work, &
95941 nl_a, nl_b, nl_c, nl_d, &
95942 sphi_a, sphi_b, sphi_c, sphi_d, &
95943 primitives, &
95944 buffer1, buffer2)
95945 REAL(dp), DIMENSION(15*10*3*10), INTENT(IN) :: work
95946 INTEGER :: nl_a, nl_b, nl_c, nl_d
95947 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
95948 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
95949 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
95950 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
95951 REAL(dp), &
95952 DIMENSION(9*nl_a, 7*nl_b, 3*nl_c, 7*nl_d) :: primitives
95953 REAL(dp), DIMENSION(15*10*3*10) :: buffer1, buffer2
95954
95955 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
95956 kmax, s_offset_a1, s_offset_b1, &
95957 s_offset_c1, s_offset_d1
95958
95959 s_offset_a1 = 0
95960 DO ia = 1, nl_a
95961 s_offset_b1 = 0
95962 DO ib = 1, nl_b
95963 s_offset_c1 = 0
95964 DO ic = 1, nl_c
95965 s_offset_d1 = 0
95966 DO id = 1, nl_d
95967 buffer1 = 0.0_dp
95968 imax = 10*3*10
95969 kmax = 15
95970 DO i = 1, imax
95971 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
95972 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
95973 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
95974 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
95975 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
95976 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
95977 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
95978 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
95979 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
95980 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
95981 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
95982 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
95983 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
95984 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
95985 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
95986 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
95987 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
95988 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
95989 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
95990 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
95991 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
95992 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
95993 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
95994 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
95995 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
95996 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
95997 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
95998 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
95999 END DO
96000 buffer2 = 0.0_dp
96001 imax = 9*3*10
96002 kmax = 10
96003 DO i = 1, imax
96004 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
96005 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
96006 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
96007 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
96008 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
96009 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
96010 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
96011 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
96012 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
96013 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
96014 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
96015 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
96016 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
96017 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
96018 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
96019 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
96020 END DO
96021 buffer1 = 0.0_dp
96022 imax = 9*7*10
96023 kmax = 3
96024 DO i = 1, imax
96025 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
96026 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
96027 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
96028 END DO
96029 imax = 9*7*3
96030 kmax = 10
96031 i = 0
96032 DO i1 = 1, 3
96033 DO i2 = 1, 7
96034 DO i3 = 1, 9
96035 i = i + 1
96036 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
96037 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
96038 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
96039 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
96040 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
96041 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
96042 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
96043 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
96044 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
96045 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
96046 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
96047 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
96048 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
96049 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
96050 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
96051 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
96052 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
96053 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
96054 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
96055 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
96056 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
96057 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
96058 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
96059 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
96060 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
96061 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
96062 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
96063 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
96064 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
96065 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
96066 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
96067 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
96068 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
96069 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
96070 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
96071 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
96072 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
96073 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
96074 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
96075 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
96076 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
96077 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
96078 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
96079 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
96080 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
96081 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
96082 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
96083 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
96084 END DO
96085 END DO
96086 END DO
96087 s_offset_d1 = s_offset_d1 + 7
96088 END DO
96089 s_offset_c1 = s_offset_c1 + 3
96090 END DO
96091 s_offset_b1 = s_offset_b1 + 7
96092 END DO
96093 s_offset_a1 = s_offset_a1 + 9
96094 END DO
96095 END SUBROUTINE contract_gfpf
96096#endif
96097#if __MAX_CONTR > 4 || __MAX_CONTR == 4
96098! **************************************************************************************************
96099!> \brief ...
96100!> \param work ...
96101!> \param nl_a ...
96102!> \param nl_b ...
96103!> \param nl_c ...
96104!> \param nl_d ...
96105!> \param sphi_a ...
96106!> \param sphi_b ...
96107!> \param sphi_c ...
96108!> \param sphi_d ...
96109!> \param primitives ...
96110!> \param buffer1 ...
96111!> \param buffer2 ...
96112! **************************************************************************************************
96113 SUBROUTINE contract_gfpg(work, &
96114 nl_a, nl_b, nl_c, nl_d, &
96115 sphi_a, sphi_b, sphi_c, sphi_d, &
96116 primitives, &
96117 buffer1, buffer2)
96118 REAL(dp), DIMENSION(15*10*3*15), INTENT(IN) :: work
96119 INTEGER :: nl_a, nl_b, nl_c, nl_d
96120 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
96121 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
96122 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
96123 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
96124 REAL(dp), &
96125 DIMENSION(9*nl_a, 7*nl_b, 3*nl_c, 9*nl_d) :: primitives
96126 REAL(dp), DIMENSION(15*10*3*15) :: buffer1, buffer2
96127
96128 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
96129 kmax, s_offset_a1, s_offset_b1, &
96130 s_offset_c1, s_offset_d1
96131
96132 s_offset_a1 = 0
96133 DO ia = 1, nl_a
96134 s_offset_b1 = 0
96135 DO ib = 1, nl_b
96136 s_offset_c1 = 0
96137 DO ic = 1, nl_c
96138 s_offset_d1 = 0
96139 DO id = 1, nl_d
96140 buffer1 = 0.0_dp
96141 imax = 10*3*15
96142 kmax = 15
96143 DO i = 1, imax
96144 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
96145 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
96146 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
96147 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
96148 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
96149 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
96150 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
96151 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
96152 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
96153 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
96154 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
96155 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
96156 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
96157 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
96158 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
96159 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
96160 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
96161 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
96162 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
96163 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
96164 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
96165 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
96166 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
96167 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
96168 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
96169 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
96170 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
96171 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
96172 END DO
96173 buffer2 = 0.0_dp
96174 imax = 9*3*15
96175 kmax = 10
96176 DO i = 1, imax
96177 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
96178 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
96179 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
96180 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
96181 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
96182 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
96183 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
96184 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
96185 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
96186 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
96187 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
96188 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
96189 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
96190 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
96191 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
96192 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
96193 END DO
96194 buffer1 = 0.0_dp
96195 imax = 9*7*15
96196 kmax = 3
96197 DO i = 1, imax
96198 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
96199 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
96200 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
96201 END DO
96202 imax = 9*7*3
96203 kmax = 15
96204 i = 0
96205 DO i1 = 1, 3
96206 DO i2 = 1, 7
96207 DO i3 = 1, 9
96208 i = i + 1
96209 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
96210 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
96211 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
96212 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
96213 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
96214 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
96215 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
96216 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
96217 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
96218 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
96219 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
96220 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
96221 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
96222 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
96223 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
96224 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
96225 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
96226 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
96227 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
96228 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
96229 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
96230 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
96231 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
96232 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
96233 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
96234 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
96235 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
96236 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
96237 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
96238 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
96239 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
96240 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
96241 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
96242 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
96243 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
96244 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
96245 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
96246 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
96247 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
96248 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
96249 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
96250 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
96251 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
96252 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
96253 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
96254 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
96255 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
96256 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
96257 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
96258 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
96259 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
96260 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
96261 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
96262 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
96263 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
96264 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
96265 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
96266 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
96267 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
96268 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
96269 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
96270 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
96271 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
96272 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
96273 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
96274 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
96275 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
96276 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
96277 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
96278 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
96279 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
96280 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
96281 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
96282 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
96283 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
96284 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
96285 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
96286 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
96287 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
96288 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
96289 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
96290 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
96291 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
96292 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
96293 END DO
96294 END DO
96295 END DO
96296 s_offset_d1 = s_offset_d1 + 9
96297 END DO
96298 s_offset_c1 = s_offset_c1 + 3
96299 END DO
96300 s_offset_b1 = s_offset_b1 + 7
96301 END DO
96302 s_offset_a1 = s_offset_a1 + 9
96303 END DO
96304 END SUBROUTINE contract_gfpg
96305#endif
96306#if __MAX_CONTR > 4 || __MAX_CONTR == 4
96307! **************************************************************************************************
96308!> \brief ...
96309!> \param work ...
96310!> \param nl_a ...
96311!> \param nl_b ...
96312!> \param nl_c ...
96313!> \param nl_d ...
96314!> \param sphi_a ...
96315!> \param sphi_b ...
96316!> \param sphi_c ...
96317!> \param sphi_d ...
96318!> \param primitives ...
96319!> \param buffer1 ...
96320!> \param buffer2 ...
96321! **************************************************************************************************
96322 SUBROUTINE contract_gfds(work, &
96323 nl_a, nl_b, nl_c, nl_d, &
96324 sphi_a, sphi_b, sphi_c, sphi_d, &
96325 primitives, &
96326 buffer1, buffer2)
96327 REAL(dp), DIMENSION(15*10*6*1), INTENT(IN) :: work
96328 INTEGER :: nl_a, nl_b, nl_c, nl_d
96329 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
96330 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
96331 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
96332 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
96333 REAL(dp), &
96334 DIMENSION(9*nl_a, 7*nl_b, 5*nl_c, 1*nl_d) :: primitives
96335 REAL(dp), DIMENSION(15*10*6*1) :: buffer1, buffer2
96336
96337 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
96338 kmax, s_offset_a1, s_offset_b1, &
96339 s_offset_c1, s_offset_d1
96340
96341 s_offset_a1 = 0
96342 DO ia = 1, nl_a
96343 s_offset_b1 = 0
96344 DO ib = 1, nl_b
96345 s_offset_c1 = 0
96346 DO ic = 1, nl_c
96347 s_offset_d1 = 0
96348 DO id = 1, nl_d
96349 buffer1 = 0.0_dp
96350 imax = 10*6*1
96351 kmax = 15
96352 DO i = 1, imax
96353 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
96354 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
96355 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
96356 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
96357 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
96358 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
96359 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
96360 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
96361 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
96362 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
96363 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
96364 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
96365 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
96366 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
96367 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
96368 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
96369 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
96370 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
96371 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
96372 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
96373 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
96374 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
96375 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
96376 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
96377 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
96378 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
96379 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
96380 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
96381 END DO
96382 buffer2 = 0.0_dp
96383 imax = 9*6*1
96384 kmax = 10
96385 DO i = 1, imax
96386 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
96387 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
96388 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
96389 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
96390 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
96391 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
96392 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
96393 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
96394 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
96395 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
96396 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
96397 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
96398 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
96399 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
96400 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
96401 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
96402 END DO
96403 buffer1 = 0.0_dp
96404 imax = 9*7*1
96405 kmax = 6
96406 DO i = 1, imax
96407 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
96408 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
96409 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
96410 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
96411 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
96412 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
96413 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
96414 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
96415 END DO
96416 imax = 9*7*5
96417 kmax = 1
96418 i = 0
96419 DO i1 = 1, 5
96420 DO i2 = 1, 7
96421 DO i3 = 1, 9
96422 i = i + 1
96423 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
96424 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
96425 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
96426 END DO
96427 END DO
96428 END DO
96429 s_offset_d1 = s_offset_d1 + 1
96430 END DO
96431 s_offset_c1 = s_offset_c1 + 5
96432 END DO
96433 s_offset_b1 = s_offset_b1 + 7
96434 END DO
96435 s_offset_a1 = s_offset_a1 + 9
96436 END DO
96437 END SUBROUTINE contract_gfds
96438#endif
96439#if __MAX_CONTR > 4 || __MAX_CONTR == 4
96440! **************************************************************************************************
96441!> \brief ...
96442!> \param work ...
96443!> \param nl_a ...
96444!> \param nl_b ...
96445!> \param nl_c ...
96446!> \param nl_d ...
96447!> \param sphi_a ...
96448!> \param sphi_b ...
96449!> \param sphi_c ...
96450!> \param sphi_d ...
96451!> \param primitives ...
96452!> \param buffer1 ...
96453!> \param buffer2 ...
96454! **************************************************************************************************
96455 SUBROUTINE contract_gfdp(work, &
96456 nl_a, nl_b, nl_c, nl_d, &
96457 sphi_a, sphi_b, sphi_c, sphi_d, &
96458 primitives, &
96459 buffer1, buffer2)
96460 REAL(dp), DIMENSION(15*10*6*3), INTENT(IN) :: work
96461 INTEGER :: nl_a, nl_b, nl_c, nl_d
96462 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
96463 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
96464 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
96465 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
96466 REAL(dp), &
96467 DIMENSION(9*nl_a, 7*nl_b, 5*nl_c, 3*nl_d) :: primitives
96468 REAL(dp), DIMENSION(15*10*6*3) :: buffer1, buffer2
96469
96470 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
96471 kmax, s_offset_a1, s_offset_b1, &
96472 s_offset_c1, s_offset_d1
96473
96474 s_offset_a1 = 0
96475 DO ia = 1, nl_a
96476 s_offset_b1 = 0
96477 DO ib = 1, nl_b
96478 s_offset_c1 = 0
96479 DO ic = 1, nl_c
96480 s_offset_d1 = 0
96481 DO id = 1, nl_d
96482 buffer1 = 0.0_dp
96483 imax = 10*6*3
96484 kmax = 15
96485 DO i = 1, imax
96486 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
96487 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
96488 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
96489 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
96490 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
96491 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
96492 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
96493 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
96494 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
96495 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
96496 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
96497 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
96498 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
96499 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
96500 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
96501 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
96502 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
96503 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
96504 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
96505 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
96506 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
96507 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
96508 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
96509 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
96510 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
96511 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
96512 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
96513 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
96514 END DO
96515 buffer2 = 0.0_dp
96516 imax = 9*6*3
96517 kmax = 10
96518 DO i = 1, imax
96519 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
96520 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
96521 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
96522 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
96523 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
96524 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
96525 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
96526 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
96527 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
96528 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
96529 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
96530 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
96531 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
96532 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
96533 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
96534 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
96535 END DO
96536 buffer1 = 0.0_dp
96537 imax = 9*7*3
96538 kmax = 6
96539 DO i = 1, imax
96540 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
96541 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
96542 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
96543 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
96544 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
96545 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
96546 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
96547 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
96548 END DO
96549 imax = 9*7*5
96550 kmax = 3
96551 i = 0
96552 DO i1 = 1, 5
96553 DO i2 = 1, 7
96554 DO i3 = 1, 9
96555 i = i + 1
96556 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
96557 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
96558 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
96559 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
96560 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
96561 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
96562 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
96563 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
96564 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
96565 END DO
96566 END DO
96567 END DO
96568 s_offset_d1 = s_offset_d1 + 3
96569 END DO
96570 s_offset_c1 = s_offset_c1 + 5
96571 END DO
96572 s_offset_b1 = s_offset_b1 + 7
96573 END DO
96574 s_offset_a1 = s_offset_a1 + 9
96575 END DO
96576 END SUBROUTINE contract_gfdp
96577#endif
96578#if __MAX_CONTR > 4 || __MAX_CONTR == 4
96579! **************************************************************************************************
96580!> \brief ...
96581!> \param work ...
96582!> \param nl_a ...
96583!> \param nl_b ...
96584!> \param nl_c ...
96585!> \param nl_d ...
96586!> \param sphi_a ...
96587!> \param sphi_b ...
96588!> \param sphi_c ...
96589!> \param sphi_d ...
96590!> \param primitives ...
96591!> \param buffer1 ...
96592!> \param buffer2 ...
96593! **************************************************************************************************
96594 SUBROUTINE contract_gfdd(work, &
96595 nl_a, nl_b, nl_c, nl_d, &
96596 sphi_a, sphi_b, sphi_c, sphi_d, &
96597 primitives, &
96598 buffer1, buffer2)
96599 REAL(dp), DIMENSION(15*10*6*6), INTENT(IN) :: work
96600 INTEGER :: nl_a, nl_b, nl_c, nl_d
96601 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
96602 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
96603 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
96604 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
96605 REAL(dp), &
96606 DIMENSION(9*nl_a, 7*nl_b, 5*nl_c, 5*nl_d) :: primitives
96607 REAL(dp), DIMENSION(15*10*6*6) :: buffer1, buffer2
96608
96609 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
96610 kmax, s_offset_a1, s_offset_b1, &
96611 s_offset_c1, s_offset_d1
96612
96613 s_offset_a1 = 0
96614 DO ia = 1, nl_a
96615 s_offset_b1 = 0
96616 DO ib = 1, nl_b
96617 s_offset_c1 = 0
96618 DO ic = 1, nl_c
96619 s_offset_d1 = 0
96620 DO id = 1, nl_d
96621 buffer1 = 0.0_dp
96622 imax = 10*6*6
96623 kmax = 15
96624 DO i = 1, imax
96625 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
96626 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
96627 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
96628 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
96629 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
96630 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
96631 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
96632 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
96633 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
96634 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
96635 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
96636 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
96637 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
96638 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
96639 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
96640 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
96641 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
96642 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
96643 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
96644 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
96645 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
96646 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
96647 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
96648 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
96649 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
96650 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
96651 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
96652 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
96653 END DO
96654 buffer2 = 0.0_dp
96655 imax = 9*6*6
96656 kmax = 10
96657 DO i = 1, imax
96658 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
96659 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
96660 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
96661 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
96662 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
96663 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
96664 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
96665 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
96666 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
96667 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
96668 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
96669 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
96670 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
96671 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
96672 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
96673 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
96674 END DO
96675 buffer1 = 0.0_dp
96676 imax = 9*7*6
96677 kmax = 6
96678 DO i = 1, imax
96679 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
96680 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
96681 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
96682 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
96683 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
96684 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
96685 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
96686 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
96687 END DO
96688 imax = 9*7*5
96689 kmax = 6
96690 i = 0
96691 DO i1 = 1, 5
96692 DO i2 = 1, 7
96693 DO i3 = 1, 9
96694 i = i + 1
96695 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
96696 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
96697 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
96698 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
96699 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
96700 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
96701 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
96702 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
96703 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
96704 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
96705 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
96706 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
96707 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
96708 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
96709 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
96710 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
96711 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
96712 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
96713 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
96714 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
96715 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
96716 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
96717 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
96718 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
96719 END DO
96720 END DO
96721 END DO
96722 s_offset_d1 = s_offset_d1 + 5
96723 END DO
96724 s_offset_c1 = s_offset_c1 + 5
96725 END DO
96726 s_offset_b1 = s_offset_b1 + 7
96727 END DO
96728 s_offset_a1 = s_offset_a1 + 9
96729 END DO
96730 END SUBROUTINE contract_gfdd
96731#endif
96732#if __MAX_CONTR > 4 || __MAX_CONTR == 4
96733! **************************************************************************************************
96734!> \brief ...
96735!> \param work ...
96736!> \param nl_a ...
96737!> \param nl_b ...
96738!> \param nl_c ...
96739!> \param nl_d ...
96740!> \param sphi_a ...
96741!> \param sphi_b ...
96742!> \param sphi_c ...
96743!> \param sphi_d ...
96744!> \param primitives ...
96745!> \param buffer1 ...
96746!> \param buffer2 ...
96747! **************************************************************************************************
96748 SUBROUTINE contract_gfdf(work, &
96749 nl_a, nl_b, nl_c, nl_d, &
96750 sphi_a, sphi_b, sphi_c, sphi_d, &
96751 primitives, &
96752 buffer1, buffer2)
96753 REAL(dp), DIMENSION(15*10*6*10), INTENT(IN) :: work
96754 INTEGER :: nl_a, nl_b, nl_c, nl_d
96755 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
96756 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
96757 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
96758 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
96759 REAL(dp), &
96760 DIMENSION(9*nl_a, 7*nl_b, 5*nl_c, 7*nl_d) :: primitives
96761 REAL(dp), DIMENSION(15*10*6*10) :: buffer1, buffer2
96762
96763 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
96764 kmax, s_offset_a1, s_offset_b1, &
96765 s_offset_c1, s_offset_d1
96766
96767 s_offset_a1 = 0
96768 DO ia = 1, nl_a
96769 s_offset_b1 = 0
96770 DO ib = 1, nl_b
96771 s_offset_c1 = 0
96772 DO ic = 1, nl_c
96773 s_offset_d1 = 0
96774 DO id = 1, nl_d
96775 buffer1 = 0.0_dp
96776 imax = 10*6*10
96777 kmax = 15
96778 DO i = 1, imax
96779 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
96780 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
96781 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
96782 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
96783 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
96784 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
96785 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
96786 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
96787 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
96788 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
96789 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
96790 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
96791 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
96792 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
96793 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
96794 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
96795 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
96796 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
96797 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
96798 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
96799 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
96800 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
96801 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
96802 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
96803 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
96804 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
96805 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
96806 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
96807 END DO
96808 buffer2 = 0.0_dp
96809 imax = 9*6*10
96810 kmax = 10
96811 DO i = 1, imax
96812 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
96813 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
96814 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
96815 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
96816 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
96817 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
96818 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
96819 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
96820 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
96821 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
96822 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
96823 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
96824 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
96825 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
96826 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
96827 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
96828 END DO
96829 buffer1 = 0.0_dp
96830 imax = 9*7*10
96831 kmax = 6
96832 DO i = 1, imax
96833 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
96834 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
96835 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
96836 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
96837 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
96838 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
96839 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
96840 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
96841 END DO
96842 imax = 9*7*5
96843 kmax = 10
96844 i = 0
96845 DO i1 = 1, 5
96846 DO i2 = 1, 7
96847 DO i3 = 1, 9
96848 i = i + 1
96849 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
96850 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
96851 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
96852 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
96853 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
96854 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
96855 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
96856 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
96857 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
96858 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
96859 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
96860 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
96861 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
96862 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
96863 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
96864 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
96865 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
96866 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
96867 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
96868 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
96869 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
96870 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
96871 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
96872 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
96873 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
96874 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
96875 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
96876 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
96877 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
96878 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
96879 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
96880 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
96881 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
96882 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
96883 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
96884 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
96885 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
96886 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
96887 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
96888 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
96889 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
96890 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
96891 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
96892 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
96893 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
96894 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
96895 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
96896 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
96897 END DO
96898 END DO
96899 END DO
96900 s_offset_d1 = s_offset_d1 + 7
96901 END DO
96902 s_offset_c1 = s_offset_c1 + 5
96903 END DO
96904 s_offset_b1 = s_offset_b1 + 7
96905 END DO
96906 s_offset_a1 = s_offset_a1 + 9
96907 END DO
96908 END SUBROUTINE contract_gfdf
96909#endif
96910#if __MAX_CONTR > 4 || __MAX_CONTR == 4
96911! **************************************************************************************************
96912!> \brief ...
96913!> \param work ...
96914!> \param nl_a ...
96915!> \param nl_b ...
96916!> \param nl_c ...
96917!> \param nl_d ...
96918!> \param sphi_a ...
96919!> \param sphi_b ...
96920!> \param sphi_c ...
96921!> \param sphi_d ...
96922!> \param primitives ...
96923!> \param buffer1 ...
96924!> \param buffer2 ...
96925! **************************************************************************************************
96926 SUBROUTINE contract_gfdg(work, &
96927 nl_a, nl_b, nl_c, nl_d, &
96928 sphi_a, sphi_b, sphi_c, sphi_d, &
96929 primitives, &
96930 buffer1, buffer2)
96931 REAL(dp), DIMENSION(15*10*6*15), INTENT(IN) :: work
96932 INTEGER :: nl_a, nl_b, nl_c, nl_d
96933 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
96934 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
96935 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
96936 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
96937 REAL(dp), &
96938 DIMENSION(9*nl_a, 7*nl_b, 5*nl_c, 9*nl_d) :: primitives
96939 REAL(dp), DIMENSION(15*10*6*15) :: buffer1, buffer2
96940
96941 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
96942 kmax, s_offset_a1, s_offset_b1, &
96943 s_offset_c1, s_offset_d1
96944
96945 s_offset_a1 = 0
96946 DO ia = 1, nl_a
96947 s_offset_b1 = 0
96948 DO ib = 1, nl_b
96949 s_offset_c1 = 0
96950 DO ic = 1, nl_c
96951 s_offset_d1 = 0
96952 DO id = 1, nl_d
96953 buffer1 = 0.0_dp
96954 imax = 10*6*15
96955 kmax = 15
96956 DO i = 1, imax
96957 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
96958 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
96959 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
96960 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
96961 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
96962 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
96963 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
96964 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
96965 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
96966 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
96967 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
96968 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
96969 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
96970 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
96971 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
96972 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
96973 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
96974 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
96975 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
96976 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
96977 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
96978 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
96979 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
96980 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
96981 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
96982 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
96983 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
96984 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
96985 END DO
96986 buffer2 = 0.0_dp
96987 imax = 9*6*15
96988 kmax = 10
96989 DO i = 1, imax
96990 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
96991 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
96992 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
96993 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
96994 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
96995 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
96996 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
96997 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
96998 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
96999 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
97000 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
97001 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
97002 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
97003 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
97004 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
97005 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
97006 END DO
97007 buffer1 = 0.0_dp
97008 imax = 9*7*15
97009 kmax = 6
97010 DO i = 1, imax
97011 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
97012 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
97013 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
97014 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
97015 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
97016 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
97017 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
97018 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
97019 END DO
97020 imax = 9*7*5
97021 kmax = 15
97022 i = 0
97023 DO i1 = 1, 5
97024 DO i2 = 1, 7
97025 DO i3 = 1, 9
97026 i = i + 1
97027 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
97028 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
97029 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
97030 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
97031 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
97032 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
97033 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
97034 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
97035 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
97036 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
97037 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
97038 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
97039 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
97040 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
97041 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
97042 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
97043 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
97044 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
97045 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
97046 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
97047 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
97048 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
97049 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
97050 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
97051 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
97052 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
97053 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
97054 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
97055 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
97056 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
97057 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
97058 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
97059 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
97060 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
97061 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
97062 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
97063 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
97064 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
97065 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
97066 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
97067 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
97068 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
97069 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
97070 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
97071 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
97072 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
97073 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
97074 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
97075 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
97076 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
97077 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
97078 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
97079 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
97080 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
97081 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
97082 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
97083 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
97084 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
97085 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
97086 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
97087 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
97088 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
97089 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
97090 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
97091 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
97092 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
97093 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
97094 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
97095 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
97096 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
97097 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
97098 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
97099 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
97100 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
97101 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
97102 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
97103 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
97104 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
97105 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
97106 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
97107 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
97108 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
97109 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
97110 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
97111 END DO
97112 END DO
97113 END DO
97114 s_offset_d1 = s_offset_d1 + 9
97115 END DO
97116 s_offset_c1 = s_offset_c1 + 5
97117 END DO
97118 s_offset_b1 = s_offset_b1 + 7
97119 END DO
97120 s_offset_a1 = s_offset_a1 + 9
97121 END DO
97122 END SUBROUTINE contract_gfdg
97123#endif
97124#if __MAX_CONTR > 4 || __MAX_CONTR == 4
97125! **************************************************************************************************
97126!> \brief ...
97127!> \param work ...
97128!> \param nl_a ...
97129!> \param nl_b ...
97130!> \param nl_c ...
97131!> \param nl_d ...
97132!> \param sphi_a ...
97133!> \param sphi_b ...
97134!> \param sphi_c ...
97135!> \param sphi_d ...
97136!> \param primitives ...
97137!> \param buffer1 ...
97138!> \param buffer2 ...
97139! **************************************************************************************************
97140 SUBROUTINE contract_gffs(work, &
97141 nl_a, nl_b, nl_c, nl_d, &
97142 sphi_a, sphi_b, sphi_c, sphi_d, &
97143 primitives, &
97144 buffer1, buffer2)
97145 REAL(dp), DIMENSION(15*10*10*1), INTENT(IN) :: work
97146 INTEGER :: nl_a, nl_b, nl_c, nl_d
97147 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
97148 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
97149 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
97150 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
97151 REAL(dp), &
97152 DIMENSION(9*nl_a, 7*nl_b, 7*nl_c, 1*nl_d) :: primitives
97153 REAL(dp), DIMENSION(15*10*10*1) :: buffer1, buffer2
97154
97155 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
97156 kmax, s_offset_a1, s_offset_b1, &
97157 s_offset_c1, s_offset_d1
97158
97159 s_offset_a1 = 0
97160 DO ia = 1, nl_a
97161 s_offset_b1 = 0
97162 DO ib = 1, nl_b
97163 s_offset_c1 = 0
97164 DO ic = 1, nl_c
97165 s_offset_d1 = 0
97166 DO id = 1, nl_d
97167 buffer1 = 0.0_dp
97168 imax = 10*10*1
97169 kmax = 15
97170 DO i = 1, imax
97171 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
97172 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
97173 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
97174 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
97175 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
97176 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
97177 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
97178 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
97179 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
97180 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
97181 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
97182 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
97183 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
97184 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
97185 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
97186 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
97187 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
97188 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
97189 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
97190 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
97191 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
97192 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
97193 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
97194 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
97195 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
97196 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
97197 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
97198 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
97199 END DO
97200 buffer2 = 0.0_dp
97201 imax = 9*10*1
97202 kmax = 10
97203 DO i = 1, imax
97204 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
97205 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
97206 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
97207 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
97208 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
97209 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
97210 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
97211 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
97212 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
97213 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
97214 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
97215 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
97216 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
97217 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
97218 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
97219 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
97220 END DO
97221 buffer1 = 0.0_dp
97222 imax = 9*7*1
97223 kmax = 10
97224 DO i = 1, imax
97225 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
97226 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
97227 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
97228 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
97229 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
97230 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
97231 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
97232 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
97233 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
97234 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
97235 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
97236 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
97237 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
97238 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
97239 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
97240 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
97241 END DO
97242 imax = 9*7*7
97243 kmax = 1
97244 i = 0
97245 DO i1 = 1, 7
97246 DO i2 = 1, 7
97247 DO i3 = 1, 9
97248 i = i + 1
97249 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
97250 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
97251 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
97252 END DO
97253 END DO
97254 END DO
97255 s_offset_d1 = s_offset_d1 + 1
97256 END DO
97257 s_offset_c1 = s_offset_c1 + 7
97258 END DO
97259 s_offset_b1 = s_offset_b1 + 7
97260 END DO
97261 s_offset_a1 = s_offset_a1 + 9
97262 END DO
97263 END SUBROUTINE contract_gffs
97264#endif
97265#if __MAX_CONTR > 4 || __MAX_CONTR == 4
97266! **************************************************************************************************
97267!> \brief ...
97268!> \param work ...
97269!> \param nl_a ...
97270!> \param nl_b ...
97271!> \param nl_c ...
97272!> \param nl_d ...
97273!> \param sphi_a ...
97274!> \param sphi_b ...
97275!> \param sphi_c ...
97276!> \param sphi_d ...
97277!> \param primitives ...
97278!> \param buffer1 ...
97279!> \param buffer2 ...
97280! **************************************************************************************************
97281 SUBROUTINE contract_gffp(work, &
97282 nl_a, nl_b, nl_c, nl_d, &
97283 sphi_a, sphi_b, sphi_c, sphi_d, &
97284 primitives, &
97285 buffer1, buffer2)
97286 REAL(dp), DIMENSION(15*10*10*3), INTENT(IN) :: work
97287 INTEGER :: nl_a, nl_b, nl_c, nl_d
97288 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
97289 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
97290 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
97291 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
97292 REAL(dp), &
97293 DIMENSION(9*nl_a, 7*nl_b, 7*nl_c, 3*nl_d) :: primitives
97294 REAL(dp), DIMENSION(15*10*10*3) :: buffer1, buffer2
97295
97296 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
97297 kmax, s_offset_a1, s_offset_b1, &
97298 s_offset_c1, s_offset_d1
97299
97300 s_offset_a1 = 0
97301 DO ia = 1, nl_a
97302 s_offset_b1 = 0
97303 DO ib = 1, nl_b
97304 s_offset_c1 = 0
97305 DO ic = 1, nl_c
97306 s_offset_d1 = 0
97307 DO id = 1, nl_d
97308 buffer1 = 0.0_dp
97309 imax = 10*10*3
97310 kmax = 15
97311 DO i = 1, imax
97312 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
97313 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
97314 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
97315 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
97316 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
97317 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
97318 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
97319 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
97320 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
97321 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
97322 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
97323 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
97324 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
97325 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
97326 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
97327 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
97328 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
97329 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
97330 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
97331 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
97332 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
97333 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
97334 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
97335 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
97336 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
97337 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
97338 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
97339 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
97340 END DO
97341 buffer2 = 0.0_dp
97342 imax = 9*10*3
97343 kmax = 10
97344 DO i = 1, imax
97345 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
97346 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
97347 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
97348 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
97349 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
97350 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
97351 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
97352 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
97353 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
97354 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
97355 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
97356 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
97357 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
97358 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
97359 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
97360 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
97361 END DO
97362 buffer1 = 0.0_dp
97363 imax = 9*7*3
97364 kmax = 10
97365 DO i = 1, imax
97366 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
97367 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
97368 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
97369 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
97370 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
97371 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
97372 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
97373 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
97374 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
97375 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
97376 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
97377 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
97378 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
97379 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
97380 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
97381 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
97382 END DO
97383 imax = 9*7*7
97384 kmax = 3
97385 i = 0
97386 DO i1 = 1, 7
97387 DO i2 = 1, 7
97388 DO i3 = 1, 9
97389 i = i + 1
97390 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
97391 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
97392 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
97393 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
97394 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
97395 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
97396 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
97397 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
97398 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
97399 END DO
97400 END DO
97401 END DO
97402 s_offset_d1 = s_offset_d1 + 3
97403 END DO
97404 s_offset_c1 = s_offset_c1 + 7
97405 END DO
97406 s_offset_b1 = s_offset_b1 + 7
97407 END DO
97408 s_offset_a1 = s_offset_a1 + 9
97409 END DO
97410 END SUBROUTINE contract_gffp
97411#endif
97412#if __MAX_CONTR > 4 || __MAX_CONTR == 4
97413! **************************************************************************************************
97414!> \brief ...
97415!> \param work ...
97416!> \param nl_a ...
97417!> \param nl_b ...
97418!> \param nl_c ...
97419!> \param nl_d ...
97420!> \param sphi_a ...
97421!> \param sphi_b ...
97422!> \param sphi_c ...
97423!> \param sphi_d ...
97424!> \param primitives ...
97425!> \param buffer1 ...
97426!> \param buffer2 ...
97427! **************************************************************************************************
97428 SUBROUTINE contract_gffd(work, &
97429 nl_a, nl_b, nl_c, nl_d, &
97430 sphi_a, sphi_b, sphi_c, sphi_d, &
97431 primitives, &
97432 buffer1, buffer2)
97433 REAL(dp), DIMENSION(15*10*10*6), INTENT(IN) :: work
97434 INTEGER :: nl_a, nl_b, nl_c, nl_d
97435 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
97436 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
97437 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
97438 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
97439 REAL(dp), &
97440 DIMENSION(9*nl_a, 7*nl_b, 7*nl_c, 5*nl_d) :: primitives
97441 REAL(dp), DIMENSION(15*10*10*6) :: buffer1, buffer2
97442
97443 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
97444 kmax, s_offset_a1, s_offset_b1, &
97445 s_offset_c1, s_offset_d1
97446
97447 s_offset_a1 = 0
97448 DO ia = 1, nl_a
97449 s_offset_b1 = 0
97450 DO ib = 1, nl_b
97451 s_offset_c1 = 0
97452 DO ic = 1, nl_c
97453 s_offset_d1 = 0
97454 DO id = 1, nl_d
97455 buffer1 = 0.0_dp
97456 imax = 10*10*6
97457 kmax = 15
97458 DO i = 1, imax
97459 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
97460 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
97461 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
97462 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
97463 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
97464 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
97465 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
97466 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
97467 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
97468 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
97469 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
97470 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
97471 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
97472 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
97473 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
97474 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
97475 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
97476 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
97477 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
97478 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
97479 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
97480 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
97481 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
97482 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
97483 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
97484 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
97485 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
97486 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
97487 END DO
97488 buffer2 = 0.0_dp
97489 imax = 9*10*6
97490 kmax = 10
97491 DO i = 1, imax
97492 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
97493 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
97494 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
97495 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
97496 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
97497 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
97498 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
97499 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
97500 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
97501 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
97502 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
97503 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
97504 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
97505 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
97506 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
97507 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
97508 END DO
97509 buffer1 = 0.0_dp
97510 imax = 9*7*6
97511 kmax = 10
97512 DO i = 1, imax
97513 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
97514 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
97515 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
97516 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
97517 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
97518 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
97519 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
97520 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
97521 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
97522 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
97523 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
97524 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
97525 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
97526 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
97527 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
97528 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
97529 END DO
97530 imax = 9*7*7
97531 kmax = 6
97532 i = 0
97533 DO i1 = 1, 7
97534 DO i2 = 1, 7
97535 DO i3 = 1, 9
97536 i = i + 1
97537 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
97538 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
97539 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
97540 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
97541 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
97542 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
97543 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
97544 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
97545 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
97546 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
97547 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
97548 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
97549 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
97550 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
97551 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
97552 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
97553 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
97554 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
97555 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
97556 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
97557 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
97558 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
97559 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
97560 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
97561 END DO
97562 END DO
97563 END DO
97564 s_offset_d1 = s_offset_d1 + 5
97565 END DO
97566 s_offset_c1 = s_offset_c1 + 7
97567 END DO
97568 s_offset_b1 = s_offset_b1 + 7
97569 END DO
97570 s_offset_a1 = s_offset_a1 + 9
97571 END DO
97572 END SUBROUTINE contract_gffd
97573#endif
97574#if __MAX_CONTR > 4 || __MAX_CONTR == 4
97575! **************************************************************************************************
97576!> \brief ...
97577!> \param work ...
97578!> \param nl_a ...
97579!> \param nl_b ...
97580!> \param nl_c ...
97581!> \param nl_d ...
97582!> \param sphi_a ...
97583!> \param sphi_b ...
97584!> \param sphi_c ...
97585!> \param sphi_d ...
97586!> \param primitives ...
97587!> \param buffer1 ...
97588!> \param buffer2 ...
97589! **************************************************************************************************
97590 SUBROUTINE contract_gfff(work, &
97591 nl_a, nl_b, nl_c, nl_d, &
97592 sphi_a, sphi_b, sphi_c, sphi_d, &
97593 primitives, &
97594 buffer1, buffer2)
97595 REAL(dp), DIMENSION(15*10*10*10), INTENT(IN) :: work
97596 INTEGER :: nl_a, nl_b, nl_c, nl_d
97597 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
97598 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
97599 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
97600 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
97601 REAL(dp), &
97602 DIMENSION(9*nl_a, 7*nl_b, 7*nl_c, 7*nl_d) :: primitives
97603 REAL(dp), DIMENSION(15*10*10*10) :: buffer1, buffer2
97604
97605 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
97606 kmax, s_offset_a1, s_offset_b1, &
97607 s_offset_c1, s_offset_d1
97608
97609 s_offset_a1 = 0
97610 DO ia = 1, nl_a
97611 s_offset_b1 = 0
97612 DO ib = 1, nl_b
97613 s_offset_c1 = 0
97614 DO ic = 1, nl_c
97615 s_offset_d1 = 0
97616 DO id = 1, nl_d
97617 buffer1 = 0.0_dp
97618 imax = 10*10*10
97619 kmax = 15
97620 DO i = 1, imax
97621 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
97622 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
97623 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
97624 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
97625 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
97626 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
97627 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
97628 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
97629 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
97630 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
97631 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
97632 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
97633 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
97634 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
97635 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
97636 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
97637 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
97638 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
97639 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
97640 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
97641 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
97642 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
97643 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
97644 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
97645 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
97646 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
97647 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
97648 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
97649 END DO
97650 buffer2 = 0.0_dp
97651 imax = 9*10*10
97652 kmax = 10
97653 DO i = 1, imax
97654 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
97655 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
97656 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
97657 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
97658 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
97659 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
97660 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
97661 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
97662 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
97663 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
97664 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
97665 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
97666 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
97667 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
97668 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
97669 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
97670 END DO
97671 buffer1 = 0.0_dp
97672 imax = 9*7*10
97673 kmax = 10
97674 DO i = 1, imax
97675 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
97676 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
97677 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
97678 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
97679 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
97680 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
97681 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
97682 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
97683 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
97684 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
97685 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
97686 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
97687 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
97688 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
97689 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
97690 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
97691 END DO
97692 imax = 9*7*7
97693 kmax = 10
97694 i = 0
97695 DO i1 = 1, 7
97696 DO i2 = 1, 7
97697 DO i3 = 1, 9
97698 i = i + 1
97699 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
97700 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
97701 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
97702 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
97703 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
97704 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
97705 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
97706 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
97707 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
97708 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
97709 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
97710 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
97711 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
97712 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
97713 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
97714 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
97715 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
97716 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
97717 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
97718 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
97719 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
97720 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
97721 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
97722 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
97723 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
97724 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
97725 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
97726 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
97727 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
97728 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
97729 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
97730 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
97731 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
97732 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
97733 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
97734 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
97735 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
97736 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
97737 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
97738 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
97739 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
97740 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
97741 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
97742 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
97743 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
97744 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
97745 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
97746 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
97747 END DO
97748 END DO
97749 END DO
97750 s_offset_d1 = s_offset_d1 + 7
97751 END DO
97752 s_offset_c1 = s_offset_c1 + 7
97753 END DO
97754 s_offset_b1 = s_offset_b1 + 7
97755 END DO
97756 s_offset_a1 = s_offset_a1 + 9
97757 END DO
97758 END SUBROUTINE contract_gfff
97759#endif
97760#if __MAX_CONTR > 4 || __MAX_CONTR == 4
97761! **************************************************************************************************
97762!> \brief ...
97763!> \param work ...
97764!> \param nl_a ...
97765!> \param nl_b ...
97766!> \param nl_c ...
97767!> \param nl_d ...
97768!> \param sphi_a ...
97769!> \param sphi_b ...
97770!> \param sphi_c ...
97771!> \param sphi_d ...
97772!> \param primitives ...
97773!> \param buffer1 ...
97774!> \param buffer2 ...
97775! **************************************************************************************************
97776 SUBROUTINE contract_gffg(work, &
97777 nl_a, nl_b, nl_c, nl_d, &
97778 sphi_a, sphi_b, sphi_c, sphi_d, &
97779 primitives, &
97780 buffer1, buffer2)
97781 REAL(dp), DIMENSION(15*10*10*15), INTENT(IN) :: work
97782 INTEGER :: nl_a, nl_b, nl_c, nl_d
97783 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
97784 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
97785 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
97786 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
97787 REAL(dp), &
97788 DIMENSION(9*nl_a, 7*nl_b, 7*nl_c, 9*nl_d) :: primitives
97789 REAL(dp), DIMENSION(15*10*10*15) :: buffer1, buffer2
97790
97791 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
97792 kmax, s_offset_a1, s_offset_b1, &
97793 s_offset_c1, s_offset_d1
97794
97795 s_offset_a1 = 0
97796 DO ia = 1, nl_a
97797 s_offset_b1 = 0
97798 DO ib = 1, nl_b
97799 s_offset_c1 = 0
97800 DO ic = 1, nl_c
97801 s_offset_d1 = 0
97802 DO id = 1, nl_d
97803 buffer1 = 0.0_dp
97804 imax = 10*10*15
97805 kmax = 15
97806 DO i = 1, imax
97807 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
97808 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
97809 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
97810 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
97811 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
97812 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
97813 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
97814 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
97815 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
97816 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
97817 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
97818 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
97819 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
97820 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
97821 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
97822 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
97823 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
97824 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
97825 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
97826 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
97827 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
97828 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
97829 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
97830 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
97831 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
97832 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
97833 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
97834 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
97835 END DO
97836 buffer2 = 0.0_dp
97837 imax = 9*10*15
97838 kmax = 10
97839 DO i = 1, imax
97840 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
97841 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
97842 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
97843 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
97844 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
97845 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
97846 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
97847 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
97848 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
97849 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
97850 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
97851 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
97852 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
97853 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
97854 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
97855 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
97856 END DO
97857 buffer1 = 0.0_dp
97858 imax = 9*7*15
97859 kmax = 10
97860 DO i = 1, imax
97861 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
97862 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
97863 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
97864 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
97865 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
97866 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
97867 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
97868 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
97869 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
97870 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
97871 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
97872 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
97873 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
97874 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
97875 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
97876 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
97877 END DO
97878 imax = 9*7*7
97879 kmax = 15
97880 i = 0
97881 DO i1 = 1, 7
97882 DO i2 = 1, 7
97883 DO i3 = 1, 9
97884 i = i + 1
97885 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
97886 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
97887 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
97888 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
97889 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
97890 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
97891 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
97892 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
97893 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
97894 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
97895 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
97896 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
97897 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
97898 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
97899 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
97900 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
97901 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
97902 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
97903 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
97904 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
97905 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
97906 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
97907 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
97908 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
97909 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
97910 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
97911 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
97912 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
97913 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
97914 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
97915 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
97916 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
97917 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
97918 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
97919 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
97920 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
97921 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
97922 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
97923 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
97924 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
97925 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
97926 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
97927 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
97928 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
97929 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
97930 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
97931 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
97932 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
97933 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
97934 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
97935 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
97936 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
97937 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
97938 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
97939 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
97940 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
97941 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
97942 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
97943 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
97944 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
97945 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
97946 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
97947 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
97948 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
97949 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
97950 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
97951 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
97952 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
97953 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
97954 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
97955 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
97956 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
97957 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
97958 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
97959 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
97960 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
97961 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
97962 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
97963 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
97964 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
97965 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
97966 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
97967 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
97968 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
97969 END DO
97970 END DO
97971 END DO
97972 s_offset_d1 = s_offset_d1 + 9
97973 END DO
97974 s_offset_c1 = s_offset_c1 + 7
97975 END DO
97976 s_offset_b1 = s_offset_b1 + 7
97977 END DO
97978 s_offset_a1 = s_offset_a1 + 9
97979 END DO
97980 END SUBROUTINE contract_gffg
97981#endif
97982#if __MAX_CONTR > 4 || __MAX_CONTR == 4
97983! **************************************************************************************************
97984!> \brief ...
97985!> \param work ...
97986!> \param nl_a ...
97987!> \param nl_b ...
97988!> \param nl_c ...
97989!> \param nl_d ...
97990!> \param sphi_a ...
97991!> \param sphi_b ...
97992!> \param sphi_c ...
97993!> \param sphi_d ...
97994!> \param primitives ...
97995!> \param buffer1 ...
97996!> \param buffer2 ...
97997! **************************************************************************************************
97998 SUBROUTINE contract_gfgs(work, &
97999 nl_a, nl_b, nl_c, nl_d, &
98000 sphi_a, sphi_b, sphi_c, sphi_d, &
98001 primitives, &
98002 buffer1, buffer2)
98003 REAL(dp), DIMENSION(15*10*15*1), INTENT(IN) :: work
98004 INTEGER :: nl_a, nl_b, nl_c, nl_d
98005 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
98006 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
98007 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
98008 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
98009 REAL(dp), &
98010 DIMENSION(9*nl_a, 7*nl_b, 9*nl_c, 1*nl_d) :: primitives
98011 REAL(dp), DIMENSION(15*10*15*1) :: buffer1, buffer2
98012
98013 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
98014 kmax, s_offset_a1, s_offset_b1, &
98015 s_offset_c1, s_offset_d1
98016
98017 s_offset_a1 = 0
98018 DO ia = 1, nl_a
98019 s_offset_b1 = 0
98020 DO ib = 1, nl_b
98021 s_offset_c1 = 0
98022 DO ic = 1, nl_c
98023 s_offset_d1 = 0
98024 DO id = 1, nl_d
98025 buffer1 = 0.0_dp
98026 imax = 10*15*1
98027 kmax = 15
98028 DO i = 1, imax
98029 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
98030 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
98031 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
98032 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
98033 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
98034 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
98035 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
98036 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
98037 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
98038 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
98039 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
98040 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
98041 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
98042 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
98043 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
98044 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
98045 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
98046 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
98047 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
98048 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
98049 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
98050 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
98051 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
98052 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
98053 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
98054 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
98055 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
98056 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
98057 END DO
98058 buffer2 = 0.0_dp
98059 imax = 9*15*1
98060 kmax = 10
98061 DO i = 1, imax
98062 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
98063 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
98064 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
98065 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
98066 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
98067 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
98068 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
98069 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
98070 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
98071 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
98072 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
98073 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
98074 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
98075 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
98076 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
98077 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
98078 END DO
98079 buffer1 = 0.0_dp
98080 imax = 9*7*1
98081 kmax = 15
98082 DO i = 1, imax
98083 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
98084 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
98085 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
98086 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
98087 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
98088 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
98089 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
98090 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
98091 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
98092 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
98093 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
98094 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
98095 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
98096 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
98097 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
98098 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
98099 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
98100 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
98101 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
98102 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
98103 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
98104 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
98105 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
98106 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
98107 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
98108 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
98109 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
98110 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
98111 END DO
98112 imax = 9*7*9
98113 kmax = 1
98114 i = 0
98115 DO i1 = 1, 9
98116 DO i2 = 1, 7
98117 DO i3 = 1, 9
98118 i = i + 1
98119 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
98120 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
98121 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
98122 END DO
98123 END DO
98124 END DO
98125 s_offset_d1 = s_offset_d1 + 1
98126 END DO
98127 s_offset_c1 = s_offset_c1 + 9
98128 END DO
98129 s_offset_b1 = s_offset_b1 + 7
98130 END DO
98131 s_offset_a1 = s_offset_a1 + 9
98132 END DO
98133 END SUBROUTINE contract_gfgs
98134#endif
98135#if __MAX_CONTR > 4 || __MAX_CONTR == 4
98136! **************************************************************************************************
98137!> \brief ...
98138!> \param work ...
98139!> \param nl_a ...
98140!> \param nl_b ...
98141!> \param nl_c ...
98142!> \param nl_d ...
98143!> \param sphi_a ...
98144!> \param sphi_b ...
98145!> \param sphi_c ...
98146!> \param sphi_d ...
98147!> \param primitives ...
98148!> \param buffer1 ...
98149!> \param buffer2 ...
98150! **************************************************************************************************
98151 SUBROUTINE contract_gfgp(work, &
98152 nl_a, nl_b, nl_c, nl_d, &
98153 sphi_a, sphi_b, sphi_c, sphi_d, &
98154 primitives, &
98155 buffer1, buffer2)
98156 REAL(dp), DIMENSION(15*10*15*3), INTENT(IN) :: work
98157 INTEGER :: nl_a, nl_b, nl_c, nl_d
98158 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
98159 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
98160 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
98161 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
98162 REAL(dp), &
98163 DIMENSION(9*nl_a, 7*nl_b, 9*nl_c, 3*nl_d) :: primitives
98164 REAL(dp), DIMENSION(15*10*15*3) :: buffer1, buffer2
98165
98166 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
98167 kmax, s_offset_a1, s_offset_b1, &
98168 s_offset_c1, s_offset_d1
98169
98170 s_offset_a1 = 0
98171 DO ia = 1, nl_a
98172 s_offset_b1 = 0
98173 DO ib = 1, nl_b
98174 s_offset_c1 = 0
98175 DO ic = 1, nl_c
98176 s_offset_d1 = 0
98177 DO id = 1, nl_d
98178 buffer1 = 0.0_dp
98179 imax = 10*15*3
98180 kmax = 15
98181 DO i = 1, imax
98182 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
98183 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
98184 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
98185 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
98186 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
98187 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
98188 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
98189 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
98190 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
98191 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
98192 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
98193 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
98194 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
98195 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
98196 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
98197 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
98198 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
98199 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
98200 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
98201 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
98202 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
98203 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
98204 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
98205 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
98206 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
98207 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
98208 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
98209 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
98210 END DO
98211 buffer2 = 0.0_dp
98212 imax = 9*15*3
98213 kmax = 10
98214 DO i = 1, imax
98215 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
98216 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
98217 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
98218 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
98219 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
98220 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
98221 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
98222 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
98223 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
98224 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
98225 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
98226 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
98227 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
98228 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
98229 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
98230 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
98231 END DO
98232 buffer1 = 0.0_dp
98233 imax = 9*7*3
98234 kmax = 15
98235 DO i = 1, imax
98236 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
98237 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
98238 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
98239 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
98240 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
98241 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
98242 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
98243 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
98244 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
98245 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
98246 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
98247 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
98248 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
98249 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
98250 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
98251 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
98252 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
98253 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
98254 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
98255 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
98256 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
98257 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
98258 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
98259 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
98260 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
98261 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
98262 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
98263 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
98264 END DO
98265 imax = 9*7*9
98266 kmax = 3
98267 i = 0
98268 DO i1 = 1, 9
98269 DO i2 = 1, 7
98270 DO i3 = 1, 9
98271 i = i + 1
98272 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
98273 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
98274 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
98275 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
98276 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
98277 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
98278 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
98279 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
98280 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
98281 END DO
98282 END DO
98283 END DO
98284 s_offset_d1 = s_offset_d1 + 3
98285 END DO
98286 s_offset_c1 = s_offset_c1 + 9
98287 END DO
98288 s_offset_b1 = s_offset_b1 + 7
98289 END DO
98290 s_offset_a1 = s_offset_a1 + 9
98291 END DO
98292 END SUBROUTINE contract_gfgp
98293#endif
98294#if __MAX_CONTR > 4 || __MAX_CONTR == 4
98295! **************************************************************************************************
98296!> \brief ...
98297!> \param work ...
98298!> \param nl_a ...
98299!> \param nl_b ...
98300!> \param nl_c ...
98301!> \param nl_d ...
98302!> \param sphi_a ...
98303!> \param sphi_b ...
98304!> \param sphi_c ...
98305!> \param sphi_d ...
98306!> \param primitives ...
98307!> \param buffer1 ...
98308!> \param buffer2 ...
98309! **************************************************************************************************
98310 SUBROUTINE contract_gfgd(work, &
98311 nl_a, nl_b, nl_c, nl_d, &
98312 sphi_a, sphi_b, sphi_c, sphi_d, &
98313 primitives, &
98314 buffer1, buffer2)
98315 REAL(dp), DIMENSION(15*10*15*6), INTENT(IN) :: work
98316 INTEGER :: nl_a, nl_b, nl_c, nl_d
98317 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
98318 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
98319 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
98320 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
98321 REAL(dp), &
98322 DIMENSION(9*nl_a, 7*nl_b, 9*nl_c, 5*nl_d) :: primitives
98323 REAL(dp), DIMENSION(15*10*15*6) :: buffer1, buffer2
98324
98325 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
98326 kmax, s_offset_a1, s_offset_b1, &
98327 s_offset_c1, s_offset_d1
98328
98329 s_offset_a1 = 0
98330 DO ia = 1, nl_a
98331 s_offset_b1 = 0
98332 DO ib = 1, nl_b
98333 s_offset_c1 = 0
98334 DO ic = 1, nl_c
98335 s_offset_d1 = 0
98336 DO id = 1, nl_d
98337 buffer1 = 0.0_dp
98338 imax = 10*15*6
98339 kmax = 15
98340 DO i = 1, imax
98341 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
98342 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
98343 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
98344 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
98345 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
98346 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
98347 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
98348 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
98349 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
98350 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
98351 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
98352 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
98353 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
98354 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
98355 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
98356 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
98357 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
98358 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
98359 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
98360 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
98361 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
98362 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
98363 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
98364 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
98365 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
98366 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
98367 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
98368 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
98369 END DO
98370 buffer2 = 0.0_dp
98371 imax = 9*15*6
98372 kmax = 10
98373 DO i = 1, imax
98374 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
98375 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
98376 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
98377 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
98378 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
98379 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
98380 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
98381 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
98382 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
98383 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
98384 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
98385 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
98386 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
98387 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
98388 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
98389 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
98390 END DO
98391 buffer1 = 0.0_dp
98392 imax = 9*7*6
98393 kmax = 15
98394 DO i = 1, imax
98395 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
98396 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
98397 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
98398 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
98399 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
98400 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
98401 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
98402 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
98403 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
98404 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
98405 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
98406 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
98407 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
98408 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
98409 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
98410 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
98411 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
98412 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
98413 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
98414 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
98415 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
98416 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
98417 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
98418 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
98419 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
98420 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
98421 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
98422 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
98423 END DO
98424 imax = 9*7*9
98425 kmax = 6
98426 i = 0
98427 DO i1 = 1, 9
98428 DO i2 = 1, 7
98429 DO i3 = 1, 9
98430 i = i + 1
98431 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
98432 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
98433 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
98434 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
98435 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
98436 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
98437 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
98438 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
98439 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
98440 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
98441 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
98442 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
98443 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
98444 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
98445 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
98446 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
98447 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
98448 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
98449 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
98450 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
98451 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
98452 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
98453 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
98454 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
98455 END DO
98456 END DO
98457 END DO
98458 s_offset_d1 = s_offset_d1 + 5
98459 END DO
98460 s_offset_c1 = s_offset_c1 + 9
98461 END DO
98462 s_offset_b1 = s_offset_b1 + 7
98463 END DO
98464 s_offset_a1 = s_offset_a1 + 9
98465 END DO
98466 END SUBROUTINE contract_gfgd
98467#endif
98468#if __MAX_CONTR > 4 || __MAX_CONTR == 4
98469! **************************************************************************************************
98470!> \brief ...
98471!> \param work ...
98472!> \param nl_a ...
98473!> \param nl_b ...
98474!> \param nl_c ...
98475!> \param nl_d ...
98476!> \param sphi_a ...
98477!> \param sphi_b ...
98478!> \param sphi_c ...
98479!> \param sphi_d ...
98480!> \param primitives ...
98481!> \param buffer1 ...
98482!> \param buffer2 ...
98483! **************************************************************************************************
98484 SUBROUTINE contract_gfgf(work, &
98485 nl_a, nl_b, nl_c, nl_d, &
98486 sphi_a, sphi_b, sphi_c, sphi_d, &
98487 primitives, &
98488 buffer1, buffer2)
98489 REAL(dp), DIMENSION(15*10*15*10), INTENT(IN) :: work
98490 INTEGER :: nl_a, nl_b, nl_c, nl_d
98491 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
98492 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
98493 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
98494 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
98495 REAL(dp), &
98496 DIMENSION(9*nl_a, 7*nl_b, 9*nl_c, 7*nl_d) :: primitives
98497 REAL(dp), DIMENSION(15*10*15*10) :: buffer1, buffer2
98498
98499 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
98500 kmax, s_offset_a1, s_offset_b1, &
98501 s_offset_c1, s_offset_d1
98502
98503 s_offset_a1 = 0
98504 DO ia = 1, nl_a
98505 s_offset_b1 = 0
98506 DO ib = 1, nl_b
98507 s_offset_c1 = 0
98508 DO ic = 1, nl_c
98509 s_offset_d1 = 0
98510 DO id = 1, nl_d
98511 buffer1 = 0.0_dp
98512 imax = 10*15*10
98513 kmax = 15
98514 DO i = 1, imax
98515 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
98516 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
98517 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
98518 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
98519 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
98520 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
98521 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
98522 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
98523 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
98524 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
98525 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
98526 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
98527 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
98528 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
98529 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
98530 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
98531 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
98532 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
98533 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
98534 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
98535 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
98536 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
98537 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
98538 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
98539 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
98540 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
98541 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
98542 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
98543 END DO
98544 buffer2 = 0.0_dp
98545 imax = 9*15*10
98546 kmax = 10
98547 DO i = 1, imax
98548 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
98549 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
98550 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
98551 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
98552 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
98553 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
98554 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
98555 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
98556 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
98557 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
98558 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
98559 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
98560 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
98561 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
98562 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
98563 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
98564 END DO
98565 buffer1 = 0.0_dp
98566 imax = 9*7*10
98567 kmax = 15
98568 DO i = 1, imax
98569 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
98570 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
98571 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
98572 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
98573 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
98574 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
98575 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
98576 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
98577 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
98578 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
98579 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
98580 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
98581 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
98582 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
98583 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
98584 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
98585 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
98586 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
98587 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
98588 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
98589 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
98590 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
98591 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
98592 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
98593 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
98594 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
98595 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
98596 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
98597 END DO
98598 imax = 9*7*9
98599 kmax = 10
98600 i = 0
98601 DO i1 = 1, 9
98602 DO i2 = 1, 7
98603 DO i3 = 1, 9
98604 i = i + 1
98605 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
98606 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
98607 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
98608 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
98609 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
98610 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
98611 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
98612 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
98613 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
98614 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
98615 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
98616 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
98617 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
98618 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
98619 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
98620 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
98621 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
98622 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
98623 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
98624 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
98625 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
98626 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
98627 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
98628 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
98629 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
98630 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
98631 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
98632 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
98633 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
98634 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
98635 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
98636 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
98637 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
98638 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
98639 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
98640 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
98641 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
98642 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
98643 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
98644 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
98645 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
98646 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
98647 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
98648 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
98649 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
98650 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
98651 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
98652 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
98653 END DO
98654 END DO
98655 END DO
98656 s_offset_d1 = s_offset_d1 + 7
98657 END DO
98658 s_offset_c1 = s_offset_c1 + 9
98659 END DO
98660 s_offset_b1 = s_offset_b1 + 7
98661 END DO
98662 s_offset_a1 = s_offset_a1 + 9
98663 END DO
98664 END SUBROUTINE contract_gfgf
98665#endif
98666#if __MAX_CONTR > 4 || __MAX_CONTR == 4
98667! **************************************************************************************************
98668!> \brief ...
98669!> \param work ...
98670!> \param nl_a ...
98671!> \param nl_b ...
98672!> \param nl_c ...
98673!> \param nl_d ...
98674!> \param sphi_a ...
98675!> \param sphi_b ...
98676!> \param sphi_c ...
98677!> \param sphi_d ...
98678!> \param primitives ...
98679!> \param buffer1 ...
98680!> \param buffer2 ...
98681! **************************************************************************************************
98682 SUBROUTINE contract_gfgg(work, &
98683 nl_a, nl_b, nl_c, nl_d, &
98684 sphi_a, sphi_b, sphi_c, sphi_d, &
98685 primitives, &
98686 buffer1, buffer2)
98687 REAL(dp), DIMENSION(15*10*15*15), INTENT(IN) :: work
98688 INTEGER :: nl_a, nl_b, nl_c, nl_d
98689 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
98690 REAL(dp), DIMENSION(10, 7*nl_b), INTENT(IN) :: sphi_b
98691 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
98692 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
98693 REAL(dp), &
98694 DIMENSION(9*nl_a, 7*nl_b, 9*nl_c, 9*nl_d) :: primitives
98695 REAL(dp), DIMENSION(15*10*15*15) :: buffer1, buffer2
98696
98697 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
98698 kmax, s_offset_a1, s_offset_b1, &
98699 s_offset_c1, s_offset_d1
98700
98701 s_offset_a1 = 0
98702 DO ia = 1, nl_a
98703 s_offset_b1 = 0
98704 DO ib = 1, nl_b
98705 s_offset_c1 = 0
98706 DO ic = 1, nl_c
98707 s_offset_d1 = 0
98708 DO id = 1, nl_d
98709 buffer1 = 0.0_dp
98710 imax = 10*15*15
98711 kmax = 15
98712 DO i = 1, imax
98713 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
98714 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
98715 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
98716 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
98717 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
98718 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
98719 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
98720 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
98721 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
98722 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
98723 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
98724 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
98725 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
98726 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
98727 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
98728 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
98729 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
98730 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
98731 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
98732 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
98733 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
98734 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
98735 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
98736 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
98737 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
98738 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
98739 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
98740 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
98741 END DO
98742 buffer2 = 0.0_dp
98743 imax = 9*15*15
98744 kmax = 10
98745 DO i = 1, imax
98746 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
98747 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
98748 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
98749 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
98750 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
98751 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
98752 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
98753 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
98754 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
98755 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
98756 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
98757 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
98758 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
98759 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
98760 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
98761 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
98762 END DO
98763 buffer1 = 0.0_dp
98764 imax = 9*7*15
98765 kmax = 15
98766 DO i = 1, imax
98767 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
98768 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
98769 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
98770 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
98771 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
98772 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
98773 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
98774 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
98775 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
98776 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
98777 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
98778 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
98779 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
98780 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
98781 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
98782 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
98783 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
98784 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
98785 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
98786 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
98787 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
98788 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
98789 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
98790 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
98791 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
98792 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
98793 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
98794 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
98795 END DO
98796 imax = 9*7*9
98797 kmax = 15
98798 i = 0
98799 DO i1 = 1, 9
98800 DO i2 = 1, 7
98801 DO i3 = 1, 9
98802 i = i + 1
98803 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
98804 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
98805 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
98806 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
98807 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
98808 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
98809 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
98810 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
98811 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
98812 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
98813 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
98814 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
98815 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
98816 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
98817 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
98818 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
98819 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
98820 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
98821 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
98822 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
98823 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
98824 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
98825 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
98826 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
98827 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
98828 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
98829 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
98830 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
98831 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
98832 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
98833 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
98834 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
98835 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
98836 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
98837 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
98838 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
98839 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
98840 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
98841 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
98842 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
98843 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
98844 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
98845 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
98846 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
98847 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
98848 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
98849 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
98850 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
98851 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
98852 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
98853 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
98854 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
98855 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
98856 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
98857 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
98858 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
98859 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
98860 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
98861 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
98862 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
98863 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
98864 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
98865 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
98866 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
98867 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
98868 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
98869 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
98870 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
98871 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
98872 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
98873 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
98874 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
98875 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
98876 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
98877 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
98878 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
98879 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
98880 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
98881 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
98882 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
98883 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
98884 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
98885 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
98886 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
98887 END DO
98888 END DO
98889 END DO
98890 s_offset_d1 = s_offset_d1 + 9
98891 END DO
98892 s_offset_c1 = s_offset_c1 + 9
98893 END DO
98894 s_offset_b1 = s_offset_b1 + 7
98895 END DO
98896 s_offset_a1 = s_offset_a1 + 9
98897 END DO
98898 END SUBROUTINE contract_gfgg
98899#endif
98900#if __MAX_CONTR > 4 || __MAX_CONTR == 4
98901! **************************************************************************************************
98902!> \brief ...
98903!> \param work ...
98904!> \param nl_a ...
98905!> \param nl_b ...
98906!> \param nl_c ...
98907!> \param nl_d ...
98908!> \param sphi_a ...
98909!> \param sphi_b ...
98910!> \param sphi_c ...
98911!> \param sphi_d ...
98912!> \param primitives ...
98913!> \param buffer1 ...
98914!> \param buffer2 ...
98915! **************************************************************************************************
98916 SUBROUTINE contract_ggss(work, &
98917 nl_a, nl_b, nl_c, nl_d, &
98918 sphi_a, sphi_b, sphi_c, sphi_d, &
98919 primitives, &
98920 buffer1, buffer2)
98921 REAL(dp), DIMENSION(15*15*1*1), INTENT(IN) :: work
98922 INTEGER :: nl_a, nl_b, nl_c, nl_d
98923 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
98924 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
98925 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
98926 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
98927 REAL(dp), &
98928 DIMENSION(9*nl_a, 9*nl_b, 1*nl_c, 1*nl_d) :: primitives
98929 REAL(dp), DIMENSION(15*15*1*1) :: buffer1, buffer2
98930
98931 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
98932 kmax, s_offset_a1, s_offset_b1, &
98933 s_offset_c1, s_offset_d1
98934
98935 s_offset_a1 = 0
98936 DO ia = 1, nl_a
98937 s_offset_b1 = 0
98938 DO ib = 1, nl_b
98939 s_offset_c1 = 0
98940 DO ic = 1, nl_c
98941 s_offset_d1 = 0
98942 DO id = 1, nl_d
98943 buffer1 = 0.0_dp
98944 imax = 15*1*1
98945 kmax = 15
98946 DO i = 1, imax
98947 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
98948 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
98949 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
98950 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
98951 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
98952 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
98953 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
98954 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
98955 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
98956 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
98957 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
98958 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
98959 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
98960 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
98961 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
98962 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
98963 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
98964 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
98965 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
98966 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
98967 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
98968 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
98969 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
98970 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
98971 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
98972 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
98973 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
98974 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
98975 END DO
98976 buffer2 = 0.0_dp
98977 imax = 9*1*1
98978 kmax = 15
98979 DO i = 1, imax
98980 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
98981 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
98982 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
98983 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
98984 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
98985 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
98986 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
98987 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
98988 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
98989 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
98990 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
98991 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
98992 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
98993 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
98994 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
98995 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
98996 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
98997 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
98998 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
98999 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
99000 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
99001 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
99002 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
99003 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
99004 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
99005 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
99006 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
99007 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
99008 END DO
99009 buffer1 = 0.0_dp
99010 imax = 9*9*1
99011 kmax = 1
99012 DO i = 1, imax
99013 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
99014 END DO
99015 imax = 9*9*1
99016 kmax = 1
99017 i = 0
99018 DO i1 = 1, 1
99019 DO i2 = 1, 9
99020 DO i3 = 1, 9
99021 i = i + 1
99022 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
99023 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
99024 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
99025 END DO
99026 END DO
99027 END DO
99028 s_offset_d1 = s_offset_d1 + 1
99029 END DO
99030 s_offset_c1 = s_offset_c1 + 1
99031 END DO
99032 s_offset_b1 = s_offset_b1 + 9
99033 END DO
99034 s_offset_a1 = s_offset_a1 + 9
99035 END DO
99036 END SUBROUTINE contract_ggss
99037#endif
99038#if __MAX_CONTR > 4 || __MAX_CONTR == 4
99039! **************************************************************************************************
99040!> \brief ...
99041!> \param work ...
99042!> \param nl_a ...
99043!> \param nl_b ...
99044!> \param nl_c ...
99045!> \param nl_d ...
99046!> \param sphi_a ...
99047!> \param sphi_b ...
99048!> \param sphi_c ...
99049!> \param sphi_d ...
99050!> \param primitives ...
99051!> \param buffer1 ...
99052!> \param buffer2 ...
99053! **************************************************************************************************
99054 SUBROUTINE contract_ggsp(work, &
99055 nl_a, nl_b, nl_c, nl_d, &
99056 sphi_a, sphi_b, sphi_c, sphi_d, &
99057 primitives, &
99058 buffer1, buffer2)
99059 REAL(dp), DIMENSION(15*15*1*3), INTENT(IN) :: work
99060 INTEGER :: nl_a, nl_b, nl_c, nl_d
99061 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
99062 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
99063 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
99064 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
99065 REAL(dp), &
99066 DIMENSION(9*nl_a, 9*nl_b, 1*nl_c, 3*nl_d) :: primitives
99067 REAL(dp), DIMENSION(15*15*1*3) :: buffer1, buffer2
99068
99069 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
99070 kmax, s_offset_a1, s_offset_b1, &
99071 s_offset_c1, s_offset_d1
99072
99073 s_offset_a1 = 0
99074 DO ia = 1, nl_a
99075 s_offset_b1 = 0
99076 DO ib = 1, nl_b
99077 s_offset_c1 = 0
99078 DO ic = 1, nl_c
99079 s_offset_d1 = 0
99080 DO id = 1, nl_d
99081 buffer1 = 0.0_dp
99082 imax = 15*1*3
99083 kmax = 15
99084 DO i = 1, imax
99085 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
99086 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
99087 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
99088 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
99089 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
99090 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
99091 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
99092 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
99093 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
99094 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
99095 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
99096 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
99097 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
99098 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
99099 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
99100 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
99101 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
99102 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
99103 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
99104 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
99105 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
99106 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
99107 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
99108 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
99109 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
99110 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
99111 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
99112 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
99113 END DO
99114 buffer2 = 0.0_dp
99115 imax = 9*1*3
99116 kmax = 15
99117 DO i = 1, imax
99118 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
99119 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
99120 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
99121 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
99122 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
99123 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
99124 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
99125 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
99126 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
99127 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
99128 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
99129 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
99130 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
99131 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
99132 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
99133 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
99134 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
99135 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
99136 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
99137 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
99138 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
99139 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
99140 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
99141 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
99142 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
99143 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
99144 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
99145 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
99146 END DO
99147 buffer1 = 0.0_dp
99148 imax = 9*9*3
99149 kmax = 1
99150 DO i = 1, imax
99151 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
99152 END DO
99153 imax = 9*9*1
99154 kmax = 3
99155 i = 0
99156 DO i1 = 1, 1
99157 DO i2 = 1, 9
99158 DO i3 = 1, 9
99159 i = i + 1
99160 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
99161 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
99162 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
99163 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
99164 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
99165 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
99166 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
99167 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
99168 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
99169 END DO
99170 END DO
99171 END DO
99172 s_offset_d1 = s_offset_d1 + 3
99173 END DO
99174 s_offset_c1 = s_offset_c1 + 1
99175 END DO
99176 s_offset_b1 = s_offset_b1 + 9
99177 END DO
99178 s_offset_a1 = s_offset_a1 + 9
99179 END DO
99180 END SUBROUTINE contract_ggsp
99181#endif
99182#if __MAX_CONTR > 4 || __MAX_CONTR == 4
99183! **************************************************************************************************
99184!> \brief ...
99185!> \param work ...
99186!> \param nl_a ...
99187!> \param nl_b ...
99188!> \param nl_c ...
99189!> \param nl_d ...
99190!> \param sphi_a ...
99191!> \param sphi_b ...
99192!> \param sphi_c ...
99193!> \param sphi_d ...
99194!> \param primitives ...
99195!> \param buffer1 ...
99196!> \param buffer2 ...
99197! **************************************************************************************************
99198 SUBROUTINE contract_ggsd(work, &
99199 nl_a, nl_b, nl_c, nl_d, &
99200 sphi_a, sphi_b, sphi_c, sphi_d, &
99201 primitives, &
99202 buffer1, buffer2)
99203 REAL(dp), DIMENSION(15*15*1*6), INTENT(IN) :: work
99204 INTEGER :: nl_a, nl_b, nl_c, nl_d
99205 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
99206 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
99207 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
99208 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
99209 REAL(dp), &
99210 DIMENSION(9*nl_a, 9*nl_b, 1*nl_c, 5*nl_d) :: primitives
99211 REAL(dp), DIMENSION(15*15*1*6) :: buffer1, buffer2
99212
99213 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
99214 kmax, s_offset_a1, s_offset_b1, &
99215 s_offset_c1, s_offset_d1
99216
99217 s_offset_a1 = 0
99218 DO ia = 1, nl_a
99219 s_offset_b1 = 0
99220 DO ib = 1, nl_b
99221 s_offset_c1 = 0
99222 DO ic = 1, nl_c
99223 s_offset_d1 = 0
99224 DO id = 1, nl_d
99225 buffer1 = 0.0_dp
99226 imax = 15*1*6
99227 kmax = 15
99228 DO i = 1, imax
99229 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
99230 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
99231 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
99232 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
99233 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
99234 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
99235 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
99236 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
99237 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
99238 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
99239 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
99240 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
99241 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
99242 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
99243 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
99244 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
99245 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
99246 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
99247 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
99248 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
99249 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
99250 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
99251 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
99252 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
99253 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
99254 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
99255 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
99256 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
99257 END DO
99258 buffer2 = 0.0_dp
99259 imax = 9*1*6
99260 kmax = 15
99261 DO i = 1, imax
99262 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
99263 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
99264 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
99265 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
99266 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
99267 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
99268 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
99269 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
99270 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
99271 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
99272 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
99273 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
99274 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
99275 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
99276 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
99277 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
99278 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
99279 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
99280 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
99281 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
99282 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
99283 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
99284 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
99285 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
99286 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
99287 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
99288 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
99289 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
99290 END DO
99291 buffer1 = 0.0_dp
99292 imax = 9*9*6
99293 kmax = 1
99294 DO i = 1, imax
99295 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
99296 END DO
99297 imax = 9*9*1
99298 kmax = 6
99299 i = 0
99300 DO i1 = 1, 1
99301 DO i2 = 1, 9
99302 DO i3 = 1, 9
99303 i = i + 1
99304 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
99305 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
99306 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
99307 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
99308 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
99309 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
99310 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
99311 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
99312 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
99313 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
99314 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
99315 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
99316 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
99317 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
99318 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
99319 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
99320 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
99321 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
99322 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
99323 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
99324 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
99325 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
99326 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
99327 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
99328 END DO
99329 END DO
99330 END DO
99331 s_offset_d1 = s_offset_d1 + 5
99332 END DO
99333 s_offset_c1 = s_offset_c1 + 1
99334 END DO
99335 s_offset_b1 = s_offset_b1 + 9
99336 END DO
99337 s_offset_a1 = s_offset_a1 + 9
99338 END DO
99339 END SUBROUTINE contract_ggsd
99340#endif
99341#if __MAX_CONTR > 4 || __MAX_CONTR == 4
99342! **************************************************************************************************
99343!> \brief ...
99344!> \param work ...
99345!> \param nl_a ...
99346!> \param nl_b ...
99347!> \param nl_c ...
99348!> \param nl_d ...
99349!> \param sphi_a ...
99350!> \param sphi_b ...
99351!> \param sphi_c ...
99352!> \param sphi_d ...
99353!> \param primitives ...
99354!> \param buffer1 ...
99355!> \param buffer2 ...
99356! **************************************************************************************************
99357 SUBROUTINE contract_ggsf(work, &
99358 nl_a, nl_b, nl_c, nl_d, &
99359 sphi_a, sphi_b, sphi_c, sphi_d, &
99360 primitives, &
99361 buffer1, buffer2)
99362 REAL(dp), DIMENSION(15*15*1*10), INTENT(IN) :: work
99363 INTEGER :: nl_a, nl_b, nl_c, nl_d
99364 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
99365 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
99366 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
99367 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
99368 REAL(dp), &
99369 DIMENSION(9*nl_a, 9*nl_b, 1*nl_c, 7*nl_d) :: primitives
99370 REAL(dp), DIMENSION(15*15*1*10) :: buffer1, buffer2
99371
99372 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
99373 kmax, s_offset_a1, s_offset_b1, &
99374 s_offset_c1, s_offset_d1
99375
99376 s_offset_a1 = 0
99377 DO ia = 1, nl_a
99378 s_offset_b1 = 0
99379 DO ib = 1, nl_b
99380 s_offset_c1 = 0
99381 DO ic = 1, nl_c
99382 s_offset_d1 = 0
99383 DO id = 1, nl_d
99384 buffer1 = 0.0_dp
99385 imax = 15*1*10
99386 kmax = 15
99387 DO i = 1, imax
99388 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
99389 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
99390 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
99391 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
99392 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
99393 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
99394 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
99395 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
99396 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
99397 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
99398 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
99399 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
99400 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
99401 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
99402 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
99403 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
99404 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
99405 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
99406 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
99407 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
99408 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
99409 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
99410 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
99411 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
99412 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
99413 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
99414 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
99415 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
99416 END DO
99417 buffer2 = 0.0_dp
99418 imax = 9*1*10
99419 kmax = 15
99420 DO i = 1, imax
99421 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
99422 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
99423 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
99424 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
99425 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
99426 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
99427 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
99428 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
99429 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
99430 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
99431 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
99432 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
99433 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
99434 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
99435 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
99436 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
99437 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
99438 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
99439 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
99440 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
99441 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
99442 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
99443 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
99444 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
99445 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
99446 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
99447 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
99448 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
99449 END DO
99450 buffer1 = 0.0_dp
99451 imax = 9*9*10
99452 kmax = 1
99453 DO i = 1, imax
99454 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
99455 END DO
99456 imax = 9*9*1
99457 kmax = 10
99458 i = 0
99459 DO i1 = 1, 1
99460 DO i2 = 1, 9
99461 DO i3 = 1, 9
99462 i = i + 1
99463 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
99464 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
99465 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
99466 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
99467 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
99468 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
99469 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
99470 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
99471 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
99472 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
99473 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
99474 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
99475 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
99476 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
99477 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
99478 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
99479 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
99480 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
99481 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
99482 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
99483 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
99484 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
99485 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
99486 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
99487 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
99488 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
99489 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
99490 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
99491 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
99492 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
99493 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
99494 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
99495 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
99496 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
99497 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
99498 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
99499 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
99500 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
99501 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
99502 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
99503 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
99504 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
99505 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
99506 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
99507 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
99508 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
99509 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
99510 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
99511 END DO
99512 END DO
99513 END DO
99514 s_offset_d1 = s_offset_d1 + 7
99515 END DO
99516 s_offset_c1 = s_offset_c1 + 1
99517 END DO
99518 s_offset_b1 = s_offset_b1 + 9
99519 END DO
99520 s_offset_a1 = s_offset_a1 + 9
99521 END DO
99522 END SUBROUTINE contract_ggsf
99523#endif
99524#if __MAX_CONTR > 4 || __MAX_CONTR == 4
99525! **************************************************************************************************
99526!> \brief ...
99527!> \param work ...
99528!> \param nl_a ...
99529!> \param nl_b ...
99530!> \param nl_c ...
99531!> \param nl_d ...
99532!> \param sphi_a ...
99533!> \param sphi_b ...
99534!> \param sphi_c ...
99535!> \param sphi_d ...
99536!> \param primitives ...
99537!> \param buffer1 ...
99538!> \param buffer2 ...
99539! **************************************************************************************************
99540 SUBROUTINE contract_ggsg(work, &
99541 nl_a, nl_b, nl_c, nl_d, &
99542 sphi_a, sphi_b, sphi_c, sphi_d, &
99543 primitives, &
99544 buffer1, buffer2)
99545 REAL(dp), DIMENSION(15*15*1*15), INTENT(IN) :: work
99546 INTEGER :: nl_a, nl_b, nl_c, nl_d
99547 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
99548 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
99549 REAL(dp), DIMENSION(1, 1*nl_c), INTENT(IN) :: sphi_c
99550 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
99551 REAL(dp), &
99552 DIMENSION(9*nl_a, 9*nl_b, 1*nl_c, 9*nl_d) :: primitives
99553 REAL(dp), DIMENSION(15*15*1*15) :: buffer1, buffer2
99554
99555 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
99556 kmax, s_offset_a1, s_offset_b1, &
99557 s_offset_c1, s_offset_d1
99558
99559 s_offset_a1 = 0
99560 DO ia = 1, nl_a
99561 s_offset_b1 = 0
99562 DO ib = 1, nl_b
99563 s_offset_c1 = 0
99564 DO ic = 1, nl_c
99565 s_offset_d1 = 0
99566 DO id = 1, nl_d
99567 buffer1 = 0.0_dp
99568 imax = 15*1*15
99569 kmax = 15
99570 DO i = 1, imax
99571 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
99572 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
99573 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
99574 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
99575 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
99576 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
99577 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
99578 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
99579 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
99580 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
99581 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
99582 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
99583 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
99584 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
99585 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
99586 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
99587 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
99588 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
99589 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
99590 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
99591 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
99592 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
99593 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
99594 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
99595 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
99596 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
99597 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
99598 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
99599 END DO
99600 buffer2 = 0.0_dp
99601 imax = 9*1*15
99602 kmax = 15
99603 DO i = 1, imax
99604 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
99605 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
99606 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
99607 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
99608 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
99609 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
99610 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
99611 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
99612 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
99613 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
99614 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
99615 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
99616 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
99617 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
99618 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
99619 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
99620 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
99621 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
99622 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
99623 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
99624 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
99625 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
99626 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
99627 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
99628 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
99629 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
99630 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
99631 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
99632 END DO
99633 buffer1 = 0.0_dp
99634 imax = 9*9*15
99635 kmax = 1
99636 DO i = 1, imax
99637 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
99638 END DO
99639 imax = 9*9*1
99640 kmax = 15
99641 i = 0
99642 DO i1 = 1, 1
99643 DO i2 = 1, 9
99644 DO i3 = 1, 9
99645 i = i + 1
99646 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
99647 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
99648 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
99649 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
99650 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
99651 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
99652 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
99653 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
99654 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
99655 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
99656 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
99657 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
99658 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
99659 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
99660 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
99661 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
99662 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
99663 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
99664 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
99665 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
99666 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
99667 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
99668 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
99669 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
99670 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
99671 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
99672 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
99673 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
99674 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
99675 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
99676 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
99677 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
99678 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
99679 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
99680 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
99681 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
99682 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
99683 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
99684 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
99685 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
99686 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
99687 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
99688 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
99689 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
99690 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
99691 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
99692 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
99693 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
99694 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
99695 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
99696 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
99697 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
99698 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
99699 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
99700 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
99701 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
99702 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
99703 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
99704 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
99705 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
99706 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
99707 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
99708 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
99709 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
99710 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
99711 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
99712 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
99713 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
99714 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
99715 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
99716 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
99717 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
99718 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
99719 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
99720 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
99721 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
99722 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
99723 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
99724 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
99725 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
99726 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
99727 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
99728 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
99729 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
99730 END DO
99731 END DO
99732 END DO
99733 s_offset_d1 = s_offset_d1 + 9
99734 END DO
99735 s_offset_c1 = s_offset_c1 + 1
99736 END DO
99737 s_offset_b1 = s_offset_b1 + 9
99738 END DO
99739 s_offset_a1 = s_offset_a1 + 9
99740 END DO
99741 END SUBROUTINE contract_ggsg
99742#endif
99743#if __MAX_CONTR > 4 || __MAX_CONTR == 4
99744! **************************************************************************************************
99745!> \brief ...
99746!> \param work ...
99747!> \param nl_a ...
99748!> \param nl_b ...
99749!> \param nl_c ...
99750!> \param nl_d ...
99751!> \param sphi_a ...
99752!> \param sphi_b ...
99753!> \param sphi_c ...
99754!> \param sphi_d ...
99755!> \param primitives ...
99756!> \param buffer1 ...
99757!> \param buffer2 ...
99758! **************************************************************************************************
99759 SUBROUTINE contract_ggps(work, &
99760 nl_a, nl_b, nl_c, nl_d, &
99761 sphi_a, sphi_b, sphi_c, sphi_d, &
99762 primitives, &
99763 buffer1, buffer2)
99764 REAL(dp), DIMENSION(15*15*3*1), INTENT(IN) :: work
99765 INTEGER :: nl_a, nl_b, nl_c, nl_d
99766 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
99767 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
99768 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
99769 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
99770 REAL(dp), &
99771 DIMENSION(9*nl_a, 9*nl_b, 3*nl_c, 1*nl_d) :: primitives
99772 REAL(dp), DIMENSION(15*15*3*1) :: buffer1, buffer2
99773
99774 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
99775 kmax, s_offset_a1, s_offset_b1, &
99776 s_offset_c1, s_offset_d1
99777
99778 s_offset_a1 = 0
99779 DO ia = 1, nl_a
99780 s_offset_b1 = 0
99781 DO ib = 1, nl_b
99782 s_offset_c1 = 0
99783 DO ic = 1, nl_c
99784 s_offset_d1 = 0
99785 DO id = 1, nl_d
99786 buffer1 = 0.0_dp
99787 imax = 15*3*1
99788 kmax = 15
99789 DO i = 1, imax
99790 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
99791 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
99792 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
99793 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
99794 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
99795 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
99796 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
99797 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
99798 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
99799 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
99800 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
99801 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
99802 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
99803 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
99804 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
99805 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
99806 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
99807 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
99808 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
99809 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
99810 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
99811 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
99812 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
99813 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
99814 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
99815 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
99816 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
99817 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
99818 END DO
99819 buffer2 = 0.0_dp
99820 imax = 9*3*1
99821 kmax = 15
99822 DO i = 1, imax
99823 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
99824 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
99825 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
99826 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
99827 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
99828 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
99829 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
99830 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
99831 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
99832 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
99833 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
99834 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
99835 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
99836 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
99837 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
99838 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
99839 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
99840 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
99841 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
99842 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
99843 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
99844 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
99845 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
99846 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
99847 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
99848 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
99849 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
99850 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
99851 END DO
99852 buffer1 = 0.0_dp
99853 imax = 9*9*1
99854 kmax = 3
99855 DO i = 1, imax
99856 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
99857 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
99858 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
99859 END DO
99860 imax = 9*9*3
99861 kmax = 1
99862 i = 0
99863 DO i1 = 1, 3
99864 DO i2 = 1, 9
99865 DO i3 = 1, 9
99866 i = i + 1
99867 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
99868 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
99869 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
99870 END DO
99871 END DO
99872 END DO
99873 s_offset_d1 = s_offset_d1 + 1
99874 END DO
99875 s_offset_c1 = s_offset_c1 + 3
99876 END DO
99877 s_offset_b1 = s_offset_b1 + 9
99878 END DO
99879 s_offset_a1 = s_offset_a1 + 9
99880 END DO
99881 END SUBROUTINE contract_ggps
99882#endif
99883#if __MAX_CONTR > 4 || __MAX_CONTR == 4
99884! **************************************************************************************************
99885!> \brief ...
99886!> \param work ...
99887!> \param nl_a ...
99888!> \param nl_b ...
99889!> \param nl_c ...
99890!> \param nl_d ...
99891!> \param sphi_a ...
99892!> \param sphi_b ...
99893!> \param sphi_c ...
99894!> \param sphi_d ...
99895!> \param primitives ...
99896!> \param buffer1 ...
99897!> \param buffer2 ...
99898! **************************************************************************************************
99899 SUBROUTINE contract_ggpp(work, &
99900 nl_a, nl_b, nl_c, nl_d, &
99901 sphi_a, sphi_b, sphi_c, sphi_d, &
99902 primitives, &
99903 buffer1, buffer2)
99904 REAL(dp), DIMENSION(15*15*3*3), INTENT(IN) :: work
99905 INTEGER :: nl_a, nl_b, nl_c, nl_d
99906 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
99907 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
99908 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
99909 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
99910 REAL(dp), &
99911 DIMENSION(9*nl_a, 9*nl_b, 3*nl_c, 3*nl_d) :: primitives
99912 REAL(dp), DIMENSION(15*15*3*3) :: buffer1, buffer2
99913
99914 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
99915 kmax, s_offset_a1, s_offset_b1, &
99916 s_offset_c1, s_offset_d1
99917
99918 s_offset_a1 = 0
99919 DO ia = 1, nl_a
99920 s_offset_b1 = 0
99921 DO ib = 1, nl_b
99922 s_offset_c1 = 0
99923 DO ic = 1, nl_c
99924 s_offset_d1 = 0
99925 DO id = 1, nl_d
99926 buffer1 = 0.0_dp
99927 imax = 15*3*3
99928 kmax = 15
99929 DO i = 1, imax
99930 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
99931 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
99932 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
99933 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
99934 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
99935 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
99936 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
99937 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
99938 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
99939 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
99940 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
99941 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
99942 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
99943 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
99944 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
99945 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
99946 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
99947 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
99948 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
99949 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
99950 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
99951 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
99952 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
99953 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
99954 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
99955 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
99956 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
99957 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
99958 END DO
99959 buffer2 = 0.0_dp
99960 imax = 9*3*3
99961 kmax = 15
99962 DO i = 1, imax
99963 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
99964 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
99965 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
99966 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
99967 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
99968 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
99969 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
99970 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
99971 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
99972 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
99973 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
99974 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
99975 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
99976 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
99977 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
99978 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
99979 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
99980 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
99981 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
99982 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
99983 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
99984 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
99985 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
99986 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
99987 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
99988 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
99989 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
99990 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
99991 END DO
99992 buffer1 = 0.0_dp
99993 imax = 9*9*3
99994 kmax = 3
99995 DO i = 1, imax
99996 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
99997 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
99998 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
99999 END DO
100000 imax = 9*9*3
100001 kmax = 3
100002 i = 0
100003 DO i1 = 1, 3
100004 DO i2 = 1, 9
100005 DO i3 = 1, 9
100006 i = i + 1
100007 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
100008 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
100009 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
100010 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
100011 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
100012 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
100013 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
100014 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
100015 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
100016 END DO
100017 END DO
100018 END DO
100019 s_offset_d1 = s_offset_d1 + 3
100020 END DO
100021 s_offset_c1 = s_offset_c1 + 3
100022 END DO
100023 s_offset_b1 = s_offset_b1 + 9
100024 END DO
100025 s_offset_a1 = s_offset_a1 + 9
100026 END DO
100027 END SUBROUTINE contract_ggpp
100028#endif
100029#if __MAX_CONTR > 4 || __MAX_CONTR == 4
100030! **************************************************************************************************
100031!> \brief ...
100032!> \param work ...
100033!> \param nl_a ...
100034!> \param nl_b ...
100035!> \param nl_c ...
100036!> \param nl_d ...
100037!> \param sphi_a ...
100038!> \param sphi_b ...
100039!> \param sphi_c ...
100040!> \param sphi_d ...
100041!> \param primitives ...
100042!> \param buffer1 ...
100043!> \param buffer2 ...
100044! **************************************************************************************************
100045 SUBROUTINE contract_ggpd(work, &
100046 nl_a, nl_b, nl_c, nl_d, &
100047 sphi_a, sphi_b, sphi_c, sphi_d, &
100048 primitives, &
100049 buffer1, buffer2)
100050 REAL(dp), DIMENSION(15*15*3*6), INTENT(IN) :: work
100051 INTEGER :: nl_a, nl_b, nl_c, nl_d
100052 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
100053 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
100054 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
100055 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
100056 REAL(dp), &
100057 DIMENSION(9*nl_a, 9*nl_b, 3*nl_c, 5*nl_d) :: primitives
100058 REAL(dp), DIMENSION(15*15*3*6) :: buffer1, buffer2
100059
100060 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
100061 kmax, s_offset_a1, s_offset_b1, &
100062 s_offset_c1, s_offset_d1
100063
100064 s_offset_a1 = 0
100065 DO ia = 1, nl_a
100066 s_offset_b1 = 0
100067 DO ib = 1, nl_b
100068 s_offset_c1 = 0
100069 DO ic = 1, nl_c
100070 s_offset_d1 = 0
100071 DO id = 1, nl_d
100072 buffer1 = 0.0_dp
100073 imax = 15*3*6
100074 kmax = 15
100075 DO i = 1, imax
100076 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
100077 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
100078 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
100079 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
100080 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
100081 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
100082 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
100083 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
100084 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
100085 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
100086 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
100087 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
100088 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
100089 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
100090 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
100091 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
100092 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
100093 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
100094 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
100095 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
100096 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
100097 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
100098 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
100099 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
100100 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
100101 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
100102 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
100103 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
100104 END DO
100105 buffer2 = 0.0_dp
100106 imax = 9*3*6
100107 kmax = 15
100108 DO i = 1, imax
100109 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
100110 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
100111 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
100112 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
100113 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
100114 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
100115 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
100116 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
100117 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
100118 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
100119 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
100120 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
100121 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
100122 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
100123 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
100124 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
100125 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
100126 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
100127 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
100128 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
100129 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
100130 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
100131 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
100132 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
100133 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
100134 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
100135 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
100136 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
100137 END DO
100138 buffer1 = 0.0_dp
100139 imax = 9*9*6
100140 kmax = 3
100141 DO i = 1, imax
100142 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
100143 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
100144 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
100145 END DO
100146 imax = 9*9*3
100147 kmax = 6
100148 i = 0
100149 DO i1 = 1, 3
100150 DO i2 = 1, 9
100151 DO i3 = 1, 9
100152 i = i + 1
100153 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
100154 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
100155 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
100156 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
100157 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
100158 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
100159 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
100160 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
100161 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
100162 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
100163 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
100164 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
100165 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
100166 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
100167 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
100168 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
100169 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
100170 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
100171 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
100172 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
100173 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
100174 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
100175 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
100176 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
100177 END DO
100178 END DO
100179 END DO
100180 s_offset_d1 = s_offset_d1 + 5
100181 END DO
100182 s_offset_c1 = s_offset_c1 + 3
100183 END DO
100184 s_offset_b1 = s_offset_b1 + 9
100185 END DO
100186 s_offset_a1 = s_offset_a1 + 9
100187 END DO
100188 END SUBROUTINE contract_ggpd
100189#endif
100190#if __MAX_CONTR > 4 || __MAX_CONTR == 4
100191! **************************************************************************************************
100192!> \brief ...
100193!> \param work ...
100194!> \param nl_a ...
100195!> \param nl_b ...
100196!> \param nl_c ...
100197!> \param nl_d ...
100198!> \param sphi_a ...
100199!> \param sphi_b ...
100200!> \param sphi_c ...
100201!> \param sphi_d ...
100202!> \param primitives ...
100203!> \param buffer1 ...
100204!> \param buffer2 ...
100205! **************************************************************************************************
100206 SUBROUTINE contract_ggpf(work, &
100207 nl_a, nl_b, nl_c, nl_d, &
100208 sphi_a, sphi_b, sphi_c, sphi_d, &
100209 primitives, &
100210 buffer1, buffer2)
100211 REAL(dp), DIMENSION(15*15*3*10), INTENT(IN) :: work
100212 INTEGER :: nl_a, nl_b, nl_c, nl_d
100213 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
100214 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
100215 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
100216 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
100217 REAL(dp), &
100218 DIMENSION(9*nl_a, 9*nl_b, 3*nl_c, 7*nl_d) :: primitives
100219 REAL(dp), DIMENSION(15*15*3*10) :: buffer1, buffer2
100220
100221 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
100222 kmax, s_offset_a1, s_offset_b1, &
100223 s_offset_c1, s_offset_d1
100224
100225 s_offset_a1 = 0
100226 DO ia = 1, nl_a
100227 s_offset_b1 = 0
100228 DO ib = 1, nl_b
100229 s_offset_c1 = 0
100230 DO ic = 1, nl_c
100231 s_offset_d1 = 0
100232 DO id = 1, nl_d
100233 buffer1 = 0.0_dp
100234 imax = 15*3*10
100235 kmax = 15
100236 DO i = 1, imax
100237 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
100238 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
100239 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
100240 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
100241 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
100242 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
100243 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
100244 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
100245 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
100246 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
100247 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
100248 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
100249 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
100250 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
100251 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
100252 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
100253 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
100254 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
100255 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
100256 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
100257 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
100258 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
100259 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
100260 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
100261 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
100262 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
100263 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
100264 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
100265 END DO
100266 buffer2 = 0.0_dp
100267 imax = 9*3*10
100268 kmax = 15
100269 DO i = 1, imax
100270 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
100271 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
100272 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
100273 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
100274 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
100275 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
100276 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
100277 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
100278 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
100279 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
100280 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
100281 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
100282 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
100283 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
100284 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
100285 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
100286 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
100287 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
100288 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
100289 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
100290 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
100291 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
100292 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
100293 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
100294 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
100295 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
100296 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
100297 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
100298 END DO
100299 buffer1 = 0.0_dp
100300 imax = 9*9*10
100301 kmax = 3
100302 DO i = 1, imax
100303 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
100304 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
100305 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
100306 END DO
100307 imax = 9*9*3
100308 kmax = 10
100309 i = 0
100310 DO i1 = 1, 3
100311 DO i2 = 1, 9
100312 DO i3 = 1, 9
100313 i = i + 1
100314 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
100315 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
100316 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
100317 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
100318 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
100319 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
100320 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
100321 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
100322 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
100323 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
100324 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
100325 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
100326 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
100327 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
100328 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
100329 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
100330 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
100331 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
100332 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
100333 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
100334 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
100335 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
100336 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
100337 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
100338 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
100339 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
100340 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
100341 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
100342 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
100343 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
100344 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
100345 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
100346 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
100347 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
100348 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
100349 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
100350 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
100351 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
100352 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
100353 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
100354 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
100355 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
100356 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
100357 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
100358 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
100359 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
100360 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
100361 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
100362 END DO
100363 END DO
100364 END DO
100365 s_offset_d1 = s_offset_d1 + 7
100366 END DO
100367 s_offset_c1 = s_offset_c1 + 3
100368 END DO
100369 s_offset_b1 = s_offset_b1 + 9
100370 END DO
100371 s_offset_a1 = s_offset_a1 + 9
100372 END DO
100373 END SUBROUTINE contract_ggpf
100374#endif
100375#if __MAX_CONTR > 4 || __MAX_CONTR == 4
100376! **************************************************************************************************
100377!> \brief ...
100378!> \param work ...
100379!> \param nl_a ...
100380!> \param nl_b ...
100381!> \param nl_c ...
100382!> \param nl_d ...
100383!> \param sphi_a ...
100384!> \param sphi_b ...
100385!> \param sphi_c ...
100386!> \param sphi_d ...
100387!> \param primitives ...
100388!> \param buffer1 ...
100389!> \param buffer2 ...
100390! **************************************************************************************************
100391 SUBROUTINE contract_ggpg(work, &
100392 nl_a, nl_b, nl_c, nl_d, &
100393 sphi_a, sphi_b, sphi_c, sphi_d, &
100394 primitives, &
100395 buffer1, buffer2)
100396 REAL(dp), DIMENSION(15*15*3*15), INTENT(IN) :: work
100397 INTEGER :: nl_a, nl_b, nl_c, nl_d
100398 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
100399 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
100400 REAL(dp), DIMENSION(3, 3*nl_c), INTENT(IN) :: sphi_c
100401 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
100402 REAL(dp), &
100403 DIMENSION(9*nl_a, 9*nl_b, 3*nl_c, 9*nl_d) :: primitives
100404 REAL(dp), DIMENSION(15*15*3*15) :: buffer1, buffer2
100405
100406 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
100407 kmax, s_offset_a1, s_offset_b1, &
100408 s_offset_c1, s_offset_d1
100409
100410 s_offset_a1 = 0
100411 DO ia = 1, nl_a
100412 s_offset_b1 = 0
100413 DO ib = 1, nl_b
100414 s_offset_c1 = 0
100415 DO ic = 1, nl_c
100416 s_offset_d1 = 0
100417 DO id = 1, nl_d
100418 buffer1 = 0.0_dp
100419 imax = 15*3*15
100420 kmax = 15
100421 DO i = 1, imax
100422 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
100423 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
100424 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
100425 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
100426 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
100427 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
100428 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
100429 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
100430 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
100431 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
100432 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
100433 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
100434 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
100435 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
100436 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
100437 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
100438 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
100439 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
100440 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
100441 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
100442 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
100443 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
100444 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
100445 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
100446 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
100447 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
100448 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
100449 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
100450 END DO
100451 buffer2 = 0.0_dp
100452 imax = 9*3*15
100453 kmax = 15
100454 DO i = 1, imax
100455 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
100456 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
100457 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
100458 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
100459 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
100460 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
100461 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
100462 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
100463 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
100464 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
100465 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
100466 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
100467 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
100468 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
100469 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
100470 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
100471 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
100472 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
100473 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
100474 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
100475 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
100476 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
100477 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
100478 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
100479 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
100480 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
100481 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
100482 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
100483 END DO
100484 buffer1 = 0.0_dp
100485 imax = 9*9*15
100486 kmax = 3
100487 DO i = 1, imax
100488 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
100489 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
100490 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
100491 END DO
100492 imax = 9*9*3
100493 kmax = 15
100494 i = 0
100495 DO i1 = 1, 3
100496 DO i2 = 1, 9
100497 DO i3 = 1, 9
100498 i = i + 1
100499 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
100500 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
100501 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
100502 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
100503 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
100504 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
100505 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
100506 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
100507 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
100508 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
100509 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
100510 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
100511 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
100512 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
100513 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
100514 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
100515 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
100516 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
100517 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
100518 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
100519 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
100520 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
100521 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
100522 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
100523 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
100524 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
100525 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
100526 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
100527 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
100528 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
100529 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
100530 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
100531 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
100532 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
100533 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
100534 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
100535 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
100536 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
100537 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
100538 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
100539 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
100540 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
100541 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
100542 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
100543 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
100544 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
100545 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
100546 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
100547 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
100548 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
100549 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
100550 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
100551 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
100552 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
100553 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
100554 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
100555 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
100556 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
100557 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
100558 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
100559 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
100560 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
100561 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
100562 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
100563 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
100564 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
100565 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
100566 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
100567 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
100568 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
100569 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
100570 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
100571 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
100572 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
100573 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
100574 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
100575 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
100576 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
100577 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
100578 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
100579 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
100580 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
100581 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
100582 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
100583 END DO
100584 END DO
100585 END DO
100586 s_offset_d1 = s_offset_d1 + 9
100587 END DO
100588 s_offset_c1 = s_offset_c1 + 3
100589 END DO
100590 s_offset_b1 = s_offset_b1 + 9
100591 END DO
100592 s_offset_a1 = s_offset_a1 + 9
100593 END DO
100594 END SUBROUTINE contract_ggpg
100595#endif
100596#if __MAX_CONTR > 4 || __MAX_CONTR == 4
100597! **************************************************************************************************
100598!> \brief ...
100599!> \param work ...
100600!> \param nl_a ...
100601!> \param nl_b ...
100602!> \param nl_c ...
100603!> \param nl_d ...
100604!> \param sphi_a ...
100605!> \param sphi_b ...
100606!> \param sphi_c ...
100607!> \param sphi_d ...
100608!> \param primitives ...
100609!> \param buffer1 ...
100610!> \param buffer2 ...
100611! **************************************************************************************************
100612 SUBROUTINE contract_ggds(work, &
100613 nl_a, nl_b, nl_c, nl_d, &
100614 sphi_a, sphi_b, sphi_c, sphi_d, &
100615 primitives, &
100616 buffer1, buffer2)
100617 REAL(dp), DIMENSION(15*15*6*1), INTENT(IN) :: work
100618 INTEGER :: nl_a, nl_b, nl_c, nl_d
100619 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
100620 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
100621 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
100622 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
100623 REAL(dp), &
100624 DIMENSION(9*nl_a, 9*nl_b, 5*nl_c, 1*nl_d) :: primitives
100625 REAL(dp), DIMENSION(15*15*6*1) :: buffer1, buffer2
100626
100627 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
100628 kmax, s_offset_a1, s_offset_b1, &
100629 s_offset_c1, s_offset_d1
100630
100631 s_offset_a1 = 0
100632 DO ia = 1, nl_a
100633 s_offset_b1 = 0
100634 DO ib = 1, nl_b
100635 s_offset_c1 = 0
100636 DO ic = 1, nl_c
100637 s_offset_d1 = 0
100638 DO id = 1, nl_d
100639 buffer1 = 0.0_dp
100640 imax = 15*6*1
100641 kmax = 15
100642 DO i = 1, imax
100643 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
100644 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
100645 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
100646 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
100647 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
100648 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
100649 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
100650 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
100651 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
100652 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
100653 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
100654 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
100655 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
100656 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
100657 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
100658 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
100659 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
100660 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
100661 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
100662 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
100663 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
100664 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
100665 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
100666 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
100667 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
100668 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
100669 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
100670 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
100671 END DO
100672 buffer2 = 0.0_dp
100673 imax = 9*6*1
100674 kmax = 15
100675 DO i = 1, imax
100676 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
100677 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
100678 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
100679 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
100680 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
100681 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
100682 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
100683 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
100684 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
100685 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
100686 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
100687 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
100688 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
100689 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
100690 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
100691 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
100692 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
100693 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
100694 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
100695 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
100696 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
100697 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
100698 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
100699 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
100700 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
100701 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
100702 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
100703 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
100704 END DO
100705 buffer1 = 0.0_dp
100706 imax = 9*9*1
100707 kmax = 6
100708 DO i = 1, imax
100709 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
100710 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
100711 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
100712 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
100713 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
100714 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
100715 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
100716 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
100717 END DO
100718 imax = 9*9*5
100719 kmax = 1
100720 i = 0
100721 DO i1 = 1, 5
100722 DO i2 = 1, 9
100723 DO i3 = 1, 9
100724 i = i + 1
100725 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
100726 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
100727 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
100728 END DO
100729 END DO
100730 END DO
100731 s_offset_d1 = s_offset_d1 + 1
100732 END DO
100733 s_offset_c1 = s_offset_c1 + 5
100734 END DO
100735 s_offset_b1 = s_offset_b1 + 9
100736 END DO
100737 s_offset_a1 = s_offset_a1 + 9
100738 END DO
100739 END SUBROUTINE contract_ggds
100740#endif
100741#if __MAX_CONTR > 4 || __MAX_CONTR == 4
100742! **************************************************************************************************
100743!> \brief ...
100744!> \param work ...
100745!> \param nl_a ...
100746!> \param nl_b ...
100747!> \param nl_c ...
100748!> \param nl_d ...
100749!> \param sphi_a ...
100750!> \param sphi_b ...
100751!> \param sphi_c ...
100752!> \param sphi_d ...
100753!> \param primitives ...
100754!> \param buffer1 ...
100755!> \param buffer2 ...
100756! **************************************************************************************************
100757 SUBROUTINE contract_ggdp(work, &
100758 nl_a, nl_b, nl_c, nl_d, &
100759 sphi_a, sphi_b, sphi_c, sphi_d, &
100760 primitives, &
100761 buffer1, buffer2)
100762 REAL(dp), DIMENSION(15*15*6*3), INTENT(IN) :: work
100763 INTEGER :: nl_a, nl_b, nl_c, nl_d
100764 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
100765 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
100766 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
100767 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
100768 REAL(dp), &
100769 DIMENSION(9*nl_a, 9*nl_b, 5*nl_c, 3*nl_d) :: primitives
100770 REAL(dp), DIMENSION(15*15*6*3) :: buffer1, buffer2
100771
100772 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
100773 kmax, s_offset_a1, s_offset_b1, &
100774 s_offset_c1, s_offset_d1
100775
100776 s_offset_a1 = 0
100777 DO ia = 1, nl_a
100778 s_offset_b1 = 0
100779 DO ib = 1, nl_b
100780 s_offset_c1 = 0
100781 DO ic = 1, nl_c
100782 s_offset_d1 = 0
100783 DO id = 1, nl_d
100784 buffer1 = 0.0_dp
100785 imax = 15*6*3
100786 kmax = 15
100787 DO i = 1, imax
100788 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
100789 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
100790 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
100791 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
100792 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
100793 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
100794 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
100795 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
100796 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
100797 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
100798 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
100799 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
100800 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
100801 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
100802 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
100803 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
100804 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
100805 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
100806 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
100807 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
100808 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
100809 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
100810 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
100811 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
100812 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
100813 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
100814 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
100815 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
100816 END DO
100817 buffer2 = 0.0_dp
100818 imax = 9*6*3
100819 kmax = 15
100820 DO i = 1, imax
100821 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
100822 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
100823 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
100824 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
100825 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
100826 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
100827 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
100828 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
100829 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
100830 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
100831 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
100832 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
100833 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
100834 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
100835 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
100836 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
100837 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
100838 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
100839 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
100840 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
100841 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
100842 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
100843 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
100844 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
100845 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
100846 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
100847 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
100848 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
100849 END DO
100850 buffer1 = 0.0_dp
100851 imax = 9*9*3
100852 kmax = 6
100853 DO i = 1, imax
100854 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
100855 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
100856 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
100857 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
100858 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
100859 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
100860 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
100861 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
100862 END DO
100863 imax = 9*9*5
100864 kmax = 3
100865 i = 0
100866 DO i1 = 1, 5
100867 DO i2 = 1, 9
100868 DO i3 = 1, 9
100869 i = i + 1
100870 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
100871 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
100872 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
100873 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
100874 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
100875 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
100876 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
100877 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
100878 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
100879 END DO
100880 END DO
100881 END DO
100882 s_offset_d1 = s_offset_d1 + 3
100883 END DO
100884 s_offset_c1 = s_offset_c1 + 5
100885 END DO
100886 s_offset_b1 = s_offset_b1 + 9
100887 END DO
100888 s_offset_a1 = s_offset_a1 + 9
100889 END DO
100890 END SUBROUTINE contract_ggdp
100891#endif
100892#if __MAX_CONTR > 4 || __MAX_CONTR == 4
100893! **************************************************************************************************
100894!> \brief ...
100895!> \param work ...
100896!> \param nl_a ...
100897!> \param nl_b ...
100898!> \param nl_c ...
100899!> \param nl_d ...
100900!> \param sphi_a ...
100901!> \param sphi_b ...
100902!> \param sphi_c ...
100903!> \param sphi_d ...
100904!> \param primitives ...
100905!> \param buffer1 ...
100906!> \param buffer2 ...
100907! **************************************************************************************************
100908 SUBROUTINE contract_ggdd(work, &
100909 nl_a, nl_b, nl_c, nl_d, &
100910 sphi_a, sphi_b, sphi_c, sphi_d, &
100911 primitives, &
100912 buffer1, buffer2)
100913 REAL(dp), DIMENSION(15*15*6*6), INTENT(IN) :: work
100914 INTEGER :: nl_a, nl_b, nl_c, nl_d
100915 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
100916 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
100917 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
100918 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
100919 REAL(dp), &
100920 DIMENSION(9*nl_a, 9*nl_b, 5*nl_c, 5*nl_d) :: primitives
100921 REAL(dp), DIMENSION(15*15*6*6) :: buffer1, buffer2
100922
100923 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
100924 kmax, s_offset_a1, s_offset_b1, &
100925 s_offset_c1, s_offset_d1
100926
100927 s_offset_a1 = 0
100928 DO ia = 1, nl_a
100929 s_offset_b1 = 0
100930 DO ib = 1, nl_b
100931 s_offset_c1 = 0
100932 DO ic = 1, nl_c
100933 s_offset_d1 = 0
100934 DO id = 1, nl_d
100935 buffer1 = 0.0_dp
100936 imax = 15*6*6
100937 kmax = 15
100938 DO i = 1, imax
100939 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
100940 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
100941 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
100942 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
100943 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
100944 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
100945 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
100946 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
100947 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
100948 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
100949 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
100950 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
100951 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
100952 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
100953 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
100954 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
100955 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
100956 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
100957 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
100958 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
100959 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
100960 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
100961 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
100962 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
100963 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
100964 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
100965 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
100966 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
100967 END DO
100968 buffer2 = 0.0_dp
100969 imax = 9*6*6
100970 kmax = 15
100971 DO i = 1, imax
100972 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
100973 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
100974 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
100975 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
100976 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
100977 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
100978 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
100979 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
100980 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
100981 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
100982 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
100983 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
100984 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
100985 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
100986 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
100987 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
100988 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
100989 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
100990 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
100991 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
100992 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
100993 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
100994 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
100995 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
100996 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
100997 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
100998 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
100999 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
101000 END DO
101001 buffer1 = 0.0_dp
101002 imax = 9*9*6
101003 kmax = 6
101004 DO i = 1, imax
101005 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
101006 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
101007 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
101008 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
101009 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
101010 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
101011 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
101012 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
101013 END DO
101014 imax = 9*9*5
101015 kmax = 6
101016 i = 0
101017 DO i1 = 1, 5
101018 DO i2 = 1, 9
101019 DO i3 = 1, 9
101020 i = i + 1
101021 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
101022 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
101023 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
101024 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
101025 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
101026 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
101027 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
101028 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
101029 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
101030 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
101031 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
101032 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
101033 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
101034 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
101035 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
101036 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
101037 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
101038 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
101039 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
101040 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
101041 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
101042 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
101043 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
101044 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
101045 END DO
101046 END DO
101047 END DO
101048 s_offset_d1 = s_offset_d1 + 5
101049 END DO
101050 s_offset_c1 = s_offset_c1 + 5
101051 END DO
101052 s_offset_b1 = s_offset_b1 + 9
101053 END DO
101054 s_offset_a1 = s_offset_a1 + 9
101055 END DO
101056 END SUBROUTINE contract_ggdd
101057#endif
101058#if __MAX_CONTR > 4 || __MAX_CONTR == 4
101059! **************************************************************************************************
101060!> \brief ...
101061!> \param work ...
101062!> \param nl_a ...
101063!> \param nl_b ...
101064!> \param nl_c ...
101065!> \param nl_d ...
101066!> \param sphi_a ...
101067!> \param sphi_b ...
101068!> \param sphi_c ...
101069!> \param sphi_d ...
101070!> \param primitives ...
101071!> \param buffer1 ...
101072!> \param buffer2 ...
101073! **************************************************************************************************
101074 SUBROUTINE contract_ggdf(work, &
101075 nl_a, nl_b, nl_c, nl_d, &
101076 sphi_a, sphi_b, sphi_c, sphi_d, &
101077 primitives, &
101078 buffer1, buffer2)
101079 REAL(dp), DIMENSION(15*15*6*10), INTENT(IN) :: work
101080 INTEGER :: nl_a, nl_b, nl_c, nl_d
101081 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
101082 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
101083 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
101084 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
101085 REAL(dp), &
101086 DIMENSION(9*nl_a, 9*nl_b, 5*nl_c, 7*nl_d) :: primitives
101087 REAL(dp), DIMENSION(15*15*6*10) :: buffer1, buffer2
101088
101089 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
101090 kmax, s_offset_a1, s_offset_b1, &
101091 s_offset_c1, s_offset_d1
101092
101093 s_offset_a1 = 0
101094 DO ia = 1, nl_a
101095 s_offset_b1 = 0
101096 DO ib = 1, nl_b
101097 s_offset_c1 = 0
101098 DO ic = 1, nl_c
101099 s_offset_d1 = 0
101100 DO id = 1, nl_d
101101 buffer1 = 0.0_dp
101102 imax = 15*6*10
101103 kmax = 15
101104 DO i = 1, imax
101105 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
101106 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
101107 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
101108 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
101109 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
101110 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
101111 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
101112 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
101113 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
101114 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
101115 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
101116 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
101117 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
101118 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
101119 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
101120 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
101121 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
101122 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
101123 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
101124 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
101125 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
101126 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
101127 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
101128 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
101129 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
101130 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
101131 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
101132 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
101133 END DO
101134 buffer2 = 0.0_dp
101135 imax = 9*6*10
101136 kmax = 15
101137 DO i = 1, imax
101138 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
101139 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
101140 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
101141 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
101142 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
101143 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
101144 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
101145 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
101146 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
101147 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
101148 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
101149 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
101150 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
101151 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
101152 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
101153 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
101154 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
101155 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
101156 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
101157 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
101158 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
101159 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
101160 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
101161 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
101162 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
101163 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
101164 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
101165 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
101166 END DO
101167 buffer1 = 0.0_dp
101168 imax = 9*9*10
101169 kmax = 6
101170 DO i = 1, imax
101171 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
101172 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
101173 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
101174 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
101175 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
101176 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
101177 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
101178 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
101179 END DO
101180 imax = 9*9*5
101181 kmax = 10
101182 i = 0
101183 DO i1 = 1, 5
101184 DO i2 = 1, 9
101185 DO i3 = 1, 9
101186 i = i + 1
101187 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
101188 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
101189 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
101190 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
101191 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
101192 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
101193 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
101194 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
101195 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
101196 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
101197 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
101198 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
101199 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
101200 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
101201 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
101202 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
101203 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
101204 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
101205 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
101206 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
101207 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
101208 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
101209 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
101210 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
101211 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
101212 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
101213 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
101214 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
101215 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
101216 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
101217 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
101218 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
101219 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
101220 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
101221 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
101222 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
101223 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
101224 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
101225 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
101226 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
101227 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
101228 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
101229 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
101230 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
101231 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
101232 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
101233 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
101234 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
101235 END DO
101236 END DO
101237 END DO
101238 s_offset_d1 = s_offset_d1 + 7
101239 END DO
101240 s_offset_c1 = s_offset_c1 + 5
101241 END DO
101242 s_offset_b1 = s_offset_b1 + 9
101243 END DO
101244 s_offset_a1 = s_offset_a1 + 9
101245 END DO
101246 END SUBROUTINE contract_ggdf
101247#endif
101248#if __MAX_CONTR > 4 || __MAX_CONTR == 4
101249! **************************************************************************************************
101250!> \brief ...
101251!> \param work ...
101252!> \param nl_a ...
101253!> \param nl_b ...
101254!> \param nl_c ...
101255!> \param nl_d ...
101256!> \param sphi_a ...
101257!> \param sphi_b ...
101258!> \param sphi_c ...
101259!> \param sphi_d ...
101260!> \param primitives ...
101261!> \param buffer1 ...
101262!> \param buffer2 ...
101263! **************************************************************************************************
101264 SUBROUTINE contract_ggdg(work, &
101265 nl_a, nl_b, nl_c, nl_d, &
101266 sphi_a, sphi_b, sphi_c, sphi_d, &
101267 primitives, &
101268 buffer1, buffer2)
101269 REAL(dp), DIMENSION(15*15*6*15), INTENT(IN) :: work
101270 INTEGER :: nl_a, nl_b, nl_c, nl_d
101271 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
101272 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
101273 REAL(dp), DIMENSION(6, 5*nl_c), INTENT(IN) :: sphi_c
101274 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
101275 REAL(dp), &
101276 DIMENSION(9*nl_a, 9*nl_b, 5*nl_c, 9*nl_d) :: primitives
101277 REAL(dp), DIMENSION(15*15*6*15) :: buffer1, buffer2
101278
101279 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
101280 kmax, s_offset_a1, s_offset_b1, &
101281 s_offset_c1, s_offset_d1
101282
101283 s_offset_a1 = 0
101284 DO ia = 1, nl_a
101285 s_offset_b1 = 0
101286 DO ib = 1, nl_b
101287 s_offset_c1 = 0
101288 DO ic = 1, nl_c
101289 s_offset_d1 = 0
101290 DO id = 1, nl_d
101291 buffer1 = 0.0_dp
101292 imax = 15*6*15
101293 kmax = 15
101294 DO i = 1, imax
101295 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
101296 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
101297 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
101298 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
101299 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
101300 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
101301 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
101302 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
101303 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
101304 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
101305 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
101306 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
101307 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
101308 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
101309 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
101310 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
101311 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
101312 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
101313 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
101314 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
101315 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
101316 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
101317 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
101318 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
101319 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
101320 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
101321 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
101322 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
101323 END DO
101324 buffer2 = 0.0_dp
101325 imax = 9*6*15
101326 kmax = 15
101327 DO i = 1, imax
101328 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
101329 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
101330 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
101331 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
101332 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
101333 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
101334 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
101335 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
101336 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
101337 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
101338 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
101339 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
101340 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
101341 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
101342 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
101343 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
101344 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
101345 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
101346 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
101347 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
101348 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
101349 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
101350 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
101351 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
101352 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
101353 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
101354 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
101355 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
101356 END DO
101357 buffer1 = 0.0_dp
101358 imax = 9*9*15
101359 kmax = 6
101360 DO i = 1, imax
101361 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
101362 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
101363 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
101364 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
101365 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
101366 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
101367 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
101368 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
101369 END DO
101370 imax = 9*9*5
101371 kmax = 15
101372 i = 0
101373 DO i1 = 1, 5
101374 DO i2 = 1, 9
101375 DO i3 = 1, 9
101376 i = i + 1
101377 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
101378 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
101379 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
101380 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
101381 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
101382 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
101383 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
101384 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
101385 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
101386 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
101387 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
101388 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
101389 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
101390 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
101391 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
101392 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
101393 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
101394 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
101395 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
101396 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
101397 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
101398 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
101399 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
101400 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
101401 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
101402 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
101403 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
101404 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
101405 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
101406 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
101407 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
101408 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
101409 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
101410 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
101411 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
101412 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
101413 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
101414 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
101415 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
101416 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
101417 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
101418 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
101419 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
101420 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
101421 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
101422 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
101423 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
101424 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
101425 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
101426 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
101427 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
101428 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
101429 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
101430 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
101431 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
101432 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
101433 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
101434 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
101435 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
101436 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
101437 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
101438 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
101439 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
101440 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
101441 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
101442 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
101443 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
101444 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
101445 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
101446 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
101447 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
101448 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
101449 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
101450 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
101451 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
101452 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
101453 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
101454 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
101455 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
101456 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
101457 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
101458 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
101459 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
101460 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
101461 END DO
101462 END DO
101463 END DO
101464 s_offset_d1 = s_offset_d1 + 9
101465 END DO
101466 s_offset_c1 = s_offset_c1 + 5
101467 END DO
101468 s_offset_b1 = s_offset_b1 + 9
101469 END DO
101470 s_offset_a1 = s_offset_a1 + 9
101471 END DO
101472 END SUBROUTINE contract_ggdg
101473#endif
101474#if __MAX_CONTR > 4 || __MAX_CONTR == 4
101475! **************************************************************************************************
101476!> \brief ...
101477!> \param work ...
101478!> \param nl_a ...
101479!> \param nl_b ...
101480!> \param nl_c ...
101481!> \param nl_d ...
101482!> \param sphi_a ...
101483!> \param sphi_b ...
101484!> \param sphi_c ...
101485!> \param sphi_d ...
101486!> \param primitives ...
101487!> \param buffer1 ...
101488!> \param buffer2 ...
101489! **************************************************************************************************
101490 SUBROUTINE contract_ggfs(work, &
101491 nl_a, nl_b, nl_c, nl_d, &
101492 sphi_a, sphi_b, sphi_c, sphi_d, &
101493 primitives, &
101494 buffer1, buffer2)
101495 REAL(dp), DIMENSION(15*15*10*1), INTENT(IN) :: work
101496 INTEGER :: nl_a, nl_b, nl_c, nl_d
101497 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
101498 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
101499 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
101500 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
101501 REAL(dp), &
101502 DIMENSION(9*nl_a, 9*nl_b, 7*nl_c, 1*nl_d) :: primitives
101503 REAL(dp), DIMENSION(15*15*10*1) :: buffer1, buffer2
101504
101505 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
101506 kmax, s_offset_a1, s_offset_b1, &
101507 s_offset_c1, s_offset_d1
101508
101509 s_offset_a1 = 0
101510 DO ia = 1, nl_a
101511 s_offset_b1 = 0
101512 DO ib = 1, nl_b
101513 s_offset_c1 = 0
101514 DO ic = 1, nl_c
101515 s_offset_d1 = 0
101516 DO id = 1, nl_d
101517 buffer1 = 0.0_dp
101518 imax = 15*10*1
101519 kmax = 15
101520 DO i = 1, imax
101521 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
101522 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
101523 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
101524 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
101525 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
101526 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
101527 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
101528 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
101529 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
101530 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
101531 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
101532 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
101533 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
101534 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
101535 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
101536 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
101537 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
101538 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
101539 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
101540 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
101541 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
101542 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
101543 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
101544 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
101545 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
101546 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
101547 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
101548 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
101549 END DO
101550 buffer2 = 0.0_dp
101551 imax = 9*10*1
101552 kmax = 15
101553 DO i = 1, imax
101554 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
101555 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
101556 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
101557 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
101558 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
101559 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
101560 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
101561 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
101562 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
101563 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
101564 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
101565 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
101566 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
101567 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
101568 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
101569 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
101570 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
101571 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
101572 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
101573 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
101574 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
101575 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
101576 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
101577 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
101578 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
101579 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
101580 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
101581 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
101582 END DO
101583 buffer1 = 0.0_dp
101584 imax = 9*9*1
101585 kmax = 10
101586 DO i = 1, imax
101587 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
101588 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
101589 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
101590 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
101591 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
101592 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
101593 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
101594 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
101595 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
101596 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
101597 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
101598 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
101599 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
101600 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
101601 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
101602 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
101603 END DO
101604 imax = 9*9*7
101605 kmax = 1
101606 i = 0
101607 DO i1 = 1, 7
101608 DO i2 = 1, 9
101609 DO i3 = 1, 9
101610 i = i + 1
101611 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
101612 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
101613 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
101614 END DO
101615 END DO
101616 END DO
101617 s_offset_d1 = s_offset_d1 + 1
101618 END DO
101619 s_offset_c1 = s_offset_c1 + 7
101620 END DO
101621 s_offset_b1 = s_offset_b1 + 9
101622 END DO
101623 s_offset_a1 = s_offset_a1 + 9
101624 END DO
101625 END SUBROUTINE contract_ggfs
101626#endif
101627#if __MAX_CONTR > 4 || __MAX_CONTR == 4
101628! **************************************************************************************************
101629!> \brief ...
101630!> \param work ...
101631!> \param nl_a ...
101632!> \param nl_b ...
101633!> \param nl_c ...
101634!> \param nl_d ...
101635!> \param sphi_a ...
101636!> \param sphi_b ...
101637!> \param sphi_c ...
101638!> \param sphi_d ...
101639!> \param primitives ...
101640!> \param buffer1 ...
101641!> \param buffer2 ...
101642! **************************************************************************************************
101643 SUBROUTINE contract_ggfp(work, &
101644 nl_a, nl_b, nl_c, nl_d, &
101645 sphi_a, sphi_b, sphi_c, sphi_d, &
101646 primitives, &
101647 buffer1, buffer2)
101648 REAL(dp), DIMENSION(15*15*10*3), INTENT(IN) :: work
101649 INTEGER :: nl_a, nl_b, nl_c, nl_d
101650 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
101651 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
101652 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
101653 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
101654 REAL(dp), &
101655 DIMENSION(9*nl_a, 9*nl_b, 7*nl_c, 3*nl_d) :: primitives
101656 REAL(dp), DIMENSION(15*15*10*3) :: buffer1, buffer2
101657
101658 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
101659 kmax, s_offset_a1, s_offset_b1, &
101660 s_offset_c1, s_offset_d1
101661
101662 s_offset_a1 = 0
101663 DO ia = 1, nl_a
101664 s_offset_b1 = 0
101665 DO ib = 1, nl_b
101666 s_offset_c1 = 0
101667 DO ic = 1, nl_c
101668 s_offset_d1 = 0
101669 DO id = 1, nl_d
101670 buffer1 = 0.0_dp
101671 imax = 15*10*3
101672 kmax = 15
101673 DO i = 1, imax
101674 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
101675 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
101676 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
101677 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
101678 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
101679 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
101680 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
101681 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
101682 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
101683 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
101684 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
101685 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
101686 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
101687 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
101688 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
101689 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
101690 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
101691 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
101692 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
101693 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
101694 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
101695 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
101696 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
101697 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
101698 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
101699 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
101700 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
101701 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
101702 END DO
101703 buffer2 = 0.0_dp
101704 imax = 9*10*3
101705 kmax = 15
101706 DO i = 1, imax
101707 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
101708 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
101709 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
101710 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
101711 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
101712 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
101713 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
101714 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
101715 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
101716 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
101717 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
101718 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
101719 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
101720 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
101721 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
101722 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
101723 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
101724 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
101725 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
101726 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
101727 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
101728 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
101729 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
101730 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
101731 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
101732 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
101733 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
101734 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
101735 END DO
101736 buffer1 = 0.0_dp
101737 imax = 9*9*3
101738 kmax = 10
101739 DO i = 1, imax
101740 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
101741 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
101742 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
101743 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
101744 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
101745 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
101746 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
101747 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
101748 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
101749 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
101750 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
101751 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
101752 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
101753 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
101754 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
101755 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
101756 END DO
101757 imax = 9*9*7
101758 kmax = 3
101759 i = 0
101760 DO i1 = 1, 7
101761 DO i2 = 1, 9
101762 DO i3 = 1, 9
101763 i = i + 1
101764 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
101765 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
101766 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
101767 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
101768 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
101769 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
101770 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
101771 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
101772 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
101773 END DO
101774 END DO
101775 END DO
101776 s_offset_d1 = s_offset_d1 + 3
101777 END DO
101778 s_offset_c1 = s_offset_c1 + 7
101779 END DO
101780 s_offset_b1 = s_offset_b1 + 9
101781 END DO
101782 s_offset_a1 = s_offset_a1 + 9
101783 END DO
101784 END SUBROUTINE contract_ggfp
101785#endif
101786#if __MAX_CONTR > 4 || __MAX_CONTR == 4
101787! **************************************************************************************************
101788!> \brief ...
101789!> \param work ...
101790!> \param nl_a ...
101791!> \param nl_b ...
101792!> \param nl_c ...
101793!> \param nl_d ...
101794!> \param sphi_a ...
101795!> \param sphi_b ...
101796!> \param sphi_c ...
101797!> \param sphi_d ...
101798!> \param primitives ...
101799!> \param buffer1 ...
101800!> \param buffer2 ...
101801! **************************************************************************************************
101802 SUBROUTINE contract_ggfd(work, &
101803 nl_a, nl_b, nl_c, nl_d, &
101804 sphi_a, sphi_b, sphi_c, sphi_d, &
101805 primitives, &
101806 buffer1, buffer2)
101807 REAL(dp), DIMENSION(15*15*10*6), INTENT(IN) :: work
101808 INTEGER :: nl_a, nl_b, nl_c, nl_d
101809 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
101810 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
101811 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
101812 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
101813 REAL(dp), &
101814 DIMENSION(9*nl_a, 9*nl_b, 7*nl_c, 5*nl_d) :: primitives
101815 REAL(dp), DIMENSION(15*15*10*6) :: buffer1, buffer2
101816
101817 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
101818 kmax, s_offset_a1, s_offset_b1, &
101819 s_offset_c1, s_offset_d1
101820
101821 s_offset_a1 = 0
101822 DO ia = 1, nl_a
101823 s_offset_b1 = 0
101824 DO ib = 1, nl_b
101825 s_offset_c1 = 0
101826 DO ic = 1, nl_c
101827 s_offset_d1 = 0
101828 DO id = 1, nl_d
101829 buffer1 = 0.0_dp
101830 imax = 15*10*6
101831 kmax = 15
101832 DO i = 1, imax
101833 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
101834 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
101835 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
101836 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
101837 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
101838 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
101839 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
101840 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
101841 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
101842 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
101843 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
101844 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
101845 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
101846 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
101847 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
101848 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
101849 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
101850 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
101851 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
101852 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
101853 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
101854 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
101855 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
101856 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
101857 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
101858 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
101859 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
101860 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
101861 END DO
101862 buffer2 = 0.0_dp
101863 imax = 9*10*6
101864 kmax = 15
101865 DO i = 1, imax
101866 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
101867 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
101868 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
101869 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
101870 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
101871 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
101872 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
101873 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
101874 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
101875 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
101876 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
101877 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
101878 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
101879 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
101880 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
101881 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
101882 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
101883 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
101884 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
101885 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
101886 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
101887 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
101888 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
101889 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
101890 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
101891 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
101892 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
101893 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
101894 END DO
101895 buffer1 = 0.0_dp
101896 imax = 9*9*6
101897 kmax = 10
101898 DO i = 1, imax
101899 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
101900 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
101901 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
101902 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
101903 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
101904 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
101905 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
101906 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
101907 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
101908 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
101909 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
101910 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
101911 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
101912 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
101913 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
101914 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
101915 END DO
101916 imax = 9*9*7
101917 kmax = 6
101918 i = 0
101919 DO i1 = 1, 7
101920 DO i2 = 1, 9
101921 DO i3 = 1, 9
101922 i = i + 1
101923 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
101924 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
101925 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
101926 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
101927 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
101928 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
101929 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
101930 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
101931 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
101932 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
101933 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
101934 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
101935 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
101936 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
101937 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
101938 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
101939 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
101940 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
101941 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
101942 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
101943 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
101944 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
101945 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
101946 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
101947 END DO
101948 END DO
101949 END DO
101950 s_offset_d1 = s_offset_d1 + 5
101951 END DO
101952 s_offset_c1 = s_offset_c1 + 7
101953 END DO
101954 s_offset_b1 = s_offset_b1 + 9
101955 END DO
101956 s_offset_a1 = s_offset_a1 + 9
101957 END DO
101958 END SUBROUTINE contract_ggfd
101959#endif
101960#if __MAX_CONTR > 4 || __MAX_CONTR == 4
101961! **************************************************************************************************
101962!> \brief ...
101963!> \param work ...
101964!> \param nl_a ...
101965!> \param nl_b ...
101966!> \param nl_c ...
101967!> \param nl_d ...
101968!> \param sphi_a ...
101969!> \param sphi_b ...
101970!> \param sphi_c ...
101971!> \param sphi_d ...
101972!> \param primitives ...
101973!> \param buffer1 ...
101974!> \param buffer2 ...
101975! **************************************************************************************************
101976 SUBROUTINE contract_ggff(work, &
101977 nl_a, nl_b, nl_c, nl_d, &
101978 sphi_a, sphi_b, sphi_c, sphi_d, &
101979 primitives, &
101980 buffer1, buffer2)
101981 REAL(dp), DIMENSION(15*15*10*10), INTENT(IN) :: work
101982 INTEGER :: nl_a, nl_b, nl_c, nl_d
101983 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
101984 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
101985 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
101986 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
101987 REAL(dp), &
101988 DIMENSION(9*nl_a, 9*nl_b, 7*nl_c, 7*nl_d) :: primitives
101989 REAL(dp), DIMENSION(15*15*10*10) :: buffer1, buffer2
101990
101991 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
101992 kmax, s_offset_a1, s_offset_b1, &
101993 s_offset_c1, s_offset_d1
101994
101995 s_offset_a1 = 0
101996 DO ia = 1, nl_a
101997 s_offset_b1 = 0
101998 DO ib = 1, nl_b
101999 s_offset_c1 = 0
102000 DO ic = 1, nl_c
102001 s_offset_d1 = 0
102002 DO id = 1, nl_d
102003 buffer1 = 0.0_dp
102004 imax = 15*10*10
102005 kmax = 15
102006 DO i = 1, imax
102007 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
102008 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
102009 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
102010 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
102011 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
102012 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
102013 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
102014 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
102015 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
102016 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
102017 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
102018 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
102019 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
102020 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
102021 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
102022 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
102023 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
102024 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
102025 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
102026 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
102027 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
102028 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
102029 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
102030 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
102031 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
102032 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
102033 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
102034 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
102035 END DO
102036 buffer2 = 0.0_dp
102037 imax = 9*10*10
102038 kmax = 15
102039 DO i = 1, imax
102040 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
102041 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
102042 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
102043 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
102044 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
102045 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
102046 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
102047 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
102048 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
102049 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
102050 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
102051 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
102052 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
102053 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
102054 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
102055 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
102056 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
102057 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
102058 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
102059 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
102060 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
102061 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
102062 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
102063 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
102064 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
102065 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
102066 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
102067 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
102068 END DO
102069 buffer1 = 0.0_dp
102070 imax = 9*9*10
102071 kmax = 10
102072 DO i = 1, imax
102073 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
102074 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
102075 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
102076 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
102077 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
102078 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
102079 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
102080 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
102081 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
102082 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
102083 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
102084 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
102085 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
102086 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
102087 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
102088 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
102089 END DO
102090 imax = 9*9*7
102091 kmax = 10
102092 i = 0
102093 DO i1 = 1, 7
102094 DO i2 = 1, 9
102095 DO i3 = 1, 9
102096 i = i + 1
102097 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
102098 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
102099 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
102100 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
102101 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
102102 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
102103 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
102104 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
102105 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
102106 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
102107 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
102108 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
102109 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
102110 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
102111 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
102112 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
102113 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
102114 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
102115 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
102116 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
102117 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
102118 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
102119 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
102120 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
102121 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
102122 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
102123 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
102124 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
102125 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
102126 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
102127 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
102128 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
102129 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
102130 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
102131 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
102132 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
102133 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
102134 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
102135 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
102136 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
102137 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
102138 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
102139 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
102140 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
102141 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
102142 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
102143 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
102144 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
102145 END DO
102146 END DO
102147 END DO
102148 s_offset_d1 = s_offset_d1 + 7
102149 END DO
102150 s_offset_c1 = s_offset_c1 + 7
102151 END DO
102152 s_offset_b1 = s_offset_b1 + 9
102153 END DO
102154 s_offset_a1 = s_offset_a1 + 9
102155 END DO
102156 END SUBROUTINE contract_ggff
102157#endif
102158#if __MAX_CONTR > 4 || __MAX_CONTR == 4
102159! **************************************************************************************************
102160!> \brief ...
102161!> \param work ...
102162!> \param nl_a ...
102163!> \param nl_b ...
102164!> \param nl_c ...
102165!> \param nl_d ...
102166!> \param sphi_a ...
102167!> \param sphi_b ...
102168!> \param sphi_c ...
102169!> \param sphi_d ...
102170!> \param primitives ...
102171!> \param buffer1 ...
102172!> \param buffer2 ...
102173! **************************************************************************************************
102174 SUBROUTINE contract_ggfg(work, &
102175 nl_a, nl_b, nl_c, nl_d, &
102176 sphi_a, sphi_b, sphi_c, sphi_d, &
102177 primitives, &
102178 buffer1, buffer2)
102179 REAL(dp), DIMENSION(15*15*10*15), INTENT(IN) :: work
102180 INTEGER :: nl_a, nl_b, nl_c, nl_d
102181 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
102182 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
102183 REAL(dp), DIMENSION(10, 7*nl_c), INTENT(IN) :: sphi_c
102184 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
102185 REAL(dp), &
102186 DIMENSION(9*nl_a, 9*nl_b, 7*nl_c, 9*nl_d) :: primitives
102187 REAL(dp), DIMENSION(15*15*10*15) :: buffer1, buffer2
102188
102189 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
102190 kmax, s_offset_a1, s_offset_b1, &
102191 s_offset_c1, s_offset_d1
102192
102193 s_offset_a1 = 0
102194 DO ia = 1, nl_a
102195 s_offset_b1 = 0
102196 DO ib = 1, nl_b
102197 s_offset_c1 = 0
102198 DO ic = 1, nl_c
102199 s_offset_d1 = 0
102200 DO id = 1, nl_d
102201 buffer1 = 0.0_dp
102202 imax = 15*10*15
102203 kmax = 15
102204 DO i = 1, imax
102205 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
102206 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
102207 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
102208 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
102209 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
102210 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
102211 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
102212 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
102213 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
102214 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
102215 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
102216 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
102217 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
102218 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
102219 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
102220 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
102221 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
102222 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
102223 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
102224 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
102225 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
102226 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
102227 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
102228 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
102229 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
102230 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
102231 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
102232 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
102233 END DO
102234 buffer2 = 0.0_dp
102235 imax = 9*10*15
102236 kmax = 15
102237 DO i = 1, imax
102238 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
102239 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
102240 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
102241 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
102242 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
102243 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
102244 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
102245 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
102246 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
102247 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
102248 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
102249 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
102250 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
102251 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
102252 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
102253 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
102254 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
102255 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
102256 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
102257 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
102258 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
102259 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
102260 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
102261 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
102262 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
102263 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
102264 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
102265 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
102266 END DO
102267 buffer1 = 0.0_dp
102268 imax = 9*9*15
102269 kmax = 10
102270 DO i = 1, imax
102271 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
102272 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
102273 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
102274 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
102275 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
102276 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
102277 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
102278 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
102279 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
102280 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
102281 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
102282 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
102283 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
102284 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
102285 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
102286 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
102287 END DO
102288 imax = 9*9*7
102289 kmax = 15
102290 i = 0
102291 DO i1 = 1, 7
102292 DO i2 = 1, 9
102293 DO i3 = 1, 9
102294 i = i + 1
102295 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
102296 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
102297 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
102298 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
102299 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
102300 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
102301 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
102302 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
102303 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
102304 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
102305 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
102306 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
102307 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
102308 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
102309 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
102310 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
102311 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
102312 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
102313 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
102314 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
102315 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
102316 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
102317 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
102318 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
102319 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
102320 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
102321 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
102322 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
102323 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
102324 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
102325 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
102326 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
102327 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
102328 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
102329 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
102330 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
102331 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
102332 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
102333 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
102334 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
102335 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
102336 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
102337 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
102338 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
102339 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
102340 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
102341 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
102342 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
102343 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
102344 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
102345 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
102346 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
102347 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
102348 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
102349 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
102350 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
102351 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
102352 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
102353 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
102354 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
102355 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
102356 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
102357 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
102358 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
102359 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
102360 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
102361 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
102362 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
102363 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
102364 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
102365 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
102366 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
102367 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
102368 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
102369 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
102370 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
102371 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
102372 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
102373 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
102374 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
102375 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
102376 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
102377 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
102378 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
102379 END DO
102380 END DO
102381 END DO
102382 s_offset_d1 = s_offset_d1 + 9
102383 END DO
102384 s_offset_c1 = s_offset_c1 + 7
102385 END DO
102386 s_offset_b1 = s_offset_b1 + 9
102387 END DO
102388 s_offset_a1 = s_offset_a1 + 9
102389 END DO
102390 END SUBROUTINE contract_ggfg
102391#endif
102392#if __MAX_CONTR > 4 || __MAX_CONTR == 4
102393! **************************************************************************************************
102394!> \brief ...
102395!> \param work ...
102396!> \param nl_a ...
102397!> \param nl_b ...
102398!> \param nl_c ...
102399!> \param nl_d ...
102400!> \param sphi_a ...
102401!> \param sphi_b ...
102402!> \param sphi_c ...
102403!> \param sphi_d ...
102404!> \param primitives ...
102405!> \param buffer1 ...
102406!> \param buffer2 ...
102407! **************************************************************************************************
102408 SUBROUTINE contract_gggs(work, &
102409 nl_a, nl_b, nl_c, nl_d, &
102410 sphi_a, sphi_b, sphi_c, sphi_d, &
102411 primitives, &
102412 buffer1, buffer2)
102413 REAL(dp), DIMENSION(15*15*15*1), INTENT(IN) :: work
102414 INTEGER :: nl_a, nl_b, nl_c, nl_d
102415 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
102416 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
102417 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
102418 REAL(dp), DIMENSION(1, 1*nl_d), INTENT(IN) :: sphi_d
102419 REAL(dp), &
102420 DIMENSION(9*nl_a, 9*nl_b, 9*nl_c, 1*nl_d) :: primitives
102421 REAL(dp), DIMENSION(15*15*15*1) :: buffer1, buffer2
102422
102423 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
102424 kmax, s_offset_a1, s_offset_b1, &
102425 s_offset_c1, s_offset_d1
102426
102427 s_offset_a1 = 0
102428 DO ia = 1, nl_a
102429 s_offset_b1 = 0
102430 DO ib = 1, nl_b
102431 s_offset_c1 = 0
102432 DO ic = 1, nl_c
102433 s_offset_d1 = 0
102434 DO id = 1, nl_d
102435 buffer1 = 0.0_dp
102436 imax = 15*15*1
102437 kmax = 15
102438 DO i = 1, imax
102439 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
102440 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
102441 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
102442 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
102443 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
102444 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
102445 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
102446 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
102447 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
102448 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
102449 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
102450 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
102451 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
102452 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
102453 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
102454 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
102455 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
102456 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
102457 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
102458 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
102459 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
102460 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
102461 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
102462 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
102463 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
102464 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
102465 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
102466 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
102467 END DO
102468 buffer2 = 0.0_dp
102469 imax = 9*15*1
102470 kmax = 15
102471 DO i = 1, imax
102472 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
102473 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
102474 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
102475 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
102476 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
102477 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
102478 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
102479 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
102480 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
102481 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
102482 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
102483 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
102484 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
102485 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
102486 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
102487 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
102488 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
102489 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
102490 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
102491 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
102492 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
102493 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
102494 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
102495 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
102496 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
102497 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
102498 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
102499 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
102500 END DO
102501 buffer1 = 0.0_dp
102502 imax = 9*9*1
102503 kmax = 15
102504 DO i = 1, imax
102505 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
102506 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
102507 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
102508 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
102509 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
102510 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
102511 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
102512 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
102513 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
102514 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
102515 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
102516 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
102517 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
102518 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
102519 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
102520 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
102521 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
102522 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
102523 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
102524 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
102525 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
102526 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
102527 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
102528 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
102529 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
102530 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
102531 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
102532 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
102533 END DO
102534 imax = 9*9*9
102535 kmax = 1
102536 i = 0
102537 DO i1 = 1, 9
102538 DO i2 = 1, 9
102539 DO i3 = 1, 9
102540 i = i + 1
102541 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
102542 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
102543 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
102544 END DO
102545 END DO
102546 END DO
102547 s_offset_d1 = s_offset_d1 + 1
102548 END DO
102549 s_offset_c1 = s_offset_c1 + 9
102550 END DO
102551 s_offset_b1 = s_offset_b1 + 9
102552 END DO
102553 s_offset_a1 = s_offset_a1 + 9
102554 END DO
102555 END SUBROUTINE contract_gggs
102556#endif
102557#if __MAX_CONTR > 4 || __MAX_CONTR == 4
102558! **************************************************************************************************
102559!> \brief ...
102560!> \param work ...
102561!> \param nl_a ...
102562!> \param nl_b ...
102563!> \param nl_c ...
102564!> \param nl_d ...
102565!> \param sphi_a ...
102566!> \param sphi_b ...
102567!> \param sphi_c ...
102568!> \param sphi_d ...
102569!> \param primitives ...
102570!> \param buffer1 ...
102571!> \param buffer2 ...
102572! **************************************************************************************************
102573 SUBROUTINE contract_gggp(work, &
102574 nl_a, nl_b, nl_c, nl_d, &
102575 sphi_a, sphi_b, sphi_c, sphi_d, &
102576 primitives, &
102577 buffer1, buffer2)
102578 REAL(dp), DIMENSION(15*15*15*3), INTENT(IN) :: work
102579 INTEGER :: nl_a, nl_b, nl_c, nl_d
102580 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
102581 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
102582 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
102583 REAL(dp), DIMENSION(3, 3*nl_d), INTENT(IN) :: sphi_d
102584 REAL(dp), &
102585 DIMENSION(9*nl_a, 9*nl_b, 9*nl_c, 3*nl_d) :: primitives
102586 REAL(dp), DIMENSION(15*15*15*3) :: buffer1, buffer2
102587
102588 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
102589 kmax, s_offset_a1, s_offset_b1, &
102590 s_offset_c1, s_offset_d1
102591
102592 s_offset_a1 = 0
102593 DO ia = 1, nl_a
102594 s_offset_b1 = 0
102595 DO ib = 1, nl_b
102596 s_offset_c1 = 0
102597 DO ic = 1, nl_c
102598 s_offset_d1 = 0
102599 DO id = 1, nl_d
102600 buffer1 = 0.0_dp
102601 imax = 15*15*3
102602 kmax = 15
102603 DO i = 1, imax
102604 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
102605 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
102606 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
102607 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
102608 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
102609 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
102610 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
102611 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
102612 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
102613 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
102614 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
102615 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
102616 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
102617 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
102618 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
102619 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
102620 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
102621 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
102622 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
102623 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
102624 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
102625 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
102626 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
102627 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
102628 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
102629 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
102630 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
102631 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
102632 END DO
102633 buffer2 = 0.0_dp
102634 imax = 9*15*3
102635 kmax = 15
102636 DO i = 1, imax
102637 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
102638 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
102639 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
102640 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
102641 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
102642 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
102643 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
102644 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
102645 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
102646 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
102647 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
102648 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
102649 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
102650 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
102651 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
102652 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
102653 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
102654 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
102655 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
102656 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
102657 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
102658 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
102659 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
102660 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
102661 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
102662 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
102663 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
102664 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
102665 END DO
102666 buffer1 = 0.0_dp
102667 imax = 9*9*3
102668 kmax = 15
102669 DO i = 1, imax
102670 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
102671 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
102672 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
102673 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
102674 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
102675 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
102676 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
102677 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
102678 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
102679 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
102680 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
102681 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
102682 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
102683 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
102684 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
102685 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
102686 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
102687 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
102688 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
102689 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
102690 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
102691 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
102692 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
102693 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
102694 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
102695 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
102696 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
102697 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
102698 END DO
102699 imax = 9*9*9
102700 kmax = 3
102701 i = 0
102702 DO i1 = 1, 9
102703 DO i2 = 1, 9
102704 DO i3 = 1, 9
102705 i = i + 1
102706 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
102707 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
102708 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
102709 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
102710 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
102711 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
102712 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
102713 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
102714 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
102715 END DO
102716 END DO
102717 END DO
102718 s_offset_d1 = s_offset_d1 + 3
102719 END DO
102720 s_offset_c1 = s_offset_c1 + 9
102721 END DO
102722 s_offset_b1 = s_offset_b1 + 9
102723 END DO
102724 s_offset_a1 = s_offset_a1 + 9
102725 END DO
102726 END SUBROUTINE contract_gggp
102727#endif
102728#if __MAX_CONTR > 4 || __MAX_CONTR == 4
102729! **************************************************************************************************
102730!> \brief ...
102731!> \param work ...
102732!> \param nl_a ...
102733!> \param nl_b ...
102734!> \param nl_c ...
102735!> \param nl_d ...
102736!> \param sphi_a ...
102737!> \param sphi_b ...
102738!> \param sphi_c ...
102739!> \param sphi_d ...
102740!> \param primitives ...
102741!> \param buffer1 ...
102742!> \param buffer2 ...
102743! **************************************************************************************************
102744 SUBROUTINE contract_gggd(work, &
102745 nl_a, nl_b, nl_c, nl_d, &
102746 sphi_a, sphi_b, sphi_c, sphi_d, &
102747 primitives, &
102748 buffer1, buffer2)
102749 REAL(dp), DIMENSION(15*15*15*6), INTENT(IN) :: work
102750 INTEGER :: nl_a, nl_b, nl_c, nl_d
102751 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
102752 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
102753 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
102754 REAL(dp), DIMENSION(6, 5*nl_d), INTENT(IN) :: sphi_d
102755 REAL(dp), &
102756 DIMENSION(9*nl_a, 9*nl_b, 9*nl_c, 5*nl_d) :: primitives
102757 REAL(dp), DIMENSION(15*15*15*6) :: buffer1, buffer2
102758
102759 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
102760 kmax, s_offset_a1, s_offset_b1, &
102761 s_offset_c1, s_offset_d1
102762
102763 s_offset_a1 = 0
102764 DO ia = 1, nl_a
102765 s_offset_b1 = 0
102766 DO ib = 1, nl_b
102767 s_offset_c1 = 0
102768 DO ic = 1, nl_c
102769 s_offset_d1 = 0
102770 DO id = 1, nl_d
102771 buffer1 = 0.0_dp
102772 imax = 15*15*6
102773 kmax = 15
102774 DO i = 1, imax
102775 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
102776 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
102777 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
102778 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
102779 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
102780 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
102781 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
102782 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
102783 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
102784 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
102785 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
102786 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
102787 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
102788 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
102789 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
102790 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
102791 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
102792 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
102793 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
102794 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
102795 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
102796 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
102797 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
102798 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
102799 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
102800 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
102801 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
102802 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
102803 END DO
102804 buffer2 = 0.0_dp
102805 imax = 9*15*6
102806 kmax = 15
102807 DO i = 1, imax
102808 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
102809 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
102810 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
102811 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
102812 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
102813 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
102814 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
102815 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
102816 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
102817 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
102818 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
102819 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
102820 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
102821 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
102822 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
102823 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
102824 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
102825 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
102826 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
102827 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
102828 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
102829 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
102830 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
102831 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
102832 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
102833 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
102834 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
102835 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
102836 END DO
102837 buffer1 = 0.0_dp
102838 imax = 9*9*6
102839 kmax = 15
102840 DO i = 1, imax
102841 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
102842 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
102843 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
102844 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
102845 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
102846 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
102847 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
102848 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
102849 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
102850 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
102851 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
102852 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
102853 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
102854 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
102855 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
102856 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
102857 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
102858 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
102859 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
102860 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
102861 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
102862 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
102863 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
102864 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
102865 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
102866 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
102867 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
102868 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
102869 END DO
102870 imax = 9*9*9
102871 kmax = 6
102872 i = 0
102873 DO i1 = 1, 9
102874 DO i2 = 1, 9
102875 DO i3 = 1, 9
102876 i = i + 1
102877 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
102878 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
102879 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
102880 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
102881 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
102882 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
102883 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
102884 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
102885 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
102886 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
102887 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
102888 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
102889 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
102890 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
102891 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
102892 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
102893 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
102894 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
102895 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
102896 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
102897 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
102898 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
102899 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
102900 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
102901 END DO
102902 END DO
102903 END DO
102904 s_offset_d1 = s_offset_d1 + 5
102905 END DO
102906 s_offset_c1 = s_offset_c1 + 9
102907 END DO
102908 s_offset_b1 = s_offset_b1 + 9
102909 END DO
102910 s_offset_a1 = s_offset_a1 + 9
102911 END DO
102912 END SUBROUTINE contract_gggd
102913#endif
102914#if __MAX_CONTR > 4 || __MAX_CONTR == 4
102915! **************************************************************************************************
102916!> \brief ...
102917!> \param work ...
102918!> \param nl_a ...
102919!> \param nl_b ...
102920!> \param nl_c ...
102921!> \param nl_d ...
102922!> \param sphi_a ...
102923!> \param sphi_b ...
102924!> \param sphi_c ...
102925!> \param sphi_d ...
102926!> \param primitives ...
102927!> \param buffer1 ...
102928!> \param buffer2 ...
102929! **************************************************************************************************
102930 SUBROUTINE contract_gggf(work, &
102931 nl_a, nl_b, nl_c, nl_d, &
102932 sphi_a, sphi_b, sphi_c, sphi_d, &
102933 primitives, &
102934 buffer1, buffer2)
102935 REAL(dp), DIMENSION(15*15*15*10), INTENT(IN) :: work
102936 INTEGER :: nl_a, nl_b, nl_c, nl_d
102937 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
102938 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
102939 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
102940 REAL(dp), DIMENSION(10, 7*nl_d), INTENT(IN) :: sphi_d
102941 REAL(dp), &
102942 DIMENSION(9*nl_a, 9*nl_b, 9*nl_c, 7*nl_d) :: primitives
102943 REAL(dp), DIMENSION(15*15*15*10) :: buffer1, buffer2
102944
102945 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
102946 kmax, s_offset_a1, s_offset_b1, &
102947 s_offset_c1, s_offset_d1
102948
102949 s_offset_a1 = 0
102950 DO ia = 1, nl_a
102951 s_offset_b1 = 0
102952 DO ib = 1, nl_b
102953 s_offset_c1 = 0
102954 DO ic = 1, nl_c
102955 s_offset_d1 = 0
102956 DO id = 1, nl_d
102957 buffer1 = 0.0_dp
102958 imax = 15*15*10
102959 kmax = 15
102960 DO i = 1, imax
102961 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
102962 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
102963 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
102964 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
102965 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
102966 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
102967 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
102968 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
102969 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
102970 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
102971 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
102972 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
102973 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
102974 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
102975 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
102976 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
102977 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
102978 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
102979 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
102980 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
102981 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
102982 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
102983 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
102984 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
102985 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
102986 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
102987 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
102988 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
102989 END DO
102990 buffer2 = 0.0_dp
102991 imax = 9*15*10
102992 kmax = 15
102993 DO i = 1, imax
102994 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
102995 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
102996 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
102997 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
102998 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
102999 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
103000 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
103001 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
103002 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
103003 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
103004 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
103005 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
103006 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
103007 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
103008 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
103009 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
103010 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
103011 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
103012 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
103013 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
103014 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
103015 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
103016 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
103017 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
103018 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
103019 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
103020 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
103021 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
103022 END DO
103023 buffer1 = 0.0_dp
103024 imax = 9*9*10
103025 kmax = 15
103026 DO i = 1, imax
103027 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
103028 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
103029 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
103030 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
103031 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
103032 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
103033 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
103034 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
103035 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
103036 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
103037 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
103038 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
103039 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
103040 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
103041 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
103042 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
103043 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
103044 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
103045 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
103046 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
103047 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
103048 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
103049 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
103050 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
103051 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
103052 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
103053 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
103054 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
103055 END DO
103056 imax = 9*9*9
103057 kmax = 10
103058 i = 0
103059 DO i1 = 1, 9
103060 DO i2 = 1, 9
103061 DO i3 = 1, 9
103062 i = i + 1
103063 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
103064 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
103065 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
103066 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
103067 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
103068 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
103069 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
103070 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
103071 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
103072 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
103073 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
103074 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
103075 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
103076 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
103077 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
103078 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
103079 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
103080 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
103081 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
103082 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
103083 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
103084 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
103085 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
103086 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
103087 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
103088 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
103089 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
103090 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
103091 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
103092 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
103093 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
103094 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
103095 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
103096 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
103097 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
103098 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
103099 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
103100 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
103101 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
103102 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
103103 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
103104 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
103105 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
103106 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
103107 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
103108 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
103109 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
103110 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
103111 END DO
103112 END DO
103113 END DO
103114 s_offset_d1 = s_offset_d1 + 7
103115 END DO
103116 s_offset_c1 = s_offset_c1 + 9
103117 END DO
103118 s_offset_b1 = s_offset_b1 + 9
103119 END DO
103120 s_offset_a1 = s_offset_a1 + 9
103121 END DO
103122 END SUBROUTINE contract_gggf
103123#endif
103124#if __MAX_CONTR > 4 || __MAX_CONTR == 4
103125! **************************************************************************************************
103126!> \brief ...
103127!> \param work ...
103128!> \param nl_a ...
103129!> \param nl_b ...
103130!> \param nl_c ...
103131!> \param nl_d ...
103132!> \param sphi_a ...
103133!> \param sphi_b ...
103134!> \param sphi_c ...
103135!> \param sphi_d ...
103136!> \param primitives ...
103137!> \param buffer1 ...
103138!> \param buffer2 ...
103139! **************************************************************************************************
103140 SUBROUTINE contract_gggg(work, &
103141 nl_a, nl_b, nl_c, nl_d, &
103142 sphi_a, sphi_b, sphi_c, sphi_d, &
103143 primitives, &
103144 buffer1, buffer2)
103145 REAL(dp), DIMENSION(15*15*15*15), INTENT(IN) :: work
103146 INTEGER :: nl_a, nl_b, nl_c, nl_d
103147 REAL(dp), DIMENSION(15, 9*nl_a), INTENT(IN) :: sphi_a
103148 REAL(dp), DIMENSION(15, 9*nl_b), INTENT(IN) :: sphi_b
103149 REAL(dp), DIMENSION(15, 9*nl_c), INTENT(IN) :: sphi_c
103150 REAL(dp), DIMENSION(15, 9*nl_d), INTENT(IN) :: sphi_d
103151 REAL(dp), &
103152 DIMENSION(9*nl_a, 9*nl_b, 9*nl_c, 9*nl_d) :: primitives
103153 REAL(dp), DIMENSION(15*15*15*15) :: buffer1, buffer2
103154
103155 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, &
103156 kmax, s_offset_a1, s_offset_b1, &
103157 s_offset_c1, s_offset_d1
103158
103159 s_offset_a1 = 0
103160 DO ia = 1, nl_a
103161 s_offset_b1 = 0
103162 DO ib = 1, nl_b
103163 s_offset_c1 = 0
103164 DO ic = 1, nl_c
103165 s_offset_d1 = 0
103166 DO id = 1, nl_d
103167 buffer1 = 0.0_dp
103168 imax = 15*15*15
103169 kmax = 15
103170 DO i = 1, imax
103171 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
103172 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
103173 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
103174 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
103175 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
103176 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
103177 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
103178 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
103179 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
103180 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
103181 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
103182 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
103183 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
103184 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
103185 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
103186 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
103187 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
103188 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
103189 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
103190 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
103191 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
103192 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
103193 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
103194 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
103195 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
103196 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
103197 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
103198 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
103199 END DO
103200 buffer2 = 0.0_dp
103201 imax = 9*15*15
103202 kmax = 15
103203 DO i = 1, imax
103204 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
103205 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
103206 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
103207 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
103208 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
103209 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
103210 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
103211 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
103212 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
103213 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
103214 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
103215 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
103216 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
103217 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
103218 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
103219 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
103220 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
103221 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
103222 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
103223 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
103224 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
103225 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
103226 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
103227 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
103228 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
103229 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
103230 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
103231 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
103232 END DO
103233 buffer1 = 0.0_dp
103234 imax = 9*9*15
103235 kmax = 15
103236 DO i = 1, imax
103237 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
103238 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
103239 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
103240 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
103241 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
103242 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
103243 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
103244 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
103245 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
103246 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
103247 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
103248 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
103249 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
103250 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
103251 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
103252 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
103253 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
103254 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
103255 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
103256 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
103257 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
103258 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
103259 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
103260 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
103261 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
103262 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
103263 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
103264 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
103265 END DO
103266 imax = 9*9*9
103267 kmax = 15
103268 i = 0
103269 DO i1 = 1, 9
103270 DO i2 = 1, 9
103271 DO i3 = 1, 9
103272 i = i + 1
103273 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
103274 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
103275 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
103276 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
103277 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
103278 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
103279 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
103280 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
103281 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
103282 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
103283 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
103284 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
103285 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
103286 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
103287 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
103288 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
103289 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
103290 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
103291 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
103292 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
103293 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
103294 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
103295 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
103296 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
103297 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
103298 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
103299 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
103300 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
103301 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
103302 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
103303 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
103304 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
103305 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
103306 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
103307 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
103308 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
103309 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
103310 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
103311 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
103312 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
103313 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
103314 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
103315 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
103316 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
103317 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
103318 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
103319 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
103320 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
103321 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
103322 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
103323 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
103324 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
103325 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
103326 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
103327 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
103328 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
103329 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
103330 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
103331 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
103332 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
103333 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
103334 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
103335 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
103336 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
103337 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
103338 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
103339 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
103340 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
103341 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
103342 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
103343 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
103344 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
103345 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
103346 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
103347 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
103348 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
103349 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
103350 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
103351 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
103352 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
103353 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
103354 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
103355 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
103356 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
103357 END DO
103358 END DO
103359 END DO
103360 s_offset_d1 = s_offset_d1 + 9
103361 END DO
103362 s_offset_c1 = s_offset_c1 + 9
103363 END DO
103364 s_offset_b1 = s_offset_b1 + 9
103365 END DO
103366 s_offset_a1 = s_offset_a1 + 9
103367 END DO
103368 END SUBROUTINE contract_gggg
103369#endif
103370
103371! **************************************************************************************************
103372!> \brief ...
103373!> \param ncoa ...
103374!> \param ncob ...
103375!> \param ncoc ...
103376!> \param ncod ...
103377!> \param nsoa ...
103378!> \param nsob ...
103379!> \param nsoc ...
103380!> \param nsod ...
103381!> \param work ...
103382!> \param nl_a ...
103383!> \param nl_b ...
103384!> \param nl_c ...
103385!> \param nl_d ...
103386!> \param sphi_a ...
103387!> \param sphi_b ...
103388!> \param sphi_c ...
103389!> \param sphi_d ...
103390!> \param primitives ...
103391!> \param buffer1 ...
103392!> \param buffer2 ...
103393! **************************************************************************************************
103394 SUBROUTINE contract_generic(ncoa, ncob, ncoc, ncod, &
103395 nsoa, nsob, nsoc, nsod, &
103396 work, &
103397 nl_a, nl_b, nl_c, nl_d, &
103398 sphi_a, sphi_b, sphi_c, sphi_d, &
103399 primitives, &
103400 buffer1, buffer2)
103401
103402 INTEGER, INTENT(IN) :: ncoa, ncob, ncoc, ncod, nsoa, nsob, &
103403 nsoc, nsod
103404 REAL(dp), DIMENSION(ncoa*ncob*ncoc*ncod), &
103405 INTENT(IN) :: work
103406 INTEGER :: nl_a, nl_b, nl_c, nl_d
103407 REAL(dp), DIMENSION(ncoa, nsoa*nl_a), INTENT(IN) :: sphi_a
103408 REAL(dp), DIMENSION(ncob, nsob*nl_b), INTENT(IN) :: sphi_b
103409 REAL(dp), DIMENSION(ncoc, nsoc*nl_c), INTENT(IN) :: sphi_c
103410 REAL(dp), DIMENSION(ncod, nsod*nl_d), INTENT(IN) :: sphi_d
103411 REAL(dp), DIMENSION(nsoa*nl_a, nsob*nl_b, nsoc*& nl_c, nsod*nl_d) :: primitives
103412 REAL(dp), DIMENSION(ncoa*ncob*ncoc*ncod) :: buffer1, buffer2
103413
103414 INTEGER :: i, i1, i2, i3, ia, ib, ic, id, imax, j, &
103415 jmax, k, kmax, s_offset_a1, &
103416 s_offset_b1, s_offset_c1, s_offset_d1
103417
103418 s_offset_a1 = 0
103419 DO ia = 1, nl_a
103420 s_offset_b1 = 0
103421 DO ib = 1, nl_b
103422 s_offset_c1 = 0
103423 DO ic = 1, nl_c
103424 s_offset_d1 = 0
103425 DO id = 1, nl_d
103426
103427 buffer1 = 0.0_dp
103428 imax = ncob*ncoc*ncod
103429 jmax = nsoa
103430 kmax = ncoa
103431 SELECT CASE (kmax)
103432 CASE (1)
103433 DO i = 1, imax
103434 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 1 + s_offset_a1)
103435 END DO
103436 CASE (3)
103437 DO i = 1, imax
103438 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
103439 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
103440 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 2 + s_offset_a1)
103441 END DO
103442 CASE (6)
103443 DO i = 1, imax
103444 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 3 + s_offset_a1)
103445 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
103446 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
103447 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
103448 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 3 + s_offset_a1)
103449 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
103450 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
103451 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 3 + s_offset_a1)
103452 END DO
103453 CASE (10)
103454 DO i = 1, imax
103455 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
103456 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
103457 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
103458 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
103459 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 4 + s_offset_a1)
103460 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
103461 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
103462 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 7 + s_offset_a1)
103463 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
103464 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
103465 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
103466 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
103467 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 4 + s_offset_a1)
103468 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
103469 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
103470 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 4 + s_offset_a1)
103471 END DO
103472 CASE (15)
103473 DO i = 1, imax
103474 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 5 + s_offset_a1)
103475 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 7 + s_offset_a1)
103476 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(1 + (i - 1)*kmax)*sphi_a(1, 9 + s_offset_a1)
103477 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 1 + s_offset_a1)
103478 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(2 + (i - 1)*kmax)*sphi_a(2, 3 + s_offset_a1)
103479 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 6 + s_offset_a1)
103480 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(3 + (i - 1)*kmax)*sphi_a(3, 8 + s_offset_a1)
103481 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 5 + s_offset_a1)
103482 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(4 + (i - 1)*kmax)*sphi_a(4, 9 + s_offset_a1)
103483 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 2 + s_offset_a1)
103484 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(5 + (i - 1)*kmax)*sphi_a(5, 4 + s_offset_a1)
103485 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 5 + s_offset_a1)
103486 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(6 + (i - 1)*kmax)*sphi_a(6, 7 + s_offset_a1)
103487 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 1 + s_offset_a1)
103488 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(7 + (i - 1)*kmax)*sphi_a(7, 3 + s_offset_a1)
103489 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 6 + s_offset_a1)
103490 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + work(8 + (i - 1)*kmax)*sphi_a(8, 8 + s_offset_a1)
103491 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + work(9 + (i - 1)*kmax)*sphi_a(9, 3 + s_offset_a1)
103492 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + work(10 + (i - 1)*kmax)*sphi_a(10, 6 + s_offset_a1)
103493 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 5 + s_offset_a1)
103494 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 7 + s_offset_a1)
103495 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + work(11 + (i - 1)*kmax)*sphi_a(11, 9 + s_offset_a1)
103496 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 2 + s_offset_a1)
103497 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(12 + (i - 1)*kmax)*sphi_a(12, 4 + s_offset_a1)
103498 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 5 + s_offset_a1)
103499 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + work(13 + (i - 1)*kmax)*sphi_a(13, 7 + s_offset_a1)
103500 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + work(14 + (i - 1)*kmax)*sphi_a(14, 4 + s_offset_a1)
103501 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + work(15 + (i - 1)*kmax)*sphi_a(15, 5 + s_offset_a1)
103502 END DO
103503 CASE DEFAULT
103504 DO j = 1, jmax
103505 DO i = 1, imax
103506 DO k = 1, kmax
103507 buffer1(i + imax*(j - 1)) = buffer1(i + imax*(j - 1)) + work(k + (i - 1)*kmax)*sphi_a(k, j + s_offset_a1)
103508 END DO
103509 END DO
103510 END DO
103511 END SELECT
103512 buffer2 = 0.0_dp
103513 imax = nsoa*ncoc*ncod
103514 jmax = nsob
103515 kmax = ncob
103516 SELECT CASE (kmax)
103517 CASE (1)
103518 DO i = 1, imax
103519 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 1 + s_offset_b1)
103520 END DO
103521 CASE (3)
103522 DO i = 1, imax
103523 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
103524 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
103525 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 2 + s_offset_b1)
103526 END DO
103527 CASE (6)
103528 DO i = 1, imax
103529 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 3 + s_offset_b1)
103530 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
103531 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
103532 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
103533 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 3 + s_offset_b1)
103534 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
103535 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
103536 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 3 + s_offset_b1)
103537 END DO
103538 CASE (10)
103539 DO i = 1, imax
103540 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
103541 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
103542 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
103543 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
103544 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 4 + s_offset_b1)
103545 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
103546 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
103547 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 7 + s_offset_b1)
103548 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
103549 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
103550 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
103551 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
103552 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 4 + s_offset_b1)
103553 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
103554 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
103555 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 4 + s_offset_b1)
103556 END DO
103557 CASE (15)
103558 DO i = 1, imax
103559 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 5 + s_offset_b1)
103560 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 7 + s_offset_b1)
103561 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(1 + (i - 1)*kmax)*sphi_b(1, 9 + s_offset_b1)
103562 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 1 + s_offset_b1)
103563 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(2 + (i - 1)*kmax)*sphi_b(2, 3 + s_offset_b1)
103564 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 6 + s_offset_b1)
103565 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(3 + (i - 1)*kmax)*sphi_b(3, 8 + s_offset_b1)
103566 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 5 + s_offset_b1)
103567 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(4 + (i - 1)*kmax)*sphi_b(4, 9 + s_offset_b1)
103568 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 2 + s_offset_b1)
103569 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(5 + (i - 1)*kmax)*sphi_b(5, 4 + s_offset_b1)
103570 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 5 + s_offset_b1)
103571 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(6 + (i - 1)*kmax)*sphi_b(6, 7 + s_offset_b1)
103572 buffer2(i + imax*(1 - 1)) = buffer2(i + imax*(1 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 1 + s_offset_b1)
103573 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(7 + (i - 1)*kmax)*sphi_b(7, 3 + s_offset_b1)
103574 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 6 + s_offset_b1)
103575 buffer2(i + imax*(8 - 1)) = buffer2(i + imax*(8 - 1)) + buffer1(8 + (i - 1)*kmax)*sphi_b(8, 8 + s_offset_b1)
103576 buffer2(i + imax*(3 - 1)) = buffer2(i + imax*(3 - 1)) + buffer1(9 + (i - 1)*kmax)*sphi_b(9, 3 + s_offset_b1)
103577 buffer2(i + imax*(6 - 1)) = buffer2(i + imax*(6 - 1)) + buffer1(10 + (i - 1)*kmax)*sphi_b(10, 6 + s_offset_b1)
103578 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 5 + s_offset_b1)
103579 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 7 + s_offset_b1)
103580 buffer2(i + imax*(9 - 1)) = buffer2(i + imax*(9 - 1)) + buffer1(11 + (i - 1)*kmax)*sphi_b(11, 9 + s_offset_b1)
103581 buffer2(i + imax*(2 - 1)) = buffer2(i + imax*(2 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 2 + s_offset_b1)
103582 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(12 + (i - 1)*kmax)*sphi_b(12, 4 + s_offset_b1)
103583 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 5 + s_offset_b1)
103584 buffer2(i + imax*(7 - 1)) = buffer2(i + imax*(7 - 1)) + buffer1(13 + (i - 1)*kmax)*sphi_b(13, 7 + s_offset_b1)
103585 buffer2(i + imax*(4 - 1)) = buffer2(i + imax*(4 - 1)) + buffer1(14 + (i - 1)*kmax)*sphi_b(14, 4 + s_offset_b1)
103586 buffer2(i + imax*(5 - 1)) = buffer2(i + imax*(5 - 1)) + buffer1(15 + (i - 1)*kmax)*sphi_b(15, 5 + s_offset_b1)
103587 END DO
103588 CASE DEFAULT
103589 DO j = 1, jmax
103590 DO i = 1, imax
103591 DO k = 1, kmax
103592 buffer2(i + imax*(j - 1)) = buffer2(i + imax*(j - 1)) + buffer1(k + (i - 1)*kmax)*sphi_b(k, j + s_offset_b1)
103593 END DO
103594 END DO
103595 END DO
103596 END SELECT
103597 buffer1 = 0.0_dp
103598 imax = nsoa*nsob*ncod
103599 jmax = nsoc
103600 kmax = ncoc
103601 SELECT CASE (kmax)
103602 CASE (1)
103603 DO i = 1, imax
103604 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 1 + s_offset_c1)
103605 END DO
103606 CASE (3)
103607 DO i = 1, imax
103608 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
103609 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
103610 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 2 + s_offset_c1)
103611 END DO
103612 CASE (6)
103613 DO i = 1, imax
103614 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 3 + s_offset_c1)
103615 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
103616 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
103617 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
103618 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 3 + s_offset_c1)
103619 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
103620 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
103621 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 3 + s_offset_c1)
103622 END DO
103623 CASE (10)
103624 DO i = 1, imax
103625 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
103626 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
103627 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
103628 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
103629 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 4 + s_offset_c1)
103630 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
103631 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
103632 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 7 + s_offset_c1)
103633 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
103634 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
103635 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
103636 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
103637 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 4 + s_offset_c1)
103638 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
103639 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
103640 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 4 + s_offset_c1)
103641 END DO
103642 CASE (15)
103643 DO i = 1, imax
103644 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 5 + s_offset_c1)
103645 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 7 + s_offset_c1)
103646 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(1 + (i - 1)*kmax)*sphi_c(1, 9 + s_offset_c1)
103647 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 1 + s_offset_c1)
103648 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(2 + (i - 1)*kmax)*sphi_c(2, 3 + s_offset_c1)
103649 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 6 + s_offset_c1)
103650 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(3 + (i - 1)*kmax)*sphi_c(3, 8 + s_offset_c1)
103651 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 5 + s_offset_c1)
103652 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(4 + (i - 1)*kmax)*sphi_c(4, 9 + s_offset_c1)
103653 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 2 + s_offset_c1)
103654 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(5 + (i - 1)*kmax)*sphi_c(5, 4 + s_offset_c1)
103655 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 5 + s_offset_c1)
103656 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(6 + (i - 1)*kmax)*sphi_c(6, 7 + s_offset_c1)
103657 buffer1(i + imax*(1 - 1)) = buffer1(i + imax*(1 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 1 + s_offset_c1)
103658 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(7 + (i - 1)*kmax)*sphi_c(7, 3 + s_offset_c1)
103659 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 6 + s_offset_c1)
103660 buffer1(i + imax*(8 - 1)) = buffer1(i + imax*(8 - 1)) + buffer2(8 + (i - 1)*kmax)*sphi_c(8, 8 + s_offset_c1)
103661 buffer1(i + imax*(3 - 1)) = buffer1(i + imax*(3 - 1)) + buffer2(9 + (i - 1)*kmax)*sphi_c(9, 3 + s_offset_c1)
103662 buffer1(i + imax*(6 - 1)) = buffer1(i + imax*(6 - 1)) + buffer2(10 + (i - 1)*kmax)*sphi_c(10, 6 + s_offset_c1)
103663 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 5 + s_offset_c1)
103664 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 7 + s_offset_c1)
103665 buffer1(i + imax*(9 - 1)) = buffer1(i + imax*(9 - 1)) + buffer2(11 + (i - 1)*kmax)*sphi_c(11, 9 + s_offset_c1)
103666 buffer1(i + imax*(2 - 1)) = buffer1(i + imax*(2 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 2 + s_offset_c1)
103667 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(12 + (i - 1)*kmax)*sphi_c(12, 4 + s_offset_c1)
103668 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 5 + s_offset_c1)
103669 buffer1(i + imax*(7 - 1)) = buffer1(i + imax*(7 - 1)) + buffer2(13 + (i - 1)*kmax)*sphi_c(13, 7 + s_offset_c1)
103670 buffer1(i + imax*(4 - 1)) = buffer1(i + imax*(4 - 1)) + buffer2(14 + (i - 1)*kmax)*sphi_c(14, 4 + s_offset_c1)
103671 buffer1(i + imax*(5 - 1)) = buffer1(i + imax*(5 - 1)) + buffer2(15 + (i - 1)*kmax)*sphi_c(15, 5 + s_offset_c1)
103672 END DO
103673 CASE DEFAULT
103674 DO j = 1, jmax
103675 DO i = 1, imax
103676 DO k = 1, kmax
103677 buffer1(i + imax*(j - 1)) = &
103678 buffer1(i + imax*(j - 1)) + &
103679 buffer2(k + (i - 1)*kmax)* &
103680 sphi_c(k, j + s_offset_c1)
103681 END DO
103682 END DO
103683 END DO
103684 END SELECT
103685 imax = nsoa*nsob*nsoc
103686 jmax = nsod
103687 kmax = ncod
103688 i = 0
103689 SELECT CASE (kmax)
103690 CASE (1)
103691 DO i1 = 1, nsoc
103692 DO i2 = 1, nsob
103693 DO i3 = 1, nsoa
103694 i = i + 1
103695 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
103696 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
103697 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 1 + s_offset_d1)
103698 END DO
103699 END DO
103700 END DO
103701 CASE (3)
103702 DO i1 = 1, nsoc
103703 DO i2 = 1, nsob
103704 DO i3 = 1, nsoa
103705 i = i + 1
103706 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
103707 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) &
103708 + buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
103709 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
103710 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) &
103711 + buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
103712 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
103713 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) &
103714 + buffer1(3 + (i - 1)*kmax)*sphi_d(3, 2 + s_offset_d1)
103715 END DO
103716 END DO
103717 END DO
103718 CASE (6)
103719 DO i1 = 1, nsoc
103720 DO i2 = 1, nsob
103721 DO i3 = 1, nsoa
103722 i = i + 1
103723 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
103724 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
103725 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 3 + s_offset_d1)
103726 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
103727 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
103728 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
103729 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
103730 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
103731 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
103732 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
103733 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
103734 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
103735 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
103736 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
103737 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 3 + s_offset_d1)
103738 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
103739 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
103740 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
103741 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
103742 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
103743 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
103744 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
103745 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
103746 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 3 + s_offset_d1)
103747 END DO
103748 END DO
103749 END DO
103750 CASE (10)
103751 DO i1 = 1, nsoc
103752 DO i2 = 1, nsob
103753 DO i3 = 1, nsoa
103754 i = i + 1
103755 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
103756 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
103757 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
103758 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
103759 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
103760 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
103761 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
103762 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
103763 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
103764 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
103765 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
103766 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
103767 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
103768 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
103769 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 4 + s_offset_d1)
103770 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
103771 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
103772 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
103773 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
103774 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
103775 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
103776 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
103777 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
103778 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 7 + s_offset_d1)
103779 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
103780 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
103781 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
103782 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
103783 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
103784 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
103785 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
103786 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
103787 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
103788 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
103789 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
103790 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
103791 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
103792 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
103793 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 4 + s_offset_d1)
103794 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
103795 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
103796 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
103797 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
103798 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
103799 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
103800 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
103801 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
103802 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 4 + s_offset_d1)
103803 END DO
103804 END DO
103805 END DO
103806 CASE (15)
103807 DO i1 = 1, nsoc
103808 DO i2 = 1, nsob
103809 DO i3 = 1, nsoa
103810 i = i + 1
103811 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
103812 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
103813 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 5 + s_offset_d1)
103814 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
103815 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
103816 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 7 + s_offset_d1)
103817 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
103818 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
103819 buffer1(1 + (i - 1)*kmax)*sphi_d(1, 9 + s_offset_d1)
103820 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
103821 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
103822 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 1 + s_offset_d1)
103823 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
103824 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
103825 buffer1(2 + (i - 1)*kmax)*sphi_d(2, 3 + s_offset_d1)
103826 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
103827 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
103828 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 6 + s_offset_d1)
103829 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
103830 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
103831 buffer1(3 + (i - 1)*kmax)*sphi_d(3, 8 + s_offset_d1)
103832 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
103833 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
103834 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 5 + s_offset_d1)
103835 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
103836 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
103837 buffer1(4 + (i - 1)*kmax)*sphi_d(4, 9 + s_offset_d1)
103838 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
103839 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
103840 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 2 + s_offset_d1)
103841 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
103842 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
103843 buffer1(5 + (i - 1)*kmax)*sphi_d(5, 4 + s_offset_d1)
103844 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
103845 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
103846 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 5 + s_offset_d1)
103847 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
103848 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
103849 buffer1(6 + (i - 1)*kmax)*sphi_d(6, 7 + s_offset_d1)
103850 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) = &
103851 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 1) + &
103852 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 1 + s_offset_d1)
103853 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
103854 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
103855 buffer1(7 + (i - 1)*kmax)*sphi_d(7, 3 + s_offset_d1)
103856 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
103857 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
103858 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 6 + s_offset_d1)
103859 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) = &
103860 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 8) + &
103861 buffer1(8 + (i - 1)*kmax)*sphi_d(8, 8 + s_offset_d1)
103862 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) = &
103863 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 3) + &
103864 buffer1(9 + (i - 1)*kmax)*sphi_d(9, 3 + s_offset_d1)
103865 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) = &
103866 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 6) + &
103867 buffer1(10 + (i - 1)*kmax)*sphi_d(10, 6 + s_offset_d1)
103868 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
103869 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
103870 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 5 + s_offset_d1)
103871 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
103872 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
103873 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 7 + s_offset_d1)
103874 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) = &
103875 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 9) + &
103876 buffer1(11 + (i - 1)*kmax)*sphi_d(11, 9 + s_offset_d1)
103877 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) = &
103878 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 2) + &
103879 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 2 + s_offset_d1)
103880 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
103881 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
103882 buffer1(12 + (i - 1)*kmax)*sphi_d(12, 4 + s_offset_d1)
103883 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
103884 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
103885 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 5 + s_offset_d1)
103886 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) = &
103887 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 7) + &
103888 buffer1(13 + (i - 1)*kmax)*sphi_d(13, 7 + s_offset_d1)
103889 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) = &
103890 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 4) + &
103891 buffer1(14 + (i - 1)*kmax)*sphi_d(14, 4 + s_offset_d1)
103892 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) = &
103893 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + 5) + &
103894 buffer1(15 + (i - 1)*kmax)*sphi_d(15, 5 + s_offset_d1)
103895 END DO
103896 END DO
103897 END DO
103898 CASE DEFAULT
103899 DO j = 1, jmax
103900 i = 0
103901 DO i1 = 1, nsoc
103902 DO i2 = 1, nsob
103903 DO i3 = 1, nsoa
103904 i = i + 1
103905 DO k = 1, kmax
103906 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + j) = &
103907 primitives(s_offset_a1 + i3, s_offset_b1 + i2, s_offset_c1 + i1, s_offset_d1 + j) &
103908 + buffer1(k + (i - 1)*kmax)*sphi_d(k, j + s_offset_d1)
103909 END DO
103910 END DO
103911 END DO
103912 END DO
103913 END DO
103914 END SELECT
103915 s_offset_d1 = s_offset_d1 + nsod
103916 END DO
103917 s_offset_c1 = s_offset_c1 + nsoc
103918 END DO
103919 s_offset_b1 = s_offset_b1 + nsob
103920 END DO
103921 s_offset_a1 = s_offset_a1 + nsoa
103922 END DO
103923 END SUBROUTINE contract_generic
103924#endif
103925END MODULE hfx_contraction_methods
103926
static int imax(int x, int y)
Returns the larger of two given integer (missing from the C standard)
Contains routines for contraction without dgemms. PLEASE DO NOT MODIFY. \notes Contains specific rout...
subroutine, public contract(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, n_a, n_b, n_c, n_d, nl_a, nl_b, nl_c, nl_d, work, sphi_a, sphi_b, sphi_c, sphi_d, primitives, buffer1, buffer2)
...
Defines the basic variable types.
Definition kinds.F:23
integer, parameter, public dp
Definition kinds.F:34